diff options
| author | Shawn Lin <shawn.lin@rock-chips.com> | 2025-12-16 19:49:56 +0800 |
|---|---|---|
| committer | Ulf Hansson <ulf.hansson@linaro.org> | 2026-02-23 12:06:52 +0100 |
| commit | 9313c6c3dbd7aab645f1a37943f8187ea48edc6f (patch) | |
| tree | 8cbc0cc4d2ae8dababb9981a89f3f9ba060147e1 /tools/perf/scripts/python/bin/stackcollapse-record | |
| parent | 5962f68603ea74b804f7bb01a475b08846932aad (diff) | |
mmc: dw_mmc: Remove vqmmc_enabled from struct dw_mci and update the reset
commit 51da2240906c ("mmc: dw_mmc: use mmc_regulator_get_supply to handle regulators")
introduced tracking of vqmmc_enabled. Currently, mmc_regulator_enable_vqmmc()
and mmc_regulator_disable_vqmmc() well record the status of vqmmc, so use
these two helpers to remove vqmmc_enabled locally. With vqmmc_enabled gone,
resetting controller on MMC_POWER_ON phase won't work as dw_mci_set_ios()
will be called several times during enumerating which leads to reset the
controller several times too. This messes up the status machine of controller.
By looking into the commit d1f1dd86006c ("mmc: dw_mmc: Give a good reset
after we give power"), it tried to solve failures on rk3288. The problem
is probably because the vqmmc is used for IO block associated with dw
controller. When SD is removed during I/O, cutting off vqmmc in MMC_POWER_OFF
phase will confuse the controller as its status machine refers to several
IO status, such as data_state_mc_busy and data_busy on SDMMC_STATUS reg.
So the controller could run into an unexpected state and could not enumerate
cards correctly the next time. Reset it on MMC_POWER_ON phase or MMC_POWER_OFF
phase should work, let's do the latter.
This patch is tested on RK3588s/RK3399/RK3576 EVB with TF cards with both
vqmmc present or not.
Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Diffstat (limited to 'tools/perf/scripts/python/bin/stackcollapse-record')
0 files changed, 0 insertions, 0 deletions
