All of lore.kernel.org
 help / color / mirror / Atom feed
From: zhangfei <zhangfei.gao@linaro.org>
To: Seungwon Jeon <tgih.jun@samsung.com>,
	'Kevin Hilman' <khilman@linaro.org>,
	'Sachin Kamat' <sachin.kamat@linaro.org>,
	'Chris Ball' <cjb@laptop.org>, 'Arnd Bergmann' <arnd@arndb.de>,
	'Mike Turquette' <mturquette@linaro.org>,
	'Jaehoon Chung' <jh80.chung@samsung.com>
Cc: linux-mmc@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	patches@linaro.org
Subject: Re: [PATCH] mmc: dw_mmc: fix dw_mci_get_cd
Date: Wed, 15 Jan 2014 23:32:15 +0800	[thread overview]
Message-ID: <52D6A9FF.3000603@linaro.org> (raw)
In-Reply-To: <002c01cf11ff$6790a8a0$36b1f9e0$%jun@samsung.com>


On 01/15/2014 10:38 PM, Seungwon Jeon wrote:
>> Hmm, looks you are right.
>> Though not see clearly mmc_gpio_get_cd declaratoin, other drivers
>> directly set get_cd as mmc_gpio_get_cd.
>> .get_cd	= mmc_gpio_get_cd
>>
>> However, in our board cd =0 when card is deteced while cd=1 when card is
>> removed.
>> In order to mmc_gpio_get_cd return 1, MMC_CAP2_CD_ACTIVE_HIGH has to be
>> set, as well as new property "caps2-mmc-cd-active-low".
> 
> Ok, you could do more.
> mmc_gpio_get_cd() is expected to return non-zero if card is detection.

> I think your board seems not to use pull-up on GPIO line for card detection.
> So, MMC_CAP2_CD_ACTIVE_HIGH would be needed.

Unfortunately, the specific cd pin can not be configured.
Suspect on our board the cd =1 when card is inserted, can not measure as
no clear resister and need check with hardware guy tomorrow.

"cd-inverted" may be required as mentioned by Arnd.
Will update the patch as following if no problem.

diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
index 9ded62c8225e..8326e54b96a8 100644
--- a/drivers/mmc/host/dw_mmc.c
+++ b/drivers/mmc/host/dw_mmc.c
@@ -1042,7 +1042,7 @@ static int dw_mci_get_cd(struct mmc_host *mmc)
        else if (brd->get_cd)
                present = !brd->get_cd(slot->id);
        else if (!IS_ERR_VALUE(gpio_cd))
-               present = !gpio_cd;
+               present = gpio_cd ^ brd->cd_inverted;
        else
                present = (mci_readl(slot->host, CDETECT) & (1 << slot->id))
                        == 0 ? 1 : 0;
@@ -2414,6 +2414,9 @@ static struct dw_mci_board *dw_mci_parse_dt(struct
dw_mci *host)
        if (of_find_property(np, "caps2-mmc-hs200-1_2v", NULL))
                pdata->caps2 |= MMC_CAP2_HS200_1_2V_SDR;

+       if (of_get_property(np, "cd-inverted", NULL))
+               pdata->cd_inverted = 1;
+
        return pdata;
 }

diff --git a/include/linux/mmc/dw_mmc.h b/include/linux/mmc/dw_mmc.h
index 6ce7d2cd3c7a..4535282589ab 100644
--- a/include/linux/mmc/dw_mmc.h
+++ b/include/linux/mmc/dw_mmc.h
@@ -238,6 +238,7 @@ struct dw_mci_board {
        u32 caps;       /* Capabilities */
        u32 caps2;      /* More capabilities */
        u32 pm_caps;    /* PM capabilities */
+       u8 cd_inverted;

WARNING: multiple messages have this Message-ID (diff)
From: zhangfei.gao@linaro.org (zhangfei)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] mmc: dw_mmc: fix dw_mci_get_cd
Date: Wed, 15 Jan 2014 23:32:15 +0800	[thread overview]
Message-ID: <52D6A9FF.3000603@linaro.org> (raw)
In-Reply-To: <002c01cf11ff$6790a8a0$36b1f9e0$%jun@samsung.com>


