POWERPC: Add mpc8272ads support to arch/powerpc
Subsystems (2)
cover POWERPC: Add mpc8272ads support to arch/powerpc
This is the current state of the PQ2/CPM2 powerpc merge approach. Assuming that all the 8560 and subsequent overhaul patches are applied. Despite of fact that the code needs massive cleanup, and not 100% complete (PCI is under construction now), it may be used as reference by the other people who interested in moving some HW on a similar SoC to the powerpc.
Signature · 1 line
Sincerely, Vitaly
PATCH 1/2 update 8xx platform data structures
From: Vitaly Bordug <[email protected]>
With cpm2 introduced to powerpc, there was a change of the fs_enet platform data, so the code below fixes compilation error and makes ppc/ fs_enet users happy again
---
arch/ppc/platforms/mpc8272ads_setup.c | 16 ++++++++-------- arch/ppc/platforms/mpc885ads_setup.c | 20 ++++++++++---------- 2 files changed, 18 insertions(+), 18 deletions(-)
arch/ppc/platforms/mpc8272ads_setup.c +8 -8
@@ -30,10 +30,10 @@ #include <linux/fs_uart_pd.h>#include "pq2ads_pd.h" -static void init_fcc1_ioports (void ); -static void init_fcc2_ioports (void ); -static void init_scc1_uart_ioports (void ); -static void init_scc4_uart_ioports (void ); +static void init_fcc1_ioports (struct fs_platform_info *); +static void init_fcc2_ioports (struct fs_platform_info *); +static void init_scc1_uart_ioports (struct fs_uart_platform_info *); +static void init_scc4_uart_ioports (struct fs_uart_platform_info *);static struct fs_uart_platform_info mpc8272_uart_pdata[] = { [fsid_scc1_uart] = {
@@ -103,7 +103,7 @@ static struct fs_platform_info mpc82xx_e }, }; -static void init_fcc1_ioports (struct fs_platform_info *) +static void init_fcc1_ioports (struct fs_platform_info * ptr) {struct io_port *io;u32 tempval;
@@ -144,7 +144,7 @@ static void init_fcc1_ioports(struct fs_iounmap (immap); } -static void init_fcc2_ioports (struct fs_platform_info *) +static void init_fcc2_ioports (struct fs_platform_info * ptr) {cpm2_map_t * immap =ioremap (CPM_MAP_ADDR ,sizeof (cpm2_map_t));u32 *bcsr =ioremap (BCSR_ADDR +12 ,sizeof (u32));
@@ -229,7 +229,7 @@ static void mpc8272ads_fixup_uart_pdata( } } -static void init_scc1_uart_ioports (struct fs_uart_platform_info *) +static void init_scc1_uart_ioports (struct fs_uart_platform_info * ptr) {cpm2_map_t * immap =ioremap (CPM_MAP_ADDR ,sizeof (cpm2_map_t));
@@ -246,7 +246,7 @@ static void init_scc1_uart_ioports(struciounmap (immap); } -static void init_scc4_uart_ioports (struct fs_uart_platform_info *) +static void init_scc4_uart_ioports (struct fs_uart_platform_info * ptr) {cpm2_map_t * immap =ioremap (CPM_MAP_ADDR ,sizeof (cpm2_map_t));
arch/ppc/platforms/mpc885ads_setup.c +10 -10
@@ -35,13 +35,13 @@ #include <asm/commproc.h>#include <asm/ppc_sys.h> extern unsigned char __res[]; -static void setup_smc1_ioports (void ); -static void setup_smc2_ioports (void ); +static void setup_smc1_ioports (struct fs_uart_platform_info *); +static void setup_smc2_ioports (struct fs_uart_platform_info *);static struct fs_mii_fec_platform_info mpc8xx_mdio_fec_pdata; -static void setup_fec1_ioports (void ); -static void setup_fec2_ioports (void ); -static void setup_scc3_ioports (void ); +static void setup_fec1_ioports (struct fs_platform_info *); +static void setup_fec2_ioports (struct fs_platform_info *); +static void setup_scc3_ioports (struct fs_platform_info *);static struct fs_uart_platform_info mpc885_uart_pdata[] = { [fsid_smc1_uart] = {
@@ -161,7 +161,7 @@ #endif#endif } -static void setup_fec1_ioports (struct fs_platform_info *) +static void setup_fec1_ioports (struct fs_platform_info * ptr) {immap_t *immap = (immap_t *)IMAP_ADDR ;
@@ -181,7 +181,7 @@ static void setup_fec1_ioports(struct fsclrbits32 (&immap->im_cpm.cp_cptr,0x00000100 ); } -static void setup_fec2_ioports (struct fs_platform_info *) +static void setup_fec2_ioports (struct fs_platform_info * ptr) {immap_t *immap = (immap_t *)IMAP_ADDR ;
@@ -193,7 +193,7 @@ static void setup_fec2_ioports(struct fsclrbits32 (&immap->im_cpm.cp_cptr,0x00000080 ); } -static void setup_scc3_ioports (struct fs_platform_info *) +static void setup_scc3_ioports (struct fs_platform_info * ptr) {immap_t *immap = (immap_t *)IMAP_ADDR ;unsigned *bcsr_io;
@@ -315,7 +315,7 @@ static void __init mpc885ads_fixup_scc_empc885ads_fixup_enet_pdata (pdev, fsid_scc1 + pdev->id -1 ); } -static void setup_smc1_ioports (struct fs_uart_platform_info *) +static void setup_smc1_ioports (struct fs_uart_platform_info * ptr) {immap_t *immap = (immap_t *)IMAP_ADDR ;unsigned *bcsr_io;
@@ -335,7 +335,7 @@ static void setup_smc1_ioports(struct fsclrbits16 (&immap->im_cpm.cp_pbodr, iobits); } -static void setup_smc2_ioports (struct fs_uart_platform_info *) +static void setup_smc2_ioports (struct fs_uart_platform_info * ptr) {immap_t *immap = (immap_t *)IMAP_ADDR ;unsigned *bcsr_io;
PATCH 2/2 POWERPC: add support of mpc8272 eval board
In reply to Vitaly BordugFrom: Vitaly Bordug <[email protected]>
Powerpc-merged 8272 code and all necessary stuff to make it actually work. Still a lot of stuff pending, but the code works and make SoC usable, so might be a good reference for the similar hw.
---
arch/powerpc/Kconfig | 1 arch/powerpc/boot/dts/mpc8272ads.dts | 248 ++++++++ arch/powerpc/configs/mpc8272_ads_defconfig | 888 ++++++++++++++++++++++++++++ arch/powerpc/kernel/prom_parse.c | 2 arch/powerpc/platforms/82xx/Kconfig | 21 + arch/powerpc/platforms/82xx/Makefile | 6 arch/powerpc/platforms/82xx/mpc8272_ads.c | 333 +++++++++++ arch/powerpc/platforms/82xx/pq2ads.c | 55 ++ arch/powerpc/platforms/82xx/pq2ads.h | 115 ++++ arch/powerpc/platforms/82xx/pq2ads_pd.h | 114 ++++ arch/powerpc/platforms/Makefile | 1 arch/powerpc/sysdev/cpm2_pic.c | 2 arch/powerpc/sysdev/cpm2_pic.h | 2 arch/powerpc/sysdev/fsl_soc.c | 62 ++ include/asm-powerpc/mpc8260.h | 103 +++ 15 files changed, 1949 insertions(+), 4 deletions(-)
arch/powerpc/Kconfig +1 -0
@@ -578,6 +578,7 @@ endmenu source arch/powerpc/platforms/embedded6xx/Kconfig source arch/powerpc/platforms/4xx/Kconfig +source arch/powerpc/platforms/82xx/Kconfig source arch/powerpc/platforms/83xx/Kconfig source arch/powerpc/platforms/85xx/Kconfig source arch/powerpc/platforms/86xx/Kconfig
arch/powerpc/boot/dts/mpc8272ads.dts new file +248 -0
248 lines not on this page · raw message
arch/powerpc/configs/mpc8272_ads_defconfig new file +888 -0
888 lines not on this page · raw message
arch/powerpc/kernel/prom_parse.c +2 -0
@@ -895,6 +895,7 @@ int of_irq_map_one(struct device_node *d }EXPORT_SYMBOL_GPL (of_irq_map_one); +#ifdef CONFIG_PCI int of_irq_map_pci (struct pci_dev *pdev,struct of_irq *out_irq) {struct device_node *dn, *ppnode;
@@ -971,4 +972,5 @@ #endif return of_irq_map_raw(ppnode, &lspec, laddr, out_irq); }EXPORT_SYMBOL_GPL (of_irq_map_pci); +#endif
arch/powerpc/platforms/82xx/Kconfig new file +21 -0
@@ -0,0 +1,21 @@ +menu "Platform support" + depends on PPC_82xx + +choice + prompt "Machine Type" + default MPC8272_ADS + +config MPC8272_ADS + bool "Freescale MPC8272 ADS" + select DEFAULT_UIMAGE + select PQ2ADS + select 8272 + select 8260 + select CPM2 + select FSL_SOC + help + This option enables support for the MPC8272 ADS board + +endchoice + +endmenu
arch/powerpc/platforms/82xx/Makefile new file +6 -0
@@ -0,0 +1,6 @@ +# +# Makefile for the PowerPC 82xx linux kernel. +# +obj-$(CONFIG_PPC_82xx) += pq2ads.o +obj-$(CONFIG_MPC8272_ADS) += mpc8272_ads.o +
arch/powerpc/platforms/82xx/mpc8272_ads.c new file +333 -0
333 lines not on this page · raw message
arch/powerpc/platforms/82xx/pq2ads.c new file +55 -0
55 lines not on this page · raw message
arch/powerpc/platforms/82xx/pq2ads.h new file +115 -0
115 lines not on this page · raw message
arch/powerpc/platforms/82xx/pq2ads_pd.h new file +114 -0
114 lines not on this page · raw message
arch/powerpc/platforms/Makefile +1 -0
@@ -7,6 +7,7 @@ endif endif obj-$(CONFIG_PPC_CHRP) += chrp/ obj-$(CONFIG_4xx) += 4xx/ +obj-$(CONFIG_PPC_82xx) += 82xx/ obj-$(CONFIG_PPC_83xx) += 83xx/ obj-$(CONFIG_PPC_85xx) += 85xx/ obj-$(CONFIG_PPC_86xx) += 86xx/
arch/powerpc/sysdev/cpm2_pic.c +1 -1
@@ -145,7 +145,7 @@ static struct irq_chip cpm2_pic = { .end = cpm2_end_irq, }; -int cpm2_get_irq (struct pt_regs *regs) +unsigned int cpm2_get_irq (struct pt_regs *regs) {int irq;unsigned long bits;
arch/powerpc/sysdev/cpm2_pic.h +1 -1
@@ -3,7 +3,7 @@ #define _PPC_KERNEL_CPM2_Hextern intctl_cpm2_t *cpm2_intctl; -extern int cpm2_get_irq (struct pt_regs *regs); +extern unsigned int cpm2_get_irq (struct pt_regs *regs);extern void cpm2_pic_init (struct device_node *);
arch/powerpc/sysdev/fsl_soc.c +60 -2
116 lines not on this page · raw message
include/asm-powerpc/mpc8260.h new file +103 -0
103 lines not on this page · raw message