Merge tag 'char-misc-6.1-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc

Pull char/misc driver fixes from Greg KH:
"Here are some small driver fixes for 6.1-rc7, they include:

- build warning fix for the vdso when using new versions of grep

- iio driver fixes for reported issues

- small nvmem driver fixes

- fpga Kconfig fix

- interconnect dt binding fix

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

* tag 'char-misc-6.1-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc:
lib/vdso: use "grep -E" instead of "egrep"
nvmem: lan9662-otp: Change return type of lan9662_otp_wait_flag_clear()
nvmem: rmem: Fix return value check in rmem_read()
fpga: m10bmc-sec: Fix kconfig dependencies
dt-bindings: iio: adc: Remove the property "aspeed,trim-data-valid"
iio: adc: aspeed: Remove the trim valid dts property.
iio: core: Fix entry not deleted when iio_register_sw_trigger_type() fails
iio: accel: bma400: Fix memory leak in bma400_get_steps_reg()
iio: light: rpr0521: add missing Kconfig dependencies
iio: health: afe4404: Fix oob read in afe4404_[read|write]_raw
iio: health: afe4403: Fix oob read in afe4403_read_raw
iio: light: apds9960: fix wrong register for gesture gain
dt-bindings: interconnect: qcom,msm8998-bwmon: Correct SC7280 CPU compatible

