]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - arch/ppc/syslib/mpc10x_common.c
[PATCH] ppc32: Add support for MPC8245 8250 serial ports on Sandpoint
[karo-tx-linux.git] / arch / ppc / syslib / mpc10x_common.c
index 0130aeb4a2d3c3ac0e82ef7d873095328a53567e..8fc5f4154521587193e46a73e3eee852e6e3332d 100644 (file)
 #define MPC10X_I2C_IRQ (EPIC_IRQ_BASE + NUM_8259_INTERRUPTS)
 #define MPC10X_DMA0_IRQ (EPIC_IRQ_BASE + 1 + NUM_8259_INTERRUPTS)
 #define MPC10X_DMA1_IRQ (EPIC_IRQ_BASE + 2 + NUM_8259_INTERRUPTS)
+#define MPC10X_UART0_IRQ (EPIC_IRQ_BASE + 4 + NUM_8259_INTERRUPTS)
 #else
 #define MPC10X_I2C_IRQ -1
 #define MPC10X_DMA0_IRQ -1
 #define MPC10X_DMA1_IRQ -1
+#define MPC10X_UART0_IRQ -1
 #endif
 
 static struct fsl_i2c_platform_data mpc10x_i2c_pdata = {
@@ -55,6 +57,16 @@ static struct fsl_i2c_platform_data mpc10x_i2c_pdata = {
 };
 
 static struct plat_serial8250_port serial_platform_data[] = {
+       [0] = {
+               .mapbase        = 0x4500,
+               .iotype         = UPIO_MEM,
+               .flags          = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
+       },
+       [1] = {
+               .mapbase        = 0x4600,
+               .iotype         = UPIO_MEM,
+               .flags          = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
+       },
        { },
 };
 
@@ -399,6 +411,12 @@ mpc10x_bridge_init(struct pci_controller *hose,
        ppc_sys_platform_devices[MPC10X_DMA1].resource[1].start = MPC10X_DMA1_IRQ;
        ppc_sys_platform_devices[MPC10X_DMA1].resource[1].end = MPC10X_DMA1_IRQ;
 
+       serial_platform_data[0].mapbase += phys_eumb_base;
+       serial_platform_data[0].irq = MPC10X_UART0_IRQ;
+
+       serial_platform_data[1].mapbase += phys_eumb_base;
+       serial_platform_data[1].irq = MPC10X_UART0_IRQ + 1;
+
        /*
         * 8240 erratum 26, 8241/8245 erratum 29, 107 erratum 23: speculative
         * PCI reads may return stale data so turn off.
@@ -597,6 +615,8 @@ void __init mpc10x_set_openpic(void)
        openpic_set_sources(EPIC_IRQ_BASE, 3, OpenPIC_Addr + 0x11020);
        /* Skip reserved space and map Message Unit Interrupt (I2O) */
        openpic_set_sources(EPIC_IRQ_BASE + 3, 1, OpenPIC_Addr + 0x110C0);
+       /* Skip reserved space and map Serial Interupts */
+       openpic_set_sources(EPIC_IRQ_BASE + 4, 2, OpenPIC_Addr + 0x11120);
 
        openpic_init(NUM_8259_INTERRUPTS);
 }