Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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

Pull staging driver fixes from Greg KH:
"Here are a few fixes for staging and iio drivers that resolve issues
reported in 3.16-rc1.

All have been in linux-next just fine"

* tag 'staging-3.16-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
imx-drm: parallel-display: Fix DPMS default state.
staging: android: timed_output: fix use after free of dev
staging: comedi: addi_apci_1564: add addi_watchdog dependency
staging: rtl8723au: Reference correct firmwarefiles with MODULE_FIRMWARE()
staging: rtl8723au: Request correct firmware file for A-cut parts
iio: adc: checking for NULL instead of IS_ERR() in probe
iio: adc: at91: signedness bug in at91_adc_get_trigger_value_by_name()
iio: mxs-lradc: fix divider
iio: Fix endianness issue in ak8975_read_axis()
staging/iio: IIO_SIMPLE_DUMMY_BUFFER neds IIO_BUFFER
twl4030-madc: Request processed values in twl4030_get_madc_conversion
staging: iio: tsl2x7x_core: fix proximity treshold
iio: Fix two mpl3115 issues in measurement conversion
iio: hid-sensors: Get feature report from sensor hub after changing power state

+49 -34
+8 -8
drivers/iio/adc/at91_adc.c
··· 510 510 return idev->num_channels; 511 511 } 512 512 513 - static u8 at91_adc_get_trigger_value_by_name(struct iio_dev *idev, 513 + static int at91_adc_get_trigger_value_by_name(struct iio_dev *idev, 514 514 struct at91_adc_trigger *triggers, 515 515 const char *trigger_name) 516 516 { 517 517 struct at91_adc_state *st = iio_priv(idev); 518 - u8 value = 0; 519 518 int i; 520 519 521 520 for (i = 0; i < st->trigger_number; i++) { ··· 527 528 return -ENOMEM; 528 529 529 530 if (strcmp(trigger_name, name) == 0) { 530 - value = triggers[i].value; 531 531 kfree(name); 532 - break; 532 + if (triggers[i].value == 0) 533 + return -EINVAL; 534 + return triggers[i].value; 533 535 } 534 536 535 537 kfree(name); 536 538 } 537 539 538 - return value; 540 + return -EINVAL; 539 541 } 540 542 541 543 static int at91_adc_configure_trigger(struct iio_trigger *trig, bool state) ··· 546 546 struct iio_buffer *buffer = idev->buffer; 547 547 struct at91_adc_reg_desc *reg = st->registers; 548 548 u32 status = at91_adc_readl(st, reg->trigger_register); 549 - u8 value; 549 + int value; 550 550 u8 bit; 551 551 552 552 value = at91_adc_get_trigger_value_by_name(idev, 553 553 st->trigger_list, 554 554 idev->trig->name); 555 - if (value == 0) 556 - return -EINVAL; 555 + if (value < 0) 556 + return value; 557 557 558 558 if (state) { 559 559 st->buffer = kmalloc(idev->scan_bytes, GFP_KERNEL);
+2 -2
drivers/iio/adc/men_z188_adc.c
··· 121 121 indio_dev->num_channels = ARRAY_SIZE(z188_adc_iio_channels); 122 122 123 123 mem = mcb_request_mem(dev, "z188-adc"); 124 - if (!mem) 125 - return -ENOMEM; 124 + if (IS_ERR(mem)) 125 + return PTR_ERR(mem); 126 126 127 127 adc->base = ioremap(mem->start, resource_size(mem)); 128 128 if (adc->base == NULL)
+1
drivers/iio/adc/twl4030-madc.c
··· 645 645 req.channels = (1 << channel_no); 646 646 req.method = TWL4030_MADC_SW2; 647 647 req.active = 0; 648 + req.raw = 0; 648 649 req.func_cb = NULL; 649 650 ret = twl4030_madc_conversion(&req); 650 651 if (ret < 0)
+3
drivers/iio/common/hid-sensors/hid-sensor-trigger.c
··· 75 75 (s32)report_val); 76 76 } 77 77 78 + sensor_hub_get_feature(st->hsdev, st->power_state.report_id, 79 + st->power_state.index, 80 + &state_val); 78 81 return 0; 79 82 } 80 83 EXPORT_SYMBOL(hid_sensor_power_state);
+1 -8
drivers/iio/magnetometer/ak8975.c
··· 373 373 { 374 374 struct ak8975_data *data = iio_priv(indio_dev); 375 375 struct i2c_client *client = data->client; 376 - u16 meas_reg; 377 - s16 raw; 378 376 int ret; 379 377 380 378 mutex_lock(&data->lock); ··· 420 422 dev_err(&client->dev, "Read axis data fails\n"); 421 423 goto exit; 422 424 } 423 - meas_reg = ret; 424 425 425 426 mutex_unlock(&data->lock); 426 427 427 - /* Endian conversion of the measured values. */ 428 - raw = (s16) (le16_to_cpu(meas_reg)); 429 - 430 428 /* Clamp to valid range. */ 431 - raw = clamp_t(s16, raw, -4096, 4095); 432 - *val = raw; 429 + *val = clamp_t(s16, ret, -4096, 4095); 433 430 return IIO_VAL_INT; 434 431 435 432 exit:
+3 -3
drivers/iio/pressure/mpl3115.c
··· 98 98 mutex_unlock(&data->lock); 99 99 if (ret < 0) 100 100 return ret; 101 - *val = sign_extend32(be32_to_cpu(tmp) >> 12, 23); 101 + *val = be32_to_cpu(tmp) >> 12; 102 102 return IIO_VAL_INT; 103 103 case IIO_TEMP: /* in 0.0625 celsius / LSB */ 104 104 mutex_lock(&data->lock); ··· 112 112 mutex_unlock(&data->lock); 113 113 if (ret < 0) 114 114 return ret; 115 - *val = sign_extend32(be32_to_cpu(tmp) >> 20, 15); 115 + *val = sign_extend32(be32_to_cpu(tmp) >> 20, 11); 116 116 return IIO_VAL_INT; 117 117 default: 118 118 return -EINVAL; ··· 185 185 BIT(IIO_CHAN_INFO_SCALE), 186 186 .scan_index = 0, 187 187 .scan_type = { 188 - .sign = 's', 188 + .sign = 'u', 189 189 .realbits = 20, 190 190 .storagebits = 32, 191 191 .shift = 12,
-1
drivers/staging/android/timed_output.c
··· 97 97 { 98 98 tdev->enable(tdev, 0); 99 99 device_destroy(timed_output_class, MKDEV(0, tdev->index)); 100 - dev_set_drvdata(tdev->dev, NULL); 101 100 } 102 101 EXPORT_SYMBOL_GPL(timed_output_dev_unregister); 103 102
+1
drivers/staging/comedi/Kconfig
··· 651 651 652 652 config COMEDI_ADDI_APCI_1564 653 653 tristate "ADDI-DATA APCI_1564 support" 654 + select COMEDI_ADDI_WATCHDOG 654 655 ---help--- 655 656 Enable support for ADDI-DATA APCI_1564 cards 656 657
+5 -4
drivers/staging/iio/Kconfig
··· 36 36 Add some dummy events to the simple dummy driver. 37 37 38 38 config IIO_SIMPLE_DUMMY_BUFFER 39 - boolean "Buffered capture support" 40 - select IIO_KFIFO_BUF 41 - help 42 - Add buffered data capture to the simple dummy driver. 39 + boolean "Buffered capture support" 40 + select IIO_BUFFER 41 + select IIO_KFIFO_BUF 42 + help 43 + Add buffered data capture to the simple dummy driver. 43 44 44 45 endif # IIO_SIMPLE_DUMMY 45 46
+8 -4
drivers/staging/iio/adc/mxs-lradc.c
··· 846 846 LRADC_CTRL1); 847 847 mxs_lradc_reg_clear(lradc, 0xff, LRADC_CTRL0); 848 848 849 + /* Enable / disable the divider per requirement */ 850 + if (test_bit(chan, &lradc->is_divided)) 851 + mxs_lradc_reg_set(lradc, 1 << LRADC_CTRL2_DIVIDE_BY_TWO_OFFSET, 852 + LRADC_CTRL2); 853 + else 854 + mxs_lradc_reg_clear(lradc, 855 + 1 << LRADC_CTRL2_DIVIDE_BY_TWO_OFFSET, LRADC_CTRL2); 856 + 849 857 /* Clean the slot's previous content, then set new one. */ 850 858 mxs_lradc_reg_clear(lradc, LRADC_CTRL4_LRADCSELECT_MASK(0), 851 859 LRADC_CTRL4); ··· 969 961 if (val == scale_avail[MXS_LRADC_DIV_DISABLED].integer && 970 962 val2 == scale_avail[MXS_LRADC_DIV_DISABLED].nano) { 971 963 /* divider by two disabled */ 972 - writel(1 << LRADC_CTRL2_DIVIDE_BY_TWO_OFFSET, 973 - lradc->base + LRADC_CTRL2 + STMP_OFFSET_REG_CLR); 974 964 clear_bit(chan->channel, &lradc->is_divided); 975 965 ret = 0; 976 966 } else if (val == scale_avail[MXS_LRADC_DIV_ENABLED].integer && 977 967 val2 == scale_avail[MXS_LRADC_DIV_ENABLED].nano) { 978 968 /* divider by two enabled */ 979 - writel(1 << LRADC_CTRL2_DIVIDE_BY_TWO_OFFSET, 980 - lradc->base + LRADC_CTRL2 + STMP_OFFSET_REG_SET); 981 969 set_bit(chan->channel, &lradc->is_divided); 982 970 ret = 0; 983 971 }
+6 -2
drivers/staging/iio/light/tsl2x7x_core.c
··· 667 667 chip->tsl2x7x_config[TSL2X7X_PRX_COUNT] = 668 668 chip->tsl2x7x_settings.prox_pulse_count; 669 669 chip->tsl2x7x_config[TSL2X7X_PRX_MINTHRESHLO] = 670 - chip->tsl2x7x_settings.prox_thres_low; 670 + (chip->tsl2x7x_settings.prox_thres_low) & 0xFF; 671 + chip->tsl2x7x_config[TSL2X7X_PRX_MINTHRESHHI] = 672 + (chip->tsl2x7x_settings.prox_thres_low >> 8) & 0xFF; 671 673 chip->tsl2x7x_config[TSL2X7X_PRX_MAXTHRESHLO] = 672 - chip->tsl2x7x_settings.prox_thres_high; 674 + (chip->tsl2x7x_settings.prox_thres_high) & 0xFF; 675 + chip->tsl2x7x_config[TSL2X7X_PRX_MAXTHRESHHI] = 676 + (chip->tsl2x7x_settings.prox_thres_high >> 8) & 0xFF; 673 677 674 678 /* and make sure we're not already on */ 675 679 if (chip->tsl2x7x_chip_status == TSL2X7X_CHIP_WORKING) {
+7
drivers/staging/imx-drm/parallel-display.c
··· 173 173 if (ret) 174 174 return ret; 175 175 176 + /* set the connector's dpms to OFF so that 177 + * drm_helper_connector_dpms() won't return 178 + * immediately since the current state is ON 179 + * at this point. 180 + */ 181 + imxpd->connector.dpms = DRM_MODE_DPMS_OFF; 182 + 176 183 drm_encoder_helper_add(&imxpd->encoder, &imx_pd_encoder_helper_funcs); 177 184 drm_encoder_init(drm, &imxpd->encoder, &imx_pd_encoder_funcs, 178 185 DRM_MODE_ENCODER_NONE);
+1 -1
drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c
··· 298 298 RT_TRACE(_module_hal_init_c_, _drv_info_, ("+%s\n", __func__)); 299 299 300 300 if (IS_8723A_A_CUT(pHalData->VersionID)) { 301 - fw_name = "rtlwifi/rtl8723aufw.bin"; 301 + fw_name = "rtlwifi/rtl8723aufw_A.bin"; 302 302 RT_TRACE(_module_hal_init_c_, _drv_info_, 303 303 ("rtl8723a_FirmwareDownload: R8723FwImageArray_UMC " 304 304 "for RTL8723A A CUT\n"));
+3 -1
drivers/staging/rtl8723au/os_dep/os_intfs.c
··· 29 29 MODULE_AUTHOR("Larry Finger <Larry.Finger@lwfinger.net>"); 30 30 MODULE_AUTHOR("Jes Sorensen <Jes.Sorensen@redhat.com>"); 31 31 MODULE_VERSION(DRIVERVERSION); 32 - MODULE_FIRMWARE("rtlwifi/rtl8821aefw.bin"); 32 + MODULE_FIRMWARE("rtlwifi/rtl8723aufw_A.bin"); 33 + MODULE_FIRMWARE("rtlwifi/rtl8723aufw_B.bin"); 34 + MODULE_FIRMWARE("rtlwifi/rtl8723aufw_B_NoBT.bin"); 33 35 34 36 /* module param defaults */ 35 37 static int rtw_chip_version = 0x00;