All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/4] Cleanup setup_clock callback from dw_mmc
@ 2016-01-28  1:30 Shawn Lin
  2016-01-28  1:30 ` [PATCH 1/4] mmc: dw_mmc-rockchip: remove setup_clock for rockchip Shawn Lin
                   ` (4 more replies)
  0 siblings, 5 replies; 9+ messages in thread
From: Shawn Lin @ 2016-01-28  1:30 UTC (permalink / raw)
  To: Jaehoon Chung, Ulf Hansson; +Cc: linux-mmc, linux-kernel, Shawn Lin


Hello Jeahoon

Currently dw_mmc is a little too queen-size. As we had cleanup
prepare_command callback some days before, there are also some
ones deserve to remove. Also we should avoid add new quirks or
callbacks into dw_mmc in order to avoid the dilemma sdhci meets
now.

This patchset remove setup_clock callback. Obviously, adding a
callback just for one-time-used clk stuff makes no sense. We combine
what setup_clock does before into init callback. For exynos platfrom,
it needs call init hook after resume, so we add new argument in init
hook to indicate whether it needs do clk stuff or not.



Shawn Lin (4):
  mmc: dw_mmc-rockchip: remove setup_clock for rockchip
  mmc: dw_mmc: add setup_clk for init hook
  mmc: dw_mmc-exynos: remove dw_mci_exynos_setup_clock
  mmc: dw_mmc: remove setup_clock callback

 drivers/mmc/host/dw_mmc-exynos.c   | 15 ++++-----------
 drivers/mmc/host/dw_mmc-rockchip.c | 14 +++++---------
 drivers/mmc/host/dw_mmc.c          | 11 +----------
 drivers/mmc/host/dw_mmc.h          |  3 +--
 4 files changed, 11 insertions(+), 32 deletions(-)

-- 
2.3.7

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH 1/4] mmc: dw_mmc-rockchip: remove setup_clock for rockchip
  2016-01-28  1:30 [PATCH 0/4] Cleanup setup_clock callback from dw_mmc Shawn Lin
@ 2016-01-28  1:30 ` Shawn Lin
  2016-01-28  1:31 ` [PATCH 2/4] mmc: dw_mmc: add setup_clk for init hook Shawn Lin
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 9+ messages in thread
From: Shawn Lin @ 2016-01-28  1:30 UTC (permalink / raw)
  To: Jaehoon Chung, Ulf Hansson; +Cc: linux-mmc, linux-kernel, Shawn Lin

We remove setup_clock hook and combine it into
init hook to simplify the code

Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>

---

 drivers/mmc/host/dw_mmc-rockchip.c | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/drivers/mmc/host/dw_mmc-rockchip.c b/drivers/mmc/host/dw_mmc-rockchip.c
index d9c92f3..9934503 100644
--- a/drivers/mmc/host/dw_mmc-rockchip.c
+++ b/drivers/mmc/host/dw_mmc-rockchip.c
@@ -31,13 +31,6 @@ static void dw_mci_rockchip_prepare_command(struct dw_mci *host, u32 *cmdr)
 	*cmdr |= SDMMC_CMD_USE_HOLD_REG;
 }
 
-static int dw_mci_rk3288_setup_clock(struct dw_mci *host)
-{
-	host->bus_hz /= RK3288_CLKGEN_DIV;
-
-	return 0;
-}
-
 static void dw_mci_rk3288_set_ios(struct dw_mci *host, struct mmc_ios *ios)
 {
 	struct dw_mci_rockchip_priv_data *priv = host->priv;
@@ -236,6 +229,10 @@ static int dw_mci_rockchip_init(struct dw_mci *host)
 	/* It needs this quirk on all Rockchip SoCs */
 	host->pdata->quirks |= DW_MCI_QUIRK_BROKEN_DTO;
 
+	if (of_device_is_compatible(host->dev->of_node,
+				    "rockchip,rk3288-dw-mshc"))
+		host->bus_hz /= RK3288_CLKGEN_DIV;
+
 	return 0;
 }
 
