RE: Adding support for configuring polarity in PWM framework.

From: Philip, Avinash
Date: Mon Jul 16 2012 - 08:25:07 EST


On Mon, Jul 16, 2012 at 17:09:21, Thierry Reding wrote:
> On Mon, Jul 16, 2012 at 11:15:50AM +0000, Philip, Avinash wrote:
> > Hi Thierry,
> >
> > On one of the custom boards we are using, uses PWM to drive the backlight. However, for
> > this device, PWM signal needs to be inversed.
> > So, we need to a platform data to indicate this parameter.
> > Current PWM framework doesn't provide .support for setting polarity (or inverse polarity).
> >
> > Have you come across any such requirements? If so, do you have any plans to implement it?
>
> I don't have any plans to implement such a feature.

Ok. Thanks for the quick response.
>
> > I am planning to add support for the same but want to avoid duplication of work.
> >
> > If you have no plans, then I will send a patch to support the same.
>
> I wonder how you want to implement this. You'll need special hardware
> support for it

Yes. Our custom hardware (backlight booster) requires the pwm signal to be
inverted.

> you may be able to implement it in the driver itself
> instead of putting it into the framework.

This is a client specific data (backlight needs pwm signal inversed)
and not the main device feature (not PWM IP). So we cannot send this in
pwm platform data. This would come as call from client driver (which in
our case is from pwm_bl.c)

> Anyway I'm interested in seeing your patch.

I am planning to modify PWM framework as below.
1. Configure PWM polarity from client driver (using platform data provided
to pwm backlight driver).
2. PWM device needs to be disabled before calling the set-polarity API.

This involves

1. PWM framework API addition.
PWM frame work API support.
/**
* pwm_setpolarity() - change a PWM device Polarity
* @pwm: PWM device
* @polarity: Configure polarity of PWM
*
* polarity - false -> "on" time defined by duty ns
* - true -> "off' time defined by duty ns.
*/
int pwm_setpolarity(struct pwm_device *pwm, bool inversepol);

2. Add "set_polarity" operation support in pwm_ops.

3. Modification in backlight driver (pwm_bl.c) to support polarity configuration.

Thanks
Avinash

>
> Thierry
>

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/