iio: imu: adis16480: Make use of device properties
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> Reviewed-by: Nuno Sá <nuno.sa@analog.com> Tested-by: Nuno Sá <nuno.sa@analog.com> Link: https://lore.kernel.org/r/20220414131559.24694-1-andriy.shevchenko@linux.intel.com Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
parent
0a9599e1fc
commit
9eec6e510b
|
@ -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 @@ clk_input_not_found:
|
|||
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;
|
||||
|
||||
|
|
Loading…
Reference in New Issue