]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ARM: DRA7: hwmod: Add dra74x and dra72x specific ocp interface lists
authorRajendra Nayak <rnayak@ti.com>
Thu, 28 Aug 2014 01:38:23 +0000 (19:38 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 5 Oct 2014 21:52:16 +0000 (14:52 -0700)
commit f7f7a29bf0cf25af23f37e5b5bf1368b85705286 upstream.

To deal with IPs which are specific to dra74x and dra72x, maintain seperate
ocp interface lists, while keeping the common list for all common IPs.

Move USB OTG SS4 to dra74x only list since its unavailable in
dra72x and is giving an abort during boot. The dra72x only list
is empty for now and a placeholder for future hwmod additions which
are specific to dra72x.

Fixes: d904b38df0db13 ("ARM: DRA7: hwmod: Add SYSCONFIG for usb_otg_ss")
Reported-by: Keerthy <j-keerthy@ti.com>
Signed-off-by: Rajendra Nayak <rnayak@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Tested-by: Nishanth Menon <nm@ti.com>
[paul@pwsan.com: fixed comment style to conform with CodingStyle]
Signed-off-by: Paul Walmsley <paul@pwsan.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/arm/mach-omap2/omap_hwmod.c
arch/arm/mach-omap2/omap_hwmod_7xx_data.c

index c914b0052fb90f01ee400f2152ddf6410fbcc565..4551efd28f8d32667c02103ae667d13c7c456d35 100644 (file)
@@ -3349,6 +3349,9 @@ int __init omap_hwmod_register_links(struct omap_hwmod_ocp_if **ois)
        if (!ois)
                return 0;
 
+       if (ois[0] == NULL) /* Empty list */
+               return 0;
+
        if (!linkspace) {
                if (_alloc_linkspace(ois)) {
                        pr_err("omap_hwmod: could not allocate link space\n");
index 810c205d668bfa5040ed2ad0458b412eb83b538e..2e35ff99f60e3681de0529e26cda3ed4feb1777a 100644 (file)
@@ -35,6 +35,7 @@
 #include "i2c.h"
 #include "mmc.h"
 #include "wd_timer.h"
+#include "soc.h"
 
 /* Base offset for all DRA7XX interrupts external to MPUSS */
 #define DRA7XX_IRQ_GIC_START   32
@@ -2707,7 +2708,6 @@ static struct omap_hwmod_ocp_if *dra7xx_hwmod_ocp_ifs[] __initdata = {
        &dra7xx_l4_per3__usb_otg_ss1,
        &dra7xx_l4_per3__usb_otg_ss2,
        &dra7xx_l4_per3__usb_otg_ss3,
-       &dra7xx_l4_per3__usb_otg_ss4,
        &dra7xx_l3_main_1__vcp1,
        &dra7xx_l4_per2__vcp1,
        &dra7xx_l3_main_1__vcp2,
@@ -2716,8 +2716,26 @@ static struct omap_hwmod_ocp_if *dra7xx_hwmod_ocp_ifs[] __initdata = {
        NULL,
 };
 
+static struct omap_hwmod_ocp_if *dra74x_hwmod_ocp_ifs[] __initdata = {
+       &dra7xx_l4_per3__usb_otg_ss4,
+       NULL,
+};
+
+static struct omap_hwmod_ocp_if *dra72x_hwmod_ocp_ifs[] __initdata = {
+       NULL,
+};
+
 int __init dra7xx_hwmod_init(void)
 {
+       int ret;
+
        omap_hwmod_init();
-       return omap_hwmod_register_links(dra7xx_hwmod_ocp_ifs);
+       ret = omap_hwmod_register_links(dra7xx_hwmod_ocp_ifs);
+
+       if (!ret && soc_is_dra74x())
+               return omap_hwmod_register_links(dra74x_hwmod_ocp_ifs);
+       else if (!ret && soc_is_dra72x())
+               return omap_hwmod_register_links(dra72x_hwmod_ocp_ifs);
+
+       return ret;
 }