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 'char-misc-6.8-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc

Pull char / miscdriver fixes from Greg KH:
"Here is a small set of char/misc and IIO driver fixes for 6.8-rc5.

Included in here are:

- lots of iio driver fixes for reported issues

- nvmem device naming fixup for reported problem

- interconnect driver fixes for reported issues

All of these have been in linux-next for a while with no reported the
issues (the nvmem patch was included in a different branch in
linux-next before sent to me for inclusion here)"

* tag 'char-misc-6.8-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc: (21 commits)
nvmem: include bit index in cell sysfs file name
iio: adc: ad4130: only set GPIO_CTRL if pin is unused
iio: adc: ad4130: zero-initialize clock init data
interconnect: qcom: x1e80100: Add missing ACV enable_mask
interconnect: qcom: sm8650: Use correct ACV enable_mask
iio: accel: bma400: Fix a compilation problem
iio: commom: st_sensors: ensure proper DMA alignment
iio: hid-sensor-als: Return 0 for HID_USAGE_SENSOR_TIME_TIMESTAMP
iio: move LIGHT_UVA and LIGHT_UVB to the end of iio_modifier
staging: iio: ad5933: fix type mismatch regression
iio: humidity: hdc3020: fix temperature offset
iio: adc: ad7091r8: Fix error code in ad7091r8_gpio_setup()
iio: adc: ad_sigma_delta: ensure proper DMA alignment
iio: imu: adis: ensure proper DMA alignment
iio: humidity: hdc3020: Add Makefile, Kconfig and MAINTAINERS entry
iio: imu: bno055: serdev requires REGMAP
iio: magnetometer: rm3100: add boundary check for the value read from RM3100_REG_TMRC
iio: pressure: bmp280: Add missing bmp085 to SPI id table
iio: core: fix memleak in iio_device_register_sysfs
interconnect: qcom: sm8550: Enable sync_state
...

