ralink: the mmc driver can now handle CD lines that are active low
Signed-off-by: John Crispin <blogic@openwrt.org> SVN-Revision: 47074
This commit is contained in:
parent
9e1268b168
commit
e1b1b0cbfd
1 changed files with 14 additions and 4 deletions
|
@ -25,7 +25,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||||
|
|
||||||
--- a/drivers/mmc/host/Kconfig
|
--- a/drivers/mmc/host/Kconfig
|
||||||
+++ b/drivers/mmc/host/Kconfig
|
+++ b/drivers/mmc/host/Kconfig
|
||||||
@@ -773,3 +773,5 @@ config MMC_SUNXI
|
@@ -773,3 +773,5 @@
|
||||||
help
|
help
|
||||||
This selects support for the SD/MMC Host Controller on
|
This selects support for the SD/MMC Host Controller on
|
||||||
Allwinner sunxi SoCs.
|
Allwinner sunxi SoCs.
|
||||||
|
@ -1760,7 +1760,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||||
+
|
+
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/drivers/mmc/host/mtk-mmc/sd.c
|
+++ b/drivers/mmc/host/mtk-mmc/sd.c
|
||||||
@@ -0,0 +1,3050 @@
|
@@ -0,0 +1,3060 @@
|
||||||
+/* Copyright Statement:
|
+/* Copyright Statement:
|
||||||
+ *
|
+ *
|
||||||
+ * This software/firmware and related documentation ("MediaTek Software") are
|
+ * This software/firmware and related documentation ("MediaTek Software") are
|
||||||
|
@ -1919,6 +1919,8 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||||
+
|
+
|
||||||
+static int mtk_sw_poll;
|
+static int mtk_sw_poll;
|
||||||
+
|
+
|
||||||
|
+static int cd_active_low = 1;
|
||||||
|
+
|
||||||
+//=================================
|
+//=================================
|
||||||
+#define PERI_MSDC0_PDN (15)
|
+#define PERI_MSDC0_PDN (15)
|
||||||
+//#define PERI_MSDC1_PDN (16)
|
+//#define PERI_MSDC1_PDN (16)
|
||||||
|
@ -2337,7 +2339,10 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||||
+ inserted = hw->get_cd_status();
|
+ inserted = hw->get_cd_status();
|
||||||
+ } else {
|
+ } else {
|
||||||
+ status = sdr_read32(MSDC_PS);
|
+ status = sdr_read32(MSDC_PS);
|
||||||
|
+ if (cd_active_low)
|
||||||
+ inserted = (status & MSDC_PS_CDSTS) ? 0 : 1;
|
+ inserted = (status & MSDC_PS_CDSTS) ? 0 : 1;
|
||||||
|
+ else
|
||||||
|
+ inserted = (status & MSDC_PS_CDSTS) ? 1 : 0;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+#if 0
|
+#if 0
|
||||||
|
@ -4081,7 +4086,11 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||||
+#if 0
|
+#if 0
|
||||||
+ present = host->card_inserted; /* why not read from H/W: Fix me*/
|
+ present = host->card_inserted; /* why not read from H/W: Fix me*/
|
||||||
+#else
|
+#else
|
||||||
|
+ // CD
|
||||||
|
+ if (cd_active_low)
|
||||||
+ present = (sdr_read32(MSDC_PS) & MSDC_PS_CDSTS) ? 0 : 1;
|
+ present = (sdr_read32(MSDC_PS) & MSDC_PS_CDSTS) ? 0 : 1;
|
||||||
|
+ else
|
||||||
|
+ present = (sdr_read32(MSDC_PS) & MSDC_PS_CDSTS) ? 1 : 0;
|
||||||
+ host->card_inserted = present;
|
+ host->card_inserted = present;
|
||||||
+#endif
|
+#endif
|
||||||
+ spin_unlock_irqrestore(&host->lock, flags);
|
+ spin_unlock_irqrestore(&host->lock, flags);
|
||||||
|
@ -4534,6 +4543,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||||
+ if ((hw->flags & MSDC_SDIO_IRQ) || (hw->flags & MSDC_EXT_SDIO_IRQ))
|
+ if ((hw->flags & MSDC_SDIO_IRQ) || (hw->flags & MSDC_EXT_SDIO_IRQ))
|
||||||
+ mmc->caps |= MMC_CAP_SDIO_IRQ; /* yes for sdio */
|
+ mmc->caps |= MMC_CAP_SDIO_IRQ; /* yes for sdio */
|
||||||
+
|
+
|
||||||
|
+ cd_active_low = !of_property_read_bool(pdev->dev.of_node, "mediatek,cd-high");
|
||||||
+ mtk_sw_poll = of_property_read_bool(pdev->dev.of_node, "mediatek,cd-poll");
|
+ mtk_sw_poll = of_property_read_bool(pdev->dev.of_node, "mediatek,cd-poll");
|
||||||
+
|
+
|
||||||
+ if (mtk_sw_poll)
|
+ if (mtk_sw_poll)
|
||||||
|
|
Loading…
Reference in a new issue