From: grant.likely@secretlab.ca (Grant Likely)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3] pwm: Device tree support for PWM polarity.
Date: Wed, 21 Nov 2012 16:32:46 +0000 [thread overview]
Message-ID: <20121121163246.B20163E0AE2@localhost> (raw)
In-Reply-To: <1353483644-32711-1-git-send-email-avinashphilip@ti.com>
On Wed, 21 Nov 2012 13:10:44 +0530, "Philip, Avinash" <avinashphilip@ti.com> wrote:
> Add support for encoding PWM properties in bit encoded form with
> of_pwm_xlate_with_flags() function support. Platforms require platform
> specific PWM properties has to populate in 3rd cell of the pwm-specifier
> and PWM driver should also set .of_xlate support with this function.
> Currently PWM property polarity encoded in bit position 0 of the third
> cell in pwm-specifier.
>
> Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
Looks okay to me.
Acked-by: Grant Likely <grant.likely@secretlab.ca>
> ---
> Changes since v2:
> - Move PWM_SPEC_POLARITY to core.c
> - Remove dummy function
>
> Changes since v1:
> - of_pwm_xlate_with_flags function support added.
> - Documentation update
>
> :100644 100644 73ec962... 04b0dc4... M Documentation/devicetree/bindings/pwm/pwm.txt
> :100644 100644 f5acdaa... 780cb6b... M drivers/pwm/core.c
> :100644 100644 112b314... 6d661f3... M include/linux/pwm.h
> Documentation/devicetree/bindings/pwm/pwm.txt | 18 +++++++++++++--
> drivers/pwm/core.c | 28 +++++++++++++++++++++++++
> include/linux/pwm.h | 3 ++
> 3 files changed, 46 insertions(+), 3 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/pwm/pwm.txt b/Documentation/devicetree/bindings/pwm/pwm.txt
> index 73ec962..04b0dc4 100644
> --- a/Documentation/devicetree/bindings/pwm/pwm.txt
> +++ b/Documentation/devicetree/bindings/pwm/pwm.txt
> @@ -37,10 +37,22 @@ device:
> pwm-names = "backlight";
> };
>
> +Note that in the example above, specifying the "pwm-names" is redundant
> +because the name "backlight" would be used as fallback anyway.
> +
> pwm-specifier typically encodes the chip-relative PWM number and the PWM
> -period in nanoseconds. Note that in the example above, specifying the
> -"pwm-names" is redundant because the name "backlight" would be used as
> -fallback anyway.
> +period in nanoseconds.
> +
> +Optionally, the pwm-specifier can encode a number of flags in a third cell:
> +- bit 0: PWM signal polarity (0: normal polarity, 1: inverse polarity)
> +
> +Example with optional PWM specifier for inverse polarity
> +
> + bl: backlight {
> + pwms = <&pwm 0 5000000 1>;
> + pwm-names = "backlight";
> + };
> +
>
> 2) PWM controller nodes
> -----------------------
> diff --git a/drivers/pwm/core.c b/drivers/pwm/core.c
> index f5acdaa..780cb6b 100644
> --- a/drivers/pwm/core.c
> +++ b/drivers/pwm/core.c
> @@ -32,6 +32,9 @@
>
> #define MAX_PWMS 1024
>
> +/* flags in the third cell of the DT PWM specifier */
> +#define PWM_SPEC_POLARITY (1 << 0)
> +
> static DEFINE_MUTEX(pwm_lookup_lock);
> static LIST_HEAD(pwm_lookup_list);
> static DEFINE_MUTEX(pwm_lock);
> @@ -129,6 +132,31 @@ static int pwm_device_request(struct pwm_device *pwm, const char *label)
> return 0;
> }
>
> +struct pwm_device *
> +of_pwm_xlate_with_flags(struct pwm_chip *pc, const struct of_phandle_args *args)
> +{
> + struct pwm_device *pwm;
> +
> + if (pc->of_pwm_n_cells < 3)
> + return ERR_PTR(-EINVAL);
> +
> + if (args->args[0] >= pc->npwm)
> + return ERR_PTR(-EINVAL);
> +
> + pwm = pwm_request_from_chip(pc, args->args[0], NULL);
> + if (IS_ERR(pwm))
> + return pwm;
> +
> + pwm_set_period(pwm, args->args[1]);
> +
> + if (args->args[2] & PWM_SPEC_POLARITY)
> + pwm_set_polarity(pwm, PWM_POLARITY_INVERSED);
> + else
> + pwm_set_polarity(pwm, PWM_POLARITY_NORMAL);
> +
> + return pwm;
> +}
> +
> static struct pwm_device *
> of_pwm_simple_xlate(struct pwm_chip *pc, const struct of_phandle_args *args)
> {
> diff --git a/include/linux/pwm.h b/include/linux/pwm.h
> index 112b314..6d661f3 100644
> --- a/include/linux/pwm.h
> +++ b/include/linux/pwm.h
> @@ -171,6 +171,9 @@ struct pwm_device *pwm_request_from_chip(struct pwm_chip *chip,
> unsigned int index,
> const char *label);
>
> +struct pwm_device *of_pwm_xlate_with_flags(struct pwm_chip *pc,
> + const struct of_phandle_args *args);
> +
> struct pwm_device *pwm_get(struct device *dev, const char *consumer);
> void pwm_put(struct pwm_device *pwm);
>
> --
> 1.7.0.4
>
--
Grant Likely, B.Sc, P.Eng.
Secret Lab Technologies, Ltd.
WARNING: multiple messages have this Message-ID (diff)
From: Grant Likely <grant.likely@secretlab.ca>
To: thierry.reding@avionic-design.de, rob.herring@calxeda.com,
rob@landley.net
Cc: linux-kernel@vger.kernel.org,
devicetree-discuss@lists.ozlabs.org, linux-doc@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, nsekhar@ti.com,
gururaja.hebbar@ti.com, "Philip, Avinash" <avinashphilip@ti.com>
Subject: Re: [PATCH v3] pwm: Device tree support for PWM polarity.
Date: Wed, 21 Nov 2012 16:32:46 +0000 [thread overview]
Message-ID: <20121121163246.B20163E0AE2@localhost> (raw)
In-Reply-To: <1353483644-32711-1-git-send-email-avinashphilip@ti.com>
On Wed, 21 Nov 2012 13:10:44 +0530, "Philip, Avinash" <avinashphilip@ti.com> wrote:
> Add support for encoding PWM properties in bit encoded form with
> of_pwm_xlate_with_flags() function support. Platforms require platform
> specific PWM properties has to populate in 3rd cell of the pwm-specifier
> and PWM driver should also set .of_xlate support with this function.
> Currently PWM property polarity encoded in bit position 0 of the third
> cell in pwm-specifier.
>
> Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
Looks okay to me.
Acked-by: Grant Likely <grant.likely@secretlab.ca>
> ---
> Changes since v2:
> - Move PWM_SPEC_POLARITY to core.c
> - Remove dummy function
>
> Changes since v1:
> - of_pwm_xlate_with_flags function support added.
> - Documentation update
>
> :100644 100644 73ec962... 04b0dc4... M Documentation/devicetree/bindings/pwm/pwm.txt
> :100644 100644 f5acdaa... 780cb6b... M drivers/pwm/core.c
> :100644 100644 112b314... 6d661f3... M include/linux/pwm.h
> Documentation/devicetree/bindings/pwm/pwm.txt | 18 +++++++++++++--
> drivers/pwm/core.c | 28 +++++++++++++++++++++++++
> include/linux/pwm.h | 3 ++
> 3 files changed, 46 insertions(+), 3 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/pwm/pwm.txt b/Documentation/devicetree/bindings/pwm/pwm.txt
> index 73ec962..04b0dc4 100644
> --- a/Documentation/devicetree/bindings/pwm/pwm.txt
> +++ b/Documentation/devicetree/bindings/pwm/pwm.txt
> @@ -37,10 +37,22 @@ device:
> pwm-names = "backlight";
> };
>
> +Note that in the example above, specifying the "pwm-names" is redundant
> +because the name "backlight" would be used as fallback anyway.
> +
> pwm-specifier typically encodes the chip-relative PWM number and the PWM
> -period in nanoseconds. Note that in the example above, specifying the
> -"pwm-names" is redundant because the name "backlight" would be used as
> -fallback anyway.
> +period in nanoseconds.
> +
> +Optionally, the pwm-specifier can encode a number of flags in a third cell:
> +- bit 0: PWM signal polarity (0: normal polarity, 1: inverse polarity)
> +
> +Example with optional PWM specifier for inverse polarity
> +
> + bl: backlight {
> + pwms = <&pwm 0 5000000 1>;
> + pwm-names = "backlight";
> + };
> +
>
> 2) PWM controller nodes
> -----------------------
> diff --git a/drivers/pwm/core.c b/drivers/pwm/core.c
> index f5acdaa..780cb6b 100644
> --- a/drivers/pwm/core.c
> +++ b/drivers/pwm/core.c
> @@ -32,6 +32,9 @@
>
> #define MAX_PWMS 1024
>
> +/* flags in the third cell of the DT PWM specifier */
> +#define PWM_SPEC_POLARITY (1 << 0)
> +
> static DEFINE_MUTEX(pwm_lookup_lock);
> static LIST_HEAD(pwm_lookup_list);
> static DEFINE_MUTEX(pwm_lock);
> @@ -129,6 +132,31 @@ static int pwm_device_request(struct pwm_device *pwm, const char *label)
> return 0;
> }
>
> +struct pwm_device *
> +of_pwm_xlate_with_flags(struct pwm_chip *pc, const struct of_phandle_args *args)
> +{
> + struct pwm_device *pwm;
> +
> + if (pc->of_pwm_n_cells < 3)
> + return ERR_PTR(-EINVAL);
> +
> + if (args->args[0] >= pc->npwm)
> + return ERR_PTR(-EINVAL);
> +
> + pwm = pwm_request_from_chip(pc, args->args[0], NULL);
> + if (IS_ERR(pwm))
> + return pwm;
> +
> + pwm_set_period(pwm, args->args[1]);
> +
> + if (args->args[2] & PWM_SPEC_POLARITY)
> + pwm_set_polarity(pwm, PWM_POLARITY_INVERSED);
> + else
> + pwm_set_polarity(pwm, PWM_POLARITY_NORMAL);
> +
> + return pwm;
> +}
> +
> static struct pwm_device *
> of_pwm_simple_xlate(struct pwm_chip *pc, const struct of_phandle_args *args)
> {
> diff --git a/include/linux/pwm.h b/include/linux/pwm.h
> index 112b314..6d661f3 100644
> --- a/include/linux/pwm.h
> +++ b/include/linux/pwm.h
> @@ -171,6 +171,9 @@ struct pwm_device *pwm_request_from_chip(struct pwm_chip *chip,
> unsigned int index,
> const char *label);
>
> +struct pwm_device *of_pwm_xlate_with_flags(struct pwm_chip *pc,
> + const struct of_phandle_args *args);
> +
> struct pwm_device *pwm_get(struct device *dev, const char *consumer);
> void pwm_put(struct pwm_device *pwm);
>
> --
> 1.7.0.4
>
--
Grant Likely, B.Sc, P.Eng.
Secret Lab Technologies, Ltd.
WARNING: multiple messages have this Message-ID (diff)
From: Grant Likely <grant.likely@secretlab.ca>
To: "Philip, Avinash" <avinashphilip@ti.com>,
thierry.reding@avionic-design.de, rob.herring@calxeda.com,
rob@landley.net
Cc: linux-kernel@vger.kernel.org,
devicetree-discuss@lists.ozlabs.org, linux-doc@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, nsekhar@ti.com,
gururaja.hebbar@ti.com, "Philip, Avinash" <avinashphilip@ti.com>
Subject: Re: [PATCH v3] pwm: Device tree support for PWM polarity.
Date: Wed, 21 Nov 2012 16:32:46 +0000 [thread overview]
Message-ID: <20121121163246.B20163E0AE2@localhost> (raw)
In-Reply-To: <1353483644-32711-1-git-send-email-avinashphilip@ti.com>
On Wed, 21 Nov 2012 13:10:44 +0530, "Philip, Avinash" <avinashphilip@ti.com> wrote:
> Add support for encoding PWM properties in bit encoded form with
> of_pwm_xlate_with_flags() function support. Platforms require platform
> specific PWM properties has to populate in 3rd cell of the pwm-specifier
> and PWM driver should also set .of_xlate support with this function.
> Currently PWM property polarity encoded in bit position 0 of the third
> cell in pwm-specifier.
>
> Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
Looks okay to me.
Acked-by: Grant Likely <grant.likely@secretlab.ca>
> ---
> Changes since v2:
> - Move PWM_SPEC_POLARITY to core.c
> - Remove dummy function
>
> Changes since v1:
> - of_pwm_xlate_with_flags function support added.
> - Documentation update
>
> :100644 100644 73ec962... 04b0dc4... M Documentation/devicetree/bindings/pwm/pwm.txt
> :100644 100644 f5acdaa... 780cb6b... M drivers/pwm/core.c
> :100644 100644 112b314... 6d661f3... M include/linux/pwm.h
> Documentation/devicetree/bindings/pwm/pwm.txt | 18 +++++++++++++--
> drivers/pwm/core.c | 28 +++++++++++++++++++++++++
> include/linux/pwm.h | 3 ++
> 3 files changed, 46 insertions(+), 3 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/pwm/pwm.txt b/Documentation/devicetree/bindings/pwm/pwm.txt
> index 73ec962..04b0dc4 100644
> --- a/Documentation/devicetree/bindings/pwm/pwm.txt
> +++ b/Documentation/devicetree/bindings/pwm/pwm.txt
> @@ -37,10 +37,22 @@ device:
> pwm-names = "backlight";
> };
>
> +Note that in the example above, specifying the "pwm-names" is redundant
> +because the name "backlight" would be used as fallback anyway.
> +
> pwm-specifier typically encodes the chip-relative PWM number and the PWM
> -period in nanoseconds. Note that in the example above, specifying the
> -"pwm-names" is redundant because the name "backlight" would be used as
> -fallback anyway.
> +period in nanoseconds.
> +
> +Optionally, the pwm-specifier can encode a number of flags in a third cell:
> +- bit 0: PWM signal polarity (0: normal polarity, 1: inverse polarity)
> +
> +Example with optional PWM specifier for inverse polarity
> +
> + bl: backlight {
> + pwms = <&pwm 0 5000000 1>;
> + pwm-names = "backlight";
> + };
> +
>
> 2) PWM controller nodes
> -----------------------
> diff --git a/drivers/pwm/core.c b/drivers/pwm/core.c
> index f5acdaa..780cb6b 100644
> --- a/drivers/pwm/core.c
> +++ b/drivers/pwm/core.c
> @@ -32,6 +32,9 @@
>
> #define MAX_PWMS 1024
>
> +/* flags in the third cell of the DT PWM specifier */
> +#define PWM_SPEC_POLARITY (1 << 0)
> +
> static DEFINE_MUTEX(pwm_lookup_lock);
> static LIST_HEAD(pwm_lookup_list);
> static DEFINE_MUTEX(pwm_lock);
> @@ -129,6 +132,31 @@ static int pwm_device_request(struct pwm_device *pwm, const char *label)
> return 0;
> }
>
> +struct pwm_device *
> +of_pwm_xlate_with_flags(struct pwm_chip *pc, const struct of_phandle_args *args)
> +{
> + struct pwm_device *pwm;
> +
> + if (pc->of_pwm_n_cells < 3)
> + return ERR_PTR(-EINVAL);
> +
> + if (args->args[0] >= pc->npwm)
> + return ERR_PTR(-EINVAL);
> +
> + pwm = pwm_request_from_chip(pc, args->args[0], NULL);
> + if (IS_ERR(pwm))
> + return pwm;
> +
> + pwm_set_period(pwm, args->args[1]);
> +
> + if (args->args[2] & PWM_SPEC_POLARITY)
> + pwm_set_polarity(pwm, PWM_POLARITY_INVERSED);
> + else
> + pwm_set_polarity(pwm, PWM_POLARITY_NORMAL);
> +
> + return pwm;
> +}
> +
> static struct pwm_device *
> of_pwm_simple_xlate(struct pwm_chip *pc, const struct of_phandle_args *args)
> {
> diff --git a/include/linux/pwm.h b/include/linux/pwm.h
> index 112b314..6d661f3 100644
> --- a/include/linux/pwm.h
> +++ b/include/linux/pwm.h
> @@ -171,6 +171,9 @@ struct pwm_device *pwm_request_from_chip(struct pwm_chip *chip,
> unsigned int index,
> const char *label);
>
> +struct pwm_device *of_pwm_xlate_with_flags(struct pwm_chip *pc,
> + const struct of_phandle_args *args);
> +
> struct pwm_device *pwm_get(struct device *dev, const char *consumer);
> void pwm_put(struct pwm_device *pwm);
>
> --
> 1.7.0.4
>
--
Grant Likely, B.Sc, P.Eng.
Secret Lab Technologies, Ltd.
next prev parent reply other threads:[~2012-11-21 16:32 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-21 7:40 [PATCH v3] pwm: Device tree support for PWM polarity Philip, Avinash
2012-11-21 7:40 ` Philip, Avinash
2012-11-21 7:40 ` Philip, Avinash
2012-11-21 16:32 ` Grant Likely [this message]
2012-11-21 16:32 ` Grant Likely
2012-11-21 16:32 ` Grant Likely
2012-11-22 21:29 ` Thierry Reding
2012-11-22 21:29 ` Thierry Reding
2012-11-22 21:29 ` 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=20121121163246.B20163E0AE2@localhost \
--to=grant.likely@secretlab.ca \
--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.