On 01/05/2015 02:35 AM, Lokesh Vutla wrote: > Hi Paul, > On Saturday 03 January 2015 02:40 AM, Paul Walmsley wrote: >> + Suman, lakml >> >> Hi Roger >> >> On Thu, 18 Dec 2014, Roger Quadros wrote: >> >>> Fixing up Paul's email id. >>> >>> cheers, >>> -roger >>> >>> On 18/12/14 17:49, Roger Quadros wrote: >>>> There are quite a few hwmods that don't have sysconfig register and so >>>> _find_mpu_rt_port(oh) will return NULL thus preventing ready state check >>>> on those modules after the module is enabled. >> >> Hmm. Any IP block that exposes registers that are accessible by the MPU >> should have an MPU register target port, even if there's no SYSCONFIG >> register. And if an IP block doesn't have registers that are accessible >> from the MPU, then there shouldn't be much point to waiting for the module >> to become ready. >> >> Looks like the real problem is the test for oh->class->sysc before the >> call to _init_mpu_rt_base(). That was introduced by commit 6423d6df1440 >> ("ARM: OMAP2+: hwmod: check for module address space during init"). It's >> not clear to me why that test was added, since _init_mpu_rt_base() doesn't >> do anything with oh->class->sysc or SYSCONFIG registers. > This was introduced by commit > 97597b962529 (ARM: OMAP2+: hwmod: Don't call _init_mpu_rt_base if no sysc) That's right, the test was present even before 6423d6df1440, I merely made this a block. > Patch description states that "there are few hwmod which doesn't have sysconfig registers and hence > no need to ioremap() them in early init code". > Isn't this correct? > May be a dumb question: If IP doesn't have sysconfig, is there any case that hwmod does > access the register address space of that IP? Why do we need to enable MPU register target port? > > Thanks and regards, > Lokesh > >> >> Could you please test the following patch? >> I don't have an AM437x-gp-evm. >> >> >> - Paul >> >> --- >> arch/arm/mach-omap2/omap_hwmod.c | 12 ++++-------- >> 1 file changed, 4 insertions(+), 8 deletions(-) >> >> diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c >> index cbb908dc5cf0..ce6d11f3eda7 100644 >> --- a/arch/arm/mach-omap2/omap_hwmod.c >> +++ b/arch/arm/mach-omap2/omap_hwmod.c >> @@ -2451,14 +2451,10 @@ static int __init _init(struct omap_hwmod *oh, void *data) >> oh->name, np->name); >> } >> >> - if (oh->class->sysc) { >> - r = _init_mpu_rt_base(oh, NULL, index, np); >> - if (r < 0) { >> - WARN(1, "omap_hwmod: %s: doesn't have mpu register target base\n", >> - oh->name); >> - return 0; >> - } >> - } >> + r = _init_mpu_rt_base(oh, NULL, index, np); >> + if (r < 0) >> + pr_debug("omap_hwmod: %s: doesn't have mpu register target base\n", >> + oh->name); >> >> r = _init_clocks(oh, NULL); >> if (r < 0) { >> > -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html