Messages in this thread | | | Date | Thu, 11 Apr 2024 19:08:56 +0200 | Subject | Re: [PATCH v5 2/2] i2c: Set i2c pinctrl recovery info from it's device pinctrl | From | Robert Marko <> |
| |
On 28. 12. 2022. 17:48, Hanna Hawa wrote: > Currently the i2c subsystem rely on the controller device tree to > initialize the pinctrl recovery information, part of the drivers does > not set this field (rinfo->pinctrl), for example i2c DesignWare driver. > > The pins information is saved part of the device structure before probe > and it's done on pinctrl_bind_pins(). > > Make the i2c init recovery to get the device pins if it's not > initialized by the driver from the device pins. > > Signed-off-by: Hanna Hawa <hhhawa@amazon.com> > Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > --- > drivers/i2c/i2c-core-base.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c > index 7539b0740351..fb5644457452 100644 > --- a/drivers/i2c/i2c-core-base.c > +++ b/drivers/i2c/i2c-core-base.c > @@ -34,6 +34,7 @@ > #include <linux/of.h> > #include <linux/of_irq.h> > #include <linux/pinctrl/consumer.h> > +#include <linux/pinctrl/devinfo.h> > #include <linux/pm_domain.h> > #include <linux/pm_runtime.h> > #include <linux/pm_wakeirq.h> > @@ -282,7 +283,9 @@ static void i2c_gpio_init_pinctrl_recovery(struct i2c_adapter *adap) > { > struct i2c_bus_recovery_info *bri = adap->bus_recovery_info; > struct device *dev = &adap->dev; > - struct pinctrl *p = bri->pinctrl; > + struct pinctrl *p = bri->pinctrl ?: dev_pinctrl(dev->parent); > + > + bri->pinctrl = p;
Hi Hanna, I know this has already been merged, but setting bri->pinctrl breaks PXA recovery.
Regards, Robert
> > /* > * we can't change states without pinctrl, so remove the states if
| |