diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-07-17 14:30:59 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-07-17 14:30:59 -0400 |
commit | eb254374a30cc53f976f2302f2198813a3b687ea (patch) | |
tree | c7dd0bef113136b084ac48a73f9c38eae833676a | |
parent | 2b3eb6e33723a0d2ce2b2a56dda8a793460d66cc (diff) | |
parent | d309509f84725f99326cc73d3b00aae096b374ae (diff) |
Merge tag 'staging-4.2-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging
Pull staging and IIO driver fixes from Greg KH:
"Here's some staging and IIO driver fixes for 4.2-rc3.
Nothing major, the majority are IIO issues that were reported, with a
few other minor staging driver fixes. All have been in linux-next for
a while with no reported issues"
* tag 'staging-4.2-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging: (25 commits)
staging: vt6656: check ieee80211_bss_conf bssid not NULL
staging: vt6655: check ieee80211_bss_conf bssid not NULL
staging:lustre: remove irq.h from socklnd.h
staging: make board support depend on OF_IRQ and CLKDEV_LOOKUP
iio: tmp006: Check channel info on write
iio: sx9500: Add missing init in sx9500_buffer_pre{en,dis}able()
iio:light:ltr501: fix regmap dependency
iio:light:ltr501: fix variable in ltr501_init
iio: sx9500: fix bug in compensation code
iio: sx9500: rework error handling of raw readings
iio: magnetometer: mmc35240: fix available sampling frequencies
iio:light:stk3310: Fix REGMAP_I2C dependency
iio: light: STK3310: un-invert proximity values
iio:adc:cc10001_adc: fix Kconfig dependency
iio: light: tcs3414: Fix bug preventing to set integration time
iio:accel:bmc150-accel: fix counting direction
iio:light:cm3323: clear bitmask before set
iio: adc: at91_adc: allow to use full range of startup time
iio: DAC: ad5624r_spi: fix bit shift of output data value
iio: proximity: sx9500: Fix proximity value
...
-rw-r--r-- | Documentation/ABI/testing/sysfs-bus-iio | 6 | ||||
-rw-r--r-- | drivers/iio/accel/bmc150-accel.c | 2 | ||||
-rw-r--r-- | drivers/iio/adc/Kconfig | 3 | ||||
-rw-r--r-- | drivers/iio/adc/at91_adc.c | 8 | ||||
-rw-r--r-- | drivers/iio/adc/rockchip_saradc.c | 4 | ||||
-rw-r--r-- | drivers/iio/adc/twl4030-madc.c | 3 | ||||
-rw-r--r-- | drivers/iio/common/hid-sensors/hid-sensor-trigger.c | 11 | ||||
-rw-r--r-- | drivers/iio/dac/ad5624r_spi.c | 4 | ||||
-rw-r--r-- | drivers/iio/imu/inv_mpu6050/inv_mpu_core.c | 18 | ||||
-rw-r--r-- | drivers/iio/light/Kconfig | 2 | ||||
-rw-r--r-- | drivers/iio/light/cm3323.c | 2 | ||||
-rw-r--r-- | drivers/iio/light/ltr501.c | 2 | ||||
-rw-r--r-- | drivers/iio/light/stk3310.c | 53 | ||||
-rw-r--r-- | drivers/iio/light/tcs3414.c | 2 | ||||
-rw-r--r-- | drivers/iio/magnetometer/mmc35240.c | 35 | ||||
-rw-r--r-- | drivers/iio/proximity/sx9500.c | 28 | ||||
-rw-r--r-- | drivers/iio/temperature/tmp006.c | 3 | ||||
-rw-r--r-- | drivers/staging/board/Kconfig | 2 | ||||
-rw-r--r-- | drivers/staging/lustre/lnet/klnds/socklnd/socklnd.h | 1 | ||||
-rw-r--r-- | drivers/staging/vt6655/device_main.c | 2 | ||||
-rw-r--r-- | drivers/staging/vt6656/main_usb.c | 2 | ||||
-rw-r--r-- | include/linux/hid-sensor-hub.h | 1 |
22 files changed, 109 insertions, 85 deletions
diff --git a/Documentation/ABI/testing/sysfs-bus-iio b/Documentation/ABI/testing/sysfs-bus-iio index bbed111c31b4..70c9b1ac66db 100644 --- a/Documentation/ABI/testing/sysfs-bus-iio +++ b/Documentation/ABI/testing/sysfs-bus-iio | |||
@@ -1234,10 +1234,8 @@ Description: | |||
1234 | object is near the sensor, usually be observing | 1234 | object is near the sensor, usually be observing |
1235 | reflectivity of infrared or ultrasound emitted. | 1235 | reflectivity of infrared or ultrasound emitted. |
1236 | Often these sensors are unit less and as such conversion | 1236 | Often these sensors are unit less and as such conversion |
1237 | to SI units is not possible. Where it is, the units should | 1237 | to SI units is not possible. Higher proximity measurements |
1238 | be meters. If such a conversion is not possible, the reported | 1238 | indicate closer objects, and vice versa. |
1239 | values should behave in the same way as a distance, i.e. lower | ||
1240 | values indicate something is closer to the sensor. | ||
1241 | 1239 | ||
1242 | What: /sys/.../iio:deviceX/in_illuminance_input | 1240 | What: /sys/.../iio:deviceX/in_illuminance_input |
1243 | What: /sys/.../iio:deviceX/in_illuminance_raw | 1241 | What: /sys/.../iio:deviceX/in_illuminance_raw |
diff --git a/drivers/iio/accel/bmc150-accel.c b/drivers/iio/accel/bmc150-accel.c index 4e70f51c2370..cc5a35750b50 100644 --- a/drivers/iio/accel/bmc150-accel.c +++ b/drivers/iio/accel/bmc150-accel.c | |||
@@ -1464,7 +1464,7 @@ static void bmc150_accel_unregister_triggers(struct bmc150_accel_data *data, | |||
1464 | { | 1464 | { |
1465 | int i; | 1465 | int i; |
1466 | 1466 | ||
1467 | for (i = from; i >= 0; i++) { | 1467 | for (i = from; i >= 0; i--) { |
1468 | if (data->triggers[i].indio_trig) { | 1468 | if (data->triggers[i].indio_trig) { |
1469 | iio_trigger_unregister(data->triggers[i].indio_trig); | 1469 | iio_trigger_unregister(data->triggers[i].indio_trig); |
1470 | data->triggers[i].indio_trig = NULL; | 1470 | data->triggers[i].indio_trig = NULL; |
diff --git a/drivers/iio/adc/Kconfig b/drivers/iio/adc/Kconfig index 7c5565891cb8..eb0cd897714a 100644 --- a/drivers/iio/adc/Kconfig +++ b/drivers/iio/adc/Kconfig | |||
@@ -153,8 +153,7 @@ config DA9150_GPADC | |||
153 | 153 | ||
154 | config CC10001_ADC | 154 | config CC10001_ADC |
155 | tristate "Cosmic Circuits 10001 ADC driver" | 155 | tristate "Cosmic Circuits 10001 ADC driver" |
156 | depends on HAVE_CLK || REGULATOR | 156 | depends on HAS_IOMEM && HAVE_CLK && REGULATOR |
157 | depends on HAS_IOMEM | ||
158 | select IIO_BUFFER | 157 | select IIO_BUFFER |
159 | select IIO_TRIGGERED_BUFFER | 158 | select IIO_TRIGGERED_BUFFER |
160 | help | 159 | help |
diff --git a/drivers/iio/adc/at91_adc.c b/drivers/iio/adc/at91_adc.c index 8a0eb4a04fb5..7b40925dd4ff 100644 --- a/drivers/iio/adc/at91_adc.c +++ b/drivers/iio/adc/at91_adc.c | |||
@@ -182,7 +182,7 @@ struct at91_adc_caps { | |||
182 | u8 ts_pen_detect_sensitivity; | 182 | u8 ts_pen_detect_sensitivity; |
183 | 183 | ||
184 | /* startup time calculate function */ | 184 | /* startup time calculate function */ |
185 | u32 (*calc_startup_ticks)(u8 startup_time, u32 adc_clk_khz); | 185 | u32 (*calc_startup_ticks)(u32 startup_time, u32 adc_clk_khz); |
186 | 186 | ||
187 | u8 num_channels; | 187 | u8 num_channels; |
188 | struct at91_adc_reg_desc registers; | 188 | struct at91_adc_reg_desc registers; |
@@ -201,7 +201,7 @@ struct at91_adc_state { | |||
201 | u8 num_channels; | 201 | u8 num_channels; |
202 | void __iomem *reg_base; | 202 | void __iomem *reg_base; |
203 | struct at91_adc_reg_desc *registers; | 203 | struct at91_adc_reg_desc *registers; |
204 | u8 startup_time; | 204 | u32 startup_time; |
205 | u8 sample_hold_time; | 205 | u8 sample_hold_time; |
206 | bool sleep_mode; | 206 | bool sleep_mode; |
207 | struct iio_trigger **trig; | 207 | struct iio_trigger **trig; |
@@ -779,7 +779,7 @@ ret: | |||
779 | return ret; | 779 | return ret; |
780 | } | 780 | } |
781 | 781 | ||
782 | static u32 calc_startup_ticks_9260(u8 startup_time, u32 adc_clk_khz) | 782 | static u32 calc_startup_ticks_9260(u32 startup_time, u32 adc_clk_khz) |
783 | { | 783 | { |
784 | /* | 784 | /* |
785 | * Number of ticks needed to cover the startup time of the ADC | 785 | * Number of ticks needed to cover the startup time of the ADC |
@@ -790,7 +790,7 @@ static u32 calc_startup_ticks_9260(u8 startup_time, u32 adc_clk_khz) | |||
790 | return round_up((startup_time * adc_clk_khz / 1000) - 1, 8) / 8; | 790 | return round_up((startup_time * adc_clk_khz / 1000) - 1, 8) / 8; |
791 | } | 791 | } |
792 | 792 | ||
793 | static u32 calc_startup_ticks_9x5(u8 startup_time, u32 adc_clk_khz) | 793 | static u32 calc_startup_ticks_9x5(u32 startup_time, u32 adc_clk_khz) |
794 | { | 794 | { |
795 | /* | 795 | /* |
796 | * For sama5d3x and at91sam9x5, the formula changes to: | 796 | * For sama5d3x and at91sam9x5, the formula changes to: |
diff --git a/drivers/iio/adc/rockchip_saradc.c b/drivers/iio/adc/rockchip_saradc.c index 8d4e019ea4ca..9c311c1e1ac7 100644 --- a/drivers/iio/adc/rockchip_saradc.c +++ b/drivers/iio/adc/rockchip_saradc.c | |||
@@ -349,3 +349,7 @@ static struct platform_driver rockchip_saradc_driver = { | |||
349 | }; | 349 | }; |
350 | 350 | ||
351 | module_platform_driver(rockchip_saradc_driver); | 351 | module_platform_driver(rockchip_saradc_driver); |
352 | |||
353 | MODULE_AUTHOR("Heiko Stuebner <heiko@sntech.de>"); | ||
354 | MODULE_DESCRIPTION("Rockchip SARADC driver"); | ||
355 | MODULE_LICENSE("GPL v2"); | ||
diff --git a/drivers/iio/adc/twl4030-madc.c b/drivers/iio/adc/twl4030-madc.c index 06f4792240f0..ebe415f10640 100644 --- a/drivers/iio/adc/twl4030-madc.c +++ b/drivers/iio/adc/twl4030-madc.c | |||
@@ -833,7 +833,8 @@ static int twl4030_madc_probe(struct platform_device *pdev) | |||
833 | irq = platform_get_irq(pdev, 0); | 833 | irq = platform_get_irq(pdev, 0); |
834 | ret = devm_request_threaded_irq(&pdev->dev, irq, NULL, | 834 | ret = devm_request_threaded_irq(&pdev->dev, irq, NULL, |
835 | twl4030_madc_threaded_irq_handler, | 835 | twl4030_madc_threaded_irq_handler, |
836 | IRQF_TRIGGER_RISING, "twl4030_madc", madc); | 836 | IRQF_TRIGGER_RISING | IRQF_ONESHOT, |
837 | "twl4030_madc", madc); | ||
837 | if (ret) { | 838 | if (ret) { |
838 | dev_err(&pdev->dev, "could not request irq\n"); | 839 | dev_err(&pdev->dev, "could not request irq\n"); |
839 | goto err_i2c; | 840 | goto err_i2c; |
diff --git a/drivers/iio/common/hid-sensors/hid-sensor-trigger.c b/drivers/iio/common/hid-sensors/hid-sensor-trigger.c index 610fc98f88ef..595511022795 100644 --- a/drivers/iio/common/hid-sensors/hid-sensor-trigger.c +++ b/drivers/iio/common/hid-sensors/hid-sensor-trigger.c | |||
@@ -36,6 +36,8 @@ static int _hid_sensor_power_state(struct hid_sensor_common *st, bool state) | |||
36 | s32 poll_value = 0; | 36 | s32 poll_value = 0; |
37 | 37 | ||
38 | if (state) { | 38 | if (state) { |
39 | if (!atomic_read(&st->user_requested_state)) | ||
40 | return 0; | ||
39 | if (sensor_hub_device_open(st->hsdev)) | 41 | if (sensor_hub_device_open(st->hsdev)) |
40 | return -EIO; | 42 | return -EIO; |
41 | 43 | ||
@@ -52,8 +54,12 @@ static int _hid_sensor_power_state(struct hid_sensor_common *st, bool state) | |||
52 | 54 | ||
53 | poll_value = hid_sensor_read_poll_value(st); | 55 | poll_value = hid_sensor_read_poll_value(st); |
54 | } else { | 56 | } else { |
55 | if (!atomic_dec_and_test(&st->data_ready)) | 57 | int val; |
58 | |||
59 | val = atomic_dec_if_positive(&st->data_ready); | ||
60 | if (val < 0) | ||
56 | return 0; | 61 | return 0; |
62 | |||
57 | sensor_hub_device_close(st->hsdev); | 63 | sensor_hub_device_close(st->hsdev); |
58 | state_val = hid_sensor_get_usage_index(st->hsdev, | 64 | state_val = hid_sensor_get_usage_index(st->hsdev, |
59 | st->power_state.report_id, | 65 | st->power_state.report_id, |
@@ -92,9 +98,11 @@ EXPORT_SYMBOL(hid_sensor_power_state); | |||
92 | 98 | ||
93 | int hid_sensor_power_state(struct hid_sensor_common *st, bool state) | 99 | int hid_sensor_power_state(struct hid_sensor_common *st, bool state) |
94 | { | 100 | { |
101 | |||
95 | #ifdef CONFIG_PM | 102 | #ifdef CONFIG_PM |
96 | int ret; | 103 | int ret; |
97 | 104 | ||
105 | atomic_set(&st->user_requested_state, state); | ||
98 | if (state) | 106 | if (state) |
99 | ret = pm_runtime_get_sync(&st->pdev->dev); | 107 | ret = pm_runtime_get_sync(&st->pdev->dev); |
100 | else { | 108 | else { |
@@ -109,6 +117,7 @@ int hid_sensor_power_state(struct hid_sensor_common *st, bool state) | |||
109 | 117 | ||
110 | return 0; | 118 | return 0; |
111 | #else | 119 | #else |
120 | atomic_set(&st->user_requested_state, state); | ||
112 | return _hid_sensor_power_state(st, state); | 121 | return _hid_sensor_power_state(st, state); |
113 | #endif | 122 | #endif |
114 | } | 123 | } |
diff --git a/drivers/iio/dac/ad5624r_spi.c b/drivers/iio/dac/ad5624r_spi.c index 61bb9d4239ea..e98428df0d44 100644 --- a/drivers/iio/dac/ad5624r_spi.c +++ b/drivers/iio/dac/ad5624r_spi.c | |||
@@ -22,7 +22,7 @@ | |||
22 | #include "ad5624r.h" | 22 | #include "ad5624r.h" |
23 | 23 | ||
24 | static int ad5624r_spi_write(struct spi_device *spi, | 24 | static int ad5624r_spi_write(struct spi_device *spi, |
25 | u8 cmd, u8 addr, u16 val, u8 len) | 25 | u8 cmd, u8 addr, u16 val, u8 shift) |
26 | { | 26 | { |
27 | u32 data; | 27 | u32 data; |
28 | u8 msg[3]; | 28 | u8 msg[3]; |
@@ -35,7 +35,7 @@ static int ad5624r_spi_write(struct spi_device *spi, | |||
35 | * 14-, 12-bit input code followed by 0, 2, or 4 don't care bits, | 35 | * 14-, 12-bit input code followed by 0, 2, or 4 don't care bits, |
36 | * for the AD5664R, AD5644R, and AD5624R, respectively. | 36 | * for the AD5664R, AD5644R, and AD5624R, respectively. |
37 | */ | 37 | */ |
38 | data = (0 << 22) | (cmd << 19) | (addr << 16) | (val << (16 - len)); | 38 | data = (0 << 22) | (cmd << 19) | (addr << 16) | (val << shift); |
39 | msg[0] = data >> 16; | 39 | msg[0] = data >> 16; |
40 | msg[1] = data >> 8; | 40 | msg[1] = data >> 8; |
41 | msg[2] = data; | 41 | msg[2] = data; |
diff --git a/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c b/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c index 17d4bb15be4d..65ce86837177 100644 --- a/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c +++ b/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c | |||
@@ -431,6 +431,23 @@ static int inv_mpu6050_write_gyro_scale(struct inv_mpu6050_state *st, int val) | |||
431 | return -EINVAL; | 431 | return -EINVAL; |
432 | } | 432 | } |
433 | 433 | ||
434 | static int inv_write_raw_get_fmt(struct iio_dev *indio_dev, | ||
435 | struct iio_chan_spec const *chan, long mask) | ||
436 | { | ||
437 | switch (mask) { | ||
438 | case IIO_CHAN_INFO_SCALE: | ||
439 | switch (chan->type) { | ||
440 | case IIO_ANGL_VEL: | ||
441 | return IIO_VAL_INT_PLUS_NANO; | ||
442 | default: | ||
443 | return IIO_VAL_INT_PLUS_MICRO; | ||
444 | } | ||
445 | default: | ||
446 | return IIO_VAL_INT_PLUS_MICRO; | ||
447 | } | ||
448 | |||
449 | return -EINVAL; | ||
450 | } | ||
434 | static int inv_mpu6050_write_accel_scale(struct inv_mpu6050_state *st, int val) | 451 | static int inv_mpu6050_write_accel_scale(struct inv_mpu6050_state *st, int val) |
435 | { | 452 | { |
436 | int result, i; | 453 | int result, i; |
@@ -696,6 +713,7 @@ static const struct iio_info mpu_info = { | |||
696 | .driver_module = THIS_MODULE, | 713 | .driver_module = THIS_MODULE, |
697 | .read_raw = &inv_mpu6050_read_raw, | 714 | .read_raw = &inv_mpu6050_read_raw, |
698 | .write_raw = &inv_mpu6050_write_raw, | 715 | .write_raw = &inv_mpu6050_write_raw, |
716 | .write_raw_get_fmt = &inv_write_raw_get_fmt, | ||
699 | .attrs = &inv_attribute_group, | 717 | .attrs = &inv_attribute_group, |
700 | .validate_trigger = inv_mpu6050_validate_trigger, | 718 | .validate_trigger = inv_mpu6050_validate_trigger, |
701 | }; | 719 | }; |
diff --git a/drivers/iio/light/Kconfig b/drivers/iio/light/Kconfig index e6198b7c9cbf..a5c59251ec0e 100644 --- a/drivers/iio/light/Kconfig +++ b/drivers/iio/light/Kconfig | |||
@@ -188,6 +188,7 @@ config SENSORS_LM3533 | |||
188 | config LTR501 | 188 | config LTR501 |
189 | tristate "LTR-501ALS-01 light sensor" | 189 | tristate "LTR-501ALS-01 light sensor" |
190 | depends on I2C | 190 | depends on I2C |
191 | select REGMAP_I2C | ||
191 | select IIO_BUFFER | 192 | select IIO_BUFFER |
192 | select IIO_TRIGGERED_BUFFER | 193 | select IIO_TRIGGERED_BUFFER |
193 | help | 194 | help |
@@ -201,6 +202,7 @@ config LTR501 | |||
201 | config STK3310 | 202 | config STK3310 |
202 | tristate "STK3310 ALS and proximity sensor" | 203 | tristate "STK3310 ALS and proximity sensor" |
203 | depends on I2C | 204 | depends on I2C |
205 | select REGMAP_I2C | ||
204 | help | 206 | help |
205 | Say yes here to get support for the Sensortek STK3310 ambient light | 207 | Say yes here to get support for the Sensortek STK3310 ambient light |
206 | and proximity sensor. The STK3311 model is also supported by this | 208 | and proximity sensor. The STK3311 model is also supported by this |
diff --git a/drivers/iio/light/cm3323.c b/drivers/iio/light/cm3323.c index 869033e48a1f..a1d4905cc9d2 100644 --- a/drivers/iio/light/cm3323.c +++ b/drivers/iio/light/cm3323.c | |||
@@ -123,7 +123,7 @@ static int cm3323_set_it_bits(struct cm3323_data *data, int val, int val2) | |||
123 | for (i = 0; i < ARRAY_SIZE(cm3323_int_time); i++) { | 123 | for (i = 0; i < ARRAY_SIZE(cm3323_int_time); i++) { |
124 | if (val == cm3323_int_time[i].val && | 124 | if (val == cm3323_int_time[i].val && |
125 | val2 == cm3323_int_time[i].val2) { | 125 | val2 == cm3323_int_time[i].val2) { |
126 | reg_conf = data->reg_conf; | 126 | reg_conf = data->reg_conf & ~CM3323_CONF_IT_MASK; |
127 | reg_conf |= i << CM3323_CONF_IT_SHIFT; | 127 | reg_conf |= i << CM3323_CONF_IT_SHIFT; |
128 | 128 | ||
129 | ret = i2c_smbus_write_word_data(data->client, | 129 | ret = i2c_smbus_write_word_data(data->client, |
diff --git a/drivers/iio/light/ltr501.c b/drivers/iio/light/ltr501.c index 1ef7d3773ab9..b5a0e66b5f28 100644 --- a/drivers/iio/light/ltr501.c +++ b/drivers/iio/light/ltr501.c | |||
@@ -1302,7 +1302,7 @@ static int ltr501_init(struct ltr501_data *data) | |||
1302 | if (ret < 0) | 1302 | if (ret < 0) |
1303 | return ret; | 1303 | return ret; |
1304 | 1304 | ||
1305 | data->als_contr = ret | data->chip_info->als_mode_active; | 1305 | data->als_contr = status | data->chip_info->als_mode_active; |
1306 | 1306 | ||
1307 | ret = regmap_read(data->regmap, LTR501_PS_CONTR, &status); | 1307 | ret = regmap_read(data->regmap, LTR501_PS_CONTR, &status); |
1308 | if (ret < 0) | 1308 | if (ret < 0) |
diff --git a/drivers/iio/light/stk3310.c b/drivers/iio/light/stk3310.c index fee4297d7c8f..c1a218236be5 100644 --- a/drivers/iio/light/stk3310.c +++ b/drivers/iio/light/stk3310.c | |||
@@ -43,7 +43,6 @@ | |||
43 | #define STK3311_CHIP_ID_VAL 0x1D | 43 | #define STK3311_CHIP_ID_VAL 0x1D |
44 | #define STK3310_PSINT_EN 0x01 | 44 | #define STK3310_PSINT_EN 0x01 |
45 | #define STK3310_PS_MAX_VAL 0xFFFF | 45 | #define STK3310_PS_MAX_VAL 0xFFFF |
46 | #define STK3310_THRESH_MAX 0xFFFF | ||
47 | 46 | ||
48 | #define STK3310_DRIVER_NAME "stk3310" | 47 | #define STK3310_DRIVER_NAME "stk3310" |
49 | #define STK3310_REGMAP_NAME "stk3310_regmap" | 48 | #define STK3310_REGMAP_NAME "stk3310_regmap" |
@@ -84,15 +83,13 @@ static const struct reg_field stk3310_reg_field_flag_psint = | |||
84 | REG_FIELD(STK3310_REG_FLAG, 4, 4); | 83 | REG_FIELD(STK3310_REG_FLAG, 4, 4); |
85 | static const struct reg_field stk3310_reg_field_flag_nf = | 84 | static const struct reg_field stk3310_reg_field_flag_nf = |
86 | REG_FIELD(STK3310_REG_FLAG, 0, 0); | 85 | REG_FIELD(STK3310_REG_FLAG, 0, 0); |
87 | /* | 86 | |
88 | * Maximum PS values with regard to scale. Used to export the 'inverse' | 87 | /* Estimate maximum proximity values with regard to measurement scale. */ |
89 | * PS value (high values for far objects, low values for near objects). | ||
90 | */ | ||
91 | static const int stk3310_ps_max[4] = { | 88 | static const int stk3310_ps_max[4] = { |
92 | STK3310_PS_MAX_VAL / 64, | 89 | STK3310_PS_MAX_VAL / 640, |
93 | STK3310_PS_MAX_VAL / 16, | 90 | STK3310_PS_MAX_VAL / 160, |
94 | STK3310_PS_MAX_VAL / 4, | 91 | STK3310_PS_MAX_VAL / 40, |
95 | STK3310_PS_MAX_VAL, | 92 | STK3310_PS_MAX_VAL / 10 |
96 | }; | 93 | }; |
97 | 94 | ||
98 | static const int stk3310_scale_table[][2] = { | 95 | static const int stk3310_scale_table[][2] = { |
@@ -128,14 +125,14 @@ static const struct iio_event_spec stk3310_events[] = { | |||
128 | /* Proximity event */ | 125 | /* Proximity event */ |
129 | { | 126 | { |
130 | .type = IIO_EV_TYPE_THRESH, | 127 | .type = IIO_EV_TYPE_THRESH, |
131 | .dir = IIO_EV_DIR_FALLING, | 128 | .dir = IIO_EV_DIR_RISING, |
132 | .mask_separate = BIT(IIO_EV_INFO_VALUE) | | 129 | .mask_separate = BIT(IIO_EV_INFO_VALUE) | |
133 | BIT(IIO_EV_INFO_ENABLE), | 130 | BIT(IIO_EV_INFO_ENABLE), |
134 | }, | 131 | }, |
135 | /* Out-of-proximity event */ | 132 | /* Out-of-proximity event */ |
136 | { | 133 | { |
137 | .type = IIO_EV_TYPE_THRESH, | 134 | .type = IIO_EV_TYPE_THRESH, |
138 | .dir = IIO_EV_DIR_RISING, | 135 | .dir = IIO_EV_DIR_FALLING, |
139 | .mask_separate = BIT(IIO_EV_INFO_VALUE) | | 136 | .mask_separate = BIT(IIO_EV_INFO_VALUE) | |
140 | BIT(IIO_EV_INFO_ENABLE), | 137 | BIT(IIO_EV_INFO_ENABLE), |
141 | }, | 138 | }, |
@@ -205,23 +202,16 @@ static int stk3310_read_event(struct iio_dev *indio_dev, | |||
205 | u8 reg; | 202 | u8 reg; |
206 | u16 buf; | 203 | u16 buf; |
207 | int ret; | 204 | int ret; |
208 | unsigned int index; | ||
209 | struct stk3310_data *data = iio_priv(indio_dev); | 205 | struct stk3310_data *data = iio_priv(indio_dev); |
210 | 206 | ||
211 | if (info != IIO_EV_INFO_VALUE) | 207 | if (info != IIO_EV_INFO_VALUE) |
212 | return -EINVAL; | 208 | return -EINVAL; |
213 | 209 | ||
214 | /* | 210 | /* Only proximity interrupts are implemented at the moment. */ |
215 | * Only proximity interrupts are implemented at the moment. | ||
216 | * Since we're inverting proximity values, the sensor's 'high' | ||
217 | * threshold will become our 'low' threshold, associated with | ||
218 | * 'near' events. Similarly, the sensor's 'low' threshold will | ||
219 | * be our 'high' threshold, associated with 'far' events. | ||
220 | */ | ||
221 | if (dir == IIO_EV_DIR_RISING) | 211 | if (dir == IIO_EV_DIR_RISING) |
222 | reg = STK3310_REG_THDL_PS; | ||
223 | else if (dir == IIO_EV_DIR_FALLING) | ||
224 | reg = STK3310_REG_THDH_PS; | 212 | reg = STK3310_REG_THDH_PS; |
213 | else if (dir == IIO_EV_DIR_FALLING) | ||
214 | reg = STK3310_REG_THDL_PS; | ||
225 | else | 215 | else |
226 | return -EINVAL; | 216 | return -EINVAL; |
227 | 217 | ||
@@ -232,8 +222,7 @@ static int stk3310_read_event(struct iio_dev *indio_dev, | |||
232 | dev_err(&data->client->dev, "register read failed\n"); | 222 | dev_err(&data->client->dev, "register read failed\n"); |
233 | return ret; | 223 | return ret; |
234 | } | 224 | } |
235 | regmap_field_read(data->reg_ps_gain, &index); | 225 | *val = swab16(buf); |
236 | *val = swab16(stk3310_ps_max[index] - buf); | ||
237 | 226 | ||
238 | return IIO_VAL_INT; | 227 | return IIO_VAL_INT; |
239 | } | 228 | } |
@@ -257,13 +246,13 @@ static int stk3310_write_event(struct iio_dev *indio_dev, | |||
257 | return -EINVAL; | 246 | return -EINVAL; |
258 | 247 | ||
259 | if (dir == IIO_EV_DIR_RISING) | 248 | if (dir == IIO_EV_DIR_RISING) |
260 | reg = STK3310_REG_THDL_PS; | ||
261 | else if (dir == IIO_EV_DIR_FALLING) | ||
262 | reg = STK3310_REG_THDH_PS; | 249 | reg = STK3310_REG_THDH_PS; |
250 | else if (dir == IIO_EV_DIR_FALLING) | ||
251 | reg = STK3310_REG_THDL_PS; | ||
263 | else | 252 | else |
264 | return -EINVAL; | 253 | return -EINVAL; |
265 | 254 | ||
266 | buf = swab16(stk3310_ps_max[index] - val); | 255 | buf = swab16(val); |
267 | ret = regmap_bulk_write(data->regmap, reg, &buf, 2); | 256 | ret = regmap_bulk_write(data->regmap, reg, &buf, 2); |
268 | if (ret < 0) | 257 | if (ret < 0) |
269 | dev_err(&client->dev, "failed to set PS threshold!\n"); | 258 | dev_err(&client->dev, "failed to set PS threshold!\n"); |
@@ -334,14 +323,6 @@ static int stk3310_read_raw(struct iio_dev *indio_dev, | |||
334 | return ret; | 323 | return ret; |
335 | } | 324 | } |
336 | *val = swab16(buf); | 325 | *val = swab16(buf); |
337 | if (chan->type == IIO_PROXIMITY) { | ||
338 | /* | ||
339 | * Invert the proximity data so we return low values | ||
340 | * for close objects and high values for far ones. | ||
341 | */ | ||
342 | regmap_field_read(data->reg_ps_gain, &index); | ||
343 | *val = stk3310_ps_max[index] - *val; | ||
344 | } | ||
345 | mutex_unlock(&data->lock); | 326 | mutex_unlock(&data->lock); |
346 | return IIO_VAL_INT; | 327 | return IIO_VAL_INT; |
347 | case IIO_CHAN_INFO_INT_TIME: | 328 | case IIO_CHAN_INFO_INT_TIME: |
@@ -581,8 +562,8 @@ static irqreturn_t stk3310_irq_event_handler(int irq, void *private) | |||
581 | } | 562 | } |
582 | event = IIO_UNMOD_EVENT_CODE(IIO_PROXIMITY, 1, | 563 | event = IIO_UNMOD_EVENT_CODE(IIO_PROXIMITY, 1, |
583 | IIO_EV_TYPE_THRESH, | 564 | IIO_EV_TYPE_THRESH, |
584 | (dir ? IIO_EV_DIR_RISING : | 565 | (dir ? IIO_EV_DIR_FALLING : |
585 | IIO_EV_DIR_FALLING)); | 566 | IIO_EV_DIR_RISING)); |
586 | iio_push_event(indio_dev, event, data->timestamp); | 567 | iio_push_event(indio_dev, event, data->timestamp); |
587 | 568 | ||
588 | /* Reset the interrupt flag */ | 569 | /* Reset the interrupt flag */ |
diff --git a/drivers/iio/light/tcs3414.c b/drivers/iio/light/tcs3414.c index 71c2bde275aa..f8b1df018abe 100644 --- a/drivers/iio/light/tcs3414.c +++ b/drivers/iio/light/tcs3414.c | |||
@@ -185,7 +185,7 @@ static int tcs3414_write_raw(struct iio_dev *indio_dev, | |||
185 | if (val != 0) | 185 | if (val != 0) |
186 | return -EINVAL; | 186 | return -EINVAL; |
187 | for (i = 0; i < ARRAY_SIZE(tcs3414_times); i++) { | 187 | for (i = 0; i < ARRAY_SIZE(tcs3414_times); i++) { |
188 | if (val == tcs3414_times[i] * 1000) { | 188 | if (val2 == tcs3414_times[i] * 1000) { |
189 | data->timing &= ~TCS3414_INTEG_MASK; | 189 | data->timing &= ~TCS3414_INTEG_MASK; |
190 | data->timing |= i; | 190 | data->timing |= i; |
191 | return i2c_smbus_write_byte_data( | 191 | return i2c_smbus_write_byte_data( |
diff --git a/drivers/iio/magnetometer/mmc35240.c b/drivers/iio/magnetometer/mmc35240.c index 7a2ea71c659a..d927397a6ef7 100644 --- a/drivers/iio/magnetometer/mmc35240.c +++ b/drivers/iio/magnetometer/mmc35240.c | |||
@@ -84,10 +84,10 @@ | |||
84 | #define MMC35240_OTP_START_ADDR 0x1B | 84 | #define MMC35240_OTP_START_ADDR 0x1B |
85 | 85 | ||
86 | enum mmc35240_resolution { | 86 | enum mmc35240_resolution { |
87 | MMC35240_16_BITS_SLOW = 0, /* 100 Hz */ | 87 | MMC35240_16_BITS_SLOW = 0, /* 7.92 ms */ |
88 | MMC35240_16_BITS_FAST, /* 200 Hz */ | 88 | MMC35240_16_BITS_FAST, /* 4.08 ms */ |
89 | MMC35240_14_BITS, /* 333 Hz */ | 89 | MMC35240_14_BITS, /* 2.16 ms */ |
90 | MMC35240_12_BITS, /* 666 Hz */ | 90 | MMC35240_12_BITS, /* 1.20 ms */ |
91 | }; | 91 | }; |
92 | 92 | ||
93 | enum mmc35240_axis { | 93 | enum mmc35240_axis { |
@@ -100,22 +100,22 @@ static const struct { | |||
100 | int sens[3]; /* sensitivity per X, Y, Z axis */ | 100 | int sens[3]; /* sensitivity per X, Y, Z axis */ |
101 | int nfo; /* null field output */ | 101 | int nfo; /* null field output */ |
102 | } mmc35240_props_table[] = { | 102 | } mmc35240_props_table[] = { |
103 | /* 16 bits, 100Hz ODR */ | 103 | /* 16 bits, 125Hz ODR */ |
104 | { | 104 | { |
105 | {1024, 1024, 1024}, | 105 | {1024, 1024, 1024}, |
106 | 32768, | 106 | 32768, |
107 | }, | 107 | }, |
108 | /* 16 bits, 200Hz ODR */ | 108 | /* 16 bits, 250Hz ODR */ |
109 | { | 109 | { |
110 | {1024, 1024, 770}, | 110 | {1024, 1024, 770}, |
111 | 32768, | 111 | 32768, |
112 | }, | 112 | }, |
113 | /* 14 bits, 333Hz ODR */ | 113 | /* 14 bits, 450Hz ODR */ |
114 | { | 114 | { |
115 | {256, 256, 193}, | 115 | {256, 256, 193}, |
116 | 8192, | 116 | 8192, |
117 | }, | 117 | }, |
118 | /* 12 bits, 666Hz ODR */ | 118 | /* 12 bits, 800Hz ODR */ |
119 | { | 119 | { |
120 | {64, 64, 48}, | 120 | {64, 64, 48}, |
121 | 2048, | 121 | 2048, |
@@ -133,9 +133,15 @@ struct mmc35240_data { | |||
133 | int axis_scale[3]; | 133 | int axis_scale[3]; |
134 | }; | 134 | }; |
135 | 135 | ||
136 | static const int mmc35240_samp_freq[] = {100, 200, 333, 666}; | 136 | static const struct { |
137 | int val; | ||
138 | int val2; | ||
139 | } mmc35240_samp_freq[] = { {1, 500000}, | ||
140 | {13, 0}, | ||
141 | {25, 0}, | ||
142 | {50, 0} }; | ||
137 | 143 | ||
138 | static IIO_CONST_ATTR_SAMP_FREQ_AVAIL("100 200 333 666"); | 144 | static IIO_CONST_ATTR_SAMP_FREQ_AVAIL("1.5 13 25 50"); |
139 | 145 | ||
140 | #define MMC35240_CHANNEL(_axis) { \ | 146 | #define MMC35240_CHANNEL(_axis) { \ |
141 | .type = IIO_MAGN, \ | 147 | .type = IIO_MAGN, \ |
@@ -168,7 +174,8 @@ static int mmc35240_get_samp_freq_index(struct mmc35240_data *data, | |||
168 | int i; | 174 | int i; |
169 | 175 | ||
170 | for (i = 0; i < ARRAY_SIZE(mmc35240_samp_freq); i++) | 176 | for (i = 0; i < ARRAY_SIZE(mmc35240_samp_freq); i++) |
171 | if (mmc35240_samp_freq[i] == val) | 177 | if (mmc35240_samp_freq[i].val == val && |
178 | mmc35240_samp_freq[i].val2 == val2) | ||
172 | return i; | 179 | return i; |
173 | return -EINVAL; | 180 | return -EINVAL; |
174 | } | 181 | } |
@@ -378,9 +385,9 @@ static int mmc35240_read_raw(struct iio_dev *indio_dev, | |||
378 | if (i < 0 || i >= ARRAY_SIZE(mmc35240_samp_freq)) | 385 | if (i < 0 || i >= ARRAY_SIZE(mmc35240_samp_freq)) |
379 | return -EINVAL; | 386 | return -EINVAL; |
380 | 387 | ||
381 | *val = mmc35240_samp_freq[i]; | 388 | *val = mmc35240_samp_freq[i].val; |
382 | *val2 = 0; | 389 | *val2 = mmc35240_samp_freq[i].val2; |
383 | return IIO_VAL_INT; | 390 | return IIO_VAL_INT_PLUS_MICRO; |
384 | default: | 391 | default: |
385 | return -EINVAL; | 392 | return -EINVAL; |
386 | } | 393 | } |
diff --git a/drivers/iio/proximity/sx9500.c b/drivers/iio/proximity/sx9500.c index 2042e375f835..3d756bd8c703 100644 --- a/drivers/iio/proximity/sx9500.c +++ b/drivers/iio/proximity/sx9500.c | |||
@@ -80,6 +80,7 @@ | |||
80 | #define SX9500_COMPSTAT_MASK GENMASK(3, 0) | 80 | #define SX9500_COMPSTAT_MASK GENMASK(3, 0) |
81 | 81 | ||
82 | #define SX9500_NUM_CHANNELS 4 | 82 | #define SX9500_NUM_CHANNELS 4 |
83 | #define SX9500_CHAN_MASK GENMASK(SX9500_NUM_CHANNELS - 1, 0) | ||
83 | 84 | ||
84 | struct sx9500_data { | 85 | struct sx9500_data { |
85 | struct mutex mutex; | 86 | struct mutex mutex; |
@@ -281,7 +282,7 @@ static int sx9500_read_prox_data(struct sx9500_data *data, | |||
281 | if (ret < 0) | 282 | if (ret < 0) |
282 | return ret; | 283 | return ret; |
283 | 284 | ||
284 | *val = 32767 - (s16)be16_to_cpu(regval); | 285 | *val = be16_to_cpu(regval); |
285 | 286 | ||
286 | return IIO_VAL_INT; | 287 | return IIO_VAL_INT; |
287 | } | 288 | } |
@@ -329,27 +330,29 @@ static int sx9500_read_proximity(struct sx9500_data *data, | |||
329 | else | 330 | else |
330 | ret = sx9500_wait_for_sample(data); | 331 | ret = sx9500_wait_for_sample(data); |
331 | 332 | ||
332 | if (ret < 0) | ||
333 | return ret; | ||
334 | |||
335 | mutex_lock(&data->mutex); | 333 | mutex_lock(&data->mutex); |
336 | 334 | ||
337 | ret = sx9500_read_prox_data(data, chan, val); | ||
338 | if (ret < 0) | 335 | if (ret < 0) |
339 | goto out; | 336 | goto out_dec_data_rdy; |
340 | 337 | ||
341 | ret = sx9500_dec_chan_users(data, chan->channel); | 338 | ret = sx9500_read_prox_data(data, chan, val); |
342 | if (ret < 0) | 339 | if (ret < 0) |
343 | goto out; | 340 | goto out_dec_data_rdy; |
344 | 341 | ||
345 | ret = sx9500_dec_data_rdy_users(data); | 342 | ret = sx9500_dec_data_rdy_users(data); |
346 | if (ret < 0) | 343 | if (ret < 0) |
344 | goto out_dec_chan; | ||
345 | |||
346 | ret = sx9500_dec_chan_users(data, chan->channel); | ||
347 | if (ret < 0) | ||
347 | goto out; | 348 | goto out; |
348 | 349 | ||
349 | ret = IIO_VAL_INT; | 350 | ret = IIO_VAL_INT; |
350 | 351 | ||
351 | goto out; | 352 | goto out; |
352 | 353 | ||
354 | out_dec_data_rdy: | ||
355 | sx9500_dec_data_rdy_users(data); | ||
353 | out_dec_chan: | 356 | out_dec_chan: |
354 | sx9500_dec_chan_users(data, chan->channel); | 357 | sx9500_dec_chan_users(data, chan->channel); |
355 | out: | 358 | out: |
@@ -679,7 +682,7 @@ out: | |||
679 | static int sx9500_buffer_preenable(struct iio_dev *indio_dev) | 682 | static int sx9500_buffer_preenable(struct iio_dev *indio_dev) |
680 | { | 683 | { |
681 | struct sx9500_data *data = iio_priv(indio_dev); | 684 | struct sx9500_data *data = iio_priv(indio_dev); |
682 | int ret, i; | 685 | int ret = 0, i; |
683 | 686 | ||
684 | mutex_lock(&data->mutex); | 687 | mutex_lock(&data->mutex); |
685 | 688 | ||
@@ -703,7 +706,7 @@ static int sx9500_buffer_preenable(struct iio_dev *indio_dev) | |||
703 | static int sx9500_buffer_predisable(struct iio_dev *indio_dev) | 706 | static int sx9500_buffer_predisable(struct iio_dev *indio_dev) |
704 | { | 707 | { |
705 | struct sx9500_data *data = iio_priv(indio_dev); | 708 | struct sx9500_data *data = iio_priv(indio_dev); |
706 | int ret, i; | 709 | int ret = 0, i; |
707 | 710 | ||
708 | iio_triggered_buffer_predisable(indio_dev); | 711 | iio_triggered_buffer_predisable(indio_dev); |
709 | 712 | ||
@@ -800,8 +803,7 @@ static int sx9500_init_compensation(struct iio_dev *indio_dev) | |||
800 | unsigned int val; | 803 | unsigned int val; |
801 | 804 | ||
802 | ret = regmap_update_bits(data->regmap, SX9500_REG_PROX_CTRL0, | 805 | ret = regmap_update_bits(data->regmap, SX9500_REG_PROX_CTRL0, |
803 | GENMASK(SX9500_NUM_CHANNELS, 0), | 806 | SX9500_CHAN_MASK, SX9500_CHAN_MASK); |
804 | GENMASK(SX9500_NUM_CHANNELS, 0)); | ||
805 | if (ret < 0) | 807 | if (ret < 0) |
806 | return ret; | 808 | return ret; |
807 | 809 | ||
@@ -821,7 +823,7 @@ static int sx9500_init_compensation(struct iio_dev *indio_dev) | |||
821 | 823 | ||
822 | out: | 824 | out: |
823 | regmap_update_bits(data->regmap, SX9500_REG_PROX_CTRL0, | 825 | regmap_update_bits(data->regmap, SX9500_REG_PROX_CTRL0, |
824 | GENMASK(SX9500_NUM_CHANNELS, 0), 0); | 826 | SX9500_CHAN_MASK, 0); |
825 | return ret; | 827 | return ret; |
826 | } | 828 | } |
827 | 829 | ||
diff --git a/drivers/iio/temperature/tmp006.c b/drivers/iio/temperature/tmp006.c index fcc49f89b946..8f21f32f9739 100644 --- a/drivers/iio/temperature/tmp006.c +++ b/drivers/iio/temperature/tmp006.c | |||
@@ -132,6 +132,9 @@ static int tmp006_write_raw(struct iio_dev *indio_dev, | |||
132 | struct tmp006_data *data = iio_priv(indio_dev); | 132 | struct tmp006_data *data = iio_priv(indio_dev); |
133 | int i; | 133 | int i; |
134 | 134 | ||
135 | if (mask != IIO_CHAN_INFO_SAMP_FREQ) | ||
136 | return -EINVAL; | ||
137 | |||
135 | for (i = 0; i < ARRAY_SIZE(tmp006_freqs); i++) | 138 | for (i = 0; i < ARRAY_SIZE(tmp006_freqs); i++) |
136 | if ((val == tmp006_freqs[i][0]) && | 139 | if ((val == tmp006_freqs[i][0]) && |
137 | (val2 == tmp006_freqs[i][1])) { | 140 | (val2 == tmp006_freqs[i][1])) { |
diff --git a/drivers/staging/board/Kconfig b/drivers/staging/board/Kconfig index b8ee81840666..3f287c48e082 100644 --- a/drivers/staging/board/Kconfig +++ b/drivers/staging/board/Kconfig | |||
@@ -1,6 +1,6 @@ | |||
1 | config STAGING_BOARD | 1 | config STAGING_BOARD |
2 | bool "Staging Board Support" | 2 | bool "Staging Board Support" |
3 | depends on OF_ADDRESS | 3 | depends on OF_ADDRESS && OF_IRQ && CLKDEV_LOOKUP |
4 | help | 4 | help |
5 | Select to enable per-board staging support code. | 5 | Select to enable per-board staging support code. |
6 | 6 | ||
diff --git a/drivers/staging/lustre/lnet/klnds/socklnd/socklnd.h b/drivers/staging/lustre/lnet/klnds/socklnd/socklnd.h index 7125eb955ae5..8a9d4a0de129 100644 --- a/drivers/staging/lustre/lnet/klnds/socklnd/socklnd.h +++ b/drivers/staging/lustre/lnet/klnds/socklnd/socklnd.h | |||
@@ -31,7 +31,6 @@ | |||
31 | #define DEBUG_PORTAL_ALLOC | 31 | #define DEBUG_PORTAL_ALLOC |
32 | #define DEBUG_SUBSYSTEM S_LND | 32 | #define DEBUG_SUBSYSTEM S_LND |
33 | 33 | ||
34 | #include <asm/irq.h> | ||
35 | #include <linux/crc32.h> | 34 | #include <linux/crc32.h> |
36 | #include <linux/errno.h> | 35 | #include <linux/errno.h> |
37 | #include <linux/if.h> | 36 | #include <linux/if.h> |
diff --git a/drivers/staging/vt6655/device_main.c b/drivers/staging/vt6655/device_main.c index ed040fbb7df8..b0c8e235b982 100644 --- a/drivers/staging/vt6655/device_main.c +++ b/drivers/staging/vt6655/device_main.c | |||
@@ -1418,7 +1418,7 @@ static void vnt_bss_info_changed(struct ieee80211_hw *hw, | |||
1418 | 1418 | ||
1419 | priv->current_aid = conf->aid; | 1419 | priv->current_aid = conf->aid; |
1420 | 1420 | ||
1421 | if (changed & BSS_CHANGED_BSSID) { | 1421 | if (changed & BSS_CHANGED_BSSID && conf->bssid) { |
1422 | unsigned long flags; | 1422 | unsigned long flags; |
1423 | 1423 | ||
1424 | spin_lock_irqsave(&priv->lock, flags); | 1424 | spin_lock_irqsave(&priv->lock, flags); |
diff --git a/drivers/staging/vt6656/main_usb.c b/drivers/staging/vt6656/main_usb.c index f97323f19acf..af572d718135 100644 --- a/drivers/staging/vt6656/main_usb.c +++ b/drivers/staging/vt6656/main_usb.c | |||
@@ -701,7 +701,7 @@ static void vnt_bss_info_changed(struct ieee80211_hw *hw, | |||
701 | 701 | ||
702 | priv->current_aid = conf->aid; | 702 | priv->current_aid = conf->aid; |
703 | 703 | ||
704 | if (changed & BSS_CHANGED_BSSID) | 704 | if (changed & BSS_CHANGED_BSSID && conf->bssid) |
705 | vnt_mac_set_bssid_addr(priv, (u8 *)conf->bssid); | 705 | vnt_mac_set_bssid_addr(priv, (u8 *)conf->bssid); |
706 | 706 | ||
707 | 707 | ||
diff --git a/include/linux/hid-sensor-hub.h b/include/linux/hid-sensor-hub.h index 0042bf330b99..c02b5ce6c5cd 100644 --- a/include/linux/hid-sensor-hub.h +++ b/include/linux/hid-sensor-hub.h | |||
@@ -230,6 +230,7 @@ struct hid_sensor_common { | |||
230 | struct platform_device *pdev; | 230 | struct platform_device *pdev; |
231 | unsigned usage_id; | 231 | unsigned usage_id; |
232 | atomic_t data_ready; | 232 | atomic_t data_ready; |
233 | atomic_t user_requested_state; | ||
233 | struct iio_trigger *trigger; | 234 | struct iio_trigger *trigger; |
234 | struct hid_sensor_hub_attribute_info poll; | 235 | struct hid_sensor_hub_attribute_info poll; |
235 | struct hid_sensor_hub_attribute_info report_state; | 236 | struct hid_sensor_hub_attribute_info report_state; |