@@ -249,7 +246,6 @@ static const struct dw_mci_drv_data rk3288_drv_data = {
 	.set_ios		= dw_mci_rk3288_set_ios,
 	.execute_tuning		= dw_mci_rk3288_execute_tuning,
 	.parse_dt		= dw_mci_rk3288_parse_dt,
-	.setup_clock    = dw_mci_rk3288_setup_clock,
 	.init			= dw_mci_rockchip_init,
 };
 
-- 
2.3.7

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 2/4] mmc: dw_mmc: add setup_clk for init hook
  2016-01-28  1:30 [PATCH 0/4] Cleanup setup_clock callback from dw_mmc Shawn Lin
  2016-01-28  1:30 ` [PATCH 1/4] mmc: dw_mmc-rockchip: remove setup_clock for rockchip Shawn Lin
@ 2016-01-28  1:31 ` Shawn Lin
  2016-02-04  6:04   ` Jaehoon Chung
  2016-01-28  1:31 ` [PATCH 3/4] mmc: dw_mmc-exynos: remove dw_mci_exynos_setup_clock Shawn Lin
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 9+ messages in thread
From: Shawn Lin @ 2016-01-28  1:31 UTC (permalink / raw)
  To: Jaehoon Chung, Ulf Hansson; +Cc: linux-mmc, linux-kernel, Shawn Lin

We add this new argument into init hook for
variant drivers to decide whether to do clock
related stuff inside the hook.

Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
---

 drivers/mmc/host/dw_mmc-exynos.c   | 4 ++--
 drivers/mmc/host/dw_mmc-rockchip.c | 2 +-
 drivers/mmc/host/dw_mmc.c          | 2 +-
 drivers/mmc/host/dw_mmc.h          | 2 +-
 4 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/mmc/host/dw_mmc-exynos.c b/drivers/mmc/host/dw_mmc-exynos.c
index 3a7e835..edaa117 100644
--- a/drivers/mmc/host/dw_mmc-exynos.c
+++ b/drivers/mmc/host/dw_mmc-exynos.c
@@ -91,7 +91,7 @@ static inline u8 dw_mci_exynos_get_ciu_div(struct dw_mci *host)
 		return SDMMC_CLKSEL_GET_DIV(mci_readl(host, CLKSEL)) + 1;
 }
 
-static int dw_mci_exynos_priv_init(struct dw_mci *host)
+static int dw_mci_exynos_priv_init(struct dw_mci *host, bool setup_clk)
 {
 	struct dw_mci_exynos_priv_data *priv = host->priv;
 
@@ -159,7 +159,7 @@ static int dw_mci_exynos_resume(struct device *dev)
 {
 	struct dw_mci *host = dev_get_drvdata(dev);
 
-	dw_mci_exynos_priv_init(host);
+	dw_mci_exynos_priv_init(host, false);
 	return dw_mci_resume(host);
 }
 
diff --git a/drivers/mmc/host/dw_mmc-rockchip.c b/drivers/mmc/host/dw_mmc-rockchip.c
index 9934503..885c801 100644
--- a/drivers/mmc/host/dw_mmc-rockchip.c
+++ b/drivers/mmc/host/dw_mmc-rockchip.c
@@ -221,7 +221,7 @@ static int dw_mci_rk3288_parse_dt(struct dw_mci *host)
 	return 0;
 }
 
