[PATCH] mmc: msm_sdhci: enable vqmmc at probe if available

Caleb Connolly caleb.connolly at linaro.org
Thu Oct 24 15:11:11 CEST 2024


Hi Neil,

On 16/10/2024 11:17, Neil Armstrong wrote:
> On earlier platforms, the vqmmc regulator was enabled by the
> previous bootloader, but on the newest (SM8650) it's not
> and we need vqmmc to be enabled in order to have the card
> to respond.

Isn't/shouldn't this be handled in mmc_power_init() ?

Kind regards,
> 
> Signed-off-by: Neil Armstrong <neil.armstrong at linaro.org>
> ---
>   drivers/mmc/msm_sdhci.c | 12 ++++++++++++
>   1 file changed, 12 insertions(+)
> 
> diff --git a/drivers/mmc/msm_sdhci.c b/drivers/mmc/msm_sdhci.c
> index 4e5c932c071..27bb7052fca 100644
> --- a/drivers/mmc/msm_sdhci.c
> +++ b/drivers/mmc/msm_sdhci.c
> @@ -15,6 +15,7 @@
>   #include <asm/global_data.h>
>   #include <asm/io.h>
>   #include <linux/bitops.h>
> +#include <power/regulator.h>
>   
>   /* Non-standard registers needed for SDHCI startup */
>   #define SDCC_MCI_POWER   0x0
> @@ -43,6 +44,7 @@ struct msm_sdhc {
>   	struct sdhci_host host;
>   	void *base;
>   	struct clk_bulk clks;
> +	struct udevice *vqmmc;
>   };
>   
>   struct msm_sdhc_variant_info {
> @@ -163,6 +165,16 @@ static int msm_sdc_probe(struct udevice *dev)
>   	if (ret)
>   		return ret;
>   
> +	/* Get the vqmmc regulator and enable it if available */
> +	device_get_supply_regulator(dev, "vqmmc-supply", &prv->vqmmc);
> +	if (prv->vqmmc) {
> +		ret = regulator_set_enable_if_allowed(prv->vqmmc, true);
> +		if (ret) {
> +			printf("Failed to enable the VQMMC regulator\n");
> +			return ret;
> +		}
> +	}
> +
>   	var_info = (void *)dev_get_driver_data(dev);
>   	if (!var_info->mci_removed) {
>   		ret = msm_sdc_mci_init(prv);
> 
> ---
> base-commit: d5cab0d6adc26ec1bbd45c2fed101184d04454ae
> change-id: 20241016-topic-sm8x50-mmc-vqmmc-b7cf8176ec51
> 
> Best regards,

-- 
// Caleb (they/them)



More information about the U-Boot mailing list