Commit e45e07c1 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman
Browse files

Merge tag 'iio-fixes-for-6.14a' of...

Merge tag 'iio-fixes-for-6.14a' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/jic23/iio into char-misc-linus

Jonathan writes:

IIO: 1st set of fixes for the 6.14 cycle

hid-sensors
- Fix an ABI issue that occurred when we gained multiple proximity sensor
  support.
adi,adi-axi-adc
- Fix missing pwm-names inItems entry in dt binding.
adi,ad3552r
- Make sure to clear the reset bit in the status flag so future
  resets can be detected.
adi,ad7192
- Fix use of value where it should be bit(value) to select channel.
adi,ad7606
- Fix up reporting of wrong available scales.
adi,admv8818
- Force SDO line to be initialized without relying on it already being
  intialized to read back current register value.
atmel,sama5d2
- Fix wrong number of bits reported for readings from sama7g5
avago,apds9306
- Fix wrong scaling of scale values (missing a few zeros).
microchip,pac1921
- Fix resource leak by moving ACPI_FREE() call up a few lines.
tyhx,hx9023s
- Fix a use after free caused by releasing firmware a few lines early.

* tag 'iio-fixes-for-6.14a' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/jic23/iio:
  iio: filter: admv8818: Force initialization of SDO
  iio: adc: ad7606: fix wrong scale available
  dt-bindings: iio: dac: adi-axi-adc: fix ad7606 pwm-names
  iio: dac: ad3552r: clear reset status flag
  iio: adc: ad7192: fix channel select
  iio: hid-sensor-prox: Split difference from multiple channels
  iio: proximity: Fix use-after-free in hx9023s_send_cfg()
  iio: adc: at91-sama5d2_adc: fix sama7g5 realbits value
  iio: adc: pac1921: Move ACPI_FREE() to cover all branches
  iio: light: apds9306: fix max_scale_nano values
parents a64dcfb4 cc2c3540
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -146,6 +146,7 @@ properties:
    maxItems: 2

  pwm-names:
    minItems: 1
    items:
      - const: convst1
      - const: convst2
