From: Peng Fan <peng.fan@oss.nxp.com>
To: Frieder Schrempf <frieder.schrempf@kontron.de>
Cc: Peng Fan <peng.fan@nxp.com>, Teresa Remmet <T.remmet@phytec.de>,
"sbabic@nabladev.com" <sbabic@nabladev.com>,
Yannic Moog <Y.Moog@phytec.de>, dl-uboot-imx <uboot-imx@nxp.com>,
"trini@konsulko.com" <trini@konsulko.com>,
"festevam@gmail.com" <festevam@gmail.com>,
"upstream@lists.phytec.de" <upstream@lists.phytec.de>,
"u-boot@lists.denx.de" <u-boot@lists.denx.de>,
"marek.vasut+renesas@mailbox.org"
<marek.vasut+renesas@mailbox.org>,
Leonard Anderweit <L.Anderweit@phytec.de>,
"emanuele.ghidoli@toradex.com" <emanuele.ghidoli@toradex.com>,
Benjamin Hahn <B.Hahn@phytec.de>,
Francesco Dolcini <francesco.dolcini@toradex.com>,
"matteo.lisi" <matteo.lisi@engicam.com>,
"abbaraju.manojsai@amarulasolutions.com"
<abbaraju.manojsai@amarulasolutions.com>
Subject: Re: [PATCH 1/4] imx8mp: phyboard-pollux-rdk: Convert to DM_PMIC
Date: Mon, 30 Mar 2026 10:23:21 +0800 [thread overview]
Message-ID: <acnemXvnI7Ifs3Xp@shlinux89> (raw)
In-Reply-To: <fd99509a-315f-4c0d-b300-eba1308f7ff1@kontron.de>
Hi Frieder,
On Wed, Mar 25, 2026 at 08:40:26AM +0100, Frieder Schrempf wrote:
>On 25.03.26 04:50, Peng Fan wrote:
>>> Subject: Re: [PATCH 1/4] imx8mp: phyboard-pollux-rdk: Convert to
>>> DM_PMIC
>>>
>>> Hello Peng,
>>> Hello Yannic,
>>>
>>> Am Dienstag, dem 24.03.2026 um 13:33 +0000 schrieb Peng Fan:
>>>> Hi Yannic,
>>>>
>>>>> Subject: Re: [PATCH 1/4] imx8mp: phyboard-pollux-rdk: Convert to
>>>>> DM_PMIC
>>>>>
>>>>> Hi Peng,
>>>>>
>>>>> On Tue, 2026-03-24 at 18:30 +0800, Peng Fan (OSS) wrote:
>>>>>> From: Peng Fan <peng.fan@nxp.com>
>>>>>>
>>>>>> Convert the board to use DM_PMIC instead of the legacy SPL
>>>>> I2C/PMIC
>>>>>> handling.
>>>>>>
>>>>>> Changes include:
>>>>>> - Enable DM_PMIC, DM_PMIC_PCA9450, and
>>>>> SPL_DM_PMIC_PCA9450 in defconfig.
>>>>>> - Drop legacy SPL I2C and PMIC options.
>>>>>> - Remove manual I2C1 pad setup and legacy power_pca9450_init()
>>>>> usage.
>>>>>> - Use DM-based pmic_get() with the DT node "pmic@25".
>>>>>> - Update PMIC register programming to use struct udevice API.
>>>>>
>>>>> these changes break something.
>>>>>
>>>>> Getting
>>>>>
>>>>> Loading Environment from MMC... Card did not respond to voltage
>>>>> select! : -110
>>>>> *** Warning - No block device, using default environment
>>>>>
>>>>> and SD card is not accessible as a result. I also worked on this
>>>>> modernization and got the same result as with your commit. Have
>>> not
>>>>> had time to investigate the cause, yet.
>>>>
>>>> This change should not impact sd, unless pmic not probe correctly.
>>>> You may give a look on "regulators", "pmic" in U-Boot shell, to see
>>>> whether pmic is good.
>>>>
>>>> And you may also need to confirm, whether SD works or not without
>>> this
>>>> migration to DM_PMIC.
>>>
>>> I see the same issue. The error is gone when the patch is reverted again.
>>> PMIC probing is working but the voltage change of SD-Card is probably
>>> not.
>>> We have set
>>> dts/upstream/src/arm64/freescale/imx8mp-phycore-fpsc.dtsi:
>>> vqmmc-supply = <&ldo5>;
>>>
>>> which references the PMIC.
>>> The evk is not using this property.
>>
>> I tried to add vqmmc-supply for i.MX8MP-EVK, I not see issues.
>> Not sure why this property impacts phycore-fpsc.
>>
>> The only suspecting point is
>>
>> - MX8MP_IOMUXC_GPIO1_IO04__USDHC2_VSELECT 0xc0
>> + MX8MP_IOMUXC_GPIO1_IO04__USDHC2_VSELECT 0x1c0
>>
>> No more ideas as of now.
>
>I'm pretty sure this issue is related to the VSELECT signal in some way.
>
>With MX8MP_IOMUXC_GPIO1_IO04__USDHC2_VSELECT being set, the SDHC
>controller controls the VSELECT signal that goes into the SD_VSEL input
>of the PMIC and switches the LDO5 between 1.8V and 3.3V. Internally the
>PMIC uses the state of SD_VSEL to decide which one of two voltage
>registers for LDO5 is used.
>
>When vqmmc-supply is set, the driver additionally sets the voltage by
>writing to the PMIC LDO5 voltage register. This can potentially cause
>conflicts and lead to an invalid state, where the driver thinks the card
>is in 1.8V state but the voltage is set to 3.3V or the other way round.
>
>One way to handle this, is to set the SION bit for the VSELECT signal
>and specify the sd-vsel-gpios property in the ldo5 node. This allows the
>PMIC driver to know about the current state of the VSELECT signal and
>use the correct voltage register when setting or getting the LDO5 voltage.
>
>Below you can find some pointers for additional information. I hope this
>helps to solve the issue on your board.
>
>Best regards
>Frieder
>
>Relevant U-Boot patchset:
>https://patchwork.ozlabs.org/project/uboot/cover/20250811131213.211124-1-frieder@fris.de/
>
>Relevant Kernel patchset:
>https://patchwork.kernel.org/project/linux-arm-kernel/cover/20241218152842.97483-1-frieder@fris.de/
I think this kernel patchset might be wrong.
GPIO1_04 is muxed as SD2_VSEL, reading GPIO1_04 will not able to get the PAD
value of SD2_VSEL.
I also tried in U-Boot on i.MX8MP-EVK.
u-boot=> mw 0x30330024 0x11 ==> set SION and MUX as SD2_VSELECT
u-boot=> md 0x30b500c0 1
30b500c0: 2000780b ==>BIT 1 is VSEL, already 1 .x.
u-boot=> md 0x30330284 1
30330284: 000000c0 ....
u-boot=> mw 0x30330284 0x1d0 ==> Configure PAD
u-boot=> md 0x30200000 4 ==>Read back GPIO1
30200000: 00001028 00000000 00001028 00000000 (.......(.......
value of GPIO1_IO4 is 0, not 1, but VSEL register is 1 in SDHC2.
So with your kernel patchset, reading the voltage, it will always return 3.3v.
Regards
Peng
>
>Example for sd-vsel-gpios:
>https://source.denx.de/u-boot/u-boot/-/blob/master/dts/upstream/src/arm64/freescale/imx8mp-kontron-osm-s.dtsi#L314
>
>Example for pinmux with SION bit:
>https://source.denx.de/u-boot/u-boot/-/blob/master/dts/upstream/src/arm64/freescale/imx8mp-kontron-osm-s.dtsi#L812
next prev parent reply other threads:[~2026-03-30 2:21 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-24 10:30 [PATCH 0/4] i.MX8MP: Convert to DM_PMIC for a few boards Peng Fan (OSS)
2026-03-24 10:30 ` [PATCH 1/4] imx8mp: phyboard-pollux-rdk: Convert to DM_PMIC Peng Fan (OSS)
2026-03-24 12:47 ` Yannic Moog
2026-03-24 13:33 ` Peng Fan
2026-03-24 14:25 ` Teresa Remmet
2026-03-25 3:50 ` Peng Fan
2026-03-25 7:40 ` Frieder Schrempf
2026-03-25 9:43 ` Teresa Remmet
2026-03-25 11:12 ` Peng Fan
2026-03-25 11:35 ` Frieder Schrempf
2026-03-26 8:05 ` Peng Fan
2026-03-26 8:44 ` Teresa Remmet
2026-03-26 10:09 ` Peng Fan
2026-03-26 9:03 ` Frieder Schrempf
2026-03-30 2:23 ` Peng Fan [this message]
2026-04-01 8:00 ` Frieder Schrempf
2026-04-01 9:30 ` Peng Fan
2026-03-24 10:30 ` [PATCH 2/4] imx8mp: verdin: " Peng Fan (OSS)
2026-03-24 10:30 ` [PATCH 3/4] imx8mp: libra-fpsc: " Peng Fan (OSS)
2026-03-24 10:30 ` [PATCH 4/4] imx8mp: icore-edimm2.2: " Peng Fan (OSS)
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=acnemXvnI7Ifs3Xp@shlinux89 \
--to=peng.fan@oss.nxp.com \
--cc=B.Hahn@phytec.de \
--cc=L.Anderweit@phytec.de \
--cc=T.remmet@phytec.de \
--cc=Y.Moog@phytec.de \
--cc=abbaraju.manojsai@amarulasolutions.com \
--cc=emanuele.ghidoli@toradex.com \
--cc=festevam@gmail.com \
--cc=francesco.dolcini@toradex.com \
--cc=frieder.schrempf@kontron.de \
--cc=marek.vasut+renesas@mailbox.org \
--cc=matteo.lisi@engicam.com \
--cc=peng.fan@nxp.com \
--cc=sbabic@nabladev.com \
--cc=trini@konsulko.com \
--cc=u-boot@lists.denx.de \
--cc=uboot-imx@nxp.com \
--cc=upstream@lists.phytec.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.