aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/ppc/syslib/m8xx_setup.c50
1 files changed, 50 insertions, 0 deletions
diff --git a/arch/ppc/syslib/m8xx_setup.c b/arch/ppc/syslib/m8xx_setup.c
index ff0282479a78..cdb73a23a538 100644
--- a/arch/ppc/syslib/m8xx_setup.c
+++ b/arch/ppc/syslib/m8xx_setup.c
@@ -34,6 +34,13 @@
34#include <linux/seq_file.h> 34#include <linux/seq_file.h>
35#include <linux/root_dev.h> 35#include <linux/root_dev.h>
36 36
37#if defined(CONFIG_MTD) && defined(CONFIG_MTD_PHYSMAP)
38#include <linux/mtd/partitions.h>
39#include <linux/mtd/physmap.h>
40#include <linux/mtd/mtd.h>
41#include <linux/mtd/map.h>
42#endif
43
37#include <asm/mmu.h> 44#include <asm/mmu.h>
38#include <asm/reg.h> 45#include <asm/reg.h>
39#include <asm/residual.h> 46#include <asm/residual.h>
@@ -49,6 +56,34 @@
49 56
50#include "ppc8xx_pic.h" 57#include "ppc8xx_pic.h"
51 58
59#ifdef CONFIG_MTD_PHYSMAP
60#define MPC8xxADS_BANK_WIDTH 4
61#endif
62
63#define MPC8xxADS_U_BOOT_SIZE 0x80000
64#define MPC8xxADS_FREE_AREA_OFFSET MPC8xxADS_U_BOOT_SIZE
65
66#if defined(CONFIG_MTD_PARTITIONS)
67 /*
68 NOTE: bank width and interleave relative to the installed flash
69 should have been chosen within MTD_CFI_GEOMETRY options.
70 */
71static struct mtd_partition mpc8xxads_partitions[] = {
72 {
73 .name = "bootloader",
74 .size = MPC8xxADS_U_BOOT_SIZE,
75 .offset = 0,
76 .mask_flags = MTD_WRITEABLE, /* force read-only */
77 }, {
78 .name = "User FS",
79 .offset = MPC8xxADS_FREE_AREA_OFFSET
80 }
81};
82
83#define mpc8xxads_part_num (sizeof (mpc8xxads_partitions) / sizeof (mpc8xxads_partitions[0]))
84
85#endif
86
52static int m8xx_set_rtc_time(unsigned long time); 87static int m8xx_set_rtc_time(unsigned long time);
53static unsigned long m8xx_get_rtc_time(void); 88static unsigned long m8xx_get_rtc_time(void);
54void m8xx_calibrate_decr(void); 89void m8xx_calibrate_decr(void);
@@ -71,6 +106,10 @@ board_init(void)
71void __init 106void __init
72m8xx_setup_arch(void) 107m8xx_setup_arch(void)
73{ 108{
109#if defined(CONFIG_MTD) && defined(CONFIG_MTD_PHYSMAP)
110 bd_t *binfo = (bd_t *)__res;
111#endif
112
74 /* Reset the Communication Processor Module. 113 /* Reset the Communication Processor Module.
75 */ 114 */
76 m8xx_cpm_reset(); 115 m8xx_cpm_reset();
@@ -106,6 +145,17 @@ m8xx_setup_arch(void)
106 } 145 }
107#endif 146#endif
108#endif 147#endif
148
149#if defined (CONFIG_MPC86XADS) || defined (CONFIG_MPC885ADS)
150#if defined(CONFIG_MTD_PHYSMAP)
151 physmap_configure(binfo->bi_flashstart, binfo->bi_flashsize,
152 MPC8xxADS_BANK_WIDTH, NULL);
153#ifdef CONFIG_MTD_PARTITIONS
154 physmap_set_partitions(mpc8xxads_partitions, mpc8xxads_part_num);
155#endif /* CONFIG_MTD_PARTITIONS */
156#endif /* CONFIG_MTD_PHYSMAP */
157#endif
158
109 board_init(); 159 board_init();
110} 160}
111 161