+1 −1
Original line number Diff line number Diff line
@@ -1084,7 +1084,7 @@ static int ad7192_update_scan_mode(struct iio_dev *indio_dev, const unsigned lon

	conf &= ~AD7192_CONF_CHAN_MASK;
	for_each_set_bit(i, scan_mask, 8)
		conf |= FIELD_PREP(AD7192_CONF_CHAN_MASK, i);
		conf |= FIELD_PREP(AD7192_CONF_CHAN_MASK, BIT(i));

	ret = ad_sd_write_reg(&st->sd, AD7192_REG_CONF, 3, conf);
	if (ret < 0)
+1 −1
Original line number Diff line number Diff line
@@ -1047,7 +1047,7 @@ static int ad7606_read_avail(struct iio_dev *indio_dev,

		cs = &st->chan_scales[ch];
		*vals = (int *)cs->scale_avail;
		*length = cs->num_scales;
		*length = cs->num_scales * 2;
		*type = IIO_VAL_INT_PLUS_MICRO;

		return IIO_AVAIL_LIST;
+40 −28
Original line number Diff line number Diff line
@@ -329,7 +329,7 @@ static const struct at91_adc_reg_layout sama7g5_layout = {
#define AT91_HWFIFO_MAX_SIZE_STR	"128"
#define AT91_HWFIFO_MAX_SIZE		128

#define AT91_SAMA5D2_CHAN_SINGLE(index, num, addr)			\
#define AT91_SAMA_CHAN_SINGLE(index, num, addr, rbits)			\
	{								\
		.type = IIO_VOLTAGE,					\
		.channel = num,						\
@@ -337,7 +337,7 @@ static const struct at91_adc_reg_layout sama7g5_layout = {
		.scan_index = index,					\
		.scan_type = {						\
			.sign = 'u',					\
			.realbits = 14,					\
			.realbits = rbits,				\
			.storagebits = 16,				\
		},							\
		.info_mask_separate = BIT(IIO_CHAN_INFO_RAW),		\
@@ -350,7 +350,13 @@ static const struct at91_adc_reg_layout sama7g5_layout = {
		.indexed = 1,						\
	}

#define AT91_SAMA5D2_CHAN_DIFF(index, num, num2, addr)			\
#define AT91_SAMA5D2_CHAN_SINGLE(index, num, addr)			\
	AT91_SAMA_CHAN_SINGLE(index, num, addr, 14)

#define AT91_SAMA7G5_CHAN_SINGLE(index, num, addr)			\
	AT91_SAMA_CHAN_SINGLE(index, num, addr, 16)

#define AT91_SAMA_CHAN_DIFF(index, num, num2, addr, rbits)		\
	{								\
		.type = IIO_VOLTAGE,					\
		.differential = 1,					\
@@ -360,7 +366,7 @@ static const struct at91_adc_reg_layout sama7g5_layout = {
		.scan_index = index,					\
		.scan_type = {						\
			.sign = 's',					\
			.realbits = 14,					\
			.realbits = rbits,				\
			.storagebits = 16,				\
		},							\
		.info_mask_separate = BIT(IIO_CHAN_INFO_RAW),		\
@@ -373,6 +379,12 @@ static const struct at91_adc_reg_layout sama7g5_layout = {
		.indexed = 1,						\
	}

#define AT91_SAMA5D2_CHAN_DIFF(index, num, num2, addr)			\
	AT91_SAMA_CHAN_DIFF(index, num, num2, addr, 14)

#define AT91_SAMA7G5_CHAN_DIFF(index, num, num2, addr)			\
	AT91_SAMA_CHAN_DIFF(index, num, num2, addr, 16)

#define AT91_SAMA5D2_CHAN_TOUCH(num, name, mod)				\
	{								\
		.type = IIO_POSITIONRELATIVE,				\
@@ -666,30 +678,30 @@ static const struct iio_chan_spec at91_sama5d2_adc_channels[] = {
};

static const struct iio_chan_spec at91_sama7g5_adc_channels[] = {
	AT91_SAMA5D2_CHAN_SINGLE(0, 0, 0x60),
	AT91_SAMA5D2_CHAN_SINGLE(1, 1, 0x64),
	AT91_SAMA5D2_CHAN_SINGLE(2, 2, 0x68),
	AT91_SAMA5D2_CHAN_SINGLE(3, 3, 0x6c),
	AT91_SAMA5D2_CHAN_SINGLE(4, 4, 0x70),
	AT91_SAMA5D2_CHAN_SINGLE(5, 5, 0x74),
	AT91_SAMA5D2_CHAN_SINGLE(6, 6, 0x78),
	AT91_SAMA5D2_CHAN_SINGLE(7, 7, 0x7c),
	AT91_SAMA5D2_CHAN_SINGLE(8, 8, 0x80),
	AT91_SAMA5D2_CHAN_SINGLE(9, 9, 0x84),
	AT91_SAMA5D2_CHAN_SINGLE(10, 10, 0x88),
	AT91_SAMA5D2_CHAN_SINGLE(11, 11, 0x8c),
	AT91_SAMA5D2_CHAN_SINGLE(12, 12, 0x90),
	AT91_SAMA5D2_CHAN_SINGLE(13, 13, 0x94),
	AT91_SAMA5D2_CHAN_SINGLE(14, 14, 0x98),
	AT91_SAMA5D2_CHAN_SINGLE(15, 15, 0x9c),
	AT91_SAMA5D2_CHAN_DIFF(16, 0, 1, 0x60),
	AT91_SAMA5D2_CHAN_DIFF(17, 2, 3, 0x68),
	AT91_SAMA5D2_CHAN_DIFF(18, 4, 5, 0x70),
	AT91_SAMA5D2_CHAN_DIFF(19, 6, 7, 0x78),
	AT91_SAMA5D2_CHAN_DIFF(20, 8, 9, 0x80),
	AT91_SAMA5D2_CHAN_DIFF(21, 10, 11, 0x88),
	AT91_SAMA5D2_CHAN_DIFF(22, 12, 13, 0x90),
	AT91_SAMA5D2_CHAN_DIFF(23, 14, 15, 0x98),
	AT91_SAMA7G5_CHAN_SINGLE(0, 0, 0x60),
	AT91_SAMA7G5_CHAN_SINGLE(1, 1, 0x64),
	AT91_SAMA7G5_CHAN_SINGLE(2, 2, 0x68),
	AT91_SAMA7G5_CHAN_SINGLE(3, 3, 0x6c),
	AT91_SAMA7G5_CHAN_SINGLE(4, 4, 0x70),
	AT91_SAMA7G5_CHAN_SINGLE(5, 5, 0x74),
	AT91_SAMA7G5_CHAN_SINGLE(6, 6, 0x78),
	AT91_SAMA7G5_CHAN_SINGLE(7, 7, 0x7c),
	AT91_SAMA7G5_CHAN_SINGLE(8, 8, 0x80),
	AT91_SAMA7G5_CHAN_SINGLE(9, 9, 0x84),
	AT91_SAMA7G5_CHAN_SINGLE(10, 10, 0x88),
	AT91_SAMA7G5_CHAN_SINGLE(11, 11, 0x8c),
	AT91_SAMA7G5_CHAN_SINGLE(12, 12, 0x90),
	AT91_SAMA7G5_CHAN_SINGLE(13, 13, 0x94),
	AT91_SAMA7G5_CHAN_SINGLE(14, 14, 0x98),
	AT91_SAMA7G5_CHAN_SINGLE(15, 15, 0x9c),
	AT91_SAMA7G5_CHAN_DIFF(16, 0, 1, 0x60),
	AT91_SAMA7G5_CHAN_DIFF(17, 2, 3, 0x68),
	AT91_SAMA7G5_CHAN_DIFF(18, 4, 5, 0x70),
	AT91_SAMA7G5_CHAN_DIFF(19, 6, 7, 0x78),
	AT91_SAMA7G5_CHAN_DIFF(20, 8, 9, 0x80),
	AT91_SAMA7G5_CHAN_DIFF(21, 10, 11, 0x88),
	AT91_SAMA7G5_CHAN_DIFF(22, 12, 13, 0x90),
	AT91_SAMA7G5_CHAN_DIFF(23, 14, 15, 0x98),
	IIO_CHAN_SOFT_TIMESTAMP(24),
	AT91_SAMA5D2_CHAN_TEMP(AT91_SAMA7G5_ADC_TEMP_CHANNEL, "temp", 0xdc),
};
+1 −1
Original line number Diff line number Diff line
@@ -1198,11 +1198,11 @@ static int pac1921_match_acpi_device(struct iio_dev *indio_dev)

	label = devm_kstrdup(dev, status->package.elements[0].string.pointer,
			     GFP_KERNEL);
	ACPI_FREE(status);
	if (!label)
		return -ENOMEM;

	indio_dev->label = label;
	ACPI_FREE(status);

	return 0;
}
Loading