fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / arch / ppc / platforms / 4xx / ibmstb4.c
index 2fed8f1..799a2ec 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * arch/ppc/platforms/4xx/ibmstb4.c
- *
  * Author: Armin Kuster <akuster@mvista.com>
  *
  * 2000-2001 (c) MontaVista, Software, Inc.  This file is licensed under
  * or implied.
  */
 
-#include <linux/config.h>
-#include <linux/module.h>
-#include "ibmstb4.h"
+#include <linux/init.h>
+#include <linux/platform_device.h>
 #include <asm/ocp.h>
+#include <asm/ppc4xx_pic.h>
+#include <platforms/4xx/ibmstb4.h>
+
+static struct ocp_func_iic_data ibmstb4_iic0_def = {
+       .fast_mode      = 0,            /* Use standad mode (100Khz) */
+};
+
+static struct ocp_func_iic_data ibmstb4_iic1_def = {
+       .fast_mode      = 0,            /* Use standad mode (100Khz) */
+};
+OCP_SYSFS_IIC_DATA()
+
+struct ocp_def core_ocp[] __initdata = {
+       { .vendor       = OCP_VENDOR_IBM,
+         .function     = OCP_FUNC_16550,
+         .index        = 0,
+         .paddr        = UART0_IO_BASE,
+         .irq          = UART0_INT,
+         .pm           = IBM_CPM_UART0,
+       },
+       { .vendor       = OCP_VENDOR_IBM,
+         .function     = OCP_FUNC_16550,
+         .index        = 1,
+         .paddr        = UART1_IO_BASE,
+         .irq          = UART1_INT,
+         .pm           = IBM_CPM_UART1,
+       },
+       { .vendor       = OCP_VENDOR_IBM,
+         .function     = OCP_FUNC_16550,
+         .index        = 2,
+         .paddr        = UART2_IO_BASE,
+         .irq          = UART2_INT,
+         .pm           = IBM_CPM_UART2,
+       },
+       { .vendor       = OCP_VENDOR_IBM,
+         .function     = OCP_FUNC_IIC,
+         .paddr        = IIC0_BASE,
+         .irq          = IIC0_IRQ,
+         .pm           = IBM_CPM_IIC0,
+         .additions    = &ibmstb4_iic0_def,
+         .show         = &ocp_show_iic_data
+       },
+       { .vendor       = OCP_VENDOR_IBM,
+         .function     = OCP_FUNC_IIC,
+         .paddr        = IIC1_BASE,
+         .irq          = IIC1_IRQ,
+         .pm           = IBM_CPM_IIC1,
+         .additions    = &ibmstb4_iic1_def,
+         .show         = &ocp_show_iic_data
+       },
+       { .vendor       = OCP_VENDOR_IBM,
+         .function     = OCP_FUNC_GPIO,
+         .paddr        = GPIO0_BASE,
+         .irq          = OCP_IRQ_NA,
+         .pm           = IBM_CPM_GPIO0,
+       },
+       { .vendor       = OCP_VENDOR_IBM,
+         .function     = OCP_FUNC_IDE,
+         .paddr        = IDE0_BASE,
+         .irq          = IDE0_IRQ,
+         .pm           = OCP_CPM_NA,
+       },
+       { .vendor       = OCP_VENDOR_INVALID,
+       }
+};
 
-struct ocp_def core_ocp[] = {
-       {UART, UART0_IO_BASE, UART0_INT,IBM_CPM_UART0},
-       {UART, UART1_IO_BASE, UART1_INT, IBM_CPM_UART1},
-       {UART, UART2_IO_BASE, UART2_INT, IBM_CPM_UART2},
-       {IIC, IIC0_BASE, IIC0_IRQ, IBM_CPM_IIC0},
-       {IIC, IIC1_BASE, IIC1_IRQ, IBM_CPM_IIC1},
-       {GPIO, GPIO0_BASE, OCP_IRQ_NA, IBM_CPM_GPIO0},
-       {IDE, IDE0_BASE, IDE0_IRQ, OCP_CPM_NA},
-       {USB, USB0_BASE, USB0_IRQ, IBM_CPM_USB0},
-       {OCP_NULL_TYPE, 0x0, OCP_IRQ_NA, OCP_CPM_NA},
+/* Polarity and triggering settings for internal interrupt sources */
+struct ppc4xx_uic_settings ppc4xx_core_uic_cfg[] __initdata = {
+       { .polarity     = 0x7fffff01,
+         .triggering   = 0x00000000,
+         .ext_irq_mask = 0x0000007e,   /* IRQ0 - IRQ5 */
+       }
 };
+
+static struct resource ohci_usb_resources[] = {
+       [0] = {
+               .start  = USB0_BASE,
+               .end    = USB0_BASE + USB0_SIZE - 1,
+               .flags  = IORESOURCE_MEM,
+       },
+       [1] = {
+               .start  = USB0_IRQ,
+               .end    = USB0_IRQ,
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
+static u64 dma_mask = 0xffffffffULL;
+
+static struct platform_device ohci_usb_device = {
+       .name           = "ppc-soc-ohci",
+       .id             = 0,
+       .num_resources  = ARRAY_SIZE(ohci_usb_resources),
+       .resource       = ohci_usb_resources,
+       .dev            = {
+               .dma_mask = &dma_mask,
+               .coherent_dma_mask = 0xffffffffULL,
+       }
+};
+
+static struct platform_device *ibmstb4_devs[] __initdata = {
+       &ohci_usb_device,
+};
+
+static int __init
+ibmstb4_platform_add_devices(void)
+{
+       return platform_add_devices(ibmstb4_devs, ARRAY_SIZE(ibmstb4_devs));
+}
+arch_initcall(ibmstb4_platform_add_devices);