Commit 1e9663c6 authored by Lars-Peter Clausen's avatar Lars-Peter Clausen Committed by Jonathan Cameron

iio:trigger: Introduce iio_tigger_{set,get}_drvdata

Introduce iio_tigger_{set,get}_drvdata which allows to attach driver specific
data to a trigger. The functions wrap access to the triggers private_data field
and all current users are updated to use iio_tigger_{set,get}_drvdata instead of
directly accessing the private_data field. This is the first step towards
removing the private_data field from the iio_trigger struct.

The following coccinelle script has been used to update the drivers:
<smpl>
@@
struct iio_trigger *trigger;
expression priv;
@@
-trigger->private_data = priv
+iio_trigger_set_drv_data(trigger, priv)

@@
struct iio_trigger *trigger;
@@
-trigger->private_data
+iio_trigger_get_drv_data(trigger)
</smpl>
Signed-off-by: default avatarLars-Peter Clausen <lars@metafoo.de>
Signed-off-by: default avatarJonathan Cameron <jic23@kernel.org>
parent c5cf4606
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
int st_accel_trig_set_state(struct iio_trigger *trig, bool state) int st_accel_trig_set_state(struct iio_trigger *trig, bool state)
{ {
struct iio_dev *indio_dev = trig->private_data; struct iio_dev *indio_dev = iio_trigger_get_drvdata(trig);
return st_sensors_set_dataready_irq(indio_dev, state); return st_sensors_set_dataready_irq(indio_dev, state);
} }
......
...@@ -470,7 +470,7 @@ static int ad_sd_probe_trigger(struct iio_dev *indio_dev) ...@@ -470,7 +470,7 @@ static int ad_sd_probe_trigger(struct iio_dev *indio_dev)
disable_irq_nosync(sigma_delta->spi->irq); disable_irq_nosync(sigma_delta->spi->irq);
} }
sigma_delta->trig->dev.parent = &sigma_delta->spi->dev; sigma_delta->trig->dev.parent = &sigma_delta->spi->dev;
sigma_delta->trig->private_data = sigma_delta; iio_trigger_set_drvdata(sigma_delta->trig, sigma_delta);
ret = iio_trigger_register(sigma_delta->trig); ret = iio_trigger_register(sigma_delta->trig);
if (ret) if (ret)
......
...@@ -188,7 +188,7 @@ static u8 at91_adc_get_trigger_value_by_name(struct iio_dev *idev, ...@@ -188,7 +188,7 @@ static u8 at91_adc_get_trigger_value_by_name(struct iio_dev *idev,
static int at91_adc_configure_trigger(struct iio_trigger *trig, bool state) static int at91_adc_configure_trigger(struct iio_trigger *trig, bool state)
{ {
struct iio_dev *idev = trig->private_data; struct iio_dev *idev = iio_trigger_get_drvdata(trig);
struct at91_adc_state *st = iio_priv(idev); struct at91_adc_state *st = iio_priv(idev);
struct iio_buffer *buffer = idev->buffer; struct iio_buffer *buffer = idev->buffer;
struct at91_adc_reg_desc *reg = st->registers; struct at91_adc_reg_desc *reg = st->registers;
...@@ -254,7 +254,7 @@ static struct iio_trigger *at91_adc_allocate_trigger(struct iio_dev *idev, ...@@ -254,7 +254,7 @@ static struct iio_trigger *at91_adc_allocate_trigger(struct iio_dev *idev,
return NULL; return NULL;
trig->dev.parent = idev->dev.parent; trig->dev.parent = idev->dev.parent;
trig->private_data = idev; iio_trigger_set_drvdata(trig, idev);
trig->ops = &at91_adc_trigger_ops; trig->ops = &at91_adc_trigger_ops;
ret = iio_trigger_register(trig); ret = iio_trigger_register(trig);
......
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
static int hid_sensor_data_rdy_trigger_set_state(struct iio_trigger *trig, static int hid_sensor_data_rdy_trigger_set_state(struct iio_trigger *trig,
bool state) bool state)
{ {
struct hid_sensor_common *st = trig->private_data; struct hid_sensor_common *st = iio_trigger_get_drvdata(trig);
int state_val; int state_val;
state_val = state ? 1 : 0; state_val = state ? 1 : 0;
...@@ -76,7 +76,7 @@ int hid_sensor_setup_trigger(struct iio_dev *indio_dev, const char *name, ...@@ -76,7 +76,7 @@ int hid_sensor_setup_trigger(struct iio_dev *indio_dev, const char *name,
} }
trig->dev.parent = indio_dev->dev.parent; trig->dev.parent = indio_dev->dev.parent;
trig->private_data = attrb; iio_trigger_set_drvdata(trig, attrb);
trig->ops = &hid_sensor_trigger_ops; trig->ops = &hid_sensor_trigger_ops;
ret = iio_trigger_register(trig); ret = iio_trigger_register(trig);
......
...@@ -40,7 +40,7 @@ int st_sensors_allocate_trigger(struct iio_dev *indio_dev, ...@@ -40,7 +40,7 @@ int st_sensors_allocate_trigger(struct iio_dev *indio_dev,
if (err) if (err)
goto request_irq_error; goto request_irq_error;
sdata->trig->private_data = indio_dev; iio_trigger_set_drvdata(sdata->trig, indio_dev);
sdata->trig->ops = trigger_ops; sdata->trig->ops = trigger_ops;
sdata->trig->dev.parent = sdata->dev; sdata->trig->dev.parent = sdata->dev;
......
...@@ -81,7 +81,7 @@ void itg3200_buffer_unconfigure(struct iio_dev *indio_dev) ...@@ -81,7 +81,7 @@ void itg3200_buffer_unconfigure(struct iio_dev *indio_dev)
static int itg3200_data_rdy_trigger_set_state(struct iio_trigger *trig, static int itg3200_data_rdy_trigger_set_state(struct iio_trigger *trig,
bool state) bool state)
{ {
struct iio_dev *indio_dev = trig->private_data; struct iio_dev *indio_dev = iio_trigger_get_drvdata(trig);
int ret; int ret;
u8 msc; u8 msc;
...@@ -129,7 +129,7 @@ int itg3200_probe_trigger(struct iio_dev *indio_dev) ...@@ -129,7 +129,7 @@ int itg3200_probe_trigger(struct iio_dev *indio_dev)
st->trig->dev.parent = &st->i2c->dev; st->trig->dev.parent = &st->i2c->dev;
st->trig->ops = &itg3200_trigger_ops; st->trig->ops = &itg3200_trigger_ops;
st->trig->private_data = indio_dev; iio_trigger_set_drvdata(st->trig, indio_dev);
ret = iio_trigger_register(st->trig); ret = iio_trigger_register(st->trig);
if (ret) if (ret)
goto error_free_irq; goto error_free_irq;
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
int st_gyro_trig_set_state(struct iio_trigger *trig, bool state) int st_gyro_trig_set_state(struct iio_trigger *trig, bool state)
{ {
struct iio_dev *indio_dev = trig->private_data; struct iio_dev *indio_dev = iio_trigger_get_drvdata(trig);
return st_sensors_set_dataready_irq(indio_dev, state); return st_sensors_set_dataready_irq(indio_dev, state);
} }
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
static int adis_data_rdy_trigger_set_state(struct iio_trigger *trig, static int adis_data_rdy_trigger_set_state(struct iio_trigger *trig,
bool state) bool state)
{ {
struct adis *adis = trig->private_data; struct adis *adis = iio_trigger_get_drvdata(trig);
return adis_enable_irq(adis, state); return adis_enable_irq(adis, state);
} }
...@@ -57,7 +57,7 @@ int adis_probe_trigger(struct adis *adis, struct iio_dev *indio_dev) ...@@ -57,7 +57,7 @@ int adis_probe_trigger(struct adis *adis, struct iio_dev *indio_dev)
adis->trig->dev.parent = &adis->spi->dev; adis->trig->dev.parent = &adis->spi->dev;
adis->trig->ops = &adis_trigger_ops; adis->trig->ops = &adis_trigger_ops;
adis->trig->private_data = adis; iio_trigger_set_drvdata(adis->trig, adis);
ret = iio_trigger_register(adis->trig); ret = iio_trigger_register(adis->trig);
indio_dev->trig = adis->trig; indio_dev->trig = adis->trig;
......
...@@ -103,7 +103,7 @@ static int inv_mpu6050_set_enable(struct iio_dev *indio_dev, bool enable) ...@@ -103,7 +103,7 @@ static int inv_mpu6050_set_enable(struct iio_dev *indio_dev, bool enable)
static int inv_mpu_data_rdy_trigger_set_state(struct iio_trigger *trig, static int inv_mpu_data_rdy_trigger_set_state(struct iio_trigger *trig,
bool state) bool state)
{ {
return inv_mpu6050_set_enable(trig->private_data, state); return inv_mpu6050_set_enable(iio_trigger_get_drvdata(trig), state);
} }
static const struct iio_trigger_ops inv_mpu_trigger_ops = { static const struct iio_trigger_ops inv_mpu_trigger_ops = {
...@@ -130,8 +130,8 @@ int inv_mpu6050_probe_trigger(struct iio_dev *indio_dev) ...@@ -130,8 +130,8 @@ int inv_mpu6050_probe_trigger(struct iio_dev *indio_dev)
if (ret) if (ret)
goto error_free_trig; goto error_free_trig;
st->trig->dev.parent = &st->client->dev; st->trig->dev.parent = &st->client->dev;
st->trig->private_data = indio_dev;
st->trig->ops = &inv_mpu_trigger_ops; st->trig->ops = &inv_mpu_trigger_ops;
iio_trigger_set_drvdata(st->trig, indio_dev);
ret = iio_trigger_register(st->trig); ret = iio_trigger_register(st->trig);
if (ret) if (ret)
goto error_free_irq; goto error_free_irq;
......
...@@ -228,7 +228,7 @@ __lis3l02dq_write_data_ready_config(struct iio_dev *indio_dev, bool state) ...@@ -228,7 +228,7 @@ __lis3l02dq_write_data_ready_config(struct iio_dev *indio_dev, bool state)
static int lis3l02dq_data_rdy_trigger_set_state(struct iio_trigger *trig, static int lis3l02dq_data_rdy_trigger_set_state(struct iio_trigger *trig,
bool state) bool state)
{ {
struct iio_dev *indio_dev = trig->private_data; struct iio_dev *indio_dev = iio_trigger_get_drvdata(trig);
int ret = 0; int ret = 0;
u8 t; u8 t;
...@@ -252,7 +252,7 @@ static int lis3l02dq_data_rdy_trigger_set_state(struct iio_trigger *trig, ...@@ -252,7 +252,7 @@ static int lis3l02dq_data_rdy_trigger_set_state(struct iio_trigger *trig,
*/ */
static int lis3l02dq_trig_try_reen(struct iio_trigger *trig) static int lis3l02dq_trig_try_reen(struct iio_trigger *trig)
{ {
struct iio_dev *indio_dev = trig->private_data; struct iio_dev *indio_dev = iio_trigger_get_drvdata(trig);
struct lis3l02dq_state *st = iio_priv(indio_dev); struct lis3l02dq_state *st = iio_priv(indio_dev);
int i; int i;
...@@ -290,7 +290,7 @@ int lis3l02dq_probe_trigger(struct iio_dev *indio_dev) ...@@ -290,7 +290,7 @@ int lis3l02dq_probe_trigger(struct iio_dev *indio_dev)
st->trig->dev.parent = &st->us->dev; st->trig->dev.parent = &st->us->dev;
st->trig->ops = &lis3l02dq_trigger_ops; st->trig->ops = &lis3l02dq_trigger_ops;
st->trig->private_data = indio_dev; iio_trigger_set_drvdata(st->trig, indio_dev);
ret = iio_trigger_register(st->trig); ret = iio_trigger_register(st->trig);
if (ret) if (ret)
goto error_free_trig; goto error_free_trig;
......
...@@ -646,7 +646,7 @@ static irqreturn_t mxs_lradc_trigger_handler(int irq, void *p) ...@@ -646,7 +646,7 @@ static irqreturn_t mxs_lradc_trigger_handler(int irq, void *p)
static int mxs_lradc_configure_trigger(struct iio_trigger *trig, bool state) static int mxs_lradc_configure_trigger(struct iio_trigger *trig, bool state)
{ {
struct iio_dev *iio = trig->private_data; struct iio_dev *iio = iio_trigger_get_drvdata(trig);
struct mxs_lradc *lradc = iio_priv(iio); struct mxs_lradc *lradc = iio_priv(iio);
const uint32_t st = state ? STMP_OFFSET_REG_SET : STMP_OFFSET_REG_CLR; const uint32_t st = state ? STMP_OFFSET_REG_SET : STMP_OFFSET_REG_CLR;
...@@ -670,7 +670,7 @@ static int mxs_lradc_trigger_init(struct iio_dev *iio) ...@@ -670,7 +670,7 @@ static int mxs_lradc_trigger_init(struct iio_dev *iio)
return -ENOMEM; return -ENOMEM;
trig->dev.parent = iio->dev.parent; trig->dev.parent = iio->dev.parent;
trig->private_data = iio; iio_trigger_set_drvdata(trig, iio);
trig->ops = &mxs_lradc_trigger_ops; trig->ops = &mxs_lradc_trigger_ops;
ret = iio_trigger_register(trig); ret = iio_trigger_register(trig);
......
...@@ -32,7 +32,7 @@ static irqreturn_t ade7758_data_rdy_trig_poll(int irq, void *private) ...@@ -32,7 +32,7 @@ static irqreturn_t ade7758_data_rdy_trig_poll(int irq, void *private)
static int ade7758_data_rdy_trigger_set_state(struct iio_trigger *trig, static int ade7758_data_rdy_trigger_set_state(struct iio_trigger *trig,
bool state) bool state)
{ {
struct iio_dev *indio_dev = trig->private_data; struct iio_dev *indio_dev = iio_trigger_get_drvdata(trig);
dev_dbg(&indio_dev->dev, "%s (%d)\n", __func__, state); dev_dbg(&indio_dev->dev, "%s (%d)\n", __func__, state);
return ade7758_set_irq(&indio_dev->dev, state); return ade7758_set_irq(&indio_dev->dev, state);
...@@ -44,7 +44,7 @@ static int ade7758_data_rdy_trigger_set_state(struct iio_trigger *trig, ...@@ -44,7 +44,7 @@ static int ade7758_data_rdy_trigger_set_state(struct iio_trigger *trig,
**/ **/
static int ade7758_trig_try_reen(struct iio_trigger *trig) static int ade7758_trig_try_reen(struct iio_trigger *trig)
{ {
struct iio_dev *indio_dev = trig->private_data; struct iio_dev *indio_dev = iio_trigger_get_drvdata(trig);
struct ade7758_state *st = iio_priv(indio_dev); struct ade7758_state *st = iio_priv(indio_dev);
enable_irq(st->us->irq); enable_irq(st->us->irq);
...@@ -81,7 +81,7 @@ int ade7758_probe_trigger(struct iio_dev *indio_dev) ...@@ -81,7 +81,7 @@ int ade7758_probe_trigger(struct iio_dev *indio_dev)
st->trig->dev.parent = &st->us->dev; st->trig->dev.parent = &st->us->dev;
st->trig->ops = &ade7758_trigger_ops; st->trig->ops = &ade7758_trigger_ops;
st->trig->private_data = indio_dev; iio_trigger_set_drvdata(st->trig, indio_dev);
ret = iio_trigger_register(st->trig); ret = iio_trigger_register(st->trig);
/* select default trigger */ /* select default trigger */
......
...@@ -65,7 +65,7 @@ struct bfin_tmr_state { ...@@ -65,7 +65,7 @@ struct bfin_tmr_state {
static int iio_bfin_tmr_set_state(struct iio_trigger *trig, bool state) static int iio_bfin_tmr_set_state(struct iio_trigger *trig, bool state)
{ {
struct bfin_tmr_state *st = trig->private_data; struct bfin_tmr_state *st = iio_trigger_get_drvdata(trig);
if (get_gptimer_period(st->t->id) == 0) if (get_gptimer_period(st->t->id) == 0)
return -EINVAL; return -EINVAL;
...@@ -82,7 +82,7 @@ static ssize_t iio_bfin_tmr_frequency_store(struct device *dev, ...@@ -82,7 +82,7 @@ static ssize_t iio_bfin_tmr_frequency_store(struct device *dev,
struct device_attribute *attr, const char *buf, size_t count) struct device_attribute *attr, const char *buf, size_t count)
{ {
struct iio_trigger *trig = to_iio_trigger(dev); struct iio_trigger *trig = to_iio_trigger(dev);
struct bfin_tmr_state *st = trig->private_data; struct bfin_tmr_state *st = iio_trigger_get_drvdata(trig);
unsigned long val; unsigned long val;
bool enabled; bool enabled;
int ret; int ret;
...@@ -125,7 +125,7 @@ static ssize_t iio_bfin_tmr_frequency_show(struct device *dev, ...@@ -125,7 +125,7 @@ static ssize_t iio_bfin_tmr_frequency_show(struct device *dev,
char *buf) char *buf)
{ {
struct iio_trigger *trig = to_iio_trigger(dev); struct iio_trigger *trig = to_iio_trigger(dev);
struct bfin_tmr_state *st = trig->private_data; struct bfin_tmr_state *st = iio_trigger_get_drvdata(trig);
unsigned int period = get_gptimer_period(st->t->id); unsigned int period = get_gptimer_period(st->t->id);
unsigned long val; unsigned long val;
...@@ -213,9 +213,9 @@ static int iio_bfin_tmr_trigger_probe(struct platform_device *pdev) ...@@ -213,9 +213,9 @@ static int iio_bfin_tmr_trigger_probe(struct platform_device *pdev)
goto out1; goto out1;
} }
st->trig->private_data = st;
st->trig->ops = &iio_bfin_tmr_trigger_ops; st->trig->ops = &iio_bfin_tmr_trigger_ops;
st->trig->dev.groups = iio_bfin_tmr_trigger_attr_groups; st->trig->dev.groups = iio_bfin_tmr_trigger_attr_groups;
iio_trigger_set_drvdata(st->trig, st);
ret = iio_trigger_register(st->trig); ret = iio_trigger_register(st->trig);
if (ret) if (ret)
goto out2; goto out2;
......
...@@ -83,7 +83,7 @@ static int iio_gpio_trigger_probe(struct platform_device *pdev) ...@@ -83,7 +83,7 @@ static int iio_gpio_trigger_probe(struct platform_device *pdev)
ret = -ENOMEM; ret = -ENOMEM;
goto error_put_trigger; goto error_put_trigger;
} }
trig->private_data = trig_info; iio_trigger_set_drvdata(trig, trig_info);
trig_info->irq = irq; trig_info->irq = irq;
trig->ops = &iio_gpio_trigger_ops; trig->ops = &iio_gpio_trigger_ops;
ret = request_irq(irq, iio_gpio_trigger_poll, ret = request_irq(irq, iio_gpio_trigger_poll,
...@@ -121,7 +121,7 @@ static int iio_gpio_trigger_probe(struct platform_device *pdev) ...@@ -121,7 +121,7 @@ static int iio_gpio_trigger_probe(struct platform_device *pdev)
trig2, trig2,
&iio_gpio_trigger_list, &iio_gpio_trigger_list,
alloc_list) { alloc_list) {
trig_info = trig->private_data; trig_info = iio_trigger_get_drvdata(trig);
free_irq(gpio_to_irq(trig_info->irq), trig); free_irq(gpio_to_irq(trig_info->irq), trig);
kfree(trig_info); kfree(trig_info);
iio_trigger_unregister(trig); iio_trigger_unregister(trig);
...@@ -140,7 +140,7 @@ static int iio_gpio_trigger_remove(struct platform_device *pdev) ...@@ -140,7 +140,7 @@ static int iio_gpio_trigger_remove(struct platform_device *pdev)
trig2, trig2,
&iio_gpio_trigger_list, &iio_gpio_trigger_list,
alloc_list) { alloc_list) {
trig_info = trig->private_data; trig_info = iio_trigger_get_drvdata(trig);
iio_trigger_unregister(trig); iio_trigger_unregister(trig);
free_irq(trig_info->irq, trig); free_irq(trig_info->irq, trig);
kfree(trig_info); kfree(trig_info);
......
...@@ -30,7 +30,7 @@ struct iio_prtc_trigger_info { ...@@ -30,7 +30,7 @@ struct iio_prtc_trigger_info {
static int iio_trig_periodic_rtc_set_state(struct iio_trigger *trig, bool state) static int iio_trig_periodic_rtc_set_state(struct iio_trigger *trig, bool state)
{ {
struct iio_prtc_trigger_info *trig_info = trig->private_data; struct iio_prtc_trigger_info *trig_info = iio_trigger_get_drvdata(trig);
if (trig_info->frequency == 0) if (trig_info->frequency == 0)
return -EINVAL; return -EINVAL;
printk(KERN_INFO "trigger frequency is %d\n", trig_info->frequency); printk(KERN_INFO "trigger frequency is %d\n", trig_info->frequency);
...@@ -42,7 +42,7 @@ static ssize_t iio_trig_periodic_read_freq(struct device *dev, ...@@ -42,7 +42,7 @@ static ssize_t iio_trig_periodic_read_freq(struct device *dev,
char *buf) char *buf)
{ {
struct iio_trigger *trig = to_iio_trigger(dev); struct iio_trigger *trig = to_iio_trigger(dev);
struct iio_prtc_trigger_info *trig_info = trig->private_data; struct iio_prtc_trigger_info *trig_info = iio_trigger_get_drvdata(trig);
return sprintf(buf, "%u\n", trig_info->frequency); return sprintf(buf, "%u\n", trig_info->frequency);
} }
...@@ -52,7 +52,7 @@ static ssize_t iio_trig_periodic_write_freq(struct device *dev, ...@@ -52,7 +52,7 @@ static ssize_t iio_trig_periodic_write_freq(struct device *dev,
size_t len) size_t len)
{ {
struct iio_trigger *trig = to_iio_trigger(dev); struct iio_trigger *trig = to_iio_trigger(dev);
struct iio_prtc_trigger_info *trig_info = trig->private_data; struct iio_prtc_trigger_info *trig_info = iio_trigger_get_drvdata(trig);
unsigned long val; unsigned long val;
int ret; int ret;
...@@ -124,7 +124,7 @@ static int iio_trig_periodic_rtc_probe(struct platform_device *dev) ...@@ -124,7 +124,7 @@ static int iio_trig_periodic_rtc_probe(struct platform_device *dev)
ret = -ENOMEM; ret = -ENOMEM;
goto error_put_trigger_and_remove_from_list; goto error_put_trigger_and_remove_from_list;
} }
trig->private_data = trig_info; iio_trigger_set_drvdata(trig, trig_info);
trig->ops = &iio_prtc_trigger_ops; trig->ops = &iio_prtc_trigger_ops;
/* RTC access */ /* RTC access */
trig_info->rtc trig_info->rtc
...@@ -158,7 +158,7 @@ static int iio_trig_periodic_rtc_probe(struct platform_device *dev) ...@@ -158,7 +158,7 @@ static int iio_trig_periodic_rtc_probe(struct platform_device *dev)
trig2, trig2,
&iio_prtc_trigger_list, &iio_prtc_trigger_list,
alloc_list) { alloc_list) {
trig_info = trig->private_data; trig_info = iio_trigger_get_drvdata(trig);
rtc_irq_unregister(trig_info->rtc, &trig_info->task); rtc_irq_unregister(trig_info->rtc, &trig_info->task);
rtc_class_close(trig_info->rtc); rtc_class_close(trig_info->rtc);
kfree(trig_info); kfree(trig_info);
...@@ -176,7 +176,7 @@ static int iio_trig_periodic_rtc_remove(struct platform_device *dev) ...@@ -176,7 +176,7 @@ static int iio_trig_periodic_rtc_remove(struct platform_device *dev)
trig2, trig2,
&iio_prtc_trigger_list, &iio_prtc_trigger_list,
alloc_list) { alloc_list) {
trig_info = trig->private_data; trig_info = iio_trigger_get_drvdata(trig);
rtc_irq_unregister(trig_info->rtc, &trig_info->task); rtc_irq_unregister(trig_info->rtc, &trig_info->task);
rtc_class_close(trig_info->rtc); rtc_class_close(trig_info->rtc);
kfree(trig_info); kfree(trig_info);
......
...@@ -103,7 +103,7 @@ static ssize_t iio_sysfs_trigger_poll(struct device *dev, ...@@ -103,7 +103,7 @@ static ssize_t iio_sysfs_trigger_poll(struct device *dev,
struct device_attribute *attr, const char *buf, size_t count) struct device_attribute *attr, const char *buf, size_t count)
{ {
struct iio_trigger *trig = to_iio_trigger(dev); struct iio_trigger *trig = to_iio_trigger(dev);
struct iio_sysfs_trig *sysfs_trig = trig->private_data; struct iio_sysfs_trig *sysfs_trig = iio_trigger_get_drvdata(trig);
irq_work_queue(&sysfs_trig->work); irq_work_queue(&sysfs_trig->work);
...@@ -160,7 +160,7 @@ static int iio_sysfs_trigger_probe(int id) ...@@ -160,7 +160,7 @@ static int iio_sysfs_trigger_probe(int id)
t->trig->dev.groups = iio_sysfs_trigger_attr_groups; t->trig->dev.groups = iio_sysfs_trigger_attr_groups;
t->trig->ops = &iio_sysfs_trigger_ops; t->trig->ops = &iio_sysfs_trigger_ops;
t->trig->dev.parent = &iio_sysfs_trig_dev; t->trig->dev.parent = &iio_sysfs_trig_dev;
t->trig->private_data = t; iio_trigger_set_drvdata(t->trig, t);
init_irq_work(&t->work, iio_sysfs_trigger_work); init_irq_work(&t->work, iio_sysfs_trigger_work);
......
...@@ -91,6 +91,30 @@ static inline void iio_trigger_get(struct iio_trigger *trig) ...@@ -91,6 +91,30 @@ static inline void iio_trigger_get(struct iio_trigger *trig)
__module_get(trig->ops->owner); __module_get(trig->ops->owner);
} }
/**
* iio_device_set_drvdata() - Set trigger driver data
* @trig: IIO trigger structure
* @data: Driver specific data
*
* Allows to attach an arbitrary pointer to an IIO trigger, which can later be
* retrieved by iio_trigger_get_drvdata().
*/
static inline void iio_trigger_set_drvdata(struct iio_trigger *trig, void *data)
{
trig->private_data = data;
}
/**
* iio_trigger_get_drvdata() - Get trigger driver data
* @trig: IIO trigger structure
*
* Returns the data previously set with iio_trigger_set_drvdata()
*/
static inline void *iio_trigger_get_drvdata(struct iio_trigger *trig)
{
return trig->private_data;
}
/** /**
* iio_trigger_register() - register a trigger with the IIO core * iio_trigger_register() - register a trigger with the IIO core
* @trig_info: trigger to be registered * @trig_info: trigger to be registered
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment