12 #include <linux/stddef.h>
13 #include <linux/kernel.h>
18 #include <asm/machdep.h>
26 #define MV64x60_MPP_CNTL_0 0x0000
27 #define MV64x60_MPP_CNTL_2 0x0008
29 #define MV64x60_GPP_IO_CNTL 0x0000
30 #define MV64x60_GPP_LEVEL_CNTL 0x0010
31 #define MV64x60_GPP_VALUE_SET 0x0018
33 #define PLATFORM_NAME_MAX 32
37 static void __iomem *mv64x60_mpp_reg_base;
38 static void __iomem *mv64x60_gpp_reg_base;
40 static void __init prpmc2800_setup_arch(
void)
44 const unsigned int *
reg;
54 mv64x60_mpp_reg_base =
ioremap(paddr, reg[1]);
60 mv64x60_gpp_reg_base =
ioremap(paddr, reg[1]);
66 printk(
"Motorola %s\n", prpmc2800_platform_name);
69 static void prpmc2800_reset_board(
void)
102 static void prpmc2800_restart(
char *
cmd)
104 volatile ulong i = 10000000;
106 prpmc2800_reset_board();
109 panic(
"restart failed\n");
112 #ifdef CONFIG_NOT_COHERENT_CACHE
113 #define PPRPM2800_COHERENCY_SETTING "off"
115 #define PPRPM2800_COHERENCY_SETTING "on"
127 static int __init prpmc2800_probe(
void)
129 unsigned long root = of_get_flat_dt_root();
133 if (!of_flat_dt_is_compatible(root,
"motorola,PrPMC2800"))
137 m = of_get_flat_dt_prop(root,
"model", &len);
139 strncpy(prpmc2800_platform_name, m,
142 _set_L2CR(_get_L2CR() | L2CR_L2E);
147 .name = prpmc2800_platform_name,
148 .probe = prpmc2800_probe,
149 .setup_arch = prpmc2800_setup_arch,
154 .restart = prpmc2800_restart,