pwm: imx: Port "pwm: imx: support output polarity inversion" to Linux v4.7
Subsystems (2)
PATCH 1/1 pwm: imx: Port "pwm: imx: support output polarity inversion" to Linux v4.7
This patch ports "pwm: imx: support output polarity inversion" patch set written by Lothar Wassmann (v6 from 10.2014).
It is used to control backlight of panels via inverted PWM signal.
The "inversion" of PWM output is not an issue at such devices, since separate GPIO pin is responsible for enabling and disabling the panel's backlight.
This patch should be put on top of:
https://patchwork.kernel.org/patch/5065841/
https://patchwork.kernel.org/patch/5065821/
https://patchwork.kernel.org/patch/5065811/
--- drivers/pwm/pwm-imx.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-)
drivers/pwm/pwm-imx.c +14 -6
@@ -181,7 +181,7 @@ static int imx_pwm_config_v2(struct pwm_chip *chip,if (enable) cr |=MX3_PWMCR_EN ; -if (pwm->polarity ==PWM_POLARITY_INVERSED ) +if (pwm->args.polarity ==PWM_POLARITY_INVERSED ) cr |=MX3_PWMCR_POUTC ;writel (cr, imx->mmio_base +MX3_PWMCR );
@@ -201,11 +201,6 @@ static void imx_pwm_set_enable_v2(struct pwm_chip *chip, bool enable)else val &= ~MX3_PWMCR_EN ; -if (chip->pwms[0 ].polarity ==PWM_POLARITY_INVERSED ) - val |=MX3_PWMCR_POUTC ; -else - val &= ~MX3_PWMCR_POUTC ; -writel (val, imx->mmio_base +MX3_PWMCR ); }
@@ -253,6 +248,19 @@ static int imx_pwm_set_polarity(struct pwm_chip *chip, struct pwm_device *pwm, enum pwm_polarity polarity) {struct imx_chip *imx =to_imx_chip (chip); +u32 val; + +if (polarity == pwm->args.polarity) +return 0 ; + + val =readl (imx->mmio_base +MX3_PWMCR ); + +if (polarity ==PWM_POLARITY_INVERSED ) + val |=MX3_PWMCR_POUTC ; +else + val &= ~MX3_PWMCR_POUTC ; + +writel (val, imx->mmio_base +MX3_PWMCR );dev_dbg (imx->chip.dev,"%s: polarity set to %s\n" , __func__, polarity ==PWM_POLARITY_INVERSED ?"inverted" :"normal" );
Signature · 1 line
2.1.4
PATCH 1/1 pwm: imx: Port "pwm: imx: support output polarity inversion" to Linux v4.7
Dear Lothar, Stefan,
Quoted 3 lines
This patch ports "pwm: imx: support output polarity inversion" patch set written by Lothar Wassmann (v6 from 10.2014).
I've read the e-mail from Stefan regarding missing support for pwm-imx polarity inversion feature.
I also would like to see it in ML. Hence, my patch. Lothar, please feel free to squash it to your patches when you (I hope :-) ) will prepare v7 of this feature.
I hope that this would help.
Best regards,
?ukasz Majewski
Quoted 63 lines
It is used to control backlight of panels via inverted PWM signal.
The "inversion" of PWM output is not an issue at such devices, since separate GPIO pin is responsible for enabling and disabling the panel's backlight.
This patch should be put on top of:
https://patchwork.kernel.org/patch/5065841/
https://patchwork.kernel.org/patch/5065821/
https://patchwork.kernel.org/patch/5065811/Signed-off-by Lukasz Majewski <[email protected]>--- drivers/pwm/pwm-imx.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-)drivers/pwm/pwm-imx.c +1
-1@@ -181,7 +181,7 @@ static int imx_pwm_config_v2(struct pwm_chip *chip, if (enable) cr |= MX3_PWMCR_EN; -if (pwm->polarity ==PWM_POLARITY_INVERSED ) +if (pwm->args.polarity ==PWM_POLARITY_INVERSED ) cr |=MX3_PWMCR_POUTC ;writel (cr, imx->mmio_base +MX3_PWMCR );@@ -201,11 +201,6 @@ static void imx_pwm_set_enable_v2(struct
pwm_chip*chip, bool enable) elsedrivers/pwm/pwm-imx.c +13
-5val &= ~MX3_PWMCR_EN ; -if (chip->pwms[0 ].polarity ==PWM_POLARITY_INVERSED ) - val |=MX3_PWMCR_POUTC ; -else - val &= ~MX3_PWMCR_POUTC ; -writel (val, imx->mmio_base +MX3_PWMCR ); }@@ -253,6 +248,19 @@ static int imx_pwm_set_polarity(struct pwm_chip *chip, struct pwm_device *pwm, enum pwm_polarity polarity) {struct imx_chip *imx =to_imx_chip (chip); +u32 val; + +if (polarity == pwm->args.polarity) +return 0 ; + + val =readl (imx->mmio_base +MX3_PWMCR ); + +if (polarity ==PWM_POLARITY_INVERSED ) + val |=MX3_PWMCR_POUTC ; +else + val &= ~MX3_PWMCR_POUTC ; + +writel (val, imx->mmio_base +MX3_PWMCR ); dev_dbg(imx->chip.dev, "%s: polarity set to %s\n", __func__, polarity == PWM_POLARITY_INVERSED ? "inverted" :
Quoted 1 line
"normal");
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 181 bytes
Desc: OpenPGP digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20160911/01d39f48/attachment-0001.sig>
PATCH 1/1 pwm: imx: Port "pwm: imx: support output polarity inversion" to Linux v4.7
Dear all,
Quoted 6 lines
Dear Lothar, Stefan,
Quoted 3 lines
This patch ports "pwm: imx: support output polarity inversion" patch set written by Lothar Wassmann (v6 from 10.2014).
Quoted 8 lines
I've read the e-mail from Stefan regarding missing support for pwm-imx polarity inversion feature.
I also would like to see it in ML. Hence, my patch. Lothar, please feel free to squash it to your patches when you (I hope :-) ) will prepare v7 of this feature.
I hope that this would help.
Was there any decision about those patches?
Would they be included to main line anytime soon?
Best regards,
?ukasz Majewski
Quoted 65 lines
Best regards,
?ukasz MajewskiQuoted 61 lines
It is used to control backlight of panels via inverted PWM signal.
The "inversion" of PWM output is not an issue at such devices, since separate GPIO pin is responsible for enabling and disabling the panel's backlight.
This patch should be put on top of:
https://patchwork.kernel.org/patch/5065841/
https://patchwork.kernel.org/patch/5065821/
https://patchwork.kernel.org/patch/5065811/Signed-off-by Lukasz Majewski <[email protected]>--- drivers/pwm/pwm-imx.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-)drivers/pwm/pwm-imx.c +1
-1@@ -181,7 +181,7 @@ static int imx_pwm_config_v2(struct pwm_chip *chip, if (enable) cr |= MX3_PWMCR_EN; -if (pwm->polarity ==PWM_POLARITY_INVERSED ) +if (pwm->args.polarity ==PWM_POLARITY_INVERSED ) cr |=MX3_PWMCR_POUTC ;writel (cr, imx->mmio_base +MX3_PWMCR );@@ -201,11 +201,6 @@ static void imx_pwm_set_enable_v2(struct
pwm_chip*chip, bool enable) elsedrivers/pwm/pwm-imx.c +13
-5val &= ~MX3_PWMCR_EN ; -if (chip->pwms[0 ].polarity ==PWM_POLARITY_INVERSED ) - val |=MX3_PWMCR_POUTC ; -else - val &= ~MX3_PWMCR_POUTC ; -writel (val, imx->mmio_base +MX3_PWMCR ); }@@ -253,6 +248,19 @@ static int imx_pwm_set_polarity(struct pwm_chip *chip, struct pwm_device *pwm, enum pwm_polarity polarity) {struct imx_chip *imx =to_imx_chip (chip); +u32 val; + +if (polarity == pwm->args.polarity) +return 0 ; + + val =readl (imx->mmio_base +MX3_PWMCR ); + +if (polarity ==PWM_POLARITY_INVERSED ) + val |=MX3_PWMCR_POUTC ; +else + val &= ~MX3_PWMCR_POUTC ; + +writel (val, imx->mmio_base +MX3_PWMCR );
Quoted 4 lines
Quoted 3 lines
drivers/pwm/pwm-imx.c +0
-0dev_dbg(imx->chip.dev, "%s: polarity set to %s\n",
__func__, polarity ==PWM_POLARITY_INVERSED? "inverted" :
"normal");
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 181 bytes
Desc: OpenPGP digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20160930/22860f65/attachment.sig>
PATCH 1/1 pwm: imx: Port "pwm: imx: support output polarity inversion" to Linux v4.7
Quoted 11 lines · Lukasz Majewski
Dear all,
Quoted 9 lines
Dear Lothar, Stefan,
Quoted 3 lines
This patch ports "pwm: imx: support output polarity inversion" patch set written by Lothar Wassmann (v6 from 10.2014).
I've read the e-mail from Stefan regarding missing support for pwm-imx polarity inversion feature.
Quoted 7 lines
Quoted 5 lines
I also would like to see it in ML. Hence, my patch. Lothar, please feel free to squash it to your patches when you (I hope :-) ) will prepare v7 of this feature.
I hope that this would help.
Was there any decision about those patches?
Bhuvan here at Toradex is preparing an updated patchset...
Quoted 2 lines
Would they be included to main line anytime soon?
I don't think that there were fundamental issues with the patchset, so I hope they make it once upon a time...
--
Stefan
Quoted 73 lines
Best regards,
?ukasz MajewskiQuoted 69 lines
Best regards,
?ukasz MajewskiQuoted 64 lines
It is used to control backlight of panels via inverted PWM signal.
The "inversion" of PWM output is not an issue at such devices, since separate GPIO pin is responsible for enabling and disabling the panel's backlight.
This patch should be put on top of:
https://patchwork.kernel.org/patch/5065841/
https://patchwork.kernel.org/patch/5065821/
https://patchwork.kernel.org/patch/5065811/Signed-off-by Lukasz Majewski <[email protected]>--- drivers/pwm/pwm-imx.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-)drivers/pwm/pwm-imx.c +1
-1@@ -181,7 +181,7 @@ static int imx_pwm_config_v2(struct pwm_chip *chip, if (enable) cr |= MX3_PWMCR_EN; -if (pwm->polarity ==PWM_POLARITY_INVERSED ) +if (pwm->args.polarity ==PWM_POLARITY_INVERSED ) cr |=MX3_PWMCR_POUTC ;writel (cr, imx->mmio_base +MX3_PWMCR );@@ -201,11 +201,6 @@ static void imx_pwm_set_enable_v2(struct
pwm_chip*chip, bool enable) elsedrivers/pwm/pwm-imx.c +13
-5val &= ~MX3_PWMCR_EN ; -if (chip->pwms[0 ].polarity ==PWM_POLARITY_INVERSED ) - val |=MX3_PWMCR_POUTC ; -else - val &= ~MX3_PWMCR_POUTC ; -writel (val, imx->mmio_base +MX3_PWMCR ); }@@ -253,6 +248,19 @@ static int imx_pwm_set_polarity(struct pwm_chip *chip, struct pwm_device *pwm, enum pwm_polarity polarity) {struct imx_chip *imx =to_imx_chip (chip); +u32 val; + +if (polarity == pwm->args.polarity) +return 0 ; + + val =readl (imx->mmio_base +MX3_PWMCR ); + +if (polarity ==PWM_POLARITY_INVERSED ) + val |=MX3_PWMCR_POUTC ; +else + val &= ~MX3_PWMCR_POUTC ; + +writel (val, imx->mmio_base +MX3_PWMCR ); dev_dbg(imx->chip.dev, "%s: polarity set to %s\n",
__func__, polarity ==PWM_POLARITY_INVERSED? "inverted" :
"normal");