All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
From: heiko@sntech.de (Heiko Stübner)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC PATCH 14/15] regulator: pwm: implement ->enable(), ->disable() and ->is_enabled methods
Date: Wed, 01 Jul 2015 13:58:09 +0200	[thread overview]
Message-ID: <3495901.qMzLCVWCDl@diego> (raw)
In-Reply-To: <1435738921-25027-15-git-send-email-boris.brezillon@free-electrons.com>

Am Mittwoch, 1. Juli 2015, 10:22:00 schrieb Boris Brezillon:
> Implement the ->enable(), ->disable() and ->is_enabled methods and remove
> the PWM call in ->set_voltage_sel().
> This is particularly important for critical regulators tagged as always-on,
> because not claiming the PWM (and its dependencies) might lead to
> unpredictable behavior (like a system hang because the PWM clk is only
> claimed when the PWM device is enabled).
> 
> Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
> ---
>  drivers/regulator/pwm-regulator.c | 32 ++++++++++++++++++++++++++------
>  1 file changed, 26 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/regulator/pwm-regulator.c
> b/drivers/regulator/pwm-regulator.c index 12b4d9d..8159518 100644
> --- a/drivers/regulator/pwm-regulator.c
> +++ b/drivers/regulator/pwm-regulator.c
> @@ -59,12 +59,6 @@ static int pwm_regulator_set_voltage_sel(struct
> regulator_dev *rdev,
> 
>  	drvdata->state = selector;
> 
> -	ret = pwm_enable(drvdata->pwm);
> -	if (ret) {
> -		dev_err(&rdev->dev, "Failed to enable PWM\n");
> -		return ret;
> -	}
> -
>  	return 0;
>  }
> 
> @@ -79,11 +73,37 @@ static int pwm_regulator_list_voltage(struct
> regulator_dev *rdev, return drvdata->duty_cycle_table[selector].uV;
>  }
> 
> +static int pwm_regulator_enable(struct regulator_dev *dev)
> +{
> +	struct pwm_regulator_data *drvdata = rdev_get_drvdata(dev);
> +
> +	return pwm_enable(drvdata->pwm);
> +}
> +
> +static int pwm_regulator_disable(struct regulator_dev *dev)
> +{
> +	struct pwm_regulator_data *drvdata = rdev_get_drvdata(dev);
> +
> +	pwm_disable(drvdata->pwm);
> +
> +	return 0;
> +}
> +
> +static int pwm_regulator_is_enabled(struct regulator_dev *dev)
> +{
> +       struct pwm_regulator_data *drvdata = rdev_get_drvdata(dev);
> +
> +       return pwm_is_enabled(drvdata->pwm);
> +}

nit: indentation is wrong in pwm_regulator_is_enabled (spaces instead of tabs)

WARNING: multiple messages have this Message-ID (diff)
From: "Heiko Stübner" <heiko@sntech.de>
To: linux-arm-kernel@lists.infradead.org
Cc: Boris Brezillon <boris.brezillon@free-electrons.com>,
	Thierry Reding <thierry.reding@gmail.com>,
	linux-pwm@vger.kernel.org, Alexandre Courbot <gnurou@gmail.com>,
	linux-fbdev@vger.kernel.org, Lee Jones <lee.jones@linaro.org>,
	Stephen Warren <swarren@wwwdotorg.org>,
	Tomi Valkeinen <tomi.valkeinen@ti.com>,
	Bryan Wu <cooloney@gmail.com>,
	Liam Girdwood <lgirdwood@gmail.com>,
	Doug Anderson <dianders@google.com>,
	Mark Brown <broonie@kernel.org>,
	Richard Purdie <rpurdie@rpsys.net>,
	Jingoo Han <jingoohan1@gmail.com>,
	linux-tegra@vger.kernel.org,
	Maxime Ripard <maxime.ripard@free-electrons.com>,
	Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>,
	Jacek Anaszewski <j.anaszewski@samsung.com>,
	linux-leds@vger.kernel.org
Subject: Re: [RFC PATCH 14/15] regulator: pwm: implement ->enable(), ->disable() and ->is_enabled methods
Date: Wed, 01 Jul 2015 13:58:09 +0200	[thread overview]
Message-ID: <3495901.qMzLCVWCDl@diego> (raw)
In-Reply-To: <1435738921-25027-15-git-send-email-boris.brezillon@free-electrons.com>

