]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - arch/arm/mach-omap2/devices.c
Merge tag 'late-omap' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
[karo-tx-linux.git] / arch / arm / mach-omap2 / devices.c
index 626f3ea3142f55dfd0bcd5337a9758eab5d0cf71..1ec7f05977102759383f05351469baeecbd3e856 100644 (file)
@@ -20,6 +20,7 @@
 #include <linux/pinctrl/machine.h>
 #include <linux/platform_data/omap4-keypad.h>
 #include <linux/platform_data/omap_ocp2scp.h>
+#include <linux/usb/omap_control_usb.h>
 
 #include <asm/mach-types.h>
 #include <asm/mach/map.h>
@@ -61,14 +62,13 @@ static int __init omap3_l3_init(void)
        if (!oh)
                pr_err("could not look up %s\n", oh_name);
 
-       pdev = omap_device_build("omap_l3_smx", 0, oh, NULL, 0,
-                                                          NULL, 0, 0);
+       pdev = omap_device_build("omap_l3_smx", 0, oh, NULL, 0);
 
        WARN(IS_ERR(pdev), "could not build omap_device for %s\n", oh_name);
 
        return IS_ERR(pdev) ? PTR_ERR(pdev) : 0;
 }
-postcore_initcall(omap3_l3_init);
+omap_postcore_initcall(omap3_l3_init);
 
 static int __init omap4_l3_init(void)
 {
@@ -96,14 +96,13 @@ static int __init omap4_l3_init(void)
                        pr_err("could not look up %s\n", oh_name);
        }
 
-       pdev = omap_device_build_ss("omap_l3_noc", 0, oh, 3, NULL,
-                                                    0, NULL, 0, 0);
+       pdev = omap_device_build_ss("omap_l3_noc", 0, oh, 3, NULL, 0);
 
        WARN(IS_ERR(pdev), "could not build omap_device for %s\n", oh_name);
 
        return IS_ERR(pdev) ? PTR_ERR(pdev) : 0;
 }
-postcore_initcall(omap4_l3_init);
+omap_postcore_initcall(omap4_l3_init);
 
 #if defined(CONFIG_VIDEO_OMAP2) || defined(CONFIG_VIDEO_OMAP2_MODULE)
 
@@ -254,6 +253,49 @@ static inline void omap_init_camera(void)
 #endif
 }
 
+#if IS_ENABLED(CONFIG_OMAP_CONTROL_USB)
+static struct omap_control_usb_platform_data omap4_control_usb_pdata = {
+       .type = 1,
+};
+
+struct resource omap4_control_usb_res[] = {
+       {
+               .name   = "control_dev_conf",
+               .start  = 0x4a002300,
+               .end    = 0x4a002303,
+               .flags  = IORESOURCE_MEM,
+       },
+       {
+               .name   = "otghs_control",
+               .start  = 0x4a00233c,
+               .end    = 0x4a00233f,
+               .flags  = IORESOURCE_MEM,
+       },
+};
+
+static struct platform_device omap4_control_usb = {
+       .name = "omap-control-usb",
+       .id = -1,
+       .dev = {
+               .platform_data = &omap4_control_usb_pdata,
+       },
+       .num_resources = 2,
+       .resource = omap4_control_usb_res,
+};
+
+static inline void __init omap_init_control_usb(void)
+{
+       if (!cpu_is_omap44xx())
+               return;
+
+       if (platform_device_register(&omap4_control_usb))
+               pr_err("Error registering omap_control_usb device\n");
+}
+
+#else
+static inline void omap_init_control_usb(void) { }
+#endif /* CONFIG_OMAP_CONTROL_USB */
+
 int __init omap4_keyboard_init(struct omap4_keypad_platform_data
                        *sdp4430_keypad_data, struct omap_board_data *bdata)
 {
@@ -273,7 +315,7 @@ int __init omap4_keyboard_init(struct omap4_keypad_platform_data
        keypad_data = sdp4430_keypad_data;
 
        pdev = omap_device_build(name, id, oh, keypad_data,
-                       sizeof(struct omap4_keypad_platform_data), NULL, 0, 0);
+                                sizeof(struct omap4_keypad_platform_data));
 
        if (IS_ERR(pdev)) {
                WARN(1, "Can't build omap_device for %s:%s.\n",
@@ -297,7 +339,7 @@ static inline void __init omap_init_mbox(void)
                return;
        }
 
-       pdev = omap_device_build("omap-mailbox", -1, oh, NULL, 0, NULL, 0, 0);
+       pdev = omap_device_build("omap-mailbox", -1, oh, NULL, 0);
        WARN(IS_ERR(pdev), "%s: could not build device, err %ld\n",
                                                __func__, PTR_ERR(pdev));
 }
@@ -337,7 +379,7 @@ static void __init omap_init_mcpdm(void)
                return;
        }
 
