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 21:56:26 +0800 [thread overview]
Message-ID: <52D6938A.9050806@linaro.org> (raw)
In-Reply-To: <001c01cf11ed$039b6270$0ad22750$%jun@samsung.com>
On 01/15/2014 08:26 PM, Seungwon Jeon wrote:
>>>> @@ -1033,7 +1033,8 @@ 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;
>>>> - int gpio_cd = !mmc_gpio_get_cd(mmc);
>>>> + 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)
>>>> @@ -1041,11 +1042,12 @@ 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;
>>> !!gpio_cd or gpio_cd is correct, isn't it?
>>>
>>
>> No, mmc_gpio_get_cd(mmc) has to revert.
> I'm missing something?
> If card is detected, mmc_gpio_get_cd() returns non-zero, right?
> I guess gpio_cd should be kept.
>
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".
--- a/Documentation/devicetree/bindings/mmc/synopsys-dw-mshc.txt
+++ b/Documentation/devicetree/bindings/mmc/synopsys-dw-mshc.txt
@@ -73,6 +73,8 @@ Optional properties:
+* caps2-mmc-cd-active-low: cd pin is low when card active
+
diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
+ if (of_find_property(np, "caps2-mmc-cd-active-low", NULL))
+ pdata->caps2 |= MMC_CAP2_CD_ACTIVE_HIGH;
+
But it looks strange "cd-active-low" describing "CD_ACTIVE_HIGH" flag.
When card active, cd = 0, and ACTIVE_HIGH is required to make
mmc_gpio_get_cd return 1.
int mmc_gpio_get_cd(struct mmc_host *host)
{
return !gpio_get_value_cansleep(ctx->cd_gpio) ^
!!(host->caps2 & MMC_CAP2_CD_ACTIVE_HIGH);
}
Thanks
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 21:56:26 +0800 [thread overview]
Message-ID: <52D6938A.9050806@linaro.org> (raw)
In-Reply-To: <001c01cf11ed$039b6270$0ad22750$%jun@samsung.com>
On 01/15/2014 08:26 PM, Seungwon Jeon wrote:
>>>> @@ -1033,7 +1033,8 @@ 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;
>>>> - int gpio_cd = !mmc_gpio_get_cd(mmc);
>>>> + 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)
>>>> @@ -1041,11 +1042,12 @@ 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;
>>> !!gpio_cd or gpio_cd is correct, isn't it?
>>>
>>
>> No, mmc_gpio_get_cd(mmc) has to revert.
> I'm missing something?
> If card is detected, mmc_gpio_get_cd() returns non-zero, right?
> I guess gpio_cd should be kept.
>
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".
--- a/Documentation/devicetree/bindings/mmc/synopsys-dw-mshc.txt
+++ b/Documentation/devicetree/bindings/mmc/synopsys-dw-mshc.txt
@@ -73,6 +73,8 @@ Optional properties:
+* caps2-mmc-cd-active-low: cd pin is low when card active
+
diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
+ if (of_find_property(np, "caps2-mmc-cd-active-low", NULL))
+ pdata->caps2 |= MMC_CAP2_CD_ACTIVE_HIGH;
+
But it looks strange "cd-active-low" describing "CD_ACTIVE_HIGH" flag.
When card active, cd = 0, and ACTIVE_HIGH is required to make
mmc_gpio_get_cd return 1.
int mmc_gpio_get_cd(struct mmc_host *host)
{
return !gpio_get_value_cansleep(ctx->cd_gpio) ^
!!(host->caps2 & MMC_CAP2_CD_ACTIVE_HIGH);
}
Thanks
next prev parent reply other threads:[~2014-01-15 13:56 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 [this message]
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
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=52D6938A.9050806@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.