Commit c3c16263 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'staging-4.13-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging

Pull staging/iio fixes from Greg KH:
 "Here are few small staging driver fixes, and some more IIO driver
  fixes for 4.13-rc7. Nothing major, just resolutions for some reported
  problems.

  All of these have been in linux-next with no reported problems"

* tag 'staging-4.13-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
  iio: magnetometer: st_magn: remove ihl property for LSM303AGR
  iio: magnetometer: st_magn: fix status register address for LSM303AGR
  iio: hid-sensor-trigger: Fix the race with user space powering up sensors
  iio: trigger: stm32-timer: fix get trigger mode
  iio: imu: adis16480: Fix acceleration scale factor for adis16480
  PATCH] iio: Fix some documentation warnings
  staging: rtl8188eu: add RNX-N150NUB support
  Revert "staging: fsl-mc: be consistent when checking strcmp() return"
  iio: adc: stm32: fix common clock rate
  iio: adc: ina219: Avoid underflow for sleeping time
  iio: trigger: stm32-timer: add enable attribute
  iio: trigger: stm32-timer: fix get/set down count direction
  iio: trigger: stm32-timer: fix write_raw return value
  iio: trigger: stm32-timer: fix quadrature mode get routine
  iio: bmp280: properly initialize device for humidity reading
