mmc: mtk-sd: add a dts property cd-active-high for builtin-cd mode
authorWeijie Gao <weijie.gao@mediatek.com>
Wed, 25 Sep 2019 09:45:38 +0000 (17:45 +0800)
committerDaniel Schwierzeck <daniel.schwierzeck@gmail.com>
Fri, 25 Oct 2019 15:20:44 +0000 (17:20 +0200)
This patch adds a dts property cd-active-high for builtin-cd mode to make
it configurable instead of using hardcoded active-low.

Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
drivers/mmc/mtk-sd.c

index 7069fe8..ffd647f 100644 (file)
@@ -270,6 +270,7 @@ struct msdc_host {
 
        /* whether to use gpio detection or built-in hw detection */
        bool builtin_cd;
+       bool cd_active_high;
 
        /* card detection / write protection GPIOs */
 #if CONFIG_IS_ENABLED(DM_GPIO)
@@ -852,7 +853,9 @@ static int msdc_ops_get_cd(struct udevice *dev)
 
        if (host->builtin_cd) {
                val = readl(&host->base->msdc_ps);
-               return !(val & MSDC_PS_CDSTS);
+               val = !!(val & MSDC_PS_CDSTS);
+
+               return !val ^ host->cd_active_high;
        }
 
 #if CONFIG_IS_ENABLED(DM_GPIO)
@@ -1355,6 +1358,7 @@ static int msdc_ofdata_to_platdata(struct udevice *dev)
        host->latch_ck = dev_read_u32_default(dev, "latch-ck", 0);
        host->r_smpl = dev_read_u32_default(dev, "r_smpl", 0);
        host->builtin_cd = dev_read_u32_default(dev, "builtin-cd", 0);
+       host->cd_active_high = dev_read_bool(dev, "cd-active-high");
 
        return 0;
 }