All of lore.kernel.org
 help / color / mirror / Atom feed
From: "stanley.miao" <stanley.miao@windriver.com>
To: Adrian Hunter <adrian.hunter@nokia.com>
Cc: "linux-omap@vger.kernel.org" <linux-omap@vger.kernel.org>,
	"tony@atomide.com" <tony@atomide.com>,
	"madhu.cr@ti.com" <madhu.cr@ti.com>
Subject: Re: [PATCH 10/11] omap hsmmc: fix the hsmmc driver for am3517.
Date: Wed, 14 Apr 2010 11:34:16 +0800	[thread overview]
Message-ID: <4BC537B8.8010207@windriver.com> (raw)
In-Reply-To: <4BC46B9B.3070207@nokia.com>

Adrian Hunter wrote:
> Stanley.Miao wrote:
>> am3517 don't have the register OMAP343X_CONTROL_PBIAS_LITE and the 
>> regulators
>> like "vmmc", so we don't need set "set_power" function for it.
>
> It would be better to leave omap_hsmmc alone and either:
>     - define fixed voltage regulators
>     - or make a noop set_power function

There are no voltage regulator for mmc, I will make a noop set_power 
function.
>
> How is the power supplied?

I didn't found it in TRM.  The pin vmmc was removed, no pin was added.

>
> With regard to pbias the change should be:

I will accept the below change.

Thanks for the review.

Stanley.

