Re: [PATCH] ARM: dts: Set status to disable for MMC3

From: Emmanuel Vadot
Date: Mon Oct 07 2019 - 13:29:27 EST


On Mon, 7 Oct 2019 09:58:59 -0700
Tony Lindgren <tony@xxxxxxxxxxx> wrote:

> * Emmanuel Vadot <manu@xxxxxxxxxxxxxxxx> [191007 16:39]:
> > On Mon, 7 Oct 2019 09:16:34 -0700
> > Tony Lindgren <tony@xxxxxxxxxxx> wrote:
> >
> > > Hi,
> > >
> > > * Emmanuel Vadot <manu@xxxxxxxxxxx> [191007 08:04]:
> > > > Commit 5b63fb90adb95 ("ARM: dts: Fix incomplete dts data for am3 and am4 mmc")
> > > > fixed the mmc instances on the l3 interconnect but removed the disabled status.
> > > > Fix this and let boards properly define it if it have it.
> > >
> > > The dts default is "okay", and should be fine for all the
> > > internal devices even if not pinned out on the board. This
> > > way the devices get properly idled during boot, and we
> > > avoid repeating status = "enabled" over and over again in
> > > the board specific dts files.
> >
> > That is not correct, if a status != "disabled" then pinmuxing will be
> > configured for this device and if multiple devices share the same pin
> > then you have a problem. Note that I have (almost) no knowledge on Ti
> > SoC but I doubt that this is not the case on them.
>
> Hmm well, that should not be needed. The pinmux configuration is always
> done in a board specific dts file.

For TI it seems to be that way, but clearly not for other brand.

> > Also every other boards that I work with use the standard of setting
> > every node to disabled in the dtsi and let the board enable them at
> > will. Is there something different happening in the TI world ?
>
> There should be no need to do that for SoC internal devices, the
> the default status = "okay" should be just fine. Setting the
> status = "disabled" for SoC internal devices and then enabling them
> again for tens of board specific dts files just generates tons of
> pointless extra churn for the board specific configuration.

Setting the status = "okay" means that you can use the device. What's
the point of enabling a device if you can't use it ? Or worse can't
probe it like i2c or spi ?
Is the plan for TI dts to have every (or almost) device tree node
enabled even if the device isn't usable on the board ?

> > > Then the board specific dts files might want to configure
> > > devices with status = "disabled" if really needed. But this
> > > should be only done for devices that Linux must not use,
> > > such as crypto acclerators on secure devices if claimed by
> > > the secure mode.
> > >
> > > So if this fixes something, it's almost certainly a sign
> > > of something else being broken?
> >
> > In this case it's FreeBSD being because (I think) we have bad support
> > for the clocks for this module so we panic when we read from it as the
> > module isn't clocked. And since I find it wrong to have device enabled
> > while it isn't present I've sent this patch.
>
> Thanks for clarifying what happens. OK, sounds like FreeBSD might be
> missing clock handling for some devices then.
>
> What Linux does is probe the internal devices and then idle the
> unused ones as bootloaders often leave many things enabled. Otherwise
> the SoC power management won't work properly because device clocks
> will block deeper SoC idle states.

I can understand stand but then the bootload should be fixed to not
enable devices that aren't enabled in the DTS if it does that.

> Regards,
>
> Tony
>
> > > > Fixes: 5b63fb90adb95 ("ARM: dts: Fix incomplete dts data for am3 and am4 mmc")
> > > > Signed-off-by: Emmanuel Vadot <manu@xxxxxxxxxxx>
> > > > ---
> > > > arch/arm/boot/dts/am33xx.dtsi | 1 +
> > > > 1 file changed, 1 insertion(+)
> > > >
> > > > diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi
> > > > index fb6b8aa12cc5..b3a1fd9e39fa 100644
> > > > --- a/arch/arm/boot/dts/am33xx.dtsi
> > > > +++ b/arch/arm/boot/dts/am33xx.dtsi
> > > > @@ -260,6 +260,7 @@
> > > > ti,needs-special-reset;
> > > > interrupts = <29>;
> > > > reg = <0x0 0x1000>;
> > > > + status = "disabled";
> > > > };
> > > > };
> > > >
> > > > --
> > > > 2.22.0
> > > >
> >
> >
> > --
> > Emmanuel Vadot <manu@xxxxxxxxxxxxxxxx>


--
Emmanuel Vadot <manu@xxxxxxxxxxxxxxxx>