All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jaehoon Chung <jh80.chung@samsung.com>
To: Seungwon Jeon <tgih.jun@samsung.com>, linux-mmc@vger.kernel.org
Cc: 'Chris Ball' <chris@printf.net>
Subject: Re: [PATCH v2 3/8] mmc: dw_mmc: replace the bus_hz checking point
Date: Wed, 29 Jan 2014 08:54:40 +0900	[thread overview]
Message-ID: <52E84340.6050505@samsung.com> (raw)
In-Reply-To: <000701cf1c28$1cf0b3c0$56d21b40$%jun@samsung.com>

Hi Seungwon,

Thanks for review.

On 01/28/2014 09:54 PM, Seungwon Jeon wrote:
> On Tue, January 28, 2014, Jaehoon Chung wrote:
>> It's right that check immediately whether host->bus_hz is assigned or not.
>> If drv_data->setup_clock is presented, then host->bus_hz should be set at there.
>> When setup_clock didn't present, assigned to value with clk_get_rate().
>>
>> Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
>> ---
>> Changelog V2:
>> 	- When drv_data->setup_clock is present, set to bus_hz with it.
>>
>>  drivers/mmc/host/dw_mmc.c |   39 +++++++++++++++++++--------------------
>>  1 file changed, 19 insertions(+), 20 deletions(-)
>>
>> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
>> index 8193e21..ead2998 100644
>> --- a/drivers/mmc/host/dw_mmc.c
>> +++ b/drivers/mmc/host/dw_mmc.c
>> @@ -2427,10 +2427,27 @@ int dw_mci_probe(struct dw_mci *host)
>>  			ret = clk_set_rate(host->ciu_clk, host->pdata->bus_hz);
>>  			if (ret)
>>  				dev_warn(host->dev,
>> -					 "Unable to set bus rate to %ul\n",
>> +					 "Unable to set bus rate to %uHz\n",
>>  					 host->pdata->bus_hz);
>>  		}
>> -		host->bus_hz = clk_get_rate(host->ciu_clk);
>> +
>> +		if (drv_data && drv_data->setup_clock) {
>> +			ret = drv_data->setup_clock(host);
>> +			if (ret) {
>> +				dev_err(host->dev, "implementation specific \"
>> +					"clock setup failed\n");
>> +				goto err_clk_ciu;
>> +			}
>> +		} else {
>> +			host->bus_hz = clk_get_rate(host->ciu_clk);
> host->bus_hz certainly should be touched at drv_data->setup_clock()?
> I think origin would be better.
> The others is good to me.

I understood what you mean. Maybe We can change the code at dw_mmc-exynos.c.
It's refered to host->ci_clk at dw_mmc-exynos.c.
But If ciu_clk didn't assign, clk's rate didn't get.
How about this? host->bus_hz was already assigned in dw_mmc.c.

--- a/drivers/mmc/host/dw_mmc-exynos.c
+++ b/drivers/mmc/host/dw_mmc-exynos.c
@@ -117,9 +117,8 @@ static int dw_mci_exynos_priv_init(struct dw_mci *host)
 static int dw_mci_exynos_setup_clock(struct dw_mci *host)
 {
 	struct dw_mci_exynos_priv_data *priv = host->priv;
-	unsigned long rate = clk_get_rate(host->ciu_clk);
 
-	host->bus_hz = rate / (priv->ciu_div + 1);
+	host->bus_hz /= (priv->ciu_div + 1);
 	return 0;
 }
 
Best Regards,
Jaehoon Chung

> 
> Thanks,
> Seungwon Jeon
> 
>> +		}
>> +	}
>> +
>> +	if (!host->bus_hz) {
>> +		dev_err(host->dev,
>> +			"Platform data must supply bus speed\n");
>> +		ret = -ENODEV;
>> +		goto err_clk_ciu;
>>  	}
>>
>>  	if (drv_data && drv_data->init) {
>> @@ -2442,15 +2459,6 @@ int dw_mci_probe(struct dw_mci *host)
>>  		}
>>  	}
>>
>> -	if (drv_data && drv_data->setup_clock) {
>> -		ret = drv_data->setup_clock(host);
>> -		if (ret) {
>> -			dev_err(host->dev,
>> -				"implementation specific clock setup failed\n");
>> -			goto err_clk_ciu;
>> -		}
>> -	}
>> -
>>  	host->vmmc = devm_regulator_get_optional(host->dev, "vmmc");
>>  	if (IS_ERR(host->vmmc)) {
>>  		ret = PTR_ERR(host->vmmc);
>> @@ -2469,13 +2477,6 @@ int dw_mci_probe(struct dw_mci *host)
>>  		}
>>  	}
>>
>> -	if (!host->bus_hz) {
>> -		dev_err(host->dev,
>> -			"Platform data must supply bus speed\n");
>> -		ret = -ENODEV;
>> -		goto err_regulator;
>> -	}
>> -
>>  	host->quirks = host->pdata->quirks;
>>
>>  	spin_lock_init(&host->lock);
>> @@ -2619,8 +2620,6 @@ err_workqueue:
>>  err_dmaunmap:
>>  	if (host->use_dma && host->dma_ops->exit)
>>  		host->dma_ops->exit(host);
>> -
>> -err_regulator:
>>  	if (host->vmmc)
>>  		regulator_disable(host->vmmc);
>>
>> --
>> 1.7.9.5
>> --
>> 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
> 
> 


      reply	other threads:[~2014-01-28 23:54 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-28  8:24 [PATCH v2 3/8] mmc: dw_mmc: replace the bus_hz checking point Jaehoon Chung
2014-01-28 12:54 ` Seungwon Jeon
2014-01-28 23:54   ` Jaehoon Chung [this message]

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=52E84340.6050505@samsung.com \
    --to=jh80.chung@samsung.com \
    --cc=chris@printf.net \
    --cc=linux-mmc@vger.kernel.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.