--- /dev/null
+From 7a29fa05aeca2c16193f00a883c56ffc7c25b6c5 Mon Sep 17 00:00:00 2001
+From: Peter Ujfalusi <peter.ujfalusi@gmail.com>
+Date: Sun, 29 Oct 2023 13:48:43 +0200
+Subject: mfd: twl6030-irq: Revert to use of_match_device()
+
+From: Peter Ujfalusi <peter.ujfalusi@gmail.com>
+
+commit 7a29fa05aeca2c16193f00a883c56ffc7c25b6c5 upstream.
+
+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 ("mfd: Use device_get_match_data() in a bunch of drivers")
+
+Fixes: 1e0c866887f4 ("mfd: Use device_get_match_data() in a bunch of drivers")
+Signed-off-by: Peter Ujfalusi <peter.ujfalusi@gmail.com>
+Link: https://lore.kernel.org/r/20231029114843.15553-1-peter.ujfalusi@gmail.com
+Signed-off-by: Lee Jones <lee@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/mfd/twl6030-irq.c | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+--- 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 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,
+
+ 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,