mfd: twl4030-power: Revert to use of_match_device()

Message ID 20231029114909.15652-1-peter.ujfalusi@gmail.com
State New
Headers
Series mfd: twl4030-power: Revert to use of_match_device() |

Commit Message

Péter Ujfalusi Oct. 29, 2023, 11:49 a.m. UTC
  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(-)
  

Comments

Lee Jones Nov. 23, 2023, 10:39 a.m. UTC | #1
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?
  
Péter Ujfalusi Nov. 23, 2023, 3:42 p.m. UTC | #2
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.
  

Patch

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);