* [PATCH v6 0/2] Add support for AS7343 multi-spectral sensor
@ 2026-10-13 11:56 Chang Yu
2026-10-13 11:56 ` [PATCH v6 1/2] dt-bindings: iio: light: add as7343 Chang Yu
2026-10-13 11:56 ` [PATCH v6 2/2] iio: light: add AS7343 multi-spectral sensor driver Chang Yu
0 siblings, 2 replies; 9+ messages in thread
From: Chang Yu @ 2026-10-13 11:56 UTC (permalink / raw)
To: Jonathan Cameron
Cc: Chang Yu, David Lechner, Nuno Sá, Andy Shevchenko,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Joshua Crofts,
Shi Hao, Jose A. Perez de Azpillaga, linux-iio, devicetree,
linux-kernel
This series adds initial support for the AMS AS7343 14-channel
multi-spectral sensor.
The sensor has 14 optical channels (11 visible + NIR + clear +
flicker) in total. This initial driver supports reading raw counts
from all 12 spectral channels (11 visible + NIR) via sysfs and basic
power management.
Not yet supported:
- Configurable integration time and gain
- Interrupt support
- Clear (VIS) channel and flicker detection
Patch 1 adds device tree bindings.
Patch 2 adds the driver.
Testing was performed on a Raspberry Pi 4.
Datasheet: https://look.ams-osram.com/m/5f2d27fff9a874d2/original/AS7343-14-Channel-Multi-Spectral-Sensor.pdf
Changes in v6:
- Add a ref to leds/common.yaml for the LDR pin in dt bindings.
- Convert ATIME and ASTEP range checks to runtime checks.
Changes in v5:
- Remove the GPIO pin from dt bindings.
- Add autosuspend.
- Start measurements before setting up runtime PM.
Changes in v4:
- Fix led-max-microamp property in dt bindings.
- Use REGCACHE_MAPLE and add volatile table.
- Use PM_RUNTIME_ACQUIRE* when resuming.
Changes in v3:
- Fix gpio description and example in dt.
- Only start measurements after suspend action has been registered.
- Add a mutex and pm_runtime_resume_and_get before reading measurements.
Changes in v2:
- Add the LDR, the interrupt pin, and the GPIO pin to the dt bindings.
- Adjust the default gain to x256 and integration time to 50.1ms as
recommended by the datasheet.
- Use read_label instead of .extend
- Remove all unused scan_index related constants.
Chang Yu (2):
dt-bindings: iio: light: add as7343
iio: light: add AS7343 multi-spectral sensor driver
.../bindings/iio/light/ams,as7343.yaml | 66 +++
MAINTAINERS | 7 +
drivers/iio/light/Kconfig | 11 +
drivers/iio/light/Makefile | 1 +
drivers/iio/light/as7343.c | 464 ++++++++++++++++++
5 files changed, 549 insertions(+)
create mode 100644 Documentation/devicetree/bindings/iio/light/ams,as7343.yaml
create mode 100644 drivers/iio/light/as7343.c
--
2.56.0
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v6 1/2] dt-bindings: iio: light: add as7343
2026-10-13 11:56 [PATCH v6 0/2] Add support for AS7343 multi-spectral sensor Chang Yu
@ 2026-10-13 11:56 ` Chang Yu
2026-10-13 12:36 ` Joshua Crofts
2026-10-13 21:23 ` Jose A. Perez de Azpillaga
2026-10-13 11:56 ` [PATCH v6 2/2] iio: light: add AS7343 multi-spectral sensor driver Chang Yu
1 sibling, 2 replies; 9+ messages in thread
From: Chang Yu @ 2026-10-13 11:56 UTC (permalink / raw)
To: Jonathan Cameron
Cc: Chang Yu, David Lechner, Nuno Sá, Andy Shevchenko,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Joshua Crofts,
Shi Hao, Jose A. Perez de Azpillaga, linux-iio, devicetree,
linux-kernel
Add binding for AMS AS7343 which is a 14-channel multi-spectral sensor
with i2c address of 0x39.
The GPIO pin is not described because the datasheet does not document
how to use it for hardware synchronization at all. The GPIO register
also has no mode-select bit to isolate the pin from the chip's
internal control logic. Exposing it as a generic GPIO could result
in kernel writes being overwritten by internal logic.
Datasheet: https://look.ams-osram.com/m/5f2d27fff9a874d2/original/AS7343-14-Channel-Multi-Spectral-Sensor.pdf
Signed-off-by: Chang Yu <marcus.yu.56@gmail.com>
---
Changes in v6:
- Add a ref to leds/common.yaml for the LDR pin.
Changes in v5:
- Remove the GPIO pin.
Changes in v4:
- Fix led-max-microamp property name.
Changes in v3:
- Add missing include for gpio.
- Expand GPIO descrption to include hardware synchronization.
- Use led-max-microamp instead of led-current-microamp for the LDR pin.
Changes in v2:
- Add the LDR, the interrupt pin, and the GPIO pin to the bindings.
- Fix node name and unit address mismatch.
- Include MAINTAINERS changes.
.../bindings/iio/light/ams,as7343.yaml | 66 +++++++++++++++++++
MAINTAINERS | 6 ++
2 files changed, 72 insertions(+)
create mode 100644 Documentation/devicetree/bindings/iio/light/ams,as7343.yaml
diff --git a/Documentation/devicetree/bindings/iio/light/ams,as7343.yaml b/Documentation/devicetree/bindings/iio/light/ams,as7343.yaml
new file mode 100644
index 000000000000..7fb10b0d4843
--- /dev/null
+++ b/Documentation/devicetree/bindings/iio/light/ams,as7343.yaml
@@ -0,0 +1,66 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/iio/light/ams,as7343.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: AMS AS7343 14-Channel Multi-Spectral Sensor
+
+maintainers:
+ - Chang Yu <marcus.yu.56@gmail.com>
+
+description: |
+ The AMS AS7343 is a 14-channel multi-spectral sensor with i2c address of 0x39.
+ https://look.ams-osram.com/m/5f2d27fff9a874d2/original/AS7343-14-Channel-Multi-Spectral-Sensor.pdf
+
+properties:
+ compatible:
+ enum:
+ - ams,as7343
+
+ reg:
+ description:
+ I2C address of the device (0x39).
+ maxItems: 1
+
+ interrupts:
+ description:
+ Open drain output active low interrupt pin.
+ maxItems: 1
+
+ vdd-supply: true
+
+ led-max-microamp:
+ description:
+ The driver current for the external LED connected to the LDR pin.
+ minimum: 4000
+ maximum: 258000
+ multipleOf: 2000
+ default: 12000
+
+required:
+ - compatible
+ - reg
+ - vdd-supply
+
+additionalProperties: false
+
+allOf:
+ - $ref: /schemas/leds/common.yaml#
+
+examples:
+ - |
+ #include <dt-bindings/interrupt-controller/irq.h>
+
+ i2c {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ multispectral-sensor@39 {
+ compatible = "ams,as7343";
+ reg = <0x39>;
+ interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
+ vdd-supply = <&vdd_regulator>;
+ led-max-microamp = <14000>;
+ };
+ };
diff --git a/MAINTAINERS b/MAINTAINERS
index 04fa5322d9f7..8cf4e1635053 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1430,6 +1430,12 @@ S: Maintained
F: Documentation/devicetree/bindings/iio/light/ams,as73211.yaml
F: drivers/iio/light/as73211.c
+AMS AS7343 DRIVER
+M: Chang Yu <marcus.yu.56@gmail.com>
+L: linux-iio@vger.kernel.org
+S: Maintained
+F: Documentation/devicetree/bindings/iio/light/ams,as7343.yaml
+
AMT (Automatic Multicast Tunneling)
M: Taehee Yoo <ap420073@gmail.com>
L: netdev@vger.kernel.org
--
2.56.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v6 2/2] iio: light: add AS7343 multi-spectral sensor driver
2026-10-13 11:56 [PATCH v6 0/2] Add support for AS7343 multi-spectral sensor Chang Yu
2026-10-13 11:56 ` [PATCH v6 1/2] dt-bindings: iio: light: add as7343 Chang Yu
@ 2026-10-13 11:56 ` Chang Yu
2026-10-13 12:35 ` Joshua Crofts
2026-10-13 16:27 ` Andy Shevchenko
1 sibling, 2 replies; 9+ messages in thread
From: Chang Yu @ 2026-10-13 11:56 UTC (permalink / raw)
To: Jonathan Cameron
Cc: Chang Yu, David Lechner, Nuno Sá, Andy Shevchenko,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Joshua Crofts,
Shi Hao, Jose A. Perez de Azpillaga, linux-iio, devicetree,
linux-kernel
Add a driver for the AMS AS7343 14-channel multi-spectral sensor.
The AS7343 is a 14-channel spectral sensor featuring 11 visible
channels, 1 near-infrared channel, 1 clear channel (VIS), and 1
flicker detection channel.
The driver exposes 12 spectral channels (11 visible light and 1
near-infrared) via sysfs. Runtime PM is implemented to stop
measurements when the device is suspended or torn down. Power is
never cut (PON=1 always) to preserve register values.
Future patches will add configurable gain and integration time,
interrupt support, buffered reads, VIS channel, and flicker
detection.
Datasheet: https://look.ams-osram.com/m/5f2d27fff9a874d2/original/AS7343-14-Channel-Multi-Spectral-Sensor.pdf
Signed-off-by: Chang Yu <marcus.yu.56@gmail.com>
---
Changes in v6:
- Convert ASTEP and ATIME range checks to runtime checks.
- Move adding suspend action to before setting autosuspend delay.
Changes in v5:
- Add autosuspend support.
- Start measurements before configuring runtime PM.
- Add functions for computing ASTEP and ATIME.
- Sort registers by addresses.
Changes in v4:
- Use REGCACHE_MAPLE and add volatile register table.
- Use PM_RUNTIME_ACQUIRE* when resuming.
- Use a static array for labels.
- Various code style fixes.
Changes in v3:
- Hold a mutex before reading measurements.
- Add pm_runtime_resume_and_get before reading measurements.
- Only start measurements after suspend action has been successfully
registered
- Check the return value of regmap_read when verifying device ID.
Changes in v2:
- Adjust the default gain to x256 and integration time to 50.1ms as
recommended by the datasheet.
- Use read_label instead of .extend
- Remove all unused scan_index related constants.
- Add missing calls to pm_runtime_* methods in probe.
- Fix various code style issues
MAINTAINERS | 1 +
drivers/iio/light/Kconfig | 11 +
drivers/iio/light/Makefile | 1 +
drivers/iio/light/as7343.c | 464 +++++++++++++++++++++++++++++++++++++
4 files changed, 477 insertions(+)
create mode 100644 drivers/iio/light/as7343.c
diff --git a/MAINTAINERS b/MAINTAINERS
index 8cf4e1635053..236102b3c28e 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1435,6 +1435,7 @@ M: Chang Yu <marcus.yu.56@gmail.com>
L: linux-iio@vger.kernel.org
S: Maintained
F: Documentation/devicetree/bindings/iio/light/ams,as7343.yaml
+F: drivers/iio/light/as7343.c
AMT (Automatic Multicast Tunneling)
M: Taehee Yoo <ap420073@gmail.com>
diff --git a/drivers/iio/light/Kconfig b/drivers/iio/light/Kconfig
index ef36824f312f..edbeeba9d873 100644
--- a/drivers/iio/light/Kconfig
+++ b/drivers/iio/light/Kconfig
@@ -149,6 +149,17 @@ config AS73211
This driver can also be built as a module. If so, the module
will be called as73211.
+config AS7343
+ tristate "AMS AS7343 14-Channel Multi-Spectral Sensor"
+ depends on I2C
+ select REGMAP_I2C
+ help
+ Say Y here to build support for the AMS AS7343 14-channel
+ multi-spectral sensor.
+
+ To compile this driver as a module, choose M here: the module will
+ be called as7343.
+
config BH1745
tristate "ROHM BH1745 colour sensor"
depends on I2C
diff --git a/drivers/iio/light/Makefile b/drivers/iio/light/Makefile
index 64e354c49ed8..5d0d33802519 100644
--- a/drivers/iio/light/Makefile
+++ b/drivers/iio/light/Makefile
@@ -16,6 +16,7 @@ obj-$(CONFIG_APDS9306) += apds9306.o
obj-$(CONFIG_APDS9960) += apds9960.o
obj-$(CONFIG_APDS9999) += apds9999.o
obj-$(CONFIG_AS73211) += as73211.o
+obj-$(CONFIG_AS7343) += as7343.o
obj-$(CONFIG_BH1745) += bh1745.o
obj-$(CONFIG_BH1750) += bh1750.o
obj-$(CONFIG_BH1780) += bh1780.o
diff --git a/drivers/iio/light/as7343.c b/drivers/iio/light/as7343.c
new file mode 100644
index 000000000000..52e46797ffcb
--- /dev/null
+++ b/drivers/iio/light/as7343.c
@@ -0,0 +1,464 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Support for AMS AS7343 14-channel multi-spectral sensor.
+ * (7-bit I2C slave address 0x39)
+ *
+ * Based on the work of:
+ * Christian Eggers <ceggers@arri.de> (AS73211 driver)
+ *
+ * Copyright (c) 2026 Chang Yu <marcus.yu.56@gmail.com>
+ *
+ * Datasheet:
+ * https://look.ams-osram.com/m/5f2d27fff9a874d2/original/AS7343-14-Channel-Multi-Spectral-Sensor.pdf
+ *
+ * TODO:
+ * - Support for configurable gain and integration time
+ * - Interrupt support
+ * - Add support for reading the VIS channel
+ * - Flicker detection
+ */
+
+#include <linux/array_size.h>
+#include <linux/bitfield.h>
+#include <linux/bits.h>
+#include <linux/cleanup.h>
+#include <linux/delay.h>
+#include <linux/dev_printk.h>
+#include <linux/err.h>
+#include <linux/i2c.h>
+#include <linux/module.h>
+#include <linux/mutex.h>
+#include <linux/pm_runtime.h>
+#include <linux/regmap.h>
+#include <linux/regulator/consumer.h>
+#include <linux/sysfs.h>
+#include <linux/types.h>
+
+#include <asm/byteorder.h>
+
+#include <linux/iio/iio.h>
+
+#define AS7343_ID_REG 0x5a
+
+#define AS7343_ENABLE_REG 0x80
+#define AS7343_ENABLE_PON BIT(0)
+#define AS7343_ENABLE_SP_EN BIT(1)
+
+#define AS7343_ATIME_REG 0x81
+#define AS7343_STATUS2_REG 0x90
+#define AS7343_STATUS3_REG 0x91
+#define AS7343_STATUS_REG 0x93
+#define AS7343_ASTATUS_REG 0x94
+
+#define AS7343_DATA_FZ_REG 0x95
+#define AS7343_DATA_FY_REG 0x97
+#define AS7343_DATA_FXL_REG 0x99
+#define AS7343_DATA_NIR_REG 0x9b
+#define AS7343_DATA_F2_REG 0xa1
+#define AS7343_DATA_F3_REG 0xa3
+#define AS7343_DATA_F4_REG 0xa5
+#define AS7343_DATA_F6_REG 0xa7
+#define AS7343_DATA_F1_REG 0xad
+#define AS7343_DATA_F7_REG 0xaf
+#define AS7343_DATA_F8_REG 0xb1
+#define AS7343_DATA_F5_REG 0xb3
+#define AS7343_DATA_FD_L_REG 0xb7
+#define AS7343_DATA_FD_H_REG 0xb8
+
+#define AS7343_STATUS5_REG 0xbb
+#define AS7343_STATUS4_REG 0xbc
+
+#define AS7343_CFG0_REG 0xbf
+#define AS7343_CFG0_REG_BANK BIT(4)
+
+#define AS7343_CFG1_REG 0xc6
+#define AS7343_CFG1_AGAIN GENMASK(4, 0)
+#define AS7343_CFG1_AGAIN_X0_5 0
+#define AS7343_CFG1_AGAIN_X1 1
+#define AS7343_CFG1_AGAIN_X2 2
+#define AS7343_CFG1_AGAIN_X4 3
+#define AS7343_CFG1_AGAIN_X8 4
+#define AS7343_CFG1_AGAIN_X16 5
+#define AS7343_CFG1_AGAIN_X32 6
+#define AS7343_CFG1_AGAIN_X64 7
+#define AS7343_CFG1_AGAIN_X128 8
+#define AS7343_CFG1_AGAIN_X256 9
+#define AS7343_CFG1_AGAIN_X512 10
+#define AS7343_CFG1_AGAIN_X1024 11
+#define AS7343_CFG1_AGAIN_X2048 12
+
+#define AS7343_ASTEP_REG 0xd4
+
+#define AS7343_CFG20_REG 0xd6
+#define AS7343_CFG20_AUTO_SMUX GENMASK(6, 5)
+#define AS7343_CFG20_AUTO_SMUX_READOUT_ALL 3 /* all-channel readout */
+
+#define AS7343_FD_STATUS_REG 0xe3
+#define AS7343_CONTROL_REG 0xfa
+#define AS7343_FIFO_LVL_REG 0xfd
+#define AS7343_FDATA_L_REG 0xfe
+#define AS7343_FDATA_H_REG 0xff
+
+/* AS7343 channel indices. MUST match data register order above. */
+#define AS7343_CHAN_IDX_FZ 0
+#define AS7343_CHAN_IDX_FY 1
+#define AS7343_CHAN_IDX_FXL 2
+#define AS7343_CHAN_IDX_NIR 3
+#define AS7343_CHAN_IDX_F2 4
+#define AS7343_CHAN_IDX_F3 5
+#define AS7343_CHAN_IDX_F4 6
+#define AS7343_CHAN_IDX_F6 7
+#define AS7343_CHAN_IDX_F1 8
+#define AS7343_CHAN_IDX_F7 9
+#define AS7343_CHAN_IDX_F8 10
+#define AS7343_CHAN_IDX_F5 11
+
+#define AS7343_CHAN(_chan) \
+ { \
+ .type = IIO_INTENSITY, \
+ .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), \
+ .address = AS7343_DATA_##_chan##_REG, \
+ .indexed = 1, \
+ .channel = AS7343_CHAN_IDX_##_chan, \
+ }
+
+static const struct iio_chan_spec as7343_channels[] = {
+ AS7343_CHAN(FZ), AS7343_CHAN(FY), AS7343_CHAN(FXL), AS7343_CHAN(NIR),
+ AS7343_CHAN(F2), AS7343_CHAN(F3), AS7343_CHAN(F4), AS7343_CHAN(F6),
+ AS7343_CHAN(F1), AS7343_CHAN(F7), AS7343_CHAN(F8), AS7343_CHAN(F5),
+};
+
+/*
+ * Integration time is calculated as (ATIME + 1) * ((ASTEP + 1) * 2.78us).
+ * ATIME must be between 0 and 255, inclusive
+ * ASTEP must be between 0 and 65534, inclusive
+ */
+static inline int as7343_atime_steps(unsigned int step, u8 *atime)
+{
+ if (step < 1 || step > 256)
+ return -EINVAL;
+
+ *atime = step - 1;
+ return 0;
+}
+
+static inline int as7343_astep_x2780ns(unsigned int n, __le16 *astep)
+{
+ u16 val;
+
+ if (n < 1 || n > 65535)
+ return -EINVAL;
+
+ val = n - 1;
+ *astep = cpu_to_le16(val);
+ return 0;
+}
+
+struct as7343_data {
+ struct regmap *regmap;
+ /* Ensures reads don't stomp on each other */
+ struct mutex mutex;
+};
+
+static int as7343_read_raw(struct iio_dev *indio_dev,
+ struct iio_chan_spec const *chan,
+ int *val, int *val2, long mask)
+{
+ struct as7343_data *data = iio_priv(indio_dev);
+ struct regmap *map = data->regmap;
+ struct device *dev = regmap_get_device(map);
+ unsigned int unused;
+ __le16 result;
+ int ret;
+
+ PM_RUNTIME_ACQUIRE_AUTOSUSPEND(dev, pm);
+ ret = PM_RUNTIME_ACQUIRE_ERR(&pm);
+ if (ret)
+ return ret;
+
+ switch (mask) {
+ case IIO_CHAN_INFO_RAW: {
+ /* Wait until integration time passes for all 3 cycles. */
+ msleep(160);
+
+ /*
+ * Reading ASTATUS latches all data registers to this read.
+ * We don't care about the returned saturation/gain status for
+ * now.
+ */
+ guard(mutex)(&data->mutex);
+
+ ret = regmap_read(map, AS7343_ASTATUS_REG, &unused);
+ if (ret)
+ return ret;
+
+ ret = regmap_bulk_read(map, chan->address,
+ &result, sizeof(result));
+ if (ret)
+ return ret;
+
+ *val = le16_to_cpu(result);
+ return IIO_VAL_INT;
+ }
+
+ default:
+ return -EINVAL;
+ }
+}
+
+/*
+ * Channel names and wavelength ranges as defined in the datasheet
+ * (Figure 7, "AS7343 Optical Channel Summary"). Values are the
+ * minimum and maximum peak wavelength in nanometers.
+ *
+ * F1: 395-415 nm
+ * F2: 415-435 nm
+ * FZ: 440-460 nm
+ * F3: 465-485 nm
+ * F4: 505-525 nm
+ * FY: 545-565 nm
+ * F5: 540-560 nm
+ * FXL: 590-610 nm
+ * F6: 630-650 nm
+ * F7: 680-700 nm
+ * F8: 735-755 nm
+ * NIR: 845-865 nm
+ */
+static const char * const as7343_channel_labels[] = {
+ [AS7343_CHAN_IDX_F1] = "F1: 395-415 nm",
+ [AS7343_CHAN_IDX_F2] = "F2: 415-435 nm",
+ [AS7343_CHAN_IDX_FZ] = "FZ: 440-460 nm",
+ [AS7343_CHAN_IDX_F3] = "F3: 465-485 nm",
+ [AS7343_CHAN_IDX_F4] = "F4: 505-525 nm",
+ [AS7343_CHAN_IDX_FY] = "FY: 545-565 nm",
+ [AS7343_CHAN_IDX_F5] = "F5: 540-560 nm",
+ [AS7343_CHAN_IDX_FXL] = "FXL: 590-610 nm",
+ [AS7343_CHAN_IDX_F6] = "F6: 630-650 nm",
+ [AS7343_CHAN_IDX_F7] = "F7: 680-700 nm",
+ [AS7343_CHAN_IDX_F8] = "F8: 735-755 nm",
+ [AS7343_CHAN_IDX_NIR] = "NIR: 845-865 nm",
+};
+
+static int as7343_read_label(struct iio_dev *indio_dev,
+ struct iio_chan_spec const *chan, char *label)
+{
+ int channel;
+
+ channel = chan->channel;
+ if (channel < 0 || channel >= ARRAY_SIZE(as7343_channel_labels))
+ return -EINVAL;
+
+ return sysfs_emit(label, "%s\n", as7343_channel_labels[channel]);
+}
+
+static const struct iio_info as7343_info = {
+ .read_raw = as7343_read_raw,
+ .read_label = as7343_read_label,
+};
+
+static const struct regmap_range as7343_volatile_ranges[] = {
+ regmap_reg_range(AS7343_ENABLE_REG, AS7343_ENABLE_REG),
+ regmap_reg_range(AS7343_STATUS2_REG, AS7343_DATA_FD_H_REG),
+ regmap_reg_range(AS7343_STATUS5_REG, AS7343_STATUS4_REG),
+ regmap_reg_range(AS7343_FD_STATUS_REG, AS7343_FD_STATUS_REG),
+ regmap_reg_range(AS7343_CONTROL_REG, AS7343_CONTROL_REG),
+ regmap_reg_range(AS7343_FIFO_LVL_REG, AS7343_FDATA_H_REG),
+};
+
+static const struct regmap_access_table as7343_volatile_table = {
+ .yes_ranges = as7343_volatile_ranges,
+ .n_yes_ranges = ARRAY_SIZE(as7343_volatile_ranges),
+};
+
+static const struct regmap_config as7343_regmap_config = {
+ .name = "as7343",
+ .reg_bits = 8,
+ .val_bits = 8,
+ .max_register = AS7343_FDATA_H_REG,
+ .reg_format_endian = REGMAP_ENDIAN_LITTLE,
+ .val_format_endian = REGMAP_ENDIAN_LITTLE,
+ .cache_type = REGCACHE_MAPLE,
+ .volatile_table = &as7343_volatile_table,
+};
+
+static int as7343_setup_device(struct device *dev, struct as7343_data *data)
+{
+ struct regmap *map = data->regmap;
+ unsigned int val;
+ __le16 astep;
+ u8 atime;
+ int ret;
+
+ /* Need to set REG_BANK to 0 before we can set PON */
+ ret = regmap_update_bits(map, AS7343_CFG0_REG, AS7343_CFG0_REG_BANK,
+ FIELD_PREP(AS7343_CFG0_REG_BANK, 0));
+ if (ret)
+ return ret;
+
+ /* Set PON and enter IDLE state */
+ ret = regmap_set_bits(map, AS7343_ENABLE_REG, AS7343_ENABLE_PON);
+ if (ret)
+ return ret;
+
+ /* Need to set REG_BANK to 1 before we can access ID */
+ ret = regmap_update_bits(map, AS7343_CFG0_REG, AS7343_CFG0_REG_BANK,
+ FIELD_PREP(AS7343_CFG0_REG_BANK, 1));
+ if (ret)
+ return ret;
+
+ ret = regmap_read(map, AS7343_ID_REG, &val);
+ if (ret)
+ return ret;
+
+ if (val != 0x81)
+ dev_info(dev, "Unknown device ID: %x\n", val);
+
+ ret = regmap_update_bits(map, AS7343_CFG0_REG, AS7343_CFG0_REG_BANK,
+ FIELD_PREP(AS7343_CFG0_REG_BANK, 0));
+ if (ret)
+ return ret;
+
+ /* Configure the SMUX to readout all channels */
+ ret = regmap_update_bits(map, AS7343_CFG20_REG, AS7343_CFG20_AUTO_SMUX,
+ FIELD_PREP(AS7343_CFG20_AUTO_SMUX,
+ AS7343_CFG20_AUTO_SMUX_READOUT_ALL));
+ if (ret)
+ return ret;
+
+ /*
+ * Setting a 600 * 2.78us * 30 = 50ms integration time as the default
+ * for now.
+ */
+ ret = as7343_astep_x2780ns(600, &astep);
+ if (ret)
+ return ret;
+
+ ret = regmap_bulk_write(map, AS7343_ASTEP_REG, &astep, sizeof(astep));
+ if (ret)
+ return ret;
+
+ ret = as7343_atime_steps(30, &atime);
+ if (ret)
+ return ret;
+
+ ret = regmap_write(map, AS7343_ATIME_REG, atime);
+ if (ret)
+ return ret;
+
+ return regmap_update_bits(map, AS7343_CFG1_REG, AS7343_CFG1_AGAIN,
+ FIELD_PREP(AS7343_CFG1_AGAIN,
+ AS7343_CFG1_AGAIN_X256));
+}
+
+static int as7343_suspend(struct device *dev)
+{
+ struct iio_dev *indio_dev = dev_get_drvdata(dev);
+ struct as7343_data *data = iio_priv(indio_dev);
+ struct regmap *map = data->regmap;
+
+ return regmap_clear_bits(map, AS7343_ENABLE_REG, AS7343_ENABLE_SP_EN);
+}
+
+static int as7343_resume(struct device *dev)
+{
+ struct iio_dev *indio_dev = dev_get_drvdata(dev);
+ struct as7343_data *data = iio_priv(indio_dev);
+ struct regmap *map = data->regmap;
+
+ return regmap_set_bits(map, AS7343_ENABLE_REG, AS7343_ENABLE_SP_EN);
+}
+
+static void as7343_suspend_action(void *dev)
+{
+ as7343_suspend(dev);
+}
+
+static int as7343_probe(struct i2c_client *client)
+{
+ struct device *dev = &client->dev;
+ struct iio_dev *indio_dev;
+ struct as7343_data *data;
+ struct regmap *regmap;
+ int ret;
+
+ indio_dev = devm_iio_device_alloc(dev, sizeof(*data));
+ if (!indio_dev)
+ return -ENOMEM;
+
+ i2c_set_clientdata(client, indio_dev);
+
+ regmap = devm_regmap_init_i2c(client, &as7343_regmap_config);
+ if (IS_ERR(regmap))
+ return PTR_ERR(regmap);
+
+ data = iio_priv(indio_dev);
+ data->regmap = regmap;
+
+ ret = devm_mutex_init(dev, &data->mutex);
+ if (ret)
+ return ret;
+
+ indio_dev->name = "as7343";
+ indio_dev->info = &as7343_info;
+ indio_dev->channels = as7343_channels;
+ indio_dev->num_channels = ARRAY_SIZE(as7343_channels);
+ indio_dev->modes = INDIO_DIRECT_MODE;
+
+ ret = devm_regulator_get_enable(dev, "vdd");
+ if (ret)
+ return ret;
+
+ ret = as7343_setup_device(dev, data);
+ if (ret)
+ return ret;
+
+ /* Enter ACTIVE statet and start measurements */
+ ret = regmap_set_bits(regmap, AS7343_ENABLE_REG, AS7343_ENABLE_SP_EN);
+ if (ret)
+ return ret;
+
+ ret = devm_add_action_or_reset(dev, as7343_suspend_action, dev);
+ if (ret)
+ return dev_err_probe(dev, ret,
+ "Failed to add suspend action\n");
+
+ pm_runtime_set_autosuspend_delay(dev, 3000);
+ pm_runtime_use_autosuspend(dev);
+
+ ret = devm_pm_runtime_set_active_enabled(dev);
+ if (ret)
+ return dev_err_probe(dev, ret,
+ "Failed to activate PM runtime\n");
+
+ return devm_iio_device_register(dev, indio_dev);
+}
+
+static DEFINE_RUNTIME_DEV_PM_OPS(as7343_pm_ops,
+ as7343_suspend, as7343_resume, NULL);
+
+static const struct of_device_id as7343_of_match[] = {
+ { .compatible = "ams,as7343" },
+ { }
+};
+MODULE_DEVICE_TABLE(of, as7343_of_match);
+
+static const struct i2c_device_id as7343_id[] = {
+ { .name = "as7343" },
+ { }
+};
+MODULE_DEVICE_TABLE(i2c, as7343_id);
+
+static struct i2c_driver as7343_driver = {
+ .driver = {
+ .name = "as7343",
+ .of_match_table = as7343_of_match,
+ .pm = pm_ptr(&as7343_pm_ops),
+ },
+ .probe = as7343_probe,
+ .id_table = as7343_id,
+};
+module_i2c_driver(as7343_driver);
+
+MODULE_AUTHOR("Chang Yu <marcus.yu.56@gmail.com>");
+MODULE_DESCRIPTION("AS7343 14 Channel Multi-Spectral Sensor driver");
+MODULE_LICENSE("GPL");
--
2.56.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v6 2/2] iio: light: add AS7343 multi-spectral sensor driver
2026-10-13 11:56 ` [PATCH v6 2/2] iio: light: add AS7343 multi-spectral sensor driver Chang Yu
@ 2026-10-13 12:35 ` Joshua Crofts
2026-10-13 16:28 ` Andy Shevchenko
2026-10-13 16:27 ` Andy Shevchenko
1 sibling, 1 reply; 9+ messages in thread
From: Joshua Crofts @ 2026-10-13 12:35 UTC (permalink / raw)
To: Chang Yu
Cc: Jonathan Cameron, David Lechner, Nuno Sá, Andy Shevchenko,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Shi Hao,
Jose A. Perez de Azpillaga, linux-iio, devicetree, linux-kernel
On Tue, 13 Oct 2026 19:56:39 +0800
Chang Yu <marcus.yu.56@gmail.com> wrote:
> Add a driver for the AMS AS7343 14-channel multi-spectral sensor.
>
> The AS7343 is a 14-channel spectral sensor featuring 11 visible
> channels, 1 near-infrared channel, 1 clear channel (VIS), and 1
> flicker detection channel.
>
> The driver exposes 12 spectral channels (11 visible light and 1
> near-infrared) via sysfs. Runtime PM is implemented to stop
> measurements when the device is suspended or torn down. Power is
> never cut (PON=1 always) to preserve register values.
>
> Future patches will add configurable gain and integration time,
> interrupt support, buffered reads, VIS channel, and flicker
> detection.
>
> Datasheet: https://look.ams-osram.com/m/5f2d27fff9a874d2/original/AS7343-14-Channel-Multi-Spectral-Sensor.pdf
> Signed-off-by: Chang Yu <marcus.yu.56@gmail.com>
> ---
I think this is ready to be applied.
Reviewed-by: Joshua Crofts <joshua.crofts1@gmail.com>
--
Kind regards,
Joshua Crofts
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v6 1/2] dt-bindings: iio: light: add as7343
2026-10-13 11:56 ` [PATCH v6 1/2] dt-bindings: iio: light: add as7343 Chang Yu
@ 2026-10-13 12:36 ` Joshua Crofts
2026-10-13 15:15 ` Chang Yu
2026-10-13 21:23 ` Jose A. Perez de Azpillaga
1 sibling, 1 reply; 9+ messages in thread
From: Joshua Crofts @ 2026-10-13 12:36 UTC (permalink / raw)
To: Chang Yu
Cc: Jonathan Cameron, David Lechner, Nuno Sá, Andy Shevchenko,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Shi Hao,
Jose A. Perez de Azpillaga, linux-iio, devicetree, linux-kernel
On Tue, 13 Oct 2026 19:56:38 +0800
Chang Yu <marcus.yu.56@gmail.com> wrote:
> Add binding for AMS AS7343 which is a 14-channel multi-spectral sensor
> with i2c address of 0x39.
>
> The GPIO pin is not described because the datasheet does not document
> how to use it for hardware synchronization at all. The GPIO register
> also has no mode-select bit to isolate the pin from the chip's
> internal control logic. Exposing it as a generic GPIO could result
> in kernel writes being overwritten by internal logic.
>
> Datasheet: https://look.ams-osram.com/m/5f2d27fff9a874d2/original/AS7343-14-Channel-Multi-Spectral-Sensor.pdf
> Signed-off-by: Chang Yu <marcus.yu.56@gmail.com>
> ---
> Changes in v6:
> - Add a ref to leds/common.yaml for the LDR pin.
>
> Changes in v5:
> - Remove the GPIO pin.
>
> Changes in v4:
> - Fix led-max-microamp property name.
>
> Changes in v3:
> - Add missing include for gpio.
> - Expand GPIO descrption to include hardware synchronization.
> - Use led-max-microamp instead of led-current-microamp for the LDR pin.
>
> Changes in v2:
> - Add the LDR, the interrupt pin, and the GPIO pin to the bindings.
> - Fix node name and unit address mismatch.
> - Include MAINTAINERS changes.
>
> .../bindings/iio/light/ams,as7343.yaml | 66 +++++++++++++++++++
> MAINTAINERS | 6 ++
> 2 files changed, 72 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/iio/light/ams,as7343.yaml
>
> diff --git a/Documentation/devicetree/bindings/iio/light/ams,as7343.yaml b/Documentation/devicetree/bindings/iio/light/ams,as7343.yaml
> new file mode 100644
> index 000000000000..7fb10b0d4843
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/iio/light/ams,as7343.yaml
> @@ -0,0 +1,66 @@
> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/iio/light/ams,as7343.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: AMS AS7343 14-Channel Multi-Spectral Sensor
> +
> +maintainers:
> + - Chang Yu <marcus.yu.56@gmail.com>
> +
> +description: |
> + The AMS AS7343 is a 14-channel multi-spectral sensor with i2c address of 0x39.
> + https://look.ams-osram.com/m/5f2d27fff9a874d2/original/AS7343-14-Channel-Multi-Spectral-Sensor.pdf
> +
> +properties:
> + compatible:
> + enum:
> + - ams,as7343
> +
> + reg:
> + description:
> + I2C address of the device (0x39).
> + maxItems: 1
> +
> + interrupts:
> + description:
> + Open drain output active low interrupt pin.
> + maxItems: 1
> +
> + vdd-supply: true
> +
> + led-max-microamp:
> + description:
> + The driver current for the external LED connected to the LDR pin.
> + minimum: 4000
> + maximum: 258000
> + multipleOf: 2000
> + default: 12000
> +
> +required:
> + - compatible
> + - reg
> + - vdd-supply
> +
> +additionalProperties: false
Should be unevaluatedProperties as you're using $refs in the binding,
but Jonathan could tweak that when applying.
--
Kind regards,
Joshua Crofts
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v6 1/2] dt-bindings: iio: light: add as7343
2026-10-13 12:36 ` Joshua Crofts
@ 2026-10-13 15:15 ` Chang Yu
0 siblings, 0 replies; 9+ messages in thread
From: Chang Yu @ 2026-10-13 15:15 UTC (permalink / raw)
To: Joshua Crofts
Cc: Chang Yu, Jonathan Cameron, David Lechner, Nuno Sá,
Andy Shevchenko, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Shi Hao, Jose A. Perez de Azpillaga, linux-iio, devicetree,
linux-kernel
On Tue, Oct 13, 2026 at 02:36:39PM +0200, Joshua Crofts wrote:
> On Tue, 13 Oct 2026 19:56:38 +0800
> Chang Yu <marcus.yu.56@gmail.com> wrote:
>
> > Add binding for AMS AS7343 which is a 14-channel multi-spectral sensor
> > with i2c address of 0x39.
> >
> > The GPIO pin is not described because the datasheet does not document
> > how to use it for hardware synchronization at all. The GPIO register
> > also has no mode-select bit to isolate the pin from the chip's
> > internal control logic. Exposing it as a generic GPIO could result
> > in kernel writes being overwritten by internal logic.
> >
> > Datasheet: https://look.ams-osram.com/m/5f2d27fff9a874d2/original/AS7343-14-Channel-Multi-Spectral-Sensor.pdf
> > Signed-off-by: Chang Yu <marcus.yu.56@gmail.com>
> > ---
> > Changes in v6:
> > - Add a ref to leds/common.yaml for the LDR pin.
> >
> > Changes in v5:
> > - Remove the GPIO pin.
> >
> > Changes in v4:
> > - Fix led-max-microamp property name.
> >
> > Changes in v3:
> > - Add missing include for gpio.
> > - Expand GPIO descrption to include hardware synchronization.
> > - Use led-max-microamp instead of led-current-microamp for the LDR pin.
> >
> > Changes in v2:
> > - Add the LDR, the interrupt pin, and the GPIO pin to the bindings.
> > - Fix node name and unit address mismatch.
> > - Include MAINTAINERS changes.
> >
> > .../bindings/iio/light/ams,as7343.yaml | 66 +++++++++++++++++++
> > MAINTAINERS | 6 ++
> > 2 files changed, 72 insertions(+)
> > create mode 100644 Documentation/devicetree/bindings/iio/light/ams,as7343.yaml
> >
> > diff --git a/Documentation/devicetree/bindings/iio/light/ams,as7343.yaml b/Documentation/devicetree/bindings/iio/light/ams,as7343.yaml
> > new file mode 100644
> > index 000000000000..7fb10b0d4843
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/iio/light/ams,as7343.yaml
> > @@ -0,0 +1,66 @@
> > +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/iio/light/ams,as7343.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: AMS AS7343 14-Channel Multi-Spectral Sensor
> > +
> > +maintainers:
> > + - Chang Yu <marcus.yu.56@gmail.com>
> > +
> > +description: |
> > + The AMS AS7343 is a 14-channel multi-spectral sensor with i2c address of 0x39.
> > + https://look.ams-osram.com/m/5f2d27fff9a874d2/original/AS7343-14-Channel-Multi-Spectral-Sensor.pdf
> > +
> > +properties:
> > + compatible:
> > + enum:
> > + - ams,as7343
> > +
> > + reg:
> > + description:
> > + I2C address of the device (0x39).
> > + maxItems: 1
> > +
> > + interrupts:
> > + description:
> > + Open drain output active low interrupt pin.
> > + maxItems: 1
> > +
> > + vdd-supply: true
> > +
> > + led-max-microamp:
> > + description:
> > + The driver current for the external LED connected to the LDR pin.
> > + minimum: 4000
> > + maximum: 258000
> > + multipleOf: 2000
> > + default: 12000
> > +
> > +required:
> > + - compatible
> > + - reg
> > + - vdd-supply
> > +
> > +additionalProperties: false
>
> Should be unevaluatedProperties as you're using $refs in the binding,
> but Jonathan could tweak that when applying.
>
There was a discussion about this back in v2 in which Conor was suggesting
keeping additionalProperties: false if I recall. I don't know the exact
pros vs cons so I'll defer to the experts here.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v6 2/2] iio: light: add AS7343 multi-spectral sensor driver
2026-10-13 11:56 ` [PATCH v6 2/2] iio: light: add AS7343 multi-spectral sensor driver Chang Yu
2026-10-13 12:35 ` Joshua Crofts
@ 2026-10-13 16:27 ` Andy Shevchenko
1 sibling, 0 replies; 9+ messages in thread
From: Andy Shevchenko @ 2026-10-13 16:27 UTC (permalink / raw)
To: Chang Yu
Cc: Jonathan Cameron, David Lechner, Nuno Sá, Andy Shevchenko,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Joshua Crofts,
Shi Hao, Jose A. Perez de Azpillaga, linux-iio, devicetree,
linux-kernel
On Tue, Oct 13, 2026 at 07:56:39PM +0800, Chang Yu wrote:
> Add a driver for the AMS AS7343 14-channel multi-spectral sensor.
>
> The AS7343 is a 14-channel spectral sensor featuring 11 visible
> channels, 1 near-infrared channel, 1 clear channel (VIS), and 1
> flicker detection channel.
>
> The driver exposes 12 spectral channels (11 visible light and 1
> near-infrared) via sysfs. Runtime PM is implemented to stop
> measurements when the device is suspended or torn down. Power is
> never cut (PON=1 always) to preserve register values.
>
> Future patches will add configurable gain and integration time,
> interrupt support, buffered reads, VIS channel, and flicker
> detection.
...
> +/*
> + * Integration time is calculated as (ATIME + 1) * ((ASTEP + 1) * 2.78us).
> + * ATIME must be between 0 and 255, inclusive
> + * ASTEP must be between 0 and 65534, inclusive
Haven't noticed before, but is it indeed 65534 and not 65535 here (or 255 and
not 254 above)? Haven't checked datasheet, please double check.
> + */
...
> +static int as7343_read_label(struct iio_dev *indio_dev,
> + struct iio_chan_spec const *chan, char *label)
> +{
> + int channel;
> +
> + channel = chan->channel;
> + if (channel < 0 || channel >= ARRAY_SIZE(as7343_channel_labels))
in_range()?
> + return -EINVAL;
-ECHRNG ?
> + return sysfs_emit(label, "%s\n", as7343_channel_labels[channel]);
> +}
...
> + /*
> + * Setting a 600 * 2.78us * 30 = 50ms integration time as the default
> + * for now.
Where magic 600 came from? Please, elaborate in the comment.
> + */
> + ret = as7343_astep_x2780ns(600, &astep);
> + if (ret)
> + return ret;
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v6 2/2] iio: light: add AS7343 multi-spectral sensor driver
2026-10-13 12:35 ` Joshua Crofts
@ 2026-10-13 16:28 ` Andy Shevchenko
0 siblings, 0 replies; 9+ messages in thread
From: Andy Shevchenko @ 2026-10-13 16:28 UTC (permalink / raw)
To: Joshua Crofts
Cc: Chang Yu, Jonathan Cameron, David Lechner, Nuno Sá,
Andy Shevchenko, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Shi Hao, Jose A. Perez de Azpillaga, linux-iio, devicetree,
linux-kernel
On Tue, Oct 13, 2026 at 02:35:21PM +0200, Joshua Crofts wrote:
> On Tue, 13 Oct 2026 19:56:39 +0800
> Chang Yu <marcus.yu.56@gmail.com> wrote:
>
> > Add a driver for the AMS AS7343 14-channel multi-spectral sensor.
> >
> > The AS7343 is a 14-channel spectral sensor featuring 11 visible
> > channels, 1 near-infrared channel, 1 clear channel (VIS), and 1
> > flicker detection channel.
> >
> > The driver exposes 12 spectral channels (11 visible light and 1
> > near-infrared) via sysfs. Runtime PM is implemented to stop
> > measurements when the device is suspended or torn down. Power is
> > never cut (PON=1 always) to preserve register values.
> >
> > Future patches will add configurable gain and integration time,
> > interrupt support, buffered reads, VIS channel, and flicker
> > detection.
> >
> > Datasheet: https://look.ams-osram.com/m/5f2d27fff9a874d2/original/AS7343-14-Channel-Multi-Spectral-Sensor.pdf
> > Signed-off-by: Chang Yu <marcus.yu.56@gmail.com>
> > ---
>
> I think this is ready to be applied.
I agree. I have a few nit-picks (easy to address), after that feel also free to
add
Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>
> Reviewed-by: Joshua Crofts <joshua.crofts1@gmail.com>
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v6 1/2] dt-bindings: iio: light: add as7343
2026-10-13 11:56 ` [PATCH v6 1/2] dt-bindings: iio: light: add as7343 Chang Yu
2026-10-13 12:36 ` Joshua Crofts
@ 2026-10-13 21:23 ` Jose A. Perez de Azpillaga
1 sibling, 0 replies; 9+ messages in thread
From: Jose A. Perez de Azpillaga @ 2026-10-13 21:23 UTC (permalink / raw)
To: Chang Yu, Jonathan Cameron
Cc: David Lechner, Nuno Sá, Andy Shevchenko, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Joshua Crofts, Shi Hao,
linux-iio, devicetree, linux-kernel
On 10/13/26 1:56 PM, Chang Yu wrote:
[snip]
> +
> + reg:
> + description:
> + I2C address of the device (0x39).
> + maxItems: 1
on v4 Jonathan said "Might as well specify it as const given it can only
take that value. They you can drop the description as it won't add
anything." v6 still has the old form, looks like that got lost.
[snip]> +
> + interrupts:
> + description:
> + Open drain output active low interrupt pin.
> + maxItems: 1
> +
> + vdd-supply: true
> +
> + led-max-microamp:
> + description:
> + The driver current for the external LED connected to the LDR pin.
this wording dates from when it was ams,led-current-microamp.
leds/common.yaml defines led-max-microamp as a maximum ("risk of
hardware damage in case an excessive current is set"), i.e. the board
limit for LED_DRIVE, not the current program. please describe it as a
maximum.
--
cheers,
jose a. p-a
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2026-10-13 21:24 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-13 11:56 [PATCH v6 0/2] Add support for AS7343 multi-spectral sensor Chang Yu
2026-10-13 11:56 ` [PATCH v6 1/2] dt-bindings: iio: light: add as7343 Chang Yu
2026-10-13 12:36 ` Joshua Crofts
2026-10-13 15:15 ` Chang Yu
2026-10-13 21:23 ` Jose A. Perez de Azpillaga
2026-10-13 11:56 ` [PATCH v6 2/2] iio: light: add AS7343 multi-spectral sensor driver Chang Yu
2026-10-13 12:35 ` Joshua Crofts
2026-10-13 16:28 ` Andy Shevchenko
2026-10-13 16:27 ` Andy Shevchenko
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox