Re: [BUG] mmc_regulator_set_ocr can't cope with regulator-fixed

From: Jaehoon Chung
Date: Thu Aug 05 2021 - 05:59:59 EST


On 8/4/21 11:32 PM, Peter Geis wrote:
> Good Morning,
> I've encountered a fun issue with the dw-mmc driver while working on
> enabling support for the Quartz-64 Model A.
> The regulator-fixed driver supports enabling via a gpio, but does not
> have the ops to set voltage as it is fixed.
> The dw-mmc calls mmc_regulator_set_ocr for vmmc, which attempts to set
> the voltage first but fails due to the lack of the voltage ops. It
> then bails returning -EINVAL.
> This leads to the following message :
> dwmmc_rockchip fe2b0000.mmc: could not set regulator OCR (-22)

What is vdd value (ocr_avail value) on your target?
I didn't see its case until now. If there is a real bug, I will try to check again.

Best Regards,
Jaehoon Chung

> This can be fixed by switching to regulator-gpio for the vmmc supply
> to the sdmmc controller, however the sdio controller vmmc is provided
> by a fixed regulator that is always on. Obviously the regulator-gpio
> isn't an option, as it has no gpio to enable.
> Removing the vmmc phandle from the sdio node is an option, but then it
> doesn't fully describe the hardware (it's also a non-standard 4.4v).
> I had considered changing the check in dw-mmc.c [1] to continue in the
> case of -EINVAL, but there are other places in the regulator framework
> that can also return that and it doesn't address the underlying issue.
> As such I'm reaching out to the experts to see what the best course of
> action is here.
> Please weigh in with what you think.
> Very Respectfully,
> Peter Geis