public inbox for linux-i2c@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v6] i2c: designware: Add support for recovery when GPIO need pinctrl.
@ 2023-08-22 14:34 Yann Sionneau
  2023-08-22 14:43 ` Andy Shevchenko
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Yann Sionneau @ 2023-08-22 14:34 UTC (permalink / raw)
  To: Jarkko Nikula, Andy Shevchenko, Mika Westerberg, Julian Vetter
  Cc: linux-i2c, linux-kernel, Yann Sionneau

Currently if the SoC needs pinctrl to switch the SCL and SDA from the I2C
function to GPIO function, the recovery won't work.

scl-gpio = <>;
sda-gpio = <>;

Are not enough for some SoCs to have a working recovery.
Some need:

scl-gpio = <>;
sda-gpio = <>;
pinctrl-names = "default", "recovery";
pinctrl-0 = <&i2c_pins_hw>;
pinctrl-1 = <&i2c_pins_gpio>;

The driver was not filling rinfo->pinctrl with the device node
pinctrl data which is needed by generic recovery code.

Signed-off-by: Yann Sionneau <ysionneau@kalray.eu>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
V5 -> V6:
* Put a proper commit msg subject

V4 -> V5:
* put back `else if`
* reword the commit msg Subject to add the `i2c: designware: ` tag
* Add the missing `Reviewed-by: Andy Shevchenko` tag

V3 -> V4:
* Replace `else if` by simply `if`.

V2 -> V3:
* put back 'if (!rinfo->pinctrl)' test since devm_pinctrl_get()
can return NULL if CONFIG_PINCTRL is not set.
* print an error msg when devm_pinctrl_get() returns an error that
is not -EPROBE_DEFER.
* print a dbg msg if devm_pinctrl_get() return NULL. 

V1 -> V2:
* remove the unnecessary 'if (!rinfo->pinctrl)' test
* test if return is -EPROBE_DEFER, in that case, return it.
* Reword the commit message according to review

 drivers/i2c/busses/i2c-designware-master.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/drivers/i2c/busses/i2c-designware-master.c b/drivers/i2c/busses/i2c-designware-master.c
index b720fcc5c10a..30b2de829a32 100644
--- a/drivers/i2c/busses/i2c-designware-master.c
+++ b/drivers/i2c/busses/i2c-designware-master.c
@@ -17,6 +17,7 @@
 #include <linux/interrupt.h>
 #include <linux/io.h>
 #include <linux/module.h>
+#include <linux/pinctrl/consumer.h>
 #include <linux/pm_runtime.h>
 #include <linux/regmap.h>
 #include <linux/reset.h>
@@ -855,6 +856,17 @@ static int i2c_dw_init_recovery_info(struct dw_i2c_dev *dev)
 		return PTR_ERR(gpio);
 	rinfo->sda_gpiod = gpio;
 
+	rinfo->pinctrl = devm_pinctrl_get(dev->dev);
+	if (IS_ERR(rinfo->pinctrl)) {
+		if (PTR_ERR(rinfo->pinctrl) == -EPROBE_DEFER)
+			return PTR_ERR(rinfo->pinctrl);
+
+		rinfo->pinctrl = NULL;
+		dev_err(dev->dev, "getting pinctrl info failed: bus recovery might not work\n");
+	} else if (!rinfo->pinctrl) {
+		dev_dbg(dev->dev, "pinctrl is disabled, bus recovery might not work\n");
+	}
+
 	rinfo->recover_bus = i2c_generic_scl_recovery;
 	rinfo->prepare_recovery = i2c_dw_prepare_recovery;
 	rinfo->unprepare_recovery = i2c_dw_unprepare_recovery;
-- 
2.17.1


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

* Re: [PATCH v6] i2c: designware: Add support for recovery when GPIO need pinctrl.
  2023-08-22 14:34 [PATCH v6] i2c: designware: Add support for recovery when GPIO need pinctrl Yann Sionneau
@ 2023-08-22 14:43 ` Andy Shevchenko
  2023-08-24  6:52   ` Jarkko Nikula
  2023-08-24 16:21 ` Andi Shyti
  2023-08-25 20:26 ` Wolfram Sang
  2 siblings, 1 reply; 5+ messages in thread
From: Andy Shevchenko @ 2023-08-22 14:43 UTC (permalink / raw)
  To: Yann Sionneau
  Cc: Jarkko Nikula, Mika Westerberg, Julian Vetter, linux-i2c,
	linux-kernel

On Tue, Aug 22, 2023 at 04:34:37PM +0200, Yann Sionneau wrote:
> Currently if the SoC needs pinctrl to switch the SCL and SDA from the I2C
> function to GPIO function, the recovery won't work.
> 
> scl-gpio = <>;
> sda-gpio = <>;
> 
> Are not enough for some SoCs to have a working recovery.
> Some need:
> 
> scl-gpio = <>;
> sda-gpio = <>;
> pinctrl-names = "default", "recovery";
> pinctrl-0 = <&i2c_pins_hw>;
> pinctrl-1 = <&i2c_pins_gpio>;
> 
> The driver was not filling rinfo->pinctrl with the device node
> pinctrl data which is needed by generic recovery code.

Now looks pretty much good enough (yet the period is not needed in the Subject,
but it's fine for your newbie submission — no need to resend or make a new
version). Thank you!

-- 
With Best Regards,
Andy Shevchenko



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

* Re: [PATCH v6] i2c: designware: Add support for recovery when GPIO need pinctrl.
  2023-08-22 14:43 ` Andy Shevchenko