On 01/15/2014 10:38 PM, Seungwon Jeon wrote:
>> Hmm, looks you are right.
>> Though not see clearly mmc_gpio_get_cd declaratoin, other drivers
>> directly set get_cd as mmc_gpio_get_cd.
>> .get_cd	= mmc_gpio_get_cd
>>
>> However, in our board cd =0 when card is deteced while cd=1 when card is
>> removed.
>> In order to mmc_gpio_get_cd return 1, MMC_CAP2_CD_ACTIVE_HIGH has to be
>> set, as well as new property "caps2-mmc-cd-active-low".
> 
> Ok, you could do more.
> mmc_gpio_get_cd() is expected to return non-zero if card is detection.

> I think your board seems not to use pull-up on GPIO line for card detection.
> So, MMC_CAP2_CD_ACTIVE_HIGH would be needed.

Unfortunately, the specific cd pin can not be configured.
Suspect on our board the cd =1 when card is inserted, can not measure as
no clear resister and need check with hardware guy tomorrow.

"cd-inverted" may be required as mentioned by Arnd.
Will update the patch as following if no problem.

diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
index 9ded62c8225e..8326e54b96a8 100644
--- a/drivers/mmc/host/dw_mmc.c
+++ b/drivers/mmc/host/dw_mmc.c
@@ -1042,7 +1042,7 @@ static int dw_mci_get_cd(struct mmc_host *mmc)
        else if (brd->get_cd)
                present = !brd->get_cd(slot->id);
        else if (!IS_ERR_VALUE(gpio_cd))
-               present = !gpio_cd;
+               present = gpio_cd ^ brd->cd_inverted;
        else
                present = (mci_readl(slot->host, CDETECT) & (1 << slot->id))
                        == 0 ? 1 : 0;
@@ -2414,6 +2414,9 @@ static struct dw_mci_board *dw_mci_parse_dt(struct
dw_mci *host)
        if (of_find_property(np, "caps2-mmc-hs200-1_2v", NULL))
                pdata->caps2 |= MMC_CAP2_HS200_1_2V_SDR;

+       if (of_get_property(np, "cd-inverted", NULL))
+               pdata->cd_inverted = 1;
+
        return pdata;
 }

