Message ID | 20231023132128.1871269-3-avri.altman@wdc.com |
---|---|
State | Superseded |
Headers | show |
Series | mmc: host: Disable auto-cmd12 during ffu | expand |
Hi Avri,
kernel test robot noticed the following build errors:
[auto build test ERROR on linus/master]
[also build test ERROR on ulf-hansson-mmc-mirror/next v6.6-rc7 next-20231024]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Avri-Altman/mmc-core-Mark-close-ended-ffu-in-progress/20231023-212707
base: linus/master
patch link: https://lore.kernel.org/r/20231023132128.1871269-3-avri.altman%40wdc.com
patch subject: [PATCH v2 2/2] mmc: host: msm: Disable auto-cmd12 during ffu
config: csky-randconfig-001-20231025 (https://download.01.org/0day-ci/archive/20231025/202310250913.ri6qqodu-lkp@intel.com/config)
compiler: csky-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231025/202310250913.ri6qqodu-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202310250913.ri6qqodu-lkp@intel.com/
All errors (new ones prefixed by >>):
csky-linux-ld: drivers/mmc/host/sdhci-msm.o: in function `sdhci_msm_request':
>> sdhci-msm.c:(.text+0x540): undefined reference to `mmc_is_ffu_cmd'
csky-linux-ld: drivers/mmc/host/sdhci-msm.o: in function `sdhci_and_cqhci_reset':
sdhci-msm.c:(.text+0x5c0): undefined reference to `mmc_is_ffu_cmd'
diff --git a/drivers/mmc/host/sdhci-msm.c b/drivers/mmc/host/sdhci-msm.c index 668e0aceeeba..c0d816c4f770 100644 --- a/drivers/mmc/host/sdhci-msm.c +++ b/drivers/mmc/host/sdhci-msm.c @@ -2245,6 +2245,27 @@ static int sdhci_msm_start_signal_voltage_switch(struct mmc_host *mmc, return -EAGAIN; } +static void sdhci_msm_check_auto_cmd12(struct mmc_host *mmc, + struct mmc_request *mrq) +{ + struct sdhci_host *host = mmc_priv(mmc); + bool auto_cmd12 = (host->quirks & SDHCI_QUIRK_MULTIBLOCK_READ_ACMD12); + + if (mrq->data && auto_cmd12) { + if (mmc_is_ffu_cmd(mrq->cmd)) + host->flags &= ~SDHCI_AUTO_CMD12; + else + host->flags |= SDHCI_AUTO_CMD12; + } +} + +static void sdhci_msm_request(struct mmc_host *mmc, struct mmc_request *mrq) +{ + sdhci_msm_check_auto_cmd12(mmc, mrq); + + sdhci_request(mmc, mrq); +} + #define DRIVER_NAME "sdhci_msm" #define SDHCI_MSM_DUMP(f, x...) \ pr_err("%s: " DRIVER_NAME ": " f, mmc_hostname(host->mmc), ## x) @@ -2638,6 +2659,8 @@ static int sdhci_msm_probe(struct platform_device *pdev) MSM_MMC_AUTOSUSPEND_DELAY_MS); pm_runtime_use_autosuspend(&pdev->dev); + host->mmc_host_ops.request = sdhci_msm_request; + host->mmc_host_ops.start_signal_voltage_switch = sdhci_msm_start_signal_voltage_switch; host->mmc_host_ops.execute_tuning = sdhci_msm_execute_tuning;
Some platforms generate auto command error interrupt when it shouldn't, e.g. auto-cmd12 while in close-ended ffu sequence. I encounterd this issue while testing fwup on HP Chromebook x2, qualcomm based QC-7c, code name for board - strongbad. Instead of a quirk, hook the request function of the msm ops, so it'll disable auto-cmd12 while close-ended ffu is in progress. Signed-off-by: Avri Altman <avri.altman@wdc.com> --- drivers/mmc/host/sdhci-msm.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+)