From: Weijie Gao Date: Wed, 25 Sep 2019 09:45:38 +0000 (+0800) Subject: mmc: mtk-sd: add a dts property cd-active-high for builtin-cd mode X-Git-Tag: v2020.01-rc1~4^2~6 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=77ebea23c374330e6bf2d9db3c8d2943d3d34fe8;p=oweals%2Fu-boot.git mmc: mtk-sd: add a dts property cd-active-high for builtin-cd mode 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 --- diff --git a/drivers/mmc/mtk-sd.c b/drivers/mmc/mtk-sd.c index 7069fe8948..ffd647fac7 100644 --- a/drivers/mmc/mtk-sd.c +++ b/drivers/mmc/mtk-sd.c @@ -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; }