Skip to contentSkip to conversation

dt-bindings: vendor-prefixes: add aosong

PATCH Superseded Anshul Dalal 3 participants 8 messages Nov 21, 2023 – Nov 25, 2023

Subsystems (3)

v3 of 5 Superseded Latest is v5 →

lore
Share & tools
lore

Anshul Dalal

author maintainer
#0 lore raw

PATCH v3 1/3 dt-bindings: vendor-prefixes: add aosong

Aosong Electronic Co., LTD. is a supplier for MEMS sensors such as AHT20 temperature and humidity sensor under the brand name Asair

---

Changes for v3:
- no updates

v2: https://lore.kernel.org/lkml/[email protected]/

Changes for v2:
- Changed vendor prefix from asair to aosong

v1: https://lore.kernel.org/lkml/[email protected]/

---
 Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++
 1 file changed, 2 insertions(+)
Documentation/devicetree/bindings/vendor-prefixes.yaml +2 -0
index 573578db9509..48d4ff635562 100644
@@ -117,6 +117,8 @@ patternProperties:
     description: Andes Technology Corporation
   "^anvo,.*":
     description: Anvo-Systems Dresden GmbH
+  "^aosong,.*":
+    description: Guangzhou Aosong Electronic Co., Ltd.
   "^apm,.*":
     description: Applied Micro Circuits Corporation (APM)
   "^apple,.*":
Signature · 1 line
2.42.1
author maintainer
#1 lore raw

PATCH v3 2/3 dt-bindings: iio: chemical: add aosong,ags02ma

Add bindings for Aosong AGS02MA TVOC sensor.

The sensor communicates over i2c with the default address 0x1a. TVOC values can be read in the units of ppb and ug/m^3 at register 0x00.

Datasheet:
https://asairsensors.com/wp-content/uploads/2021/09/AGS02MA.pdf
Product-Page:
http://www.aosong.com/m/en/products-33.html

---

Changes for v3:
- Fixed commit message
- Removed "asair,ags02ma" compatible

v2: https://lore.kernel.org/lkml/[email protected]/

Changes for v2:
- Removed device from trivial-devices
- Added standalone binding with vdd-supply property

v1: https://lore.kernel.org/lkml/[email protected]/

---
 .../bindings/iio/chemical/aosong,ags02ma.yaml | 47 +++++++++++++++++++
 1 file changed, 47 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/iio/chemical/aosong,ags02ma.yaml
Documentation/devicetree/bindings/iio/chemical/aosong,ags02ma.yaml new file +47 -0
new file mode 100644
index 000000000000..38ba3614ae8a
@@ -0,0 +1,47 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/iio/chemical/aosong,ags02ma.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Aosong AGS02MA VOC Sensor
+
+description: |
+  AGS02MA is an TVOC (Total Volatile Organic Compounds) i2c sensor with default
+  address of 0x1a.
+
+  Datasheet:
+    https://asairsensors.com/wp-content/uploads/2021/09/AGS02MA.pdf
+
+maintainers:
+  - Anshul Dalal <[email protected]>
+
+properties:
+  compatible:
+    enum:
+      - aosong,ags02ma
+
+  reg:
+    maxItems: 1
+
+  vdd-supply: true
+
+required:
+  - compatible
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        light-sensor@1a {
+            compatible = "aosong,ags02ma";
+            reg = <0x1a>;
+            vdd-supply = <&vdd_regulator>;
+        };
+    };
Signature · 1 line
2.42.1
#2 lore raw

Re: [PATCH v3 2/3] dt-bindings: iio: chemical: add aosong,ags02ma

Quoted 15 lines · Anshul Dalal

Add bindings for Aosong AGS02MA TVOC sensor.

The sensor communicates over i2c with the default address 0x1a. TVOC values can be read in the units of ppb and ug/m^3 at register 0x00.

Datasheet:
https://asairsensors.com/wp-content/uploads/2021/09/AGS02MA.pdf
Product-Page:
http://www.aosong.com/m/en/products-33.html

+---
+$id: http://devicetree.org/schemas/iio/chemical/aosong,ags02ma.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#

Documentation/devicetree/bindings/iio/chemical/aosong,ags02ma.yaml line 11

Quoted 6 lines
Documentation/devicetree/bindings/iio/chemical/aosong,ags02ma.yaml new file +6 -0
+
+title: Aosong AGS02MA VOC Sensor
+
+description: |
+  AGS02MA is an TVOC (Total Volatile Organic Compounds) i2c sensor with default
+  address of 0x1a.

What does it measure? Light?

Quoted 21 lines
Documentation/devicetree/bindings/iio/chemical/aosong,ags02ma.yaml new file +21 -0
+
+  Datasheet:
+    https://asairsensors.com/wp-content/uploads/2021/09/AGS02MA.pdf
+
+maintainers:
+  - Anshul Dalal <[email protected]>
+
+properties:
+  compatible:
+    enum:
+      - aosong,ags02ma
+
+  reg:
+    maxItems: 1
+
+  vdd-supply: true
+
+required:
+  - compatible
+  - reg
+

Documentation/devicetree/bindings/iio/chemical/aosong,ags02ma.yaml line 42