-static int dw_mci_rockchip_init(struct dw_mci *host)
+static int dw_mci_rockchip_init(struct dw_mci *host, bool setup_clk)
 {
 	/* It is slot 8 on Rockchip SoCs */
 	host->sdio_id0 = 8;
diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
index 7128351..1d27a2b 100644
--- a/drivers/mmc/host/dw_mmc.c
+++ b/drivers/mmc/host/dw_mmc.c
@@ -2995,7 +2995,7 @@ int dw_mci_probe(struct dw_mci *host)
 	}
 
 	if (drv_data && drv_data->init) {
-		ret = drv_data->init(host);
+		ret = drv_data->init(host, true);
 		if (ret) {
 			dev_err(host->dev,
 				"implementation specific init failed\n");
diff --git a/drivers/mmc/host/dw_mmc.h b/drivers/mmc/host/dw_mmc.h
index f695b58..1a9492e 100644
--- a/drivers/mmc/host/dw_mmc.h
+++ b/drivers/mmc/host/dw_mmc.h
@@ -285,7 +285,7 @@ struct dw_mci_slot {
  */
 struct dw_mci_drv_data {
 	unsigned long	*caps;
-	int		(*init)(struct dw_mci *host);
+	int		(*init)(struct dw_mci *host, bool setup_clk);
 	int		(*setup_clock)(struct dw_mci *host);
 	void		(*prepare_command)(struct dw_mci *host, u32 *cmdr);
 	void		(*set_ios)(struct dw_mci *host, struct mmc_ios *ios);
-- 
2.3.7

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 3/4] mmc: dw_mmc-exynos: remove dw_mci_exynos_setup_clock
  2016-01-28  1:30 [PATCH 0/4] Cleanup setup_clock callback from dw_mmc Shawn Lin
  2016-01-28  1:30 ` [PATCH 1/4] mmc: dw_mmc-rockchip: remove setup_clock for rockchip Shawn Lin
  2016-01-28  1:31 ` [PATCH 2/4] mmc: dw_mmc: add setup_clk for init hook Shawn Lin
@ 2016-01-28  1:31 ` Shawn Lin
  2016-01-28  1:31 ` [PATCH 4/4] mmc: dw_mmc: remove setup_clock callback Shawn Lin
  2016-03-31  6:37 ` [PATCH 0/4] Cleanup setup_clock callback from dw_mmc Jaehoon Chung
  4 siblings, 0 replies; 9+ messages in thread
From: Shawn Lin @ 2016-01-28  1:31 UTC (permalink / raw)
  To: Jaehoon Chung, Ulf Hansson; +Cc: linux-mmc, linux-kernel, Shawn Lin

We combine what dw_mci_exynos_setup_clock does with init
hook to simplify the code

Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
---

 drivers/mmc/host/dw_mmc-exynos.c | 11 ++---------
 1 file changed, 2 insertions(+), 9 deletions(-)

diff --git a/drivers/mmc/host/dw_mmc-exynos.c b/drivers/mmc/host/dw_mmc-exynos.c
index edaa117..47d8b1d 100644
--- a/drivers/mmc/host/dw_mmc-exynos.c
+++ b/drivers/mmc/host/dw_mmc-exynos.c
@@ -115,14 +115,8 @@ static int dw_mci_exynos_priv_init(struct dw_mci *host, bool setup_clk)
 				DQS_CTRL_GET_RD_DELAY(priv->saved_strobe_ctrl);
 	}
 
-	return 0;
-}
-
-static int dw_mci_exynos_setup_clock(struct dw_mci *host)
-{
-	struct dw_mci_exynos_priv_data *priv = host->priv;
-
-	host->bus_hz /= (priv->ciu_div + 1);
+	if (setup_clk)
+		host->bus_hz /= (priv->ciu_div + 1);
 
 	return 0;
 }
@@ -499,7 +493,6 @@ static unsigned long exynos_dwmmc_caps[4] = {
 static const struct dw_mci_drv_data exynos_drv_data = {
 	.caps			= exynos_dwmmc_caps,
 	.init			= dw_mci_exynos_priv_init,
-	.setup_clock		= dw_mci_exynos_setup_clock,
 	.prepare_command	= dw_mci_exynos_prepare_command,
 	.set_ios		= dw_mci_exynos_set_ios,
 	.parse_dt		= dw_mci_exynos_parse_dt,
-- 
2.3.7

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 4/4] mmc: dw_mmc: remove setup_clock callback
  2016-01-28  1:30 [PATCH 0/4] Cleanup setup_clock callback from dw_mmc Shawn Lin
                   ` (2 preceding siblings ...)
  2016-01-28  1:31 ` [PATCH 3/4] mmc: dw_mmc-exynos: remove dw_mci_exynos_setup_clock Shawn Lin
@ 2016-01-28  1:31 ` Shawn Lin
  2016-03-31  6:38   ` Jaehoon Chung
  2016-03-31  6:37 ` [PATCH 0/4] Cleanup setup_clock callback from dw_mmc Jaehoon Chung
  4 siblings, 1 reply; 9+ messages in thread
From: Shawn Lin @ 2016-01-28  1:31 UTC (permalink / raw)
  To: Jaehoon Chung, Ulf Hansson; +Cc: linux-mmc, linux-kernel, Shawn Lin

Now, no dw_mmc variant drivers use this callback, let's
remove it.

Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
---

 drivers/mmc/host/dw_mmc.c | 9 ---------
 drivers/mmc/host/dw_mmc.h | 1 -
 2 files changed, 10 deletions(-)

diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
index 1d27a2b..ee13374 100644
--- a/drivers/mmc/host/dw_mmc.c
+++ b/drivers/mmc/host/dw_mmc.c
@@ -3003,15 +3003,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;
-		}
-	}
-
 	setup_timer(&host->cmd11_timer,
 		    dw_mci_cmd11_timer, (unsigned long)host);
 
diff --git a/drivers/mmc/host/dw_mmc.h b/drivers/mmc/host/dw_mmc.h
index 1a9492e..bfc2a4d 100644
--- a/drivers/mmc/host/dw_mmc.h
+++ b/drivers/mmc/host/dw_mmc.h
@@ -286,7 +286,6 @@ struct dw_mci_slot {
 struct dw_mci_drv_data {
 	unsigned long	*caps;
 	int		(*init)(struct dw_mci *host, bool setup_clk);
-	int		(*setup_clock)(struct dw_mci *host);
 	void		(*prepare_command)(struct dw_mci *host, u32 *cmdr);
 	void		(*set_ios)(struct dw_mci *host, struct mmc_ios *ios);
 	int		(*parse_dt)(struct dw_mci *host);
-- 
2.3.7

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH 2/4] mmc: dw_mmc: add setup_clk for init hook
  2016-01-28  1:31 ` [PATCH 2/4] mmc: dw_mmc: add setup_clk for init hook Shawn Lin
@ 2016-02-04  6:04   ` Jaehoon Chung
  2016-02-12 11:30     ` Shawn Lin
  0 siblings, 1 reply; 9+ messages in thread
From: Jaehoon Chung @ 2016-02-04  6:04 UTC (permalink / raw)
  To: Shawn Lin, Ulf Hansson; +Cc: linux-mmc, linux-kernel

Hi, Shawn.

On 01/28/2016 10:31 AM, Shawn Lin wrote:
> We add this new argument into init hook for
> variant drivers to decide whether to do clock
> related stuff inside the hook.
> 
> Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
> ---
> 
>  drivers/mmc/host/dw_mmc-exynos.c   | 4 ++--
>  drivers/mmc/host/dw_mmc-rockchip.c | 2 +-
>  drivers/mmc/host/dw_mmc.c          | 2 +-
>  drivers/mmc/host/dw_mmc.h          | 2 +-
>  4 files changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/mmc/host/dw_mmc-exynos.c b/drivers/mmc/host/dw_mmc-exynos.c
> index 3a7e835..edaa117 100644
> --- a/drivers/mmc/host/dw_mmc-exynos.c
> +++ b/drivers/mmc/host/dw_mmc-exynos.c
> @@ -91,7 +91,7 @@ static inline u8 dw_mci_exynos_get_ciu_div(struct dw_mci *host)
>  		return SDMMC_CLKSEL_GET_DIV(mci_readl(host, CLKSEL)) + 1;
>  }
>  
> -static int dw_mci_exynos_priv_init(struct dw_mci *host)
> +static int dw_mci_exynos_priv_init(struct dw_mci *host, bool setup_clk)
>  {

"bool setup_clk" is made because of exynos SoC, right?
Hmm. I'm checking how we can control without "setup_clk". Waiting for this.

Thanks for removing the hooks. :)

Best Regards,
Jaehoon Chung

>  	struct dw_mci_exynos_priv_data *priv = host->priv;
>  
> @@ -159,7 +159,7 @@ static int dw_mci_exynos_resume(struct device *dev)
>  {
>  	struct dw_mci *host = dev_get_drvdata(dev);
>  
> -	dw_mci_exynos_priv_init(host);
> +	dw_mci_exynos_priv_init(host, false);
>  	return dw_mci_resume(host);
>  }
>  
> diff --git a/drivers/mmc/host/dw_mmc-rockchip.c b/drivers/mmc/host/dw_mmc-rockchip.c
> index 9934503..885c801 100644
> --- a/drivers/mmc/host/dw_mmc-rockchip.c
> +++ b/drivers/mmc/host/dw_mmc-rockchip.c
> @@ -221,7 +221,7 @@ static int dw_mci_rk3288_parse_dt(struct dw_mci *host)
>  	return 0;
>  }
>  
> -static int dw_mci_rockchip_init(struct dw_mci *host)
> +static int dw_mci_rockchip_init(struct dw_mci *host, bool setup_clk)
>  {
>  	/* It is slot 8 on Rockchip SoCs */
>  	host->sdio_id0 = 8;
> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
> index 7128351..1d27a2b 100644
> --- a/drivers/mmc/host/dw_mmc.c
> +++ b/drivers/mmc/host/dw_mmc.c
> @@ -2995,7 +2995,7 @@ int dw_mci_probe(struct dw_mci *host)
>  	}
>  
>  	if (drv_data && drv_data->init) {
> -		ret = drv_data->init(host);
> +		ret = drv_data->init(host, true);
>  		if (ret) {
>  			dev_err(host->dev,
>  				"implementation specific init failed\n");
> diff --git a/drivers/mmc/host/dw_mmc.h b/drivers/mmc/host/dw_mmc.h
> index f695b58..1a9492e 100644
> --- a/drivers/mmc/host/dw_mmc.h
> +++ b/drivers/mmc/host/dw_mmc.h
> @@ -285,7 +285,7 @@ struct dw_mci_slot {
>   */
>  struct dw_mci_drv_data {
>  	unsigned long	*caps;
> -	int		(*init)(struct dw_mci *host);
> +	int		(*init)(struct dw_mci *host, bool setup_clk);
>  	int		(*setup_clock)(struct dw_mci *host);
>  	void		(*prepare_command)(struct dw_mci *host, u32 *cmdr);
>  	void		(*set_ios)(struct dw_mci *host, struct mmc_ios *ios);
> 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 2/4] mmc: dw_mmc: add setup_clk for init hook
  2016-02-04  6:04   ` Jaehoon Chung
@ 2016-02-12 11:30     ` Shawn Lin
  0 siblings, 0 replies; 9+ messages in thread
From: Shawn Lin @ 2016-02-12 11:30 UTC (permalink / raw)
  To: Jaehoon Chung, Ulf Hansson; +Cc: shawn.lin, linux-mmc, linux-kernel

On 2016/2/4 14:04, Jaehoon Chung wrote:
> Hi, Shawn.
>
> On 01/28/2016 10:31 AM, Shawn Lin wrote:
>> We add this new argument into init hook for
>> variant drivers to decide whether to do clock
>> related stuff inside the hook.
>>
>> Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
>> ---
>>
>>   drivers/mmc/host/dw_mmc-exynos.c   | 4 ++--
>>   drivers/mmc/host/dw_mmc-rockchip.c | 2 +-
>>   drivers/mmc/host/dw_mmc.c          | 2 +-
>>   drivers/mmc/host/dw_mmc.h          | 2 +-
>>   4 files changed, 5 insertions(+), 5 deletions(-)
>>
>> diff --git a/drivers/mmc/host/dw_mmc-exynos.c b/drivers/mmc/host/dw_mmc-exynos.c
>> index 3a7e835..edaa117 100644
>> --- a/drivers/mmc/host/dw_mmc-exynos.c
>> +++ b/drivers/mmc/host/dw_mmc-exynos.c
>> @@ -91,7 +91,7 @@ static inline u8 dw_mci_exynos_get_ciu_div(struct dw_mci *host)
>>   		return SDMMC_CLKSEL_GET_DIV(mci_readl(host, CLKSEL)) + 1;
>>   }
>>
>> -static int dw_mci_exynos_priv_init(struct dw_mci *host)
>> +static int dw_mci_exynos_priv_init(struct dw_mci *host, bool setup_clk)
>>   {
>
> "bool setup_clk" is made because of exynos SoC, right?

yes, add it for exynos Soc.
Thanks for considering the moving.

> Hmm. I'm checking how we can control without "setup_clk". Waiting for this.
>
> Thanks for removing the hooks. :)
>
> Best Regards,
> Jaehoon Chung
>
>>   	struct dw_mci_exynos_priv_data *priv = host->priv;
>>
>> @@ -159,7 +159,7 @@ static int dw_mci_exynos_resume(struct device *dev)
>>   {
>>   	struct dw_mci *host = dev_get_drvdata(dev);
>>
>> -	dw_mci_exynos_priv_init(host);
>> +	dw_mci_exynos_priv_init(host, false);
>>   	return dw_mci_resume(host);
>>   }
>>
>> diff --git a/drivers/mmc/host/dw_mmc-rockchip.c b/drivers/mmc/host/dw_mmc-rockchip.c
>> index 9934503..885c801 100644
>> --- a/drivers/mmc/host/dw_mmc-rockchip.c
>> +++ b/drivers/mmc/host/dw_mmc-rockchip.c
>> @@ -221,7 +221,7 @@ static int dw_mci_rk3288_parse_dt(struct dw_mci *host)
>>   	return 0;
>>   }
>>
>> -static int dw_mci_rockchip_init(struct dw_mci *host)
>> +static int dw_mci_rockchip_init(struct dw_mci *host, bool setup_clk)
>>   {
>>   	/* It is slot 8 on Rockchip SoCs */
>>   	host->sdio_id0 = 8;
>> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
>> index 7128351..1d27a2b 100644
>> --- a/drivers/mmc/host/dw_mmc.c
>> +++ b/drivers/mmc/host/dw_mmc.c
>> @@ -2995,7 +2995,7 @@ int dw_mci_probe(struct dw_mci *host)
>>   	}
>>
>>   	if (drv_data && drv_data->init) {
>> -		ret = drv_data->init(host);
>> +		ret = drv_data->init(host, true);
>>   		if (ret) {
>>   			dev_err(host->dev,
>>   				"implementation specific init failed\n");
>> diff --git a/drivers/mmc/host/dw_mmc.h b/drivers/mmc/host/dw_mmc.h
>> index f695b58..1a9492e 100644
>> --- a/drivers/mmc/host/dw_mmc.h
>> +++ b/drivers/mmc/host/dw_mmc.h
>> @@ -285,7 +285,7 @@ struct dw_mci_slot {
>>    */
>>   struct dw_mci_drv_data {
>>   	unsigned long	*caps;
>> -	int		(*init)(struct dw_mci *host);
>> +	int		(*init)(struct dw_mci *host, bool setup_clk);
>>   	int		(*setup_clock)(struct dw_mci *host);
>>   	void		(*prepare_command)(struct dw_mci *host, u32 *cmdr);
>>   	void		(*set_ios)(struct dw_mci *host, struct mmc_ios *ios);
>>
>
>
>
>


-- 
Best Regards
Shawn Lin

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 0/4] Cleanup setup_clock callback from dw_mmc
  2016-01-28  1:30 [PATCH 0/4] Cleanup setup_clock callback from dw_mmc Shawn Lin
                   ` (3 preceding siblings ...)
  2016-01-28  1:31 ` [PATCH 4/4] mmc: dw_mmc: remove setup_clock callback Shawn Lin
@ 2016-03-31  6:37 ` Jaehoon Chung
  4 siblings, 0 replies; 9+ messages in thread
From: Jaehoon Chung @ 2016-03-31  6:37 UTC (permalink / raw)
  To: Shawn Lin, Ulf Hansson; +Cc: linux-mmc, linux-kernel

Hi Shawn,


On 01/28/2016 10:30 AM, Shawn Lin wrote:
> Hello Jeahoon
> 
> Currently dw_mmc is a little too queen-size. As we had cleanup
> prepare_command callback some days before, there are also some
> ones deserve to remove. Also we should avoid add new quirks or
> callbacks into dw_mmc in order to avoid the dilemma sdhci meets
> now.
> 
> This patchset remove setup_clock callback. Obviously, adding a
> callback just for one-time-used clk stuff makes no sense. We combine
> what setup_clock does before into init callback. For exynos platfrom,
> it needs call init hook after resume, so we add new argument in init
> hook to indicate whether it needs do clk stuff or not.
> 

I sent the patch "mmc: dw_mmc: exynos: add the function for controlling SMU"
https://patchwork.kernel.org/patch/8707591/

Then it doesn't need this patch for adding setup_clk argument.
"mmc: dw_mmc: add setup_clk for init hook"

Could you resend the patch-set after applying my patch?

Best Regards,
Jaehoon Chung

> 
> 
> Shawn Lin (4):
>   mmc: dw_mmc-rockchip: remove setup_clock for rockchip
>   mmc: dw_mmc: add setup_clk for init hook
>   mmc: dw_mmc-exynos: remove dw_mci_exynos_setup_clock
>   mmc: dw_mmc: remove setup_clock callback
> 
>  drivers/mmc/host/dw_mmc-exynos.c   | 15 ++++-----------
>  drivers/mmc/host/dw_mmc-rockchip.c | 14 +++++---------
>  drivers/mmc/host/dw_mmc.c          | 11 +----------
>  drivers/mmc/host/dw_mmc.h          |  3 +--
>  4 files changed, 11 insertions(+), 32 deletions(-)
> 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 4/4] mmc: dw_mmc: remove setup_clock callback
  2016-01-28  1:31 ` [PATCH 4/4] mmc: dw_mmc: remove setup_clock callback Shawn Lin
@ 2016-03-31  6:38   ` Jaehoon Chung
  0 siblings, 0 replies; 9+ messages in thread
From: Jaehoon Chung @ 2016-03-31  6:38 UTC (permalink / raw)
  To: Shawn Lin, Ulf Hansson; +Cc: linux-mmc, linux-kernel

On 01/28/2016 10:31 AM, Shawn Lin wrote:
> Now, no dw_mmc variant drivers use this callback, let's
> remove it.
> 
> Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
> ---
> 
>  drivers/mmc/host/dw_mmc.c | 9 ---------
>  drivers/mmc/host/dw_mmc.h | 1 -
>  2 files changed, 10 deletions(-)
> 
> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
> index 1d27a2b..ee13374 100644
> --- a/drivers/mmc/host/dw_mmc.c
> +++ b/drivers/mmc/host/dw_mmc.c
> @@ -3003,15 +3003,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;
> -		}
> -	}
> -
>  	setup_timer(&host->cmd11_timer,
>  		    dw_mci_cmd11_timer, (unsigned long)host);
>  
> diff --git a/drivers/mmc/host/dw_mmc.h b/drivers/mmc/host/dw_mmc.h
> index 1a9492e..bfc2a4d 100644
> --- a/drivers/mmc/host/dw_mmc.h
> +++ b/drivers/mmc/host/dw_mmc.h
> @@ -286,7 +286,6 @@ struct dw_mci_slot {
>  struct dw_mci_drv_data {
>  	unsigned long	*caps;
>  	int		(*init)(struct dw_mci *host, bool setup_clk);
> -	int		(*setup_clock)(struct dw_mci *host);

Could you remove the description for setup_clock?

  * @init: early implementation specific initialization.
- * @setup_clock: implementation specific clock configuration.
  * @set_ios: handle bus specific extensions.
  * @parse_dt: parse implementation specific device tree properties.
  * @execute_tuning: implementation specific tuning procedure.

Best Regards,
Jaehoon Chung

>  	void		(*prepare_command)(struct dw_mci *host, u32 *cmdr);
>  	void		(*set_ios)(struct dw_mci *host, struct mmc_ios *ios);
>  	int		(*parse_dt)(struct dw_mci *host);
> 

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2016-03-31  6:38 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-01-28  1:30 [PATCH 0/4] Cleanup setup_clock callback from dw_mmc Shawn Lin
2016-01-28  1:30 ` [PATCH 1/4] mmc: dw_mmc-rockchip: remove setup_clock for rockchip Shawn Lin
2016-01-28  1:31 ` [PATCH 2/4] mmc: dw_mmc: add setup_clk for init hook Shawn Lin
2016-02-04  6:04   ` Jaehoon Chung
2016-02-12 11:30     ` Shawn Lin
2016-01-28  1:31 ` [PATCH 3/4] mmc: dw_mmc-exynos: remove dw_mci_exynos_setup_clock Shawn Lin
2016-01-28  1:31 ` [PATCH 4/4] mmc: dw_mmc: remove setup_clock callback Shawn Lin
2016-03-31  6:38   ` Jaehoon Chung
2016-03-31  6:37 ` [PATCH 0/4] Cleanup setup_clock callback from dw_mmc Jaehoon Chung

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.