From: Sylvain Munaut <tnt@246tNt.com>

Note that this support has "known" problem but theses are believed to be
due to hardware issues.

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Acked-by: Tom Rini <trini@kernel.crashing.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/arch/ppc/boot/simple/mpc52xx_tty.c |   13 +++++++------
 25-akpm/arch/ppc/platforms/lite5200.c      |    7 +++----
 25-akpm/arch/ppc/platforms/mpc5200.c       |    2 +-
 25-akpm/arch/ppc/syslib/mpc52xx_pic.c      |   23 +++++++++--------------
 25-akpm/arch/ppc/syslib/mpc52xx_setup.c    |   26 +++++++++++++-------------
 25-akpm/drivers/serial/mpc52xx_uart.c      |   12 ++++++------
 6 files changed, 39 insertions(+), 44 deletions(-)

diff -puN arch/ppc/boot/simple/mpc52xx_tty.c~ppc32-add-pci-bus-support-for-freescale-mpc52xx arch/ppc/boot/simple/mpc52xx_tty.c
--- 25/arch/ppc/boot/simple/mpc52xx_tty.c~ppc32-add-pci-bus-support-for-freescale-mpc52xx	2005-03-16 00:37:24.000000000 -0800
+++ 25-akpm/arch/ppc/boot/simple/mpc52xx_tty.c	2005-03-16 00:37:24.000000000 -0800
@@ -33,18 +33,19 @@
 #error "MPC52xx_PF_CONSOLE_PORT not defined"
 #endif
 
-static struct mpc52xx_psc *psc = (struct mpc52xx_psc *)MPC52xx_CONSOLE;
+static struct mpc52xx_psc __iomem *psc =
+	(struct mpc52xx_psc __iomem *) MPC52xx_CONSOLE;
 
 /* The decrementer counts at the system bus clock frequency
  * divided by four.  The most accurate time base is connected to the
  * rtc.  We read the decrementer change during one rtc tick (one second)
  * and multiply by 4 to get the system bus clock frequency.
  */
