ramips: fix sd polling
authorQin Wei <support@vocore.io>
Sat, 16 May 2020 07:51:36 +0000 (15:51 +0800)
committerHauke Mehrtens <hauke@hauke-m.de>
Fri, 26 Jun 2020 22:19:13 +0000 (00:19 +0200)
This is fixed in 18.06, it appears again in 19.07.
Currently mt7628 sdcard driver do not support polling mode which is for
the device do not have card-detect pin to detect sd card insert. Without
this patch, device will not detect sdcard is inserted. This patch is a
fix of that.

Signed-off-by: Qin Wei <support@vocore.io>
target/linux/ramips/files/drivers/mmc/host/mtk-mmc/sd.c

index 8cbc87da3afcf3e774281c56150e92ff31634fe6..188e0155722e1b016937c2b994bf186d818964ab 100644 (file)
@@ -439,6 +439,8 @@ static void msdc_tasklet_card(struct work_struct *work)
                inserted = (status & MSDC_PS_CDSTS) ? 0 : 1;
        else
                inserted = (status & MSDC_PS_CDSTS) ? 1 : 0;
+       if (host->mmc->caps & MMC_CAP_NEEDS_POLL)
+               inserted = 1;
 
 #if 0
        change = host->card_inserted ^ inserted;
@@ -1857,6 +1859,8 @@ static int msdc_ops_get_cd(struct mmc_host *mmc)
                        present = (sdr_read32(MSDC_PS) & MSDC_PS_CDSTS) ? 0 : 1;
                else
                        present = (sdr_read32(MSDC_PS) & MSDC_PS_CDSTS) ? 1 : 0;
+               if (host->mmc->caps & MMC_CAP_NEEDS_POLL)
+                       present = 1;
                host->card_inserted = present;
 #endif
                spin_unlock_irqrestore(&host->lock, flags);