All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Cameron <jic23@kernel.org>
To: Brian Masney <masneyb@onstation.org>
Cc: robh+dt@kernel.org, mark.rutland@arm.com, andy.gross@linaro.org,
	david.brown@linaro.org, linux-iio@vger.kernel.org,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-arm-msm@vger.kernel.org, linux-soc@vger.kernel.org,
	jonathan@marek.ca, jmaneyrol@invensense.com, knaack.h@gmx.de,
	lars@metafoo.de, pmeerw@pmeerw.net, mkelly@xevo.com,
	fischerdouglasc@gmail.com, bshah@kde.org, ctatlor97@gmail.com
Subject: Re: [PATCH v3 3/9] iio: tsl2772: add support for reading proximity led settings from device tree
Date: Sat, 18 Aug 2018 18:04:23 +0100	[thread overview]
Message-ID: <20180818180423.678a1a09@archlinux> (raw)
In-Reply-To: <20180803001900.25371-4-masneyb@onstation.org>

On Thu,  2 Aug 2018 20:18:54 -0400
Brian Masney <masneyb@onstation.org> wrote:

> This patch adds support for optionally reading the proximity led diode
> and current 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@onstation.org>

Applied to the togreg branch of iio.git and pushed out as testing for
the autobuilders to play with them.

thanks,

Jonathan