-       pdev = omap_device_build("omap-mcpdm", -1, oh, NULL, 0, NULL, 0, 0);
+       pdev = omap_device_build("omap-mcpdm", -1, oh, NULL, 0);
        WARN(IS_ERR(pdev), "Can't build omap_device for omap-mcpdm.\n");
 }
 #else
@@ -358,7 +400,7 @@ static void __init omap_init_dmic(void)
                return;
        }
 
-       pdev = omap_device_build("omap-dmic", -1, oh, NULL, 0, NULL, 0, 0);
+       pdev = omap_device_build("omap-dmic", -1, oh, NULL, 0);
        WARN(IS_ERR(pdev), "Can't build omap_device for omap-dmic.\n");
 }
 #else
@@ -384,8 +426,7 @@ static void __init omap_init_hdmi_audio(void)
                return;
        }
 
-       pdev = omap_device_build("omap-hdmi-audio-dai",
-               -1, oh, NULL, 0, NULL, 0, 0);
+       pdev = omap_device_build("omap-hdmi-audio-dai", -1, oh, NULL, 0);
        WARN(IS_ERR(pdev),
             "Can't build omap_device for omap-hdmi-audio-dai.\n");
 
@@ -429,8 +470,7 @@ static int __init omap_mcspi_init(struct omap_hwmod *oh, void *unused)
        }
 
        spi_num++;
-       pdev = omap_device_build(name, spi_num, oh, pdata,
-                               sizeof(*pdata), NULL, 0, 0);
+       pdev = omap_device_build(name, spi_num, oh, pdata, sizeof(*pdata));
        WARN(IS_ERR(pdev), "Can't build omap_device for %s:%s\n",
                                name, oh->name);
        kfree(pdata);
@@ -460,7 +500,7 @@ static void omap_init_rng(void)
        if (!oh)
                return;
 
-       pdev = omap_device_build("omap_rng", -1, oh, NULL, 0, NULL, 0, 0);
+       pdev = omap_device_build("omap_rng", -1, oh, NULL, 0);
        WARN(IS_ERR(pdev), "Can't build omap_device for omap_rng\n");
 }
 
@@ -689,8 +729,7 @@ static void __init omap_init_ocp2scp(void)
 
        pdata->dev_cnt  = dev_cnt;
 
-       pdev = omap_device_build(name, bus_id, oh, pdata, sizeof(*pdata), NULL,
-                                                               0, false);
+       pdev = omap_device_build(name, bus_id, oh, pdata, sizeof(*pdata));
        if (IS_ERR(pdev)) {
                pr_err("Could not build omap_device for %s %s\n",
                                                name, oh_name);
@@ -721,6 +760,7 @@ static int __init omap2_init_devices(void)
        omap_init_mbox();
        /* If dtb is there, the devices will be created dynamically */
        if (!of_have_populated_dt()) {
+               omap_init_control_usb();
                omap_init_dmic();
                omap_init_mcpdm();
                omap_init_mcspi();
@@ -734,4 +774,4 @@ static int __init omap2_init_devices(void)
 
        return 0;
 }
-arch_initcall(omap2_init_devices);
+omap_arch_initcall(omap2_init_devices);