This patch adds support for optionally reading the prox_diode and prox_power settings from device tree. This was tested using a LG Nexus 5 (hammerhead) which requires a different diode than the driver default for the IR LED. Signed-off-by: Brian Masney <masneyb@xxxxxxxxxxxxx> --- The next patch in the series removes the tsl2772 driver from the trivial-devices.txt file. I separated it out so that change can go through device tree. .../devicetree/bindings/iio/light/tsl2772.txt | 39 +++++++++++++++++++ drivers/iio/light/tsl2772.c | 16 ++++++++ include/dt-bindings/iio/amstaos,tsl2772.h | 24 ++++++++++++ 3 files changed, 79 insertions(+) create mode 100644 Documentation/devicetree/bindings/iio/light/tsl2772.txt create mode 100644 include/dt-bindings/iio/amstaos,tsl2772.h diff --git a/Documentation/devicetree/bindings/iio/light/tsl2772.txt b/Documentation/devicetree/bindings/iio/light/tsl2772.txt new file mode 100644 index 000000000000..ab553d52b9fc --- /dev/null +++ b/Documentation/devicetree/bindings/iio/light/tsl2772.txt @@ -0,0 +1,39 @@ +* AMS/TAOS ALS and proximity sensor + +Required properties: + + - compatible: Should be one of + "amstaos,tsl2571" + "amstaos,tsl2671" + "amstaos,tmd2671" + "amstaos,tsl2771" + "amstaos,tmd2771" + "amstaos,tsl2572" + "amstaos,tsl2672" + "amstaos,tmd2672" + "amstaos,tsl2772" + "amstaos,tmd2772" + - reg: the I2C address of the device + +Optional properties: + + - amstaos,prox_diode - must be TSL2772_DIODE0, TSL2772_DIODE1, or + TSL2772_DIODE_BOTH. + - amstaos,prox_power - must be TSL2772_100_mA, TSL2772_50_mA, TSL2772_25_mA, + or TSL2772_13_mA. + - interrupt-parent: should be the phandle for the interrupt controller + - interrupts: the sole interrupt generated by the device + + Refer to interrupt-controller/interrupts.txt for generic interrupt client + node bindings. + +Example: + +#include <dt-bindings/iio/amstaos,tsl2772.h> + +tsl2772@39 { + compatible = "amstaos,tsl2772"; + reg = <0x39>; + interrupts-extended = <&msmgpio 61 IRQ_TYPE_EDGE_FALLING>; + amstaos,prox_diode = <TSL2772_DIODE0>; +}; diff --git a/drivers/iio/light/tsl2772.c b/drivers/iio/light/tsl2772.c index 34d42a2504c9..0be57f2ecb02 100644 --- a/drivers/iio/light/tsl2772.c +++ b/drivers/iio/light/tsl2772.c @@ -515,6 +515,18 @@ static int tsl2772_get_prox(struct iio_dev *indio_dev) return ret; } +#ifdef CONFIG_OF +static void tsl2772_parse_dt(struct tsl2772_chip *chip) +{ + struct device_node *of_node = chip->client->dev.of_node; + + of_property_read_u32(of_node, "amstaos,prox_diode", + &chip->settings.prox_diode); + of_property_read_u32(of_node, "amstaos,prox_power", + &chip->settings.prox_power); +} +#endif + /** * tsl2772_defaults() - Populates the device nominal operating parameters * with those provided by a 'platform' data struct or @@ -541,6 +553,10 @@ static void tsl2772_defaults(struct tsl2772_chip *chip) memcpy(chip->tsl2772_device_lux, tsl2772_default_lux_table_group[chip->id], TSL2772_DEFAULT_TABLE_BYTES); + +#ifdef CONFIG_OF + tsl2772_parse_dt(chip); +#endif } /** diff --git a/include/dt-bindings/iio/amstaos,tsl2772.h b/include/dt-bindings/iio/amstaos,tsl2772.h new file mode 100644 index 000000000000..ad6f9fbc0845 --- /dev/null +++ b/include/dt-bindings/iio/amstaos,tsl2772.h @@ -0,0 +1,24 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Device driver for monitoring ambient light intensity (lux) + * and proximity (prox) within the TAOS TSL2772 family of devices. + * + * Copyright (c) 2012 TAOS Corporation. + * Copyright (c) 2017-2018 Brian Masney <masneyb@xxxxxxxxxxxxx> + */ + +#ifndef _DT_BINDINGS_AMSTAOS_TSL2772_H +#define _DT_BINDINGS_AMSTAOS_TSL2772_H + +/* Proximity diode to use */ +#define TSL2772_DIODE0 0x01 +#define TSL2772_DIODE1 0x02 +#define TSL2772_DIODE_BOTH 0x03 + +/* LED Power */ +#define TSL2772_100_mA 0x00 +#define TSL2772_50_mA 0x01 +#define TSL2772_25_mA 0x02 +#define TSL2772_13_mA 0x03 + +#endif /* _DT_BINDINGS_AMSTAOS_TSL2772_H */ -- 2.17.1 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html