diff --git a/include/linux/mmc/dw_mmc.h b/include/linux/mmc/dw_mmc.h
index 6ce7d2cd3c7a..4535282589ab 100644
--- a/include/linux/mmc/dw_mmc.h
+++ b/include/linux/mmc/dw_mmc.h
@@ -238,6 +238,7 @@ struct dw_mci_board {
        u32 caps;       /* Capabilities */
        u32 caps2;      /* More capabilities */
        u32 pm_caps;    /* PM capabilities */
+       u8 cd_inverted;

  reply	other threads:[~2014-01-15 15:32 UTC|newest]

Thread overview: 94+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-09 14:35 [PATCH v7 0/3] mmc: dw_mmc: add dw_mmc-k3 Zhangfei Gao
2014-01-09 14:35 ` Zhangfei Gao
2014-01-09 14:35 ` [PATCH 1/3] mmc: dw_mmc: use slot-gpio to handle cd pin Zhangfei Gao
2014-01-09 14:35   ` Zhangfei Gao
2014-01-09 14:38   ` Arnd Bergmann
2014-01-09 14:38     ` Arnd Bergmann
2014-01-14 15:58   ` Kevin Hilman
2014-01-14 15:58     ` Kevin Hilman
2014-01-14 17:23     ` Olof Johansson
2014-01-14 17:23       ` Olof Johansson
2014-01-15  1:09       ` zhangfei
2014-01-15  1:09         ` zhangfei
2014-01-15  5:16         ` zhangfei
2014-01-15  5:16           ` zhangfei
2014-01-15  7:15     ` [PATCH] mmc: dw_mmc: fix dw_mci_get_cd Zhangfei Gao
2014-01-15  7:15       ` Zhangfei Gao
2014-01-15  7:31       ` zhangfei
2014-01-15  7:31         ` zhangfei
2014-01-15 10:07       ` Zhangfei Gao
2014-01-15 10:07         ` Zhangfei Gao
2014-01-15 11:58         ` Seungwon Jeon
2014-01-15 11:58           ` Seungwon Jeon
2014-01-15 12:10           ` zhangfei
2014-01-15 12:10             ` zhangfei
2014-01-15 12:26             ` Seungwon Jeon
2014-01-15 12:26               ` Seungwon Jeon
2014-01-15 13:56               ` zhangfei
2014-01-15 13:56                 ` zhangfei
2014-01-15 13:59                 ` Arnd Bergmann
2014-01-15 13:59                   ` Arnd Bergmann
2014-01-15 14:20                   ` Arnd Bergmann
2014-01-15 14:20                     ` Arnd Bergmann
2014-01-15 15:36                     ` zhangfei
2014-01-15 15:36                       ` zhangfei
2014-01-15 16:01                   ` Russell King - ARM Linux
2014-01-15 16:01                     ` Russell King - ARM Linux
2014-01-15 16:07                     ` Arnd Bergmann
2014-01-15 16:07                       ` Arnd Bergmann
2014-01-15 16:22                       ` Russell King - ARM Linux
2014-01-15 16:22                         ` Russell King - ARM Linux
2014-01-16  2:10                         ` zhangfei
2014-01-16  2:10                           ` zhangfei
2014-01-16 11:12                         ` Arnd Bergmann
2014-01-16 11:12                           ` Arnd Bergmann
2014-01-16 11:25                           ` Russell King - ARM Linux
2014-01-16 11:25                             ` Russell King - ARM Linux
2014-01-15 14:38                 ` Seungwon Jeon
2014-01-15 14:38                   ` Seungwon Jeon
2014-01-15 15:32                   ` zhangfei [this message]
2014-01-15 15:32                     ` zhangfei
2014-01-15 15:51                     ` Zhangfei Gao
2014-01-15 15:51                       ` Zhangfei Gao
2014-01-15 15:59                       ` Russell King - ARM Linux
2014-01-15 15:59                         ` Russell King - ARM Linux
2014-01-15 15:54                     ` Arnd Bergmann
2014-01-15 15:54                       ` Arnd Bergmann
     [not found] ` <1389278112-7099-1-git-send-email-zhangfei.gao-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2014-01-09 14:35   ` [PATCH 2/3] mmc: dw_mmc: add dw_mmc-k3 for k3 platform Zhangfei Gao
2014-01-09 14:35     ` Zhangfei Gao
2014-01-09 14:45     ` Arnd Bergmann
2014-01-09 14:45       ` Arnd Bergmann
2014-01-10 13:39     ` Seungwon Jeon
2014-01-10 13:39       ` Seungwon Jeon
2014-01-10 14:12       ` zhangfei
2014-01-10 14:12         ` zhangfei
2014-01-13  2:09         ` Seungwon Jeon
2014-01-13  2:09           ` Seungwon Jeon
2014-01-13  2:37           ` zhangfei
2014-01-13  2:37             ` zhangfei
2014-01-13  5:32             ` Seungwon Jeon
2014-01-13  5:32               ` Seungwon Jeon
2014-01-13  8:30               ` zhangfei
2014-01-13  8:30                 ` zhangfei
2014-01-14  9:38                 ` Seungwon Jeon
2014-01-14  9:38                   ` Seungwon Jeon
2014-01-14  9:47                   ` zhangfei
2014-01-14  9:47                     ` zhangfei
2014-01-09 14:35 ` [PATCH 3/3] clk: hisilicon: add hi3620_mmc_clks Zhangfei Gao
2014-01-09 14:35   ` Zhangfei Gao
2014-01-09 14:38   ` Arnd Bergmann
2014-01-09 14:38     ` Arnd Bergmann
2014-01-10  3:41 ` [PATCH v7 0/3] mmc: dw_mmc: add dw_mmc-k3 Jaehoon Chung
2014-01-10  3:41   ` Jaehoon Chung
2014-01-12 16:35 ` Chris Ball
2014-01-12 16:35   ` Chris Ball
2014-01-13  1:00   ` Zhangfei Gao
2014-01-13  1:00     ` Zhangfei Gao
  -- strict thread matches above, loose matches on Subject: below --
2014-01-16  2:31 [PATCH v2] mmc: dw_mmc: fix dw_mci_get_cd Zhangfei Gao
2014-01-16 12:48 ` [PATCH] " Zhangfei Gao
2014-01-16 12:48   ` Zhangfei Gao
2014-01-16 18:29   ` Kevin Hilman
2014-01-16 18:29     ` Kevin Hilman
2014-01-17 12:35     ` Seungwon Jeon
2014-01-17 12:35       ` Seungwon Jeon
2014-01-17 14:25       ` Chris Ball
2014-01-17 14:25         ` Chris Ball

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=52D6A9FF.3000603@linaro.org \
    --to=zhangfei.gao@linaro.org \
    --cc=arnd@arndb.de \
    --cc=cjb@laptop.org \
    --cc=jh80.chung@samsung.com \
    --cc=khilman@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=mturquette@linaro.org \
    --cc=patches@linaro.org \
    --cc=sachin.kamat@linaro.org \
    --cc=tgih.jun@samsung.com \
    /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.