On Thu, May 23, 2024 at 02:30:32PM +0900, きくちゃんさん wrote: > Hello John, Hello, > > Your method is quite impressive and challenging. > > I think PWM is not only for LCD backlighting, but also for signal generation. > For instance, imagine an application software that sends a stream to > one PWM channel to synthesize sound by changing its period (plays a > square wave). > By your method, if the other PWM channel is used for LCD backlighting, > it may flicker repeatedly on DIV_M changes. > (Or simply both channels for streo sound synthesize, you may hear lots > of pop noise) > > It means the setting of one channel can affect the other, which users > may not anticipate. Does Linux guarantee a flicker-free experience with setting up PWM channels, or that it doesn't affect other channels? How do other drivers handle this situation? Maybe out-sourcing the clocking to the device tree and letting people set the clock and common divisor in the DT would be a good idea, with the HOSC and a common divisor of 1 by default, then error if the value can't be found. This would work for periods from 41ns up to 687ms by default. Using APB would give a better resolution as by default it hangs around 5ns which is nice and divisible by 10. > > Best regards, > kikuchan. John.