diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-11-28 19:08:09 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-11-28 19:08:09 -0500 |
| commit | 88910638717dd195cff1dd1ea74772b159632bba (patch) | |
| tree | 58031a08b2cd85e68d339bccdce7e3c338ee10b0 | |
| parent | 6f93840d562bec2b0cb6142db675f3894333fc42 (diff) | |
| parent | 6d4556fc0309608f760f1d329df56d77fdd0c31a (diff) | |
Merge tag 'staging-3.18-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging
Pull staging/IIO driver fixes from Greg KH:
"Here are some staging and IIO driver fixes for 3.18-rc7 that resolve a
number of reported issues, and a new device id for a staging wireless
driver.
All of these have been in linux-next"
* tag 'staging-3.18-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
staging: r8188eu: Add new device ID for DLink GO-USB-N150
staging: r8188eu: Fix scheduling while atomic error introduced in commit fadbe0cd
iio: accel: bmc150: set low default thresholds
iio: accel: bmc150: Fix iio_event_spec direction
iio: accel: bmc150: Send x, y and z motion separately
iio: accel: bmc150: Error handling when mode set fails
iio: gyro: bmg160: Fix iio_event_spec direction
iio: gyro: bmg160: Send x, y and z motion separately
iio: gyro: bmg160: Don't let interrupt mode to be open drain
iio: gyro: bmg160: Error handling when mode set fails
iio: adc: men_z188_adc: Add terminating entry for men_z188_ids
iio: accel: kxcjk-1013: Fix kxcjk10013_set_range
iio: Fix IIO_EVENT_CODE_EXTRACT_DIR bit mask
| -rw-r--r-- | drivers/iio/accel/bmc150-accel.c | 40 | ||||
| -rw-r--r-- | drivers/iio/accel/kxcjk-1013.c | 2 | ||||
| -rw-r--r-- | drivers/iio/adc/men_z188_adc.c | 1 | ||||
| -rw-r--r-- | drivers/iio/gyro/bmg160.c | 53 | ||||
| -rw-r--r-- | drivers/staging/rtl8188eu/core/rtw_cmd.c | 22 | ||||
| -rw-r--r-- | drivers/staging/rtl8188eu/core/rtw_mlme_ext.c | 12 | ||||
| -rw-r--r-- | drivers/staging/rtl8188eu/core/rtw_wlan_util.c | 2 | ||||
| -rw-r--r-- | drivers/staging/rtl8188eu/os_dep/usb_intf.c | 1 | ||||
| -rw-r--r-- | include/linux/iio/events.h | 2 |
9 files changed, 105 insertions, 30 deletions
diff --git a/drivers/iio/accel/bmc150-accel.c b/drivers/iio/accel/bmc150-accel.c index 22c096ce39ad..513bd6d14293 100644 --- a/drivers/iio/accel/bmc150-accel.c +++ b/drivers/iio/accel/bmc150-accel.c | |||
| @@ -44,6 +44,9 @@ | |||
| 44 | 44 | ||
| 45 | #define BMC150_ACCEL_REG_INT_STATUS_2 0x0B | 45 | #define BMC150_ACCEL_REG_INT_STATUS_2 0x0B |
| 46 | #define BMC150_ACCEL_ANY_MOTION_MASK 0x07 | 46 | #define BMC150_ACCEL_ANY_MOTION_MASK 0x07 |
| 47 | #define BMC150_ACCEL_ANY_MOTION_BIT_X BIT(0) | ||
| 48 | #define BMC150_ACCEL_ANY_MOTION_BIT_Y BIT(1) | ||
| 49 | #define BMC150_ACCEL_ANY_MOTION_BIT_Z BIT(2) | ||
| 47 | #define BMC150_ACCEL_ANY_MOTION_BIT_SIGN BIT(3) | 50 | #define BMC150_ACCEL_ANY_MOTION_BIT_SIGN BIT(3) |
| 48 | 51 | ||
| 49 | #define BMC150_ACCEL_REG_PMU_LPW 0x11 | 52 | #define BMC150_ACCEL_REG_PMU_LPW 0x11 |
| @@ -92,9 +95,9 @@ | |||
| 92 | #define BMC150_ACCEL_SLOPE_THRES_MASK 0xFF | 95 | #define BMC150_ACCEL_SLOPE_THRES_MASK 0xFF |
| 93 | 96 | ||
| 94 | /* Slope duration in terms of number of samples */ | 97 | /* Slope duration in terms of number of samples */ |
| 95 | #define BMC150_ACCEL_DEF_SLOPE_DURATION 2 | 98 | #define BMC150_ACCEL_DEF_SLOPE_DURATION 1 |
| 96 | /* in terms of multiples of g's/LSB, based on range */ | 99 | /* in terms of multiples of g's/LSB, based on range */ |
| 97 | #define BMC150_ACCEL_DEF_SLOPE_THRESHOLD 5 | 100 | #define BMC150_ACCEL_DEF_SLOPE_THRESHOLD 1 |
| 98 | 101 | ||
| 99 | #define BMC150_ACCEL_REG_XOUT_L 0x02 | 102 | #define BMC150_ACCEL_REG_XOUT_L 0x02 |
| 100 | 103 | ||
| @@ -536,6 +539,9 @@ static int bmc150_accel_set_power_state(struct bmc150_accel_data *data, bool on) | |||
| 536 | if (ret < 0) { | 539 | if (ret < 0) { |
| 537 | dev_err(&data->client->dev, | 540 | dev_err(&data->client->dev, |
| 538 | "Failed: bmc150_accel_set_power_state for %d\n", on); | 541 | "Failed: bmc150_accel_set_power_state for %d\n", on); |
| 542 | if (on) | ||
| 543 | pm_runtime_put_noidle(&data->client->dev); | ||
| 544 | |||
| 539 | return ret; | 545 | return ret; |
| 540 | } | 546 | } |
| 541 | 547 | ||
| @@ -811,6 +817,7 @@ static int bmc150_accel_write_event_config(struct iio_dev *indio_dev, | |||
| 811 | 817 | ||
| 812 | ret = bmc150_accel_setup_any_motion_interrupt(data, state); | 818 | ret = bmc150_accel_setup_any_motion_interrupt(data, state); |
| 813 | if (ret < 0) { | 819 | if (ret < 0) { |
| 820 | bmc150_accel_set_power_state(data, false); | ||
| 814 | mutex_unlock(&data->mutex); | 821 | mutex_unlock(&data->mutex); |
| 815 | return ret; | 822 | return ret; |
| 816 | } | 823 | } |
| @@ -846,7 +853,7 @@ static const struct attribute_group bmc150_accel_attrs_group = { | |||
| 846 | 853 | ||
| 847 | static const struct iio_event_spec bmc150_accel_event = { | 854 | static const struct iio_event_spec bmc150_accel_event = { |
| 848 | .type = IIO_EV_TYPE_ROC, | 855 | .type = IIO_EV_TYPE_ROC, |
| 849 | .dir = IIO_EV_DIR_RISING | IIO_EV_DIR_FALLING, | 856 | .dir = IIO_EV_DIR_EITHER, |
| 850 | .mask_separate = BIT(IIO_EV_INFO_VALUE) | | 857 | .mask_separate = BIT(IIO_EV_INFO_VALUE) | |
| 851 | BIT(IIO_EV_INFO_ENABLE) | | 858 | BIT(IIO_EV_INFO_ENABLE) | |
| 852 | BIT(IIO_EV_INFO_PERIOD) | 859 | BIT(IIO_EV_INFO_PERIOD) |
| @@ -1054,6 +1061,7 @@ static int bmc150_accel_data_rdy_trigger_set_state(struct iio_trigger *trig, | |||
| 1054 | else | 1061 | else |
| 1055 | ret = bmc150_accel_setup_new_data_interrupt(data, state); | 1062 | ret = bmc150_accel_setup_new_data_interrupt(data, state); |
| 1056 | if (ret < 0) { | 1063 | if (ret < 0) { |
| 1064 | bmc150_accel_set_power_state(data, false); | ||
| 1057 | mutex_unlock(&data->mutex); | 1065 | mutex_unlock(&data->mutex); |
| 1058 | return ret; | 1066 | return ret; |
| 1059 | } | 1067 | } |
| @@ -1092,12 +1100,26 @@ static irqreturn_t bmc150_accel_event_handler(int irq, void *private) | |||
| 1092 | else | 1100 | else |
| 1093 | dir = IIO_EV_DIR_RISING; | 1101 | dir = IIO_EV_DIR_RISING; |
| 1094 | 1102 | ||
| 1095 | if (ret & BMC150_ACCEL_ANY_MOTION_MASK) | 1103 | if (ret & BMC150_ACCEL_ANY_MOTION_BIT_X) |
| 1104 | iio_push_event(indio_dev, IIO_MOD_EVENT_CODE(IIO_ACCEL, | ||
| 1105 | 0, | ||
| 1106 | IIO_MOD_X, | ||
| 1107 | IIO_EV_TYPE_ROC, | ||
| 1108 | dir), | ||
| 1109 | data->timestamp); | ||
| 1110 | if (ret & BMC150_ACCEL_ANY_MOTION_BIT_Y) | ||
| 1096 | iio_push_event(indio_dev, IIO_MOD_EVENT_CODE(IIO_ACCEL, | 1111 | iio_push_event(indio_dev, IIO_MOD_EVENT_CODE(IIO_ACCEL, |
| 1097 | 0, | 1112 | 0, |
| 1098 | IIO_MOD_X_OR_Y_OR_Z, | 1113 | IIO_MOD_Y, |
| 1099 | IIO_EV_TYPE_ROC, | 1114 | IIO_EV_TYPE_ROC, |
| 1100 | IIO_EV_DIR_EITHER), | 1115 | dir), |
| 1116 | data->timestamp); | ||
| 1117 | if (ret & BMC150_ACCEL_ANY_MOTION_BIT_Z) | ||
| 1118 | iio_push_event(indio_dev, IIO_MOD_EVENT_CODE(IIO_ACCEL, | ||
| 1119 | 0, | ||
| 1120 | IIO_MOD_Z, | ||
| 1121 | IIO_EV_TYPE_ROC, | ||
| 1122 | dir), | ||
| 1101 | data->timestamp); | 1123 | data->timestamp); |
| 1102 | ack_intr_status: | 1124 | ack_intr_status: |
| 1103 | if (!data->dready_trigger_on) | 1125 | if (!data->dready_trigger_on) |
| @@ -1354,10 +1376,14 @@ static int bmc150_accel_runtime_suspend(struct device *dev) | |||
| 1354 | { | 1376 | { |
| 1355 | struct iio_dev *indio_dev = i2c_get_clientdata(to_i2c_client(dev)); | 1377 | struct iio_dev *indio_dev = i2c_get_clientdata(to_i2c_client(dev)); |
| 1356 | struct bmc150_accel_data *data = iio_priv(indio_dev); | 1378 | struct bmc150_accel_data *data = iio_priv(indio_dev); |
| 1379 | int ret; | ||
| 1357 | 1380 | ||
| 1358 | dev_dbg(&data->client->dev, __func__); | 1381 | dev_dbg(&data->client->dev, __func__); |
| 1382 | ret = bmc150_accel_set_mode(data, BMC150_ACCEL_SLEEP_MODE_SUSPEND, 0); | ||
| 1383 | if (ret < 0) | ||
| 1384 | return -EAGAIN; | ||
| 1359 | 1385 | ||
| 1360 | return bmc150_accel_set_mode(data, BMC150_ACCEL_SLEEP_MODE_SUSPEND, 0); | 1386 | return 0; |
| 1361 | } | 1387 | } |
| 1362 | 1388 | ||
| 1363 | static int bmc150_accel_runtime_resume(struct device *dev) | 1389 | static int bmc150_accel_runtime_resume(struct device *dev) |
diff --git a/drivers/iio/accel/kxcjk-1013.c b/drivers/iio/accel/kxcjk-1013.c index a23e58c4ed99..320aa72c0349 100644 --- a/drivers/iio/accel/kxcjk-1013.c +++ b/drivers/iio/accel/kxcjk-1013.c | |||
| @@ -269,6 +269,8 @@ static int kxcjk1013_set_range(struct kxcjk1013_data *data, int range_index) | |||
| 269 | return ret; | 269 | return ret; |
| 270 | } | 270 | } |
| 271 | 271 | ||
| 272 | ret &= ~(KXCJK1013_REG_CTRL1_BIT_GSEL0 | | ||
| 273 | KXCJK1013_REG_CTRL1_BIT_GSEL1); | ||
| 272 | ret |= (KXCJK1013_scale_table[range_index].gsel_0 << 3); | 274 | ret |= (KXCJK1013_scale_table[range_index].gsel_0 << 3); |
| 273 | ret |= (KXCJK1013_scale_table[range_index].gsel_1 << 4); | 275 | ret |= (KXCJK1013_scale_table[range_index].gsel_1 << 4); |
| 274 | 276 | ||
diff --git a/drivers/iio/adc/men_z188_adc.c b/drivers/iio/adc/men_z188_adc.c index b58d6302521f..d095efe1ba14 100644 --- a/drivers/iio/adc/men_z188_adc.c +++ b/drivers/iio/adc/men_z188_adc.c | |||
| @@ -152,6 +152,7 @@ static void men_z188_remove(struct mcb_device *dev) | |||
| 152 | 152 | ||
| 153 | static const struct mcb_device_id men_z188_ids[] = { | 153 | static const struct mcb_device_id men_z188_ids[] = { |
| 154 | { .device = 0xbc }, | 154 | { .device = 0xbc }, |
| 155 | { } | ||
| 155 | }; | 156 | }; |
| 156 | MODULE_DEVICE_TABLE(mcb, men_z188_ids); | 157 | MODULE_DEVICE_TABLE(mcb, men_z188_ids); |
| 157 | 158 | ||
diff --git a/drivers/iio/gyro/bmg160.c b/drivers/iio/gyro/bmg160.c index 1f967e0d688e..d2fa526740ca 100644 --- a/drivers/iio/gyro/bmg160.c +++ b/drivers/iio/gyro/bmg160.c | |||
| @@ -67,6 +67,9 @@ | |||
| 67 | #define BMG160_REG_INT_EN_0 0x15 | 67 | #define BMG160_REG_INT_EN_0 0x15 |
| 68 | #define BMG160_DATA_ENABLE_INT BIT(7) | 68 | #define BMG160_DATA_ENABLE_INT BIT(7) |
| 69 | 69 | ||
| 70 | #define BMG160_REG_INT_EN_1 0x16 | ||
| 71 | #define BMG160_INT1_BIT_OD BIT(1) | ||
| 72 | |||
| 70 | #define BMG160_REG_XOUT_L 0x02 | 73 | #define BMG160_REG_XOUT_L 0x02 |
| 71 | #define BMG160_AXIS_TO_REG(axis) (BMG160_REG_XOUT_L + (axis * 2)) | 74 | #define BMG160_AXIS_TO_REG(axis) (BMG160_REG_XOUT_L + (axis * 2)) |
| 72 | 75 | ||
| @@ -82,6 +85 | |||
