From a5b64f60e69a1bb4ec15cf0d7a2aeed41185b000 Mon Sep 17 00:00:00 2001 From: John Crispin Date: Fri, 2 Oct 2015 10:52:32 +0000 Subject: [PATCH] ramips: add CD polling to sd driver Signed-off-by: John Crispin Backport of r46475 git-svn-id: svn://svn.openwrt.org/openwrt/branches/chaos_calmer@47098 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- ...mmc-MIPS-ralink-add-sdhci-for-mt7620a-SoC.patch | 27 ++++++++++++---------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/target/linux/ramips/patches-3.18/0053-mmc-MIPS-ralink-add-sdhci-for-mt7620a-SoC.patch b/target/linux/ramips/patches-3.18/0053-mmc-MIPS-ralink-add-sdhci-for-mt7620a-SoC.patch index 2aab825d6e..e8086b1358 100644 --- a/target/linux/ramips/patches-3.18/0053-mmc-MIPS-ralink-add-sdhci-for-mt7620a-SoC.patch +++ b/target/linux/ramips/patches-3.18/0053-mmc-MIPS-ralink-add-sdhci-for-mt7620a-SoC.patch @@ -25,7 +25,7 @@ Signed-off-by: John Crispin --- a/drivers/mmc/host/Kconfig +++ b/drivers/mmc/host/Kconfig -@@ -773,3 +773,5 @@ config MMC_SUNXI +@@ -773,3 +773,5 @@ help This selects support for the SD/MMC Host Controller on Allwinner sunxi SoCs. @@ -1760,7 +1760,7 @@ Signed-off-by: John Crispin + --- /dev/null +++ b/drivers/mmc/host/mtk-mmc/sd.c -@@ -0,0 +1,3047 @@ +@@ -0,0 +1,3050 @@ +/* Copyright Statement: + * + * This software/firmware and related documentation ("MediaTek Software") are @@ -1821,6 +1821,7 @@ Signed-off-by: John Crispin +#include +#include +#include ++#include + +#define MSDC_SMPL_FALLING (1) +#define MSDC_CD_PIN_EN (1 << 0) /* card detection pin is wired */ @@ -1916,6 +1917,8 @@ Signed-off-by: John Crispin +static struct msdc_regs *msdc_reg[HOST_MAX_NUM]; +#endif + ++static int mtk_sw_poll; ++ +//================================= +#define PERI_MSDC0_PDN (15) +//#define PERI_MSDC1_PDN (16) @@ -2331,7 +2334,7 @@ Signed-off-by: John Crispin + spin_lock(&host->lock); + + if (hw->get_cd_status) { // NULL -+ inserted = hw->get_cd_status(); ++ inserted = hw->get_cd_status(); + } else { + status = sdr_read32(MSDC_PS); + inserted = (status & MSDC_PS_CDSTS) ? 0 : 1; @@ -2401,7 +2404,7 @@ Signed-off-by: John Crispin + //u8 clksrc = hw->clk_src; + + if (!hz) { // set mmc system clock to 0 ? -+ ERR_MSG("set mclk to 0!!!"); ++ //ERR_MSG("set mclk to 0!!!"); + msdc_reset(); + return; + } @@ -3899,7 +3902,7 @@ Signed-off-by: John Crispin + + if (msdc_do_request(mmc,mrq)) { + if(host->hw->flags & MSDC_REMOVABLE && mrq->data && mrq->data->error) { -+ msdc_tune_request(mmc,mrq); ++ //msdc_tune_request(mmc,mrq); + } + } + @@ -4148,10 +4151,9 @@ Signed-off-by: John Crispin + + /* card change interrupt */ + if (intsts & MSDC_INT_CDSC){ -+#if defined CONFIG_MTK_MMC_CD_POLL -+ return IRQ_HANDLED; -+#endif -+ IRQ_MSG("MSDC_INT_CDSC irq<0x%.8x>", intsts); ++ if (mtk_sw_poll) ++ return IRQ_HANDLED; ++ IRQ_MSG("MSDC_INT_CDSC irq<0x%.8x>", intsts); +#if 0 /* ---/+++ by chhung: fix slot mechanical bounce issue */ + tasklet_hi_schedule(&host->card_tasklet); +#else @@ -4532,9 +4534,10 @@ Signed-off-by: John Crispin + if ((hw->flags & MSDC_SDIO_IRQ) || (hw->flags & MSDC_EXT_SDIO_IRQ)) + mmc->caps |= MMC_CAP_SDIO_IRQ; /* yes for sdio */ + -+#if defined CONFIG_MTK_MMC_CD_POLL -+ mmc->caps |= MMC_CAP_NEEDS_POLL; -+#endif ++ mtk_sw_poll = of_property_read_bool(pdev->dev.of_node, "mediatek,cd-poll"); ++ ++ if (mtk_sw_poll) ++ mmc->caps |= MMC_CAP_NEEDS_POLL; + + /* MMC core transfer sizes tunable parameters */ +#if LINUX_VERSION_CODE > KERNEL_VERSION(3,10,0) -- 2.11.0