diff mbox series

[v2,1/1] iio: adc: mxs-lradc-adc: Get rid of OF specifics

Message ID 20220621103754.12771-1-andriy.shevchenko@linux.intel.com (mailing list archive)
State New, archived
Headers show
Series [v2,1/1] iio: adc: mxs-lradc-adc: Get rid of OF specifics | expand

Commit Message

Andy Shevchenko June 21, 2022, 10:37 a.m. UTC
First of all, the additional conversion from vIRQ, and this is exactly
what is returned by platform_get_irq_byname(), to vIRQ is not needed.
Hence, drop no-op call to irq_of_parse_and_map().

Second, assign the firmware node instead of of_node.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Tested-by: Fabio Estevam <festevam@gmail.com>
---
v2: added property.h (Fabio), added tag (Fabio)
 drivers/iio/adc/mxs-lradc-adc.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

Comments

Andy Shevchenko June 21, 2022, 10:52 a.m. UTC | #1
On Tue, Jun 21, 2022 at 01:37:54PM +0300, Andy Shevchenko wrote:
> First of all, the additional conversion from vIRQ, and this is exactly
> what is returned by platform_get_irq_byname(), to vIRQ is not needed.
> Hence, drop no-op call to irq_of_parse_and_map().

Actually this patch is not correct. The MFD supplies IRQ lines without any
domain behind it, because of that the supplied list of IRQs is abstract to the
hardware and has no meaning in the Linux kernel. I dunno how it's supposed to
work (perhaps it involves the GIC driver hooks for IMX23/28 platforms).
diff mbox series

Patch

diff --git a/drivers/iio/adc/mxs-lradc-adc.c b/drivers/iio/adc/mxs-lradc-adc.c
index bca79a93cbe4..02d2ffafe34d 100644
--- a/drivers/iio/adc/mxs-lradc-adc.c
+++ b/drivers/iio/adc/mxs-lradc-adc.c
@@ -17,8 +17,8 @@ 
 #include <linux/mfd/core.h>
 #include <linux/mfd/mxs-lradc.h>
 #include <linux/module.h>
-#include <linux/of_irq.h>
 #include <linux/platform_device.h>
+#include <linux/property.h>
 #include <linux/sysfs.h>
 
 #include <linux/iio/buffer.h>
@@ -692,7 +692,7 @@  static int mxs_lradc_adc_probe(struct platform_device *pdev)
 	struct mxs_lradc_adc *adc;
 	struct iio_dev *iio;
 	struct resource *iores;
-	int ret, irq, virq, i, s, n;
+	int ret, irq, i, s, n;
 	u64 scale_uv;
 	const char **irq_name;
 
@@ -721,7 +721,7 @@  static int mxs_lradc_adc_probe(struct platform_device *pdev)
 	platform_set_drvdata(pdev, iio);
 
 	iio->name = pdev->name;
-	iio->dev.of_node = dev->parent->of_node;
+	device_set_node(&iio->dev, dev_fwnode(dev->parent));
 	iio->info = &mxs_lradc_adc_iio_info;
 	iio->modes = INDIO_DIRECT_MODE;
 	iio->masklength = LRADC_MAX_TOTAL_CHANS;
@@ -747,9 +747,7 @@  static int mxs_lradc_adc_probe(struct platform_device *pdev)
 		if (irq < 0)
 			return irq;
 
-		virq = irq_of_parse_and_map(dev->parent->of_node, irq);
-
-		ret = devm_request_irq(dev, virq, mxs_lradc_adc_handle_irq,
+		ret = devm_request_irq(dev, irq, mxs_lradc_adc_handle_irq,
 				       0, irq_name[i], iio);
 		if (ret)
 			return ret;