* [PATCH 0/2] Allow registration of default inversed polarity PWMs
@ 2015-01-05 1:12 Tim Kryger
2015-01-05 1:12 ` [PATCH 1/2] drivers: pwm: core: Add pwmchip_add_inversed Tim Kryger
2015-01-05 1:12 ` [PATCH 2/2] drivers: pwm: bcm-kona: Dont set polarity in probe Tim Kryger
0 siblings, 2 replies; 5+ messages in thread
From: Tim Kryger @ 2015-01-05 1:12 UTC (permalink / raw)
To: Thierry Reding, Scott Branden, Arun Ramamurthy,
Jonathan Richardson
Cc: Tim Kryger, Ray Jui, Linux PWM, LKML, Broadcom Kernel Feedback
This series alters the PWM core to allow the registration of controllers
that begin with inversed polarity output. It also modifies the Broadcom
Kona driver to take advantage of this new call.
Arun Ramamurthy (1):
drivers: pwm: bcm-kona: Dont set polarity in probe
Tim Kryger (1):
drivers: pwm: core: Add pwmchip_add_inversed
drivers/pwm/core.c | 36 ++++++++++++++++++++++++++++--------
drivers/pwm/pwm-bcm-kona.c | 9 +++------
include/linux/pwm.h | 6 ++++++
3 files changed, 37 insertions(+), 14 deletions(-)
--
1.9.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/2] drivers: pwm: core: Add pwmchip_add_inversed
2015-01-05 1:12 [PATCH 0/2] Allow registration of default inversed polarity PWMs Tim Kryger
@ 2015-01-05 1:12 ` Tim Kryger
2015-01-06 21:16 ` Jonathan Richardson
2015-01-13 20:44 ` Scott Branden
2015-01-05 1:12 ` [PATCH 2/2] drivers: pwm: bcm-kona: Dont set polarity in probe Tim Kryger
1 sibling, 2 replies; 5+ messages in thread
From: Tim Kryger @ 2015-01-05 1:12 UTC (permalink / raw)
To: Thierry Reding, Scott Branden, Arun Ramamurthy,
Jonathan Richardson
Cc: Tim Kryger, Ray Jui, Linux PWM, LKML, Broadcom Kernel Feedback
Add a new function to register a PWM chip with channels that have their
initial polarity as inversed. This benefits drivers of controllers that
by default operate with inversed polarity by removing the need to modify
the polarity during initialization.
Signed-off-by: Tim Kryger <tim.kryger@gmail.com>
---
drivers/pwm/core.c | 36 ++++++++++++++++++++++++++++--------
include/linux/pwm.h | 6 ++++++
2 files changed, 34 insertions(+), 8 deletions(-)
diff --git a/drivers/pwm/core.c b/drivers/pwm/core.c
index 966497d..f28c4ce 100644
--- a/drivers/pwm/core.c
+++ b/drivers/pwm/core.c
@@ -222,14 +222,8 @@ void *pwm_get_chip_data(struct pwm_device *pwm)
}
EXPORT_SYMBOL_GPL(pwm_get_chip_data);
-/**
- * pwmchip_add() - register a new PWM chip
- * @chip: the PWM chip to add
- *
- * Register a new PWM chip. If chip->base < 0 then a dynamically assigned base
- * will be used.
- */
-int pwmchip_add(struct pwm_chip *chip)
+static int pwmchip_add_with_polarity(struct pwm_chip *chip,
+ enum pwm_polarity polarity)
{
struct pwm_device *pwm;
unsigned int i;
@@ -259,6 +253,7 @@ int pwmchip_add(struct pwm_chip *chip)
pwm->chip = chip;
pwm->pwm = chip->base + i;
pwm->hwpwm = i;
+ pwm->polarity = polarity;
radix_tree_insert(&pwm_tree, pwm->pwm, pwm);
}
@@ -279,9 +274,34 @@ out:
mutex_unlock(&pwm_lock);
return ret;
}
+
+/**
+ * pwmchip_add() - register a new PWM chip
+ * @chip: the PWM chip to add
+ *
+ * Register a new PWM chip. If chip->base < 0 then a dynamically assigned base
+ * will be used. The initial polarity for all channels is normal.
+ */
+int pwmchip_add(struct pwm_chip *chip)
+{
+ return pwmchip_add_with_polarity(chip, PWM_POLARITY_NORMAL);
+}
EXPORT_SYMBOL_GPL(pwmchip_add);
/**
+ * pwmchip_add_inversed() - register a new PWM chip
+ * @chip: the PWM chip to add
+ *
+ * Register a new PWM chip. If chip->base < 0 then a dynamically assigned base
+ * will be used. The initial polarity for all channels is inversed.
+ */
+int pwmchip_add_inversed(struct pwm_chip *chip)
+{
+ return pwmchip_add_with_polarity(chip, PWM_POLARITY_INVERSED);
+}
+EXPORT_SYMBOL_GPL(pwmchip_add_inversed);
+
+/**
* pwmchip_remove() - remove a PWM chip
* @chip: the PWM chip to remove
*
diff --git a/include/linux/pwm.h b/include/linux/pwm.h
index e90628c..358547f 100644
--- a/include/linux/pwm.h
+++ b/include/linux/pwm.h
@@ -183,6 +183,7 @@ int pwm_set_chip_data(struct pwm_device *pwm, void *data);
void *pwm_get_chip_data(struct pwm_device *pwm);
int pwmchip_add(struct pwm_chip *chip);
+int pwmchip_add_inversed(struct pwm_chip *chip);
int pwmchip_remove(struct pwm_chip *chip);
struct pwm_device *pwm_request_from_chip(struct pwm_chip *chip,
unsigned int index,
@@ -217,6 +218,11 @@ static inline int pwmchip_add(struct pwm_chip *chip)
return -EINVAL;
}
+static inline int pwmchip_add_inversed(struct pwm_chip *chip)
+{
+ return -EINVAL;
+}
+
static inline int pwmchip_remove(struct pwm_chip *chip)
{
return -EINVAL;
--
1.9.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/2] drivers: pwm: bcm-kona: Dont set polarity in probe
2015-01-05 1:12 [PATCH 0/2] Allow registration of default inversed polarity PWMs Tim Kryger
2015-01-05 1:12 ` [PATCH 1/2] drivers: pwm: core: Add pwmchip_add_inversed Tim Kryger
@ 2015-01-05 1:12 ` Tim Kryger
1 sibling, 0 replies; 5+ messages in thread
From: Tim Kryger @ 2015-01-05 1:12 UTC (permalink / raw)
To: Thierry Reding, Scott Branden, Arun Ramamurthy,
Jonathan Richardson
Cc: Ray Jui, Linux PWM, LKML, Broadcom Kernel Feedback, Tim Kryger
From: Arun Ramamurthy <arunrama@broadcom.com>
Omit setting the polarity to normal during probe and instead use the
new pwmchip_add_inversed function to register a PWM chip with default
polarity of inversed for all channels as this is the actual hardware
default.
Signed-off-by: Arun Ramamurthy <arunrama@broadcom.com>
Reviewed-by: Ray Jui <rjui@broadcom.com>
Signed-off-by: Scott Branden <sbranden@broadcom.com>
Signed-off-by: Tim Kryger <tim.kryger@gmail.com>
---
This is based on Arun's patch (originally posted by Scott)
https://lkml.org/lkml/2014/11/25/1019
I modified it to use the pwmchip_add_inversed function so the polarity
could be safely left at the power on default and updated the commit
message accordingly.
drivers/pwm/pwm-bcm-kona.c | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/drivers/pwm/pwm-bcm-kona.c b/drivers/pwm/pwm-bcm-kona.c
index 02bc048..32b3ec6 100644
--- a/drivers/pwm/pwm-bcm-kona.c
+++ b/drivers/pwm/pwm-bcm-kona.c
@@ -266,18 +266,15 @@ static int kona_pwmc_probe(struct platform_device *pdev)
return ret;
}
- /* Set smooth mode, push/pull, and normal polarity for all channels */
- for (chan = 0; chan < kp->chip.npwm; chan++) {
- value |= (1 << PWM_CONTROL_SMOOTH_SHIFT(chan));
+ /* Set push/pull for all channels */
+ for (chan = 0; chan < kp->chip.npwm; chan++)
value |= (1 << PWM_CONTROL_TYPE_SHIFT(chan));
- value |= (1 << PWM_CONTROL_POLARITY_SHIFT(chan));
- }
writel(value, kp->base + PWM_CONTROL_OFFSET);
clk_disable_unprepare(kp->clk);
- ret = pwmchip_add(&kp->chip);
+ ret = pwmchip_add_inversed(&kp->chip);
if (ret < 0)
dev_err(&pdev->dev, "failed to add PWM chip: %d\n", ret);
--
1.9.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] drivers: pwm: core: Add pwmchip_add_inversed
2015-01-05 1:12 ` [PATCH 1/2] drivers: pwm: core: Add pwmchip_add_inversed Tim Kryger
@ 2015-01-06 21:16 ` Jonathan Richardson
2015-01-13 20:44 ` Scott Branden
1 sibling, 0 replies; 5+ messages in thread
From: Jonathan Richardson @ 2015-01-06 21:16 UTC (permalink / raw)
To: Tim Kryger
Cc: Thierry Reding, Scott Branden, Arun Ramamurthy, Ray Jui,
Linux PWM, LKML, Broadcom Kernel Feedback
I'm fine with the changes. I'll remove patch 2 (polarity) from my
patches and send them out again based on these. Hopefully we can move
forward with this.
On 15-01-04 05:12 PM, Tim Kryger wrote:
> Add a new function to register a PWM chip with channels that have their
> initial polarity as inversed. This benefits drivers of controllers that
> by default operate with inversed polarity by removing the need to modify
> the polarity during initialization.
>
> Signed-off-by: Tim Kryger <tim.kryger@gmail.com>
> ---
> drivers/pwm/core.c | 36 ++++++++++++++++++++++++++++--------
> include/linux/pwm.h | 6 ++++++
> 2 files changed, 34 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/pwm/core.c b/drivers/pwm/core.c
> index 966497d..f28c4ce 100644
> --- a/drivers/pwm/core.c
> +++ b/drivers/pwm/core.c
> @@ -222,14 +222,8 @@ void *pwm_get_chip_data(struct pwm_device *pwm)
> }
> EXPORT_SYMBOL_GPL(pwm_get_chip_data);
>
> -/**
> - * pwmchip_add() - register a new PWM chip
> - * @chip: the PWM chip to add
> - *
> - * Register a new PWM chip. If chip->base < 0 then a dynamically assigned base
> - * will be used.
> - */
> -int pwmchip_add(struct pwm_chip *chip)
> +static int pwmchip_add_with_polarity(struct pwm_chip *chip,
> + enum pwm_polarity polarity)
> {
> struct pwm_device *pwm;
> unsigned int i;
> @@ -259,6 +253,7 @@ int pwmchip_add(struct pwm_chip *chip)
> pwm->chip = chip;
> pwm->pwm = chip->base + i;
> pwm->hwpwm = i;
> + pwm->polarity = polarity;
>
> radix_tree_insert(&pwm_tree, pwm->pwm, pwm);
> }
> @@ -279,9 +274,34 @@ out:
> mutex_unlock(&pwm_lock);
> return ret;
> }
> +
> +/**
> + * pwmchip_add() - register a new PWM chip
> + * @chip: the PWM chip to add
> + *
> + * Register a new PWM chip. If chip->base < 0 then a dynamically assigned base
> + * will be used. The initial polarity for all channels is normal.
> + */
> +int pwmchip_add(struct pwm_chip *chip)
> +{
> + return pwmchip_add_with_polarity(chip, PWM_POLARITY_NORMAL);
> +}
> EXPORT_SYMBOL_GPL(pwmchip_add);
>
> /**
> + * pwmchip_add_inversed() - register a new PWM chip
> + * @chip: the PWM chip to add
> + *
> + * Register a new PWM chip. If chip->base < 0 then a dynamically assigned base
> + * will be used. The initial polarity for all channels is inversed.
> + */
> +int pwmchip_add_inversed(struct pwm_chip *chip)
> +{
> + return pwmchip_add_with_polarity(chip, PWM_POLARITY_INVERSED);
> +}
> +EXPORT_SYMBOL_GPL(pwmchip_add_inversed);
> +
> +/**
> * pwmchip_remove() - remove a PWM chip
> * @chip: the PWM chip to remove
> *
> diff --git a/include/linux/pwm.h b/include/linux/pwm.h
> index e90628c..358547f 100644
> --- a/include/linux/pwm.h
> +++ b/include/linux/pwm.h
> @@ -183,6 +183,7 @@ int pwm_set_chip_data(struct pwm_device *pwm, void *data);
> void *pwm_get_chip_data(struct pwm_device *pwm);
>
> int pwmchip_add(struct pwm_chip *chip);
> +int pwmchip_add_inversed(struct pwm_chip *chip);
> int pwmchip_remove(struct pwm_chip *chip);
> struct pwm_device *pwm_request_from_chip(struct pwm_chip *chip,
> unsigned int index,
> @@ -217,6 +218,11 @@ static inline int pwmchip_add(struct pwm_chip *chip)
> return -EINVAL;
> }
>
> +static inline int pwmchip_add_inversed(struct pwm_chip *chip)
> +{
> + return -EINVAL;
> +}
> +
> static inline int pwmchip_remove(struct pwm_chip *chip)
> {
> return -EINVAL;
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] drivers: pwm: core: Add pwmchip_add_inversed
2015-01-05 1:12 ` [PATCH 1/2] drivers: pwm: core: Add pwmchip_add_inversed Tim Kryger
2015-01-06 21:16 ` Jonathan Richardson
@ 2015-01-13 20:44 ` Scott Branden
1 sibling, 0 replies; 5+ messages in thread
From: Scott Branden @ 2015-01-13 20:44 UTC (permalink / raw)
To: Tim Kryger, Thierry Reding, Arun Ramamurthy, Jonathan Richardson
Cc: Ray Jui, Linux PWM, LKML, bcm-kernel-feedback-list
Patchset looks good.
On 15-01-04 05:12 PM, Tim Kryger wrote:
> Add a new function to register a PWM chip with channels that have their
> initial polarity as inversed. This benefits drivers of controllers that
> by default operate with inversed polarity by removing the need to modify
> the polarity during initialization.
>
> Signed-off-by: Tim Kryger <tim.kryger@gmail.com>
Acked-by: Scott Branden <sbranden@broadcom.com>
> ---
> drivers/pwm/core.c | 36 ++++++++++++++++++++++++++++--------
> include/linux/pwm.h | 6 ++++++
> 2 files changed, 34 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/pwm/core.c b/drivers/pwm/core.c
> index 966497d..f28c4ce 100644
> --- a/drivers/pwm/core.c
> +++ b/drivers/pwm/core.c
> @@ -222,14 +222,8 @@ void *pwm_get_chip_data(struct pwm_device *pwm)
> }
> EXPORT_SYMBOL_GPL(pwm_get_chip_data);
>
> -/**
> - * pwmchip_add() - register a new PWM chip
> - * @chip: the PWM chip to add
> - *
> - * Register a new PWM chip. If chip->base < 0 then a dynamically assigned base
> - * will be used.
> - */
> -int pwmchip_add(struct pwm_chip *chip)
> +static int pwmchip_add_with_polarity(struct pwm_chip *chip,
> + enum pwm_polarity polarity)
> {
> struct pwm_device *pwm;
> unsigned int i;
> @@ -259,6 +253,7 @@ int pwmchip_add(struct pwm_chip *chip)
> pwm->chip = chip;
> pwm->pwm = chip->base + i;
> pwm->hwpwm = i;
> + pwm->polarity = polarity;
>
> radix_tree_insert(&pwm_tree, pwm->pwm, pwm);
> }
> @@ -279,9 +274,34 @@ out:
> mutex_unlock(&pwm_lock);
> return ret;
> }
> +
> +/**
> + * pwmchip_add() - register a new PWM chip
> + * @chip: the PWM chip to add
> + *
> + * Register a new PWM chip. If chip->base < 0 then a dynamically assigned base
> + * will be used. The initial polarity for all channels is normal.
> + */
> +int pwmchip_add(struct pwm_chip *chip)
> +{
> + return pwmchip_add_with_polarity(chip, PWM_POLARITY_NORMAL);
> +}
> EXPORT_SYMBOL_GPL(pwmchip_add);
>
> /**
> + * pwmchip_add_inversed() - register a new PWM chip
> + * @chip: the PWM chip to add
> + *
> + * Register a new PWM chip. If chip->base < 0 then a dynamically assigned base
> + * will be used. The initial polarity for all channels is inversed.
> + */
> +int pwmchip_add_inversed(struct pwm_chip *chip)
> +{
> + return pwmchip_add_with_polarity(chip, PWM_POLARITY_INVERSED);
> +}
> +EXPORT_SYMBOL_GPL(pwmchip_add_inversed);
> +
> +/**
> * pwmchip_remove() - remove a PWM chip
> * @chip: the PWM chip to remove
> *
> diff --git a/include/linux/pwm.h b/include/linux/pwm.h
> index e90628c..358547f 100644
> --- a/include/linux/pwm.h
> +++ b/include/linux/pwm.h
> @@ -183,6 +183,7 @@ int pwm_set_chip_data(struct pwm_device *pwm, void *data);
> void *pwm_get_chip_data(struct pwm_device *pwm);
>
> int pwmchip_add(struct pwm_chip *chip);
> +int pwmchip_add_inversed(struct pwm_chip *chip);
> int pwmchip_remove(struct pwm_chip *chip);
> struct pwm_device *pwm_request_from_chip(struct pwm_chip *chip,
> unsigned int index,
> @@ -217,6 +218,11 @@ static inline int pwmchip_add(struct pwm_chip *chip)
> return -EINVAL;
> }
>
> +static inline int pwmchip_add_inversed(struct pwm_chip *chip)
> +{
> + return -EINVAL;
> +}
> +
> static inline int pwmchip_remove(struct pwm_chip *chip)
> {
> return -EINVAL;
>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2015-01-13 20:44 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-01-05 1:12 [PATCH 0/2] Allow registration of default inversed polarity PWMs Tim Kryger
2015-01-05 1:12 ` [PATCH 1/2] drivers: pwm: core: Add pwmchip_add_inversed Tim Kryger
2015-01-06 21:16 ` Jonathan Richardson
2015-01-13 20:44 ` Scott Branden
2015-01-05 1:12 ` [PATCH 2/2] drivers: pwm: bcm-kona: Dont set polarity in probe Tim Kryger
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).