* [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