From: Jaehoon Chung <jh80.chung@samsung.com>
To: Shawn Lin <shawn.lin@rock-chips.com>,
Ulf Hansson <ulf.hansson@linaro.org>
Cc: linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2] mmc: dw_mmc: remove DW_MCI_QUIRK_BROKEN_CARD_DETECTION quirk
Date: Fri, 22 Jan 2016 11:06:38 +0900 [thread overview]
Message-ID: <56A18EAE.6030900@samsung.com> (raw)
In-Reply-To: <1453359172-5977-1-git-send-email-shawn.lin@rock-chips.com>
Hi, Shawn.
On 01/21/2016 03:52 PM, Shawn Lin wrote:
> dw_mmc already use mmc_of_parse to get "broken-cd" property,
> but it considered "broken-cd" to be a quirk in its driver. We
> don't need this quirk here, and just take what we need from
> mmc->caps.
I have reverted the previous version, this version looks good to me.
I will apply this.
With Exynos SoCs,
Tested-by: Jaehoon Chung <jh80.chung@samsung.com>
Best Regards,
Jaehoon Chung
>
> Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
>
> ---
>
> Changes in v2:
> - fix wrong using of cur_slot
>
> drivers/mmc/host/dw_mmc.c | 35 ++++++++++-------------------------
> include/linux/mmc/dw_mmc.h | 4 +---
> 2 files changed, 11 insertions(+), 28 deletions(-)
>
> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
> index 7128351..96f173b 100644
> --- a/drivers/mmc/host/dw_mmc.c
> +++ b/drivers/mmc/host/dw_mmc.c
> @@ -1450,12 +1450,11 @@ static int dw_mci_get_cd(struct mmc_host *mmc)
> {
> int present;
> struct dw_mci_slot *slot = mmc_priv(mmc);
> - struct dw_mci_board *brd = slot->host->pdata;
> struct dw_mci *host = slot->host;
> int gpio_cd = mmc_gpio_get_cd(mmc);
>
> /* Use platform get_cd function, else try onboard card detect */
> - if ((brd->quirks & DW_MCI_QUIRK_BROKEN_CARD_DETECTION) ||
> + if ((mmc->caps & MMC_CAP_NEEDS_POLL) ||
> (mmc->caps & MMC_CAP_NONREMOVABLE))
> present = 1;
> else if (!IS_ERR_VALUE(gpio_cd))
> @@ -2840,23 +2839,13 @@ static void dw_mci_dto_timer(unsigned long arg)
> }
>
> #ifdef CONFIG_OF
> -static struct dw_mci_of_quirks {
> - char *quirk;
> - int id;
> -} of_quirks[] = {
> - {
> - .quirk = "broken-cd",
> - .id = DW_MCI_QUIRK_BROKEN_CARD_DETECTION,
> - },
> -};
> -
> static struct dw_mci_board *dw_mci_parse_dt(struct dw_mci *host)
> {
> struct dw_mci_board *pdata;
> struct device *dev = host->dev;
> struct device_node *np = dev->of_node;
> const struct dw_mci_drv_data *drv_data = host->drv_data;
> - int idx, ret;
> + int ret;
> u32 clock_frequency;
>
> pdata = devm_kzalloc(dev, sizeof(*pdata), GFP_KERNEL);
> @@ -2871,11 +2860,6 @@ static struct dw_mci_board *dw_mci_parse_dt(struct dw_mci *host)
> pdata->num_slots = 1;
> }
>
> - /* get quirks */
> - for (idx = 0; idx < ARRAY_SIZE(of_quirks); idx++)
> - if (of_get_property(np, of_quirks[idx].quirk, NULL))
> - pdata->quirks |= of_quirks[idx].id;
> -
> if (of_property_read_u32(np, "fifo-depth", &pdata->fifo_depth))
> dev_info(dev,
> "fifo-depth property not found, using value of FIFOTH register as default\n");
> @@ -2908,18 +2892,19 @@ static struct dw_mci_board *dw_mci_parse_dt(struct dw_mci *host)
>
> static void dw_mci_enable_cd(struct dw_mci *host)
> {
> - struct dw_mci_board *brd = host->pdata;
> unsigned long irqflags;
> u32 temp;
> int i;
> + struct dw_mci_slot *slot;
>
> - /* No need for CD if broken card detection */
> - if (brd->quirks & DW_MCI_QUIRK_BROKEN_CARD_DETECTION)
> - return;
> -
> - /* No need for CD if all slots have a non-error GPIO */
> + /*
> + * No need for CD if all slots have a non-error GPIO
> + * as well as broken card detection is found.
> + */
> for (i = 0; i < host->num_slots; i++) {
> - struct dw_mci_slot *slot = host->slot[i];
> + slot = host->slot[i];
> + if (slot->mmc->caps & MMC_CAP_NEEDS_POLL)
> + return;
>
> if (IS_ERR_VALUE(mmc_gpio_get_cd(slot->mmc)))
> break;
> diff --git a/include/linux/mmc/dw_mmc.h b/include/linux/mmc/dw_mmc.h
> index 89df7ab..250d822 100644
> --- a/include/linux/mmc/dw_mmc.h
> +++ b/include/linux/mmc/dw_mmc.h
> @@ -235,10 +235,8 @@ struct dw_mci_dma_ops {
> };
>
> /* IP Quirks/flags. */
> -/* Unreliable card detection */
> -#define DW_MCI_QUIRK_BROKEN_CARD_DETECTION BIT(0)
> /* Timer for broken data transfer over scheme */
> -#define DW_MCI_QUIRK_BROKEN_DTO BIT(1)
> +#define DW_MCI_QUIRK_BROKEN_DTO BIT(0)
>
> struct dma_pdata;
>
>
prev parent reply other threads:[~2016-01-22 2:06 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-21 6:52 [PATCH v2] mmc: dw_mmc: remove DW_MCI_QUIRK_BROKEN_CARD_DETECTION quirk Shawn Lin
2016-01-22 2:06 ` Jaehoon Chung [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=56A18EAE.6030900@samsung.com \
--to=jh80.chung@samsung.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mmc@vger.kernel.org \
--cc=shawn.lin@rock-chips.com \
--cc=ulf.hansson@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.