From: zhangfei gao <zhangfei.gao@gmail.com>
To: Philip Rakity <prakity@marvell.com>
Cc: Arindam Nath <arindam.nath@amd.com>,
"cjb@laptop.org" <cjb@laptop.org>,
"subhashj@codeaurora.org" <subhashj@codeaurora.org>,
"linux-mmc@vger.kernel.org" <linux-mmc@vger.kernel.org>,
"henry.su@amd.com" <henry.su@amd.com>,
"aaron.lu@amd.com" <aaron.lu@amd.com>,
"anath.amd@gmail.com" <anath.amd@gmail.com>
Subject: Re: [PATCH v4 12/15] sdhci pxa add platform specific code for UHS signaling
Date: Mon, 16 May 2011 01:57:53 -0400 [thread overview]
Message-ID: <BANLkTimE2R-Gz802zM7ijPuuBtw4ptZ9tg@mail.gmail.com> (raw)
In-Reply-To: <535744D3-3D69-4D6D-9AE7-E8885EBFC6CD@marvell.com>
On Sun, May 15, 2011 at 5:42 PM, Philip Rakity <prakity@marvell.com> wrote:
>
> On May 13, 2011, at 1:03 AM, zhangfei gao wrote:
>
>> On Wed, May 11, 2011 at 5:47 AM, Philip Rakity <prakity@marvell.com> wrote:
>>>
>>> On May 11, 2011, at 2:28 AM, zhangfei gao wrote:
>>>
>>>> On Wed, May 11, 2011 at 4:52 AM, Philip Rakity <prakity@marvell.com> wrote:
>>>>>
>>>>> \
>>>>> On May 11, 2011, at 1:48 AM, zhangfei gao wrote:
>>>>>
>>>>>> On Thu, May 5, 2011 at 2:49 AM, Arindam Nath <arindam.nath@amd.com> wrote:
>>>>>>> Marvell controller requires 1.8V bit in UHS control register 2
>>>>>>> be set when doing UHS. eMMC does not require 1.8V for DDR.
>>>>>>> add platform code to handle this.
>>>>>>>
>>>>>>> Signed-off-by: Philip Rakity <prakity@marvell.com>
>>>>>>> Reviewed-by: Arindam Nath <arindam.nath@amd.com>
>>>>>>> ---
>>>>>>> drivers/mmc/host/sdhci-pxa.c | 36 ++++++++++++++++++++++++++++++++++++
>>>>>>> 1 files changed, 36 insertions(+), 0 deletions(-)
>>>>>>>
>>>>>>> diff --git a/drivers/mmc/host/sdhci-pxa.c b/drivers/mmc/host/sdhci-pxa.c
>>>>>>> index 5a61208..b52c3e6 100644
>>>>>>> --- a/drivers/mmc/host/sdhci-pxa.c
>>>>>>> +++ b/drivers/mmc/host/sdhci-pxa.c
>>>>>>> @@ -69,7 +69,40 @@ static void set_clock(struct sdhci_host *host, unsigned int clock)
>>>>>>> }
>>>>>>> }
>>>>>>>
>>>>>>> +static int set_uhs_signaling(struct sdhci_host *host, unsigned int uhs)
>>>>>>> +{
>>>>>>> + u16 ctrl_2;
>>>>>>> +
>>>>>>> + /*
>>>>>>> + * Set V18_EN -- UHS modes do not work without this.
>>>>>>> + * does not change signaling voltage
>>>>>>> + */
>>>>>>> + ctrl_2 = sdhci_readw(host, SDHCI_HOST_CONTROL2);
>>>>>>> +
>>>>>>> + /* Select Bus Speed Mode for host */
>>>>>>> + ctrl_2 &= ~SDHCI_CTRL_UHS_MASK;
>>>>>>> + if (uhs == MMC_TIMING_UHS_SDR12)
>>>>>>> + ctrl_2 |= SDHCI_CTRL_UHS_SDR12;
>>>>>>> + else if (uhs == MMC_TIMING_UHS_SDR25)
>>>>>>> + ctrl_2 |= SDHCI_CTRL_UHS_SDR25;
>>>>>>> + else if (uhs == MMC_TIMING_UHS_SDR50) {
>>>>>>> + ctrl_2 |= SDHCI_CTRL_UHS_SDR50;
>>>>>>> + ctrl_2 |= SDHCI_CTRL_VDD_180;
>>>>>>> + } else if (uhs == MMC_TIMING_UHS_SDR104) {
>>>>>>> + ctrl_2 |= SDHCI_CTRL_UHS_SDR104;
>>>>>>> + ctrl_2 |= SDHCI_CTRL_VDD_180;
>>>>>>> + } else if (uhs == MMC_TIMING_UHS_DDR50) {
>>>>>>> + ctrl_2 |= SDHCI_CTRL_UHS_DDR50;
>>>>>>> + ctrl_2 |= SDHCI_CTRL_VDD_180;
>>>>>>> + }
>>>>>>> + sdhci_writew(host, ctrl_2, SDHCI_HOST_CONTROL2);
>>>>>>> + pr_debug("%s:%s uhs = %d, ctrl_2 = %04X\n",
>>>>>>> + __func__, mmc_hostname(host->mmc), uhs, ctrl_2);
>>>>>>> + return 0;
>>>>>>> +}
>>>>>>
>>>>>> Why move common register accessing from sdhci.c to specific driver?
>>>>>
>>>>> In general case you do not know what the specific host controller work arounds are required.
>>>>> on mmp2 this code works (no need for V18 for low speed UHS)
>>>>> but other controllers it could be different
>>>>
>>>> Sorry, not understand, the patch is for sd uhs card or for emmc?
>>>> For sd uhs card, no workaround is needed on mmp2, but require external
>>>> pmic to provide 1.8v io voltage.
>>>
>>>
>>> require 1.8V when setting UHS modes. See latest MMP2 Documentation.
>>
>> Do you mean set SDHCI_CTRL_VDD_180?
>> It is already set in sdhci_start_signal_voltage_switch, so does not
>> required in specific driver.
>
>
> eMMC voltages are fixed. DDR support is available at 3.3v vcc and 3.3v vccq.
> There is no voltage switch necessary. The card type value indicates that 3.3 vccq
> or 1.8v vccq is available. Since we are communicating with the card DDR must
> be available without a 1.8v vccq voltage switch.
>
> mmp2 has the requirement that to do DDR at any vccq we must set the VDD_180 bit.
> This bit set + DDR mode bit enables DDR. DDR mode bit on its own is not sufficient.
It's fine to mmp2 for emmc ddr50 mode.
Just concern other controller also need to set SDHCI_CTRL_VDD_180 via
the call back , since "UHS Mode Select" description is "UHS-I mode is
effective when SDHCI_CTRL_VDD_180 is set to 1", regardless of DDR50
mode work at 3.3v or 1.8v.
>
>
>
>
>
>>
>>>>
>>>>>
>>>>>>
>>>>>>> +
>>>>>>> static struct sdhci_ops sdhci_pxa_ops = {
>>>>>>> + .set_uhs_signaling = set_uhs_signaling,
>>>>>>> .set_clock = set_clock,
>>>>>>> };
>>>>>>>
>>>>>>> @@ -141,6 +174,9 @@ static int __devinit sdhci_pxa_probe(struct platform_device *pdev)
>>>>>>> if (pdata->quirks)
>>>>>>> host->quirks |= pdata->quirks;
>>>>>>>
>>>>>>> + /* enable 1/8V DDR capable */
>>>>>>> + host->mmc->caps |= MMC_CAP_1_8V_DDR;
>>>>>>> +
>>>>>>> /* If slot design supports 8 bit data, indicate this to MMC. */
>>>>>>> if (pdata->flags & PXA_FLAG_SD_8_BIT_CAPABLE_SLOT)
>>>>>>> host->mmc->caps |= MMC_CAP_8_BIT_DATA;
>>>>>>> --
>>>>>>> 1.7.1
>>>>>>>
>>>>>>>
>>>>>
>>>>>
>>>
>>>
>
>
next prev parent reply other threads:[~2011-05-16 5:57 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-05 6:48 [PATCH v4 00/15] add support for host controller v3.00 Arindam Nath
2011-05-05 6:48 ` [PATCH v4 01/15] mmc: sd: add support for signal voltage switch procedure Arindam Nath
2011-05-06 10:36 ` zhangfei gao
2011-05-11 3:34 ` Chris Ball
2011-05-05 6:48 ` [PATCH v4 02/15] mmc: sd: query function modes for uhs cards Arindam Nath
2011-05-06 10:37 ` zhangfei gao
2011-05-11 3:34 ` Chris Ball
2011-05-05 6:48 ` [PATCH v4 03/15] mmc: sd: add support for driver type selection Arindam Nath
2011-05-06 10:37 ` zhangfei gao
2011-05-11 3:34 ` Chris Ball
2011-05-05 6:49 ` [PATCH v4 04/15] mmc: sdhci: reset sdclk before setting high speed enable Arindam Nath
2011-05-06 10:38 ` zhangfei gao
2011-05-11 3:36 ` Chris Ball
2011-05-05 6:49 ` [PATCH v4 05/15] mmc: sd: add support for uhs bus speed mode selection Arindam Nath
2011-05-06 10:41 ` zhangfei gao
2011-05-11 3:36 ` Chris Ball
2011-05-05 6:49 ` [PATCH v4 06/15] mmc: sd: set current limit for uhs cards Arindam Nath
2011-05-06 10:38 ` zhangfei gao
2011-05-11 3:37 ` Chris Ball
2011-05-05 6:49 ` [PATCH v4 07/15] mmc: sd: report correct speed and capacity of " Arindam Nath
2011-05-06 10:39 ` zhangfei gao
2011-05-11 3:37 ` Chris Ball
2011-05-05 6:49 ` [PATCH v4 08/15] mmc: sd: add support for tuning during uhs initialization Arindam Nath
2011-05-06 10:39 ` zhangfei gao
2011-05-11 3:38 ` Chris Ball
2011-05-05 6:49 ` [PATCH v4 09/15] mmc: sdhci: enable preset value after " Arindam Nath
2011-05-06 10:40 ` zhangfei gao
2011-05-11 3:38 ` Chris Ball
2011-05-05 6:49 ` [PATCH v4 10/15] mmc: sdhci: add support for programmable clock mode Arindam Nath
2011-05-06 10:40 ` zhangfei gao
2011-05-11 3:39 ` Chris Ball
2011-05-05 6:49 ` [PATCH v4 11/15] mmc: sdhci: add support for retuning mode 1 Arindam Nath
2011-05-06 10:40 ` zhangfei gao
2011-05-11 3:39 ` Chris Ball
2011-05-05 6:49 ` [PATCH v4 12/15] sdhci pxa add platform specific code for UHS signaling Arindam Nath
2011-05-11 1:54 ` Chris Ball
2011-05-11 8:48 ` zhangfei gao
2011-05-11 8:52 ` Philip Rakity
2011-05-11 9:28 ` zhangfei gao
2011-05-11 9:47 ` Philip Rakity
2011-05-12 1:53 ` Philip Rakity
2011-05-13 8:03 ` zhangfei gao
2011-05-15 21:42 ` Philip Rakity
2011-05-16 5:57 ` zhangfei gao [this message]
2011-05-05 6:49 ` [PATCH v4 13/15] mmc eMMC signal voltage does not use CMD11 Arindam Nath
2011-05-11 1:51 ` Chris Ball
2011-05-11 9:19 ` zhangfei gao
2011-05-11 15:01 ` Philip Rakity
2011-05-12 1:53 ` Philip Rakity
2011-05-05 6:49 ` [PATCH v4 14/15] sdhci add hooks for UHS setting by platform specific code Arindam Nath
2011-05-05 6:49 ` [PATCH v4 15/15] mmc add support for eMMC Dual Data Rate Arindam Nath
2011-05-05 8:18 ` [PATCH v4 00/15] add support for host controller v3.00 Nath, Arindam
2011-05-11 3:43 ` Chris Ball
2011-05-11 6:13 ` Nath, Arindam
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=BANLkTimE2R-Gz802zM7ijPuuBtw4ptZ9tg@mail.gmail.com \
--to=zhangfei.gao@gmail.com \
--cc=aaron.lu@amd.com \
--cc=anath.amd@gmail.com \
--cc=arindam.nath@amd.com \
--cc=cjb@laptop.org \
--cc=henry.su@amd.com \
--cc=linux-mmc@vger.kernel.org \
--cc=prakity@marvell.com \
--cc=subhashj@codeaurora.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).