Hello, On Wed, Aug 14, 2019 at 08:23:37PM +0800, Baolin Wang wrote: > On Wed, 14 Aug 2019 at 18:55, Uwe Kleine-König > <u.kleine-koenig@xxxxxxxxxxxxxx> wrote: > > On Wed, Aug 14, 2019 at 06:01:50PM +0800, Baolin Wang wrote: > > > On Wed, 14 Aug 2019 at 17:23, Uwe Kleine-König > > > <u.kleine-koenig@xxxxxxxxxxxxxx> wrote: > > > > On Wed, Aug 14, 2019 at 04:42:28PM +0800, Baolin Wang wrote: > > > > > On Tue, 13 Aug 2019 at 23:16, Uwe Kleine-König > > > > > <u.kleine-koenig@xxxxxxxxxxxxxx> wrote: > > > > > > On Tue, Aug 13, 2019 at 09:46:41PM +0800, Baolin Wang wrote: > > > > > > [...] > > > > > Not really, our hardware's method is, when you changed a new > > > > > configuration (MOD or duty is changed) , the hardware will wait for a > > > > > while to complete current period, then change to the new period. > > > > > > > > Can you describe that in more detail? This doesn't explain why MOD must be > > > > configured before DUTY. Is there another reason for that? > > > > > > Sorry, I did not explain this explicitly. When we change a new PWM > > > configuration, the PWM controller will make sure the current period is > > > completed before changing to a new period. Once setting the MOD > > > register (since we always set MOD firstly), that will tell the > > > hardware that a new period need to change. > > > > So if the current period just ended after you reconfigured MOD but > > before you wrote to DUTY we'll see a bogus period, right? I assume the > > same holds true for writing the prescale value? > > I confirmed again, I am sorry I missed something before. Yes, like you > said before, writing DUTY triggers the hardware to actually apply the > values written to MOD and DUTY to the output. So write DUTY last. I > will update the comments and change the PWM configure like: > > sprd_pwm_write(spc, pwm->hwpwm, SPRD_PWM_PRESCALE, prescale); > sprd_pwm_write(spc, pwm->hwpwm, SPRD_PWM_MOD, SPRD_PWM_MOD_MAX); > sprd_pwm_write(spc, pwm->hwpwm, SPRD_PWM_DUTY, duty); So PRESCALE is independent and it can still happen that writing PRESCALE affects the output before MOD and DUTY do? Best regards Uwe -- Pengutronix e.K. | Uwe Kleine-König | Industrial Linux Solutions | http://www.pengutronix.de/ |