mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-08 14:13:53 +00:00
iio: adc: ad7192: Convert from of specific to fwnode property handling
Enables use of with other firmwware types. Removes a case of device tree specific handlers that might get copied into new drivers. Cc: Alisa-Dariana Roman <alisa.roman@analog.com> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Link: https://lore.kernel.org/r/20240218172731.1023367-6-jic23@kernel.org Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
parent
bb134d2fbc
commit
c3708c829a
@ -17,7 +17,9 @@
|
||||
#include <linux/err.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/mod_devicetable.h>
|
||||
#include <linux/property.h>
|
||||
|
||||
#include <linux/iio/iio.h>
|
||||
#include <linux/iio/sysfs.h>
|
||||
@ -364,19 +366,19 @@ static inline bool ad7192_valid_external_frequency(u32 freq)
|
||||
freq <= AD7192_EXT_FREQ_MHZ_MAX);
|
||||
}
|
||||
|
||||
static int ad7192_of_clock_select(struct ad7192_state *st)
|
||||
static int ad7192_clock_select(struct ad7192_state *st)
|
||||
{
|
||||
struct device_node *np = st->sd.spi->dev.of_node;
|
||||
struct device *dev = &st->sd.spi->dev;
|
||||
unsigned int clock_sel;
|
||||
|
||||
clock_sel = AD7192_CLK_INT;
|
||||
|
||||
/* use internal clock */
|
||||
if (!st->mclk) {
|
||||
if (of_property_read_bool(np, "adi,int-clock-output-enable"))
|
||||
if (device_property_read_bool(dev, "adi,int-clock-output-enable"))
|
||||
clock_sel = AD7192_CLK_INT_CO;
|
||||
} else {
|
||||
if (of_property_read_bool(np, "adi,clock-xtal"))
|
||||
if (device_property_read_bool(dev, "adi,clock-xtal"))
|
||||
clock_sel = AD7192_CLK_EXT_MCLK1_2;
|
||||
else
|
||||
clock_sel = AD7192_CLK_EXT_MCLK2;
|
||||
@ -385,7 +387,7 @@ static int ad7192_of_clock_select(struct ad7192_state *st)
|
||||
return clock_sel;
|
||||
}
|
||||
|
||||
static int ad7192_setup(struct iio_dev *indio_dev, struct device_node *np)
|
||||
static int ad7192_setup(struct iio_dev *indio_dev, struct device *dev)
|
||||
{
|
||||
struct ad7192_state *st = iio_priv(indio_dev);
|
||||
bool rej60_en, refin2_en;
|
||||
@ -407,7 +409,7 @@ static int ad7192_setup(struct iio_dev *indio_dev, struct device_node *np)
|
||||
id = FIELD_GET(AD7192_ID_MASK, id);
|
||||
|
||||
if (id != st->chip_info->chip_id)
|
||||
dev_warn(&st->sd.spi->dev, "device ID query failed (0x%X != 0x%X)\n",
|
||||
dev_warn(dev, "device ID query failed (0x%X != 0x%X)\n",
|
||||
id, st->chip_info->chip_id);
|
||||
|
||||
st->mode = FIELD_PREP(AD7192_MODE_SEL_MASK, AD7192_MODE_IDLE) |
|
||||
@ -416,30 +418,30 @@ static int ad7192_setup(struct iio_dev *indio_dev, struct device_node *np)
|
||||
|
||||
st->conf = FIELD_PREP(AD7192_CONF_GAIN_MASK, 0);
|
||||
|
||||
rej60_en = of_property_read_bool(np, "adi,rejection-60-Hz-enable");
|
||||
rej60_en = device_property_read_bool(dev, "adi,rejection-60-Hz-enable");
|
||||
if (rej60_en)
|
||||
st->mode |= AD7192_MODE_REJ60;
|
||||
|
||||
refin2_en = of_property_read_bool(np, "adi,refin2-pins-enable");
|
||||
refin2_en = device_property_read_bool(dev, "adi,refin2-pins-enable");
|
||||
if (refin2_en && st->chip_info->chip_id != CHIPID_AD7195)
|
||||
st->conf |= AD7192_CONF_REFSEL;
|
||||
|
||||
st->conf &= ~AD7192_CONF_CHOP;
|
||||
|
||||
buf_en = of_property_read_bool(np, "adi,buffer-enable");
|
||||
buf_en = device_property_read_bool(dev, "adi,buffer-enable");
|
||||
if (buf_en)
|
||||
st->conf |= AD7192_CONF_BUF;
|
||||
|
||||
bipolar = of_property_read_bool(np, "bipolar");
|
||||
bipolar = device_property_read_bool(dev, "bipolar");
|
||||
if (!bipolar)
|
||||
st->conf |= AD7192_CONF_UNIPOLAR;
|
||||
|
||||
burnout_curr_en = of_property_read_bool(np,
|
||||
"adi,burnout-currents-enable");
|
||||
burnout_curr_en = device_property_read_bool(dev,
|
||||
"adi,burnout-currents-enable");
|
||||
if (burnout_curr_en && buf_en) {
|
||||
st->conf |= AD7192_CONF_BURN;
|
||||
} else if (burnout_curr_en) {
|
||||
dev_warn(&st->sd.spi->dev,
|
||||
dev_warn(dev,
|
||||
"Can't enable burnout currents: see CHOP or buffer\n");
|
||||
}
|
||||
|
||||
@ -1117,9 +1119,7 @@ static int ad7192_probe(struct spi_device *spi)
|
||||
}
|
||||
st->int_vref_mv = ret / 1000;
|
||||
|
||||
st->chip_info = of_device_get_match_data(&spi->dev);
|
||||
if (!st->chip_info)
|
||||
st->chip_info = (void *)spi_get_device_id(spi)->driver_data;
|
||||
st->chip_info = spi_get_device_match_data(spi);
|
||||
indio_dev->name = st->chip_info->name;
|
||||
indio_dev->modes = INDIO_DIRECT_MODE;
|
||||
indio_dev->channels = st->chip_info->channels;
|
||||
@ -1140,7 +1140,7 @@ static int ad7192_probe(struct spi_device *spi)
|
||||
if (IS_ERR(st->mclk))
|
||||
return PTR_ERR(st->mclk);
|
||||
|
||||
st->clock_sel = ad7192_of_clock_select(st);
|
||||
st->clock_sel = ad7192_clock_select(st);
|
||||
|
||||
if (st->clock_sel == AD7192_CLK_EXT_MCLK1_2 ||
|
||||
st->clock_sel == AD7192_CLK_EXT_MCLK2) {
|
||||
@ -1152,7 +1152,7 @@ static int ad7192_probe(struct spi_device *spi)
|
||||
}
|
||||
}
|
||||
|
||||
ret = ad7192_setup(indio_dev, spi->dev.of_node);
|
||||
ret = ad7192_setup(indio_dev, &spi->dev);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user