* [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
* 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
* [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
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 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.