[PATCH 08/11] ARM: OMAP2+: Remove unused legacy code for PRM
Tony Lindgren
tony at atomide.com
Thu Jul 20 22:55:10 PDT 2017
* Sebastian Reichel <sebastian.reichel at collabora.co.uk> [170720 07:45]:
> Hi,
>
> On Fri, Jun 30, 2017 at 03:42:56AM -0700, Tony Lindgren wrote:
> > * Tony Lindgren <tony at atomide.com> [170531 15:55]:
> > > We are now booting all mach-omap2 in device tree only mode.
> > > Any code that is only called in legacy boot mode where
> > > of_have_populated_dt() is not set is safe to remove now.
> > ...
> >
> > > diff --git a/arch/arm/mach-omap2/prm44xx.c b/arch/arm/mach-omap2/prm44xx.c
> > > --- a/arch/arm/mach-omap2/prm44xx.c
> > > +++ b/arch/arm/mach-omap2/prm44xx.c
> > ...
> >
> > > -static int omap44xx_prm_late_init(void)
> > > -{
> > > - int irq_num;
> > > -
> > > - if (!(prm_features & PRM_HAS_IO_WAKEUP))
> > > - return 0;
> > > -
> > > - /* OMAP4+ is DT only now */
> > > - if (!of_have_populated_dt())
> > > - return 0;
> >
> > Turns out I misread the above and this code is still needed for omap4 PRM
> > interrupts, so applying a partial revert below to fix it.
>
> I just spent a couple of hours to tracing this and now saw, that you
> already did so. Why was this not part of the pull request? :(
Sorry I did not notice until I had sent out a pull request. I did
send a pull request for this and few other fixes on the 6th that is
still pending.
> > I probably missed this earlier as the comments used to say
> > "OMAP4+ is DT only now" for !of_have_populated_dt() to exit early and
> > missed the negative test. Let's not add those lines back as they are
> > confusing and no longer needed as we only boot in device tree mode.
>
> haha, I came up with *exactly* the same patch and then noticed
> this mail when I checked for a Message-ID as reference :)
Sorry to hear about the duplicate work.
> > Without things things can mysterious fail for i2c, for example LM75
> > I2C temperature sensor can stop working as the PRM interrupts won't work.
>
> Here is the demystification:
>
> Without this fix omap4_pmx_core and omap4_pmx_wakeup will not
> register themself as interrupt controller, due to missing parent
> interrupt. This means, that any device referencing an interrupt
> in one of those controllers will fail their probe routine with
> -EPROBE_DEFER waiting for the interrupt controller to appear.
> At least for i2c this happens directly in the core, even before
> calling the driver's probe routine making this look quite
> mysterious.
>
> TLDR: Fix "wakeup-source;" using devices on omap4.
Yup.
Regards,
Tony
More information about the linux-arm-kernel
mailing list