>
>
> diff --git a/arch/arm/mach-omap2/hsmmc.c b/arch/arm/mach-omap2/hsmmc.c
> index 9ad2295..595b24a 100644
> --- a/arch/arm/mach-omap2/hsmmc.c
> +++ b/arch/arm/mach-omap2/hsmmc.c
> @@ -150,7 +150,7 @@ void __init omap2_hsmmc_init(struct 
> omap2_hsmmc_info *controllers)
>     if (cpu_is_omap2430()) {
>         control_pbias_offset = OMAP243X_CONTROL_PBIAS_LITE;
>         control_devconf1_offset = OMAP243X_CONTROL_DEVCONF1;
> -    } else {
> +    } else if (!cpu_is_omap3517() && !cpu_is_omap3505()) {
>         control_pbias_offset = OMAP343X_CONTROL_PBIAS_LITE;
>         control_devconf1_offset = OMAP343X_CONTROL_DEVCONF1;
>     }
> @@ -216,12 +216,24 @@ void __init omap2_hsmmc_init(struct 
> omap2_hsmmc_info *controllers)
>          */
>         mmc->slots[0].ocr_mask = c->ocr_mask;
>
> +        if (!cpu_is_omap3517() && !cpu_is_omap3505()) {
> +            switch (c->mmc) {
> +            case 1:
> +                /* on-chip level shifting via PBIAS0/PBIAS1 */
> +                mmc->slots[0].before_set_reg = hsmmc1_before_set_reg;
> +                mmc->slots[0].after_set_reg = hsmmc1_after_set_reg;
> +                break;
> +            case 2:
> +            case 3:
> +                /* off-chip level shifting, or none */
> +                mmc->slots[0].before_set_reg = hsmmc23_before_set_reg;
> +                mmc->slots[0].after_set_reg = NULL;
> +                break;
> +            }
> +        }
> +
>         switch (c->mmc) {
>         case 1:
> -            /* on-chip level shifting via PBIAS0/PBIAS1 */
> -            mmc->slots[0].before_set_reg = hsmmc1_before_set_reg;
> -            mmc->slots[0].after_set_reg = hsmmc1_after_set_reg;
> -
>             /* Omap3630 HSMMC1 supports only 4-bit */
>             if (cpu_is_omap3630() && c->wires > 4) {
>                 c->wires = 4;
> @@ -235,9 +247,6 @@ void __init omap2_hsmmc_init(struct 
> omap2_hsmmc_info *controllers)
>                 c->wires = 4;
>             /* FALLTHROUGH */
>         case 3:
> -            /* off-chip level shifting, or none */
> -            mmc->slots[0].before_set_reg = hsmmc23_before_set_reg;
> -            mmc->slots[0].after_set_reg = NULL;
>             break;
>         default:
>             pr_err("MMC%d configuration not supported!\n", c->mmc);
>
>
>
>>
>> Signed-off-by: Stanley.Miao <stanley.miao@windriver.com>
>> ---
>>  arch/arm/mach-omap2/hsmmc.c   |    4 +++-
>>  drivers/mmc/host/omap_hsmmc.c |   28 +++++++++++++++++-----------
>>  2 files changed, 20 insertions(+), 12 deletions(-)
>>
>> diff --git a/arch/arm/mach-omap2/hsmmc.c b/arch/arm/mach-omap2/hsmmc.c
>> index 9ad2295..a6e6c86 100644
>> --- a/arch/arm/mach-omap2/hsmmc.c
>> +++ b/arch/arm/mach-omap2/hsmmc.c
>> @@ -150,7 +150,7 @@ void __init omap2_hsmmc_init(struct 
>> omap2_hsmmc_info *controllers)
>>      if (cpu_is_omap2430()) {
>>          control_pbias_offset = OMAP243X_CONTROL_PBIAS_LITE;
>>          control_devconf1_offset = OMAP243X_CONTROL_DEVCONF1;
>> -    } else {
>> +    } else if (!cpu_is_omap3517() && !cpu_is_omap3505()) {
>>          control_pbias_offset = OMAP343X_CONTROL_PBIAS_LITE;
>>          control_devconf1_offset = OMAP343X_CONTROL_DEVCONF1;
>>      }
>> @@ -216,6 +216,7 @@ void __init omap2_hsmmc_init(struct 
>> omap2_hsmmc_info *controllers)
>>           */
>>          mmc->slots[0].ocr_mask = c->ocr_mask;
>>  
>> +#ifndef CONFIG_MACH_OMAP3517EVM
>
> ifdef CONFIG_MACH_OMAP3517EVM
>
>
>
>
>>          switch (c->mmc) {
>>          case 1:
>>              /* on-chip level shifting via PBIAS0/PBIAS1 */
>> @@ -244,6 +245,7 @@ void __init omap2_hsmmc_init(struct 
>> omap2_hsmmc_info *controllers)
>>              kfree(mmc);
>>              continue;
>>          }
>> +#endif
>>          hsmmc_data[c->mmc - 1] = mmc;
>>      }
>>  
>> diff --git a/drivers/mmc/host/omap_hsmmc.c 
>> b/drivers/mmc/host/omap_hsmmc.c
>> index 83f0aff..f3c64a2 100644
>> --- a/drivers/mmc/host/omap_hsmmc.c
>> +++ b/drivers/mmc/host/omap_hsmmc.c
>> @@ -236,7 +236,7 @@ static int omap_hsmmc_resume_cdirq(struct device 
>> *dev, int slot)
>>  
>>  #endif
>>  
>> -#ifdef CONFIG_REGULATOR
>> +#if defined(CONFIG_REGULATOR) && !defined(CONFIG_MACH_OMAP3517EVM)
>>  
>>  static int omap_hsmmc_1_set_power(struct device *dev, int slot, int 
>> power_on,
>>                    int vdd)
>> @@ -1086,12 +1086,15 @@ static int omap_hsmmc_switch_opcond(struct 
>> omap_hsmmc_host *host, int vdd)
>>          clk_disable(host->dbclk);
>>  
>>      /* Turn the power off */
>> -    ret = mmc_slot(host).set_power(host->dev, host->slot_id, 0, 0);
>> +    if (mmc_slot(host).set_power) {
>> +        ret = mmc_slot(host).set_power(host->dev, host->slot_id, 0, 0);
>> +
>> +        /* Turn the power ON with given VDD 1.8 or 3.0v */
>> +        if (!ret)
>> +            ret = mmc_slot(host).set_power(host->dev,
>> +                    host->slot_id, 1, vdd);
>> +    }
>>  
>> -    /* Turn the power ON with given VDD 1.8 or 3.0v */
>> -    if (!ret)
>> -        ret = mmc_slot(host).set_power(host->dev, host->slot_id, 1,
>> -                           vdd);
>>      clk_enable(host->iclk);
>>      clk_enable(host->fclk);
>>      if (host->got_dbclk)
>> @@ -1478,13 +1481,15 @@ static void omap_hsmmc_set_ios(struct 
>> mmc_host *mmc, struct mmc_ios *ios)
>>      if (ios->power_mode != host->power_mode) {
>>          switch (ios->power_mode) {
>>          case MMC_POWER_OFF:
>> -            mmc_slot(host).set_power(host->dev, host->slot_id,
>> -                         0, 0);
>> +            if (mmc_slot(host).set_power)
>> +                mmc_slot(host).set_power(host->dev,
>> +                        host->slot_id, 0, 0);
>>              host->vdd = 0;
>>              break;
>>          case MMC_POWER_UP:
>> -            mmc_slot(host).set_power(host->dev, host->slot_id,
>> -                         1, ios->vdd);
>> +            if (mmc_slot(host).set_power)
>> +                mmc_slot(host).set_power(host->dev,
>> +                        host->slot_id, 1, ios->vdd);
>>              host->vdd = ios->vdd;
>>              break;
>>          case MMC_POWER_ON:
>> @@ -1714,7 +1719,8 @@ static int omap_hsmmc_sleep_to_off(struct 
>> omap_hsmmc_host *host)
>>          return 0;
>>      }
>>  
>> -    mmc_slot(host).set_power(host->dev, host->slot_id, 0, 0);
>> +    if (mmc_slot(host).set_power)
>> +        mmc_slot(host).set_power(host->dev, host->slot_id, 0, 0);
>>      host->vdd = 0;
>>      host->power_mode = MMC_POWER_OFF;
>>  
>
>


  parent reply	other threads:[~2010-04-14  3:25 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-13  9:31 [PATCH 0/11] Some am3517 related patches Stanley.Miao
2010-04-13  9:31 ` [PATCH 01/11] omap: remove one of the define of INT_34XX_BENCH_MPU_EMUL Stanley.Miao
2010-04-13  9:31 ` [PATCH 02/11] AM3517: Add platform init code for EMAC driver Stanley.Miao
2010-04-13  9:31 ` [PATCH 03/11] AM3517: rename the i2c boardinfo to make it more readable Stanley.Miao
2010-04-13 16:29   ` Hiremath, Vaibhav
2010-04-14  2:44     ` stanley.miao
2010-04-13  9:31 ` [PATCH 04/11] AM3517: Add platform init code for regulator driver Stanley.Miao
2010-04-13  9:31 ` [PATCH 05/11] AM3517: Add audio codec platform data Stanley.Miao
2010-04-13  9:31 ` [PATCH 06/11] AM3517: Add nand platform data for am3517evm Stanley.Miao
2010-04-13  9:31 ` [PATCH 07/11] AM3517: initialize i2c subsystem after mux subsystem Stanley.Miao
2010-04-13  9:31 ` [PATCH 08/11] OMAP: fix a gpmc nand problem Stanley.Miao
2010-04-13  9:34 ` [PATCH 09/11] omap: init the gpio pinmux for mmc Stanley.Miao
2010-04-13  9:34 ` [PATCH 10/11] omap hsmmc: fix the hsmmc driver for am3517 Stanley.Miao
2010-04-13 13:03   ` Adrian Hunter
2010-04-13 13:06     ` Adrian Hunter
2010-04-14  3:34     ` stanley.miao [this message]
2010-04-13  9:34 ` [PATCH 11/11] AM3517: Add mmc platform data for am3517evm Stanley.Miao
2010-04-13 13:08   ` Adrian Hunter
2010-04-14  7:14     ` stanley.miao
2010-04-13 16:18   ` Hiremath, Vaibhav
2010-04-14  2:36     ` stanley.miao

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=4BC537B8.8010207@windriver.com \
    --to=stanley.miao@windriver.com \
    --cc=adrian.hunter@nokia.com \
    --cc=linux-omap@vger.kernel.org \
    --cc=madhu.cr@ti.com \
    --cc=tony@atomide.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.