-int
+static int
 mpc52xx_ipbfreq(void)
 {
-	struct mpc52xx_rtc *rtc = (struct mpc52xx_rtc*)MPC52xx_RTC;
-	struct mpc52xx_cdm *cdm = (struct mpc52xx_cdm*)MPC52xx_CDM;
+	struct mpc52xx_rtc __iomem *rtc = (struct mpc52xx_rtc __iomem *)MPC52xx_RTC;
+	struct mpc52xx_cdm __iomem *cdm = (struct mpc52xx_cdm __iomem *)MPC52xx_CDM;
 	int current_time, previous_time;
 	int tbl_start, tbl_end;
 	int xlbfreq, ipbfreq;
@@ -67,7 +68,7 @@ mpc52xx_ipbfreq(void)
 unsigned long
 serial_init(int ignored, void *ignored2)
 {
-	struct mpc52xx_gpio *gpio = (struct mpc52xx_gpio *)MPC52xx_GPIO;
+	struct mpc52xx_gpio __iomem *gpio = (struct mpc52xx_gpio __iomem *)MPC52xx_GPIO;
 	int divisor;
 	int mode1;
 	int mode2;
@@ -117,7 +118,7 @@ serial_init(int ignored, void *ignored2)
 void
 serial_putc(void *ignored, const char c)
 {
-	serial_init(0, 0);
+	serial_init(0, NULL);
 
 	while (!(in_be16(&psc->mpc52xx_psc_status) & MPC52xx_PSC_SR_TXEMP)) ;
 	out_8(&psc->mpc52xx_psc_buffer_8, c);
diff -puN arch/ppc/platforms/lite5200.c~ppc32-add-pci-bus-support-for-freescale-mpc52xx arch/ppc/platforms/lite5200.c
--- 25/arch/ppc/platforms/lite5200.c~ppc32-add-pci-bus-support-for-freescale-mpc52xx	2005-03-16 00:37:24.000000000 -0800
+++ 25-akpm/arch/ppc/platforms/lite5200.c	2005-03-16 00:37:24.000000000 -0800
@@ -55,7 +55,7 @@ EXPORT_SYMBOL(__res);	/* For modules */
  * driver ( eg drivers/serial/mpc52xx_uart.c for the PSC in uart mode )
  */
 
-struct ocp_def board_ocp[] = {
+static struct ocp_def board_ocp[] = {
 	{
 		.vendor		= OCP_VENDOR_FREESCALE,
 		.function	= OCP_FUNC_PSC_UART,
@@ -92,15 +92,14 @@ lite5200_map_irq(struct pci_dev *dev, un
 static void __init
 lite5200_setup_cpu(void)
 {
+	struct mpc52xx_intr __iomem *intr;
 	struct mpc52xx_xlb  __iomem *xlb;
-	struct mpc52xx_intr *intr;
 
 	u32 intr_ctrl;
 
 	/* Map zones */
 	xlb  = ioremap(MPC52xx_XLB,sizeof(struct mpc52xx_xlb));
-	intr = (struct mpc52xx_intr *)
-		ioremap(MPC52xx_INTR,sizeof(struct mpc52xx_intr));
+	intr = ioremap(MPC52xx_INTR,sizeof(struct mpc52xx_intr));
 
 	if (!xlb || !intr) {
 		printk("lite5200.c: Error while mapping XLB/INTR during "
diff -puN arch/ppc/platforms/mpc5200.c~ppc32-add-pci-bus-support-for-freescale-mpc52xx arch/ppc/platforms/mpc5200.c
--- 25/arch/ppc/platforms/mpc5200.c~ppc32-add-pci-bus-support-for-freescale-mpc52xx	2005-03-16 00:37:24.000000000 -0800
+++ 25-akpm/arch/ppc/platforms/mpc5200.c	2005-03-16 00:37:24.000000000 -0800
@@ -17,7 +17,7 @@
 #include <asm/mpc52xx.h>
 
 
-struct ocp_fs_i2c_data mpc5200_i2c_def = {
+static struct ocp_fs_i2c_data mpc5200_i2c_def = {
         .flags  = FS_I2C_CLOCK_5200,
 };
 
diff -puN arch/ppc/syslib/mpc52xx_pic.c~ppc32-add-pci-bus-support-for-freescale-mpc52xx arch/ppc/syslib/mpc52xx_pic.c
--- 25/arch/ppc/syslib/mpc52xx_pic.c~ppc32-add-pci-bus-support-for-freescale-mpc52xx	2005-03-16 00:37:24.000000000 -0800
+++ 25-akpm/arch/ppc/syslib/mpc52xx_pic.c	2005-03-16 00:37:24.000000000 -0800
@@ -33,8 +33,8 @@
 #include <asm/mpc52xx.h>
 
 
-static struct mpc52xx_intr *intr;
-static struct mpc52xx_sdma *sdma;
+static struct mpc52xx_intr __iomem *intr;
+static struct mpc52xx_sdma __iomem *sdma;
 
 static void
 mpc52xx_ic_disable(unsigned int irq)
@@ -166,14 +166,11 @@ mpc52xx_ic_end(unsigned int irq)
 }
 
 static struct hw_interrupt_type mpc52xx_ic = {
-	"MPC52xx",
-	NULL,				/* startup(irq) */
-	NULL,				/* shutdown(irq) */
-	mpc52xx_ic_enable,		/* enable(irq) */
-	mpc52xx_ic_disable,		/* disable(irq) */
-	mpc52xx_ic_disable_and_ack,	/* disable_and_ack(irq) */
-	mpc52xx_ic_end,			/* end(irq) */
-	0				/* set_affinity(irq, cpumask) SMP. */
+	.typename	= " MPC52xx  ",
+	.enable		= mpc52xx_ic_enable,
+	.disable	= mpc52xx_ic_disable,
+	.ack		= mpc52xx_ic_disable_and_ack,
+	.end		= mpc52xx_ic_end,
 };
 
 void __init
@@ -183,10 +180,8 @@ mpc52xx_init_irq(void)
 	u32 intr_ctrl;
 
 	/* Remap the necessary zones */
-	intr = (struct mpc52xx_intr *)
-		ioremap(MPC52xx_INTR, sizeof(struct mpc52xx_intr));
-	sdma = (struct mpc52xx_sdma *)
-		ioremap(MPC52xx_SDMA, sizeof(struct mpc52xx_sdma));
+	intr = ioremap(MPC52xx_INTR, sizeof(struct mpc52xx_intr));
+	sdma = ioremap(MPC52xx_SDMA, sizeof(struct mpc52xx_sdma));
 
 	if ((intr==NULL) || (sdma==NULL))
 		panic("Can't ioremap PIC/SDMA register for init_irq !");
diff -puN arch/ppc/syslib/mpc52xx_setup.c~ppc32-add-pci-bus-support-for-freescale-mpc52xx arch/ppc/syslib/mpc52xx_setup.c
--- 25/arch/ppc/syslib/mpc52xx_setup.c~ppc32-add-pci-bus-support-for-freescale-mpc52xx	2005-03-16 00:37:24.000000000 -0800
+++ 25-akpm/arch/ppc/syslib/mpc52xx_setup.c	2005-03-16 00:37:24.000000000 -0800
@@ -39,7 +39,8 @@ static int core_mult[] = {		/* CPU Frequ
 void
 mpc52xx_restart(char *cmd)
 {
-	struct mpc52xx_gpt* gpt0 = (struct mpc52xx_gpt*) MPC52xx_GPTx(0);
+	struct mpc52xx_gpt __iomem *gpt0 =
+		(struct mpc52xx_gpt __iomem *) MPC52xx_GPTx(0);
 
 	local_irq_disable();
 
@@ -102,7 +103,7 @@ mpc52xx_map_io(void)
 #endif
 
 static void
-mpc52xx_psc_putc(struct mpc52xx_psc * psc, unsigned char c)
+mpc52xx_psc_putc(struct mpc52xx_psc __iomem *psc, unsigned char c)
 {
 	while (!(in_be16(&psc->mpc52xx_psc_status) &
 	         MPC52xx_PSC_SR_TXRDY));
@@ -112,8 +113,9 @@ mpc52xx_psc_putc(struct mpc52xx_psc * ps
 void
 mpc52xx_progress(char *s, unsigned short hex)
 {
-	struct mpc52xx_psc *psc = (struct mpc52xx_psc *)MPC52xx_CONSOLE;
 	char c;
+	struct mpc52xx_psc __iomem *psc =
+		(struct mpc52xx_psc __iomem *)MPC52xx_CONSOLE;
 
 	while ((c = *s++) != 0) {
 		if (c == '\n')
@@ -138,11 +140,11 @@ mpc52xx_find_end_of_memory(void)
 	 * else get size from sdram config registers
 	 */
 	if (ramsize == 0) {
-		struct mpc52xx_mmap_ctl *mmap_ctl;
+		struct mpc52xx_mmap_ctl __iomem *mmap_ctl;
 		u32 sdram_config_0, sdram_config_1;
 
 		/* Temp BAT2 mapping active when this is called ! */
-		mmap_ctl = (struct mpc52xx_mmap_ctl*) MPC52xx_MMAP_CTL;
+		mmap_ctl = (struct mpc52xx_mmap_ctl __iomem *) MPC52xx_MMAP_CTL;
 
 		sdram_config_0 = in_be32(&mmap_ctl->sdram0);
 		sdram_config_1 = in_be32(&mmap_ctl->sdram1);
@@ -169,13 +171,11 @@ mpc52xx_calibrate_decr(void)
 	/* if bootloader didn't pass bus frequencies, calculate them */
 	if (xlbfreq == 0) {
 		/* Get RTC & Clock manager modules */
-		struct mpc52xx_rtc *rtc;
-		struct mpc52xx_cdm *cdm;
+		struct mpc52xx_rtc __iomem *rtc;
+		struct mpc52xx_cdm __iomem *cdm;
 
-		rtc = (struct mpc52xx_rtc*)
-			ioremap(MPC52xx_RTC, sizeof(struct mpc52xx_rtc));
-		cdm = (struct mpc52xx_cdm*)
-			ioremap(MPC52xx_CDM, sizeof(struct mpc52xx_cdm));
+		rtc = ioremap(MPC52xx_RTC, sizeof(struct mpc52xx_rtc));
+		cdm = ioremap(MPC52xx_CDM, sizeof(struct mpc52xx_cdm));
 
 		if ((rtc==NULL) || (cdm==NULL))
 			panic("Can't ioremap RTC/CDM while computing bus freq");
@@ -212,8 +212,8 @@ mpc52xx_calibrate_decr(void)
 		__res.bi_pcifreq = pcifreq;
 
 		/* Release mapping */
-		iounmap((void*)rtc);
-		iounmap((void*)cdm);
+		iounmap(rtc);
+		iounmap(cdm);
 	}
 
 	divisor = 4;
diff -puN drivers/serial/mpc52xx_uart.c~ppc32-add-pci-bus-support-for-freescale-mpc52xx drivers/serial/mpc52xx_uart.c
--- 25/drivers/serial/mpc52xx_uart.c~ppc32-add-pci-bus-support-for-freescale-mpc52xx	2005-03-16 00:37:24.000000000 -0800
+++ 25-akpm/drivers/serial/mpc52xx_uart.c	2005-03-16 00:37:24.000000000 -0800
@@ -86,7 +86,7 @@ static struct uart_port mpc52xx_uart_por
 	 *        the console_init
 	 */
 
-#define PSC(port) ((struct mpc52xx_psc *)((port)->membase))
+#define PSC(port) ((struct mpc52xx_psc __iomem *)((port)->membase))
 
 
 /* Forward declaration of the interruption handling routine */
@@ -190,7 +190,7 @@ mpc52xx_uart_break_ctl(struct uart_port 
 static int
 mpc52xx_uart_startup(struct uart_port *port)
 {
-	struct mpc52xx_psc *psc = PSC(port);
+	struct mpc52xx_psc __iomem *psc = PSC(port);
 
 	/* Reset/activate the port, clear and enable interrupts */
 	out_8(&psc->command,MPC52xx_PSC_RST_RX);
@@ -217,7 +217,7 @@ mpc52xx_uart_startup(struct uart_port *p
 static void
 mpc52xx_uart_shutdown(struct uart_port *port)
 {
-	struct mpc52xx_psc *psc = PSC(port);
+	struct mpc52xx_psc __iomem *psc = PSC(port);
 	
 	/* Shut down the port, interrupt and all */
 	out_8(&psc->command,MPC52xx_PSC_RST_RX);
@@ -231,7 +231,7 @@ static void 
 mpc52xx_uart_set_termios(struct uart_port *port, struct termios *new,
                          struct termios *old)
 {
-	struct mpc52xx_psc *psc = PSC(port);
+	struct mpc52xx_psc __iomem *psc = PSC(port);
 	unsigned long flags;
 	unsigned char mr1, mr2;
 	unsigned short ctr;
@@ -562,7 +562,7 @@ static void __init
 mpc52xx_console_get_options(struct uart_port *port,
                             int *baud, int *parity, int *bits, int *flow)
 {
-	struct mpc52xx_psc *psc = PSC(port);
+	struct mpc52xx_psc __iomem *psc = PSC(port);
 	unsigned char mr1;
 
 	/* Read the mode registers */
@@ -592,7 +592,7 @@ static void  
 mpc52xx_console_write(struct console *co, const char *s, unsigned int count)
 {
 	struct uart_port *port = &mpc52xx_uart_ports[co->index];
-	struct mpc52xx_psc *psc = PSC(port);
+	struct mpc52xx_psc __iomem *psc = PSC(port);
 	unsigned int i, j;
 	
 	/* Disable interrupts */
_