lkml.org 
[lkml]   [2016]   [Nov]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [PATCH v3 11/11] pwm: imx: Add polarity inversion support to i.MX's PWMv2
    On 2016-11-01 00:10, Lukasz Majewski wrote:
    > With this patch the polarity settings for i.MX's PWMv2 is now supported
    > on top of atomic PWM setting

    Nit: Try to use imperative, e.g. "Update the driver to support...." (see
    also Documentation/SubmittingPatches).

    I prefer to have the documentation and driver update in one commit so it
    is obvious that the driver support has been added at the same time the
    documentation has been updated.

    --
    Stefan

    >
    > Signed-off-by: Bhuvanchandra DV <bhuvanchandra.dv@toradex.com>
    > Signed-off-by: Lukasz Majewski <l.majewski@majess.pl>
    > ---
    > Changes for v3:
    > - None
    >
    > Changes for v2:
    > - New patch
    > ---
    > drivers/pwm/pwm-imx.c | 11 +++++++++++
    > 1 file changed, 11 insertions(+)
    >
    > diff --git a/drivers/pwm/pwm-imx.c b/drivers/pwm/pwm-imx.c
    > index b636526..03b01a4 100644
    > --- a/drivers/pwm/pwm-imx.c
    > +++ b/drivers/pwm/pwm-imx.c
    > @@ -38,6 +38,7 @@
    > #define MX3_PWMCR_DOZEEN (1 << 24)
    > #define MX3_PWMCR_WAITEN (1 << 23)
    > #define MX3_PWMCR_DBGEN (1 << 22)
    > +#define MX3_PWMCR_POUTC (1 << 18)
    > #define MX3_PWMCR_CLKSRC_IPG_HIGH (2 << 16)
    > #define MX3_PWMCR_CLKSRC_IPG (1 << 16)
    > #define MX3_PWMCR_SWR (1 << 3)
    > @@ -215,6 +216,9 @@ static int imx_pwm_apply_v2(struct pwm_chip *chip,
    > struct pwm_device *pwm,
    > if (state->enabled)
    > cr |= MX3_PWMCR_EN;
    >
    > + if (state->polarity == PWM_POLARITY_INVERSED)
    > + cr |= MX3_PWMCR_POUTC;
    > +
    > writel(cr, imx->mmio_base + MX3_PWMCR);
    >
    > /* Disable the clock if the PWM is being disabled. */
    > @@ -237,6 +241,7 @@ static struct pwm_ops imx_pwm_ops_v2 = {
    > };
    >
    > struct imx_pwm_data {
    > + bool polarity_supported;
    > struct pwm_ops *pwm_ops;
    > };
    >
    > @@ -245,6 +250,7 @@ static struct imx_pwm_data imx_pwm_data_v1 = {
    > };
    >
    > static struct imx_pwm_data imx_pwm_data_v2 = {
    > + .polarity_supported = true,
    > .pwm_ops = &imx_pwm_ops_v2,
    > };
    >
    > @@ -285,6 +291,11 @@ static int imx_pwm_probe(struct platform_device *pdev)
    > imx->chip.base = -1;
    > imx->chip.npwm = 1;
    > imx->chip.can_sleep = true;
    > + if (data->polarity_supported) {
    > + dev_dbg(&pdev->dev, "PWM supports output inversion\n");
    > + imx->chip.of_xlate = of_pwm_xlate_with_flags;
    > + imx->chip.of_pwm_n_cells = 3;
    > + }
    >
    > r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
    > imx->mmio_base = devm_ioremap_resource(&pdev->dev, r);

    \
     
     \ /
      Last update: 2016-11-22 23:15    [W:6.250 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site