Merge tag 'iio-for-4.15a' of git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio into staging-next
Jonathan writes: Round one of new device support, features and cleanup for IIO in the 4.15 cycle. Note there is a misc driver drop in here given we have support in IIO and the feeling is no one will care. A large part of this series is a boiler plate removal series avoiding the need to explicitly provide THIS_MODULE in various locations. It's very dull but touches all drivers. New device support * ad5446 - add ids to support compatible parts DAC081S101, DAC101S101, DAC121S101. - add the dac7512 id and drop the misc driver as feeling is no one is using it (was introduced for a board that is long obsolete) * mt6577 - add bindings for mt2712 which is fully compatible with other supported parts. * st_pressure - add support for LPS33HW and LPS35HW with bindings (ids mostly). New features * ccs811 - Add support for the data ready trigger. * mma8452 - remove artifical restriction on supporting multiple event types at the same time. * tcs3472 - support out of threshold events Core and tree wide cleanup * Use macro magic to remove the need to provide THIS_MODULE as part of struct iio_info or struct iio_trigger_ops. This is similar to work done in a number of other subsystems (e.g. i2c, spi). All drivers are fixed and then the fields in these structures are removed. This will cause build failures for out of tree drivers and any new drivers that cross with this work going into the kernel. Note mostly done with a coccinelle patch, included in the series on the mailing list but not merged as the fields no longer exist in the structures so the any hold outs will cause a build failure. Cleanups * ads1015 - avoid writing config register when it doesn't change. - add 10% to conversion wait time as it seems it is sometimes a little small. * ade7753 - replace use of core mlock with a local lock. This is part of a long term effort to make the use of mlock opaque and single purpose. * ade7759 - expand the use of buf_lock to cover previous mlock cases. This is a slightly nicer solution to the same issue as in ade7753. * cros_ec - drop an unused variable * inv_mpu6050 - add a missing break in a switch for consistency - not actual bug, - make some local arrays static to save on object code size. * max5481 - drop manual setting of the spi module owner as handled by the spi core. * max5487 - drop manual setting of the spi module owner as handled by the spi core. * max9611 - drop explicit setting of the i2c module owner as handled by the i2c core. * mcp320x - speed up reads on single channel devices, - drop unused of_device_id data elements, - document the struct mcp320x, - improve binding docs to reflect restrictions on spi setup and to make it explicit that the reference regulator is needed. * mma8452 - symbolic to octal permissions, - unsigned to unsigned int. * st_lsm6dsx - avoid setting odr values multiple times, - drop config of LIR as it is only ever set to the existing defaults, - drop rounding configuration as it only ever matches the defaults. * ti-ads8688 - drop manual setting of the spi module owner as handled by the spi core. * tsl2x7x - constify the i2c_device_id, - cleanup limit checks to avoid static checker warnings (and generally have nicer code).
This commit is contained in:
@@ -280,7 +280,6 @@ static AD7266_DECLARE_DIFF_CHANNELS_FIXED(u, 'u');
|
||||
static const struct iio_info ad7266_info = {
|
||||
.read_raw = &ad7266_read_raw,
|
||||
.update_scan_mode = &ad7266_update_scan_mode,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
static const unsigned long ad7266_available_scan_masks[] = {
|
||||
|
@@ -461,7 +461,6 @@ static const struct iio_info ad7291_info = {
|
||||
.write_event_config = &ad7291_write_event_config,
|
||||
.read_event_value = &ad7291_read_event_value,
|
||||
.write_event_value = &ad7291_write_event_value,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
static int ad7291_probe(struct i2c_client *client,
|
||||
|
@@ -280,7 +280,6 @@ static int ad7298_read_raw(struct iio_dev *indio_dev,
|
||||
static const struct iio_info ad7298_info = {
|
||||
.read_raw = &ad7298_read_raw,
|
||||
.update_scan_mode = ad7298_update_scan_mode,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
static int ad7298_probe(struct spi_device *spi)
|
||||
|
@@ -195,7 +195,6 @@ static const struct ad7476_chip_info ad7476_chip_info_tbl[] = {
|
||||
};
|
||||
|
||||
static const struct iio_info ad7476_info = {
|
||||
.driver_module = THIS_MODULE,
|
||||
.read_raw = &ad7476_read_raw,
|
||||
};
|
||||
|
||||
|
@@ -185,7 +185,6 @@ static const struct iio_buffer_setup_ops ad7766_buffer_setup_ops = {
|
||||
};
|
||||
|
||||
static const struct iio_info ad7766_info = {
|
||||
.driver_module = THIS_MODULE,
|
||||
.read_raw = &ad7766_read_raw,
|
||||
};
|
||||
|
||||
@@ -208,7 +207,6 @@ static int ad7766_set_trigger_state(struct iio_trigger *trig, bool enable)
|
||||
}
|
||||
|
||||
static const struct iio_trigger_ops ad7766_trigger_ops = {
|
||||
.owner = THIS_MODULE,
|
||||
.set_trigger_state = ad7766_set_trigger_state,
|
||||
.validate_device = iio_trigger_validate_own_device,
|
||||
};
|
||||
|
@@ -308,13 +308,11 @@ static const struct iio_info ad7791_info = {
|
||||
.read_raw = &ad7791_read_raw,
|
||||
.attrs = &ad7791_attribute_group,
|
||||
.validate_trigger = ad_sd_validate_trigger,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
static const struct iio_info ad7791_no_filter_info = {
|
||||
.read_raw = &ad7791_read_raw,
|
||||
.validate_trigger = ad_sd_validate_trigger,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
static int ad7791_setup(struct ad7791_state *st,
|
||||
|
@@ -563,7 +563,6 @@ static const struct iio_info ad7793_info = {
|
||||
.write_raw_get_fmt = &ad7793_write_raw_get_fmt,
|
||||
.attrs = &ad7793_attribute_group,
|
||||
.validate_trigger = ad_sd_validate_trigger,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
static const struct iio_info ad7797_info = {
|
||||
@@ -572,7 +571,6 @@ static const struct iio_info ad7797_info = {
|
||||
.write_raw_get_fmt = &ad7793_write_raw_get_fmt,
|
||||
.attrs = &ad7793_attribute_group,
|
||||
.validate_trigger = ad_sd_validate_trigger,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
#define DECLARE_AD7793_CHANNELS(_name, _b, _sb, _s) \
|
||||
|
@@ -229,7 +229,6 @@ static const struct ad7887_chip_info ad7887_chip_info_tbl[] = {
|
||||
|
||||
static const struct iio_info ad7887_info = {
|
||||
.read_raw = &ad7887_read_raw,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
static int ad7887_probe(struct spi_device *spi)
|
||||
|
@@ -262,7 +262,6 @@ static int ad7923_read_raw(struct iio_dev *indio_dev,
|
||||
static const struct iio_info ad7923_info = {
|
||||
.read_raw = &ad7923_read_raw,
|
||||
.update_scan_mode = ad7923_update_scan_mode,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
static int ad7923_probe(struct spi_device *spi)
|
||||
|
@@ -526,13 +526,11 @@ static const struct attribute_group ad799x_event_attrs_group = {
|
||||
|
||||
static const struct iio_info ad7991_info = {
|
||||
.read_raw = &ad799x_read_raw,
|
||||
.driver_module = THIS_MODULE,
|
||||
.update_scan_mode = ad799x_update_scan_mode,
|
||||
};
|
||||
|
||||
static const struct iio_info ad7993_4_7_8_noirq_info = {
|
||||
.read_raw = &ad799x_read_raw,
|
||||
.driver_module = THIS_MODULE,
|
||||
.update_scan_mode = ad799x_update_scan_mode,
|
||||
};
|
||||
|
||||
@@ -543,7 +541,6 @@ static const struct iio_info ad7993_4_7_8_irq_info = {
|
||||
.write_event_config = &ad799x_write_event_config,
|
||||
.read_event_value = &ad799x_read_event_value,
|
||||
.write_event_value = &ad799x_write_event_value,
|
||||
.driver_module = THIS_MODULE,
|
||||
.update_scan_mode = ad799x_update_scan_mode,
|
||||
};
|
||||
|
||||
|
@@ -435,7 +435,6 @@ int ad_sd_validate_trigger(struct iio_dev *indio_dev, struct iio_trigger *trig)
|
||||
EXPORT_SYMBOL_GPL(ad_sd_validate_trigger);
|
||||
|
||||
static const struct iio_trigger_ops ad_sd_trigger_ops = {
|
||||
.owner = THIS_MODULE,
|
||||
};
|
||||
|
||||
static int ad_sd_probe_trigger(struct iio_dev *indio_dev)
|
||||
|
@@ -165,7 +165,6 @@ static int aspeed_adc_reg_access(struct iio_dev *indio_dev,
|
||||
}
|
||||
|
||||
static const struct iio_info aspeed_adc_iio_info = {
|
||||
.driver_module = THIS_MODULE,
|
||||
.read_raw = aspeed_adc_read_raw,
|
||||
.write_raw = aspeed_adc_write_raw,
|
||||
.debugfs_reg_access = aspeed_adc_reg_access,
|
||||
|
@@ -338,7 +338,6 @@ static int at91_adc_reenable_trigger(struct iio_trigger *trig)
|
||||
}
|
||||
|
||||
static const struct iio_trigger_ops at91_adc_trigger_ops = {
|
||||
.owner = THIS_MODULE,
|
||||
.set_trigger_state = &at91_adc_configure_trigger,
|
||||
.try_reenable = &at91_adc_reenable_trigger,
|
||||
};
|
||||
@@ -574,7 +573,6 @@ static int at91_adc_write_raw(struct iio_dev *indio_dev,
|
||||
static const struct iio_info at91_adc_info = {
|
||||
.read_raw = &at91_adc_read_raw,
|
||||
.write_raw = &at91_adc_write_raw,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
static void at91_adc_hw_init(struct at91_adc_state *st)
|
||||
|
@@ -594,7 +594,6 @@ static int at91_adc_configure_trigger(struct iio_trigger *trig, bool state)
|
||||
}
|
||||
|
||||
static const struct iio_trigger_ops at91_adc_trigger_ops = {
|
||||
.owner = THIS_MODULE,
|
||||
.set_trigger_state = &at91_adc_configure_trigger,
|
||||
};
|
||||
|
||||
@@ -976,7 +975,6 @@ static int at91_adc_probe_pdata(struct at91_adc_state *st,
|
||||
}
|
||||
|
||||
static const struct iio_info at91_adc_info = {
|
||||
.driver_module = THIS_MODULE,
|
||||
.read_raw = &at91_adc_read_raw,
|
||||
};
|
||||
|
||||
|
@@ -464,12 +464,10 @@ static int axp20x_write_raw(struct iio_dev *indio_dev,
|
||||
static const struct iio_info axp20x_adc_iio_info = {
|
||||
.read_raw = axp20x_read_raw,
|
||||
.write_raw = axp20x_write_raw,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
static const struct iio_info axp22x_adc_iio_info = {
|
||||
.read_raw = axp22x_read_raw,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
static int axp20x_adc_rate(int rate)
|
||||
|
@@ -183,7 +183,6 @@ static int axp288_adc_set_state(struct regmap *regmap)
|
||||
|
||||
static const struct iio_info axp288_adc_iio_info = {
|
||||
.read_raw = &axp288_adc_read_raw,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
static int axp288_adc_probe(struct platform_device *pdev)
|
||||
|
@@ -492,7 +492,6 @@ static int iproc_adc_read_raw(struct iio_dev *indio_dev,
|
||||
|
||||
static const struct iio_info iproc_adc_iio_info = {
|
||||
.read_raw = &iproc_adc_read_raw,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
#define IPROC_ADC_CHANNEL(_index, _id) { \
|
||||
|
@@ -277,7 +277,6 @@ static irqreturn_t berlin2_adc_tsen_irq(int irq, void *private)
|
||||
}
|
||||
|
||||
static const struct iio_info berlin2_adc_info = {
|
||||
.driver_module = THIS_MODULE,
|
||||
.read_raw = berlin2_adc_read_raw,
|
||||
};
|
||||
|
||||
|
@@ -262,7 +262,6 @@ static int cc10001_update_scan_mode(struct iio_dev *indio_dev,
|
||||
}
|
||||
|
||||
static const struct iio_info cc10001_adc_info = {
|
||||
.driver_module = THIS_MODULE,
|
||||
.read_raw = &cc10001_adc_read_raw,
|
||||
.update_scan_mode = &cc10001_update_scan_mode,
|
||||
};
|
||||
|
@@ -932,7 +932,6 @@ err_unlock:
|
||||
|
||||
static const struct iio_info cpcap_adc_info = {
|
||||
.read_raw = &cpcap_adc_read,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
/*
|
||||
|
@@ -249,7 +249,6 @@ static int da9150_gpadc_read_raw(struct iio_dev *indio_dev,
|
||||
|
||||
static const struct iio_info da9150_gpadc_info = {
|
||||
.read_raw = &da9150_gpadc_read_raw,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
#define DA9150_GPADC_CHANNEL(_id, _hw_id, _type, chan_info, \
|
||||
|
@@ -479,7 +479,6 @@ static const struct iio_info dln2_adc_info = {
|
||||
.read_raw = dln2_adc_read_raw,
|
||||
.write_raw = dln2_adc_write_raw,
|
||||
.update_scan_mode = dln2_update_scan_mode,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
static irqreturn_t dln2_adc_trigger_h(int irq, void *p)
|
||||
@@ -604,10 +603,6 @@ static void dln2_adc_event(struct platform_device *pdev, u16 echo,
|
||||
iio_trigger_poll(dln2->trig);
|
||||
}
|
||||
|
||||
static const struct iio_trigger_ops dln2_adc_trigger_ops = {
|
||||
.owner = THIS_MODULE,
|
||||
};
|
||||
|
||||
static int dln2_adc_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct device *dev = &pdev->dev;
|
||||
@@ -665,7 +660,6 @@ static int dln2_adc_probe(struct platform_device *pdev)
|
||||
dev_err(dev, "failed to allocate trigger\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
dln2->trig->ops = &dln2_adc_trigger_ops;
|
||||
iio_trigger_set_drvdata(dln2->trig, dln2);
|
||||
devm_iio_trigger_register(dev, dln2->trig);
|
||||
iio_trigger_set_immutable(indio_dev, dln2->trig);
|
||||
|
@@ -322,7 +322,6 @@ static const struct iio_chan_spec envelope_detector_iio_channel = {
|
||||
|
||||
static const struct iio_info envelope_detector_info = {
|
||||
.read_raw = &envelope_detector_read_raw,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
static int envelope_detector_probe(struct platform_device *pdev)
|
||||
|
@@ -657,7 +657,6 @@ static int exynos_adc_reg_access(struct iio_dev *indio_dev,
|
||||
static const struct iio_info exynos_adc_iio_info = {
|
||||
.read_raw = &exynos_read_raw,
|
||||
.debugfs_reg_access = &exynos_adc_reg_access,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
#define ADC_CHANNEL(_index, _id) { \
|
||||
|
@@ -408,7 +408,6 @@ static const struct iio_chan_spec hi8435_channels[] = {
|
||||
};
|
||||
|
||||
static const struct iio_info hi8435_info = {
|
||||
.driver_module = THIS_MODULE,
|
||||
.read_raw = hi8435_read_raw,
|
||||
.read_event_config = hi8435_read_event_config,
|
||||
.write_event_config = hi8435_write_event_config,
|
||||
|
@@ -374,7 +374,6 @@ static const struct attribute_group hx711_attribute_group = {
|
||||
};
|
||||
|
||||
static const struct iio_info hx711_iio_info = {
|
||||
.driver_module = THIS_MODULE,
|
||||
.read_raw = hx711_read_raw,
|
||||
.write_raw = hx711_write_raw,
|
||||
.write_raw_get_fmt = hx711_write_raw_get_fmt,
|
||||
|
@@ -412,7 +412,6 @@ static int imx7d_adc_reg_access(struct iio_dev *indio_dev,
|
||||
}
|
||||
|
||||
static const struct iio_info imx7d_adc_iio_info = {
|
||||
.driver_module = THIS_MODULE,
|
||||
.read_raw = &imx7d_adc_read_raw,
|
||||
.debugfs_reg_access = &imx7d_adc_reg_access,
|
||||
};
|
||||
|
@@ -778,7 +778,6 @@ static const struct attribute_group ina226_attribute_group = {
|
||||
};
|
||||
|
||||
static const struct iio_info ina219_info = {
|
||||
.driver_module = THIS_MODULE,
|
||||
.attrs = &ina219_attribute_group,
|
||||
.read_raw = ina2xx_read_raw,
|
||||
.write_raw = ina2xx_write_raw,
|
||||
@@ -786,7 +785,6 @@ static const struct iio_info ina219_info = {
|
||||
};
|
||||
|
||||
static const struct iio_info ina226_info = {
|
||||
.driver_module = THIS_MODULE,
|
||||
.attrs = &ina226_attribute_group,
|
||||
.read_raw = ina2xx_read_raw,
|
||||
.write_raw = ina2xx_write_raw,
|
||||
|
@@ -125,7 +125,6 @@ static int lp8788_adc_read_raw(struct iio_dev *indio_dev,
|
||||
|
||||
static const struct iio_info lp8788_adc_info = {
|
||||
.read_raw = &lp8788_adc_read_raw,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
#define LP8788_CHAN(_id, _type) { \
|
||||
|
@@ -116,7 +116,6 @@ static int lpc18xx_adc_read_raw(struct iio_dev *indio_dev,
|
||||
|
||||
static const struct iio_info lpc18xx_adc_info = {
|
||||
.read_raw = lpc18xx_adc_read_raw,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
static int lpc18xx_adc_probe(struct platform_device *pdev)
|
||||
|
@@ -104,7 +104,6 @@ static int lpc32xx_read_raw(struct iio_dev *indio_dev,
|
||||
|
||||
static const struct iio_info lpc32xx_adc_iio_info = {
|
||||
.read_raw = &lpc32xx_read_raw,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
#define LPC32XX_ADC_CHANNEL(_index) { \
|
||||
|
@@ -98,7 +98,6 @@ static const struct iio_chan_spec ltc2473_channel[] = {
|
||||
|
||||
static const struct iio_info ltc2471_info = {
|
||||
.read_raw = ltc2471_read_raw,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
static int ltc2471_i2c_probe(struct i2c_client *client,
|
||||
|
@@ -90,7 +90,6 @@ static const struct iio_chan_spec ltc2485_channel[] = {
|
||||
|
||||
static const struct iio_info ltc2485_info = {
|
||||
.read_raw = ltc2485_read_raw,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
static int ltc2485_probe(struct i2c_client *client,
|
||||
|
@@ -186,7 +186,6 @@ static const struct iio_chan_spec ltc2497_channel[] = {
|
||||
|
||||
static const struct iio_info ltc2497_info = {
|
||||
.read_raw = ltc2497_read_raw,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
static int ltc2497_probe(struct i2c_client *client,
|
||||
|
@@ -381,13 +381,11 @@ static irqreturn_t max1027_trigger_handler(int irq, void *private)
|
||||
}
|
||||
|
||||
static const struct iio_trigger_ops max1027_trigger_ops = {
|
||||
.owner = THIS_MODULE,
|
||||
.validate_device = &iio_trigger_validate_own_device,
|
||||
.set_trigger_state = &max1027_set_trigger_state,
|
||||
};
|
||||
|
||||
static const struct iio_info max1027_info = {
|
||||
.driver_module = THIS_MODULE,
|
||||
.read_raw = &max1027_read_raw,
|
||||
.validate_trigger = &max1027_validate_trigger,
|
||||
.debugfs_reg_access = &max1027_debugfs_reg_access,
|
||||
|
@@ -100,7 +100,6 @@ static int max11100_read_raw(struct iio_dev *indio_dev,
|
||||
}
|
||||
|
||||
static const struct iio_info max11100_info = {
|
||||
.driver_module = THIS_MODULE,
|
||||
.read_raw = max11100_read_raw,
|
||||
};
|
||||
|
||||
|
@@ -155,7 +155,6 @@ static int max1118_read_raw(struct iio_dev *indio_dev,
|
||||
|
||||
static const struct iio_info max1118_info = {
|
||||
.read_raw = max1118_read_raw,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
static irqreturn_t max1118_trigger_handler(int irq, void *p)
|
||||
|
@@ -1029,7 +1029,6 @@ static int max1363_update_scan_mode(struct iio_dev *indio_dev,
|
||||
|
||||
static const struct iio_info max1238_info = {
|
||||
.read_raw = &max1363_read_raw,
|
||||
.driver_module = THIS_MODULE,
|
||||
.update_scan_mode = &max1363_update_scan_mode,
|
||||
};
|
||||
|
||||
@@ -1040,7 +1039,6 @@ static const struct iio_info max1363_info = {
|
||||
.write_event_config = &max1363_write_event_config,
|
||||
.read_raw = &max1363_read_raw,
|
||||
.update_scan_mode = &max1363_update_scan_mode,
|
||||
.driver_module = THIS_MODULE,
|
||||
.event_attrs = &max1363_event_attribute_group,
|
||||
};
|
||||
|
||||
|
@@ -460,7 +460,6 @@ static const struct attribute_group max9611_attribute_group = {
|
||||
};
|
||||
|
||||
static const struct iio_info indio_info = {
|
||||
.driver_module = THIS_MODULE,
|
||||
.read_raw = max9611_read_raw,
|
||||
.attrs = &max9611_attribute_group,
|
||||
};
|
||||
@@ -573,7 +572,6 @@ static int max9611_probe(struct i2c_client *client,
|
||||
static struct i2c_driver max9611_driver = {
|
||||
.driver = {
|
||||
.name = DRIVER_NAME,
|
||||
.owner = THIS_MODULE,
|
||||
.of_match_table = max9611_of_table,
|
||||
},
|
||||
.probe = max9611_probe,
|
||||
|
@@ -57,6 +57,17 @@ struct mcp320x_chip_info {
|
||||
unsigned int resolution;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct mcp320x - Microchip SPI ADC instance
|
||||
* @spi: SPI slave (parent of the IIO device)
|
||||
* @msg: SPI message to select a channel and receive a value from the ADC
|
||||
* @transfer: SPI transfers used by @msg
|
||||
* @reg: regulator generating Vref
|
||||
* @lock: protects read sequences
|
||||
* @chip_info: ADC properties
|
||||
* @tx_buf: buffer for @transfer[0] (not used on single-channel converters)
|
||||
* @rx_buf: buffer for @transfer[1]
|
||||
*/
|
||||
struct mcp320x {
|
||||
struct spi_device *spi;
|
||||
struct spi_message msg;
|
||||
@@ -76,10 +87,6 @@ static int mcp320x_channel_to_tx_data(int device_index,
|
||||
int start_bit = 1;
|
||||
|
||||
switch (device_index) {
|
||||
case mcp3001:
|
||||
case mcp3201:
|
||||
case mcp3301:
|
||||
return 0;
|
||||
case mcp3002:
|
||||
case mcp3202:
|
||||
return ((start_bit << 4) | (!differential << 3) |
|
||||
@@ -100,20 +107,14 @@ static int mcp320x_adc_conversion(struct mcp320x *adc, u8 channel,
|
||||
{
|
||||
int ret;
|
||||
|
||||
adc->rx_buf[0] = 0;
|
||||
adc->rx_buf[1] = 0;
|
||||
adc->tx_buf = mcp320x_channel_to_tx_data(device_index,
|
||||
channel, differential);
|
||||
memset(&adc->rx_buf, 0, sizeof(adc->rx_buf));
|
||||
if (adc->chip_info->num_channels > 1)
|
||||
adc->tx_buf = mcp320x_channel_to_tx_data(device_index, channel,
|
||||
differential);
|
||||
|
||||
if (device_index != mcp3001 && device_index != mcp3201 && device_index != mcp3301) {
|
||||
ret = spi_sync(adc->spi, &adc->msg);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
} else {
|
||||
ret = spi_read(adc->spi, &adc->rx_buf, sizeof(adc->rx_buf));
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
ret = spi_sync(adc->spi, &adc->msg);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
switch (device_index) {
|
||||
case mcp3001:
|
||||
@@ -242,7 +243,6 @@ static const struct iio_chan_spec mcp3208_channels[] = {
|
||||
|
||||
static const struct iio_info mcp320x_info = {
|
||||
.read_raw = mcp320x_read_raw,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
static const struct mcp320x_chip_info mcp320x_chip_infos[] = {
|
||||
@@ -323,9 +323,13 @@ static int mcp320x_probe(struct spi_device *spi)
|
||||
adc->transfer[0].len = sizeof(adc->tx_buf);
|
||||
adc->transfer[1].rx_buf = adc->rx_buf;
|
||||
adc->transfer[1].len = sizeof(adc->rx_buf);
|
||||
|
||||
spi_message_init_with_transfers(&adc->msg, adc->transfer,
|
||||
ARRAY_SIZE(adc->transfer));
|
||||
if (chip_info->num_channels == 1)
|
||||
/* single-channel converters are rx only (no MOSI pin) */
|
||||
spi_message_init_with_transfers(&adc->msg,
|
||||
&adc->transfer[1], 1);
|
||||
else
|
||||
spi_message_init_with_transfers(&adc->msg, adc->transfer,
|
||||
ARRAY_SIZE(adc->transfer));
|
||||
|
||||
adc->reg = devm_regulator_get(&spi->dev, "vref");
|
||||
if (IS_ERR(adc->reg))
|
||||
@@ -363,62 +367,25 @@ static int mcp320x_remove(struct spi_device *spi)
|
||||
#if defined(CONFIG_OF)
|
||||
static const struct of_device_id mcp320x_dt_ids[] = {
|
||||
/* NOTE: The use of compatibles with no vendor prefix is deprecated. */
|
||||
{
|
||||
.compatible = "mcp3001",
|
||||
.data = &mcp320x_chip_infos[mcp3001],
|
||||
}, {
|
||||
.compatible = "mcp3002",
|
||||
.data = &mcp320x_chip_infos[mcp3002],
|
||||
}, {
|
||||
.compatible = "mcp3004",
|
||||
.data = &mcp320x_chip_infos[mcp3004],
|
||||
}, {
|
||||
.compatible = "mcp3008",
|
||||
.data = &mcp320x_chip_infos[mcp3008],
|
||||
}, {
|
||||
.compatible = "mcp3201",
|
||||
.data = &mcp320x_chip_infos[mcp3201],
|
||||
}, {
|
||||
.compatible = "mcp3202",
|
||||
.data = &mcp320x_chip_infos[mcp3202],
|
||||
}, {
|
||||
.compatible = "mcp3204",
|
||||
.data = &mcp320x_chip_infos[mcp3204],
|
||||
}, {
|
||||
.compatible = "mcp3208",
|
||||
.data = &mcp320x_chip_infos[mcp3208],
|
||||
}, {
|
||||
.compatible = "mcp3301",
|
||||
.data = &mcp320x_chip_infos[mcp3301],
|
||||
}, {
|
||||
.compatible = "microchip,mcp3001",
|
||||
.data = &mcp320x_chip_infos[mcp3001],
|
||||
}, {
|
||||
.compatible = "microchip,mcp3002",
|
||||
.data = &mcp320x_chip_infos[mcp3002],
|
||||
}, {
|
||||
.compatible = "microchip,mcp3004",
|
||||
.data = &mcp320x_chip_infos[mcp3004],
|
||||
}, {
|
||||
.compatible = "microchip,mcp3008",
|
||||
.data = &mcp320x_chip_infos[mcp3008],
|
||||
}, {
|
||||
.compatible = "microchip,mcp3201",
|
||||
.data = &mcp320x_chip_infos[mcp3201],
|
||||
}, {
|
||||
.compatible = "microchip,mcp3202",
|
||||
.data = &mcp320x_chip_infos[mcp3202],
|
||||
}, {
|
||||
.compatible = "microchip,mcp3204",
|
||||
.data = &mcp320x_chip_infos[mcp3204],
|
||||
}, {
|
||||
.compatible = "microchip,mcp3208",
|
||||
.data = &mcp320x_chip_infos[mcp3208],
|
||||
}, {
|
||||
.compatible = "microchip,mcp3301",
|
||||
.data = &mcp320x_chip_infos[mcp3301],
|
||||
}, {
|
||||
}
|
||||
{ .compatible = "mcp3001" },
|
||||
{ .compatible = "mcp3002" },
|
||||
{ .compatible = "mcp3004" },
|
||||
{ .compatible = "mcp3008" },
|
||||
{ .compatible = "mcp3201" },
|
||||
{ .compatible = "mcp3202" },
|
||||
{ .compatible = "mcp3204" },
|
||||
{ .compatible = "mcp3208" },
|
||||
{ .compatible = "mcp3301" },
|
||||
{ .compatible = "microchip,mcp3001" },
|
||||
{ .compatible = "microchip,mcp3002" },
|
||||
{ .compatible = "microchip,mcp3004" },
|
||||
{ .compatible = "microchip,mcp3008" },
|
||||
{ .compatible = "microchip,mcp3201" },
|
||||
{ .compatible = "microchip,mcp3202" },
|
||||
{ .compatible = "microchip,mcp3204" },
|
||||
{ .compatible = "microchip,mcp3208" },
|
||||
{ .compatible = "microchip,mcp3301" },
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, mcp320x_dt_ids);
|
||||
#endif
|
||||
|
@@ -327,7 +327,6 @@ static const struct iio_info mcp3422_info = {
|
||||
.write_raw = mcp3422_write_raw,
|
||||
.write_raw_get_fmt = mcp3422_write_raw_get_fmt,
|
||||
.attrs = &mcp3422_attribute_group,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
static int mcp3422_probe(struct i2c_client *client,
|
||||
|
@@ -80,7 +80,6 @@ static int z188_iio_read_raw(struct iio_dev *iio_dev,
|
||||
|
||||
static const struct iio_info z188_adc_info = {
|
||||
.read_raw = &z188_iio_read_raw,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
static void men_z188_config_channels(void __iomem *addr)
|
||||
|
@@ -840,7 +840,6 @@ out:
|
||||
|
||||
static const struct iio_info meson_sar_adc_iio_info = {
|
||||
.read_raw = meson_sar_adc_iio_info_read_raw,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
static const struct meson_sar_adc_data meson_sar_adc_meson8_data = {
|
||||
|
@@ -180,7 +180,6 @@ static int mt6577_auxadc_read_raw(struct iio_dev *indio_dev,
|
||||
}
|
||||
|
||||
static const struct iio_info mt6577_auxadc_info = {
|
||||
.driver_module = THIS_MODULE,
|
||||
.read_raw = &mt6577_auxadc_read_raw,
|
||||
};
|
||||
|
||||
@@ -306,6 +305,7 @@ static SIMPLE_DEV_PM_OPS(mt6577_auxadc_pm_ops,
|
||||
|
||||
static const struct of_device_id mt6577_auxadc_of_match[] = {
|
||||
{ .compatible = "mediatek,mt2701-auxadc", },
|
||||
{ .compatible = "mediatek,mt2712-auxadc", },
|
||||
{ .compatible = "mediatek,mt7622-auxadc", },
|
||||
{ .compatible = "mediatek,mt8173-auxadc", },
|
||||
{ }
|
||||
|
@@ -382,7 +382,6 @@ static const struct attribute_group mxs_lradc_adc_attribute_group = {
|
||||
};
|
||||
|
||||
static const struct iio_info mxs_lradc_adc_iio_info = {
|
||||
.driver_module = THIS_MODULE,
|
||||
.read_raw = mxs_lradc_adc_read_raw,
|
||||
.write_raw = mxs_lradc_adc_write_raw,
|
||||
.write_raw_get_fmt = mxs_lradc_adc_write_raw_get_fmt,
|
||||
@@ -455,7 +454,6 @@ static int mxs_lradc_adc_configure_trigger(struct iio_trigger *trig, bool state)
|
||||
}
|
||||
|
||||
static const struct iio_trigger_ops mxs_lradc_adc_trigger_ops = {
|
||||
.owner = THIS_MODULE,
|
||||
.set_trigger_state = &mxs_lradc_adc_configure_trigger,
|
||||
};
|
||||
|
||||
|
@@ -402,7 +402,6 @@ static int nau7802_write_raw_get_fmt(struct iio_dev *indio_dev,
|
||||
}
|
||||
|
||||
static const struct iio_info nau7802_info = {
|
||||
.driver_module = THIS_MODULE,
|
||||
.read_raw = &nau7802_read_raw,
|
||||
.write_raw = &nau7802_write_raw,
|
||||
.write_raw_get_fmt = nau7802_write_raw_get_fmt,
|
||||
|
@@ -430,7 +430,6 @@ out:
|
||||
|
||||
static const struct iio_info palmas_gpadc_iio_info = {
|
||||
.read_raw = palmas_gpadc_read_raw,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
#define PALMAS_ADC_CHAN_IIO(chan, _type, chan_info) \
|
||||
|
@@ -728,7 +728,6 @@ static int pm8xxx_of_xlate(struct iio_dev *indio_dev,
|
||||
}
|
||||
|
||||
static const struct iio_info pm8xxx_xoadc_info = {
|
||||
.driver_module = THIS_MODULE,
|
||||
.of_xlate = pm8xxx_of_xlate,
|
||||
.read_raw = pm8xxx_read_raw,
|
||||
};
|
||||
|
@@ -356,7 +356,6 @@ static int iadc_read_raw(struct iio_dev *indio_dev,
|
||||
|
||||
static const struct iio_info iadc_info = {
|
||||
.read_raw = iadc_read_raw,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
static irqreturn_t iadc_isr(int irq, void *dev_id)
|
||||
|
@@ -506,7 +506,6 @@ static int vadc_of_xlate(struct iio_dev *indio_dev,
|
||||
static const struct iio_info vadc_info = {
|
||||
.read_raw = vadc_read_raw,
|
||||
.of_xlate = vadc_of_xlate,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
struct vadc_channels {
|
||||
|
@@ -277,7 +277,6 @@ static int rcar_gyroadc_reg_access(struct iio_dev *indio_dev,
|
||||
}
|
||||
|
||||
static const struct iio_info rcar_gyroadc_iio_info = {
|
||||
.driver_module = THIS_MODULE,
|
||||
.read_raw = rcar_gyroadc_read_raw,
|
||||
.debugfs_reg_access = rcar_gyroadc_reg_access,
|
||||
};
|
||||
|
@@ -125,7 +125,6 @@ static irqreturn_t rockchip_saradc_isr(int irq, void *dev_id)
|
||||
|
||||
static const struct iio_info rockchip_saradc_iio_info = {
|
||||
.read_raw = rockchip_saradc_read_raw,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
#define ADC_CHANNEL(_index, _id) { \
|
||||
|
@@ -254,7 +254,6 @@ static int spear_adc_configure(struct spear_adc_state *st)
|
||||
static const struct iio_info spear_adc_info = {
|
||||
.read_raw = &spear_adc_read_raw,
|
||||
.write_raw = &spear_adc_write_raw,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
static int spear_adc_probe(struct platform_device *pdev)
|
||||
|
@@ -1385,7 +1385,6 @@ static const struct iio_info stm32_adc_iio_info = {
|
||||
.update_scan_mode = stm32_adc_update_scan_mode,
|
||||
.debugfs_reg_access = stm32_adc_debugfs_reg_access,
|
||||
.of_xlate = stm32_adc_of_xlate,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
static unsigned int stm32_adc_dma_residue(struct stm32_adc *adc)
|
||||
|
@@ -172,7 +172,6 @@ static int stx104_write_raw(struct iio_dev *indio_dev,
|
||||
}
|
||||
|
||||
static const struct iio_info stx104_info = {
|
||||
.driver_module = THIS_MODULE,
|
||||
.read_raw = stx104_read_raw,
|
||||
.write_raw = stx104_write_raw
|
||||
};
|
||||
|
@@ -352,7 +352,6 @@ static int sun4i_gpadc_read_raw(struct iio_dev *indio_dev,
|
||||
|
||||
static const struct iio_info sun4i_gpadc_iio_info = {
|
||||
.read_raw = sun4i_gpadc_read_raw,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
static irqreturn_t sun4i_gpadc_temp_data_irq_handler(int irq, void *dev_id)
|
||||
|
@@ -124,7 +124,6 @@ static struct adcxx1c_model adcxx1c_models[] = {
|
||||
|
||||
static const struct iio_info adc081c_info = {
|
||||
.read_raw = adc081c_read_raw,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
static irqreturn_t adc081c_trigger_handler(int irq, void *p)
|
||||
|
@@ -195,7 +195,6 @@ static int adc0832_read_raw(struct iio_dev *iio,
|
||||
|
||||
static const struct iio_info adc0832_info = {
|
||||
.read_raw = adc0832_read_raw,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
static irqreturn_t adc0832_trigger_handler(int irq, void *p)
|
||||
|
@@ -186,7 +186,6 @@ static int adc084s021_buffer_postdisable(struct iio_dev *indio_dev)
|
||||
|
||||
static const struct iio_info adc084s021_info = {
|
||||
.read_raw = adc084s021_read_raw,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
static const struct iio_buffer_setup_ops adc084s021_buffer_setup_ops = {
|
||||
|
@@ -220,7 +220,6 @@ static int adc108s102_read_raw(struct iio_dev *indio_dev,
|
||||
static const struct iio_info adc108s102_info = {
|
||||
.read_raw = &adc108s102_read_raw,
|
||||
.update_scan_mode = &adc108s102_update_scan_mode,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
static int adc108s102_probe(struct spi_device *spi)
|
||||
|
@@ -277,7 +277,6 @@ static int adc12138_read_raw(struct iio_dev *iio,
|
||||
|
||||
static const struct iio_info adc12138_info = {
|
||||
.read_raw = adc12138_read_raw,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
static int adc12138_init(struct adc12138 *adc)
|
||||
|
@@ -130,7 +130,6 @@ static const struct adc128_configuration adc128_config[] = {
|
||||
|
||||
static const struct iio_info adc128_info = {
|
||||
.read_raw = adc128_read_raw,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
static int adc128_probe(struct spi_device *spi)
|
||||
|
@@ -173,7 +173,6 @@ static int ti_adc_read_raw(struct iio_dev *indio_dev,
|
||||
}
|
||||
|
||||
static const struct iio_info ti_adc_info = {
|
||||
.driver_module = THIS_MODULE,
|
||||
.read_raw = ti_adc_read_raw,
|
||||
};
|
||||
|
||||
|
@@ -332,7 +332,7 @@ static int ads1015_set_power_state(struct ads1015_data *data, bool on)
|
||||
static
|
||||
int ads1015_get_adc_result(struct ads1015_data *data, int chan, int *val)
|
||||
{
|
||||
int ret, pga, dr, conv_time;
|
||||
int ret, pga, dr, dr_old, conv_time;
|
||||
unsigned int old, mask, cfg;
|
||||
|
||||
if (chan < 0 || chan >= ADS1015_CHANNELS)
|
||||
@@ -358,17 +358,17 @@ int ads1015_get_adc_result(struct ads1015_data *data, int chan, int *val)
|
||||
}
|
||||
|
||||
cfg = (old & ~mask) | (cfg & mask);
|
||||
|
||||
ret = regmap_write(data->regmap, ADS1015_CFG_REG, cfg);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (old != cfg || data->conv_invalid) {
|
||||
int dr_old = (old & ADS1015_CFG_DR_MASK) >>
|
||||
ADS1015_CFG_DR_SHIFT;
|
||||
|
||||
if (old != cfg) {
|
||||
ret = regmap_write(data->regmap, ADS1015_CFG_REG, cfg);
|
||||
if (ret)
|
||||
return ret;
|
||||
data->conv_invalid = true;
|
||||
}
|
||||
if (data->conv_invalid) {
|
||||
dr_old = (old & ADS1015_CFG_DR_MASK) >> ADS1015_CFG_DR_SHIFT;
|
||||
conv_time = DIV_ROUND_UP(USEC_PER_SEC, data->data_rate[dr_old]);
|
||||
conv_time += DIV_ROUND_UP(USEC_PER_SEC, data->data_rate[dr]);
|
||||
conv_time += conv_time / 10; /* 10% internal clock inaccuracy */
|
||||
usleep_range(conv_time, conv_time + 1);
|
||||
data->conv_invalid = false;
|
||||
}
|
||||
@@ -821,7 +821,6 @@ static const struct attribute_group ads1115_attribute_group = {
|
||||
};
|
||||
|
||||
static const struct iio_info ads1015_info = {
|
||||
.driver_module = THIS_MODULE,
|
||||
.read_raw = ads1015_read_raw,
|
||||
.write_raw = ads1015_write_raw,
|
||||
.read_event_value = ads1015_read_event,
|
||||
@@ -832,7 +831,6 @@ static const struct iio_info ads1015_info = {
|
||||
};
|
||||
|
||||
static const struct iio_info ads1115_info = {
|
||||
.driver_module = THIS_MODULE,
|
||||
.read_raw = ads1015_read_raw,
|
||||
.write_raw = ads1015_write_raw,
|
||||
.read_event_value = ads1015_read_event,
|
||||
|
@@ -372,7 +372,6 @@ static int ti_ads7950_read_raw(struct iio_dev *indio_dev,
|
||||
static const struct iio_info ti_ads7950_info = {
|
||||
.read_raw = &ti_ads7950_read_raw,
|
||||
.update_scan_mode = ti_ads7950_update_scan_mode,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
static int ti_ads7950_probe(struct spi_device *spi)
|
||||
|
@@ -369,7 +369,6 @@ static const struct iio_info ads8688_info = {
|
||||
.write_raw = &ads8688_write_raw,
|
||||
.write_raw_get_fmt = &ads8688_write_raw_get_fmt,
|
||||
.attrs = &ads8688_attribute_group,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
static const struct ads8688_chip_info ads8688_chip_info_tbl[] = {
|
||||
@@ -474,7 +473,6 @@ MODULE_DEVICE_TABLE(of, ads8688_of_match);
|
||||
static struct spi_driver ads8688_driver = {
|
||||
.driver = {
|
||||
.name = "ads8688",
|
||||
.owner = THIS_MODULE,
|
||||
},
|
||||
.probe = ads8688_probe,
|
||||
.remove = ads8688_remove,
|
||||
|
@@ -157,7 +157,6 @@ static int tlc4541_read_raw(struct iio_dev *indio_dev,
|
||||
|
||||
static const struct iio_info tlc4541_info = {
|
||||
.read_raw = &tlc4541_read_raw,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
static int tlc4541_probe(struct spi_device *spi)
|
||||
|
@@ -533,7 +533,6 @@ err_unlock:
|
||||
|
||||
static const struct iio_info tiadc_info = {
|
||||
.read_raw = &tiadc_read_raw,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
static int tiadc_request_dma(struct platform_device *pdev,
|
||||
|
@@ -212,7 +212,6 @@ static int twl4030_madc_read(struct iio_dev *iio_dev,
|
||||
|
||||
static const struct iio_info twl4030_madc_iio_info = {
|
||||
.read_raw = &twl4030_madc_read,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
#define TWL4030_ADC_CHANNEL(_channel, _type, _name) { \
|
||||
|
@@ -843,7 +843,6 @@ static const struct iio_chan_spec twl6032_gpadc_iio_channels[] = {
|
||||
|
||||
static const struct iio_info twl6030_gpadc_iio_info = {
|
||||
.read_raw = &twl6030_gpadc_read_raw,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
static const struct twl6030_gpadc_platform_data twl6030_pdata = {
|
||||
|
@@ -799,7 +799,6 @@ static int vf610_adc_reg_access(struct iio_dev *indio_dev,
|
||||
}
|
||||
|
||||
static const struct iio_info vf610_adc_iio_info = {
|
||||
.driver_module = THIS_MODULE,
|
||||
.read_raw = &vf610_read_raw,
|
||||
.write_raw = &vf610_write_raw,
|
||||
.debugfs_reg_access = &vf610_adc_reg_access,
|
||||
|
@@ -107,7 +107,6 @@ error:
|
||||
|
||||
static const struct iio_info vprbrd_adc_iio_info = {
|
||||
.read_raw = &vprbrd_iio_read_raw,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
static int vprbrd_adc_probe(struct platform_device *pdev)
|
||||
|
@@ -675,7 +675,6 @@ err_out:
|
||||
}
|
||||
|
||||
static const struct iio_trigger_ops xadc_trigger_ops = {
|
||||
.owner = THIS_MODULE,
|
||||
.set_trigger_state = &xadc_trigger_set_state,
|
||||
};
|
||||
|
||||
@@ -1028,7 +1027,6 @@ static const struct iio_info xadc_info = {
|
||||
.read_event_value = &xadc_read_event_value,
|
||||
.write_event_value = &xadc_write_event_value,
|
||||
.update_scan_mode = &xadc_update_scan_mode,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
static const struct of_device_id xadc_of_match_table[] = {
|
||||
|
Reference in New Issue
Block a user