| From: |
| Subhajit Ghosh <subhajit.ghosh-AT-tweaklogic.com> |
| To: |
| Jonathan Cameron <jic23-AT-kernel.org>, Lars-Peter Clausen <lars-AT-metafoo.de>, Rob Herring <robh+dt-AT-kernel.org>, Krzysztof Kozlowski <krzysztof.kozlowski+dt-AT-linaro.org>, Conor Dooley <conor+dt-AT-kernel.org>, Matti Vaittinen <mazziesaccount-AT-gmail.com>, Andy Shevchenko <andriy.shevchenko-AT-linux.intel.com>, Paul Gazzillo <paul-AT-pgazz.com> |
| Subject: |
| [PATCH v2 0/2] Support for Avago APDS9306 Ambient Light Sensor |
| Date: |
| Fri, 27 Oct 2023 18:15:43 +1030 |
| Message-ID: |
| <20231027074545.6055-1-subhajit.ghosh@tweaklogic.com> |
| Cc: |
| Subhajit Ghosh <subhajit.ghosh-AT-tweaklogic.com>, Matt Ranostay <matt-AT-ranostay.sg>, Stefan Windfeldt-Prytz <stefan.windfeldt-prytz-AT-axis.com>, linux-iio-AT-vger.kernel.org, devicetree-AT-vger.kernel.org, linux-kernel-AT-vger.kernel.org |
| Archive-link: |
| Article |
This series adds support for Avago (Broadcom) APDS9306 Ambient Light
Sensor.
Datasheet: https://docs.broadcom.com/doc/AV02-4755EN
Following features are supported:
- I2C interface
- 2 channels - als and clear
- Raw data for als and clear channels
- Up to 20 bit resolution
- 20 bit data register for each channel
- Common Configurable items for both channels
- Integration Time
- Scale
- High and Low threshold interrupts for each channel
- Selection of interrupt channels - als or clear
- Selection of interrupt mode - threshold or adaptive
- Level selection for adaptive threshold interrupts
- Persistence (Period) level selection for interrupts
This driver also uses the IIO GTS Helpers Namespace for Scales, Gains
and Integration time implementation.
root@stm32mp1:~# tree -I 'dev|name|of_node|power|subsystem|uevent' \
> /sys/bus/iio/devices/iio:device1/
/sys/bus/iio/devices/iio:device1/
|-- events
| |-- in_illuminance_thresh_either_en
| |-- in_intensity_clear_thresh_either_en
| |-- thresh_adaptive_either_en
| |-- thresh_adaptive_either_value
| |-- thresh_adaptive_either_values_available
| |-- thresh_either_period
| |-- thresh_either_period_available
| |-- thresh_falling_value
| `-- thresh_rising_value
|-- in_illuminance_raw
|-- in_intensity_clear_raw
|-- integration_time
|-- integration_time_available
|-- sampling_frequency
|-- sampling_frequency_available
|-- scale
|-- scale_available
`-- waiting_for_supplier
1 directory, 18 files
v1 -> v2
- apds9306 driver
- Fixed kernel build failure due to probe_new(), replaced with probe()
v0 -> v1
- dt_bindings
- Squashed apds9300 and apds9600 dt bindings, added apds9306 bindings on
top of that
- Added detailed commit message for dt_bindings
- apds9306 driver
- Fixes as per review
- Not disabling the regmap internal lock
- Removing processed attribute for als channel which exposes raw values
- Modified the iio gts scale implementation for above change
- Not implementing a fallback and warning for compatibility and part ID
mismatch as suggested by Matti and Jonathan as Rob insisted on having
a single compatible string for the driver (if the device can power up
with a single compatible string, which it does).
Subhajit Ghosh (2):
dt-bindings: iio: light: Avago APDS9306
iio: light: Add support for APDS9306 Light Sensor
.../bindings/iio/light/avago,apds9300.yaml | 35 +-
.../bindings/iio/light/avago,apds9960.yaml | 44 -
drivers/iio/light/Kconfig | 12 +
drivers/iio/light/Makefile | 1 +
drivers/iio/light/apds9306.c | 1326 +++++++++++++++++
5 files changed, 1369 insertions(+), 49 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/iio/light/avago,apds9960.yaml
create mode 100644 drivers/iio/light/apds9306.c
base-commit: 611da07b89fdd53f140d7b33013f255bf0ed8f34
--
2.34.1