Skip to contentSkip to conversation

POWERPC: Add mpc8272ads support to arch/powerpc

PATCH New Vitaly Bordug 1 participant 3 messages Aug 12, 2006

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

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
#1 lore raw

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
index d5d36c3..f444b7e 100644
@@ -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(struc
 	iounmap(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
index bf388ed..88209d9 100644
@@ -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 fs
 	clrbits32(&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 fs
 	clrbits32(&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_e
 	mpc885ads_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 fs
         clrbits16(&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;
#2 lore raw

PATCH 2/2 POWERPC: add support of mpc8272 eval board

In reply to Vitaly Bordug

From: 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
index 13e583f..052d35a 100644
@@ -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
index 59f69d3..686b66c 100644
@@ -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
new file mode 100644
index 0000000..c8e4f1c
@@ -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
new file mode 100644
index 0000000..e6f06b4
@@ -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
index 5cf46dc..86ca117 100644
@@ -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
index 845a08b..617200e 100644
@@ -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
index d63e45d..3c513e5 100644
@@ -3,7 +3,7 @@ #define _PPC_KERNEL_CPM2_H
 
 extern 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