Message ID | 20231029114843.15553-1-peter.ujfalusi@gmail.com |
---|---|
State | New |
Headers | show |
Series | mfd: twl6030-irq: Revert to use of_match_device() | expand |
On Sun, 29 Oct 2023, Peter Ujfalusi wrote: > The core twl chip is probed via i2c and the dev->driver->of_match_table is > NULL, causing the driver to fail to probe. > > This partially reverts commit 1e0c866887f4. > > Fixes: 1e0c866887f4 ("mfd: Use device_get_match_data() in a bunch of drivers") > Signed-off-by: Peter Ujfalusi <peter.ujfalusi@gmail.com> > --- > drivers/mfd/twl6030-irq.c | 10 +++++----- > 1 file changed, 5 insertions(+), 5 deletions(-) > > diff --git a/drivers/mfd/twl6030-irq.c b/drivers/mfd/twl6030-irq.c > index f9fce8408c2c..3c03681c124c 100644 > --- a/drivers/mfd/twl6030-irq.c > +++ b/drivers/mfd/twl6030-irq.c > @@ -24,10 +24,10 @@ > #include <linux/kthread.h> > #include <linux/mfd/twl.h> > #include <linux/platform_device.h> > -#include <linux/property.h> > #include <linux/suspend.h> > #include <linux/of.h> > #include <linux/irqdomain.h> > +#include <linux/of_device.h> > > #include "twl-core.h" > > @@ -368,10 +368,10 @@ int twl6030_init_irq(struct device *dev, int irq_num) > int nr_irqs; > int status; > u8 mask[3]; > - const int *irq_tbl; > + const struct of_device_id *of_id; > > - irq_tbl = device_get_match_data(dev); > - if (!irq_tbl) { > + of_id = of_match_device(twl6030_of_match, dev); I think you just dropped support for ACPI. Rob, care to follow-up? > + if (!of_id || !of_id->data) { > dev_err(dev, "Unknown TWL device model\n"); > return -EINVAL; > } > @@ -409,7 +409,7 @@ int twl6030_init_irq(struct device *dev, int irq_num) > > twl6030_irq->pm_nb.notifier_call = twl6030_irq_pm_notifier; > atomic_set(&twl6030_irq->wakeirqs, 0); > - twl6030_irq->irq_mapping_tbl = irq_tbl; > + twl6030_irq->irq_mapping_tbl = of_id->data; > > twl6030_irq->irq_domain = > irq_domain_add_linear(node, nr_irqs, > -- > 2.42.0 >
On Thu, 23 Nov 2023, Lee Jones wrote: > On Sun, 29 Oct 2023, Peter Ujfalusi wrote: > > > The core twl chip is probed via i2c and the dev->driver->of_match_table is > > NULL, causing the driver to fail to probe. > > > > This partially reverts commit 1e0c866887f4. > > > > Fixes: 1e0c866887f4 ("mfd: Use device_get_match_data() in a bunch of drivers") > > Signed-off-by: Peter Ujfalusi <peter.ujfalusi@gmail.com> > > --- > > drivers/mfd/twl6030-irq.c | 10 +++++----- > > 1 file changed, 5 insertions(+), 5 deletions(-) > > > > diff --git a/drivers/mfd/twl6030-irq.c b/drivers/mfd/twl6030-irq.c > > index f9fce8408c2c..3c03681c124c 100644 > > --- a/drivers/mfd/twl6030-irq.c > > +++ b/drivers/mfd/twl6030-irq.c > > @@ -24,10 +24,10 @@ > > #include <linux/kthread.h> > > #include <linux/mfd/twl.h> > > #include <linux/platform_device.h> > > -#include <linux/property.h> > > #include <linux/suspend.h> > > #include <linux/of.h> > > #include <linux/irqdomain.h> > > +#include <linux/of_device.h> > > > > #include "twl-core.h" > > > > @@ -368,10 +368,10 @@ int twl6030_init_irq(struct device *dev, int irq_num) > > int nr_irqs; > > int status; > > u8 mask[3]; > > - const int *irq_tbl; > > + const struct of_device_id *of_id; > > > > - irq_tbl = device_get_match_data(dev); > > - if (!irq_tbl) { > > + of_id = of_match_device(twl6030_of_match, dev); > > I think you just dropped support for ACPI. Ah, scrap that. I was looking at the wrong part of 1e0c866887f4. So what about the other drivers changed in the aforementioned commit? Ideally we'd have a call that covers all of the various probing APIs. > Rob, care to follow-up? I'd still like Rob to comment.
On 23/11/2023 12:41, Lee Jones wrote: >>> @@ -368,10 +368,10 @@ int twl6030_init_irq(struct device *dev, int irq_num) >>> int nr_irqs; >>> int status; >>> u8 mask[3]; >>> - const int *irq_tbl; >>> + const struct of_device_id *of_id; >>> >>> - irq_tbl = device_get_match_data(dev); >>> - if (!irq_tbl) { >>> + of_id = of_match_device(twl6030_of_match, dev); >> >> I think you just dropped support for ACPI. > > Ah, scrap that. I was looking at the wrong part of 1e0c866887f4. > > So what about the other drivers changed in the aforementioned commit? Looking back at it again, I think only this patch is needed. This is not a real driver, it is using the twl core's device. The twl6030 is for sure broken, let me reply to the twl4030-power in a sec. > Ideally we'd have a call that covers all of the various probing APIs. > >> Rob, care to follow-up? > > I'd still like Rob to comment. >
On Thu, 23 Nov 2023, Péter Ujfalusi wrote: > > > On 23/11/2023 12:41, Lee Jones wrote: > >>> @@ -368,10 +368,10 @@ int twl6030_init_irq(struct device *dev, int irq_num) > >>> int nr_irqs; > >>> int status; > >>> u8 mask[3]; > >>> - const int *irq_tbl; > >>> + const struct of_device_id *of_id; > >>> > >>> - irq_tbl = device_get_match_data(dev); > >>> - if (!irq_tbl) { > >>> + of_id = of_match_device(twl6030_of_match, dev); > >> > >> I think you just dropped support for ACPI. > > > > Ah, scrap that. I was looking at the wrong part of 1e0c866887f4. > > > > So what about the other drivers changed in the aforementioned commit? > > Looking back at it again, I think only this patch is needed. > This is not a real driver, it is using the twl core's device. > The twl6030 is for sure broken, let me reply to the twl4030-power in a sec. > > > Ideally we'd have a call that covers all of the various probing APIs. > > > >> Rob, care to follow-up? Rob, last chance to state your case before I apply it.
On Sun, 29 Oct 2023 13:48:43 +0200, Peter Ujfalusi wrote: > The core twl chip is probed via i2c and the dev->driver->of_match_table is > NULL, causing the driver to fail to probe. > > This partially reverts commit 1e0c866887f4. > > Applied, thanks! [1/1] mfd: twl6030-irq: Revert to use of_match_device() commit: 6caa120c47c6f8ccb94c4a1d47e44c17de04057a -- Lee Jones [李琼斯]
On Okt 29 2023, Peter Ujfalusi wrote: > The core twl chip is probed via i2c and the dev->driver->of_match_table is > NULL, causing the driver to fail to probe. > > This partially reverts commit 1e0c866887f4. > > Fixes: 1e0c866887f4 ("mfd: Use device_get_match_data() in a bunch of drivers") That commit id does not exist, which is why it hasn't been picked up by stable. The correct commit id is 830fafce06e6f.
On Mon, 19 Feb 2024, Andreas Schwab wrote: > On Okt 29 2023, Peter Ujfalusi wrote: > > > The core twl chip is probed via i2c and the dev->driver->of_match_table is > > NULL, causing the driver to fail to probe. > > > > This partially reverts commit 1e0c866887f4. > > > > Fixes: 1e0c866887f4 ("mfd: Use device_get_match_data() in a bunch of drivers") > > That commit id does not exist, which is why it hasn't been picked up by > stable. The correct commit id is 830fafce06e6f. It hasn't been picked by Stable because no one sent it to Stable. :)
* Lee Jones <lee@kernel.org> [240219 14:33]: > On Mon, 19 Feb 2024, Andreas Schwab wrote: > > > On Okt 29 2023, Peter Ujfalusi wrote: > > > > > The core twl chip is probed via i2c and the dev->driver->of_match_table is > > > NULL, causing the driver to fail to probe. > > > > > > This partially reverts commit 1e0c866887f4. > > > > > > Fixes: 1e0c866887f4 ("mfd: Use device_get_match_data() in a bunch of drivers") > > > > That commit id does not exist, which is why it hasn't been picked up by > > stable. The correct commit id is 830fafce06e6f. > > It hasn't been picked by Stable because no one sent it to Stable. :) Andreas, can you please send an email asking stable to pick it up? See Documentation/process/stable-kernel-rules.rst for details. Regards, Tony
diff --git a/drivers/mfd/twl6030-irq.c b/drivers/mfd/twl6030-irq.c index f9fce8408c2c..3c03681c124c 100644 --- a/drivers/mfd/twl6030-irq.c +++ b/drivers/mfd/twl6030-irq.c @@ -24,10 +24,10 @@ #include <linux/kthread.h> #include <linux/mfd/twl.h> #include <linux/platform_device.h> -#include <linux/property.h> #include <linux/suspend.h> #include <linux/of.h> #include <linux/irqdomain.h> +#include <linux/of_device.h> #include "twl-core.h" @@ -368,10 +368,10 @@ int twl6030_init_irq(struct device *dev, int irq_num) int nr_irqs; int status; u8 mask[3]; - const int *irq_tbl; + const struct of_device_id *of_id; - irq_tbl = device_get_match_data(dev); - if (!irq_tbl) { + of_id = of_match_device(twl6030_of_match, dev); + if (!of_id || !of_id->data) { dev_err(dev, "Unknown TWL device model\n"); return -EINVAL; } @@ -409,7 +409,7 @@ int twl6030_init_irq(struct device *dev, int irq_num) twl6030_irq->pm_nb.notifier_call = twl6030_irq_pm_notifier; atomic_set(&twl6030_irq->wakeirqs, 0); - twl6030_irq->irq_mapping_tbl = irq_tbl; + twl6030_irq->irq_mapping_tbl = of_id->data; twl6030_irq->irq_domain = irq_domain_add_linear(node, nr_irqs,
The core twl chip is probed via i2c and the dev->driver->of_match_table is NULL, causing the driver to fail to probe. This partially reverts commit 1e0c866887f4. Fixes: 1e0c866887f4 ("mfd: Use device_get_match_data() in a bunch of drivers") Signed-off-by: Peter Ujfalusi <peter.ujfalusi@gmail.com> --- drivers/mfd/twl6030-irq.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)