Quoted 10 lines
Documentation/devicetree/bindings/iio/chemical/aosong,ags02ma.yaml new file +10 -0
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        light-sensor@1a {

You called it chemical, so why this is here light-sensor?

Documentation/devicetree/bindings/iio/chemical/aosong,ags02ma.yaml line 47

Quoted 5 lines
Documentation/devicetree/bindings/iio/chemical/aosong,ags02ma.yaml new file +5 -0
+            compatible = "aosong,ags02ma";
+            reg = <0x1a>;
+            vdd-supply = <&vdd_regulator>;
+        };
+    };

Best regards,
Krzysztof

author maintainer
#3 lore raw

Re: [PATCH v3 2/3] dt-bindings: iio: chemical: add aosong,ags02ma

Quoted 22 lines · Krzysztof Kozlowski
Quoted 21 lines · Anshul Dalal

Add bindings for Aosong AGS02MA TVOC sensor.

The sensor communicates over i2c with the default address 0x1a. TVOC values can be read in the units of ppb and ug/m^3 at register 0x00.

Datasheet:
https://asairsensors.com/wp-content/uploads/2021/09/AGS02MA.pdf
Product-Page:
http://www.aosong.com/m/en/products-33.html

+---
+$id: http://devicetree.org/schemas/iio/chemical/aosong,ags02ma.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#

Documentation/devicetree/bindings/iio/chemical/aosong,ags02ma.yaml new file +5 -0
+
+title: Aosong AGS02MA VOC Sensor
[..]
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
Quoted 8 lines

Documentation/devicetree/bindings/iio/chemical/aosong,ags02ma.yaml line 42

