projects/linux·commit fbf6a5fc

sdhci-of: Fix the wrong accessor to HOSTVER register

fbf6a5fc · Dave Liu <[email protected]> · 2009-05-06 18:40:07 +08:00

Freescale eSDHC controller has the special order for
the HOST version register. that is not same as the other's
registers. The address of HOSTVER in spec is 0xFE, and
we need use the in_be16(0xFE) to access it, not in_be16(0xFC).

Signed-off-by: Dave Liu <[email protected]>
Acked-by: Anton Vorontsov <[email protected]>
Signed-off-by: Pierre Ossman <[email protected]>
Commit
fbf6a5fcbcc2248f1e676f7a0a7d49cd4b535d2a
Parents
a6d297f0

Changes

1 files changed · +7 −1

FileStatusAddDelContent
drivers/mmc/host/sdhci-of.cmodified+7−1View file

drivers/mmc/host/sdhci-of.c

View file
diff --git a/drivers/mmc/host/sdhci-of.c b/drivers/mmc/host/sdhci-of.c
index 09cc597..128c614 100644
--- a/drivers/mmc/host/sdhci-of.c
+++ b/drivers/mmc/host/sdhci-of.c
@@ -55,7 +55,13 @@ static u32 esdhc_readl(struct sdhci_host *host, int reg)
static u16 esdhc_readw(struct sdhci_host *host, int reg)
{
- return in_be16(host->ioaddr + (reg ^ 0x2));
+ u16 ret;
+
+ if (unlikely(reg == SDHCI_HOST_VERSION))
+ ret = in_be16(host->ioaddr + reg);
+ else
+ ret = in_be16(host->ioaddr + (reg ^ 0x2));
+ return ret;
}
static u8 esdhc_readb(struct sdhci_host *host, int reg)