Am Mittwoch, 1. Juli 2015, 10:22:00 schrieb Boris Brezillon:
> Implement the ->enable(), ->disable() and ->is_enabled methods and remove
> the PWM call in ->set_voltage_sel().
> This is particularly important for critical regulators tagged as always-on,
> because not claiming the PWM (and its dependencies) might lead to
> unpredictable behavior (like a system hang because the PWM clk is only
> claimed when the PWM device is enabled).
> 
> Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
> ---
>  drivers/regulator/pwm-regulator.c | 32 ++++++++++++++++++++++++++------
>  1 file changed, 26 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/regulator/pwm-regulator.c
> b/drivers/regulator/pwm-regulator.c index 12b4d9d..8159518 100644
> --- a/drivers/regulator/pwm-regulator.c
> +++ b/drivers/regulator/pwm-regulator.c
> @@ -59,12 +59,6 @@ static int pwm_regulator_set_voltage_sel(struct
> regulator_dev *rdev,
> 
>  	drvdata->state = selector;
> 
> -	ret = pwm_enable(drvdata->pwm);
> -	if (ret) {
> -		dev_err(&rdev->dev, "Failed to enable PWM\n");
> -		return ret;
> -	}
> -
>  	return 0;
>  }
> 
> @@ -79,11 +73,37 @@ static int pwm_regulator_list_voltage(struct
> regulator_dev *rdev, return drvdata->duty_cycle_table[selector].uV;
>  }
> 
> +static int pwm_regulator_enable(struct regulator_dev *dev)
> +{
> +	struct pwm_regulator_data *drvdata = rdev_get_drvdata(dev);
> +
> +	return pwm_enable(drvdata->pwm);
> +}
> +
> +static int pwm_regulator_disable(struct regulator_dev *dev)
> +{
> +	struct pwm_regulator_data *drvdata = rdev_get_drvdata(dev);
> +
> +	pwm_disable(drvdata->pwm);
> +
> +	return 0;
> +}
> +
> +static int pwm_regulator_is_enabled(struct regulator_dev *dev)
> +{
> +       struct pwm_regulator_data *drvdata = rdev_get_drvdata(dev);
> +
> +       return pwm_is_enabled(drvdata->pwm);
> +}

nit: indentation is wrong in pwm_regulator_is_enabled (spaces instead of tabs)

WARNING: multiple messages have this Message-ID (diff)
From: "Heiko Stübner" <heiko@sntech.de>
To: linux-arm-kernel@lists.infradead.org
Subject: Re: [RFC PATCH 14/15] regulator: pwm: implement ->enable(), ->disable() and ->is_enabled methods
Date: Wed, 01 Jul 2015 11:58:09 +0000	[thread overview]
Message-ID: <3495901.qMzLCVWCDl@diego> (raw)
In-Reply-To: <1435738921-25027-15-git-send-email-boris.brezillon@free-electrons.com>

Am Mittwoch, 1. Juli 2015, 10:22:00 schrieb Boris Brezillon:
> Implement the ->enable(), ->disable() and ->is_enabled methods and remove
> the PWM call in ->set_voltage_sel().
> This is particularly important for critical regulators tagged as always-on,
> because not claiming the PWM (and its dependencies) might lead to
> unpredictable behavior (like a system hang because the PWM clk is only
> claimed when the PWM device is enabled).
> 
> Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
> ---
>  drivers/regulator/pwm-regulator.c | 32 ++++++++++++++++++++++++++------
>  1 file changed, 26 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/regulator/pwm-regulator.c
> b/drivers/regulator/pwm-regulator.c index 12b4d9d..8159518 100644
> --- a/drivers/regulator/pwm-regulator.c
> +++ b/drivers/regulator/pwm-regulator.c
> @@ -59,12 +59,6 @@ static int pwm_regulator_set_voltage_sel(struct
> regulator_dev *rdev,
> 
>  	drvdata->state = selector;
> 
> -	ret = pwm_enable(drvdata->pwm);
> -	if (ret) {
> -		dev_err(&rdev->dev, "Failed to enable PWM\n");
> -		return ret;
> -	}
> -
>  	return 0;
>  }
> 
> @@ -79,11 +73,37 @@ static int pwm_regulator_list_voltage(struct
> regulator_dev *rdev, return drvdata->duty_cycle_table[selector].uV;
>  }
> 
> +static int pwm_regulator_enable(struct regulator_dev *dev)
> +{
> +	struct pwm_regulator_data *drvdata = rdev_get_drvdata(dev);
> +
> +	return pwm_enable(drvdata->pwm);
> +}
> +
> +static int pwm_regulator_disable(struct regulator_dev *dev)
> +{
> +	struct pwm_regulator_data *drvdata = rdev_get_drvdata(dev);
> +
> +	pwm_disable(drvdata->pwm);
> +
> +	return 0;
> +}
> +
> +static int pwm_regulator_is_enabled(struct regulator_dev *dev)
> +{
> +       struct pwm_regulator_data *drvdata = rdev_get_drvdata(dev);
> +
> +       return pwm_is_enabled(drvdata->pwm);
> +}