Changed files
+39 -34
Documentation
devicetree
bindings
drivers
lib
vdso
-7
Documentation/devicetree/bindings/iio/adc/aspeed,ast2600-adc.yaml
··· 62 62 description: 63 63 Inform the driver that last channel will be used to sensor battery. 64 64 65 - aspeed,trim-data-valid: 66 - type: boolean 67 - description: | 68 - The ADC reference voltage can be calibrated to obtain the trimming 69 - data which will be stored in otp. This property informs the driver that 70 - the data store in the otp is valid. 71 - 72 65 required: 73 66 - compatible 74 67 - reg
+1 -1
Documentation/devicetree/bindings/interconnect/qcom,msm8998-bwmon.yaml
··· 24 24 oneOf: 25 25 - items: 26 26 - enum: 27 - - qcom,sc7280-bwmon 27 + - qcom,sc7280-cpu-bwmon 28 28 - qcom,sdm845-bwmon 29 29 - const: qcom,msm8998-bwmon 30 30 - const: qcom,msm8998-bwmon # BWMON v4
+3 -1
drivers/fpga/Kconfig
··· 246 246 247 247 config FPGA_M10_BMC_SEC_UPDATE 248 248 tristate "Intel MAX10 BMC Secure Update driver" 249 - depends on MFD_INTEL_M10_BMC && FW_UPLOAD 249 + depends on MFD_INTEL_M10_BMC 250 + select FW_LOADER 251 + select FW_UPLOAD 250 252 help 251 253 Secure update support for the Intel MAX10 board management 252 254 controller.
+3 -1
drivers/iio/accel/bma400_core.c
··· 805 805 806 806 ret = regmap_bulk_read(data->regmap, BMA400_STEP_CNT0_REG, 807 807 steps_raw, BMA400_STEP_RAW_LEN); 808 - if (ret) 808 + if (ret) { 809 + kfree(steps_raw); 809 810 return ret; 811 + } 810 812 *val = get_unaligned_le24(steps_raw); 811 813 kfree(steps_raw); 812 814 return IIO_VAL_INT;
+5 -6
drivers/iio/adc/aspeed_adc.c
··· 202 202 ((scu_otp) & 203 203 (data->model_data->trim_locate->field)) >> 204 204 __ffs(data->model_data->trim_locate->field); 205 + if (!trimming_val) 206 + trimming_val = 0x8; 205 207 } 206 208 dev_dbg(data->dev, 207 209 "trimming val = %d, offset = %08x, fields = %08x\n", ··· 565 563 if (ret) 566 564 return ret; 567 565 568 - if (of_find_property(data->dev->of_node, "aspeed,trim-data-valid", 569 - NULL)) { 570 - ret = aspeed_adc_set_trim_data(indio_dev); 571 - if (ret) 572 - return ret; 573 - } 566 + ret = aspeed_adc_set_trim_data(indio_dev); 567 + if (ret) 568 + return ret; 574 569 575 570 if (of_find_property(data->dev->of_node, "aspeed,battery-sensing", 576 571 NULL)) {
+3 -2
drivers/iio/health/afe4403.c
··· 245 245 int *val, int *val2, long mask) 246 246 { 247 247 struct afe4403_data *afe = iio_priv(indio_dev); 248 - unsigned int reg = afe4403_channel_values[chan->address]; 249 - unsigned int field = afe4403_channel_leds[chan->address]; 248 + unsigned int reg, field; 250 249 int ret; 251 250 252 251 switch (chan->type) { 253 252 case IIO_INTENSITY: 254 253 switch (mask) { 255 254 case IIO_CHAN_INFO_RAW: 255 + reg = afe4403_channel_values[chan->address]; 256 256 ret = afe4403_read(afe, reg, val); 257 257 if (ret) 258 258 return ret; ··· 262 262 case IIO_CURRENT: 263 263 switch (mask) { 264 264 case IIO_CHAN_INFO_RAW: 265 + field = afe4403_channel_leds[chan->address]; 265 266 ret = regmap_field_read(afe->fields[field], val); 266 267 if (ret) 267 268 return ret;
+7 -5
drivers/iio/health/afe4404.c
··· 250 250 int *val, int *val2, long mask) 251 251 { 252 252 struct afe4404_data *afe = iio_priv(indio_dev); 253 - unsigned int value_reg = afe4404_channel_values[chan->address]; 254 - unsigned int led_field = afe4404_channel_leds[chan->address]; 255 - unsigned int offdac_field = afe4404_channel_offdacs[chan->address]; 253 + unsigned int value_reg, led_field, offdac_field; 256 254 int ret; 257 255 258 256 switch (chan->type) { 259 257 case IIO_INTENSITY: 260 258 switch (mask) { 261 259 case IIO_CHAN_INFO_RAW: 260 + value_reg = afe4404_channel_values[chan->address]; 262 261 ret = regmap_read(afe->regmap, value_reg, val); 263 262 if (ret) 264 263 return ret; 265 264 return IIO_VAL_INT; 266 265 case IIO_CHAN_INFO_OFFSET: 266 + offdac_field = afe4404_channel_offdacs[chan->address]; 267 267 ret = regmap_field_read(afe->fields[offdac_field], val); 268 268 if (ret) 269 269 return ret; ··· 273 273 case IIO_CURRENT: 274 274 switch (mask) { 275 275 case IIO_CHAN_INFO_RAW: 276 + led_field = afe4404_channel_leds[chan->address]; 276 277 ret = regmap_field_read(afe->fields[led_field], val); 277 278 if (ret) 278 279 return ret; ··· 296 295 int val, int val2, long mask) 297 296 { 298 297 struct afe4404_data *afe = iio_priv(indio_dev); 299 - unsigned int led_field = afe4404_channel_leds[chan->address]; 300 - unsigned int offdac_field = afe4404_channel_offdacs[chan->address]; 298 + unsigned int led_field, offdac_field; 301 299 302 300 switch (chan->type) { 303 301 case IIO_INTENSITY: 304 302 switch (mask) { 305 303 case IIO_CHAN_INFO_OFFSET: 304 + offdac_field = afe4404_channel_offdacs[chan->address]; 306 305 return regmap_field_write(afe->fields[offdac_field], val); 307 306 } 308 307 break; 309 308 case IIO_CURRENT: 310 309 switch (mask) { 311 310 case IIO_CHAN_INFO_RAW: 311 + led_field = afe4404_channel_leds[chan->address]; 312 312 return regmap_field_write(afe->fields[led_field], val); 313 313 } 314 314 break;
+5 -1
drivers/iio/industrialio-sw-trigger.c
··· 58 58 59 59 t->group = configfs_register_default_group(iio_triggers_group, t->name, 60 60 &iio_trigger_type_group_type); 61 - if (IS_ERR(t->group)) 61 + if (IS_ERR(t->group)) { 62 + mutex_lock(&iio_trigger_types_lock); 63 + list_del(&t->list); 64 + mutex_unlock(&iio_trigger_types_lock); 62 65 ret = PTR_ERR(t->group); 66 + } 63 67 64 68 return ret; 65 69 }
+2
drivers/iio/light/Kconfig
··· 293 293 tristate "ROHM RPR0521 ALS and proximity sensor driver" 294 294 depends on I2C 295 295 select REGMAP_I2C 296 + select IIO_BUFFER 297 + select IIO_TRIGGERED_BUFFER 296 298 help 297 299 Say Y here if you want to build support for ROHM's RPR0521 298 300 ambient light and proximity sensor device.
+6 -6
drivers/iio/light/apds9960.c
··· 54 54 #define APDS9960_REG_CONTROL_PGAIN_MASK_SHIFT 2 55 55 56 56 #define APDS9960_REG_CONFIG_2 0x90 57 - #define APDS9960_REG_CONFIG_2_GGAIN_MASK 0x60 58 - #define APDS9960_REG_CONFIG_2_GGAIN_MASK_SHIFT 5 59 - 60 57 #define APDS9960_REG_ID 0x92 61 58 62 59 #define APDS9960_REG_STATUS 0x93 ··· 74 77 #define APDS9960_REG_GCONF_1_GFIFO_THRES_MASK_SHIFT 6 75 78 76 79 #define APDS9960_REG_GCONF_2 0xa3 80 + #define APDS9960_REG_GCONF_2_GGAIN_MASK 0x60 81 + #define APDS9960_REG_GCONF_2_GGAIN_MASK_SHIFT 5 82 + 77 83 #define APDS9960_REG_GOFFSET_U 0xa4 78 84 #define APDS9960_REG_GOFFSET_D 0xa5 79 85 #define APDS9960_REG_GPULSE 0xa6 ··· 396 396 } 397 397 398 398 ret = regmap_update_bits(data->regmap, 399 - APDS9960_REG_CONFIG_2, 400 - APDS9960_REG_CONFIG_2_GGAIN_MASK, 401 - idx << APDS9960_REG_CONFIG_2_GGAIN_MASK_SHIFT); 399 + APDS9960_REG_GCONF_2, 400 + APDS9960_REG_GCONF_2_GGAIN_MASK, 401 + idx << APDS9960_REG_GCONF_2_GGAIN_MASK_SHIFT); 402 402 if (!ret) 403 403 data->pxs_gain = idx; 404 404 mutex_unlock(&data->lock);
+1 -1
drivers/nvmem/lan9662-otpc.c
··· 36 36 void __iomem *base; 37 37 }; 38 38 39 - static bool lan9662_otp_wait_flag_clear(void __iomem *reg, u32 flag) 39 + static int lan9662_otp_wait_flag_clear(void __iomem *reg, u32 flag) 40 40 { 41 41 u32 val; 42 42
+2 -2
drivers/nvmem/rmem.c
··· 37 37 * but as of Dec 2020 this isn't possible on arm64. 38 38 */ 39 39 addr = memremap(priv->mem->base, available, MEMREMAP_WB); 40 - if (IS_ERR(addr)) { 40 + if (!addr) { 41 41 dev_err(priv->dev, "Failed to remap memory region\n"); 42 - return PTR_ERR(addr); 42 + return -ENOMEM; 43 43 } 44 44 45 45 count = memory_read_from_buffer(val, bytes, &off, addr, available);
+1 -1
lib/vdso/Makefile
··· 17 17 endif 18 18 19 19 quiet_cmd_vdso_check = VDSOCHK $@ 20 - cmd_vdso_check = if $(OBJDUMP) -R $@ | egrep -h "$(ARCH_REL_TYPE_ABS)"; \ 20 + cmd_vdso_check = if $(OBJDUMP) -R $@ | grep -E -h "$(ARCH_REL_TYPE_ABS)"; \ 21 21 then (echo >&2 "$@: dynamic relocations are not supported"; \ 22 22 rm -f $@; /bin/false); fi