pwm: Make of_pwm_xlate_with_flags() work with #pwm-cells = <2>
The two functions of_pwm_simple_xlate() and of_pwm_xlate_with_flags() are quite similar. of_pwm_simple_xlate() only supports two-cell PWM specifiers while of_pwm_xlate_with_flags() only supports PWM specifiers with 3 or more cells. The latter can easily be modified to behave identically to of_pwm_simple_xlate() for two-cell PWM specifiers. This is implemented here and allows to drop of_pwm_simple_xlate() in the next commit. There is a small detail that is different now in the two-cell specifier case in of_pwm_xlate_with_flags(): pwm->args.polarity is unconditionally initialized to PWM_POLARITY_NORMAL in the latter. I didn't find a case where this matters and doing that explicitly is the more robust approach. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> [thierry.reding@gmail.com: fix up checkpatch warnings] Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
This commit is contained in:
committed by
Thierry Reding
parent
6efb943b86
commit
cf38c978cf
@ -126,8 +126,7 @@ of_pwm_xlate_with_flags(struct pwm_chip *pc, const struct of_phandle_args *args)
|
|||||||
{
|
{
|
||||||
struct pwm_device *pwm;
|
struct pwm_device *pwm;
|
||||||
|
|
||||||
/* check, whether the driver supports a third cell for flags */
|
if (pc->of_pwm_n_cells < 2)
|
||||||
if (pc->of_pwm_n_cells < 3)
|
|
||||||
return ERR_PTR(-EINVAL);
|
return ERR_PTR(-EINVAL);
|
||||||
|
|
||||||
/* flags in the third cell are optional */
|
/* flags in the third cell are optional */
|
||||||
@ -144,8 +143,10 @@ of_pwm_xlate_with_flags(struct pwm_chip *pc, const struct of_phandle_args *args)
|
|||||||
pwm->args.period = args->args[1];
|
pwm->args.period = args->args[1];
|
||||||
pwm->args.polarity = PWM_POLARITY_NORMAL;
|
pwm->args.polarity = PWM_POLARITY_NORMAL;
|
||||||
|
|
||||||
if (args->args_count > 2 && args->args[2] & PWM_POLARITY_INVERTED)
|
if (pc->of_pwm_n_cells >= 3) {
|
||||||
pwm->args.polarity = PWM_POLARITY_INVERSED;
|
if (args->args_count > 2 && args->args[2] & PWM_POLARITY_INVERTED)
|
||||||
|
pwm->args.polarity = PWM_POLARITY_INVERSED;
|
||||||
|
}
|
||||||
|
|
||||||
return pwm;
|
return pwm;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user