|
@@ -230,3 +230,160 @@ static struct platform_device ehci0_device = {
|
|
},
|
|
},
|
|
.num_resources = ARRAY_SIZE(ehci0_resources),
|
|
.num_resources = ARRAY_SIZE(ehci0_resources),
|
|
.resource = ehci0_resources,
|
|
.resource = ehci0_resources,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct resource ehci1_resources[] = {
|
|
|
|
+ [0] = {
|
|
|
|
+ .start = 0xfff70000,
|
|
|
|
+ .end = 0xfff70400 - 1,
|
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
|
+ },
|
|
|
|
+ [1] = {
|
|
|
|
+ .start = gic_spi(45),
|
|
|
|
+ .flags = IORESOURCE_IRQ,
|
|
|
|
+ },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct platform_device ehci1_device = {
|
|
|
|
+ .name = "ehci-platform",
|
|
|
|
+ .id = 1,
|
|
|
|
+ .dev = {
|
|
|
|
+ .dma_mask = &ehci1_device.dev.coherent_dma_mask,
|
|
|
|
+ .coherent_dma_mask = 0xffffffff,
|
|
|
|
+ .platform_data = &ehcix_pdata,
|
|
|
|
+ },
|
|
|
|
+ .num_resources = ARRAY_SIZE(ehci1_resources),
|
|
|
|
+ .resource = ehci1_resources,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct usb_ohci_pdata ohcix_pdata = {
|
|
|
|
+ .power_on = usb_power_on,
|
|
|
|
+ .power_off = usb_power_off,
|
|
|
|
+ .power_suspend = usb_power_off,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct resource ohci0_resources[] = {
|
|
|
|
+ [0] = {
|
|
|
|
+ .start = 0xffe70400,
|
|
|
|
+ .end = 0xffe70800 - 1,
|
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
|
+ },
|
|
|
|
+ [1] = {
|
|
|
|
+ .start = gic_spi(44),
|
|
|
|
+ .flags = IORESOURCE_IRQ,
|
|
|
|
+ },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct platform_device ohci0_device = {
|
|
|
|
+ .name = "ohci-platform",
|
|
|
|
+ .id = 0,
|
|
|
|
+ .dev = {
|
|
|
|
+ .dma_mask = &ohci0_device.dev.coherent_dma_mask,
|
|
|
|
+ .coherent_dma_mask = 0xffffffff,
|
|
|
|
+ .platform_data = &ohcix_pdata,
|
|
|
|
+ },
|
|
|
|
+ .num_resources = ARRAY_SIZE(ohci0_resources),
|
|
|
|
+ .resource = ohci0_resources,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct resource ohci1_resources[] = {
|
|
|
|
+ [0] = {
|
|
|
|
+ .start = 0xfff70400,
|
|
|
|
+ .end = 0xfff70800 - 1,
|
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
|
+ },
|
|
|
|
+ [1] = {
|
|
|
|
+ .start = gic_spi(45),
|
|
|
|
+ .flags = IORESOURCE_IRQ,
|
|
|
|
+ },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct platform_device ohci1_device = {
|
|
|
|
+ .name = "ohci-platform",
|
|
|
|
+ .id = 1,
|
|
|
|
+ .dev = {
|
|
|
|
+ .dma_mask = &ohci1_device.dev.coherent_dma_mask,
|
|
|
|
+ .coherent_dma_mask = 0xffffffff,
|
|
|
|
+ .platform_data = &ohcix_pdata,
|
|
|
|
+ },
|
|
|
|
+ .num_resources = ARRAY_SIZE(ohci1_resources),
|
|
|
|
+ .resource = ohci1_resources,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct platform_device *marzen_late_devices[] __initdata = {
|
|
|
|
+ &ehci0_device,
|
|
|
|
+ &ehci1_device,
|
|
|
|
+ &ohci0_device,
|
|
|
|
+ &ohci1_device,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+void __init marzen_init_late(void)
|
|
|
|
+{
|
|
|
|
+ /* get usb phy */
|
|
|
|
+ phy = usb_get_phy(USB_PHY_TYPE_USB2);
|
|
|
|
+
|
|
|
|
+ shmobile_init_late();
|
|
|
|
+ platform_add_devices(marzen_late_devices,
|
|
|
|
+ ARRAY_SIZE(marzen_late_devices));
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static void __init marzen_init(void)
|
|
|
|
+{
|
|
|
|
+ regulator_register_always_on(0, "fixed-3.3V", fixed3v3_power_consumers,
|
|
|
|
+ ARRAY_SIZE(fixed3v3_power_consumers), 3300000);
|
|
|
|
+ regulator_register_fixed(1, dummy_supplies,
|
|
|
|
+ ARRAY_SIZE(dummy_supplies));
|
|
|
|
+
|
|
|
|
+ r8a7779_pinmux_init();
|
|
|
|
+
|
|
|
|
+ /* SCIF2 (CN18: DEBUG0) */
|
|
|
|
+ gpio_request(GPIO_FN_TX2_C, NULL);
|
|
|
|
+ gpio_request(GPIO_FN_RX2_C, NULL);
|
|
|
|
+
|
|
|
|
+ /* SCIF4 (CN19: DEBUG1) */
|
|
|
|
+ gpio_request(GPIO_FN_TX4, NULL);
|
|
|
|
+ gpio_request(GPIO_FN_RX4, NULL);
|
|
|
|
+
|
|
|
|
+ /* LAN89218 */
|
|
|
|
+ gpio_request(GPIO_FN_EX_CS0, NULL); /* nCS */
|
|
|
|
+ gpio_request(GPIO_FN_IRQ1_B, NULL); /* IRQ + PME */
|
|
|
|
+
|
|
|
|
+ /* SD0 (CN20) */
|
|
|
|
+ gpio_request(GPIO_FN_SD0_CLK, NULL);
|
|
|
|
+ gpio_request(GPIO_FN_SD0_CMD, NULL);
|
|
|
|
+ gpio_request(GPIO_FN_SD0_DAT0, NULL);
|
|
|
|
+ gpio_request(GPIO_FN_SD0_DAT1, NULL);
|
|
|
|
+ gpio_request(GPIO_FN_SD0_DAT2, NULL);
|
|
|
|
+ gpio_request(GPIO_FN_SD0_DAT3, NULL);
|
|
|
|
+ gpio_request(GPIO_FN_SD0_CD, NULL);
|
|
|
|
+ gpio_request(GPIO_FN_SD0_WP, NULL);
|
|
|
|
+
|
|
|
|
+ /* HSPI 0 */
|
|
|
|
+ gpio_request(GPIO_FN_HSPI_CLK0, NULL);
|
|
|
|
+ gpio_request(GPIO_FN_HSPI_CS0, NULL);
|
|
|
|
+ gpio_request(GPIO_FN_HSPI_TX0, NULL);
|
|
|
|
+ gpio_request(GPIO_FN_HSPI_RX0, NULL);
|
|
|
|
+
|
|
|
|
+ /* USB (CN21) */
|
|
|
|
+ gpio_request(GPIO_FN_USB_OVC0, NULL);
|
|
|
|
+ gpio_request(GPIO_FN_USB_OVC1, NULL);
|
|
|
|
+ gpio_request(GPIO_FN_USB_OVC2, NULL);
|
|
|
|
+
|
|
|
|
+ /* USB (CN22) */
|
|
|
|
+ gpio_request(GPIO_FN_USB_PENC2, NULL);
|
|
|
|
+
|
|
|
|
+ r8a7779_add_standard_devices();
|
|
|
|
+ platform_add_devices(marzen_devices, ARRAY_SIZE(marzen_devices));
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+MACHINE_START(MARZEN, "marzen")
|
|
|
|
+ .smp = smp_ops(r8a7779_smp_ops),
|
|
|
|
+ .map_io = r8a7779_map_io,
|
|
|
|
+ .init_early = r8a7779_add_early_devices,
|
|
|
|
+ .nr_irqs = NR_IRQS_LEGACY,
|
|
|
|
+ .init_irq = r8a7779_init_irq,
|
|
|
|
+ .handle_irq = gic_handle_irq,
|
|
|
|
+ .init_machine = marzen_init,
|
|
|
|
+ .init_late = marzen_init_late,
|
|
|
|
+ .timer = &shmobile_timer,
|
|
|
|
+MACHINE_END
|