omap_hsmmc: set open drain bit correctly
authorDenis Karpov <[email protected]>
Tue, 22 Sep 2009 23:44:44 +0000 (16:44 -0700)
committerLinus Torvalds <[email protected]>
Wed, 23 Sep 2009 14:39:34 +0000 (07:39 -0700)
The code could set the bit to 1 but not reset it to 0.

Signed-off-by: Denis Karpov <[email protected]>
Signed-off-by: Adrian Hunter <[email protected]>
Acked-by: Matt Fleming <[email protected]>
Cc: Ian Molton <[email protected]>
Cc: "Roberto A. Foglietta" <[email protected]>
Cc: Jarkko Lavinen <[email protected]>
Cc: Denis Karpov <[email protected]>
Cc: Pierre Ossman <[email protected]>
Cc: Philip Langdale <[email protected]>
Cc: "Madhusudhan" <[email protected]>
Cc: <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
drivers/mmc/host/omap_hsmmc.c

index 74d506a6ffec705a12a5bbbfeb3ba2a5457e2cff..59f001090332e2ea2470f0471a5606e71b14a381 100644 (file)
@@ -1118,9 +1118,11 @@ static void omap_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
        if (do_send_init_stream)
                send_init_stream(host);
 
+       con = OMAP_HSMMC_READ(host->base, CON);
        if (ios->bus_mode == MMC_BUSMODE_OPENDRAIN)
-               OMAP_HSMMC_WRITE(host->base, CON,
-                               OMAP_HSMMC_READ(host->base, CON) | OD);
+               OMAP_HSMMC_WRITE(host->base, CON, con | OD);
+       else
+               OMAP_HSMMC_WRITE(host->base, CON, con & ~OD);
 
        mmc_host_lazy_disable(host->mmc);
 }