parents fff4e7a0 2c68888f
...@@ -644,7 +644,7 @@ static int ina2xx_capture_thread(void *data) ...@@ -644,7 +644,7 @@ static int ina2xx_capture_thread(void *data)
{ {
struct iio_dev *indio_dev = data; struct iio_dev *indio_dev = data;
struct ina2xx_chip_info *chip = iio_priv(indio_dev); struct ina2xx_chip_info *chip = iio_priv(indio_dev);
unsigned int sampling_us = SAMPLING_PERIOD(chip); int sampling_us = SAMPLING_PERIOD(chip);
int buffer_us; int buffer_us;
/* /*
......
...@@ -64,7 +64,7 @@ ...@@ -64,7 +64,7 @@
#define STM32H7_CKMODE_MASK GENMASK(17, 16) #define STM32H7_CKMODE_MASK GENMASK(17, 16)
/* STM32 H7 maximum analog clock rate (from datasheet) */ /* STM32 H7 maximum analog clock rate (from datasheet) */
#define STM32H7_ADC_MAX_CLK_RATE 72000000 #define STM32H7_ADC_MAX_CLK_RATE 36000000
/** /**
* stm32_adc_common_regs - stm32 common registers, compatible dependent data * stm32_adc_common_regs - stm32 common registers, compatible dependent data
...@@ -148,14 +148,14 @@ static int stm32f4_adc_clk_sel(struct platform_device *pdev, ...@@ -148,14 +148,14 @@ static int stm32f4_adc_clk_sel(struct platform_device *pdev,
return -EINVAL; return -EINVAL;
} }
priv->common.rate = rate; priv->common.rate = rate / stm32f4_pclk_div[i];
val = readl_relaxed(priv->common.base + STM32F4_ADC_CCR); val = readl_relaxed(priv->common.base + STM32F4_ADC_CCR);
val &= ~STM32F4_ADC_ADCPRE_MASK; val &= ~STM32F4_ADC_ADCPRE_MASK;
val |= i << STM32F4_ADC_ADCPRE_SHIFT; val |= i << STM32F4_ADC_ADCPRE_SHIFT;
writel_relaxed(val, priv->common.base + STM32F4_ADC_CCR); writel_relaxed(val, priv->common.base + STM32F4_ADC_CCR);
dev_dbg(&pdev->dev, "Using analog clock source at %ld kHz\n", dev_dbg(&pdev->dev, "Using analog clock source at %ld kHz\n",
rate / (stm32f4_pclk_div[i] * 1000)); priv->common.rate / 1000);
return 0; return 0;
} }
...@@ -250,7 +250,7 @@ static int stm32h7_adc_clk_sel(struct platform_device *pdev, ...@@ -250,7 +250,7 @@ static int stm32h7_adc_clk_sel(struct platform_device *pdev,
out: out:
/* rate used later by each ADC instance to control BOOST mode */ /* rate used later by each ADC instance to control BOOST mode */
priv->common.rate = rate; priv->common.rate = rate / div;
/* Set common clock mode and prescaler */ /* Set common clock mode and prescaler */
val = readl_relaxed(priv->common.base + STM32H7_ADC_CCR); val = readl_relaxed(priv->common.base + STM32H7_ADC_CCR);
...@@ -260,7 +260,7 @@ static int stm32h7_adc_clk_sel(struct platform_device *pdev, ...@@ -260,7 +260,7 @@ static int stm32h7_adc_clk_sel(struct platform_device *pdev,
writel_relaxed(val, priv->common.base + STM32H7_ADC_CCR); writel_relaxed(val, priv->common.base + STM32H7_ADC_CCR);
dev_dbg(&pdev->dev, "Using %s clock/%d source at %ld kHz\n", dev_dbg(&pdev->dev, "Using %s clock/%d source at %ld kHz\n",
ckmode ? "bus" : "adc", div, rate / (div * 1000)); ckmode ? "bus" : "adc", div, priv->common.rate / 1000);
return 0; return 0;
} }
......
...@@ -111,8 +111,6 @@ static int _hid_sensor_power_state(struct hid_sensor_common *st, bool state) ...@@ -111,8 +111,6 @@ static int _hid_sensor_power_state(struct hid_sensor_common *st, bool state)
s32 poll_value = 0; s32 poll_value = 0;
if (state) { if (state) {
if (!atomic_read(&st->user_requested_state))
return 0;
if (sensor_hub_device_open(st->hsdev)) if (sensor_hub_device_open(st->hsdev))
return -EIO; return -EIO;
...@@ -161,6 +159,9 @@ static int _hid_sensor_power_state(struct hid_sensor_common *st, bool state) ...@@ -161,6 +159,9 @@ static int _hid_sensor_power_state(struct hid_sensor_common *st, bool state)
&report_val); &report_val);
} }
pr_debug("HID_SENSOR %s set power_state %d report_state %d\n",
st->pdev->name, state_val, report_val);
sensor_hub_get_feature(st->hsdev, st->power_state.report_id, sensor_hub_get_feature(st->hsdev, st->power_state.report_id,
st->power_state.index, st->power_state.index,
sizeof(state_val), &state_val); sizeof(state_val), &state_val);
...@@ -182,6 +183,7 @@ int hid_sensor_power_state(struct hid_sensor_common *st, bool state) ...@@ -182,6 +183,7 @@ int hid_sensor_power_state(struct hid_sensor_common *st, bool state)
ret = pm_runtime_get_sync(&st->pdev->dev); ret = pm_runtime_get_sync(&st->pdev->dev);
else { else {
pm_runtime_mark_last_busy(&st->pdev->dev); pm_runtime_mark_last_busy(&st->pdev->dev);
pm_runtime_use_autosuspend(&st->pdev->dev);
ret = pm_runtime_put_autosuspend(&st->pdev->dev); ret = pm_runtime_put_autosuspend(&st->pdev->dev);
} }
if (ret < 0) { if (ret < 0) {
...@@ -285,8 +287,6 @@ int hid_sensor_setup_trigger(struct iio_dev *indio_dev, const char *name, ...@@ -285,8 +287,6 @@ int hid_sensor_setup_trigger(struct iio_dev *indio_dev, const char *name,
/* Default to 3 seconds, but can be changed from sysfs */ /* Default to 3 seconds, but can be changed from sysfs */
pm_runtime_set_autosuspend_delay(&attrb->pdev->dev, pm_runtime_set_autosuspend_delay(&attrb->pdev->dev,
3000); 3000);
pm_runtime_use_autosuspend(&attrb->pdev->dev);
return ret; return ret;
error_unreg_trigger: error_unreg_trigger:
iio_trigger_unregister(trig); iio_trigger_unregister(trig);
......
...@@ -696,7 +696,7 @@ static const struct adis16480_chip_info adis16480_chip_info[] = { ...@@ -696,7 +696,7 @@ static const struct adis16480_chip_info adis16480_chip_info[] = {
.gyro_max_val = IIO_RAD_TO_DEGREE(22500), .gyro_max_val = IIO_RAD_TO_DEGREE(22500),
.gyro_max_scale = 450, .gyro_max_scale = 450,
.accel_max_val = IIO_M_S_2_TO_G(12500), .accel_max_val = IIO_M_S_2_TO_G(12500),
.accel_max_scale = 5, .accel_max_scale = 10,
}, },
[ADIS16485] = { [ADIS16485] = {
.channels = adis16485_channels, .channels = adis16485_channels,
......
...@@ -356,9 +356,7 @@ static const struct st_sensor_settings st_magn_sensors_settings[] = { ...@@ -356,9 +356,7 @@ static const struct st_sensor_settings st_magn_sensors_settings[] = {
.drdy_irq = { .drdy_irq = {
.addr = 0x62, .addr = 0x62,
.mask_int1 = 0x01, .mask_int1 = 0x01,
.addr_ihl = 0x63, .addr_stat_drdy = 0x67,
.mask_ihl = 0x04,
.addr_stat_drdy = ST_SENSORS_DEFAULT_STAT_ADDR,
}, },
.multi_read_bit = false, .multi_read_bit = false,
.bootime = 2, .bootime = 2,
......
...@@ -282,6 +282,11 @@ static int bmp280_read_temp(struct bmp280_data *data, ...@@ -282,6 +282,11 @@ static int bmp280_read_temp(struct bmp280_data *data,
} }
adc_temp = be32_to_cpu(tmp) >> 12; adc_temp = be32_to_cpu(tmp) >> 12;
if (adc_temp == BMP280_TEMP_SKIPPED) {
/* reading was skipped */
dev_err(data->dev, "reading temperature skipped\n");
return -EIO;
}
comp_temp = bmp280_compensate_temp(data, adc_temp); comp_temp = bmp280_compensate_temp(data, adc_temp);
/* /*
...@@ -317,6 +322,11 @@ static int bmp280_read_press(struct bmp280_data *data, ...@@ -317,6 +322,11 @@ static int bmp280_read_press(struct bmp280_data *data,
} }
adc_press = be32_to_cpu(tmp) >> 12; adc_press = be32_to_cpu(tmp) >> 12;
if (adc_press == BMP280_PRESS_SKIPPED) {
/* reading was skipped */
dev_err(data->dev, "reading pressure skipped\n");
return -EIO;
}
comp_press = bmp280_compensate_press(data, adc_press); comp_press = bmp280_compensate_press(data, adc_press);
*val = comp_press; *val = comp_press;
...@@ -345,6 +355,11 @@ static int bmp280_read_humid(struct bmp280_data *data, int *val, int *val2) ...@@ -345,6 +355,11 @@ static int bmp280_read_humid(struct bmp280_data *data, int *val, int *val2)
} }
adc_humidity = be16_to_cpu(tmp); adc_humidity = be16_to_cpu(tmp);
if (adc_humidity == BMP280_HUMIDITY_SKIPPED) {
/* reading was skipped */
dev_err(data->dev, "reading humidity skipped\n");
return -EIO;
}
comp_humidity = bmp280_compensate_humidity(data, adc_humidity); comp_humidity = bmp280_compensate_humidity(data, adc_humidity);
*val = comp_humidity; *val = comp_humidity;
...@@ -597,14 +612,20 @@ static const struct bmp280_chip_info bmp280_chip_info = { ...@@ -597,14 +612,20 @@ static const struct bmp280_chip_info bmp280_chip_info = {
static int bme280_chip_config(struct bmp280_data *data) static int bme280_chip_config(struct bmp280_data *data)
{ {
int ret = bmp280_chip_config(data); int ret;
u8 osrs = BMP280_OSRS_HUMIDITIY_X(data->oversampling_humid + 1); u8 osrs = BMP280_OSRS_HUMIDITIY_X(data->oversampling_humid + 1);
/*
* Oversampling of humidity must be set before oversampling of
* temperature/pressure is set to become effective.
*/
ret = regmap_update_bits(data->regmap, BMP280_REG_CTRL_HUMIDITY,
BMP280_OSRS_HUMIDITY_MASK, osrs);
if (ret < 0) if (ret < 0)
return ret; return ret;
return regmap_update_bits(data->regmap, BMP280_REG_CTRL_HUMIDITY, return bmp280_chip_config(data);
BMP280_OSRS_HUMIDITY_MASK, osrs);
} }
static const struct bmp280_chip_info bme280_chip_info = { static const struct bmp280_chip_info bme280_chip_info = {
......
...@@ -96,6 +96,11 @@ ...@@ -96,6 +96,11 @@
#define BME280_CHIP_ID 0x60 #define BME280_CHIP_ID 0x60
#define BMP280_SOFT_RESET_VAL 0xB6 #define BMP280_SOFT_RESET_VAL 0xB6
/* BMP280 register skipped special values */
#define BMP280_TEMP_SKIPPED 0x80000
#define BMP280_PRESS_SKIPPED 0x80000
#define BMP280_HUMIDITY_SKIPPED 0x8000
/* Regmap configurations */ /* Regmap configurations */
extern const struct regmap_config bmp180_regmap_config; extern const struct regmap_config bmp180_regmap_config;
extern const struct regmap_config bmp280_regmap_config; extern const struct regmap_config bmp280_regmap_config;
......
...@@ -366,34 +366,32 @@ static int stm32_counter_read_raw(struct iio_dev *indio_dev, ...@@ -366,34 +366,32 @@ static int stm32_counter_read_raw(struct iio_dev *indio_dev,
int *val, int *val2, long mask) int *val, int *val2, long mask)
{ {
struct stm32_timer_trigger *priv = iio_priv(indio_dev); struct stm32_timer_trigger *priv = iio_priv(indio_dev);
u32 dat;
switch (mask) { switch (mask) {
case IIO_CHAN_INFO_RAW: case IIO_CHAN_INFO_RAW:
{ regmap_read(priv->regmap, TIM_CNT, &dat);
u32 cnt; *val = dat;
return IIO_VAL_INT;
regmap_read(priv->regmap, TIM_CNT, &cnt);
*val = cnt;
case IIO_CHAN_INFO_ENABLE:
regmap_read(priv->regmap, TIM_CR1, &dat);
*val = (dat & TIM_CR1_CEN) ? 1 : 0;
return IIO_VAL_INT; return IIO_VAL_INT;
}
case IIO_CHAN_INFO_SCALE:
{
u32 smcr;
regmap_read(priv->regmap, TIM_SMCR, &smcr); case IIO_CHAN_INFO_SCALE:
smcr &= TIM_SMCR_SMS; regmap_read(priv->regmap, TIM_SMCR, &dat);
dat &= TIM_SMCR_SMS;
*val = 1; *val = 1;
*val2 = 0; *val2 = 0;
/* in quadrature case scale = 0.25 */ /* in quadrature case scale = 0.25 */
if (smcr == 3) if (dat == 3)
*val2 = 2; *val2 = 2;
return IIO_VAL_FRACTIONAL_LOG2; return IIO_VAL_FRACTIONAL_LOG2;
} }
}
return -EINVAL; return -EINVAL;
} }
...@@ -403,15 +401,31 @@ static int stm32_counter_write_raw(struct iio_dev *indio_dev, ...@@ -403,15 +401,31 @@ static int stm32_counter_write_raw(struct iio_dev *indio_dev,
int val, int val2, long mask) int val, int val2, long mask)
{ {
struct stm32_timer_trigger *priv = iio_priv(indio_dev); struct stm32_timer_trigger *priv = iio_priv(indio_dev);
u32 dat;
switch (mask) { switch (mask) {
case IIO_CHAN_INFO_RAW: case IIO_CHAN_INFO_RAW:
regmap_write(priv->regmap, TIM_CNT, val); return regmap_write(priv->regmap, TIM_CNT, val);
return IIO_VAL_INT;
case IIO_CHAN_INFO_SCALE: case IIO_CHAN_INFO_SCALE:
/* fixed scale */ /* fixed scale */
return -EINVAL; return -EINVAL;
case IIO_CHAN_INFO_ENABLE:
if (val) {
regmap_read(priv->regmap, TIM_CR1, &dat);
if (!(dat & TIM_CR1_CEN))
clk_enable(priv->clk);
regmap_update_bits(priv->regmap, TIM_CR1, TIM_CR1_CEN,
TIM_CR1_CEN);
} else {
regmap_read(priv->regmap, TIM_CR1, &dat);
regmap_update_bits(priv->regmap, TIM_CR1, TIM_CR1_CEN,
0);
if (dat & TIM_CR1_CEN)
clk_disable(priv->clk);
}
return 0;
} }
return -EINVAL; return -EINVAL;
...@@ -471,7 +485,7 @@ static int stm32_get_trigger_mode(struct iio_dev *indio_dev, ...@@ -471,7 +485,7 @@ static int stm32_get_trigger_mode(struct iio_dev *indio_dev,
regmap_read(priv->regmap, TIM_SMCR, &smcr); regmap_read(priv->regmap, TIM_SMCR, &smcr);
return smcr == TIM_SMCR_SMS ? 0 : -EINVAL; return (smcr & TIM_SMCR_SMS) == TIM_SMCR_SMS ? 0 : -EINVAL;
} }
static const struct iio_enum stm32_trigger_mode_enum = { static const struct iio_enum stm32_trigger_mode_enum = {
...@@ -507,9 +521,19 @@ static int stm32_set_enable_mode(struct iio_dev *indio_dev, ...@@ -507,9 +521,19 @@ static int stm32_set_enable_mode(struct iio_dev *indio_dev,
{ {
struct stm32_timer_trigger *priv = iio_priv(indio_dev); struct stm32_timer_trigger *priv = iio_priv(indio_dev);
int sms = stm32_enable_mode2sms(mode); int sms = stm32_enable_mode2sms(mode);
u32 val;
if (sms < 0) if (sms < 0)
return sms; return sms;
/*
* Triggered mode sets CEN bit automatically by hardware. So, first
* enable counter clock, so it can use it. Keeps it in sync with CEN.
*/
if (sms == 6) {
regmap_read(priv->regmap, TIM_CR1, &val);
if (!(val & TIM_CR1_CEN))
clk_enable(priv->clk);
}
regmap_update_bits(priv->regmap, TIM_SMCR, TIM_SMCR_SMS, sms); regmap_update_bits(priv->regmap, TIM_SMCR, TIM_SMCR_SMS, sms);
...@@ -571,11 +595,14 @@ static int stm32_get_quadrature_mode(struct iio_dev *indio_dev, ...@@ -571,11 +595,14 @@ static int stm32_get_quadrature_mode(struct iio_dev *indio_dev,
{ {
struct stm32_timer_trigger *priv = iio_priv(indio_dev); struct stm32_timer_trigger *priv = iio_priv(indio_dev);
u32 smcr; u32 smcr;
int mode;
regmap_read(priv->regmap, TIM_SMCR, &smcr); regmap_read(priv->regmap, TIM_SMCR, &smcr);
smcr &= TIM_SMCR_SMS; mode = (smcr & TIM_SMCR_SMS) - 1;
if ((mode < 0) || (mode > ARRAY_SIZE(stm32_quadrature_modes)))
return -EINVAL;
return smcr - 1; return mode;
} }
static const struct iio_enum stm32_quadrature_mode_enum = { static const struct iio_enum stm32_quadrature_mode_enum = {
...@@ -592,13 +619,20 @@ static const char *const stm32_count_direction_states[] = { ...@@ -592,13 +619,20 @@ static const char *const stm32_count_direction_states[] = {
static int stm32_set_count_direction(struct iio_dev *indio_dev, static int stm32_set_count_direction(struct iio_dev *indio_dev,
const struct iio_chan_spec *chan, const struct iio_chan_spec *chan,
unsigned int mode) unsigned int dir)
{ {
struct stm32_timer_trigger *priv = iio_priv(indio_dev); struct stm32_timer_trigger *priv = iio_priv(indio_dev);
u32 val;
int mode;
regmap_update_bits(priv->regmap, TIM_CR1, TIM_CR1_DIR, mode); /* In encoder mode, direction is RO (given by TI1/TI2 signals) */
regmap_read(priv->regmap, TIM_SMCR, &val);
mode = (val & TIM_SMCR_SMS) - 1;
if ((mode >= 0) || (mode < ARRAY_SIZE(stm32_quadrature_modes)))
return -EBUSY;
return 0; return regmap_update_bits(priv->regmap, TIM_CR1, TIM_CR1_DIR,
dir ? TIM_CR1_DIR : 0);
} }
static int stm32_get_count_direction(struct iio_dev *indio_dev, static int stm32_get_count_direction(struct iio_dev *indio_dev,
...@@ -609,7 +643,7 @@ static int stm32_get_count_direction(struct iio_dev *indio_dev, ...@@ -609,7 +643,7 @@ static int stm32_get_count_direction(struct iio_dev *indio_dev,
regmap_read(priv->regmap, TIM_CR1, &cr1); regmap_read(priv->regmap, TIM_CR1, &cr1);
return (cr1 & TIM_CR1_DIR); return ((cr1 & TIM_CR1_DIR) ? 1 : 0);
} }
static const struct iio_enum stm32_count_direction_enum = { static const struct iio_enum stm32_count_direction_enum = {
...@@ -672,7 +706,9 @@ static const struct iio_chan_spec_ext_info stm32_trigger_count_info[] = { ...@@ -672,7 +706,9 @@ static const struct iio_chan_spec_ext_info stm32_trigger_count_info[] = {
static const struct iio_chan_spec stm32_trigger_channel = { static const struct iio_chan_spec stm32_trigger_channel = {
.type = IIO_COUNT, .type = IIO_COUNT,
.channel = 0, .channel = 0,
.info_mask_separate = BIT(IIO_CHAN_INFO_RAW) | BIT(IIO_CHAN_INFO_SCALE), .info_mask_separate = BIT(IIO_CHAN_INFO_RAW) |
BIT(IIO_CHAN_INFO_ENABLE) |
BIT(IIO_CHAN_INFO_SCALE),
.ext_info = stm32_trigger_count_info, .ext_info = stm32_trigger_count_info,
.indexed = 1 .indexed = 1
}; };
......
...@@ -16,9 +16,9 @@ ...@@ -16,9 +16,9 @@
static bool __must_check fsl_mc_is_allocatable(const char *obj_type) static bool __must_check fsl_mc_is_allocatable(const char *obj_type)
{ {
return strcmp(obj_type, "dpbp") || return strcmp(obj_type, "dpbp") == 0 ||
strcmp(obj_type, "dpmcp") || strcmp(obj_type, "dpmcp") == 0 ||
strcmp(obj_type, "dpcon"); strcmp(obj_type, "dpcon") == 0;
} }
/** /**
......
...@@ -45,6 +45,7 @@ static struct usb_device_id rtw_usb_id_tbl[] = { ...@@ -45,6 +45,7 @@ static struct usb_device_id rtw_usb_id_tbl[] = {
{USB_DEVICE(0x2001, 0x3311)}, /* DLink GO-USB-N150 REV B1 */ {USB_DEVICE(0x2001, 0x3311)}, /* DLink GO-USB-N150 REV B1 */
{USB_DEVICE(0x2357, 0x010c)}, /* TP-Link TL-WN722N v2 */ {USB_DEVICE(0x2357, 0x010c)}, /* TP-Link TL-WN722N v2 */
{USB_DEVICE(0x0df6, 0x0076)}, /* Sitecom N150 v2 */ {USB_DEVICE(0x0df6, 0x0076)}, /* Sitecom N150 v2 */
{USB_DEVICE(USB_VENDER_ID_REALTEK, 0xffef)}, /* Rosewill RNX-N150NUB */
{} /* Terminating entry */ {} /* Terminating entry */
}; };
......
...@@ -535,7 +535,7 @@ struct iio_buffer_setup_ops { ...@@ -535,7 +535,7 @@ struct iio_buffer_setup_ops {
* @scan_timestamp: [INTERN] set if any buffers have requested timestamp * @scan_timestamp: [INTERN] set if any buffers have requested timestamp
* @scan_index_timestamp:[INTERN] cache of the index to the timestamp * @scan_index_timestamp:[INTERN] cache of the index to the timestamp
* @trig: [INTERN] current device trigger (buffer modes) * @trig: [INTERN] current device trigger (buffer modes)
* @trig_readonly [INTERN] mark the current trigger immutable * @trig_readonly: [INTERN] mark the current trigger immutable
* @pollfunc: [DRIVER] function run on trigger being received * @pollfunc: [DRIVER] function run on trigger being received
* @pollfunc_event: [DRIVER] function run on events trigger being received * @pollfunc_event: [DRIVER] function run on events trigger being received
* @channels: [DRIVER] channel specification structure table * @channels: [DRIVER] channel specification structure table
......
...@@ -144,8 +144,8 @@ void devm_iio_trigger_unregister(struct device *dev, ...@@ -144,8 +144,8 @@ void devm_iio_trigger_unregister(struct device *dev,
/** /**
* iio_trigger_set_immutable() - set an immutable trigger on destination * iio_trigger_set_immutable() - set an immutable trigger on destination
* *
* @indio_dev - IIO device structure containing the device * @indio_dev: IIO device structure containing the device
* @trig - trigger to assign to device * @trig: trigger to assign to device
* *
**/ **/
int iio_trigger_set_immutable(struct iio_dev *indio_dev, struct iio_trigger *trig); int iio_trigger_set_immutable(struct iio_dev *indio_dev, struct iio_trigger *trig);
......
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