diff mbox

mmc: dw_mmc: Fix DDR mode support.

Message ID 1312515303-17169-1-git-send-email-tgih.jun@samsung.com (mailing list archive)
State New, archived
Headers show

Commit Message

Seungwon Jeon Aug. 5, 2011, 3:35 a.m. UTC
Host driver can't get a hint of DDR mode through ios->ddr flag anymore.
ios->timing is currently used to inform DDR mode as a substitute.
And capability of MMC_CAP_MMC_HIGHSPEED is added for DDR support.

Signed-off-by: Seungwon Jeon <tgih.jun@samsung.com>
---
 drivers/mmc/host/dw_mmc.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

Comments

Will Newton Aug. 5, 2011, 10:20 a.m. UTC | #1
On Fri, Aug 5, 2011 at 4:35 AM, Seungwon Jeon <tgih.jun@samsung.com> wrote:
> Host driver can't get a hint of DDR mode through ios->ddr flag anymore.
> ios->timing is currently used to inform DDR mode as a substitute.
> And capability of MMC_CAP_MMC_HIGHSPEED is added for DDR support.
>
> Signed-off-by: Seungwon Jeon <tgih.jun@samsung.com>
> ---
>  drivers/mmc/host/dw_mmc.c |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
> index d65511e..b412a1d 100644
> --- a/drivers/mmc/host/dw_mmc.c
> +++ b/drivers/mmc/host/dw_mmc.c
> @@ -699,7 +699,7 @@ static void dw_mci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
>        }
>
>        /* DDR mode set */
> -       if (ios->ddr) {
> +       if (ios->timing == MMC_TIMING_UHS_DDR50) {
>                regs = mci_readl(slot->host, UHS_REG);
>                regs |= (0x1 << slot->id) << 16;
>                mci_writel(slot->host, UHS_REG, regs);
> @@ -1646,7 +1646,7 @@ static int __init dw_mci_init_slot(struct dw_mci *host, unsigned int id)
>                        mmc->caps |= MMC_CAP_4_BIT_DATA;
>
>        if (host->pdata->quirks & DW_MCI_QUIRK_HIGHSPEED)
> -               mmc->caps |= MMC_CAP_SD_HIGHSPEED;
> +               mmc->caps |= MMC_CAP_SD_HIGHSPEED | MMC_CAP_MMC_HIGHSPEED;
>
>  #ifdef CONFIG_MMC_DW_IDMAC
>        mmc->max_segs = host->ring_size;
> --
> 1.7.0.4

Acked-by: Will Newton <will.newton@imgtec.com>
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Jaehoon Chung Aug. 5, 2011, 9:35 p.m. UTC | #2
Hi Seungwon

This patch is looks fine to me..

Just ask to you...Don't you want to locate MMC_CAP_MMC_HIGHSPEED in platdata?

Regards,
Jaehoon Chung


2011/8/5 Will Newton <will.newton@gmail.com>:
> On Fri, Aug 5, 2011 at 4:35 AM, Seungwon Jeon <tgih.jun@samsung.com> wrote:
>> Host driver can't get a hint of DDR mode through ios->ddr flag anymore.
>> ios->timing is currently used to inform DDR mode as a substitute.
>> And capability of MMC_CAP_MMC_HIGHSPEED is added for DDR support.
>>
>> Signed-off-by: Seungwon Jeon <tgih.jun@samsung.com>
>> ---
>>  drivers/mmc/host/dw_mmc.c |    4 ++--
>>  1 files changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
>> index d65511e..b412a1d 100644
>> --- a/drivers/mmc/host/dw_mmc.c
>> +++ b/drivers/mmc/host/dw_mmc.c
>> @@ -699,7 +699,7 @@ static void dw_mci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
>>        }
>>
>>        /* DDR mode set */
>> -       if (ios->ddr) {
>> +       if (ios->timing == MMC_TIMING_UHS_DDR50) {
>>                regs = mci_readl(slot->host, UHS_REG);
>>                regs |= (0x1 << slot->id) << 16;
>>                mci_writel(slot->host, UHS_REG, regs);
>> @@ -1646,7 +1646,7 @@ static int __init dw_mci_init_slot(struct dw_mci *host, unsigned int id)
>>                        mmc->caps |= MMC_CAP_4_BIT_DATA;
>>
>>        if (host->pdata->quirks & DW_MCI_QUIRK_HIGHSPEED)
>> -               mmc->caps |= MMC_CAP_SD_HIGHSPEED;
>> +               mmc->caps |= MMC_CAP_SD_HIGHSPEED | MMC_CAP_MMC_HIGHSPEED;
>>
>>  #ifdef CONFIG_MMC_DW_IDMAC
>>        mmc->max_segs = host->ring_size;
>> --
>> 1.7.0.4
>
> Acked-by: Will Newton <will.newton@imgtec.com>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Seungwon Jeon Aug. 8, 2011, 1:38 a.m. UTC | #3
Jaehoon Chung wrote:
> 
> Hi Seungwon
> 
> This patch is looks fine to me..
> 
> Just ask to you...Don't you want to locate MMC_CAP_MMC_HIGHSPEED in
> platdata?

Thank you for your comment.
Of course, I have considered appropriate location for MMC_CAP_MMC_HIGHSPEED.
But it seems to be difficult to distinguish a difference between MMC_CAP_SD_HIGHSPEED and MMC_CAP_MMC_HIGHSPEED,
if DW_MCI_QUIRK_HIGHSPEED is defined.

Beset regards,
Seungwon Jeon.

> 
> Regards,
> Jaehoon Chung
> 
> 
> 2011/8/5 Will Newton <will.newton@gmail.com>:
> > On Fri, Aug 5, 2011 at 4:35 AM, Seungwon Jeon <tgih.jun@samsung.com>
> wrote:
> >> Host driver can't get a hint of DDR mode through ios->ddr flag anymore.
> >> ios->timing is currently used to inform DDR mode as a substitute.
> >> And capability of MMC_CAP_MMC_HIGHSPEED is added for DDR support.
> >>
> >> Signed-off-by: Seungwon Jeon <tgih.jun@samsung.com>
> >> ---
> >>  drivers/mmc/host/dw_mmc.c |    4 ++--
> >>  1 files changed, 2 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
> >> index d65511e..b412a1d 100644
> >> --- a/drivers/mmc/host/dw_mmc.c
> >> +++ b/drivers/mmc/host/dw_mmc.c
> >> @@ -699,7 +699,7 @@ static void dw_mci_set_ios(struct mmc_host *mmc,
> struct mmc_ios *ios)
> >>        }
> >>
> >>        /* DDR mode set */
> >> -       if (ios->ddr) {
> >> +       if (ios->timing == MMC_TIMING_UHS_DDR50) {
> >>                regs = mci_readl(slot->host, UHS_REG);
> >>                regs |= (0x1 << slot->id) << 16;
> >>                mci_writel(slot->host, UHS_REG, regs);
> >> @@ -1646,7 +1646,7 @@ static int __init dw_mci_init_slot(struct dw_mci
> *host, unsigned int id)
> >>                        mmc->caps |= MMC_CAP_4_BIT_DATA;
> >>
> >>        if (host->pdata->quirks & DW_MCI_QUIRK_HIGHSPEED)
> >> -               mmc->caps |= MMC_CAP_SD_HIGHSPEED;
> >> +               mmc->caps |= MMC_CAP_SD_HIGHSPEED | MMC_CAP_MMC_HIGHSPEED;
> >>
> >>  #ifdef CONFIG_MMC_DW_IDMAC
> >>        mmc->max_segs = host->ring_size;
> >> --
> >> 1.7.0.4
> >
> > Acked-by: Will Newton <will.newton@imgtec.com>
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> >
> --
> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Chris Ball Aug. 11, 2011, 9:38 p.m. UTC | #4
Hi,

On Thu, Aug 04 2011, Seungwon Jeon wrote:
> Host driver can't get a hint of DDR mode through ios->ddr flag anymore.
> ios->timing is currently used to inform DDR mode as a substitute.
> And capability of MMC_CAP_MMC_HIGHSPEED is added for DDR support.
>
> Signed-off-by: Seungwon Jeon <tgih.jun@samsung.com>
> ---
>  drivers/mmc/host/dw_mmc.c |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
> index d65511e..b412a1d 100644
> --- a/drivers/mmc/host/dw_mmc.c
> +++ b/drivers/mmc/host/dw_mmc.c
> @@ -699,7 +699,7 @@ static void dw_mci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
>  	}
>  
>  	/* DDR mode set */
> -	if (ios->ddr) {
> +	if (ios->timing == MMC_TIMING_UHS_DDR50) {
>  		regs = mci_readl(slot->host, UHS_REG);
>  		regs |= (0x1 << slot->id) << 16;
>  		mci_writel(slot->host, UHS_REG, regs);
> @@ -1646,7 +1646,7 @@ static int __init dw_mci_init_slot(struct dw_mci *host, unsigned int id)
>  			mmc->caps |= MMC_CAP_4_BIT_DATA;
>  
>  	if (host->pdata->quirks & DW_MCI_QUIRK_HIGHSPEED)
> -		mmc->caps |= MMC_CAP_SD_HIGHSPEED;
> +		mmc->caps |= MMC_CAP_SD_HIGHSPEED | MMC_CAP_MMC_HIGHSPEED;
>  
>  #ifdef CONFIG_MMC_DW_IDMAC
>  	mmc->max_segs = host->ring_size;

Thanks, pushed to mmc-next for 3.1 with Will's ACK.

- Chris.
diff mbox

Patch

diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
index d65511e..b412a1d 100644
--- a/drivers/mmc/host/dw_mmc.c
+++ b/drivers/mmc/host/dw_mmc.c
@@ -699,7 +699,7 @@  static void dw_mci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
 	}
 
 	/* DDR mode set */
-	if (ios->ddr) {
+	if (ios->timing == MMC_TIMING_UHS_DDR50) {
 		regs = mci_readl(slot->host, UHS_REG);
 		regs |= (0x1 << slot->id) << 16;
 		mci_writel(slot->host, UHS_REG, regs);
@@ -1646,7 +1646,7 @@  static int __init dw_mci_init_slot(struct dw_mci *host, unsigned int id)
 			mmc->caps |= MMC_CAP_4_BIT_DATA;
 
 	if (host->pdata->quirks & DW_MCI_QUIRK_HIGHSPEED)
-		mmc->caps |= MMC_CAP_SD_HIGHSPEED;
+		mmc->caps |= MMC_CAP_SD_HIGHSPEED | MMC_CAP_MMC_HIGHSPEED;
 
 #ifdef CONFIG_MMC_DW_IDMAC
 	mmc->max_segs = host->ring_size;