Quoted 5 lines
Documentation/devicetree/bindings/iio/chemical/aosong,ags02ma.yaml new file +5 -0
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        light-sensor@1a {

You called it chemical, so why this is here light-sensor?

I was working on a binding for a light sensor in parallel at that time, I probably forgot to change this when copying the example from the light sensor.

Would be replaced by "voc-sensor" in the next revision, apologies for any inconvenience.

Thanks for the review.

Best Regards,
Anshul

author maintainer
#4 lore raw

PATCH v3 3/3 iio: chemical: add support for Aosong AGS02MA

In reply to Anshul Dalal

A simple driver for the TVOC (Total Volatile Organic Compounds) sensor from Aosong: AGS02MA

Steps in reading the VOC sensor value over i2c:
1. Read 5 bytes from the register AGS02MA_TVOC_READ_REG [0x00]
2. The first 4 bytes are taken as the big endian sensor data with final byte being the CRC
3. The CRC is verified and the value is returned over an IIO_CHAN_INFO_RAW channel as percents

Tested on Raspberry Pi Zero 2W

Datasheet:
https://asairsensors.com/wp-content/uploads/2021/09/AGS02MA.pdf
Product-Page:
http://www.aosong.com/m/en/products-33.html

---

Changes for v3:
- Added of_device_id

v2: https://lore.kernel.org/lkml/[email protected]/

Changes for v2:
- Fixed Kconfig not selecting CRC8 (used to be select crc8)
- Changed instances of asair to aosong
- Report raw readings in percents instead of ppb
- Added myself as maintainer for the device binding

v1: https://lore.kernel.org/lkml/[email protected]/

---
 MAINTAINERS                    |   7 ++
 drivers/iio/chemical/Kconfig   |  11 +++
 drivers/iio/chemical/Makefile  |   1 +
 drivers/iio/chemical/ags02ma.c | 168 +++++++++++++++++++++++++++++++++
 4 files changed, 187 insertions(+)
 create mode 100644 drivers/iio/chemical/ags02ma.c
MAINTAINERS +7 -0
index 81d5fc0bba68..ba3c950aca1b 100644
@@ -3028,6 +3028,13 @@ S:	Supported
 W:	http://www.akm.com/
 F:	drivers/iio/magnetometer/ak8974.c
 
+AOSONG AGS02MA TVOC SENSOR DRIVER
+M:	Anshul Dalal <[email protected]>
+L:	[email protected]
+S:	Maintained
+F:	Documentation/devicetree/bindings/iio/chemical/aosong,ags02ma.yaml
+F:	drivers/iio/chemical/ags02ma.c
+
 ASC7621 HARDWARE MONITOR DRIVER
 M:	George Joseph <[email protected]>
 L:	[email protected]
drivers/iio/chemical/Kconfig +11 -0
index c30657e10ee1..02649ab81b3c 100644
@@ -5,6 +5,17 @@
 
 menu "Chemical Sensors"
 
+config AOSONG_AGS02MA
+	tristate "Aosong AGS02MA TVOC sensor driver"
+	depends on I2C
+	select CRC8
+	help
+	  Say Y here to build support for Aosong AGS02MA TVOC (Total Volatile
+	  Organic Compounds) sensor.
+
+	  To compile this driver as module, choose M here: the module will be
+	  called ags02ma.
+
 config ATLAS_PH_SENSOR
 	tristate "Atlas Scientific OEM SM sensors"
 	depends on I2C
drivers/iio/chemical/Makefile +1 -0
index a11e777a7a00..2f3dee8bb779 100644
@@ -4,6 +4,7 @@
 #
 
 # When adding new entries keep the list in alphabetical order
+obj-$(CONFIG_AOSONG_AGS02MA)	+= ags02ma.o
 obj-$(CONFIG_ATLAS_PH_SENSOR)	+= atlas-sensor.o
 obj-$(CONFIG_ATLAS_EZO_SENSOR)	+= atlas-ezo-sensor.o
 obj-$(CONFIG_BME680) += bme680_core.o
drivers/iio/chemical/ags02ma.c new file +168 -0

168 lines not on this page · raw message

Signature · 1 line
2.42.1
#5 lore raw

Re: [PATCH v3 3/3] iio: chemical: add support for Aosong AGS02MA

kernel test robot noticed the following build warnings:

Hi Anshul,

kernel test robot noticed the following build warnings:

[auto build test WARNING on jic23-iio/togreg]
[also build test WARNING on linus/master v6.7-rc2 next-20231124] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Anshul-Dalal/dt-bindings-iio-chemical-add-aosong-ags02ma/20231121-180435
base:   https://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio.git togreg
patch link:    https://lore.kernel.org/r/20231121095800.2180870-3-anshulusr%40gmail.com
patch subject: [PATCH v3 3/3] iio: chemical: add support for Aosong AGS02MA
config: s390-randconfig-r081-20231123 (https://download.01.org/0day-ci/archive/20231124/[email protected]/config)
compiler: clang version 17.0.0 (https://github.com/llvm/llvm-project.git 4a5ac14ee968ff0ad5d2cc1ffa0299048db4c88a)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231124/[email protected]/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <[email protected]>
| Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/

All warnings (new ones prefixed by >>):

>> drivers/iio/chemical/ags02ma.c:150:34: warning: unused variable 'ags02ma_of_table' [-Wunused-const-variable]
     150 | static const struct of_device_id ags02ma_of_table[] = {
         |                                  ^

1 warning generated.

vim +/ags02ma_of_table +150 drivers/iio/chemical/ags02ma.c

149

 > 150	static const struct of_device_id ags02ma_of_table[] = {

151 { .compatible = "aosong,ags02ma"},
152 { /* Sentinel */ }
153 };
154 MODULE_DEVICE_TABLE(of, ags02ma_of_table);
155

Signature · 2 lines
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
#6 lore raw

Re: [PATCH v3 3/3] iio: chemical: add support for Aosong AGS02MA

In reply to Anshul Dalal
kernel test robot noticed the following build warnings:

Hi Anshul,

kernel test robot noticed the following build warnings:

[auto build test WARNING on jic23-iio/togreg]
[also build test WARNING on linus/master v6.7-rc2 next-20231124] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Anshul-Dalal/dt-bindings-iio-chemical-add-aosong-ags02ma/20231121-180435
base:   https://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio.git togreg
patch link:    https://lore.kernel.org/r/20231121095800.2180870-3-anshulusr%40gmail.com
patch subject: [PATCH v3 3/3] iio: chemical: add support for Aosong AGS02MA
config: arm-randconfig-r081-20231123 (https://download.01.org/0day-ci/archive/20231125/[email protected]/config)
compiler: arm-linux-gnueabi-gcc (GCC) 13.2.0
reproduce: (https://download.01.org/0day-ci/archive/20231125/[email protected]/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <[email protected]>
| Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/

New smatch warnings:
drivers/iio/chemical/ags02ma.c:53 ags02ma_register_read() warn: unsigned 'ret' is never less than zero.

Old smatch warnings:
drivers/iio/chemical/ags02ma.c:63 ags02ma_register_read() warn: unsigned 'ret' is never less than zero.

vim +/ret +53 drivers/iio/chemical/ags02ma.c

    45	
    46	static u32 ags02ma_register_read(struct i2c_client *client, u8 reg, u16 delay)
    47	{
    48		u32 ret;
    49		u8 crc;
    50		struct ags02ma_reading read_buffer;
    51	
    52		ret = i2c_master_send(client, &reg, sizeof(reg));
  > 53		if (ret < 0) {
    54			dev_err(&client->dev,
    55				"Failed to send data to register 0x%x: %d", reg, ret);
    56			return ret;
    57		}
    58	
    59		/* Processing Delay, Check Table 7.7 in the datasheet */
    60		msleep_interruptible(delay);
    61	
    62		ret = i2c_master_recv(client, (u8 *)&read_buffer, sizeof(read_buffer));
    63		if (ret < 0) {
    64			dev_err(&client->dev,
    65				"Failed to receive from register 0x%x: %d", reg, ret);
    66			return ret;
    67		}
    68		ret = be32_to_cpu(read_buffer.data);
    69	
    70		crc = crc8(ags02ma_crc8_table, (u8 *)&read_buffer.data,
    71			   sizeof(read_buffer.data), AGS02MA_CRC8_INIT);
    72		if (crc != read_buffer.crc) {
    73			dev_err(&client->dev, "CRC error\n");
    74			return -EIO;
    75		}
    76	
    77		return ret;
    78	}
    79	
Signature · 2 lines
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki