ARM: shmobile: lager: Add internal USB PCI support
authorValentine Barshak <valentine.barshak@cogentembedded.com>
Fri, 14 Feb 2014 03:29:48 +0000 (12:29 +0900)
committerSimon Horman <horms+renesas@verge.net.au>
Mon, 17 Feb 2014 02:51:57 +0000 (11:51 +0900)
This adds internal PCI USB host devices to R-Car H2 Lager board.

Signed-off-by: Valentine Barshak <valentine.barshak@cogentembedded.com>
[damm@opensource.se: Rebased and reworked to only include USB1 and USB2]
Signed-off-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
arch/arm/mach-shmobile/board-lager.c

index 72886af7b737c6fc5302f4c4552043f0d98019d8..193dff0267d873882f9977296645b56bcd142796 100644 (file)
@@ -638,6 +638,48 @@ static struct resource sdhi2_resources[] __initdata = {
        DEFINE_RES_IRQ(gic_spi(167)),
 };
 
+/* Internal PCI1 */
+static const struct resource pci1_resources[] __initconst = {
+       DEFINE_RES_MEM(0xee0b0000, 0x10000),    /* CFG */
+       DEFINE_RES_MEM(0xee0a0000, 0x10000),    /* MEM */
+       DEFINE_RES_IRQ(gic_spi(112)),
+};
+
+static const struct platform_device_info pci1_info __initconst = {
+       .parent         = &platform_bus,
+       .name           = "pci-rcar-gen2",
+       .id             = 1,
+       .res            = pci1_resources,
+       .num_res        = ARRAY_SIZE(pci1_resources),
+       .dma_mask       = DMA_BIT_MASK(32),
+};
+
+static void __init lager_add_usb1_device(void)
+{
+       platform_device_register_full(&pci1_info);
+}
+
+/* Internal PCI2 */
+static const struct resource pci2_resources[] __initconst = {
+       DEFINE_RES_MEM(0xee0d0000, 0x10000),    /* CFG */
+       DEFINE_RES_MEM(0xee0c0000, 0x10000),    /* MEM */
+       DEFINE_RES_IRQ(gic_spi(113)),
+};
+
+static const struct platform_device_info pci2_info __initconst = {
+       .parent         = &platform_bus,
+       .name           = "pci-rcar-gen2",
+       .id             = 2,
+       .res            = pci2_resources,
+       .num_res        = ARRAY_SIZE(pci2_resources),
+       .dma_mask       = DMA_BIT_MASK(32),
+};
+
+static void __init lager_add_usb2_device(void)
+{
+       platform_device_register_full(&pci2_info);
+}
+
 static const struct pinctrl_map lager_pinctrl_map[] = {
        /* DU (CN10: ARGB0, CN13: LVDS) */
        PIN_MAP_MUX_GROUP_DEFAULT("rcar-du-r8a7790", "pfc-r8a7790",
@@ -716,6 +758,12 @@ static const struct pinctrl_map lager_pinctrl_map[] = {
        /* USB0 */
        PIN_MAP_MUX_GROUP_DEFAULT("renesas_usbhs", "pfc-r8a7790",
                                  "usb0_ovc_vbus", "usb0"),
+       /* USB1 */
+       PIN_MAP_MUX_GROUP_DEFAULT("pci-rcar-gen2.1", "pfc-r8a7790",
+                                 "usb1", "usb1"),
+       /* USB2 */
+       PIN_MAP_MUX_GROUP_DEFAULT("pci-rcar-gen2.2", "pfc-r8a7790",
+                                 "usb2", "usb2"),
 };
 
 static void __init lager_add_standard_devices(void)
@@ -776,6 +824,8 @@ static void __init lager_add_standard_devices(void)
                                          &usbhs_phy_pdata,
                                          sizeof(usbhs_phy_pdata));
        lager_register_usbhs();
+       lager_add_usb1_device();
+       lager_add_usb2_device();
 
        lager_add_rsnd_device();