From nobody Fri Feb 13 01:43:50 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D1AFA446CF; Tue, 4 Jun 2024 08:02:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717488156; cv=none; b=SjZsX0xLC7xT0HALp0NHHYaOnkTCzvdf9wS89wkXF+6NRBUUP9zMnqPNt1VYiLuKcz0DrUrOv+vVEhhjKqr7WF8ioNdOrDPtbzolxNurMJ/kQRG9AM4qS2fevxKIR50ZD4rqT1JgwZgwIB/XYVOfmojiD1V+QubgXsfhkay+DaQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717488156; c=relaxed/simple; bh=G8VHWXgne1JlwVb/fvljyIg7n4e+MeEJZ4P0blVbA+E=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=vFRKXcdoVWAwy97juHbMMnKyfUzwO0oEcrZsBoKvdlTfdJq05rrXcSZ7NI3lahVmMMyw28Rci5YIc9qguC9Ht4COFGDZbgU62ku5fNk2zQk7y6sFdmf4q8V8rvLkBeDULKwUhpgItOAM4+cts9OU/ZOKPInMVw+06koblZ5Vj5U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=X53AdB09; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="X53AdB09" Received: by smtp.kernel.org (Postfix) with ESMTPS id 6EB4FC32782; Tue, 4 Jun 2024 08:02:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1717488156; bh=G8VHWXgne1JlwVb/fvljyIg7n4e+MeEJZ4P0blVbA+E=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=X53AdB09KXPFmaj8eeA0Erp3Z4ok76csex4p4ierjgdqBaB994iseypf1WgeeNfjZ 9GrnuaQS4GAPH2W8HXY7aXdsu1F01bUXwTrrJ4VzcQW8KwzJ2OyGkL9AzhmHSrO/Mm kCGJbVyaWLRoxZG3/GbTciCzwGUQf5Iy8Wn6fUAgeQeVy/uPqt5yJpSWWw9EJ6yFSa RvXgs6An4g2n0tagyfGeaNOohzK/H8epk14SwyHgYNorV1ED8w7jSShE9L4kD4+U2r OEnOkHHfUgx1ROzNlkiZUIRXymd1XSMuPmuCMYXyCr8dLSZa/H619l6JzYOp7VWFbL VEpJDSwR+JRAg== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 58CF0C27C53; Tue, 4 Jun 2024 08:02:36 +0000 (UTC) From: Arthur Becker via B4 Relay Date: Tue, 04 Jun 2024 10:01:48 +0200 Subject: [PATCH v4 1/2] iio: light: driver for Vishay VEML6040 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20240604-veml6040-v4-1-5a4d59597874@sentec.com> References: <20240604-veml6040-v4-0-5a4d59597874@sentec.com> In-Reply-To: <20240604-veml6040-v4-0-5a4d59597874@sentec.com> To: Jonathan Cameron , Lars-Peter Clausen , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Javier Carrasco Cc: linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org, devicetree@vger.kernel.org, Arthur Becker X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1717488152; l=9941; i=arthur.becker@sentec.com; s=20240521; h=from:subject:message-id; bh=DFzBtZ50BsQIEr9zvi852uqB+OUL03+O6u+LzE6xWtE=; b=drC1REcWhMaITCf89cS8TTjqp0wHf21i2goXz8+aROyJMfCI98+XWLopzcdRN2eDLnw7smbvd h8BmRKOOHzMC4KZDKhm3gpy+lFaF023UyXCvpUhSmtrP9guNPn/OBex X-Developer-Key: i=arthur.becker@sentec.com; a=ed25519; pk=1GLsDBF6GZKt9oNFsvdnAB6sHyKKrSISlwM3AyWbx/k= X-Endpoint-Received: by B4 Relay for arthur.becker@sentec.com/20240521 with auth_id=163 X-Original-From: Arthur Becker Reply-To: arthur.becker@sentec.com From: Arthur Becker Implements driver for the Vishay VEML6040 rgbw light sensor. Included functionality: setting the integration time and reading the raw values for the four channels Not yet implemented: setting the measurements to 'Manual Force Mode' (Auto measurements off, and adding a measurement trigger) Datasheet: https://www.vishay.com/docs/84276/veml6040.pdf Signed-off-by: Arthur Becker --- V1 -> V2: Addressed review comments. V2 -> V3: Addressed further review comments; Sending in patch thread with dt-bindings. V3 -> V4: Minor adjustments --- drivers/iio/light/Kconfig | 11 ++ drivers/iio/light/Makefile | 1 + drivers/iio/light/veml6040.c | 281 +++++++++++++++++++++++++++++++++++++++= ++++ 3 files changed, 293 insertions(+) diff --git a/drivers/iio/light/Kconfig b/drivers/iio/light/Kconfig index 9a587d403118..b68dcc1fbaca 100644 --- a/drivers/iio/light/Kconfig +++ b/drivers/iio/light/Kconfig @@ -666,6 +666,17 @@ config VEML6030 To compile this driver as a module, choose M here: the module will be called veml6030. =20 +config VEML6040 + tristate "VEML6040 RGBW light sensor" + select REGMAP_I2C + depends on I2C + help + Say Y here if you want to build a driver for the Vishay VEML6040 + RGBW light sensor. + + To compile this driver as a module, choose M here: the + module will be called veml6040. + config VEML6070 tristate "VEML6070 UV A light sensor" depends on I2C diff --git a/drivers/iio/light/Makefile b/drivers/iio/light/Makefile index a30f906e91ba..1a071a8e9f8e 100644 --- a/drivers/iio/light/Makefile +++ b/drivers/iio/light/Makefile @@ -62,6 +62,7 @@ obj-$(CONFIG_US5182D) +=3D us5182d.o obj-$(CONFIG_VCNL4000) +=3D vcnl4000.o obj-$(CONFIG_VCNL4035) +=3D vcnl4035.o obj-$(CONFIG_VEML6030) +=3D veml6030.o +obj-$(CONFIG_VEML6040) +=3D veml6040.o obj-$(CONFIG_VEML6070) +=3D veml6070.o obj-$(CONFIG_VEML6075) +=3D veml6075.o obj-$(CONFIG_VL6180) +=3D vl6180.o diff --git a/drivers/iio/light/veml6040.c b/drivers/iio/light/veml6040.c new file mode 100644 index 000000000000..216e271001a8 --- /dev/null +++ b/drivers/iio/light/veml6040.c @@ -0,0 +1,281 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Vishay VEML6040 RGBW light sensor driver + * + * Copyright (C) 2024 Sentec AG + * Author: Arthur Becker + * + */ + +#include +#include +#include +#include +#include +#include +#include + +/* VEML6040 Configuration Registers + * + * SD: Shutdown + * AF: Auto / Force Mode (Auto Measurements On:0, Off:1) + * TR: Trigger Measurement (when AF Bit is set) + * IT: Integration Time + */ +#define VEML6040_CONF_REG 0x000 +#define VEML6040_CONF_SD_MSK BIT(0) +#define VEML6040_CONF_AF_MSK BIT(1) +#define VEML6040_CONF_TR_MSK BIT(2) +#define VEML6040_CONF_IT_MSK GENMASK(6, 4) +#define VEML6040_CONF_IT_40_MS 0 +#define VEML6040_CONF_IT_80_MS 1 +#define VEML6040_CONF_IT_160_MS 2 +#define VEML6040_CONF_IT_320_MS 3 +#define VEML6040_CONF_IT_640_MS 4 +#define VEML6040_CONF_IT_1280_MS 5 + +/* VEML6040 Read Only Registers */ +#define VEML6040_REG_R 0x08 +#define VEML6040_REG_G 0x09 +#define VEML6040_REG_B 0x0A +#define VEML6040_REG_W 0x0B + +static const int veml6040_it_ms[] =3D { 40, 80, 160, 320, 640, 1280 }; + +enum veml6040_chan { + CH_RED, + CH_GREEN, + CH_BLUE, + CH_WHITE, +}; + +struct veml6040_data { + struct i2c_client *client; + struct regmap *regmap; +}; + +static const struct regmap_config veml6040_regmap_config =3D { + .name =3D "veml6040_regmap", + .reg_bits =3D 8, + .val_bits =3D 16, + .max_register =3D VEML6040_REG_W, + .val_format_endian =3D REGMAP_ENDIAN_LITTLE, +}; + +static int veml6040_read_raw(struct iio_dev *indio_dev, + struct iio_chan_spec const *chan, int *val, + int *val2, long mask) +{ + int ret, reg, it_index; + struct veml6040_data *data =3D iio_priv(indio_dev); + struct regmap *regmap =3D data->regmap; + struct device *dev =3D &data->client->dev; + + switch (mask) { + case IIO_CHAN_INFO_RAW: + ret =3D regmap_read(regmap, chan->address, ®); + if (ret) { + dev_err(dev, "Data read failed: %d\n", ret); + return ret; + } + *val =3D reg; + return IIO_VAL_INT; + + case IIO_CHAN_INFO_INT_TIME: + ret =3D regmap_read(regmap, VEML6040_CONF_REG, ®); + if (ret) { + dev_err(dev, "Data read failed: %d\n", ret); + return ret; + } + it_index =3D FIELD_GET(VEML6040_CONF_IT_MSK, reg); + if (it_index >=3D ARRAY_SIZE(veml6040_it_ms)) { + dev_err(dev, "Invalid Integration Time Set"); + return -EINVAL; + } + *val =3D veml6040_it_ms[it_index]; + return IIO_VAL_INT; + + default: + return -EINVAL; + } +} + +static int veml6040_write_raw(struct iio_dev *indio_dev, + struct iio_chan_spec const *chan, int val, + int val2, long mask) +{ + struct veml6040_data *data =3D iio_priv(indio_dev); + + switch (mask) { + case IIO_CHAN_INFO_INT_TIME: + for (int i =3D 0; i < ARRAY_SIZE(veml6040_it_ms); i++) { + if (veml6040_it_ms[i] !=3D val) + continue; + + return regmap_update_bits(data->regmap, + VEML6040_CONF_REG, + VEML6040_CONF_IT_MSK, + FIELD_PREP(VEML6040_CONF_IT_MSK, i)); + } + return -EINVAL; + default: + return -EINVAL; + } +} + +static int veml6040_read_avail(struct iio_dev *indio_dev, + struct iio_chan_spec const *chan, + const int **vals, int *type, int *length, + long mask) +{ + switch (mask) { + case IIO_CHAN_INFO_INT_TIME: + *length =3D ARRAY_SIZE(veml6040_it_ms); + *vals =3D veml6040_it_ms; + *type =3D IIO_VAL_INT; + return IIO_AVAIL_LIST; + + default: + return -EINVAL; + } +} + +static const struct iio_info veml6040_info =3D { + .read_raw =3D veml6040_read_raw, + .write_raw =3D veml6040_write_raw, + .read_avail =3D veml6040_read_avail, +}; + +static const struct iio_chan_spec veml6040_channels[] =3D { + { + .type =3D IIO_INTENSITY, + .address =3D VEML6040_REG_R, + .channel =3D CH_RED, + .channel2 =3D IIO_MOD_LIGHT_RED, + .modified =3D 1, + .info_mask_separate =3D BIT(IIO_CHAN_INFO_RAW), + .info_mask_shared_by_type =3D BIT(IIO_CHAN_INFO_INT_TIME), + .info_mask_shared_by_type_available =3D + BIT(IIO_CHAN_INFO_INT_TIME), + }, + { + .type =3D IIO_INTENSITY, + .address =3D VEML6040_REG_G, + .channel =3D CH_GREEN, + .channel2 =3D IIO_MOD_LIGHT_GREEN, + .modified =3D 1, + .info_mask_separate =3D BIT(IIO_CHAN_INFO_RAW), + .info_mask_shared_by_type =3D BIT(IIO_CHAN_INFO_INT_TIME), + .info_mask_shared_by_type_available =3D + BIT(IIO_CHAN_INFO_INT_TIME), + }, + { + .type =3D IIO_INTENSITY, + .address =3D VEML6040_REG_B, + .channel =3D CH_BLUE, + .channel2 =3D IIO_MOD_LIGHT_BLUE, + .modified =3D 1, + .info_mask_separate =3D BIT(IIO_CHAN_INFO_RAW), + .info_mask_shared_by_type =3D BIT(IIO_CHAN_INFO_INT_TIME), + .info_mask_shared_by_type_available =3D + BIT(IIO_CHAN_INFO_INT_TIME), + }, + { + .type =3D IIO_INTENSITY, + .address =3D VEML6040_REG_W, + .channel =3D CH_WHITE, + .channel2 =3D IIO_MOD_LIGHT_CLEAR, + .modified =3D 1, + .info_mask_separate =3D BIT(IIO_CHAN_INFO_RAW), + .info_mask_shared_by_type =3D BIT(IIO_CHAN_INFO_INT_TIME), + .info_mask_shared_by_type_available =3D + BIT(IIO_CHAN_INFO_INT_TIME), + } +}; + +static void veml6040_shutdown_action(void *data) +{ + struct veml6040_data *veml6040_data =3D data; + + regmap_update_bits(veml6040_data->regmap, VEML6040_CONF_REG, + VEML6040_CONF_SD_MSK, VEML6040_CONF_SD_MSK); +} + +static int veml6040_probe(struct i2c_client *client) +{ + struct device *dev =3D &client->dev; + struct veml6040_data *data; + struct iio_dev *indio_dev; + struct regmap *regmap; + const int init_config =3D + FIELD_PREP(VEML6040_CONF_IT_MSK, VEML6040_CONF_IT_40_MS) | + FIELD_PREP(VEML6040_CONF_AF_MSK, 0) | + FIELD_PREP(VEML6040_CONF_SD_MSK, 0); + int ret; + + if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) + return dev_err_probe(dev, -EOPNOTSUPP, + "I2C adapter doesn't support plain I2C\n"); + + indio_dev =3D devm_iio_device_alloc(dev, sizeof(*data)); + if (!indio_dev) + return dev_err_probe(dev, -ENOMEM, + "IIO device allocation failed\n"); + + regmap =3D devm_regmap_init_i2c(client, &veml6040_regmap_config); + if (IS_ERR(regmap)) + return dev_err_probe(dev, PTR_ERR(regmap), + "Regmap setup failed\n"); + + data =3D iio_priv(indio_dev); + i2c_set_clientdata(client, indio_dev); + data->client =3D client; + data->regmap =3D regmap; + + indio_dev->name =3D "veml6040"; + indio_dev->info =3D &veml6040_info; + indio_dev->channels =3D veml6040_channels; + indio_dev->num_channels =3D ARRAY_SIZE(veml6040_channels); + indio_dev->modes =3D INDIO_DIRECT_MODE; + + ret =3D devm_regulator_get_enable(dev, "vdd"); + if (ret) + return ret; + + ret =3D regmap_write(regmap, VEML6040_CONF_REG, init_config); + if (ret) + return dev_err_probe(dev, ret, + "Could not set initial config\n"); + + ret =3D devm_add_action_or_reset(dev, veml6040_shutdown_action, data); + if (ret) + return ret; + + return devm_iio_device_register(dev, indio_dev); +} + +static const struct i2c_device_id veml6040_id_table[] =3D { + {"veml6040"}, + {} +}; +MODULE_DEVICE_TABLE(i2c, veml6040_id_table); + +static const struct of_device_id veml6040_of_match[] =3D { + {.compatible =3D "vishay,veml6040"}, + {} +}; +MODULE_DEVICE_TABLE(of, veml6040_of_match); + +static struct i2c_driver veml6040_driver =3D { + .probe =3D veml6040_probe, + .id_table =3D veml6040_id_table, + .driver =3D { + .name =3D "veml6040", + .of_match_table =3D veml6040_of_match, + }, +}; +module_i2c_driver(veml6040_driver); + +MODULE_DESCRIPTION("veml6040 RGBW light sensor driver"); +MODULE_AUTHOR("Arthur Becker "); +MODULE_LICENSE("GPL"); --=20 2.34.1 From nobody Fri Feb 13 01:43:50 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D1CDE137C2D; Tue, 4 Jun 2024 08:02:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717488156; cv=none; b=XhHwFKNUi98rGIN8J38jwTlIZm/eKQdd3U27+BRdUCDVwsv7XTMmTkT/eqKhjnTN/Jj4dZxToDNsA0C/bdHs1xlcgP8psK6XZDR6YEZP8qttF2CyBt0eTOAdOPlPxidY3bzQqjR7m+3RRx9zp5Mc6OTYLjy/AVhnUaYglLDk/sE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717488156; c=relaxed/simple; bh=yc2Veju7chaWEi/l1gmL+RUvP0s9O/V1PE7dSAHTZhE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=nFxS1vuIRgqVSfBc53ocANkhb5KAAFhHGVEAR8VOCGAC1s6xWBtoAmriM+S9j6p+5lUrEHz7vkeEXdcFlhEjJqK7gRk4sh8NUu4QCCAfiY0siLauQB0JnkUGa4nRk8bJ0rNISplREfxOvp2kabjHcdf+8fmb9aruE2AcynnYlSM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=mnM54gIr; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="mnM54gIr" Received: by smtp.kernel.org (Postfix) with ESMTPS id 7E7B1C4AF08; Tue, 4 Jun 2024 08:02:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1717488156; bh=yc2Veju7chaWEi/l1gmL+RUvP0s9O/V1PE7dSAHTZhE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=mnM54gIrdQ7WDoPg5oNdi7zWpZOO4rqBf41ggI9UBFawohhZoGrGqdqZFPDpbJmvi aXIf86WSiF0oCWzm/5h5k8urlh4dcBOofmU71J7jFASKaUbLB50j+25fnIsfEuFiIE 2Qz0GNr30wtTbpWze/EV0mOjd5GizD2dTWp+E2L0QETsWJEiAi8uXz0NvAoAvofaiV HagfwdumrXji0pNe4RtZ0IlisE5qZGjpDoK1quVYSohCTZvhB34q6gvKcy6G3Vxsx5 6bgLT+e+I5RbbXJ4SqxiYkistKmr6/grIgZa1EaPwxTyqNBJF4k1BIzRmziTG8z8Qf rqGft0JBSpZ7A== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6A1B0C25B7E; Tue, 4 Jun 2024 08:02:36 +0000 (UTC) From: Arthur Becker via B4 Relay Date: Tue, 04 Jun 2024 10:01:49 +0200 Subject: [PATCH v4 2/2] dt-bindings: iio: light: add VEML6040 RGBW-LS bindings Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20240604-veml6040-v4-2-5a4d59597874@sentec.com> References: <20240604-veml6040-v4-0-5a4d59597874@sentec.com> In-Reply-To: <20240604-veml6040-v4-0-5a4d59597874@sentec.com> To: Jonathan Cameron , Lars-Peter Clausen , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Javier Carrasco Cc: linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org, devicetree@vger.kernel.org, Arthur Becker X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1717488152; l=1386; i=arthur.becker@sentec.com; s=20240521; h=from:subject:message-id; bh=9rThcOFRJ7S93FIcWQdT1WZcQC1aM2qApoy4vlBF7hQ=; b=PKV/u4sIgobPlvHwj85thig13uPd1GBIwDqppFBW6emJDJc/6HgwmfVpHTjRCSIN70jmssdFs 7kIUXj6e76ZC6AoGcZwQnzr7TZKHt99qjBf/7cr0h3VFSVrPiuGxdPA X-Developer-Key: i=arthur.becker@sentec.com; a=ed25519; pk=1GLsDBF6GZKt9oNFsvdnAB6sHyKKrSISlwM3AyWbx/k= X-Endpoint-Received: by B4 Relay for arthur.becker@sentec.com/20240521 with auth_id=163 X-Original-From: Arthur Becker Reply-To: arthur.becker@sentec.com From: Arthur Becker Device tree bindings for the vishay VEML6040 RGBW light sensor iio driver Signed-off-by: Arthur Becker Reviewed-by: Krzysztof Kozlowski --- V1 -> V3: Addressed review comments (v1 of the dt-bindings was sent along with v2 of the driver but not in a set) V3 -> V4: Combined dt-binding with veml6075 as they are basically the same --- Documentation/devicetree/bindings/iio/light/vishay,veml6075.yaml | 9 +++++= ++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Documentation/devicetree/bindings/iio/light/vishay,veml6075.ya= ml b/Documentation/devicetree/bindings/iio/light/vishay,veml6075.yaml index 91c318746bf3..ecf2339e02f6 100644 --- a/Documentation/devicetree/bindings/iio/light/vishay,veml6075.yaml +++ b/Documentation/devicetree/bindings/iio/light/vishay,veml6075.yaml @@ -4,14 +4,19 @@ $id: http://devicetree.org/schemas/iio/light/vishay,veml6075.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# =20 -title: Vishay VEML6075 UVA and UVB sensor +title: Vishay VEML6075 UVA/B and VEML6040 RGBW sensors =20 maintainers: - Javier Carrasco =20 +description: + VEML6040 datasheet at https://www.vishay.com/docs/84276/veml6040.pdf + properties: compatible: - const: vishay,veml6075 + enum: + - vishay,veml6040 + - vishay,veml6075 =20 reg: maxItems: 1 --=20 2.34.1