Message ID | 20231029114909.15652-1-peter.ujfalusi@gmail.com |
---|---|
State | New |
Headers | show |
Series | mfd: twl4030-power: 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/twl4030-power.c | 9 ++++++--- > 1 file changed, 6 insertions(+), 3 deletions(-) Rob, does this work for you?
On 23/11/2023 12:39, 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/twl4030-power.c | 9 ++++++--- >> 1 file changed, 6 insertions(+), 3 deletions(-) > > Rob, does this work for you? This is not needed, twl4030-power is a proper platform device, it should have of_match_data. I had a boot failure likely caused by something else and I thought this might be part of the puzzle to get it working again. Sorry for the confusion.
diff --git a/drivers/mfd/twl4030-power.c b/drivers/mfd/twl4030-power.c index 1595e9c76132..e35b0f788c50 100644 --- a/drivers/mfd/twl4030-power.c +++ b/drivers/mfd/twl4030-power.c @@ -27,8 +27,8 @@ #include <linux/pm.h> #include <linux/mfd/twl.h> #include <linux/platform_device.h> -#include <linux/property.h> #include <linux/of.h> +#include <linux/of_device.h> #include <asm/mach-types.h> @@ -883,6 +883,7 @@ static int twl4030_power_probe(struct platform_device *pdev) { const struct twl4030_power_data *pdata = dev_get_platdata(&pdev->dev); struct device_node *node = pdev->dev.of_node; + const struct of_device_id *match; int err = 0; int err2 = 0; u8 val; @@ -903,8 +904,10 @@ static int twl4030_power_probe(struct platform_device *pdev) return err; } - if (node) - pdata = device_get_match_data(&pdev->dev); + match = of_match_device(of_match_ptr(twl4030_power_of_match), + &pdev->dev); + if (match && match->data) + pdata = match->data; if (pdata) { err = twl4030_power_configure_scripts(pdata);
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/twl4030-power.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)