On Tue, 17 Jul 2018 04:41:54 -0400 Brian Masney <masneyb@xxxxxxxxxxxxx> wrote: > 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> I think we can make this binding more 'generic' as right now the amstaos bindings aren't even general enough to apply to future amstaos devices that need a similar binding. I'm always anti defines rather than real values in DT (where possible) and I think there is no reason not to use real values here. Jonathan > --- > 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 Can we have two separate parameters to enable them? > + > +/* LED Power */ > +#define TSL2772_100_mA 0x00 > +#define TSL2772_50_mA 0x01 > +#define TSL2772_25_mA 0x02 > +#define TSL2772_13_mA 0x03 I'd like to see real numbers rather than defines. List the valid values in the binding then match them to register addresses in the driver. A different instance of this binding for a different taos device might have different values that are valid. > + > +#endif /* _DT_BINDINGS_AMSTAOS_TSL2772_H */ -- 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