All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lukasz Majewski <l.majewski@majess.pl>
To: Bhuvanchandra DV <bhuvanchandra.dv@toradex.com>
Cc: mark.rutland@arm.com, linux-pwm@vger.kernel.org,
	l.majewski@samsung.com, linux-kernel@vger.kernel.org,
	stefan@agner.ch, robh+dt@kernel.org, thierry.reding@gmail.com,
	kernel@pengutronix.de, fabio.estevam@nxp.com,
	shawnguo@kernel.org, linux-arm-kernel@lists.infradead.org,
	Lothar Wassmann <LW@KARO-electronics.de>
Subject: Re: [PATCH v2 2/6] pwm: core: make the PWM_POLARITY flag in DTB optional
Date: Thu, 6 Oct 2016 08:36:42 +0200	[thread overview]
Message-ID: <20161006083642.6a28a629@jawa> (raw)
In-Reply-To: <20161001101235.24598-3-bhuvanchandra.dv@toradex.com>


[-- Attachment #1.1: Type: text/plain, Size: 3106 bytes --]

Hi Bhuvanchandra,

> From: Lothar Wassmann <LW@KARO-electronics.de>
> 
> Change the pwm chip driver registration, so that a chip driver that
> supports polarity inversion can still be used with DTBs that don't
> provide the 'PWM_POLARITY' flag.
> 
> This is done to provide polarity inversion support for the pwm-imx
> driver without having to modify all existing DTS files.
> 
> Signed-off-by: Lothar Wassmann <LW@KARO-electronics.de>
> Signed-off-by: Bhuvanchandra DV <bhuvanchandra.dv@toradex.com>
> Suggested-by: Thierry Reding <thierry.reding@gmail.com>
> ---
>  drivers/pwm/core.c | 27 ++++++++++++++++-----------
>  1 file changed, 16 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/pwm/core.c b/drivers/pwm/core.c
> index 195373e..aae8db3 100644
> --- a/drivers/pwm/core.c
> +++ b/drivers/pwm/core.c
> @@ -137,9 +137,14 @@ of_pwm_xlate_with_flags(struct pwm_chip *pc,
> const struct of_phandle_args *args) {
>  	struct pwm_device *pwm;
>  
> +	/* check, whether the driver supports a third cell for flags
> */ if (pc->of_pwm_n_cells < 3)
>  		return ERR_PTR(-EINVAL);
>  
> +	/* flags in the third cell are optional */
> +	if (args->args_count < 2)
> +		return ERR_PTR(-EINVAL);
> +
>  	if (args->args[0] >= pc->npwm)
>  		return ERR_PTR(-EINVAL);
>  
> @@ -149,10 +154,12 @@ of_pwm_xlate_with_flags(struct pwm_chip *pc,
> const struct of_phandle_args *args) 
>  	pwm->args.period = args->args[1];
>  
> -	if (args->args[2] & PWM_POLARITY_INVERTED)
> -		pwm->args.polarity = PWM_POLARITY_INVERSED;
> -	else
> -		pwm->args.polarity = PWM_POLARITY_NORMAL;
> +	if (args->args_count > 2) {
> +		if (args->args[2] & PWM_POLARITY_INVERTED)
> +			pwm_set_polarity(pwm, PWM_POLARITY_INVERSED);
			^^^^^^^^^^^^^^^^ 
			here we should set pwm->args.polarity, since
			the pwm_set_polarity() calls pwm_apply_state()
			which requires duty_cycle and period to be set.

			In this particular moment it is not yet set and
			polarity is not properly configured.

Patch fixing this will be sent as a reply to this e-mail. Please just
squash it and test on your platform.

Best regards,
Łukasz Majewski

> +		else
> +			pwm_set_polarity(pwm, PWM_POLARITY_NORMAL);
> +	}
>  
>  	return pwm;
>  }
> @@ -163,9 +170,14 @@ of_pwm_simple_xlate(struct pwm_chip *pc, const
> struct of_phandle_args *args) {
>  	struct pwm_device *pwm;
>  
> +	/* sanity check driver support */
>  	if (pc->of_pwm_n_cells < 2)
>  		return ERR_PTR(-EINVAL);
>  
> +	/* all cells are required */
> +	if (args->args_count != pc->of_pwm_n_cells)
> +		return ERR_PTR(-EINVAL);
> +
>  	if (args->args[0] >= pc->npwm)
>  		return ERR_PTR(-EINVAL);
>  
> @@ -672,13 +684,6 @@ struct pwm_device *of_pwm_get(struct device_node
> *np, const char *con_id) goto put;
>  	}
>  
> -	if (args.args_count != pc->of_pwm_n_cells) {
> -		pr_debug("%s: wrong #pwm-cells for %s\n",
> np->full_name,
> -			 args.np->full_name);
> -		pwm = ERR_PTR(-EINVAL);
> -		goto put;
> -	}
> -
>  	pwm = pc->of_xlate(pc, &args);
>  	if (IS_ERR(pwm))
>  		goto put;


[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

[-- Attachment #2: Type: text/plain, Size: 176 bytes --]

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

WARNING: multiple messages have this Message-ID (diff)
From: l.majewski@majess.pl (Lukasz Majewski)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 2/6] pwm: core: make the PWM_POLARITY flag in DTB optional
Date: Thu, 6 Oct 2016 08:36:42 +0200	[thread overview]
Message-ID: <20161006083642.6a28a629@jawa> (raw)
In-Reply-To: <20161001101235.24598-3-bhuvanchandra.dv@toradex.com>

Hi Bhuvanchandra,

> From: Lothar Wassmann <LW@KARO-electronics.de>
> 
> Change the pwm chip driver registration, so that a chip driver that
> supports polarity inversion can still be used with DTBs that don't
> provide the 'PWM_POLARITY' flag.
> 
> This is done to provide polarity inversion support for the pwm-imx
> driver without having to modify all existing DTS files.
> 
> Signed-off-by: Lothar Wassmann <LW@KARO-electronics.de>
> Signed-off-by: Bhuvanchandra DV <bhuvanchandra.dv@toradex.com>
> Suggested-by: Thierry Reding <thierry.reding@gmail.com>
> ---
>  drivers/pwm/core.c | 27 ++++++++++++++++-----------
>  1 file changed, 16 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/pwm/core.c b/drivers/pwm/core.c
> index 195373e..aae8db3 100644
> --- a/drivers/pwm/core.c
> +++ b/drivers/pwm/core.c
> @@ -137,9 +137,14 @@ of_pwm_xlate_with_flags(struct pwm_chip *pc,
> const struct of_phandle_args *args) {
>  	struct pwm_device *pwm;
>  
> +	/* check, whether the driver supports a third cell for flags
> */ if (pc->of_pwm_n_cells < 3)
>  		return ERR_PTR(-EINVAL);
>  
> +	/* flags in the third cell are optional */
> +	if (args->args_count < 2)
> +		return ERR_PTR(-EINVAL);
> +
>  	if (args->args[0] >= pc->npwm)
>  		return ERR_PTR(-EINVAL);
>  
> @@ -149,10 +154,12 @@ of_pwm_xlate_with_flags(struct pwm_chip *pc,
> const struct of_phandle_args *args) 
>  	pwm->args.period = args->args[1];
>  
> -	if (args->args[2] & PWM_POLARITY_INVERTED)
> -		pwm->args.polarity = PWM_POLARITY_INVERSED;
> -	else
> -		pwm->args.polarity = PWM_POLARITY_NORMAL;
> +	if (args->args_count > 2) {
> +		if (args->args[2] & PWM_POLARITY_INVERTED)
> +			pwm_set_polarity(pwm, PWM_POLARITY_INVERSED);
			^^^^^^^^^^^^^^^^ 
			here we should set pwm->args.polarity, since
			the pwm_set_polarity() calls pwm_apply_state()
			which requires duty_cycle and period to be set.

			In this particular moment it is not yet set and
			polarity is not properly configured.

Patch fixing this will be sent as a reply to this e-mail. Please just
squash it and test on your platform.

Best regards,
?ukasz Majewski

> +		else
> +			pwm_set_polarity(pwm, PWM_POLARITY_NORMAL);
> +	}
>  
>  	return pwm;
>  }
> @@ -163,9 +170,14 @@ of_pwm_simple_xlate(struct pwm_chip *pc, const
> struct of_phandle_args *args) {
>  	struct pwm_device *pwm;
>  
> +	/* sanity check driver support */
>  	if (pc->of_pwm_n_cells < 2)
>  		return ERR_PTR(-EINVAL);
>  
> +	/* all cells are required */
> +	if (args->args_count != pc->of_pwm_n_cells)
> +		return ERR_PTR(-EINVAL);
> +
>  	if (args->args[0] >= pc->npwm)
>  		return ERR_PTR(-EINVAL);
>  
> @@ -672,13 +684,6 @@ struct pwm_device *of_pwm_get(struct device_node
> *np, const char *con_id) goto put;
>  	}
>  
> -	if (args.args_count != pc->of_pwm_n_cells) {
> -		pr_debug("%s: wrong #pwm-cells for %s\n",
> np->full_name,
> -			 args.np->full_name);
> -		pwm = ERR_PTR(-EINVAL);
> -		goto put;
> -	}
> -
>  	pwm = pc->of_xlate(pc, &args);
>  	if (IS_ERR(pwm))
>  		goto put;

-------------- 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/20161006/743020b3/attachment.sig>

WARNING: multiple messages have this Message-ID (diff)
From: Lukasz Majewski <l.majewski@majess.pl>
To: Bhuvanchandra DV <bhuvanchandra.dv@toradex.com>
Cc: <shawnguo@kernel.org>, <thierry.reding@gmail.com>,
	mark.rutland@arm.com, linux-pwm@vger.kernel.org,
	l.majewski@samsung.com, linux-kernel@vger.kernel.org,
	stefan@agner.ch, robh+dt@kernel.org, kernel@pengutronix.de,
	fabio.estevam@nxp.com, linux-arm-kernel@lists.infradead.org,
	Lothar Wassmann <LW@KARO-electronics.de>
Subject: Re: [PATCH v2 2/6] pwm: core: make the PWM_POLARITY flag in DTB optional
Date: Thu, 6 Oct 2016 08:36:42 +0200	[thread overview]
Message-ID: <20161006083642.6a28a629@jawa> (raw)
In-Reply-To: <20161001101235.24598-3-bhuvanchandra.dv@toradex.com>

[-- Attachment #1: Type: text/plain, Size: 3106 bytes --]

Hi Bhuvanchandra,

> From: Lothar Wassmann <LW@KARO-electronics.de>
> 
> Change the pwm chip driver registration, so that a chip driver that
> supports polarity inversion can still be used with DTBs that don't
> provide the 'PWM_POLARITY' flag.
> 
> This is done to provide polarity inversion support for the pwm-imx
> driver without having to modify all existing DTS files.
> 
> Signed-off-by: Lothar Wassmann <LW@KARO-electronics.de>
> Signed-off-by: Bhuvanchandra DV <bhuvanchandra.dv@toradex.com>
> Suggested-by: Thierry Reding <thierry.reding@gmail.com>
> ---
>  drivers/pwm/core.c | 27 ++++++++++++++++-----------
>  1 file changed, 16 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/pwm/core.c b/drivers/pwm/core.c
> index 195373e..aae8db3 100644
> --- a/drivers/pwm/core.c
> +++ b/drivers/pwm/core.c
> @@ -137,9 +137,14 @@ of_pwm_xlate_with_flags(struct pwm_chip *pc,
> const struct of_phandle_args *args) {
>  	struct pwm_device *pwm;
>  
> +	/* check, whether the driver supports a third cell for flags
> */ if (pc->of_pwm_n_cells < 3)
>  		return ERR_PTR(-EINVAL);
>  
> +	/* flags in the third cell are optional */
> +	if (args->args_count < 2)
> +		return ERR_PTR(-EINVAL);
> +
>  	if (args->args[0] >= pc->npwm)
>  		return ERR_PTR(-EINVAL);
>  
> @@ -149,10 +154,12 @@ of_pwm_xlate_with_flags(struct pwm_chip *pc,
> const struct of_phandle_args *args) 
>  	pwm->args.period = args->args[1];
>  
> -	if (args->args[2] & PWM_POLARITY_INVERTED)
> -		pwm->args.polarity = PWM_POLARITY_INVERSED;
> -	else
> -		pwm->args.polarity = PWM_POLARITY_NORMAL;
> +	if (args->args_count > 2) {
> +		if (args->args[2] & PWM_POLARITY_INVERTED)
> +			pwm_set_polarity(pwm, PWM_POLARITY_INVERSED);
			^^^^^^^^^^^^^^^^ 
			here we should set pwm->args.polarity, since
			the pwm_set_polarity() calls pwm_apply_state()
			which requires duty_cycle and period to be set.

			In this particular moment it is not yet set and
			polarity is not properly configured.

Patch fixing this will be sent as a reply to this e-mail. Please just
squash it and test on your platform.

Best regards,
Łukasz Majewski

> +		else
> +			pwm_set_polarity(pwm, PWM_POLARITY_NORMAL);
> +	}
>  
>  	return pwm;
>  }
> @@ -163,9 +170,14 @@ of_pwm_simple_xlate(struct pwm_chip *pc, const
> struct of_phandle_args *args) {
>  	struct pwm_device *pwm;
>  
> +	/* sanity check driver support */
>  	if (pc->of_pwm_n_cells < 2)
>  		return ERR_PTR(-EINVAL);
>  
> +	/* all cells are required */
> +	if (args->args_count != pc->of_pwm_n_cells)
> +		return ERR_PTR(-EINVAL);
> +
>  	if (args->args[0] >= pc->npwm)
>  		return ERR_PTR(-EINVAL);
>  
> @@ -672,13 +684,6 @@ struct pwm_device *of_pwm_get(struct device_node
> *np, const char *con_id) goto put;
>  	}
>  
> -	if (args.args_count != pc->of_pwm_n_cells) {
> -		pr_debug("%s: wrong #pwm-cells for %s\n",
> np->full_name,
> -			 args.np->full_name);
> -		pwm = ERR_PTR(-EINVAL);
> -		goto put;
> -	}
> -
>  	pwm = pc->of_xlate(pc, &args);
>  	if (IS_ERR(pwm))
>  		goto put;


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

  reply	other threads:[~2016-10-06  6:36 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-01 10:12 [PATCH v2 0/6] Support PWM polarity control Bhuvanchandra DV
2016-10-01 10:12 ` Bhuvanchandra DV
2016-10-01 10:12 ` Bhuvanchandra DV
2016-10-01 10:12 ` [PATCH v2 1/6] pwm: print error messages with pr_err() instead of pr_debug() Bhuvanchandra DV
2016-10-01 10:12   ` Bhuvanchandra DV
2016-10-01 10:12   ` Bhuvanchandra DV
2016-10-01 10:12 ` [PATCH v2 2/6] pwm: core: make the PWM_POLARITY flag in DTB optional Bhuvanchandra DV
2016-10-01 10:12   ` Bhuvanchandra DV
2016-10-01 10:12   ` Bhuvanchandra DV
2016-10-06  6:36   ` Lukasz Majewski [this message]
2016-10-06  6:36     ` Lukasz Majewski
2016-10-06  6:36     ` Lukasz Majewski
2016-10-07  4:49     ` Bhuvanchandra DV
2016-10-07  4:49       ` Bhuvanchandra DV
2016-10-07  4:49       ` Bhuvanchandra DV
2016-10-06  6:49   ` [PATCH] pwm: core: Use pwm->args.polarity to setup PWM_POLARITY_INVERSED Lukasz Majewski
2016-10-06  6:49     ` Lukasz Majewski
2016-10-06  6:49     ` Lukasz Majewski
2016-10-01 10:12 ` [PATCH v2 3/6] pwm: imx: support output polarity inversion Bhuvanchandra DV
2016-10-01 10:12   ` Bhuvanchandra DV
2016-10-01 10:12   ` Bhuvanchandra DV
2016-10-01 10:12 ` [PATCH v2 4/6] arm: dts: imx7: Update #pwm-cells for PWM polarity control Bhuvanchandra DV
2016-10-01 10:12   ` Bhuvanchandra DV
2016-10-01 10:12   ` Bhuvanchandra DV
2016-10-01 10:12 ` [PATCH v2 5/6] arm: dts: imx7-colibri: Use pwm " Bhuvanchandra DV
2016-10-01 10:12   ` Bhuvanchandra DV
2016-10-01 10:12   ` Bhuvanchandra DV
2016-10-06  6:40   ` Lukasz Majewski
2016-10-06  6:40     ` Lukasz Majewski
2016-10-07  4:49     ` Bhuvanchandra DV
2016-10-07  4:49       ` Bhuvanchandra DV
2016-10-07  6:08     ` Bhuvanchandra DV
2016-10-07  6:08       ` Bhuvanchandra DV
2016-10-07  6:41       ` Lukasz Majewski
2016-10-07  6:41         ` Lukasz Majewski
2016-10-01 10:12 ` [PATCH v2 6/6] arm: dts: imx7-colibri: Use enable-gpios for BL_ON Bhuvanchandra DV
2016-10-01 10:12   ` Bhuvanchandra DV
2016-10-01 10:12   ` Bhuvanchandra DV
2016-10-04  7:48 ` [PATCH v2 0/6] Support PWM polarity control Lukasz Majewski
2016-10-04  7:48   ` Lukasz Majewski
2016-10-04  7:48   ` Lukasz Majewski
2016-10-05 16:50   ` Stefan Agner
2016-10-05 16:50     ` Stefan Agner
2016-10-05 16:50     ` Stefan Agner
2016-10-06  6:26     ` Lukasz Majewski
2016-10-06  6:26       ` Lukasz Majewski
2016-10-06  6:26       ` Lukasz Majewski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20161006083642.6a28a629@jawa \
    --to=l.majewski@majess.pl \
    --cc=LW@KARO-electronics.de \
    --cc=bhuvanchandra.dv@toradex.com \
    --cc=fabio.estevam@nxp.com \
    --cc=kernel@pengutronix.de \
    --cc=l.majewski@samsung.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pwm@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=robh+dt@kernel.org \
    --cc=shawnguo@kernel.org \
    --cc=stefan@agner.ch \
    --cc=thierry.reding@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.