Linux-IIO Archive on lore.kernel.org
 help / color / Atom feed
From: Daniel Campello <campello@chromium.org>
To: LKML <devicetree@vger.kernel.org>, LKML <linux-kernel@vger.kernel.org>
Cc: Jonathan Cameron <jic23@kernel.org>,
	Stephen Boyd <swboyd@chromium.org>,
	Douglas Anderson <dianders@chromium.org>,
	Daniel Campello <campello@chromium.org>,
	Andy Shevchenko <andy.shevchenko@gmail.com>,
	Gwendal Grignou <gwendal@chromium.org>,
	Hartmut Knaack <knaack.h@gmx.de>,
	Lars-Peter Clausen <lars@metafoo.de>,
	Peter Meerwald-Stadler <pmeerw@pmeerw.net>,
	linux-iio@vger.kernel.org
Subject: [PATCH v3 14/15] iio: sx9310: Enable vdd and svdd regulators at probe
Date: Fri, 31 Jul 2020 10:48:51 -0600
Message-ID: <20200731104555.v3.14.Ib7bdc8340021d8515b430498fb6686eedf22c9f2@changeid> (raw)
In-Reply-To: <20200731164853.3020946-1-campello@chromium.org>

From: Stephen Boyd <swboyd@chromium.org>

Enable the main power supply (vdd) and digital IO power supply (svdd)
during probe so that the i2c communication and device works properly on
boards that aggressively power gate these supplies.

Signed-off-by: Stephen Boyd <swboyd@chromium.org>
Reviewed-by: Douglas Anderson <dianders@chromium.org>
Signed-off-by: Daniel Campello <campello@chromium.org>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
---

Changes in v3: None
Changes in v2: None

 drivers/iio/proximity/sx9310.c | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/drivers/iio/proximity/sx9310.c b/drivers/iio/proximity/sx9310.c
index aa21f6f1a58e3c..a20cd6a4dad729 100644
--- a/drivers/iio/proximity/sx9310.c
+++ b/drivers/iio/proximity/sx9310.c
@@ -19,6 +19,7 @@
 #include <linux/module.h>
 #include <linux/pm.h>
 #include <linux/regmap.h>
+#include <linux/regulator/consumer.h>
 #include <linux/slab.h>
 
 #include <linux/iio/buffer.h>
@@ -120,6 +121,7 @@ struct sx9310_data {
 	struct i2c_client *client;
 	struct iio_trigger *trig;
 	struct regmap *regmap;
+	struct regulator_bulk_data supplies[2];
 	/*
 	 * Last reading of the proximity status for each channel.
 	 * We only send an event to user space when this changes.
@@ -879,6 +881,13 @@ static int sx9310_set_indio_dev_name(struct device *dev,
 	return 0;
 }
 
+static void sx9310_regulator_disable(void *_data)
+{
+	struct sx9310_data *data = _data;
+
+	regulator_bulk_disable(ARRAY_SIZE(data->supplies), data->supplies);
+}
+
 static int sx9310_probe(struct i2c_client *client)
 {
 	int ret;
@@ -892,6 +901,8 @@ static int sx9310_probe(struct i2c_client *client)
 
 	data = iio_priv(indio_dev);
 	data->client = client;
+	data->supplies[0].supply = "vdd";
+	data->supplies[1].supply = "svdd";
 	mutex_init(&data->mutex);
 	init_completion(&data->completion);
 
@@ -899,6 +910,21 @@ static int sx9310_probe(struct i2c_client *client)
 	if (IS_ERR(data->regmap))
 		return PTR_ERR(data->regmap);
 
+	ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(data->supplies),
+				      data->supplies);
+	if (ret)
+		return ret;
+
+	ret = regulator_bulk_enable(ARRAY_SIZE(data->supplies), data->supplies);
+	if (ret)
+		return ret;
+	/* Must wait for Tpor time after initial power up */
+	usleep_range(1000, 1100);
+
+	ret = devm_add_action_or_reset(dev, sx9310_regulator_disable, data);
+	if (ret)
+		return ret;
+
 	ret = regmap_read(data->regmap, SX9310_REG_WHOAMI, &data->whoami);
 	if (ret) {
 		dev_err(dev, "error in reading WHOAMI register: %d\n", ret);
-- 
2.28.0.163.g6104cc2f0b6-goog


  parent reply index

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-31 16:48 [PATCH v3 00/15] sx9310 iio driver updates Daniel Campello
2020-07-31 16:48 ` [PATCH v3 01/15] dt-bindings: iio: Add bindings for sx9310 sensor Daniel Campello
2020-07-31 22:47   ` Rob Herring
2020-08-01 15:06   ` Jonathan Cameron
2020-08-03 19:00     ` Stephen Boyd
2020-08-04  2:01       ` Rob Herring
2020-08-06 18:14         ` Jonathan Cameron
2020-08-06 22:12           ` Rob Herring
2020-08-06 23:03             ` Stephen Boyd
2020-07-31 16:48 ` [PATCH v3 02/15] iio: sx9310: Update macros declarations Daniel Campello
2020-08-01 14:47   ` Jonathan Cameron
2020-07-31 16:48 ` [PATCH v3 03/15] iio: sx9310: Fix irq handling Daniel Campello
2020-07-31 18:03   ` Stephen Boyd
2020-07-31 18:35   ` Andy Shevchenko
2020-07-31 16:48 ` [PATCH v3 04/15] iio: sx9310: Remove acpi and of table macros Daniel Campello
2020-07-31 16:48 ` [PATCH v3 05/15] iio: sx9310: Change from .probe to .probe_new Daniel Campello
2020-07-31 16:48 ` [PATCH v3 06/15] iio: sx9310: Fixes various memory handling Daniel Campello
2020-07-31 19:24   ` Andy Shevchenko
2020-08-01 14:52     ` Jonathan Cameron
2020-07-31 16:48 ` [PATCH v3 07/15] iio: sx9310: Use long instead of int for channel bitmaps Daniel Campello
2020-07-31 18:38   ` Stephen Boyd
2020-07-31 16:48 ` [PATCH v3 08/15] iio: sx9310: Use regmap_read_poll_timeout() for compensation Daniel Campello
2020-07-31 18:39   ` Stephen Boyd
2020-07-31 16:48 ` [PATCH v3 09/15] iio: sx9310: Update copyright Daniel Campello
2020-07-31 16:48 ` [PATCH v3 10/15] iio: sx9310: Simplify error return handling Daniel Campello
2020-07-31 16:48 ` [PATCH v3 11/15] iio: sx9310: Use variable to hold &client->dev Daniel Campello
2020-07-31 16:48 ` [PATCH v3 12/15] iio: sx9310: Miscellaneous format fixes Daniel Campello
2020-07-31 16:48 ` [PATCH v3 13/15] iio: sx9310: Drop channel_users[] Daniel Campello
2020-07-31 16:48 ` Daniel Campello [this message]
2020-07-31 16:48 ` [PATCH v3 15/15] iio: sx9310: Use irq trigger flags from firmware Daniel Campello
2020-07-31 19:46   ` Andy Shevchenko
2020-08-01 15:01     ` 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=20200731104555.v3.14.Ib7bdc8340021d8515b430498fb6686eedf22c9f2@changeid \
    --to=campello@chromium.org \
    --cc=andy.shevchenko@gmail.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dianders@chromium.org \
    --cc=gwendal@chromium.org \
    --cc=jic23@kernel.org \
    --cc=knaack.h@gmx.de \
    --cc=lars@metafoo.de \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pmeerw@pmeerw.net \
    --cc=swboyd@chromium.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

Linux-IIO Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-iio/0 linux-iio/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-iio linux-iio/ https://lore.kernel.org/linux-iio \
		linux-iio@vger.kernel.org
	public-inbox-index linux-iio

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-iio


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git