Commit 1461b4ea authored by Vitaly Bordug's avatar Vitaly Bordug Committed by Paul Mackerras

[PATCH] ppc32: ppc_sys fixes for 8xx and 82xx

This patch fixes a numbers of issues regarding to that both 8xx and 82xx
began to use ppc_sys model:
	- Platform is now identified by default deviceless SOC, if no
BOARD_CHIP_NAME is specified in the bard-specific header. For the list
of supported names refer to (arch/ppc/syslib/) mpc8xx_sys.c and
mpc82xx_sys.c for 8xx and 82xx respectively.
	- Fixed a bug in identification by name - if the name was not found,
it returned -1 instead of default deviceless ppc_spec.
	- fixed devices amount in the 8xx platform system descriptions
Signed-off-by: default avatarVitaly Bordug <vbordug@ru.mvista.com>
Signed-off-by: default avatarMarcelo Tosatti <marcelo.tosatti@cyclades.com>
Signed-off-by: default avatarKumar Gala <kumar.gala@freescale.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
parent b37665e0
...@@ -25,6 +25,8 @@ ...@@ -25,6 +25,8 @@
#if defined(CONFIG_MPC86XADS) #if defined(CONFIG_MPC86XADS)
#define BOARD_CHIP_NAME "MPC86X"
/* U-Boot maps BCSR to 0xff080000 */ /* U-Boot maps BCSR to 0xff080000 */
#define BCSR_ADDR ((uint)0xff080000) #define BCSR_ADDR ((uint)0xff080000)
......
...@@ -88,5 +88,7 @@ ...@@ -88,5 +88,7 @@
#define SICR_ENET_MASK ((uint)0x00ff0000) #define SICR_ENET_MASK ((uint)0x00ff0000)
#define SICR_ENET_CLKRT ((uint)0x002c0000) #define SICR_ENET_CLKRT ((uint)0x002c0000)
#define BOARD_CHIP_NAME "MPC885"
#endif /* __ASM_MPC885ADS_H__ */ #endif /* __ASM_MPC885ADS_H__ */
#endif /* __KERNEL__ */ #endif /* __KERNEL__ */
...@@ -62,6 +62,10 @@ m8260_setup_arch(void) ...@@ -62,6 +62,10 @@ m8260_setup_arch(void)
if (initrd_start) if (initrd_start)
ROOT_DEV = Root_RAM0; ROOT_DEV = Root_RAM0;
#endif #endif
identify_ppc_sys_by_name_and_id(BOARD_CHIP_NAME,
in_be32(CPM_MAP_ADDR + CPM_IMMR_OFFSET));
m82xx_board_setup(); m82xx_board_setup();
} }
......
...@@ -399,6 +399,8 @@ platform_init(unsigned long r3, unsigned long r4, unsigned long r5, ...@@ -399,6 +399,8 @@ platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
strcpy(cmd_line, (char *)(r6+KERNELBASE)); strcpy(cmd_line, (char *)(r6+KERNELBASE));
} }
identify_ppc_sys_by_name(BOARD_CHIP_NAME);
ppc_md.setup_arch = m8xx_setup_arch; ppc_md.setup_arch = m8xx_setup_arch;
ppc_md.show_percpuinfo = m8xx_show_percpuinfo; ppc_md.show_percpuinfo = m8xx_show_percpuinfo;
ppc_md.init_IRQ = m8xx_init_IRQ; ppc_md.init_IRQ = m8xx_init_IRQ;
......
...@@ -24,7 +24,7 @@ struct ppc_sys_spec ppc_sys_specs[] = { ...@@ -24,7 +24,7 @@ struct ppc_sys_spec ppc_sys_specs[] = {
.ppc_sys_name = "MPC86X", .ppc_sys_name = "MPC86X",
.mask = 0xFFFFFFFF, .mask = 0xFFFFFFFF,
.value = 0x00000000, .value = 0x00000000,
.num_devices = 2, .num_devices = 7,
.device_list = (enum ppc_sys_devices[]) .device_list = (enum ppc_sys_devices[])
{ {
MPC8xx_CPM_FEC1, MPC8xx_CPM_FEC1,
...@@ -40,7 +40,7 @@ struct ppc_sys_spec ppc_sys_specs[] = { ...@@ -40,7 +40,7 @@ struct ppc_sys_spec ppc_sys_specs[] = {
.ppc_sys_name = "MPC885", .ppc_sys_name = "MPC885",
.mask = 0xFFFFFFFF, .mask = 0xFFFFFFFF,
.value = 0x00000000, .value = 0x00000000,
.num_devices = 3, .num_devices = 8,
.device_list = (enum ppc_sys_devices[]) .device_list = (enum ppc_sys_devices[])
{ {
MPC8xx_CPM_FEC1, MPC8xx_CPM_FEC1,
......
...@@ -69,6 +69,9 @@ static int __init find_chip_by_name_and_id(char *name, u32 id) ...@@ -69,6 +69,9 @@ static int __init find_chip_by_name_and_id(char *name, u32 id)
matched[j++] = i; matched[j++] = i;
i++; i++;
} }
ret = i;
if (j != 0) { if (j != 0) {
for (i = 0; i < j; i++) { for (i = 0; i < j; i++) {
if ((ppc_sys_specs[matched[i]].mask & id) == if ((ppc_sys_specs[matched[i]].mask & id) ==
......
...@@ -1087,6 +1087,9 @@ typedef struct im_idma { ...@@ -1087,6 +1087,9 @@ typedef struct im_idma {
#define SCCR_PCIDF_MSK 0x00000078 /* PCI division factor */ #define SCCR_PCIDF_MSK 0x00000078 /* PCI division factor */
#define SCCR_PCIDF_SHIFT 3 #define SCCR_PCIDF_SHIFT 3
#ifndef CPM_IMMR_OFFSET
#define CPM_IMMR_OFFSET 0x101a8
#endif
#endif /* __CPM2__ */ #endif /* __CPM2__ */
#endif /* __KERNEL__ */ #endif /* __KERNEL__ */
...@@ -92,6 +92,10 @@ enum ppc_sys_devices { ...@@ -92,6 +92,10 @@ enum ppc_sys_devices {
extern unsigned char __res[]; extern unsigned char __res[];
#endif #endif
#ifndef BOARD_CHIP_NAME
#define BOARD_CHIP_NAME ""
#endif
#endif /* CONFIG_8260 */ #endif /* CONFIG_8260 */
#endif /* !__ASM_PPC_MPC8260_H__ */ #endif /* !__ASM_PPC_MPC8260_H__ */
#endif /* __KERNEL__ */ #endif /* __KERNEL__ */
...@@ -113,6 +113,10 @@ enum ppc_sys_devices { ...@@ -113,6 +113,10 @@ enum ppc_sys_devices {
MPC8xx_CPM_USB, MPC8xx_CPM_USB,
}; };
#ifndef BOARD_CHIP_NAME
#define BOARD_CHIP_NAME ""
#endif
#endif /* !__ASSEMBLY__ */ #endif /* !__ASSEMBLY__ */
#endif /* CONFIG_8xx */ #endif /* CONFIG_8xx */
#endif /* __CONFIG_8xx_DEFS */ #endif /* __CONFIG_8xx_DEFS */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment