All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] i2c: s3c2410: Print errno code in error logs
@ 2016-04-19 20:10 ` Javier Martinez Canillas
  0 siblings, 0 replies; 10+ messages in thread
From: Javier Martinez Canillas @ 2016-04-19 20:10 UTC (permalink / raw)
  To: linux-kernel
  Cc: Javier Martinez Canillas, linux-samsung-soc, Krzysztof Kozlowski,
	Wolfram Sang, Kukjin Kim, linux-i2c, linux-arm-kernel

The driver not always prints the error code in case of a failure but this
information can be very useful for debugging. So let's print if available.

Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>

---

Hello,

This patch and 2/2 were only build tested because I don't have access to
a board using this IP block. I just noticed these issues when comparing
the i2c-s3c2410 driver with i2c-exynos5 where I did some fixes recently.

I think the patches are simple enough that is safe to pick them but of
course testing will be highly appreciated.

Best regards,
Javier

 drivers/i2c/busses/i2c-s3c2410.c | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/drivers/i2c/busses/i2c-s3c2410.c b/drivers/i2c/busses/i2c-s3c2410.c
index 362a6de54833..4b873fe9a75b 100644
--- a/drivers/i2c/busses/i2c-s3c2410.c
+++ b/drivers/i2c/busses/i2c-s3c2410.c
@@ -944,7 +944,7 @@ static int s3c24xx_i2c_cpufreq_transition(struct notifier_block *nb,
 		i2c_unlock_adapter(&i2c->adap);
 
 		if (ret < 0)
-			dev_err(i2c->dev, "cannot find frequency\n");
+			dev_err(i2c->dev, "cannot find frequency (%d)\n", ret);
 		else
 			dev_info(i2c->dev, "setting freq %d\n", got);
 	}
@@ -995,7 +995,8 @@ static int s3c24xx_i2c_parse_dt_gpio(struct s3c24xx_i2c *i2c)
 
 		ret = gpio_request(gpio, "i2c-bus");
 		if (ret) {
-			dev_err(i2c->dev, "gpio [%d] request failed\n", gpio);
+			dev_err(i2c->dev, "gpio [%d] request failed (%d)\n",
+				gpio, ret);
 			goto free_gpio;
 		}
 	}
@@ -1199,7 +1200,7 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)
 	ret = s3c24xx_i2c_init(i2c);
 	clk_disable(i2c->clk);
 	if (ret != 0) {
-		dev_err(&pdev->dev, "I2C controller init failed\n");
+		dev_err(&pdev->dev, "I2C controller init failed (%d)\n", ret);
 		return ret;
 	}
 	/* find the IRQ for this unit (note, this relies on the init call to
@@ -1209,7 +1210,7 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)
 	if (!(i2c->quirks & QUIRK_POLL)) {
 		i2c->irq = ret = platform_get_irq(pdev, 0);
 		if (ret <= 0) {
-			dev_err(&pdev->dev, "cannot find IRQ\n");
+			dev_err(&pdev->dev, "cannot find IRQ (%d)\n", ret);
 			clk_unprepare(i2c->clk);
 			return ret;
 		}
@@ -1218,7 +1219,8 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)
 				dev_name(&pdev->dev), i2c);
 
 		if (ret != 0) {
-			dev_err(&pdev->dev, "cannot claim IRQ %d\n", i2c->irq);
+			dev_err(&pdev->dev, "cannot claim IRQ %d (%d)\n",
+				i2c->irq, ret);
 			clk_unprepare(i2c->clk);
 			return ret;
 		}
@@ -1226,7 +1228,8 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)
 
 	ret = s3c24xx_i2c_register_cpufreq(i2c);
 	if (ret < 0) {
-		dev_err(&pdev->dev, "failed to register cpufreq notifier\n");
+		dev_err(&pdev->dev, "failed to register cpufreq notifier (%d)\n",
+			ret);
 		clk_unprepare(i2c->clk);
 		return ret;
 	}
@@ -1246,7 +1249,8 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)
 
 	ret = i2c_add_numbered_adapter(&i2c->adap);
 	if (ret < 0) {
-		dev_err(&pdev->dev, "failed to add bus to i2c core\n");
+		dev_err(&pdev->dev, "failed to add bus to i2c core (%d)\n",
+			ret);
 		pm_runtime_disable(&pdev->dev);
 		s3c24xx_i2c_deregister_cpufreq(i2c);
 		clk_unprepare(i2c->clk);
-- 
2.5.5

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

* [PATCH 1/2] i2c: s3c2410: Print errno code in error logs
@ 2016-04-19 20:10 ` Javier Martinez Canillas
  0 siblings, 0 replies; 10+ messages in thread
From: Javier Martinez Canillas @ 2016-04-19 20:10 UTC (permalink / raw)
  To: linux-arm-kernel

The driver not always prints the error code in case of a failure but this
information can be very useful for debugging. So let's print if available.

Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>

---

Hello,

This patch and 2/2 were only build tested because I don't have access to
a board using this IP block. I just noticed these issues when comparing
the i2c-s3c2410 driver with i2c-exynos5 where I did some fixes recently.

I think the patches are simple enough that is safe to pick them but of
course testing will be highly appreciated.

Best regards,
Javier

 drivers/i2c/busses/i2c-s3c2410.c | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/drivers/i2c/busses/i2c-s3c2410.c b/drivers/i2c/busses/i2c-s3c2410.c
index 362a6de54833..4b873fe9a75b 100644
--- a/drivers/i2c/busses/i2c-s3c2410.c
+++ b/drivers/i2c/busses/i2c-s3c2410.c
@@ -944,7 +944,7 @@ static int s3c24xx_i2c_cpufreq_transition(struct notifier_block *nb,
 		i2c_unlock_adapter(&i2c->adap);
 
 		if (ret < 0)
-			dev_err(i2c->dev, "cannot find frequency\n");
+			dev_err(i2c->dev, "cannot find frequency (%d)\n", ret);
 		else
 			dev_info(i2c->dev, "setting freq %d\n", got);
 	}
@@ -995,7 +995,8 @@ static int s3c24xx_i2c_parse_dt_gpio(struct s3c24xx_i2c *i2c)
 
 		ret = gpio_request(gpio, "i2c-bus");
 		if (ret) {
-			dev_err(i2c->dev, "gpio [%d] request failed\n", gpio);
+			dev_err(i2c->dev, "gpio [%d] request failed (%d)\n",
+				gpio, ret);
 			goto free_gpio;
 		}
 	}
@@ -1199,7 +1200,7 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)
 	ret = s3c24xx_i2c_init(i2c);
 	clk_disable(i2c->clk);
 	if (ret != 0) {
-		dev_err(&pdev->dev, "I2C controller init failed\n");
+		dev_err(&pdev->dev, "I2C controller init failed (%d)\n", ret);
 		return ret;
 	}
 	/* find the IRQ for this unit (note, this relies on the init call to
@@ -1209,7 +1210,7 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)
 	if (!(i2c->quirks & QUIRK_POLL)) {
 		i2c->irq = ret = platform_get_irq(pdev, 0);
 		if (ret <= 0) {
-			dev_err(&pdev->dev, "cannot find IRQ\n");
+			dev_err(&pdev->dev, "cannot find IRQ (%d)\n", ret);
 			clk_unprepare(i2c->clk);
 			return ret;
 		}
@@ -1218,7 +1219,8 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)
 				dev_name(&pdev->dev), i2c);
 
 		if (ret != 0) {
-			dev_err(&pdev->dev, "cannot claim IRQ %d\n", i2c->irq);
+			dev_err(&pdev->dev, "cannot claim IRQ %d (%d)\n",
+				i2c->irq, ret);
 			clk_unprepare(i2c->clk);
 			return ret;
 		}
@@ -1226,7 +1228,8 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)
 
 	ret = s3c24xx_i2c_register_cpufreq(i2c);
 	if (ret < 0) {
-		dev_err(&pdev->dev, "failed to register cpufreq notifier\n");
+		dev_err(&pdev->dev, "failed to register cpufreq notifier (%d)\n",
+			ret);
 		clk_unprepare(i2c->clk);
 		return ret;
 	}
@@ -1246,7 +1249,8 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)
 
 	ret = i2c_add_numbered_adapter(&i2c->adap);
 	if (ret < 0) {
-		dev_err(&pdev->dev, "failed to add bus to i2c core\n");
+		dev_err(&pdev->dev, "failed to add bus to i2c core (%d)\n",
+			ret);
 		pm_runtime_disable(&pdev->dev);
 		s3c24xx_i2c_deregister_cpufreq(i2c);
 		clk_unprepare(i2c->clk);
-- 
2.5.5

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

* [PATCH 2/2] i2c: s3c2410: Check clk_prepare_enable() return value
  2016-04-19 20:10 ` Javier Martinez Canillas
@ 2016-04-19 20:10   ` Javier Martinez Canillas
  -1 siblings, 0 replies; 10+ messages in thread
From: Javier Martinez Canillas @ 2016-04-19 20:10 UTC (permalink / raw)
  To: linux-kernel
  Cc: Javier Martinez Canillas, linux-samsung-soc, Krzysztof Kozlowski,
	Wolfram Sang, Kukjin Kim, linux-i2c, linux-arm-kernel

The clk_prepare_enable() function can fail so check the return
value and propagate the error in case of a failure.

Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>

---

 drivers/i2c/busses/i2c-s3c2410.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/i2c/busses/i2c-s3c2410.c b/drivers/i2c/busses/i2c-s3c2410.c
index 4b873fe9a75b..cb40a3af46e7 100644
--- a/drivers/i2c/busses/i2c-s3c2410.c
+++ b/drivers/i2c/busses/i2c-s3c2410.c
@@ -1196,7 +1196,12 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)
 
 	/* initialise the i2c controller */
 
