mmc: dw_mmc: add quirk to indicate missing write protect line
authorThomas Abraham <thomas.abraham@linaro.org>
Mon, 17 Sep 2012 18:16:39 +0000 (18:16 +0000)
committerChris Ball <cjb@laptop.org>
Wed, 3 Oct 2012 14:05:16 +0000 (10:05 -0400)
If the write protect pad of the controller is not connected to the write
protect pin of the slot, the driver should be notified of this condition
so that incorrect check for write protection by reading the WRTORT
register can avoided. The get_ro platform callback can be used for in
such cases, but with device tree support enabled, such platform callbacks
cannot be supported.

Add a new quirk for notifying the driver about the missing write protect
line so the driver can assume that the card write protection is disabled.

Signed-off-by: Thomas Abraham <thomas.abraham@linaro.org>
Acked-by: Will Newton <will.newton@imgtec.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
drivers/mmc/host/dw_mmc.c
include/linux/mmc/dw_mmc.h

index de45ad24becb705b10aa38d117fbe751ccbd6282..455a155406bc838164c867e23ef1e1c20a5de6a3 100644 (file)
@@ -830,7 +830,9 @@ static int dw_mci_get_ro(struct mmc_host *mmc)
        struct dw_mci_board *brd = slot->host->pdata;
 
        /* Use platform get_ro function, else try on board write protect */
-       if (brd->get_ro)
+       if (brd->quirks & DW_MCI_QUIRK_NO_WRITE_PROTECT)
+               read_only = 0;
+       else if (brd->get_ro)
                read_only = brd->get_ro(slot->id);
        else
                read_only =
index 787ad569c99b7f7d02ac97d193e816bb1623dbc5..b72e4aa91c11a15ff62fa60c0d4bda2b93ba4d4b 100644 (file)
@@ -205,7 +205,8 @@ struct dw_mci_dma_ops {
 #define DW_MCI_QUIRK_HIGHSPEED                 BIT(2)
 /* Unreliable card detection */
 #define DW_MCI_QUIRK_BROKEN_CARD_DETECTION     BIT(3)
-
+/* Write Protect detection not available */
+#define DW_MCI_QUIRK_NO_WRITE_PROTECT          BIT(4)
 
 struct dma_pdata;