nit: indentation is wrong in pwm_regulator_is_enabled (spaces instead of tabs)

  reply	other threads:[~2015-07-01 11:58 UTC|newest]

Thread overview: 204+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-01  8:21 [RFC PATCH 00/15] pwm: add support for atomic update Boris Brezillon
2015-07-01  8:21 ` Boris Brezillon
2015-07-01  8:21 ` Boris Brezillon
2015-07-01  8:21 ` [RFC PATCH 01/15] pwm: add the pwm_is_enabled() helper Boris Brezillon
2015-07-01  8:21   ` Boris Brezillon
2015-07-01  8:21   ` Boris Brezillon
2015-07-20  7:47   ` Thierry Reding
2015-07-20  7:47     ` Thierry Reding
2015-07-20  7:47     ` Thierry Reding
2015-07-01  8:21 ` [RFC PATCH 02/15] pwm: fix pwm_get_period and pwm_get_duty_cycle prototypes Boris Brezillon
2015-07-01  8:21   ` Boris Brezillon
2015-07-01  8:21   ` Boris Brezillon
2015-07-20  7:50   ` Thierry Reding
2015-07-20  7:50     ` Thierry Reding
2015-07-20  7:50     ` Thierry Reding
2015-07-01  8:21 ` [RFC PATCH 03/15] pwm: add pwm_get_polarity helper function Boris Brezillon
2015-07-01  8:21   ` Boris Brezillon
2015-07-01  8:21   ` Boris Brezillon
2015-07-20  7:52   ` Thierry Reding
2015-07-20  7:52     ` Thierry Reding
2015-07-20  7:52     ` Thierry Reding
2015-07-01  8:21 ` [RFC PATCH 04/15] pwm: make use of pwm_get_xxx helpers where appropriate Boris Brezillon
2015-07-01  8:21   ` Boris Brezillon
2015-07-01  8:21   ` Boris Brezillon
2015-07-20  8:00   ` Thierry Reding
2015-07-20  8:00     ` Thierry Reding
2015-07-20  8:00     ` Thierry Reding
2015-07-01  8:21 ` [RFC PATCH 05/15] pwm: introduce default period and polarity concepts Boris Brezillon
2015-07-01  8:21   ` Boris Brezillon
2015-07-01  8:21   ` Boris Brezillon
2015-07-02  6:44   ` Uwe Kleine-König
2015-07-02  6:44     ` Uwe Kleine-König
2015-07-02  6:44     ` Uwe Kleine-König
2015-07-02  7:49     ` Boris Brezillon
2015-07-02  7:49       ` Boris Brezillon
2015-07-02  7:49       ` Boris Brezillon
2015-07-20  8:03       ` Thierry Reding
2015-07-20  8:03         ` Thierry Reding
2015-07-20  8:03         ` Thierry Reding
2015-07-20  8:14         ` Boris Brezillon
2015-07-20  8:14           ` Boris Brezillon
2015-07-20  8:14           ` Boris Brezillon
2015-07-20  8:22           ` Thierry Reding
2015-07-20  8:22             ` Thierry Reding
2015-07-20  8:22             ` Thierry Reding
2015-07-20  8:32             ` Boris Brezillon
2015-07-20  8:32               ` Boris Brezillon
2015-07-20  8:32               ` Boris Brezillon
2015-07-01  8:21 ` [RFC PATCH 06/15] pwm: define a new pwm_state struct Boris Brezillon
2015-07-01  8:21   ` Boris Brezillon
2015-07-01  8:21   ` Boris Brezillon
2015-07-20  8:04   ` Thierry Reding
2015-07-20  8:04     ` Thierry Reding
2015-07-20  8:04     ` Thierry Reding
2015-07-20 10:01     ` Boris Brezillon
2015-07-20 10:01       ` Boris Brezillon
2015-07-20 10:01       ` Boris Brezillon
2015-07-20 10:09       ` Thierry Reding
2015-07-20 10:09         ` Thierry Reding
2015-07-20 10:09         ` Thierry Reding
2015-07-20 10:12         ` Boris Brezillon
2015-07-20 10:12           ` Boris Brezillon
2015-07-20 10:12           ` Boris Brezillon
2015-07-01  8:21 ` [RFC PATCH 07/15] pwm: move the enabled/disabled info to " Boris Brezillon
2015-07-01  8:21   ` Boris Brezillon
2015-07-01  8:21   ` Boris Brezillon
2015-07-20  8:11   ` Thierry Reding
2015-07-20  8:11     ` Thierry Reding
2015-07-20  8:11     ` Thierry Reding
2015-07-01  8:21 ` [RFC PATCH 08/15] backlight: pwm_bl: remove useless call to pwm_set_period Boris Brezillon
2015-07-01  8:21   ` Boris Brezillon
2015-07-01  8:21   ` Boris Brezillon
2015-07-20  8:16   ` Thierry Reding
2015-07-20  8:16     ` Thierry Reding
2015-07-20  8:16     ` Thierry Reding
2015-07-20  8:21     ` Boris Brezillon
2015-07-20  8:21       ` Boris Brezillon
2015-07-20  8:21       ` Boris Brezillon
2015-07-20  8:36       ` Thierry Reding
2015-07-20  8:36         ` Thierry Reding
2015-07-20  8:36         ` Thierry Reding
2015-07-20  8:50         ` Boris Brezillon
2015-07-20  8:50           ` Boris Brezillon
2015-07-20  8:50           ` Boris Brezillon
2015-07-20  9:10           ` Thierry Reding
2015-07-20  9:10             ` Thierry Reding
2015-07-20  9:10             ` Thierry Reding
2015-07-20  9:57             ` Boris Brezillon
2015-07-20  9:57               ` Boris Brezillon
2015-07-20  9:57               ` Boris Brezillon
2015-07-20 10:01               ` Thierry Reding
2015-07-20 10:01                 ` Thierry Reding
2015-07-20 10:01                 ` Thierry Reding
2015-07-01  8:21 ` [RFC PATCH 09/15] pwm: declare a default PWM state Boris Brezillon
2015-07-01  8:21   ` Boris Brezillon
2015-07-01  8:21   ` Boris Brezillon
2015-07-01  8:21 ` [RFC PATCH 10/15] pwm: add the PWM initial state retrieval infra Boris Brezillon
2015-07-01  8:21   ` Boris Brezillon
2015-07-01  8:21   ` Boris Brezillon
2015-07-20  9:01   ` Thierry Reding
2015-07-20  9:01     ` Thierry Reding
2015-07-20  9:01     ` Thierry Reding
2015-07-20  9:42     ` Boris Brezillon
2015-07-20  9:42       ` Boris Brezillon
2015-07-20  9:42       ` Boris Brezillon
2015-07-01  8:21 ` [RFC PATCH 11/15] pwm: add the core infrastructure to allow atomic update Boris Brezillon
2015-07-01  8:21   ` Boris Brezillon
2015-07-01  8:21   ` Boris Brezillon
2015-07-20  8:59   ` Thierry Reding
2015-07-20  8:59     ` Thierry Reding
2015-07-20  8:59     ` Thierry Reding
2015-07-20  9:48     ` Boris Brezillon
2015-07-20  9:48       ` Boris Brezillon
2015-07-20  9:48       ` Boris Brezillon
2015-07-20 10:04       ` Thierry Reding
2015-07-20 10:04         ` Thierry Reding
2015-07-20 10:04         ` Thierry Reding
2015-07-01  8:21 ` [RFC PATCH 12/15] pwm: rockchip: add initial state retrieval Boris Brezillon
2015-07-01  8:21   ` Boris Brezillon
2015-07-01  8:21   ` Boris Brezillon
2015-07-01 21:44   ` Heiko Stübner
2015-07-01 21:44     ` Heiko Stübner
2015-07-01 21:44     ` Heiko Stübner
2015-07-02  7:46     ` Boris Brezillon
2015-07-02  7:46       ` Boris Brezillon
2015-07-02  7:46       ` Boris Brezillon
2015-07-01  8:21 ` [RFC PATCH 13/15] pwm: rockchip: add support for atomic update Boris Brezillon
2015-07-01  8:21   ` Boris Brezillon
2015-07-01  8:21   ` Boris Brezillon
2015-07-01 21:48   ` Heiko Stübner
2015-07-01 21:48     ` Heiko Stübner
2015-07-01 21:48     ` Heiko Stübner
2015-07-02  7:43     ` Boris Brezillon
2015-07-02  7:43       ` Boris Brezillon
2015-07-02  7:43       ` Boris Brezillon
2015-07-01  8:22 ` [RFC PATCH 14/15] regulator: pwm: implement ->enable(), ->disable() and ->is_enabled methods Boris Brezillon
2015-07-01  8:22   ` Boris Brezillon
2015-07-01  8:22   ` Boris Brezillon
2015-07-01 11:58   ` Heiko Stübner [this message]
2015-07-01 11:58     ` Heiko Stübner
2015-07-01 11:58     ` Heiko Stübner
2015-07-01 12:05     ` Boris Brezillon
2015-07-01 12:05       ` Boris Brezillon
2015-07-01 12:05       ` Boris Brezillon
2015-07-01 12:08       ` Heiko Stübner
2015-07-01 12:08         ` Heiko Stübner
2015-07-01 12:08         ` Heiko Stübner
2015-07-01 12:19         ` Boris Brezillon
2015-07-01 12:19           ` Boris Brezillon
2015-07-01 12:19           ` Boris Brezillon
2015-07-14 10:50   ` Mark Brown
2015-07-14 10:50     ` Mark Brown
2015-07-14 10:50     ` Mark Brown
2015-07-14 11:02     ` Boris Brezillon
2015-07-14 11:02       ` Boris Brezillon
2015-07-14 11:02       ` Boris Brezillon
2015-07-14 11:08       ` Mark Brown
2015-07-14 11:08         ` Mark Brown
2015-07-14 11:08         ` Mark Brown
2015-07-14 11:16         ` Boris Brezillon
2015-07-14 11:16           ` Boris Brezillon
2015-07-14 11:16           ` Boris Brezillon
2015-07-01  8:22 ` [RFC PATCH 15/15] regulator: pwm: properly initialize the ->state field Boris Brezillon
2015-07-01  8:22   ` Boris Brezillon
2015-07-01  8:22   ` Boris Brezillon
2015-07-14 10:51   ` Mark Brown
2015-07-14 10:51     ` Mark Brown
2015-07-14 10:51     ` Mark Brown
2015-07-14 11:03     ` Boris Brezillon
2015-07-14 11:03       ` Boris Brezillon
2015-07-14 11:03       ` Boris Brezillon
2015-07-01 21:50 ` [RFC PATCH 16/15] pwm: add informations about polarity, duty cycle and period to debugfs Heiko Stübner
2015-07-01 21:50   ` Heiko Stübner
2015-07-01 21:50   ` Heiko Stübner
2015-07-02 13:01   ` Boris Brezillon
2015-07-02 13:01     ` Boris Brezillon
2015-07-02 13:01     ` Boris Brezillon
2015-07-03  8:43     ` [PATCH] " Heiko Stübner
2015-07-03  8:43       ` Heiko Stübner
2015-07-03  8:43       ` Heiko Stübner
2015-07-01 21:57 ` [RFC PATCH 00/15] pwm: add support for atomic update Heiko Stübner
2015-07-01 21:57   ` Heiko Stübner
2015-07-01 21:57   ` Heiko Stübner
2015-07-02  7:55   ` Boris Brezillon
2015-07-02  7:55     ` Boris Brezillon
2015-07-02  7:55     ` Boris Brezillon
2015-07-02  7:03 ` Uwe Kleine-König
2015-07-02  7:03   ` Uwe Kleine-König
2015-07-02  7:03   ` Uwe Kleine-König
2015-07-02  7:17   ` Tomi Valkeinen
2015-07-02  7:17     ` Tomi Valkeinen
2015-07-02  7:17     ` Tomi Valkeinen
2015-07-02  7:42     ` Uwe Kleine-König
2015-07-02  7:42       ` Uwe Kleine-König
2015-07-02  7:42       ` Uwe Kleine-König
2015-07-02  7:30   ` Boris Brezillon
2015-07-02  7:30     ` Boris Brezillon
2015-07-02  7:30     ` Boris Brezillon
2015-07-20  7:16 ` Boris Brezillon
2015-07-20  7:16   ` Boris Brezillon
2015-07-20  7:16   ` Boris Brezillon
2015-07-20  7:43 ` Thierry Reding
2015-07-20  7:43   ` Thierry Reding
2015-07-20  7:43   ` Thierry Reding

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=3495901.qMzLCVWCDl@diego \
    --to=heiko@sntech.de \
    --cc=linux-arm-kernel@lists.infradead.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.