-	clk_prepare_enable(i2c->clk);
+	ret = clk_prepare_enable(i2c->clk);
+	if (ret) {
+		dev_err(&pdev->dev, "I2C clock enable failed (%d)\n", ret);
+		return ret;
+	}
+
 	ret = s3c24xx_i2c_init(i2c);
 	clk_disable(i2c->clk);
 	if (ret != 0) {
-- 
2.5.5

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

* [PATCH 2/2] i2c: s3c2410: Check clk_prepare_enable() return value
@ 2016-04-19 20:10   ` Javier Martinez Canillas
  0 siblings, 0 replies; 10+ messages in thread
From: Javier Martinez Canillas @ 2016-04-19 20:10 UTC (permalink / raw)
  To: linux-arm-kernel

The clk_prepare_enable() function can fail so check the return
value and propagate the error in case of a failure.

Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>

---

 drivers/i2c/busses/i2c-s3c2410.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/i2c/busses/i2c-s3c2410.c b/drivers/i2c/busses/i2c-s3c2410.c
index 4b873fe9a75b..cb40a3af46e7 100644
--- a/drivers/i2c/busses/i2c-s3c2410.c
+++ b/drivers/i2c/busses/i2c-s3c2410.c
@@ -1196,7 +1196,12 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)
 
 	/* initialise the i2c controller */
 
-	clk_prepare_enable(i2c->clk);
+	ret = clk_prepare_enable(i2c->clk);
+	if (ret) {
+		dev_err(&pdev->dev, "I2C clock enable failed (%d)\n", ret);
+		return ret;
+	}
+
 	ret = s3c24xx_i2c_init(i2c);
 	clk_disable(i2c->clk);
 	if (ret != 0) {
-- 
2.5.5

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

* Re: [PATCH 1/2] i2c: s3c2410: Print errno code in error logs
  2016-04-19 20:10 ` Javier Martinez Canillas
@ 2016-04-20  9:01   ` Krzysztof Kozlowski
  -1 siblings, 0 replies; 10+ messages in thread
From: Krzysztof Kozlowski @ 2016-04-20  9:01 UTC (permalink / raw)
  To: Javier Martinez Canillas, linux-kernel
  Cc: linux-samsung-soc, Wolfram Sang, Kukjin Kim, linux-i2c, linux-arm-kernel

On 04/19/2016 10:10 PM, Javier Martinez Canillas wrote:
> The driver not always prints the error code in case of a failure but this
> information can be very useful for debugging. So let's print if available.
> 
> Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
> 
> ---
> 
> Hello,
> 
> This patch and 2/2 were only build tested because I don't have access to
> a board using this IP block. I just noticed these issues when comparing
> the i2c-s3c2410 driver with i2c-exynos5 where I did some fixes recently.
> 
> I think the patches are simple enough that is safe to pick them but of
> course testing will be highly appreciated.
> 
> Best regards,
> Javier
> 
>  drivers/i2c/busses/i2c-s3c2410.c | 18 +++++++++++-------
>  1 file changed, 11 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/i2c/busses/i2c-s3c2410.c b/drivers/i2c/busses/i2c-s3c2410.c
> index 362a6de54833..4b873fe9a75b 100644
> --- a/drivers/i2c/busses/i2c-s3c2410.c
> +++ b/drivers/i2c/busses/i2c-s3c2410.c
> @@ -944,7 +944,7 @@ static int s3c24xx_i2c_cpufreq_transition(struct notifier_block *nb,
>  		i2c_unlock_adapter(&i2c->adap);
>  
>  		if (ret < 0)
> -			dev_err(i2c->dev, "cannot find frequency\n");
> +			dev_err(i2c->dev, "cannot find frequency (%d)\n", ret);
>  		else
>  			dev_info(i2c->dev, "setting freq %d\n", got);
>  	}
> @@ -995,7 +995,8 @@ static int s3c24xx_i2c_parse_dt_gpio(struct s3c24xx_i2c *i2c)
>  
>  		ret = gpio_request(gpio, "i2c-bus");
>  		if (ret) {
> -			dev_err(i2c->dev, "gpio [%d] request failed\n", gpio);
> +			dev_err(i2c->dev, "gpio [%d] request failed (%d)\n",
> +				gpio, ret);
>  			goto free_gpio;
>  		}
>  	}

The changes above are okay. Below - do not make sense. Just think...
What do you want to improve? The probe failure already prints errno!


Just look at crafted example (error triggered manually):
[    0.135443] s3c-i2c 13860000.i2c: I2C clock enable failed (-100)
[    0.135484] s3c-i2c: probe of 13860000.i2c failed with error -100

Best regards,
Krzysztof

> @@ -1199,7 +1200,7 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)
>  	ret = s3c24xx_i2c_init(i2c);
>  	clk_disable(i2c->clk);
>  	if (ret != 0) {
> -		dev_err(&pdev->dev, "I2C controller init failed\n");
> +		dev_err(&pdev->dev, "I2C controller init failed (%d)\n", ret);
>  		return ret;
>  	}
>  	/* find the IRQ for this unit (note, this relies on the init call to
> @@ -1209,7 +1210,7 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)
>  	if (!(i2c->quirks & QUIRK_POLL)) {
>  		i2c->irq = ret = platform_get_irq(pdev, 0);
>  		if (ret <= 0) {
> -			dev_err(&pdev->dev, "cannot find IRQ\n");
> +			dev_err(&pdev->dev, "cannot find IRQ (%d)\n", ret);
>  			clk_unprepare(i2c->clk);
>  			return ret;
>  		}
> @@ -1218,7 +1219,8 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)
>  				dev_name(&pdev->dev), i2c);
>  
>  		if (ret != 0) {
> -			dev_err(&pdev->dev, "cannot claim IRQ %d\n", i2c->irq);
> +			dev_err(&pdev->dev, "cannot claim IRQ %d (%d)\n",
> +				i2c->irq, ret);
>  			clk_unprepare(i2c->clk);
>  			return ret;
>  		}
> @@ -1226,7 +1228,8 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)
>  
>  	ret = s3c24xx_i2c_register_cpufreq(i2c);
>  	if (ret < 0) {
> -		dev_err(&pdev->dev, "failed to register cpufreq notifier\n");
> +		dev_err(&pdev->dev, "failed to register cpufreq notifier (%d)\n",
> +			ret);
>  		clk_unprepare(i2c->clk);
>  		return ret;
>  	}
> @@ -1246,7 +1249,8 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)
>  
>  	ret = i2c_add_numbered_adapter(&i2c->adap);
>  	if (ret < 0) {
> -		dev_err(&pdev->dev, "failed to add bus to i2c core\n");
> +		dev_err(&pdev->dev, "failed to add bus to i2c core (%d)\n",
> +			ret);
>  		pm_runtime_disable(&pdev->dev);
>  		s3c24xx_i2c_deregister_cpufreq(i2c);
>  		clk_unprepare(i2c->clk);
> 

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

* [PATCH 1/2] i2c: s3c2410: Print errno code in error logs
@ 2016-04-20  9:01   ` Krzysztof Kozlowski
  0 siblings, 0 replies; 10+ messages in thread
From: Krzysztof Kozlowski @ 2016-04-20  9:01 UTC (permalink / raw)
  To: linux-arm-kernel

On 04/19/2016 10:10 PM, Javier Martinez Canillas wrote:
> The driver not always prints the error code in case of a failure but this
> information can be very useful for debugging. So let's print if available.
> 
> Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
> 
> ---
> 
> Hello,
> 
> This patch and 2/2 were only build tested because I don't have access to
> a board using this IP block. I just noticed these issues when comparing
> the i2c-s3c2410 driver with i2c-exynos5 where I did some fixes recently.
> 
> I think the patches are simple enough that is safe to pick them but of
> course testing will be highly appreciated.
> 
> Best regards,
> Javier
> 
>  drivers/i2c/busses/i2c-s3c2410.c | 18 +++++++++++-------
>  1 file changed, 11 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/i2c/busses/i2c-s3c2410.c b/drivers/i2c/busses/i2c-s3c2410.c
> index 362a6de54833..4b873fe9a75b 100644
> --- a/drivers/i2c/busses/i2c-s3c2410.c
> +++ b/drivers/i2c/busses/i2c-s3c2410.c
> @@ -944,7 +944,7 @@ static int s3c24xx_i2c_cpufreq_transition(struct notifier_block *nb,
>  		i2c_unlock_adapter(&i2c->adap);
>  
>  		if (ret < 0)
> -			dev_err(i2c->dev, "cannot find frequency\n");
> +			dev_err(i2c->dev, "cannot find frequency (%d)\n", ret);
>  		else
>  			dev_info(i2c->dev, "setting freq %d\n", got);
>  	}
> @@ -995,7 +995,8 @@ static int s3c24xx_i2c_parse_dt_gpio(struct s3c24xx_i2c *i2c)
>  
>  		ret = gpio_request(gpio, "i2c-bus");
>  		if (ret) {
> -			dev_err(i2c->dev, "gpio [%d] request failed\n", gpio);
> +			dev_err(i2c->dev, "gpio [%d] request failed (%d)\n",
> +				gpio, ret);
>  			goto free_gpio;
>  		}
>  	}

