On Sat, Mar 02, 2019 at 08:34:01PM -0300, Paul Cercueil wrote: > The TCU channels 0 and 1 were previously reserved for system tasks, and > thus unavailable for PWM. > > Signed-off-by: Paul Cercueil > Tested-by: Mathieu Malaterre > Tested-by: Artur Rojek > --- > > Notes: > v6: New patch > > v7: No change > > v8: ingenic_tcu_[request,release]_channel are dropped. We now use > the memory resources provided to the driver to detect whether > or not we are allowed to use the TCU channel. > > v9: Drop previous system. Call a API function provided by the > clocksource driver to know if we can use the channel as PWM. > > v10: No change > > drivers/pwm/pwm-jz4740.c | 6 +----- > 1 file changed, 1 insertion(+), 5 deletions(-) > > diff --git a/drivers/pwm/pwm-jz4740.c b/drivers/pwm/pwm-jz4740.c > index f497388fc818..c914589d547b 100644 > --- a/drivers/pwm/pwm-jz4740.c > +++ b/drivers/pwm/pwm-jz4740.c > @@ -44,11 +44,7 @@ static int jz4740_pwm_request(struct pwm_chip *chip, struct pwm_device *pwm) > char clk_name[16]; > int ret; > > - /* > - * Timers 0 and 1 are used for system tasks, so they are unavailable > - * for use as PWMs. > - */ > - if (pwm->hwpwm < 2) > + if (!ingenic_tcu_pwm_can_use_chn(pwm->hwpwm)) > return -EBUSY; Like I said earlier, I think this would be nicer to take a parameter to a struct device * to remove the need for a global variable (at least for this particular case). Thierry