diff mbox series

[v2] arm64: dts: imx8mq-kontron-pitx-imx8m: remove vqmmc-supply node

Message ID 20210914072627.24173-1-heiko.thiery@gmail.com (mailing list archive)
State New, archived
Headers show
Series [v2] arm64: dts: imx8mq-kontron-pitx-imx8m: remove vqmmc-supply node | expand

Commit Message

Heiko Thiery Sept. 14, 2021, 7:26 a.m. UTC
The sw4 output (V_1V8_S0 voltage) from the PMIC is the main supply for
the 1V8 power domain. It is not only used as supply for the eMMC.
So this voltage can not be changed and is not allowed to switched off.
Therefore we do not want to provide this regulator to the SDHC driver to
control this voltage.

Fixes: 5dbadc848259 ("arm64: dts: fsl: add support for Kontron pitx-imx8m board")
Signed-off-by: Heiko Thiery <heiko.thiery@gmail.com>
---

v2:
 - slightly reword the commit message (thanks Michael)
 - add Fixes tag (thanks Fabio)


 arch/arm64/boot/dts/freescale/imx8mq-kontron-pitx-imx8m.dts | 1 -
 1 file changed, 1 deletion(-)

Comments

Lucas Stach Sept. 14, 2021, 8:20 a.m. UTC | #1
Am Dienstag, dem 14.09.2021 um 09:26 +0200 schrieb Heiko Thiery:
> The sw4 output (V_1V8_S0 voltage) from the PMIC is the main supply for
> the 1V8 power domain. It is not only used as supply for the eMMC.
> So this voltage can not be changed and is not allowed to switched off.
> Therefore we do not want to provide this regulator to the SDHC driver to
> control this voltage.
> 
This specific requirement should not be solved by removing the
regulator connection from the SDHCI node, but instead by constraining
the regulator voltage range to a fixed 3.3V and marking the regulator
as always-on to reflect the hardware requirements in the DT.

Also if your eMMC vqmmc is a fixed 3.3V, I don't think you need the
faster pinctrl states, as you can't use the faster pin states anyways,
as they require a 1.8V signaling voltage.

Regards,
Lucas
 
