From: Greg Kroah-Hartman Date: Mon, 5 Jun 2023 14:50:04 +0000 (+0200) Subject: 5.15-stable patches X-Git-Tag: v4.14.317~87 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6876878e72bddab39cad4b9170d08bb4e14ea51b;p=thirdparty%2Fkernel%2Fstable-queue.git 5.15-stable patches added patches: dt-bindings-iio-adc-renesas-rcar-gyroadc-fix-adi-ad7476-compatible-value.patch hid-google-add-jewel-usb-id.patch hid-wacom-avoid-integer-overflow-in-wacom_intuos_inout.patch iio-accel-st_accel-fix-invalid-mount_matrix-on-devices-without-acpi-_ont-method.patch iio-adc-ad7192-change-shorted-channels-to-differential.patch iio-adc-ad_sigma_delta-fix-irq-issue-by-setting-irq_disable_unlazy-flag.patch iio-adc-mxs-lradc-fix-the-order-of-two-cleanup-operations.patch iio-dac-build-ad5758-driver-when-ad5758-is-selected.patch iio-dac-mcp4725-fix-i2c_master_send-return-value-handling.patch iio-imu-inv_icm42600-fix-timestamp-reset.patch iio-light-vcnl4035-fixed-chip-id-check.patch --- diff --git a/queue-5.15/dt-bindings-iio-adc-renesas-rcar-gyroadc-fix-adi-ad7476-compatible-value.patch b/queue-5.15/dt-bindings-iio-adc-renesas-rcar-gyroadc-fix-adi-ad7476-compatible-value.patch new file mode 100644 index 00000000000..68120216757 --- /dev/null +++ b/queue-5.15/dt-bindings-iio-adc-renesas-rcar-gyroadc-fix-adi-ad7476-compatible-value.patch @@ -0,0 +1,36 @@ +From 55720d242052e860b9fde445e302e0425722e7f1 Mon Sep 17 00:00:00 2001 +From: Geert Uytterhoeven +Date: Tue, 9 May 2023 14:34:22 +0200 +Subject: dt-bindings: iio: adc: renesas,rcar-gyroadc: Fix adi,ad7476 compatible value + +From: Geert Uytterhoeven + +commit 55720d242052e860b9fde445e302e0425722e7f1 upstream. + +The conversion to json-schema accidentally dropped the "ad" part prefix +from the compatible value. + +Fixes: 8c41245872e2 ("dt-bindings:iio:adc:renesas,rcar-gyroadc: txt to yaml conversion.") +Signed-off-by: Geert Uytterhoeven +Reviewed-by: Marek Vasut +Reviewed-by: Krzysztof Kozlowski +Reviewed-by: Wolfram Sang +Link: https://lore.kernel.org/r/6b328a3f52657c20759f3a5bb2fe033d47644ba8.1683635404.git.geert+renesas@glider.be +Cc: +Signed-off-by: Jonathan Cameron +Signed-off-by: Greg Kroah-Hartman +--- + Documentation/devicetree/bindings/iio/adc/renesas,rcar-gyroadc.yaml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/Documentation/devicetree/bindings/iio/adc/renesas,rcar-gyroadc.yaml ++++ b/Documentation/devicetree/bindings/iio/adc/renesas,rcar-gyroadc.yaml +@@ -86,7 +86,7 @@ patternProperties: + of the MAX chips to the GyroADC, while MISO line of each Maxim + ADC connects to a shared input pin of the GyroADC. + enum: +- - adi,7476 ++ - adi,ad7476 + - fujitsu,mb88101a + - maxim,max1162 + - maxim,max11100 diff --git a/queue-5.15/hid-google-add-jewel-usb-id.patch b/queue-5.15/hid-google-add-jewel-usb-id.patch new file mode 100644 index 00000000000..7245d943d61 --- /dev/null +++ b/queue-5.15/hid-google-add-jewel-usb-id.patch @@ -0,0 +1,40 @@ +From ed84c4517a5bc536e8572a01dfa11bc22a280d06 Mon Sep 17 00:00:00 2001 +From: Sung-Chi Li +Date: Mon, 24 Apr 2023 10:37:36 +0800 +Subject: HID: google: add jewel USB id + +From: Sung-Chi Li + +commit ed84c4517a5bc536e8572a01dfa11bc22a280d06 upstream. + +Add 1 additional hammer-like device. + +Signed-off-by: Sung-Chi Li +Signed-off-by: Jiri Kosina +Signed-off-by: Greg Kroah-Hartman +--- + drivers/hid/hid-google-hammer.c | 2 ++ + drivers/hid/hid-ids.h | 1 + + 2 files changed, 3 insertions(+) + +--- a/drivers/hid/hid-google-hammer.c ++++ b/drivers/hid/hid-google-hammer.c +@@ -590,6 +590,8 @@ static const struct hid_device_id hammer + { HID_DEVICE(BUS_USB, HID_GROUP_GENERIC, + USB_VENDOR_ID_GOOGLE, USB_DEVICE_ID_GOOGLE_HAMMER) }, + { HID_DEVICE(BUS_USB, HID_GROUP_GENERIC, ++ USB_VENDOR_ID_GOOGLE, USB_DEVICE_ID_GOOGLE_JEWEL) }, ++ { HID_DEVICE(BUS_USB, HID_GROUP_GENERIC, + USB_VENDOR_ID_GOOGLE, USB_DEVICE_ID_GOOGLE_MAGNEMITE) }, + { HID_DEVICE(BUS_USB, HID_GROUP_GENERIC, + USB_VENDOR_ID_GOOGLE, USB_DEVICE_ID_GOOGLE_MASTERBALL) }, +--- a/drivers/hid/hid-ids.h ++++ b/drivers/hid/hid-ids.h +@@ -502,6 +502,7 @@ + #define USB_DEVICE_ID_GOOGLE_MOONBALL 0x5044 + #define USB_DEVICE_ID_GOOGLE_DON 0x5050 + #define USB_DEVICE_ID_GOOGLE_EEL 0x5057 ++#define USB_DEVICE_ID_GOOGLE_JEWEL 0x5061 + + #define USB_VENDOR_ID_GOTOP 0x08f2 + #define USB_DEVICE_ID_SUPER_Q2 0x007f diff --git a/queue-5.15/hid-wacom-avoid-integer-overflow-in-wacom_intuos_inout.patch b/queue-5.15/hid-wacom-avoid-integer-overflow-in-wacom_intuos_inout.patch new file mode 100644 index 00000000000..81272cc0ebe --- /dev/null +++ b/queue-5.15/hid-wacom-avoid-integer-overflow-in-wacom_intuos_inout.patch @@ -0,0 +1,39 @@ +From bd249b91977b768ea02bf84d04625d2690ad2b98 Mon Sep 17 00:00:00 2001 +From: Nikita Zhandarovich +Date: Mon, 17 Apr 2023 09:01:48 -0700 +Subject: HID: wacom: avoid integer overflow in wacom_intuos_inout() + +From: Nikita Zhandarovich + +commit bd249b91977b768ea02bf84d04625d2690ad2b98 upstream. + +If high bit is set to 1 in ((data[3] & 0x0f << 28), after all arithmetic +operations and integer promotions are done, high bits in +wacom->serial[idx] will be filled with 1s as well. +Avoid this, albeit unlikely, issue by specifying left operand's __u64 +type for the right operand. + +Found by Linux Verification Center (linuxtesting.org) with static +analysis tool SVACE. + +Fixes: 3bea733ab212 ("USB: wacom tablet driver reorganization") +Signed-off-by: Nikita Zhandarovich +Reviewed-by: Ping Cheng +Cc: stable@vger.kernel.org +Signed-off-by: Jiri Kosina +Signed-off-by: Greg Kroah-Hartman +--- + drivers/hid/wacom_wac.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/hid/wacom_wac.c ++++ b/drivers/hid/wacom_wac.c +@@ -831,7 +831,7 @@ static int wacom_intuos_inout(struct wac + /* Enter report */ + if ((data[1] & 0xfc) == 0xc0) { + /* serial number of the tool */ +- wacom->serial[idx] = ((data[3] & 0x0f) << 28) + ++ wacom->serial[idx] = ((__u64)(data[3] & 0x0f) << 28) + + (data[4] << 20) + (data[5] << 12) + + (data[6] << 4) + (data[7] >> 4); + diff --git a/queue-5.15/iio-accel-st_accel-fix-invalid-mount_matrix-on-devices-without-acpi-_ont-method.patch b/queue-5.15/iio-accel-st_accel-fix-invalid-mount_matrix-on-devices-without-acpi-_ont-method.patch new file mode 100644 index 00000000000..64b9dbd199e --- /dev/null +++ b/queue-5.15/iio-accel-st_accel-fix-invalid-mount_matrix-on-devices-without-acpi-_ont-method.patch @@ -0,0 +1,53 @@ +From 79b8ded9d9c595db9bd5b2f62f5f738b36de1e22 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Sun, 16 Apr 2023 23:24:09 +0200 +Subject: iio: accel: st_accel: Fix invalid mount_matrix on devices without ACPI _ONT method + +From: Hans de Goede + +commit 79b8ded9d9c595db9bd5b2f62f5f738b36de1e22 upstream. + +When apply_acpi_orientation() fails, st_accel_common_probe() will fall back +to iio_read_mount_matrix(), which checks for a mount-matrix device property +and if that is not set falls back to the identity matrix. + +But when a sensor has no ACPI companion fwnode, or when the ACPI fwnode +does not have a "_ONT" method apply_acpi_orientation() was returning 0, +causing iio_read_mount_matrix() to never get called resulting in an +invalid mount_matrix: + +[root@fedora ~]# cat /sys/bus/iio/devices/iio\:device0/mount_matrix +(null), (null), (null); (null), (null), (null); (null), (null), (null) + +Fix this by making apply_acpi_orientation() always return an error when +it did not set the mount_matrix. + +Fixes: 3d8ad94bb175 ("iio: accel: st_sensors: Support generic mounting matrix") +Signed-off-by: Hans de Goede +Reviewed-by: Linus Walleij +Tested-by: Marius Hoch +Link: https://lore.kernel.org/r/20230416212409.310936-1-hdegoede@redhat.com +Cc: +Signed-off-by: Jonathan Cameron +Signed-off-by: Greg Kroah-Hartman +--- + drivers/iio/accel/st_accel_core.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/iio/accel/st_accel_core.c ++++ b/drivers/iio/accel/st_accel_core.c +@@ -1212,12 +1212,12 @@ static int apply_acpi_orientation(struct + + adev = ACPI_COMPANION(adata->dev); + if (!adev) +- return 0; ++ return -ENXIO; + + /* Read _ONT data, which should be a package of 6 integers. */ + status = acpi_evaluate_object(adev->handle, "_ONT", NULL, &buffer); + if (status == AE_NOT_FOUND) { +- return 0; ++ return -ENXIO; + } else if (ACPI_FAILURE(status)) { + dev_warn(&indio_dev->dev, "failed to execute _ONT: %d\n", + status); diff --git a/queue-5.15/iio-adc-ad7192-change-shorted-channels-to-differential.patch b/queue-5.15/iio-adc-ad7192-change-shorted-channels-to-differential.patch new file mode 100644 index 00000000000..4218ff9cb4a --- /dev/null +++ b/queue-5.15/iio-adc-ad7192-change-shorted-channels-to-differential.patch @@ -0,0 +1,71 @@ +From e55245d115bb9054cb72cdd5dda5660f4484873a Mon Sep 17 00:00:00 2001 +From: Paul Cercueil +Date: Thu, 30 Mar 2023 12:21:00 +0200 +Subject: iio: adc: ad7192: Change "shorted" channels to differential + +From: Paul Cercueil + +commit e55245d115bb9054cb72cdd5dda5660f4484873a upstream. + +The AD7192 provides a specific channel configuration where both negative +and positive inputs are connected to AIN2. This was represented in the +ad7192 driver as a IIO channel with .channel = 2 and .extended_name set +to "shorted". + +The problem with this approach, is that the driver provided two IIO +channels with the identifier .channel = 2; one "shorted" and the other +not. This goes against the IIO ABI, as a channel identifier should be +unique. + +Address this issue by changing "shorted" channels to being differential +instead, with channel 2 vs. itself, as we're actually measuring AIN2 vs. +itself. + +Note that the fix tag is for the commit that moved the driver out of +staging. The bug existed before that, but backporting would become very +complex further down and unlikely to happen. + +Fixes: b581f748cce0 ("staging: iio: adc: ad7192: move out of staging") +Signed-off-by: Paul Cercueil +Co-developed-by: Alisa Roman +Signed-off-by: Alisa Roman +Reviewed-by: Nuno Sa +Link: https://lore.kernel.org/r/20230330102100.17590-1-paul@crapouillou.net +Cc: +Signed-off-by: Jonathan Cameron +Signed-off-by: Greg Kroah-Hartman +--- + drivers/iio/adc/ad7192.c | 8 ++------ + 1 file changed, 2 insertions(+), 6 deletions(-) + +--- a/drivers/iio/adc/ad7192.c ++++ b/drivers/iio/adc/ad7192.c +@@ -835,10 +835,6 @@ static const struct iio_info ad7195_info + __AD719x_CHANNEL(_si, _channel1, -1, _address, NULL, IIO_VOLTAGE, \ + BIT(IIO_CHAN_INFO_SCALE), ad7192_calibsys_ext_info) + +-#define AD719x_SHORTED_CHANNEL(_si, _channel1, _address) \ +- __AD719x_CHANNEL(_si, _channel1, -1, _address, "shorted", IIO_VOLTAGE, \ +- BIT(IIO_CHAN_INFO_SCALE), ad7192_calibsys_ext_info) +- + #define AD719x_TEMP_CHANNEL(_si, _address) \ + __AD719x_CHANNEL(_si, 0, -1, _address, NULL, IIO_TEMP, 0, NULL) + +@@ -846,7 +842,7 @@ static const struct iio_chan_spec ad7192 + AD719x_DIFF_CHANNEL(0, 1, 2, AD7192_CH_AIN1P_AIN2M), + AD719x_DIFF_CHANNEL(1, 3, 4, AD7192_CH_AIN3P_AIN4M), + AD719x_TEMP_CHANNEL(2, AD7192_CH_TEMP), +- AD719x_SHORTED_CHANNEL(3, 2, AD7192_CH_AIN2P_AIN2M), ++ AD719x_DIFF_CHANNEL(3, 2, 2, AD7192_CH_AIN2P_AIN2M), + AD719x_CHANNEL(4, 1, AD7192_CH_AIN1), + AD719x_CHANNEL(5, 2, AD7192_CH_AIN2), + AD719x_CHANNEL(6, 3, AD7192_CH_AIN3), +@@ -860,7 +856,7 @@ static const struct iio_chan_spec ad7193 + AD719x_DIFF_CHANNEL(2, 5, 6, AD7193_CH_AIN5P_AIN6M), + AD719x_DIFF_CHANNEL(3, 7, 8, AD7193_CH_AIN7P_AIN8M), + AD719x_TEMP_CHANNEL(4, AD7193_CH_TEMP), +- AD719x_SHORTED_CHANNEL(5, 2, AD7193_CH_AIN2P_AIN2M), ++ AD719x_DIFF_CHANNEL(5, 2, 2, AD7193_CH_AIN2P_AIN2M), + AD719x_CHANNEL(6, 1, AD7193_CH_AIN1), + AD719x_CHANNEL(7, 2, AD7193_CH_AIN2), + AD719x_CHANNEL(8, 3, AD7193_CH_AIN3), diff --git a/queue-5.15/iio-adc-ad_sigma_delta-fix-irq-issue-by-setting-irq_disable_unlazy-flag.patch b/queue-5.15/iio-adc-ad_sigma_delta-fix-irq-issue-by-setting-irq_disable_unlazy-flag.patch new file mode 100644 index 00000000000..ead1eb1c1fe --- /dev/null +++ b/queue-5.15/iio-adc-ad_sigma_delta-fix-irq-issue-by-setting-irq_disable_unlazy-flag.patch @@ -0,0 +1,49 @@ +From 626d312028bec44209d0ecd5beaa9b1aa8945f7d Mon Sep 17 00:00:00 2001 +From: Masahiro Honda +Date: Thu, 18 May 2023 20:08:16 +0900 +Subject: iio: adc: ad_sigma_delta: Fix IRQ issue by setting IRQ_DISABLE_UNLAZY flag + +From: Masahiro Honda + +commit 626d312028bec44209d0ecd5beaa9b1aa8945f7d upstream. + +The Sigma-Delta ADCs supported by this driver can use SDO as an interrupt +line to indicate the completion of a conversion. However, some devices +cannot properly detect the completion of a conversion by an interrupt. +This is for the reason mentioned in the following commit. + +commit e9849777d0e2 ("genirq: Add flag to force mask in + disable_irq[_nosync]()") + +A read operation is performed by an extra interrupt before the completion +of a conversion. At this time, the value read from the ADC data register +is the same as the previous conversion result. This patch fixes the issue +by setting IRQ_DISABLE_UNLAZY flag. + +Fixes: 0c6ef985a1fd ("iio: adc: ad7791: fix IRQ flags") +Fixes: 1a913270e57a ("iio: adc: ad7793: Fix IRQ flag") +Fixes: e081102f3077 ("iio: adc: ad7780: Fix IRQ flag") +Fixes: 89a86da5cb8e ("iio: adc: ad7192: Add IRQ flag") +Fixes: 79ef91493f54 ("iio: adc: ad7124: Set IRQ type to falling") +Signed-off-by: Masahiro Honda +Link: https://lore.kernel.org/r/20230518110816.248-1-honda@mechatrax.com +Cc: +Signed-off-by: Jonathan Cameron +Signed-off-by: Greg Kroah-Hartman +--- + drivers/iio/adc/ad_sigma_delta.c | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/drivers/iio/adc/ad_sigma_delta.c ++++ b/drivers/iio/adc/ad_sigma_delta.c +@@ -490,6 +490,10 @@ static int devm_ad_sd_probe_trigger(stru + init_completion(&sigma_delta->completion); + + sigma_delta->irq_dis = true; ++ ++ /* the IRQ core clears IRQ_DISABLE_UNLAZY flag when freeing an IRQ */ ++ irq_set_status_flags(sigma_delta->spi->irq, IRQ_DISABLE_UNLAZY); ++ + ret = devm_request_irq(dev, sigma_delta->spi->irq, + ad_sd_data_rdy_trig_poll, + sigma_delta->info->irq_flags | IRQF_NO_AUTOEN, diff --git a/queue-5.15/iio-adc-mxs-lradc-fix-the-order-of-two-cleanup-operations.patch b/queue-5.15/iio-adc-mxs-lradc-fix-the-order-of-two-cleanup-operations.patch new file mode 100644 index 00000000000..51adbd4dd86 --- /dev/null +++ b/queue-5.15/iio-adc-mxs-lradc-fix-the-order-of-two-cleanup-operations.patch @@ -0,0 +1,83 @@ +From 27b2ed5b6d53cd62fc61c3f259ae52f5cac23b66 Mon Sep 17 00:00:00 2001 +From: Jiakai Luo +Date: Sat, 22 Apr 2023 06:34:06 -0700 +Subject: iio: adc: mxs-lradc: fix the order of two cleanup operations + +From: Jiakai Luo + +commit 27b2ed5b6d53cd62fc61c3f259ae52f5cac23b66 upstream. + +Smatch reports: +drivers/iio/adc/mxs-lradc-adc.c:766 mxs_lradc_adc_probe() warn: +missing unwind goto? + +the order of three init operation: +1.mxs_lradc_adc_trigger_init +2.iio_triggered_buffer_setup +3.mxs_lradc_adc_hw_init + +thus, the order of three cleanup operation should be: +1.mxs_lradc_adc_hw_stop +2.iio_triggered_buffer_cleanup +3.mxs_lradc_adc_trigger_remove + +we exchange the order of two cleanup operations, +introducing the following differences: +1.if mxs_lradc_adc_trigger_init fails, returns directly; +2.if trigger_init succeeds but iio_triggered_buffer_setup fails, +goto err_trig and remove the trigger. + +In addition, we also reorder the unwind that goes on in the +remove() callback to match the new ordering. + +Fixes: 6dd112b9f85e ("iio: adc: mxs-lradc: Add support for ADC driver") +Signed-off-by: Jiakai Luo +Reviewed-by: Dongliang Mu +Link: https://lore.kernel.org/r/20230422133407.72908-1-jkluo@hust.edu.cn +Cc: +Signed-off-by: Jonathan Cameron +Signed-off-by: Greg Kroah-Hartman +--- + drivers/iio/adc/mxs-lradc-adc.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +--- a/drivers/iio/adc/mxs-lradc-adc.c ++++ b/drivers/iio/adc/mxs-lradc-adc.c +@@ -757,13 +757,13 @@ static int mxs_lradc_adc_probe(struct pl + + ret = mxs_lradc_adc_trigger_init(iio); + if (ret) +- goto err_trig; ++ return ret; + + ret = iio_triggered_buffer_setup(iio, &iio_pollfunc_store_time, + &mxs_lradc_adc_trigger_handler, + &mxs_lradc_adc_buffer_ops); + if (ret) +- return ret; ++ goto err_trig; + + adc->vref_mv = mxs_lradc_adc_vref_mv[lradc->soc]; + +@@ -801,9 +801,9 @@ static int mxs_lradc_adc_probe(struct pl + + err_dev: + mxs_lradc_adc_hw_stop(adc); +- mxs_lradc_adc_trigger_remove(iio); +-err_trig: + iio_triggered_buffer_cleanup(iio); ++err_trig: ++ mxs_lradc_adc_trigger_remove(iio); + return ret; + } + +@@ -814,8 +814,8 @@ static int mxs_lradc_adc_remove(struct p + + iio_device_unregister(iio); + mxs_lradc_adc_hw_stop(adc); +- mxs_lradc_adc_trigger_remove(iio); + iio_triggered_buffer_cleanup(iio); ++ mxs_lradc_adc_trigger_remove(iio); + + return 0; + } diff --git a/queue-5.15/iio-dac-build-ad5758-driver-when-ad5758-is-selected.patch b/queue-5.15/iio-dac-build-ad5758-driver-when-ad5758-is-selected.patch new file mode 100644 index 00000000000..5ded4a845df --- /dev/null +++ b/queue-5.15/iio-dac-build-ad5758-driver-when-ad5758-is-selected.patch @@ -0,0 +1,39 @@ +From a146eccb68be161ae9eab5f3f68bb0ed7c0fbaa8 Mon Sep 17 00:00:00 2001 +From: Lukas Bulwahn +Date: Mon, 8 May 2023 06:02:08 +0200 +Subject: iio: dac: build ad5758 driver when AD5758 is selected + +From: Lukas Bulwahn + +commit a146eccb68be161ae9eab5f3f68bb0ed7c0fbaa8 upstream. + +Commit 28d1a7ac2a0d ("iio: dac: Add AD5758 support") adds the config AD5758 +and the corresponding driver ad5758.c. In the Makefile, the ad5758 driver +is however included when AD5755 is selected, not when AD5758 is selected. + +Probably, this was simply a mistake that happened by copy-and-paste and +forgetting to adjust the actual line. Surprisingly, no one has ever noticed +that this driver is actually only included when AD5755 is selected and that +the config AD5758 has actually no effect on the build. + +Fixes: 28d1a7ac2a0d ("iio: dac: Add AD5758 support") +Signed-off-by: Lukas Bulwahn +Link: https://lore.kernel.org/r/20230508040208.12033-1-lukas.bulwahn@gmail.com +Cc: +Signed-off-by: Jonathan Cameron +Signed-off-by: Greg Kroah-Hartman +--- + drivers/iio/dac/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/iio/dac/Makefile ++++ b/drivers/iio/dac/Makefile +@@ -16,7 +16,7 @@ obj-$(CONFIG_AD5592R_BASE) += ad5592r-ba + obj-$(CONFIG_AD5592R) += ad5592r.o + obj-$(CONFIG_AD5593R) += ad5593r.o + obj-$(CONFIG_AD5755) += ad5755.o +-obj-$(CONFIG_AD5755) += ad5758.o ++obj-$(CONFIG_AD5758) += ad5758.o + obj-$(CONFIG_AD5761) += ad5761.o + obj-$(CONFIG_AD5764) += ad5764.o + obj-$(CONFIG_AD5766) += ad5766.o diff --git a/queue-5.15/iio-dac-mcp4725-fix-i2c_master_send-return-value-handling.patch b/queue-5.15/iio-dac-mcp4725-fix-i2c_master_send-return-value-handling.patch new file mode 100644 index 00000000000..eeba55d071a --- /dev/null +++ b/queue-5.15/iio-dac-mcp4725-fix-i2c_master_send-return-value-handling.patch @@ -0,0 +1,72 @@ +From 09d3bec7009186bdba77039df01e5834788b3f95 Mon Sep 17 00:00:00 2001 +From: Marek Vasut +Date: Thu, 11 May 2023 02:43:30 +0200 +Subject: iio: dac: mcp4725: Fix i2c_master_send() return value handling +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Marek Vasut + +commit 09d3bec7009186bdba77039df01e5834788b3f95 upstream. + +The i2c_master_send() returns number of sent bytes on success, +or negative on error. The suspend/resume callbacks expect zero +on success and non-zero on error. Adapt the return value of the +i2c_master_send() to the expectation of the suspend and resume +callbacks, including proper validation of the return value. + +Fixes: cf35ad61aca2 ("iio: add mcp4725 I2C DAC driver") +Signed-off-by: Marek Vasut +Reviewed-by: Uwe Kleine-König +Link: https://lore.kernel.org/r/20230511004330.206942-1-marex@denx.de +Cc: +Signed-off-by: Jonathan Cameron +Signed-off-by: Greg Kroah-Hartman +--- + drivers/iio/dac/mcp4725.c | 16 ++++++++++++++-- + 1 file changed, 14 insertions(+), 2 deletions(-) + +--- a/drivers/iio/dac/mcp4725.c ++++ b/drivers/iio/dac/mcp4725.c +@@ -47,12 +47,18 @@ static int __maybe_unused mcp4725_suspen + struct mcp4725_data *data = iio_priv(i2c_get_clientdata( + to_i2c_client(dev))); + u8 outbuf[2]; ++ int ret; + + outbuf[0] = (data->powerdown_mode + 1) << 4; + outbuf[1] = 0; + data->powerdown = true; + +- return i2c_master_send(data->client, outbuf, 2); ++ ret = i2c_master_send(data->client, outbuf, 2); ++ if (ret < 0) ++ return ret; ++ else if (ret != 2) ++ return -EIO; ++ return 0; + } + + static int __maybe_unused mcp4725_resume(struct device *dev) +@@ -60,13 +66,19 @@ static int __maybe_unused mcp4725_resume + struct mcp4725_data *data = iio_priv(i2c_get_clientdata( + to_i2c_client(dev))); + u8 outbuf[2]; ++ int ret; + + /* restore previous DAC value */ + outbuf[0] = (data->dac_value >> 8) & 0xf; + outbuf[1] = data->dac_value & 0xff; + data->powerdown = false; + +- return i2c_master_send(data->client, outbuf, 2); ++ ret = i2c_master_send(data->client, outbuf, 2); ++ if (ret < 0) ++ return ret; ++ else if (ret != 2) ++ return -EIO; ++ return 0; + } + static SIMPLE_DEV_PM_OPS(mcp4725_pm_ops, mcp4725_suspend, mcp4725_resume); + diff --git a/queue-5.15/iio-imu-inv_icm42600-fix-timestamp-reset.patch b/queue-5.15/iio-imu-inv_icm42600-fix-timestamp-reset.patch new file mode 100644 index 00000000000..bbfdb30973b --- /dev/null +++ b/queue-5.15/iio-imu-inv_icm42600-fix-timestamp-reset.patch @@ -0,0 +1,71 @@ +From bbaae0c79ebd49f61ad942a8bf9e12bfc7f821bb Mon Sep 17 00:00:00 2001 +From: Jean-Baptiste Maneyrol +Date: Tue, 9 May 2023 15:22:02 +0000 +Subject: iio: imu: inv_icm42600: fix timestamp reset + +From: Jean-Baptiste Maneyrol + +commit bbaae0c79ebd49f61ad942a8bf9e12bfc7f821bb upstream. + +Timestamp reset is not done in the correct place. It must be done +before enabling buffer. The reason is that interrupt timestamping +is always happening when the chip is on, even if the +corresponding sensor is off. When the sensor restarts, timestamp +is wrong if you don't do a reset first. + +Fixes: ec74ae9fd37c ("iio: imu: inv_icm42600: add accurate timestamping") +Signed-off-by: Jean-Baptiste Maneyrol +Cc: +Link: https://lore.kernel.org/r/20230509152202.245444-1-inv.git-commit@tdk.com +Signed-off-by: Jonathan Cameron +Signed-off-by: Greg Kroah-Hartman +--- + drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +--- a/drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c ++++ b/drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c +@@ -275,9 +275,14 @@ static int inv_icm42600_buffer_preenable + { + struct inv_icm42600_state *st = iio_device_get_drvdata(indio_dev); + struct device *dev = regmap_get_device(st->map); ++ struct inv_icm42600_timestamp *ts = iio_priv(indio_dev); + + pm_runtime_get_sync(dev); + ++ mutex_lock(&st->lock); ++ inv_icm42600_timestamp_reset(ts); ++ mutex_unlock(&st->lock); ++ + return 0; + } + +@@ -375,7 +380,6 @@ static int inv_icm42600_buffer_postdisab + struct device *dev = regmap_get_device(st->map); + unsigned int sensor; + unsigned int *watermark; +- struct inv_icm42600_timestamp *ts; + struct inv_icm42600_sensor_conf conf = INV_ICM42600_SENSOR_CONF_INIT; + unsigned int sleep_temp = 0; + unsigned int sleep_sensor = 0; +@@ -385,11 +389,9 @@ static int inv_icm42600_buffer_postdisab + if (indio_dev == st->indio_gyro) { + sensor = INV_ICM42600_SENSOR_GYRO; + watermark = &st->fifo.watermark.gyro; +- ts = iio_priv(st->indio_gyro); + } else if (indio_dev == st->indio_accel) { + sensor = INV_ICM42600_SENSOR_ACCEL; + watermark = &st->fifo.watermark.accel; +- ts = iio_priv(st->indio_accel); + } else { + return -EINVAL; + } +@@ -417,8 +419,6 @@ static int inv_icm42600_buffer_postdisab + if (!st->fifo.on) + ret = inv_icm42600_set_temp_conf(st, false, &sleep_temp); + +- inv_icm42600_timestamp_reset(ts); +- + out_unlock: + mutex_unlock(&st->lock); + diff --git a/queue-5.15/iio-light-vcnl4035-fixed-chip-id-check.patch b/queue-5.15/iio-light-vcnl4035-fixed-chip-id-check.patch new file mode 100644 index 00000000000..083b5f2e3fe --- /dev/null +++ b/queue-5.15/iio-light-vcnl4035-fixed-chip-id-check.patch @@ -0,0 +1,57 @@ +From a551c26e8e568fad42120843521529241b9bceec Mon Sep 17 00:00:00 2001 +From: Frank Li +Date: Mon, 1 May 2023 10:36:04 -0400 +Subject: iio: light: vcnl4035: fixed chip ID check + +From: Frank Li + +commit a551c26e8e568fad42120843521529241b9bceec upstream. + +VCNL4035 register(0xE) ID_L and ID_M define as: + + ID_L: 0x80 + ID_H: 7:6 (0:0) + 5:4 (0:0) slave address = 0x60 (7-bit) + (0:1) slave address = 0x51 (7-bit) + (1:0) slave address = 0x40 (7-bit) + (1:0) slave address = 0x41 (7-bit) + 3:0 Version code default (0:0:0:0) + +So just check ID_L. + +Fixes: 55707294c4eb ("iio: light: Add support for vishay vcnl4035") +Signed-off-by: Frank Li +Link: https://lore.kernel.org/r/20230501143605.1615549-1-Frank.Li@nxp.com +Cc: +Signed-off-by: Jonathan Cameron +Signed-off-by: Greg Kroah-Hartman +--- + drivers/iio/light/vcnl4035.c | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/drivers/iio/light/vcnl4035.c ++++ b/drivers/iio/light/vcnl4035.c +@@ -8,6 +8,7 @@ + * TODO: Proximity + */ + #include ++#include + #include + #include + #include +@@ -42,6 +43,7 @@ + #define VCNL4035_ALS_PERS_MASK GENMASK(3, 2) + #define VCNL4035_INT_ALS_IF_H_MASK BIT(12) + #define VCNL4035_INT_ALS_IF_L_MASK BIT(13) ++#define VCNL4035_DEV_ID_MASK GENMASK(7, 0) + + /* Default values */ + #define VCNL4035_MODE_ALS_ENABLE BIT(0) +@@ -413,6 +415,7 @@ static int vcnl4035_init(struct vcnl4035 + return ret; + } + ++ id = FIELD_GET(VCNL4035_DEV_ID_MASK, id); + if (id != VCNL4035_DEV_ID_VAL) { + dev_err(&data->client->dev, "Wrong id, got %x, expected %x\n", + id, VCNL4035_DEV_ID_VAL); diff --git a/queue-5.15/series b/queue-5.15/series index 38996f5db1b..8c821129589 100644 --- a/queue-5.15/series +++ b/queue-5.15/series @@ -96,3 +96,14 @@ drm-amdgpu-skip-disabling-fence-driver-src_irqs-when.patch nvme-pci-add-quirk-for-teamgroup-mp33-ssd.patch mailbox-mailbox-test-fix-a-locking-issue-in-mbox_tes.patch media-uvcvideo-don-t-expose-unsupported-formats-to-u.patch +iio-accel-st_accel-fix-invalid-mount_matrix-on-devices-without-acpi-_ont-method.patch +iio-adc-mxs-lradc-fix-the-order-of-two-cleanup-operations.patch +hid-google-add-jewel-usb-id.patch +hid-wacom-avoid-integer-overflow-in-wacom_intuos_inout.patch +iio-imu-inv_icm42600-fix-timestamp-reset.patch +dt-bindings-iio-adc-renesas-rcar-gyroadc-fix-adi-ad7476-compatible-value.patch +iio-light-vcnl4035-fixed-chip-id-check.patch +iio-adc-ad_sigma_delta-fix-irq-issue-by-setting-irq_disable_unlazy-flag.patch +iio-dac-mcp4725-fix-i2c_master_send-return-value-handling.patch +iio-adc-ad7192-change-shorted-channels-to-differential.patch +iio-dac-build-ad5758-driver-when-ad5758-is-selected.patch