Message ID | 20220413144124.72537-1-andriy.shevchenko@linux.intel.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | [v1,1/3] iio: imu: adis16480: Make use of device properties | expand |
> -----Original Message----- > From: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > Sent: Wednesday, April 13, 2022 4:41 PM > To: Sa, Nuno <Nuno.Sa@analog.com>; Andy Shevchenko > <andriy.shevchenko@linux.intel.com>; linux-iio@vger.kernel.org; > linux-kernel@vger.kernel.org > Cc: Lars-Peter Clausen <lars@metafoo.de>; Hennerich, Michael > <Michael.Hennerich@analog.com>; Jonathan Cameron > <jic23@kernel.org> > Subject: [PATCH v1 1/3] iio: imu: adis16480: Make use of device > properties > > [External] > > Convert the module to be property provider agnostic and allow > it to be used on non-OF platforms. > > Signed-off-by: Andy Shevchenko > <andriy.shevchenko@linux.intel.com> > --- You beat me to do this. I actually had planned to do this next week once I saw we already have fwnode_irq_get_byname(). Anyways... Reviewed-by: Nuno Sá <nuno.sa@analog.com> (I will still give this a test next week)
On Wed, Apr 13, 2022 at 03:25:49PM +0000, Sa, Nuno wrote: > > -----Original Message----- > > From: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > > Sent: Wednesday, April 13, 2022 4:41 PM ... > You beat me to do this. I actually had planned to do this next week > once I saw we already have fwnode_irq_get_byname(). Anyways... > > Reviewed-by: Nuno Sá <nuno.sa@analog.com> > > (I will still give this a test next week) Thanks!
On Wed, 13 Apr 2022 19:58:53 +0300 Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote: > On Wed, Apr 13, 2022 at 03:25:49PM +0000, Sa, Nuno wrote: > > > -----Original Message----- > > > From: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > > > Sent: Wednesday, April 13, 2022 4:41 PM > > ... > > > You beat me to do this. I actually had planned to do this next week > > once I saw we already have fwnode_irq_get_byname(). Anyways... > > > > Reviewed-by: Nuno Sá <nuno.sa@analog.com> > > > > (I will still give this a test next week) > > Thanks! > I'll wait to apply it until you confirm all was good (mind you I haven't read it yet :) Thanks, Jonathan
> -----Original Message----- > From: Jonathan Cameron <jic23@kernel.org> > Sent: Friday, April 15, 2022 8:04 PM > To: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > Cc: Sa, Nuno <Nuno.Sa@analog.com>; linux-iio@vger.kernel.org; > linux-kernel@vger.kernel.org; Lars-Peter Clausen <lars@metafoo.de>; > Hennerich, Michael <Michael.Hennerich@analog.com> > Subject: Re: [PATCH v1 1/3] iio: imu: adis16480: Make use of device > properties > > [External] > > On Wed, 13 Apr 2022 19:58:53 +0300 > Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote: > > > On Wed, Apr 13, 2022 at 03:25:49PM +0000, Sa, Nuno wrote: > > > > -----Original Message----- > > > > From: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > > > > Sent: Wednesday, April 13, 2022 4:41 PM > > > > ... > > > > > You beat me to do this. I actually had planned to do this next week > > > once I saw we already have fwnode_irq_get_byname(). > Anyways... > > > > > > Reviewed-by: Nuno Sá <nuno.sa@analog.com> > > > > > > (I will still give this a test next week) > > > > Thanks! > > > I'll wait to apply it until you confirm all was good (mind you I haven't > read it yet :) > Fell free to add Tested-by: Nuno Sá <nuno.sa@analog.com>
diff --git a/drivers/iio/imu/adis16480.c b/drivers/iio/imu/adis16480.c index 44bbe3d19907..68eed088cca6 100644 --- a/drivers/iio/imu/adis16480.c +++ b/drivers/iio/imu/adis16480.c @@ -7,14 +7,16 @@ #include <linux/clk.h> #include <linux/bitfield.h> -#include <linux/of_irq.h> #include <linux/interrupt.h> +#include <linux/irq.h> #include <linux/math.h> #include <linux/device.h> #include <linux/kernel.h> #include <linux/spi/spi.h> +#include <linux/mod_devicetable.h> #include <linux/module.h> #include <linux/lcm.h> +#include <linux/property.h> #include <linux/swab.h> #include <linux/crc32.h> @@ -1239,9 +1241,10 @@ static int adis16480_enable_irq(struct adis *adis, bool enable) return __adis_write_reg_16(adis, ADIS16480_REG_FNCTIO_CTRL, val); } -static int adis16480_config_irq_pin(struct device_node *of_node, - struct adis16480 *st) +static int adis16480_config_irq_pin(struct adis16480 *st) { + struct device *dev = &st->adis.spi->dev; + struct fwnode_handle *fwnode = dev_fwnode(dev); struct irq_data *desc; enum adis16480_int_pin pin; unsigned int irq_type; @@ -1267,7 +1270,7 @@ static int adis16480_config_irq_pin(struct device_node *of_node, */ pin = ADIS16480_PIN_DIO1; for (i = 0; i < ARRAY_SIZE(adis16480_int_pin_names); i++) { - irq = of_irq_get_byname(of_node, adis16480_int_pin_names[i]); + irq = fwnode_irq_get_byname(fwnode, adis16480_int_pin_names[i]); if (irq > 0) { pin = i; break; @@ -1295,15 +1298,15 @@ static int adis16480_config_irq_pin(struct device_node *of_node, return adis_write_reg_16(&st->adis, ADIS16480_REG_FNCTIO_CTRL, val); } -static int adis16480_of_get_ext_clk_pin(struct adis16480 *st, - struct device_node *of_node) +static int adis16480_fw_get_ext_clk_pin(struct adis16480 *st) { + struct device *dev = &st->adis.spi->dev; const char *ext_clk_pin; enum adis16480_int_pin pin; int i; pin = ADIS16480_PIN_DIO2; - if (of_property_read_string(of_node, "adi,ext-clk-pin", &ext_clk_pin)) + if (device_property_read_string(dev, "adi,ext-clk-pin", &ext_clk_pin)) goto clk_input_not_found; for (i = 0; i < ARRAY_SIZE(adis16480_int_pin_names); i++) { @@ -1317,9 +1320,7 @@ static int adis16480_of_get_ext_clk_pin(struct adis16480 *st, return pin; } -static int adis16480_ext_clk_config(struct adis16480 *st, - struct device_node *of_node, - bool enable) +static int adis16480_ext_clk_config(struct adis16480 *st, bool enable) { unsigned int mode, mask; enum adis16480_int_pin pin; @@ -1330,7 +1331,7 @@ static int adis16480_ext_clk_config(struct adis16480 *st, if (ret) return ret; - pin = adis16480_of_get_ext_clk_pin(st, of_node); + pin = adis16480_fw_get_ext_clk_pin(st); /* * Each DIOx pin supports only one function at a time. When a single pin * has two assignments, the enable bit for a lower priority function @@ -1438,7 +1439,7 @@ static int adis16480_probe(struct spi_device *spi) return ret; } - ret = adis16480_config_irq_pin(spi->dev.of_node, st); + ret = adis16480_config_irq_pin(st); if (ret) return ret; @@ -1447,7 +1448,7 @@ static int adis16480_probe(struct spi_device *spi) return ret; if (!IS_ERR_OR_NULL(st->ext_clk)) { - ret = adis16480_ext_clk_config(st, spi->dev.of_node, true); + ret = adis16480_ext_clk_config(st, true); if (ret) return ret;
Convert the module to be property provider agnostic and allow it to be used on non-OF platforms. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> --- drivers/iio/imu/adis16480.c | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-)