> Fixes: 5dbadc848259 ("arm64: dts: fsl: add support for Kontron pitx-imx8m board")
> Signed-off-by: Heiko Thiery <heiko.thiery@gmail.com>
> ---
> 
> v2:
>  - slightly reword the commit message (thanks Michael)
>  - add Fixes tag (thanks Fabio)
> 
> 
>  arch/arm64/boot/dts/freescale/imx8mq-kontron-pitx-imx8m.dts | 1 -
>  1 file changed, 1 deletion(-)
> 
> diff --git a/arch/arm64/boot/dts/freescale/imx8mq-kontron-pitx-imx8m.dts b/arch/arm64/boot/dts/freescale/imx8mq-kontron-pitx-imx8m.dts
> index f593e4ff62e1..436d98135ba9 100644
> --- a/arch/arm64/boot/dts/freescale/imx8mq-kontron-pitx-imx8m.dts
> +++ b/arch/arm64/boot/dts/freescale/imx8mq-kontron-pitx-imx8m.dts
> @@ -348,7 +348,6 @@ &usdhc1 {
>  	pinctrl-0 = <&pinctrl_usdhc1>;
>  	pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
>  	pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
> -	vqmmc-supply = <&sw4_reg>;
>  	bus-width = <8>;
>  	non-removable;
>  	no-sd;
Michael Walle Sept. 14, 2021, 8:32 a.m. UTC | #2
Hi Lucas,

Am 2021-09-14 10:20, schrieb Lucas Stach:
> Am Dienstag, dem 14.09.2021 um 09:26 +0200 schrieb Heiko Thiery:
>> The sw4 output (V_1V8_S0 voltage) from the PMIC is the main supply for
>> the 1V8 power domain. It is not only used as supply for the eMMC.
>> So this voltage can not be changed and is not allowed to switched off.
>> Therefore we do not want to provide this regulator to the SDHC driver 
>> to
>> control this voltage.
>> 
> This specific requirement should not be solved by removing the
> regulator connection from the SDHCI node, but instead by constraining
> the regulator voltage range to a fixed 3.3V and marking the regulator
> as always-on to reflect the hardware requirements in the DT.
> 
> Also if your eMMC vqmmc is a fixed 3.3V, I don't think you need the
> faster pinctrl states, as you can't use the faster pin states anyways,
> as they require a 1.8V signaling voltage.

Are you speaking of the 1.8V signalling modes? As far as I know the
IMX SDHC controller will switch the voltage by its own function pin.
That is, its not a GPIO.

-michael
Lucas Stach Sept. 14, 2021, 8:52 a.m. UTC | #3
Am Dienstag, dem 14.09.2021 um 10:32 +0200 schrieb Michael Walle:
> Hi Lucas,
> 
> Am 2021-09-14 10:20, schrieb Lucas Stach:
> > Am Dienstag, dem 14.09.2021 um 09:26 +0200 schrieb Heiko Thiery:
> > > The sw4 output (V_1V8_S0 voltage) from the PMIC is the main supply for
> > > the 1V8 power domain. It is not only used as supply for the eMMC.
> > > So this voltage can not be changed and is not allowed to switched off.
> > > Therefore we do not want to provide this regulator to the SDHC driver 
> > > to
> > > control this voltage.
> > > 
> > This specific requirement should not be solved by removing the
> > regulator connection from the SDHCI node, but instead by constraining
> > the regulator voltage range to a fixed 3.3V and marking the regulator
> > as always-on to reflect the hardware requirements in the DT.
> > 
> > Also if your eMMC vqmmc is a fixed 3.3V, I don't think you need the
> > faster pinctrl states, as you can't use the faster pin states anyways,
> > as they require a 1.8V signaling voltage.
> 
> Are you speaking of the 1.8V signalling modes? As far as I know the
> IMX SDHC controller will switch the voltage by its own function pin.
> That is, its not a GPIO.

Ah, I mixed things up here. This is a fixed 1.8V supply, which is valid
for eMMC, so the high-speed modes are available. My comment still
applies that this should be fixed by constraining the regulator, not by
removing the DT connection.

vqmmc is the MMC IO voltage, which can be switched either by the
function pin, which gets toggled automatically when software does the
voltage switch, or by explicitly switching the regulator voltage. eMMCs
are a bit special as they can work with a fixed 1.8V IO supply and
don't need to start with 3.3V.

Regards,
Lucas
Michael Walle Sept. 14, 2021, 9:12 a.m. UTC | #4
Am 2021-09-14 10:52, schrieb Lucas Stach:
> Am Dienstag, dem 14.09.2021 um 10:32 +0200 schrieb Michael Walle:
>> Hi Lucas,
>> 
>> Am 2021-09-14 10:20, schrieb Lucas Stach:
>> > Am Dienstag, dem 14.09.2021 um 09:26 +0200 schrieb Heiko Thiery:
>> > > The sw4 output (V_1V8_S0 voltage) from the PMIC is the main supply for
>> > > the 1V8 power domain. It is not only used as supply for the eMMC.
>> > > So this voltage can not be changed and is not allowed to switched off.
>> > > Therefore we do not want to provide this regulator to the SDHC driver
>> > > to
>> > > control this voltage.
>> > >
>> > This specific requirement should not be solved by removing the
>> > regulator connection from the SDHCI node, but instead by constraining
>> > the regulator voltage range to a fixed 3.3V and marking the regulator
>> > as always-on to reflect the hardware requirements in the DT.
>> >
>> > Also if your eMMC vqmmc is a fixed 3.3V, I don't think you need the
>> > faster pinctrl states, as you can't use the faster pin states anyways,
>> > as they require a 1.8V signaling voltage.
>> 
>> Are you speaking of the 1.8V signalling modes? As far as I know the
>> IMX SDHC controller will switch the voltage by its own function pin.
>> That is, its not a GPIO.
> 
> Ah, I mixed things up here. This is a fixed 1.8V supply, which is valid
> for eMMC, so the high-speed modes are available. My comment still
> applies that this should be fixed by constraining the regulator, not by
> removing the DT connection.
> 
> vqmmc is the MMC IO voltage, which can be switched either by the
> function pin, which gets toggled automatically when software does the
> voltage switch, or by explicitly switching the regulator voltage. eMMCs
> are a bit special as they can work with a fixed 1.8V IO supply and
> don't need to start with 3.3V.

I tend to agree. There might be some useful information, like the driver
could fetch the voltage although it is not able to change it.

NB. the regulator is already fixed at 1.8V and is marked as always on.

from arch/arm64/boot/dts/freescale/imx8mq-kontron-pitx-imx8m.dts:

sw4_reg: sw4 {
         regulator-name = "V_1V8_S0";
         regulator-min-microvolt = <1800000>;
         regulator-max-microvolt = <1800000>;
         regulator-always-on;
};

-michael
Heiko Thiery Sept. 14, 2021, 9:37 a.m. UTC | #5
Hi,

Am Di., 14. Sept. 2021 um 11:12 Uhr schrieb Michael Walle <michael@walle.cc>:
>
> Am 2021-09-14 10:52, schrieb Lucas Stach:
> > Am Dienstag, dem 14.09.2021 um 10:32 +0200 schrieb Michael Walle:
> >> Hi Lucas,
> >>
> >> Am 2021-09-14 10:20, schrieb Lucas Stach:
> >> > Am Dienstag, dem 14.09.2021 um 09:26 +0200 schrieb Heiko Thiery:
> >> > > The sw4 output (V_1V8_S0 voltage) from the PMIC is the main supply for
> >> > > the 1V8 power domain. It is not only used as supply for the eMMC.
> >> > > So this voltage can not be changed and is not allowed to switched off.
> >> > > Therefore we do not want to provide this regulator to the SDHC driver
> >> > > to
> >> > > control this voltage.
> >> > >
> >> > This specific requirement should not be solved by removing the
> >> > regulator connection from the SDHCI node, but instead by constraining
> >> > the regulator voltage range to a fixed 3.3V and marking the regulator
> >> > as always-on to reflect the hardware requirements in the DT.
> >> >
> >> > Also if your eMMC vqmmc is a fixed 3.3V, I don't think you need the
> >> > faster pinctrl states, as you can't use the faster pin states anyways,
> >> > as they require a 1.8V signaling voltage.
> >>
> >> Are you speaking of the 1.8V signalling modes? As far as I know the
> >> IMX SDHC controller will switch the voltage by its own function pin.
> >> That is, its not a GPIO.
> >
> > Ah, I mixed things up here. This is a fixed 1.8V supply, which is valid
> > for eMMC, so the high-speed modes are available. My comment still
> > applies that this should be fixed by constraining the regulator, not by
> > removing the DT connection.
> >
> > vqmmc is the MMC IO voltage, which can be switched either by the
> > function pin, which gets toggled automatically when software does the
> > voltage switch, or by explicitly switching the regulator voltage. eMMCs
> > are a bit special as they can work with a fixed 1.8V IO supply and
> > don't need to start with 3.3V.
>
> I tend to agree. There might be some useful information, like the driver
> could fetch the voltage although it is not able to change it.
>
> NB. the regulator is already fixed at 1.8V and is marked as always on.
>
> from arch/arm64/boot/dts/freescale/imx8mq-kontron-pitx-imx8m.dts:
>
> sw4_reg: sw4 {
>          regulator-name = "V_1V8_S0";
>          regulator-min-microvolt = <1800000>;
>          regulator-max-microvolt = <1800000>;
>          regulator-always-on;
> };

To be honest, the intention was that I wanted to separate the
dependency between emmc and PMIC. Debian 11 unfortunately does not
have a driver enabled for the PMIC used and therefore cannot
initialize the emmc driver.

So I should reconsider how to fix this.
Michael Walle Sept. 14, 2021, 9:39 a.m. UTC | #6
Am 2021-09-14 10:52, schrieb Lucas Stach:
> Am Dienstag, dem 14.09.2021 um 10:32 +0200 schrieb Michael Walle:
>> Hi Lucas,
>> 
>> Am 2021-09-14 10:20, schrieb Lucas Stach:
>> > Am Dienstag, dem 14.09.2021 um 09:26 +0200 schrieb Heiko Thiery:
>> > > The sw4 output (V_1V8_S0 voltage) from the PMIC is the main supply for
>> > > the 1V8 power domain. It is not only used as supply for the eMMC.
>> > > So this voltage can not be changed and is not allowed to switched off.
>> > > Therefore we do not want to provide this regulator to the SDHC driver
>> > > to
>> > > control this voltage.
>> > >
>> > This specific requirement should not be solved by removing the
>> > regulator connection from the SDHCI node, but instead by constraining
>> > the regulator voltage range to a fixed 3.3V and marking the regulator
>> > as always-on to reflect the hardware requirements in the DT.
>> >
>> > Also if your eMMC vqmmc is a fixed 3.3V, I don't think you need the
>> > faster pinctrl states, as you can't use the faster pin states anyways,
>> > as they require a 1.8V signaling voltage.
>> 
>> Are you speaking of the 1.8V signalling modes? As far as I know the
>> IMX SDHC controller will switch the voltage by its own function pin.
>> That is, its not a GPIO.
> 
> Ah, I mixed things up here. This is a fixed 1.8V supply, which is valid
> for eMMC, so the high-speed modes are available. My comment still
> applies that this should be fixed by constraining the regulator, not by
> removing the DT connection.
> 
> vqmmc is the MMC IO voltage, which can be switched either by the
> function pin, which gets toggled automatically when software does the
> voltage switch, or by explicitly switching the regulator voltage. eMMCs
> are a bit special as they can work with a fixed 1.8V IO supply and
> don't need to start with 3.3V.

Mh, I have some kind of general question though.

Lets take the SDHC controller for the SD card, which needs to change
the voltage if you want to use the high speed mode of the cards. Ie.
from 3.3V to 1.8V. The controller does this autonomously with the help
of a pin which is controlled by the controller itself. Will it have a
vqmmc-supply property? And if so what whould the supply be?

-michael
Lucas Stach Sept. 14, 2021, 12:34 p.m. UTC | #7
Am Dienstag, dem 14.09.2021 um 11:39 +0200 schrieb Michael Walle:
> Am 2021-09-14 10:52, schrieb Lucas Stach:
> > Am Dienstag, dem 14.09.2021 um 10:32 +0200 schrieb Michael Walle:
> > > Hi Lucas,
> > > 
> > > Am 2021-09-14 10:20, schrieb Lucas Stach:
> > > > Am Dienstag, dem 14.09.2021 um 09:26 +0200 schrieb Heiko Thiery:
> > > > > The sw4 output (V_1V8_S0 voltage) from the PMIC is the main supply for
> > > > > the 1V8 power domain. It is not only used as supply for the eMMC.
> > > > > So this voltage can not be changed and is not allowed to switched off.
> > > > > Therefore we do not want to provide this regulator to the SDHC driver
> > > > > to
> > > > > control this voltage.
> > > > > 
> > > > This specific requirement should not be solved by removing the
> > > > regulator connection from the SDHCI node, but instead by constraining
> > > > the regulator voltage range to a fixed 3.3V and marking the regulator
> > > > as always-on to reflect the hardware requirements in the DT.
> > > > 
> > > > Also if your eMMC vqmmc is a fixed 3.3V, I don't think you need the
> > > > faster pinctrl states, as you can't use the faster pin states anyways,
> > > > as they require a 1.8V signaling voltage.
> > > 
> > > Are you speaking of the 1.8V signalling modes? As far as I know the
> > > IMX SDHC controller will switch the voltage by its own function pin.
> > > That is, its not a GPIO.
> > 
> > Ah, I mixed things up here. This is a fixed 1.8V supply, which is valid
> > for eMMC, so the high-speed modes are available. My comment still
> > applies that this should be fixed by constraining the regulator, not by
> > removing the DT connection.
> > 
> > vqmmc is the MMC IO voltage, which can be switched either by the
> > function pin, which gets toggled automatically when software does the
> > voltage switch, or by explicitly switching the regulator voltage. eMMCs
> > are a bit special as they can work with a fixed 1.8V IO supply and
> > don't need to start with 3.3V.
> 
> Mh, I have some kind of general question though.
> 
> Lets take the SDHC controller for the SD card, which needs to change
> the voltage if you want to use the high speed mode of the cards. Ie.
> from 3.3V to 1.8V. The controller does this autonomously with the help
> of a pin which is controlled by the controller itself. Will it have a
> vqmmc-supply property? And if so what whould the supply be?
> 
If the IO voltage regulator is controlled via the fixed function pin
you would not add the vqmmc-supply to the DT, as the regulator isn't
known to Linux in that case.

The vqmmc-supply should be used when you have a regulator which is
controlled via some other path than the fixed function pin, or if the
regulator is fixed. By having the connection to the fixed regulator,
the MMC core is able to see that certain modes of operation are not
available.

Regards,
Lucas
Uwe Kleine-König Dec. 12, 2023, 1:41 p.m. UTC | #8
Hello Heiko,

On Tue, Sep 14, 2021 at 11:37:04AM +0200, Heiko Thiery wrote:
> dependency between emmc and PMIC. Debian 11 unfortunately does not
> have a driver enabled for the PMIC used and therefore cannot
> initialize the emmc driver.

Updating to Debian 12 should give you a kernel that supports the
pfuze100 driver. (But I guess you know that, because it was enabled by
someone named Heiko Thiery. :-)

Best regards
Uwe
Uwe Kleine-König Dec. 12, 2023, 3:58 p.m. UTC | #9
Hello Heiko,

On Tue, Dec 12, 2023 at 02:50:04PM +0100, Heiko Thiery wrote:
> Am Di., 12. Dez. 2023 um 14:41 Uhr schrieb Uwe Kleine-König <
> u.kleine-koenig@pengutronix.de>:
> > On Tue, Sep 14, 2021 at 11:37:04AM +0200, Heiko Thiery wrote:
> > > dependency between emmc and PMIC. Debian 11 unfortunately does not
> > > have a driver enabled for the PMIC used and therefore cannot
> > > initialize the emmc driver.
> >
> > Updating to Debian 12 should give you a kernel that supports the
> > pfuze100 driver. (But I guess you know that, because it was enabled by
> > someone named Heiko Thiery. :-)
> >
> Thanks for the hint!

I'm working on cleaning up my inbox and had old mails open without
noticing. I only noticed after sending out that the mail is 2 years old
already and I should have considered it done without a reply.

Sorry if my mail appeared sneaky.

Best regards
Uwe
diff mbox series

Patch

diff --git a/arch/arm64/boot/dts/freescale/imx8mq-kontron-pitx-imx8m.dts b/arch/arm64/boot/dts/freescale/imx8mq-kontron-pitx-imx8m.dts
index f593e4ff62e1..436d98135ba9 100644
--- a/arch/arm64/boot/dts/freescale/imx8mq-kontron-pitx-imx8m.dts
+++ b/arch/arm64/boot/dts/freescale/imx8mq-kontron-pitx-imx8m.dts
@@ -348,7 +348,6 @@  &usdhc1 {
 	pinctrl-0 = <&pinctrl_usdhc1>;
 	pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
 	pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
-	vqmmc-supply = <&sw4_reg>;
 	bus-width = <8>;
 	non-removable;
 	no-sd;