> ---
>  drivers/iio/light/tsl2772.c | 81 +++++++++++++++++++++++++++++++++++++
>  1 file changed, 81 insertions(+)
> 
> diff --git a/drivers/iio/light/tsl2772.c b/drivers/iio/light/tsl2772.c
> index df5b2a0da96c..ae00edf0d87e 100644
> --- a/drivers/iio/light/tsl2772.c
> +++ b/drivers/iio/light/tsl2772.c
> @@ -107,6 +107,8 @@
>  #define TSL2772_ALS_GAIN_TRIM_MIN	250
>  #define TSL2772_ALS_GAIN_TRIM_MAX	4000
>  
> +#define TSL2772_MAX_PROX_LEDS		2
> +
>  /* Device family members */
>  enum {
>  	tsl2571,
> @@ -141,6 +143,14 @@ struct tsl2772_chip_info {
>  	const struct iio_info *info;
>  };
>  
> +static const int tsl2772_led_currents[][2] = {
> +	{ 100000, TSL2772_100_mA },
> +	{  50000, TSL2772_50_mA },
> +	{  25000, TSL2772_25_mA },
> +	{  13000, TSL2772_13_mA },
> +	{      0, 0 }
> +};
> +
>  struct tsl2772_chip {
>  	kernel_ulong_t id;
>  	struct mutex prox_mutex;
> @@ -515,6 +525,75 @@ static int tsl2772_get_prox(struct iio_dev *indio_dev)
>  	return ret;
>  }
>  
> +static int tsl2772_read_prox_led_current(struct tsl2772_chip *chip)
> +{
> +	struct device_node *of_node = chip->client->dev.of_node;
> +	int ret, tmp, i;
> +
> +	ret = of_property_read_u32(of_node, "led-max-microamp", &tmp);
> +	if (ret < 0)
> +		return ret;
> +
> +	for (i = 0; tsl2772_led_currents[i][0] != 0; i++) {
> +		if (tmp == tsl2772_led_currents[i][0]) {
> +			chip->settings.prox_power = tsl2772_led_currents[i][1];
> +			return 0;
> +		}
> +	}
> +
> +	dev_err(&chip->client->dev, "Invalid value %d for led-max-microamp\n",
> +		tmp);
> +
> +	return -EINVAL;
> +
> +}
> +
> +static int tsl2772_read_prox_diodes(struct tsl2772_chip *chip)
> +{
> +	struct device_node *of_node = chip->client->dev.of_node;
> +	int i, ret, num_leds, prox_diode_mask;
> +	u32 leds[TSL2772_MAX_PROX_LEDS];
> +
> +	ret = of_property_count_u32_elems(of_node, "amstaos,proximity-diodes");
> +	if (ret < 0)
> +		return ret;
> +
> +	num_leds = ret;
> +	if (num_leds > TSL2772_MAX_PROX_LEDS)
> +		num_leds = TSL2772_MAX_PROX_LEDS;
> +
> +	ret = of_property_read_u32_array(of_node, "amstaos,proximity-diodes",
> +					 leds, num_leds);
> +	if (ret < 0) {
> +		dev_err(&chip->client->dev,
> +			"Invalid value for amstaos,proximity-diodes: %d.\n",
> +			ret);
> +		return ret;
> +	}
> +
> +	prox_diode_mask = 0;
> +	for (i = 0; i < num_leds; i++) {
> +		if (leds[i] == 0)
> +			prox_diode_mask |= TSL2772_DIODE0;
> +		else if (leds[i] == 1)
> +			prox_diode_mask |= TSL2772_DIODE1;
> +		else {
> +			dev_err(&chip->client->dev,
> +				"Invalid value %d in amstaos,proximity-diodes.\n",
> +				leds[i]);
> +			return -EINVAL;
> +		}
> +	}
> +
> +	return 0;
> +}
> +
> +static void tsl2772_parse_dt(struct tsl2772_chip *chip)
> +{
> +	tsl2772_read_prox_led_current(chip);
> +	tsl2772_read_prox_diodes(chip);
> +}
> +
>  /**
>   * tsl2772_defaults() - Populates the device nominal operating parameters
>   *                      with those provided by a 'platform' data struct or
> @@ -541,6 +620,8 @@ static void tsl2772_defaults(struct tsl2772_chip *chip)
>  		memcpy(chip->tsl2772_device_lux,
>  		       tsl2772_default_lux_table_group[chip->id],
>  		       TSL2772_DEFAULT_TABLE_BYTES);
> +
> +	tsl2772_parse_dt(chip);
>  }
>  
>  /**

  reply	other threads:[~2018-08-18 17:04 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-03  0:18 [PATCH v3 0/9] treewide: add support for various sensors on the LG Nexus 5 (hammerhead) Brian Masney
2018-08-03  0:18 ` [PATCH v3 1/9] iio: imu: mpu6050: add support for regulator framework Brian Masney
2018-08-03 21:44   ` Jonathan Cameron
2018-08-03  0:18 ` [PATCH v3 2/9] ARM: dts: qcom: msm8974-hammerhead: add device tree bindings for mpu6515 Brian Masney
2018-08-03 21:46   ` Jonathan Cameron
2018-08-03  0:18 ` [PATCH v3 3/9] iio: tsl2772: add support for reading proximity led settings from device tree Brian Masney
2018-08-18 17:04   ` Jonathan Cameron [this message]
2018-08-03  0:18 ` [PATCH v3 4/9] dt-bindings: iio: tsl2772: add new bindings Brian Masney
2018-08-03 21:48   ` Jonathan Cameron
2018-08-07 16:54     ` Rob Herring
2018-08-18 17:01       ` Jonathan Cameron
2018-08-03  0:18 ` [PATCH v3 5/9] iio: tsl2772: add support for regulator framework Brian Masney
2018-08-03 21:50   ` Jonathan Cameron
2018-08-03  0:18 ` [PATCH v3 6/9] dt-bindings: iio: tsl2772: add bindings " Brian Masney
2018-08-03 21:51   ` Jonathan Cameron
2018-08-07 17:20     ` Rob Herring
2018-08-18 17:02       ` Jonathan Cameron
2018-08-03  0:18 ` [PATCH v3 7/9] iio: tsl2772: add support for avago,apds9930 Brian Masney
2018-08-03 21:53   ` Jonathan Cameron
2018-08-18 17:07     ` Jonathan Cameron
2018-08-03  0:18 ` [PATCH v3 8/9] dt-bindings: iio: tsl2772: add binding " Brian Masney
2018-08-03 21:54   ` Jonathan Cameron
2018-08-07 17:21   ` Rob Herring
2018-08-18 17:06     ` Jonathan Cameron
2018-08-03  0:19 ` [PATCH v3 9/9] ARM: dts: qcom: msm8974-hammerhead: add device tree bindings for ALS / proximity Brian Masney
2018-08-18 17:09   ` Jonathan Cameron

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180818180423.678a1a09@archlinux \
    --to=jic23@kernel.org \
    --cc=andy.gross@linaro.org \
    --cc=bshah@kde.org \
    --cc=ctatlor97@gmail.com \
    --cc=david.brown@linaro.org \
    --cc=devicetree@vger.kernel.org \
    --cc=fischerdouglasc@gmail.com \
    --cc=jmaneyrol@invensense.com \
    --cc=jonathan@marek.ca \
    --cc=knaack.h@gmx.de \
    --cc=lars@metafoo.de \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-soc@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=masneyb@onstation.org \
    --cc=mkelly@xevo.com \
    --cc=pmeerw@pmeerw.net \
    --cc=robh+dt@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.