[PATCHv8 5/5] mmc: dw_mmc: replace "disable-wp" from slot's quirk to host's quirk

Doug Anderson dianders at google.com
Wed Jul 30 08:57:28 PDT 2014


Jaehoon,

On Wed, Jul 30, 2014 at 4:05 AM, Jaehoon Chung <jh80.chung at samsung.com> wrote:
> Replaced the "disable-wp" into host's quirks.
> (Because the slot-node is removed at dt-file.)
>
> Signed-off-by: Jaehoon Chung <jh80.chung at samsung.com>
> Tested-by: Sachin Kamat <sachin.kamat at samsung.com>
> Acked-by: Seungwon Jeon <tgih.jun at samsung.com>
> ---
>  drivers/mmc/host/dw_mmc.c  |    8 +++++++-
>  include/linux/mmc/dw_mmc.h |    2 ++
>  2 files changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
> index 1ac227c..8d9edc6 100644
> --- a/drivers/mmc/host/dw_mmc.c
> +++ b/drivers/mmc/host/dw_mmc.c
> @@ -997,7 +997,10 @@ static int dw_mci_get_ro(struct mmc_host *mmc)
>         int gpio_ro = mmc_gpio_get_ro(mmc);
>
>         /* Use platform get_ro function, else try on board write protect */
> -       if (slot->quirks & DW_MCI_SLOT_QUIRK_NO_WRITE_PROTECT)
> +       if (slot->quirks & DW_MCI_SLOT_QUIRK_NO_WRITE_PROTECT) {
> +               dev_warn(slot->host->dev, "Recommend not to use 'disable-wp'"
> +                               "into slot-node. Change your dt-file!!");
> +       } else if (slot->host->quirks & DW_MCI_QUIRK_NO_WRITE_PROTECT)

This isn't what I meant.  I meant that
"DW_MCI_SLOT_QUIRK_NO_WRITE_PROTECT" should continue to work normally
but print a warning once at bootup.  In other words, this code should
be:

-       if (slot->quirks & DW_MCI_SLOT_QUIRK_NO_WRITE_PROTECT)
+       if ((slot->quirks & DW_MCI_SLOT_QUIRK_NO_WRITE_PROTECT) ||
+           (slot->host->quirks & DW_MCI_QUIRK_NO_WRITE_PROTECT)) {

Then add the warning in "dw_mci_of_get_slot_quirks" which is only
called once at init time.  You can warn if ANY slot quirks are
actually applied, like:

for (idx = 0; idx < ARRAY_SIZE(of_slot_quirks); idx++)
  if (of_get_property(np, of_slot_quirks[idx].quirk, NULL)) {
    dev_warn(dev, "Slot quirk %s is deprecated\n", of_slot_quirks[idx].quirk);
    quirks |= of_slot_quirks[idx].id;
  }


>                 read_only = 0;
>         else if (!IS_ERR_VALUE(gpio_ro))
>                 read_only = gpio_ro;
> @@ -2238,6 +2241,9 @@ static struct dw_mci_of_quirks {
>         {
>                 .quirk  = "broken-cd",
>                 .id     = DW_MCI_QUIRK_BROKEN_CARD_DETECTION,
> +       }, {
> +               .quirk  = "disable-wp",
> +               .id     = DW_MCI_QUIRK_NO_WRITE_PROTECT,
>         },
>  };

If you fix it like I say, then this patch should actually be patch #2
in your series and can be applied _before_ the device tree files.
That means you could land patch #1 and patch #2 right away without
even getting acks for the dts changes.  ...and if the dts changes have
conflicts they can be resolved later without blocking this patch.

-Doug



More information about the linux-arm-kernel mailing list