@ 2023-08-24  6:52   ` Jarkko Nikula
  0 siblings, 0 replies; 5+ messages in thread
From: Jarkko Nikula @ 2023-08-24  6:52 UTC (permalink / raw)
  To: Andy Shevchenko, Yann Sionneau
  Cc: Mika Westerberg, Julian Vetter, linux-i2c, linux-kernel,
	Andi Shyti

On 8/22/23 17:43, Andy Shevchenko wrote:
> On Tue, Aug 22, 2023 at 04:34:37PM +0200, Yann Sionneau wrote:
>> Currently if the SoC needs pinctrl to switch the SCL and SDA from the I2C
>> function to GPIO function, the recovery won't work.
>>
>> scl-gpio = <>;
>> sda-gpio = <>;
>>
>> Are not enough for some SoCs to have a working recovery.
>> Some need:
>>
>> scl-gpio = <>;
>> sda-gpio = <>;
>> pinctrl-names = "default", "recovery";
>> pinctrl-0 = <&i2c_pins_hw>;
>> pinctrl-1 = <&i2c_pins_gpio>;
>>
>> The driver was not filling rinfo->pinctrl with the device node
>> pinctrl data which is needed by generic recovery code.
> 
> Now looks pretty much good enough (yet the period is not needed in the Subject,
> but it's fine for your newbie submission — no need to resend or make a new
> version). Thank you!
> 
Acked-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>

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

* Re: [PATCH v6] i2c: designware: Add support for recovery when GPIO need pinctrl.
  2023-08-22 14:34 [PATCH v6] i2c: designware: Add support for recovery when GPIO need pinctrl Yann Sionneau
  2023-08-22 14:43 ` Andy Shevchenko
@ 2023-08-24 16:21 ` Andi Shyti
  2023-08-25 20:26 ` Wolfram Sang
  2 siblings, 0 replies; 5+ messages in thread
From: Andi Shyti @ 2023-08-24 16:21 UTC (permalink / raw)
  To: Yann Sionneau
  Cc: Jarkko Nikula, Andy Shevchenko, Mika Westerberg, Julian Vetter,
	linux-i2c, linux-kernel

Hi Yann,

[...]

> +	rinfo->pinctrl = devm_pinctrl_get(dev->dev);
> +	if (IS_ERR(rinfo->pinctrl)) {
> +		if (PTR_ERR(rinfo->pinctrl) == -EPROBE_DEFER)
> +			return PTR_ERR(rinfo->pinctrl);
> +
> +		rinfo->pinctrl = NULL;
> +		dev_err(dev->dev, "getting pinctrl info failed: bus recovery might not work\n");

I'd still have preferred a dev_warn() here... but it's OK.

> +	} else if (!rinfo->pinctrl) {
> +		dev_dbg(dev->dev, "pinctrl is disabled, bus recovery might not work\n");
> +	}

thanks for following up,

Reviewed-by: Andi Shyti <andi.shyti@kernel.org> 

Thanks,
Andi

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

* Re: [PATCH v6] i2c: designware: Add support for recovery when GPIO need pinctrl.
  2023-08-22 14:34 [PATCH v6] i2c: designware: Add support for recovery when GPIO need pinctrl Yann Sionneau
  2023-08-22 14:43 ` Andy Shevchenko
  2023-08-24 16:21 ` Andi Shyti
@ 2023-08-25 20:26 ` Wolfram Sang
  2 siblings, 0 replies; 5+ messages in thread
From: Wolfram Sang @ 2023-08-25 20:26 UTC (permalink / raw)
  To: Yann Sionneau
  Cc: Jarkko Nikula, Andy Shevchenko, Mika Westerberg, Julian Vetter,
	linux-i2c, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 748 bytes --]

On Tue, Aug 22, 2023 at 04:34:37PM +0200, Yann Sionneau wrote:
> Currently if the SoC needs pinctrl to switch the SCL and SDA from the I2C
> function to GPIO function, the recovery won't work.
> 
> scl-gpio = <>;
> sda-gpio = <>;
> 
> Are not enough for some SoCs to have a working recovery.
> Some need:
> 
> scl-gpio = <>;
> sda-gpio = <>;
> pinctrl-names = "default", "recovery";
> pinctrl-0 = <&i2c_pins_hw>;
> pinctrl-1 = <&i2c_pins_gpio>;
> 
> The driver was not filling rinfo->pinctrl with the device node
> pinctrl data which is needed by generic recovery code.
> 
> Signed-off-by: Yann Sionneau <ysionneau@kalray.eu>
> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

Applied to for-next, thanks!


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

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

end of thread, other threads:[~2023-08-25 20:27 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-08-22 14:34 [PATCH v6] i2c: designware: Add support for recovery when GPIO need pinctrl Yann Sionneau
2023-08-22 14:43 ` Andy Shevchenko
2023-08-24  6:52   ` Jarkko Nikula
2023-08-24 16:21 ` Andi Shyti
2023-08-25 20:26 ` Wolfram Sang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox