From: Guenter Roeck <linux@roeck-us.net>
To: Marcello Sylvester Bauer <sylv@sylv.io>
Cc: linux-hwmon@vger.kernel.org,
Patrick Rudolph <patrick.rudolph@9elements.com>,
Jean Delvare <jdelvare@suse.com>,
Liam Girdwood <lgirdwood@gmail.com>,
Mark Brown <broonie@kernel.org>
Subject: Re: [PATCH v4 2/4] hwmon: (max6639) Add regulator support
Date: Thu, 3 Feb 2022 11:04:44 -0800 [thread overview]
Message-ID: <20220203190444.GA236698@roeck-us.net> (raw)
In-Reply-To: <2cb9ed600fb43cdc604799746fbde2e2942cdca6.1643299570.git.sylv@sylv.io>
On Thu, Jan 27, 2022 at 05:17:28PM +0100, Marcello Sylvester Bauer wrote:
> Add regulator support for boards where the fan-supply have to be
> powered up before it can be used.
>
> Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
> Signed-off-by: Marcello Sylvester Bauer <sylv@sylv.io>
Applied.
Thanks,
Guenter
> ---
> drivers/hwmon/max6639.c | 62 +++++++++++++++++++++++++++++++++++------
> 1 file changed, 54 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/hwmon/max6639.c b/drivers/hwmon/max6639.c
> index ccc0f047bd44..14bb7726f8d7 100644
> --- a/drivers/hwmon/max6639.c
> +++ b/drivers/hwmon/max6639.c
> @@ -87,6 +87,9 @@ struct max6639_data {
> /* Register values initialized only once */
> u8 ppr; /* Pulses per rotation 0..3 for 1..4 ppr */
> u8 rpm_range; /* Index in above rpm_ranges table */
> +
> + /* Optional regulator for FAN supply */
> + struct regulator *reg;
> };
>
> static struct max6639_data *max6639_update_device(struct device *dev)
> @@ -516,6 +519,11 @@ static int max6639_detect(struct i2c_client *client,
> return 0;
> }
>
> +static void max6639_regulator_disable(void *data)
> +{
> + regulator_disable(data);
> +}
> +
> static int max6639_probe(struct i2c_client *client)
> {
> struct device *dev = &client->dev;
> @@ -528,6 +536,28 @@ static int max6639_probe(struct i2c_client *client)
> return -ENOMEM;
>
> data->client = client;
> +
> + data->reg = devm_regulator_get_optional(dev, "fan");
> + if (IS_ERR(data->reg)) {
> + if (PTR_ERR(data->reg) != -ENODEV)
> + return PTR_ERR(data->reg);
> +
> + data->reg = NULL;
> + } else {
> + /* Spin up fans */
> + err = regulator_enable(data->reg);
> + if (err) {
> + dev_err(dev, "Failed to enable fan supply: %d\n", err);
> + return err;
> + }
> + err = devm_add_action_or_reset(dev, max6639_regulator_disable,
> + data->reg);
> + if (err) {
> + dev_err(dev, "Failed to register action: %d\n", err);
> + return err;
> + }
> + }
> +
> mutex_init(&data->update_lock);
>
> /* Initialize the max6639 chip */
> @@ -545,23 +575,39 @@ static int max6639_probe(struct i2c_client *client)
> static int max6639_suspend(struct device *dev)
> {
> struct i2c_client *client = to_i2c_client(dev);
> - int data = i2c_smbus_read_byte_data(client, MAX6639_REG_GCONFIG);
> - if (data < 0)
> - return data;
> + struct max6639_data *data = dev_get_drvdata(dev);
> + int ret = i2c_smbus_read_byte_data(client, MAX6639_REG_GCONFIG);
> +
> + if (ret < 0)
> + return ret;
> +
> + if (data->reg)
> + regulator_disable(data->reg);
>
> return i2c_smbus_write_byte_data(client,
> - MAX6639_REG_GCONFIG, data | MAX6639_GCONFIG_STANDBY);
> + MAX6639_REG_GCONFIG, ret | MAX6639_GCONFIG_STANDBY);
> }
>
> static int max6639_resume(struct device *dev)
> {
> struct i2c_client *client = to_i2c_client(dev);
> - int data = i2c_smbus_read_byte_data(client, MAX6639_REG_GCONFIG);
> - if (data < 0)
> - return data;
> + struct max6639_data *data = dev_get_drvdata(dev);
> + int ret;
> +
> + if (data->reg) {
> + ret = regulator_enable(data->reg);
> + if (ret) {
> + dev_err(dev, "Failed to enable fan supply: %d\n", ret);
> + return ret;
> + }
> + }
> +
> + ret = i2c_smbus_read_byte_data(client, MAX6639_REG_GCONFIG);
> + if (ret < 0)
> + return ret;
>
> return i2c_smbus_write_byte_data(client,
> - MAX6639_REG_GCONFIG, data & ~MAX6639_GCONFIG_STANDBY);
> + MAX6639_REG_GCONFIG, ret & ~MAX6639_GCONFIG_STANDBY);
> }
> #endif /* CONFIG_PM_SLEEP */
>
next prev parent reply other threads:[~2022-02-03 19:04 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-27 16:17 [PATCH v4 0/4] Add max6639 regulator and devicetree support Marcello Sylvester Bauer
2022-01-27 16:17 ` [PATCH v4 1/4] hwmon: (max6639) Update Datasheet URL Marcello Sylvester Bauer
2022-02-03 19:02 ` Guenter Roeck
2022-01-27 16:17 ` [PATCH v4 2/4] hwmon: (max6639) Add regulator support Marcello Sylvester Bauer
2022-02-03 19:04 ` Guenter Roeck [this message]
2022-01-27 16:17 ` [PATCH v4 3/4] dt-bindings: hwmon: Add binding for max6639 Marcello Sylvester Bauer
2022-02-03 19:07 ` Guenter Roeck
2022-02-04 23:32 ` Rob Herring
2022-02-07 10:03 ` sylv
2022-02-07 23:17 ` Guenter Roeck
2022-01-27 16:17 ` [PATCH v4 4/4] hwmon: (max6639) Change from pdata to dt configuration Marcello Sylvester Bauer
2022-02-03 19:13 ` Guenter Roeck
2022-05-19 10:31 ` Marcello Sylvester Bauer
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=20220203190444.GA236698@roeck-us.net \
--to=linux@roeck-us.net \
--cc=broonie@kernel.org \
--cc=jdelvare@suse.com \
--cc=lgirdwood@gmail.com \
--cc=linux-hwmon@vger.kernel.org \
--cc=patrick.rudolph@9elements.com \
--cc=sylv@sylv.io \
/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.