]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
mmc: SDHI: add SoC specific workaround via HW version
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Wed, 20 Nov 2013 08:31:13 +0000 (00:31 -0800)
committerChris Ball <chris@printf.net>
Mon, 13 Jan 2014 17:48:24 +0000 (12:48 -0500)
One of Renesas SDHI chip needs workaround to use it, and, we can judge
it based on chip version.  This patch adds very quick-hack workaround
method, since we still don't know how many chips need workaround in
the future.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
drivers/mmc/host/sh_mobile_sdhi.c
include/linux/mmc/tmio.h

index 38553ae68e3a90780363eccc4883dfede85dfef1..2d6ce257a2737c7a55b444d51858d392eda0f97b 100644 (file)
@@ -33,6 +33,8 @@
 
 #include "tmio_mmc.h"
 
+#define EXT_ACC           0xe4
+
 struct sh_mobile_sdhi_of_data {
        unsigned long tmio_flags;
 };
@@ -137,6 +139,7 @@ static int sh_mobile_sdhi_probe(struct platform_device *pdev)
        int irq, ret, i = 0;
        bool multiplexed_isr = true;
        struct tmio_mmc_dma *dma_priv;
+       u16 ver;
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
        if (!res)
@@ -218,6 +221,14 @@ static int sh_mobile_sdhi_probe(struct platform_device *pdev)
        if (ret < 0)
                goto eprobe;
 
+       /*
+        * FIXME:
+        * this Workaround can be more clever method
+        */
+       ver = sd_ctrl_read16(host, CTL_VERSION);
+       if (ver == 0xCB0D)
+               sd_ctrl_write16(host, EXT_ACC, 1);
+
        /*
         * Allow one or more specific (named) ISRs or
         * one or more multiplexed (un-named) ISRs.
index a1c1f321e519d4b015255dd06f1bdec87511d263..84d9053b5dca3ef453ac611fd6b223c02e1903c6 100644 (file)
@@ -33,6 +33,7 @@
 #define CTL_SDIO_IRQ_MASK 0x38
 #define CTL_DMA_ENABLE 0xd8
 #define CTL_RESET_SD 0xe0
+#define CTL_VERSION 0xe2
 #define CTL_SDIO_REGS 0x100
 #define CTL_CLK_AND_WAIT_CTL 0x138
 #define CTL_RESET_SDIO 0x1e0