+73 -27
+8 -8
Documentation/ABI/testing/sysfs-nvmem-cells
··· 4 4 Contact: Miquel Raynal <miquel.raynal@bootlin.com> 5 5 Description: 6 6 The "cells" folder contains one file per cell exposed by the 7 - NVMEM device. The name of the file is: <name>@<where>, with 8 - <name> being the cell name and <where> its location in the NVMEM 9 - device, in hexadecimal (without the '0x' prefix, to mimic device 10 - tree node names). The length of the file is the size of the cell 11 - (when known). The content of the file is the binary content of 12 - the cell (may sometimes be ASCII, likely without trailing 13 - character). 7 + NVMEM device. The name of the file is: "<name>@<byte>,<bit>", 8 + with <name> being the cell name and <where> its location in 9 + the NVMEM device, in hexadecimal bytes and bits (without the 10 + '0x' prefix, to mimic device tree node names). The length of 11 + the file is the size of the cell (when known). The content of 12 + the file is the binary content of the cell (may sometimes be 13 + ASCII, likely without trailing character). 14 14 Note: This file is only present if CONFIG_NVMEM_SYSFS 15 15 is enabled. 16 16 17 17 Example:: 18 18 19 - hexdump -C /sys/bus/nvmem/devices/1-00563/cells/product-name@d 19 + hexdump -C /sys/bus/nvmem/devices/1-00563/cells/product-name@d,0 20 20 00000000 54 4e 34 38 4d 2d 50 2d 44 4e |TN48M-P-DN| 21 21 0000000a
+8
MAINTAINERS
··· 22010 22010 F: drivers/media/i2c/ds90* 22011 22011 F: include/media/i2c/ds90* 22012 22012 22013 + TI HDC302X HUMIDITY DRIVER 22014 + M: Javier Carrasco <javier.carrasco.cruz@gmail.com> 22015 + M: Li peiyu <579lpy@gmail.com> 22016 + L: linux-iio@vger.kernel.org 22017 + S: Maintained 22018 + F: Documentation/devicetree/bindings/iio/humidity/ti,hdc3020.yaml 22019 + F: drivers/iio/humidity/hdc3020.c 22020 + 22013 22021 TI ICSSG ETHERNET DRIVER (ICSSG) 22014 22022 R: MD Danish Anwar <danishanwar@ti.com> 22015 22023 R: Roger Quadros <rogerq@kernel.org>
+2
drivers/iio/accel/Kconfig
··· 219 219 220 220 config BMA400_I2C 221 221 tristate 222 + select REGMAP_I2C 222 223 depends on BMA400 223 224 224 225 config BMA400_SPI 225 226 tristate 227 + select REGMAP_SPI 226 228 depends on BMA400 227 229 228 230 config BMC150_ACCEL
+8 -4
drivers/iio/adc/ad4130.c
··· 1821 1821 { 1822 1822 struct device *dev = &st->spi->dev; 1823 1823 struct device_node *of_node = dev_of_node(dev); 1824 - struct clk_init_data init; 1824 + struct clk_init_data init = {}; 1825 1825 const char *clk_name; 1826 1826 int ret; 1827 1827 ··· 1891 1891 return ret; 1892 1892 1893 1893 /* 1894 - * Configure all GPIOs for output. If configured, the interrupt function 1895 - * of P2 takes priority over the GPIO out function. 1894 + * Configure unused GPIOs for output. If configured, the interrupt 1895 + * function of P2 takes priority over the GPIO out function. 1896 1896 */ 1897 - val = AD4130_IO_CONTROL_GPIO_CTRL_MASK; 1897 + val = 0; 1898 + for (i = 0; i < AD4130_MAX_GPIOS; i++) 1899 + if (st->pins_fn[i + AD4130_AIN2_P1] == AD4130_PIN_FN_NONE) 1900 + val |= FIELD_PREP(AD4130_IO_CONTROL_GPIO_CTRL_MASK, BIT(i)); 1901 + 1898 1902 val |= FIELD_PREP(AD4130_IO_CONTROL_INT_PIN_SEL_MASK, st->int_pin_sel); 1899 1903 1900 1904 ret = regmap_write(st->regmap, AD4130_IO_CONTROL_REG, val);
+1 -1
drivers/iio/adc/ad7091r8.c
··· 195 195 st->reset_gpio = devm_gpiod_get_optional(st->dev, "reset", 196 196 GPIOD_OUT_HIGH); 197 197 if (IS_ERR(st->reset_gpio)) 198 - return dev_err_probe(st->dev, PTR_ERR(st->convst_gpio), 198 + return dev_err_probe(st->dev, PTR_ERR(st->reset_gpio), 199 199 "Error on requesting reset GPIO\n"); 200 200 201 201 if (st->reset_gpio) {
+12
drivers/iio/humidity/Kconfig
··· 48 48 To compile this driver as a module, choose M here: the module 49 49 will be called hdc2010. 50 50 51 + config HDC3020 52 + tristate "TI HDC3020 relative humidity and temperature sensor" 53 + depends on I2C 54 + select CRC8 55 + help 56 + Say yes here to build support for the Texas Instruments 57 + HDC3020, HDC3021 and HDC3022 relative humidity and temperature 58 + sensors. 59 + 60 + To compile this driver as a module, choose M here: the module 61 + will be called hdc3020. 62 + 51 63 config HID_SENSOR_HUMIDITY 52 64 tristate "HID Environmental humidity sensor" 53 65 depends on HID_SENSOR_HUB
+1
drivers/iio/humidity/Makefile
··· 7 7 obj-$(CONFIG_DHT11) += dht11.o 8 8 obj-$(CONFIG_HDC100X) += hdc100x.o 9 9 obj-$(CONFIG_HDC2010) += hdc2010.o 10 + obj-$(CONFIG_HDC3020) += hdc3020.o 10 11 obj-$(CONFIG_HID_SENSOR_HUMIDITY) += hid-sensor-humidity.o 11 12 12 13 hts221-y := hts221_core.o \
+1 -1
drivers/iio/humidity/hdc3020.c
··· 322 322 if (chan->type != IIO_TEMP) 323 323 return -EINVAL; 324 324 325 - *val = 16852; 325 + *val = -16852; 326 326 return IIO_VAL_INT; 327 327 328 328 default:
+1
drivers/iio/imu/bno055/Kconfig
··· 8 8 config BOSCH_BNO055_SERIAL 9 9 tristate "Bosch BNO055 attached via UART" 10 10 depends on SERIAL_DEV_BUS 11 + select REGMAP 11 12 select BOSCH_BNO055 12 13 help 13 14 Enable this to support Bosch BNO055 IMUs attached via UART.
+4 -1
drivers/iio/industrialio-core.c
··· 1584 1584 ret = iio_device_register_sysfs_group(indio_dev, 1585 1585 &iio_dev_opaque->chan_attr_group); 1586 1586 if (ret) 1587 - goto error_clear_attrs; 1587 + goto error_free_chan_attrs; 1588 1588 1589 1589 return 0; 1590 1590 1591 + error_free_chan_attrs: 1592 + kfree(iio_dev_opaque->chan_attr_group.attrs); 1593 + iio_dev_opaque->chan_attr_group.attrs = NULL; 1591 1594 error_clear_attrs: 1592 1595 iio_free_chan_devattr_list(&iio_dev_opaque->channel_attr_list); 1593 1596
+1
drivers/iio/light/hid-sensor-als.c
··· 226 226 case HID_USAGE_SENSOR_TIME_TIMESTAMP: 227 227 als_state->timestamp = hid_sensor_convert_timestamp(&als_state->common_attributes, 228 228 *(s64 *)raw_data); 229 + ret = 0; 229 230 break; 230 231 default: 231 232 break;
+8 -2
drivers/iio/magnetometer/rm3100-core.c
··· 530 530 struct rm3100_data *data; 531 531 unsigned int tmp; 532 532 int ret; 533 + int samp_rate_index; 533 534 534 535 indio_dev = devm_iio_device_alloc(dev, sizeof(*data)); 535 536 if (!indio_dev) ··· 587 586 ret = regmap_read(regmap, RM3100_REG_TMRC, &tmp); 588 587 if (ret < 0) 589 588 return ret; 589 + 590 + samp_rate_index = tmp - RM3100_TMRC_OFFSET; 591 + if (samp_rate_index < 0 || samp_rate_index >= RM3100_SAMP_NUM) { 592 + dev_err(dev, "The value read from RM3100_REG_TMRC is invalid!\n"); 593 + return -EINVAL; 594 + } 590 595 /* Initializing max wait time, which is double conversion time. */ 591 - data->conversion_time = rm3100_samp_rates[tmp - RM3100_TMRC_OFFSET][2] 592 - * 2; 596 + data->conversion_time = rm3100_samp_rates[samp_rate_index][2] * 2; 593 597 594 598 /* Cycle count values may not be what we want. */ 595 599 if ((tmp - RM3100_TMRC_OFFSET) == 0)
+1
drivers/iio/pressure/bmp280-spi.c
··· 87 87 MODULE_DEVICE_TABLE(of, bmp280_of_spi_match); 88 88 89 89 static const struct spi_device_id bmp280_spi_id[] = { 90 + { "bmp085", (kernel_ulong_t)&bmp180_chip_info }, 90 91 { "bmp180", (kernel_ulong_t)&bmp180_chip_info }, 91 92 { "bmp181", (kernel_ulong_t)&bmp180_chip_info }, 92 93 { "bmp280", (kernel_ulong_t)&bmp280_chip_info },
+1
drivers/interconnect/qcom/sc8180x.c
··· 1372 1372 1373 1373 static struct qcom_icc_bcm bcm_co0 = { 1374 1374 .name = "CO0", 1375 + .keepalive = true, 1375 1376 .num_nodes = 1, 1376 1377 .nodes = { &slv_qns_cdsp_mem_noc } 1377 1378 };
+1
drivers/interconnect/qcom/sm8550.c
··· 2223 2223 .driver = { 2224 2224 .name = "qnoc-sm8550", 2225 2225 .of_match_table = qnoc_of_match, 2226 + .sync_state = icc_sync_state, 2226 2227 }, 2227 2228 }; 2228 2229
+1 -1
drivers/interconnect/qcom/sm8650.c
··· 1160 1160 1161 1161 static struct qcom_icc_bcm bcm_acv = { 1162 1162 .name = "ACV", 1163 - .enable_mask = BIT(3), 1163 + .enable_mask = BIT(0), 1164 1164 .num_nodes = 1, 1165 1165 .nodes = { &ebi }, 1166 1166 };
+1
drivers/interconnect/qcom/x1e80100.c
··· 1586 1586 1587 1587 static struct qcom_icc_bcm bcm_acv = { 1588 1588 .name = "ACV", 1589 + .enable_mask = BIT(3), 1589 1590 .num_nodes = 1, 1590 1591 .nodes = { &ebi }, 1591 1592 };
+3 -2
drivers/nvmem/core.c
··· 460 460 list_for_each_entry(entry, &nvmem->cells, node) { 461 461 sysfs_bin_attr_init(&attrs[i]); 462 462 attrs[i].attr.name = devm_kasprintf(&nvmem->dev, GFP_KERNEL, 463 - "%s@%x", entry->name, 464 - entry->offset); 463 + "%s@%x,%x", entry->name, 464 + entry->offset, 465 + entry->bit_offset); 465 466 attrs[i].attr.mode = 0444; 466 467 attrs[i].size = entry->bytes; 467 468 attrs[i].read = &nvmem_cell_attr_read;
+1 -1
drivers/staging/iio/impedance-analyzer/ad5933.c
··· 608 608 struct ad5933_state, work.work); 609 609 struct iio_dev *indio_dev = i2c_get_clientdata(st->client); 610 610 __be16 buf[2]; 611 - int val[2]; 611 + u16 val[2]; 612 612 unsigned char status; 613 613 int ret; 614 614
+3 -1
include/linux/iio/adc/ad_sigma_delta.h
··· 8 8 #ifndef __AD_SIGMA_DELTA_H__ 9 9 #define __AD_SIGMA_DELTA_H__ 10 10 11 + #include <linux/iio/iio.h> 12 + 11 13 enum ad_sigma_delta_mode { 12 14 AD_SD_MODE_CONTINUOUS = 0, 13 15 AD_SD_MODE_SINGLE = 1, ··· 101 99 * 'rx_buf' is up to 32 bits per sample + 64 bit timestamp, 102 100 * rounded to 16 bytes to take into account padding. 103 101 */ 104 - uint8_t tx_buf[4] ____cacheline_aligned; 102 + uint8_t tx_buf[4] __aligned(IIO_DMA_MINALIGN); 105 103 uint8_t rx_buf[16] __aligned(8); 106 104 }; 107 105
+2 -2
include/linux/iio/common/st_sensors.h
··· 258 258 bool hw_irq_trigger; 259 259 s64 hw_timestamp; 260 260 261 - char buffer_data[ST_SENSORS_MAX_BUFFER_SIZE] ____cacheline_aligned; 262 - 263 261 struct mutex odr_lock; 262 + 263 + char buffer_data[ST_SENSORS_MAX_BUFFER_SIZE] __aligned(IIO_DMA_MINALIGN); 264 264 }; 265 265 266 266 #ifdef CONFIG_IIO_BUFFER
+2 -1
include/linux/iio/imu/adis.h
··· 11 11 12 12 #include <linux/spi/spi.h> 13 13 #include <linux/interrupt.h> 14 + #include <linux/iio/iio.h> 14 15 #include <linux/iio/types.h> 15 16 16 17 #define ADIS_WRITE_REG(reg) ((0x80 | (reg))) ··· 132 131 unsigned long irq_flag; 133 132 void *buffer; 134 133 135 - u8 tx[10] ____cacheline_aligned; 134 + u8 tx[10] __aligned(IIO_DMA_MINALIGN); 136 135 u8 rx[4]; 137 136 }; 138 137
+2 -2
include/uapi/linux/iio/types.h
··· 91 91 IIO_MOD_CO2, 92 92 IIO_MOD_VOC, 93 93 IIO_MOD_LIGHT_UV, 94 - IIO_MOD_LIGHT_UVA, 95 - IIO_MOD_LIGHT_UVB, 96 94 IIO_MOD_LIGHT_DUV, 97 95 IIO_MOD_PM1, 98 96 IIO_MOD_PM2P5, ··· 105 107 IIO_MOD_PITCH, 106 108 IIO_MOD_YAW, 107 109 IIO_MOD_ROLL, 110 + IIO_MOD_LIGHT_UVA, 111 + IIO_MOD_LIGHT_UVB, 108 112 }; 109 113 110 114 enum iio_event_type {