iio: vcnl4000: Export near level property for proximity sensor
Subsystems (2)
v4 cover iio: vcnl4000: Export near level property for proximity sensor
If an object can be considered close to the device that has the proximity sensor built in is hardware dependent. Allowing to configure the property via device tree allows to export this device specific value to userspace via ext_info. This is useful for e.g. iio-sensor-proxy.
This came up when adding proximity support to iio-sensor-proxy [1], [2], it is not meant as a vcnl4000 thing but rather as something useful for other proximity sensors too in the future.
I've not converted the vcnl4000 binding docs to yaml but can do so as part of this series in a v2 if the approach makes sense.
Changes from v3:
- as per review comment by Jonathan Cameron Fix patch title and description of sysfs patch
https://lore.kernel.org/linux-iio/20200329102705.0a69000c@archlinux/
- Add Reviewed-by by Rob Herring, thanks!
https://lore.kernel.org/linux-iio/20200331214330.GA24010@bogus/
- As per review comments by Rob Herring
https://lore.kernel.org/linux-iio/20200331214517.GA24128@bogus/
- Rename property to proximity-near-level
- document proximity-near-level in a common file
Changes from v2:
- as per review comment by Lars-Peter Clausen
https://lore.kernel.org/linux-iio/[email protected]/
Switch sysfs name to nearlevel
- as per review comment by Nishant Malpani
https://lore.kernel.org/linux-iio/[email protected]/
Add manufacturer do binding document name
- as per review comments by Andy Shevchenko
- Drop superfluous blank line
- Check return value of device_property_read_u32 for '!= 0' instead of '< 0'
Changes from v1:
- as per review comments by Jonathan Cameron
https://lore.kernel.org/linux-iio/20200221120519.43b72007@archlinux/
Document new sysfs file in Documentation/ABI/testing/sysfs-bus-iio-proximity
- convert bindings to yaml
- bindings: fix typo in near-level property
[1]: https://gitlab.freedesktop.org/hadess/iio-sensor-proxy/merge_requests/298
[2]: https://lore.kernel.org/linux-iio/[email protected]/
To: Tomas Novotny <[email protected]>, Jonathan Cameron <[email protected]>,Hartmut Knaack <[email protected]>,Lars-Peter Clausen <[email protected]>,Peter Meerwald-Stadler <[email protected]>,"Angus Ainslie (Purism)" <[email protected]>,"Guido Günther" <[email protected]>,Marco Felsch <[email protected]>,Thomas Gleixner <[email protected]>,[email protected],[email protected],[email protected],Andy Shevchenko <[email protected]>,Nishant Malpani <[email protected]>
Guido Günther (5):
dt-bindings: iio: vcnl4000: convert bindings to YAML format
dt-bindings: iio: Introduce common properties for iio sensors
dt-bindings: iio: light: vcnl4000: Add proximity-near-level
iio: vcnl4000: Export near level property for proximity sensor
Documentation: ABI: document IIO in_proximity_nearlevel file
.../ABI/testing/sysfs-bus-iio-proximity | 10 ++++ .../devicetree/bindings/iio/common.yaml | 35 +++++++++++++ .../bindings/iio/light/vcnl4000.txt | 24 --------- .../bindings/iio/light/vishay,vcnl4000.yaml | 50 +++++++++++++++++++ drivers/iio/light/vcnl4000.c | 25 ++++++++++ 5 files changed, 120 insertions(+), 24 deletions(-) create mode 100644 Documentation/ABI/testing/sysfs-bus-iio-proximity create mode 100644 Documentation/devicetree/bindings/iio/common.yaml delete mode 100644 Documentation/devicetree/bindings/iio/light/vcnl4000.txt create mode 100644 Documentation/devicetree/bindings/iio/light/vishay,vcnl4000.yaml
Signature · 1 line
2.23.0
PATCH v4 1/5 dt-bindings: iio: vcnl4000: convert bindings to YAML format
Convert the vcnl4000 device tree bindings to the new YAML format.
--- .../bindings/iio/light/vcnl4000.txt | 24 ---------- .../bindings/iio/light/vishay,vcnl4000.yaml | 45 +++++++++++++++++++ 2 files changed, 45 insertions(+), 24 deletions(-) delete mode 100644 Documentation/devicetree/bindings/iio/light/vcnl4000.txt create mode 100644 Documentation/devicetree/bindings/iio/light/vishay,vcnl4000.yaml
Documentation/devicetree/bindings/iio/light/vcnl4000.txt deleted +0 -24
@@ -1,24 +0,0 @@ -VISHAY VCNL4000 - Ambient Light and proximity sensor - -This driver supports the VCNL4000/10/20/40 and VCNL4200 chips - -Required properties: - - -compatible: must be one of : - vishay,vcnl4000 - vishay,vcnl4010 - vishay,vcnl4020 - vishay,vcnl4040 - vishay,vcnl4200 - - -reg: I2C address of the sensor, should be one from below based on the model: - 0x13 - 0x51 - 0x60 - -Example: - -light-sensor@51 { - compatible = "vishay,vcnl4200"; - reg = <0x51>; -};
Documentation/devicetree/bindings/iio/light/vishay,vcnl4000.yaml new file +45 -0
45 lines not on this page · raw message
Signature · 1 line
2.23.0
PATCH v4 2/5 dt-bindings: iio: Introduce common properties for iio sensors
In reply to Guido GüntherIntroduce a file for common properties of iio sensors. So far this contains the new proximity-near-level property for proximity sensors that indicates when an object should be considered near.
--- .../devicetree/bindings/iio/common.yaml | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 Documentation/devicetree/bindings/iio/common.yaml
Documentation/devicetree/bindings/iio/common.yaml new file +35 -0
@@ -0,0 +1,35 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/iio/common.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Common properties for iio sensors + +maintainers: + - Jonathan Cameron <[email protected]> + - Guido Günther <[email protected]> + +description: | + This document defines device tree properties common to several iio + sensors. It doesn't constitue a device tree binding specification by itself but + is meant to be referenced by device tree bindings. + + When referenced from sensor tree bindings the properties defined in this + document are defined as follows. The sensor tree bindings are responsible for + defining whether each property is required or optional. + +properties: + proximity-near-level: + $ref: /schemas/types.yaml#/definitions/uint32 + description: | + For proximity sensors whether an object can be considered near to the + device depends on parameters like sensor position, covering glass and + aperture. This value gives an indication to userspace for which + sensor readings this is the case. + + Raw proximity values equal or above this level should be + considered 'near' to the device (an object is near to the + sensor). + +...
Signature · 1 line
2.23.0
Jonathan Cameron
maintainerRe: [PATCH v4 2/5] dt-bindings: iio: Introduce common properties for iio sensors
Quoted 5 lines · On Sun, 5 Apr 2020 15:50:29 +0200 Guido Günther <[email protected]> wrote:
Introduce a file for common properties of iio sensors. So far this contains the new proximity-near-level property for proximity sensors that indicates when an object should be considered near.
Signed-off-by Guido Günther <[email protected]>
This works for me. However, I would like to give time for Rob and others to comment on the syntax, naming etc of this file.
Thanks,
Jonathan
Quoted 46 lines
--- .../devicetree/bindings/iio/common.yaml | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 Documentation/devicetree/bindings/iio/common.yamlDocumentation/devicetree/bindings/iio/common.yaml new file +35
-0@@ -0,0 +1,35 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/iio/common.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Common properties for iio sensors + +maintainers: + - Jonathan Cameron <[email protected]> + - Guido Günther <[email protected]> + +description: | + This document defines device tree properties common to several iio + sensors. It doesn't constitue a device tree binding specification by itself but + is meant to be referenced by device tree bindings. + + When referenced from sensor tree bindings the properties defined in this + document are defined as follows. The sensor tree bindings are responsible for + defining whether each property is required or optional. + +properties: + proximity-near-level: + $ref: /schemas/types.yaml#/definitions/uint32 + description: | + For proximity sensors whether an object can be considered near to the + device depends on parameters like sensor position, covering glass and + aperture. This value gives an indication to userspace for which + sensor readings this is the case. + + Raw proximity values equal or above this level should be + considered 'near' to the device (an object is near to the + sensor). + +...
Re: [PATCH v4 2/5] dt-bindings: iio: Introduce common properties for iio sensors
In reply to Guido GüntherQuoted 10 lines · On Sun, 5 Apr 2020 15:50:29 +0200, =?UTF-8?q?Guido=20G=C3=BCnther?= wrote:
Introduce a file for common properties of iio sensors. So far this contains the new proximity-near-level property for proximity sensors that indicates when an object should be considered near.
Signed-off-by Guido Günther <[email protected]>--- .../devicetree/bindings/iio/common.yaml | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 Documentation/devicetree/bindings/iio/common.yaml
Jonathan Cameron
maintainerRe: [PATCH v4 2/5] dt-bindings: iio: Introduce common properties for iio sensors
Quoted 5 lines · On Tue, 14 Apr 2020 16:49:23 -0500 Rob Herring <[email protected]> wrote:
Quoted 4 lines · On Sun, 5 Apr 2020 15:50:29 +0200, =?UTF-8?q?Guido=20G=C3=BCnther?= wrote:
Introduce a file for common properties of iio sensors. So far this contains the new proximity-near-level property for proximity sensors that indicates when an object should be considered near.
Quoted 8 lines
Quoted 6 lines
Signed-off-by Guido Günther <[email protected]>--- .../devicetree/bindings/iio/common.yaml | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 Documentation/devicetree/bindings/iio/common.yamlReviewed-by Rob Herring <[email protected]>
Applied to the togreg branch of iio.git and pushed out as testing.
Thanks
Jonathan
PATCH v4 3/5 dt-bindings: iio: light: vcnl4000: Add proximity-near-level
In reply to Guido GüntherThis value indicates when userspace should consider an object near to the sensor/device.
--- .../devicetree/bindings/iio/light/vishay,vcnl4000.yaml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
Documentation/devicetree/bindings/iio/light/vishay,vcnl4000.yaml +6 -1
@@ -13,6 +13,9 @@ description: | Ambient light sensing with proximity detection over an i2c interface. +allOf: + - $ref: ../common.yaml# + properties: compatible: enum:
@@ -21,10 +24,11 @@ properties: - vishay,vcnl4020 - vishay,vcnl4040 - vishay,vcnl4200 - reg: maxItems: 1 + proximity-near-level: true + required: - compatible - reg
@@ -40,6 +44,7 @@ examples: light-sensor@51 { compatible = "vishay,vcnl4200"; reg = <0x51>; + proximity-near-level = <220>; }; }; ...
Signature · 1 line
2.23.0
Re: [PATCH v4 3/5] dt-bindings: iio: light: vcnl4000: Add proximity-near-level
Quoted 8 lines · On Sun, 5 Apr 2020 15:50:30 +0200, =?UTF-8?q?Guido=20G=C3=BCnther?= wrote:
This value indicates when userspace should consider an object near to the sensor/device.
Signed-off-by Guido Günther <[email protected]>--- .../devicetree/bindings/iio/light/vishay,vcnl4000.yaml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
Re: [PATCH v4 3/5] dt-bindings: iio: light: vcnl4000: Add proximity-near-level
Quoted 11 lines · On Tue, 14 Apr 2020 16:50:16 -0500 Rob Herring <[email protected]> wrote:
Quoted 8 lines · On Sun, 5 Apr 2020 15:50:30 +0200, =?UTF-8?q?Guido=20G=C3=BCnther?= wrote:
This value indicates when userspace should consider an object near to the sensor/device.
Signed-off-by Guido Günther <[email protected]>--- .../devicetree/bindings/iio/light/vishay,vcnl4000.yaml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)Reviewed-by Rob Herring <[email protected]>
Applied. Thanks,
PATCH v4 4/5 iio: vcnl4000: Export near level property for proximity sensor
In reply to Guido GüntherWhen an object can be considered close to the sensor is hardware dependent. Allowing to configure the property via device tree allows to configure this device specific value.
This is useful for e.g. iio-sensor-proxy to indicate to userspace if an object is close to the sensor.
--- drivers/iio/light/vcnl4000.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+)
drivers/iio/light/vcnl4000.c +25 -0
@@ -83,6 +83,7 @@ struct vcnl4000_data {struct mutex vcnl4000_lock;struct vcnl4200_channel vcnl4200_al;struct vcnl4200_channel vcnl4200_ps; +uint32_t near_level; };struct vcnl4000_chip_spec {
@@ -343,6 +344,25 @@ static const struct vcnl4000_chip_spec vcnl4000_chip_spec_cfg[] = { }, }; +static ssize_t vcnl4000_read_near_level (struct iio_dev *indio_dev, +uintptr_t priv, +const struct iio_chan_spec *chan, +char *buf) +{ +struct vcnl4000_data *data =iio_priv (indio_dev); + +return sprintf (buf,"%u\n" , data->near_level); +} + +static const struct iio_chan_spec_ext_info vcnl4000_ext_info[] = { + { + .name ="nearlevel" , + .shared =IIO_SEPARATE , + .read = vcnl4000_read_near_level, + }, + {/* sentinel */ } +}; +static const struct iio_chan_spec vcnl4000_channels[] = { { .type =IIO_LIGHT ,
@@ -351,6 +371,7 @@ static const struct iio_chan_spec vcnl4000_channels[] = { }, { .type = IIO_PROXIMITY, .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), + .ext_info = vcnl4000_ext_info, } };
@@ -440,6 +461,10 @@ static int vcnl4000_probe(struct i2c_client *client,dev_dbg (&client->dev,"%s Ambient light/proximity sensor, Rev: %02x\n" , data->chip_spec->prod, data->rev); +if (device_property_read_u32 (&client->dev,"proximity-near-level" , + &data->near_level)) + data->near_level =0 ; + indio_dev->dev.parent = &client->dev; indio_dev->info = &vcnl4000_info; indio_dev->channels = vcnl4000_channels;
Signature · 1 line
2.23.0
Quoted 8 lines · On Sun, 5 Apr 2020 15:50:31 +0200 Guido Günther <[email protected]> wrote:
When an object can be considered close to the sensor is hardware dependent. Allowing to configure the property via device tree allows to configure this device specific value.
This is useful for e.g. iio-sensor-proxy to indicate to userspace if an object is close to the sensor.
Signed-off-by Guido Günther <[email protected]>
Applied. Thanks,
Quoted 61 lines
--- drivers/iio/light/vcnl4000.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+)drivers/iio/light/vcnl4000.c +25
-0@@ -83,6 +83,7 @@ struct vcnl4000_data {struct mutex vcnl4000_lock;struct vcnl4200_channel vcnl4200_al;struct vcnl4200_channel vcnl4200_ps; +uint32_t near_level; };struct vcnl4000_chip_spec {@@ -343,6 +344,25 @@ static const struct vcnl4000_chip_spec vcnl4000_chip_spec_cfg[] = { }, }; +static ssize_t vcnl4000_read_near_level (struct iio_dev *indio_dev, +uintptr_t priv, +const struct iio_chan_spec *chan, +char *buf) +{ +struct vcnl4000_data *data =iio_priv (indio_dev); + +return sprintf (buf,"%u\n" , data->near_level); +} + +static const struct iio_chan_spec_ext_info vcnl4000_ext_info[] = { + { + .name ="nearlevel" , + .shared =IIO_SEPARATE , + .read = vcnl4000_read_near_level, + }, + {/* sentinel */ } +}; +static const struct iio_chan_spec vcnl4000_channels[] = { { .type =IIO_LIGHT ,@@ -351,6 +371,7 @@ static const struct iio_chan_spec vcnl4000_channels[] = { }, { .type = IIO_PROXIMITY, .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), + .ext_info = vcnl4000_ext_info, } };@@ -440,6 +461,10 @@ static int vcnl4000_probe(struct i2c_client *client,dev_dbg (&client->dev,"%s Ambient light/proximity sensor, Rev: %02x\n" , data->chip_spec->prod, data->rev); +if (device_property_read_u32 (&client->dev,"proximity-near-level" , + &data->near_level)) + data->near_level =0 ; + indio_dev->dev.parent = &client->dev; indio_dev->info = &vcnl4000_info; indio_dev->channels = vcnl4000_channels;
PATCH v4 5/5 Documentation: ABI: document IIO in_proximity_nearlevel file
In reply to Guido GüntherThe vcnl4000 IIO driver introduced a new attribute "in_proximity_nearlevel". This adds it to the list of documented ABI for sysfs-bus-iio.
--- Documentation/ABI/testing/sysfs-bus-iio-proximity | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 Documentation/ABI/testing/sysfs-bus-iio-proximity
Documentation/ABI/testing/sysfs-bus-iio-proximity new file +10 -0
@@ -0,0 +1,10 @@ +What: /sys/bus/iio/devices/iio:deviceX/in_proximity_nearlevel +Date: March 2020 +KernelVersion: 5.7 +Contact: [email protected] +Description: + Near level for proximity sensors. This is a single integer + value that tells user space when an object should be + considered close to the device. If the value read from the + sensor is above or equal to the value in this file an object + should typically be considered near.
Signature · 1 line
2.23.0
Jonathan Cameron
maintainerRe: [PATCH v4 5/5] Documentation: ABI: document IIO in_proximity_nearlevel file
Quoted 5 lines · On Sun, 5 Apr 2020 15:50:32 +0200 Guido Günther <[email protected]> wrote:
The vcnl4000 IIO driver introduced a new attribute "
in_proximity_nearlevel". This adds it to the list of documented ABI for sysfs-bus-iio.Signed-off-by Guido Günther <[email protected]>
Applied to the togreg branch of iio.git and pushed out as testing for the autobuilders to play with it.
Thanks,
Jonathan
Quoted 21 lines
--- Documentation/ABI/testing/sysfs-bus-iio-proximity | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 Documentation/ABI/testing/sysfs-bus-iio-proximityDocumentation/ABI/testing/sysfs-bus-iio-proximity new file +10
-0@@ -0,0 +1,10 @@ +What: /sys/bus/iio/devices/iio:deviceX/in_proximity_nearlevel +Date: March 2020 +KernelVersion: 5.7 +Contact: [email protected] +Description: + Near level for proximity sensors. This is a single integer + value that tells user space when an object should be + considered close to the device. If the value read from the + sensor is above or equal to the value in this file an object + should typically be considered near.