|
@@ -2112,11 +2112,20 @@ static struct omap_hwmod_ocp_if omap3_l4_core__i2c3 = {
|
|
};
|
|
};
|
|
|
|
|
|
/* L4 CORE -> SR1 interface */
|
|
/* L4 CORE -> SR1 interface */
|
|
|
|
+static struct omap_hwmod_addr_space omap3_sr1_addr_space[] = {
|
|
|
|
+ {
|
|
|
|
+ .pa_start = OMAP34XX_SR1_BASE,
|
|
|
|
+ .pa_end = OMAP34XX_SR1_BASE + SZ_1K - 1,
|
|
|
|
+ .flags = ADDR_TYPE_RT,
|
|
|
|
+ },
|
|
|
|
+ { },
|
|
|
|
+};
|
|
|
|
|
|
static struct omap_hwmod_ocp_if omap34xx_l4_core__sr1 = {
|
|
static struct omap_hwmod_ocp_if omap34xx_l4_core__sr1 = {
|
|
.master = &omap3xxx_l4_core_hwmod,
|
|
.master = &omap3xxx_l4_core_hwmod,
|
|
.slave = &omap34xx_sr1_hwmod,
|
|
.slave = &omap34xx_sr1_hwmod,
|
|
.clk = "sr_l4_ick",
|
|
.clk = "sr_l4_ick",
|
|
|
|
+ .addr = omap3_sr1_addr_space,
|
|
.user = OCP_USER_MPU,
|
|
.user = OCP_USER_MPU,
|
|
};
|
|
};
|
|
|
|
|
|
@@ -2124,15 +2133,25 @@ static struct omap_hwmod_ocp_if omap36xx_l4_core__sr1 = {
|
|
.master = &omap3xxx_l4_core_hwmod,
|
|
.master = &omap3xxx_l4_core_hwmod,
|
|
.slave = &omap36xx_sr1_hwmod,
|
|
.slave = &omap36xx_sr1_hwmod,
|
|
.clk = "sr_l4_ick",
|
|
.clk = "sr_l4_ick",
|
|
|
|
+ .addr = omap3_sr1_addr_space,
|
|
.user = OCP_USER_MPU,
|
|
.user = OCP_USER_MPU,
|
|
};
|
|
};
|
|
|
|
|
|
/* L4 CORE -> SR1 interface */
|
|
/* L4 CORE -> SR1 interface */
|
|
|
|
+static struct omap_hwmod_addr_space omap3_sr2_addr_space[] = {
|
|
|
|
+ {
|
|
|
|
+ .pa_start = OMAP34XX_SR2_BASE,
|
|
|
|
+ .pa_end = OMAP34XX_SR2_BASE + SZ_1K - 1,
|
|
|
|
+ .flags = ADDR_TYPE_RT,
|
|
|
|
+ },
|
|
|
|
+ { },
|
|
|
|
+};
|
|
|
|
|
|
static struct omap_hwmod_ocp_if omap34xx_l4_core__sr2 = {
|
|
static struct omap_hwmod_ocp_if omap34xx_l4_core__sr2 = {
|
|
.master = &omap3xxx_l4_core_hwmod,
|
|
.master = &omap3xxx_l4_core_hwmod,
|
|
.slave = &omap34xx_sr2_hwmod,
|
|
.slave = &omap34xx_sr2_hwmod,
|
|
.clk = "sr_l4_ick",
|
|
.clk = "sr_l4_ick",
|
|
|
|
+ .addr = omap3_sr2_addr_space,
|
|
.user = OCP_USER_MPU,
|
|
.user = OCP_USER_MPU,
|
|
};
|
|
};
|
|
|
|
|
|
@@ -2140,6 +2159,7 @@ static struct omap_hwmod_ocp_if omap36xx_l4_core__sr2 = {
|
|
.master = &omap3xxx_l4_core_hwmod,
|
|
.master = &omap3xxx_l4_core_hwmod,
|
|
.slave = &omap36xx_sr2_hwmod,
|
|
.slave = &omap36xx_sr2_hwmod,
|
|
.clk = "sr_l4_ick",
|
|
.clk = "sr_l4_ick",
|
|
|
|
+ .addr = omap3_sr2_addr_space,
|
|
.user = OCP_USER_MPU,
|
|
.user = OCP_USER_MPU,
|
|
};
|
|
};
|
|
|
|
|
|
@@ -3111,16 +3131,20 @@ static struct omap_hwmod_ocp_if *omap3xxx_dss_hwmod_ocp_ifs[] __initdata = {
|
|
* Return: 0 if device named @dev_name is not likely to be accessible,
|
|
* Return: 0 if device named @dev_name is not likely to be accessible,
|
|
* or 1 if it is likely to be accessible.
|
|
* or 1 if it is likely to be accessible.
|
|
*/
|
|
*/
|
|
-static int __init omap3xxx_hwmod_is_hs_ip_block_usable(struct device_node *bus,
|
|
|
|
- const char *dev_name)
|
|
|
|
|
|
+static bool __init omap3xxx_hwmod_is_hs_ip_block_usable(struct device_node *bus,
|
|
|
|
+ const char *dev_name)
|
|
{
|
|
{
|
|
|
|
+ struct device_node *node;
|
|
|
|
+ bool available;
|
|
|
|
+
|
|
if (!bus)
|
|
if (!bus)
|
|
- return (omap_type() == OMAP2_DEVICE_TYPE_GP) ? 1 : 0;
|
|
|
|
|
|
+ return omap_type() == OMAP2_DEVICE_TYPE_GP;
|
|
|
|
|
|
- if (of_device_is_available(of_find_node_by_name(bus, dev_name)))
|
|
|
|
- return 1;
|
|
|
|
|
|
+ node = of_get_child_by_name(bus, dev_name);
|
|
|
|
+ available = of_device_is_available(node);
|
|
|
|
+ of_node_put(node);
|
|
|
|
|
|
- return 0;
|
|
|
|
|
|
+ return available;
|
|
}
|
|
}
|
|
|
|
|
|
int __init omap3xxx_hwmod_init(void)
|
|
int __init omap3xxx_hwmod_init(void)
|
|
@@ -3189,15 +3213,20 @@ int __init omap3xxx_hwmod_init(void)
|
|
|
|
|
|
if (h_sham && omap3xxx_hwmod_is_hs_ip_block_usable(bus, "sham")) {
|
|
if (h_sham && omap3xxx_hwmod_is_hs_ip_block_usable(bus, "sham")) {
|
|
r = omap_hwmod_register_links(h_sham);
|
|
r = omap_hwmod_register_links(h_sham);
|
|
- if (r < 0)
|
|
|
|
|
|
+ if (r < 0) {
|
|
|
|
+ of_node_put(bus);
|
|
return r;
|
|
return r;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
if (h_aes && omap3xxx_hwmod_is_hs_ip_block_usable(bus, "aes")) {
|
|
if (h_aes && omap3xxx_hwmod_is_hs_ip_block_usable(bus, "aes")) {
|
|
r = omap_hwmod_register_links(h_aes);
|
|
r = omap_hwmod_register_links(h_aes);
|
|
- if (r < 0)
|
|
|
|
|
|
+ if (r < 0) {
|
|
|
|
+ of_node_put(bus);
|
|
return r;
|
|
return r;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
+ of_node_put(bus);
|
|
|
|
|
|
/*
|
|
/*
|
|
* Register hwmod links specific to certain ES levels of a
|
|
* Register hwmod links specific to certain ES levels of a
|