On Wed, Dec 18, 2024 at 04:27:24PM +0100, Frieder Schrempf wrote: > From: Frieder Schrempf <frieder.schrempf@xxxxxxxxxx> > > This reverts commit 27866e3e8a7e93494f8374f48061aa73ee46ceb2 and > implements a new future-proof way of handling the mismatch between > the PMIC driver and the hardware for LDO5. > > It turned out that this feature was implemented based on the wrong > assumption that the SD_VSEL signal needs to be controlled as GPIO > in any case. > > In fact the straight-forward approach is to mux the signal as > USDHC_VSELECT and let the USDHC controller do the job. > > Most users never even used this property and the few who did have > been or are getting migrated to the alternative approach. > > In order to know the current status (which of the two control > registers is used) for the LDO5 regulator, we need to route back the > USDHC_VSELECT signal by setting the SION bit in the IOMUX. > > By adding the according GPIO as sd-vsel-gpios to the LDO5 node, we > allow the regulator driver to sample the current status of the > SD_VSEL signal that is used to select the correct control register. > > The SD_VSEL on the PMIC is always an input. It's driven by the SoC's > VSELECT signal (controlled by the USDHC controller) and we use the > SION bit in the IOMUX to internally loop back the signal in order to > sample it using the GPIO. > > As the SD_VSEL pin is directly routed to the LDO5 regulator in the > PMIC, make the sd-vsel-gpios property part of the LDO5 node. > > SoC PMIC > +-----------------------+ +-------------------+ > | | | | > | | | | > | GPIO <----------+ | | | > | | | SD_VSEL| +-------+ | > | USDHC_VSELECT ->+------------------->| LDO5 | | > | | | +-------+ | > | | | | > +-----------------------+ +-------------------+ > > For boards which have the SD_VSEL tied to a fixed low level, we add > 'nxp,sd-vsel-fixed-low'. The voltage of LDO5 is therefore only controlled > by writing to the LDO5CTRL_L register. > > If none of 'nxp,sd-vsel-fixed-low' or 'sd-vsel-gpios' is set, we keep > the same behavior as before. The driver assumes that SD_VSEL is tied > high and the LDO5CTRL_H register can be used, which is in fact not true > for all known boards and works merely by chance. > > Signed-off-by: Frieder Schrempf <frieder.schrempf@xxxxxxxxxx> Reviewed-by: Conor Dooley <conor.dooley@xxxxxxxxxxxxx>
Attachment:
signature.asc
Description: PGP signature