The changes above are okay. Below - do not make sense. Just think...
What do you want to improve? The probe failure already prints errno!


Just look at crafted example (error triggered manually):
[    0.135443] s3c-i2c 13860000.i2c: I2C clock enable failed (-100)
[    0.135484] s3c-i2c: probe of 13860000.i2c failed with error -100

Best regards,
Krzysztof

> @@ -1199,7 +1200,7 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)
>  	ret = s3c24xx_i2c_init(i2c);
>  	clk_disable(i2c->clk);
>  	if (ret != 0) {
> -		dev_err(&pdev->dev, "I2C controller init failed\n");
> +		dev_err(&pdev->dev, "I2C controller init failed (%d)\n", ret);
>  		return ret;
>  	}
>  	/* find the IRQ for this unit (note, this relies on the init call to
> @@ -1209,7 +1210,7 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)
>  	if (!(i2c->quirks & QUIRK_POLL)) {
>  		i2c->irq = ret = platform_get_irq(pdev, 0);
>  		if (ret <= 0) {
> -			dev_err(&pdev->dev, "cannot find IRQ\n");
> +			dev_err(&pdev->dev, "cannot find IRQ (%d)\n", ret);
>  			clk_unprepare(i2c->clk);
>  			return ret;
>  		}
> @@ -1218,7 +1219,8 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)
>  				dev_name(&pdev->dev), i2c);
>  
>  		if (ret != 0) {
> -			dev_err(&pdev->dev, "cannot claim IRQ %d\n", i2c->irq);
> +			dev_err(&pdev->dev, "cannot claim IRQ %d (%d)\n",
> +				i2c->irq, ret);
>  			clk_unprepare(i2c->clk);
>  			return ret;
>  		}
> @@ -1226,7 +1228,8 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)
>  
>  	ret = s3c24xx_i2c_register_cpufreq(i2c);
>  	if (ret < 0) {
> -		dev_err(&pdev->dev, "failed to register cpufreq notifier\n");
> +		dev_err(&pdev->dev, "failed to register cpufreq notifier (%d)\n",
> +			ret);
>  		clk_unprepare(i2c->clk);
>  		return ret;
>  	}
> @@ -1246,7 +1249,8 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)
>  
>  	ret = i2c_add_numbered_adapter(&i2c->adap);
>  	if (ret < 0) {
> -		dev_err(&pdev->dev, "failed to add bus to i2c core\n");
> +		dev_err(&pdev->dev, "failed to add bus to i2c core (%d)\n",
> +			ret);
>  		pm_runtime_disable(&pdev->dev);
>  		s3c24xx_i2c_deregister_cpufreq(i2c);
>  		clk_unprepare(i2c->clk);
> 

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

* Re: [PATCH 2/2] i2c: s3c2410: Check clk_prepare_enable() return value
  2016-04-19 20:10   ` Javier Martinez Canillas
@ 2016-04-20  9:02     ` Krzysztof Kozlowski
  -1 siblings, 0 replies; 10+ messages in thread
From: Krzysztof Kozlowski @ 2016-04-20  9:02 UTC (permalink / raw)
  To: Javier Martinez Canillas, linux-kernel
  Cc: linux-samsung-soc, Wolfram Sang, Kukjin Kim, linux-i2c, linux-arm-kernel

On 04/19/2016 10:10 PM, Javier Martinez Canillas wrote:
> The clk_prepare_enable() function can fail so check the return
> value and propagate the error in case of a failure.
> 
> Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
> 
> ---
> 
>  drivers/i2c/busses/i2c-s3c2410.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/i2c/busses/i2c-s3c2410.c b/drivers/i2c/busses/i2c-s3c2410.c
> index 4b873fe9a75b..cb40a3af46e7 100644
> --- a/drivers/i2c/busses/i2c-s3c2410.c
> +++ b/drivers/i2c/busses/i2c-s3c2410.c
> @@ -1196,7 +1196,12 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)
>  
>  	/* initialise the i2c controller */
>  
> -	clk_prepare_enable(i2c->clk);
> +	ret = clk_prepare_enable(i2c->clk);
> +	if (ret) {
> +		dev_err(&pdev->dev, "I2C clock enable failed (%d)\n", ret);

Just: "I2C clock enable failed\n"
The probe error code will be printed anyway.

Best regards,
Krzysztof

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

* [PATCH 2/2] i2c: s3c2410: Check clk_prepare_enable() return value
@ 2016-04-20  9:02     ` Krzysztof Kozlowski
  0 siblings, 0 replies; 10+ messages in thread
From: Krzysztof Kozlowski @ 2016-04-20  9:02 UTC (permalink / raw)
  To: linux-arm-kernel

On 04/19/2016 10:10 PM, Javier Martinez Canillas wrote:
> The clk_prepare_enable() function can fail so check the return
> value and propagate the error in case of a failure.
> 
> Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
> 
> ---
> 
>  drivers/i2c/busses/i2c-s3c2410.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/i2c/busses/i2c-s3c2410.c b/drivers/i2c/busses/i2c-s3c2410.c
> index 4b873fe9a75b..cb40a3af46e7 100644
> --- a/drivers/i2c/busses/i2c-s3c2410.c
> +++ b/drivers/i2c/busses/i2c-s3c2410.c
> @@ -1196,7 +1196,12 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)
>  
>  	/* initialise the i2c controller */
>  
> -	clk_prepare_enable(i2c->clk);
> +	ret = clk_prepare_enable(i2c->clk);
> +	if (ret) {
> +		dev_err(&pdev->dev, "I2C clock enable failed (%d)\n", ret);

Just: "I2C clock enable failed\n"
The probe error code will be printed anyway.

Best regards,
Krzysztof

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

* Re: [PATCH 1/2] i2c: s3c2410: Print errno code in error logs
  2016-04-20  9:01   ` Krzysztof Kozlowski
@ 2016-04-20 13:36     ` Javier Martinez Canillas
  -1 siblings, 0 replies; 10+ messages in thread
From: Javier Martinez Canillas @ 2016-04-20 13:36 UTC (permalink / raw)
  To: Krzysztof Kozlowski, linux-kernel
  Cc: linux-samsung-soc, Wolfram Sang, Kukjin Kim, linux-i2c, linux-arm-kernel

Hello Krzysztof,

Thanks a lot for your feedback.

On 04/20/2016 05:01 AM, Krzysztof Kozlowski wrote:
> On 04/19/2016 10:10 PM, Javier Martinez Canillas wrote:
>> The driver not always prints the error code in case of a failure but this
>> information can be very useful for debugging. So let's print if available.
>>
>> Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
>>
>> ---
>>
>> Hello,
>>
>> This patch and 2/2 were only build tested because I don't have access to
>> a board using this IP block. I just noticed these issues when comparing
>> the i2c-s3c2410 driver with i2c-exynos5 where I did some fixes recently.
>>
>> I think the patches are simple enough that is safe to pick them but of
>> course testing will be highly appreciated.
>>
>> Best regards,
>> Javier
>>
>>  drivers/i2c/busses/i2c-s3c2410.c | 18 +++++++++++-------
>>  1 file changed, 11 insertions(+), 7 deletions(-)
>>
>> diff --git a/drivers/i2c/busses/i2c-s3c2410.c b/drivers/i2c/busses/i2c-s3c2410.c
>> index 362a6de54833..4b873fe9a75b 100644
>> --- a/drivers/i2c/busses/i2c-s3c2410.c
>> +++ b/drivers/i2c/busses/i2c-s3c2410.c
>> @@ -944,7 +944,7 @@ static int s3c24xx_i2c_cpufreq_transition(struct notifier_block *nb,
>>  		i2c_unlock_adapter(&i2c->adap);
>>  
>>  		if (ret < 0)
>> -			dev_err(i2c->dev, "cannot find frequency\n");
>> +			dev_err(i2c->dev, "cannot find frequency (%d)\n", ret);
>>  		else
>>  			dev_info(i2c->dev, "setting freq %d\n", got);
>>  	}
>> @@ -995,7 +995,8 @@ static int s3c24xx_i2c_parse_dt_gpio(struct s3c24xx_i2c *i2c)
>>  
>>  		ret = gpio_request(gpio, "i2c-bus");
>>  		if (ret) {
>> -			dev_err(i2c->dev, "gpio [%d] request failed\n", gpio);
>> +			dev_err(i2c->dev, "gpio [%d] request failed (%d)\n",
>> +				gpio, ret);
>>  			goto free_gpio;
>>  		}
>>  	}
> 
> The changes above are okay. Below - do not make sense. Just think...
> What do you want to improve? The probe failure already prints errno!
>
> 
> Just look at crafted example (error triggered manually):
> [    0.135443] s3c-i2c 13860000.i2c: I2C clock enable failed (-100)
> [    0.135484] s3c-i2c: probe of 13860000.i2c failed with error -100
>

Sorry, I missed that. I should had looked more carefully to the call path...

I'll post a v2 with only the changes that makes sense.

> Best regards,
> Krzysztof
> 

Best regards,
-- 
Javier Martinez Canillas
Open Source Group
Samsung Research America

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

* [PATCH 1/2] i2c: s3c2410: Print errno code in error logs
@ 2016-04-20 13:36     ` Javier Martinez Canillas
  0 siblings, 0 replies; 10+ messages in thread
From: Javier Martinez Canillas @ 2016-04-20 13:36 UTC (permalink / raw)
  To: linux-arm-kernel

Hello Krzysztof,

Thanks a lot for your feedback.

On 04/20/2016 05:01 AM, Krzysztof Kozlowski wrote:
> On 04/19/2016 10:10 PM, Javier Martinez Canillas wrote:
>> The driver not always prints the error code in case of a failure but this
>> information can be very useful for debugging. So let's print if available.
>>
>> Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
>>
>> ---
>>
>> Hello,
>>
>> This patch and 2/2 were only build tested because I don't have access to
>> a board using this IP block. I just noticed these issues when comparing
>> the i2c-s3c2410 driver with i2c-exynos5 where I did some fixes recently.
>>
>> I think the patches are simple enough that is safe to pick them but of
>> course testing will be highly appreciated.
>>
>> Best regards,
>> Javier
>>
>>  drivers/i2c/busses/i2c-s3c2410.c | 18 +++++++++++-------
>>  1 file changed, 11 insertions(+), 7 deletions(-)
>>
>> diff --git a/drivers/i2c/busses/i2c-s3c2410.c b/drivers/i2c/busses/i2c-s3c2410.c
>> index 362a6de54833..4b873fe9a75b 100644
>> --- a/drivers/i2c/busses/i2c-s3c2410.c
>> +++ b/drivers/i2c/busses/i2c-s3c2410.c
>> @@ -944,7 +944,7 @@ static int s3c24xx_i2c_cpufreq_transition(struct notifier_block *nb,
>>  		i2c_unlock_adapter(&i2c->adap);
>>  
>>  		if (ret < 0)
>> -			dev_err(i2c->dev, "cannot find frequency\n");
>> +			dev_err(i2c->dev, "cannot find frequency (%d)\n", ret);
>>  		else
>>  			dev_info(i2c->dev, "setting freq %d\n", got);
>>  	}
>> @@ -995,7 +995,8 @@ static int s3c24xx_i2c_parse_dt_gpio(struct s3c24xx_i2c *i2c)
>>  
>>  		ret = gpio_request(gpio, "i2c-bus");
>>  		if (ret) {
>> -			dev_err(i2c->dev, "gpio [%d] request failed\n", gpio);
>> +			dev_err(i2c->dev, "gpio [%d] request failed (%d)\n",
>> +				gpio, ret);
>>  			goto free_gpio;
>>  		}
>>  	}
> 
> The changes above are okay. Below - do not make sense. Just think...
> What do you want to improve? The probe failure already prints errno!
>
> 
> Just look at crafted example (error triggered manually):
> [    0.135443] s3c-i2c 13860000.i2c: I2C clock enable failed (-100)
> [    0.135484] s3c-i2c: probe of 13860000.i2c failed with error -100
>

Sorry, I missed that. I should had looked more carefully to the call path...

I'll post a v2 with only the changes that makes sense.

> Best regards,
> Krzysztof
> 

Best regards,
-- 
Javier Martinez Canillas
Open Source Group
Samsung Research America

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

end of thread, other threads:[~2016-04-20 13:36 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-04-19 20:10 [PATCH 1/2] i2c: s3c2410: Print errno code in error logs Javier Martinez Canillas
2016-04-19 20:10 ` Javier Martinez Canillas
2016-04-19 20:10 ` [PATCH 2/2] i2c: s3c2410: Check clk_prepare_enable() return value Javier Martinez Canillas
2016-04-19 20:10   ` Javier Martinez Canillas
2016-04-20  9:02   ` Krzysztof Kozlowski
2016-04-20  9:02     ` Krzysztof Kozlowski
2016-04-20  9:01 ` [PATCH 1/2] i2c: s3c2410: Print errno code in error logs Krzysztof Kozlowski
2016-04-20  9:01   ` Krzysztof Kozlowski
2016-04-20 13:36   ` Javier Martinez Canillas
2016-04-20 13:36     ` Javier Martinez Canillas

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.