On Mon, Aug 6, 2018 at 8:53 PM Andrew Lunn <and...@lunn.ch> wrote: > > On Mon, Aug 06, 2018 at 10:29:16AM +0800, Aditya Prayoga wrote: > > On multiple PWM lines, if the other PWM counter is unused, allocate it > > to next PWM request. The priority would be: > > 1. Default counter assigned to the bank > > 2. Unused counter that is assigned to other bank > > 3. Fallback to default counter > > > > For example on second bank there are three PWM request, first one would > > use default counter (counter B), second one would try to use counter A, > > and the third one would use counter B. > > Hi Aditya > > There are only two PWM counters for all the GPIO lines. So you cannot > support 3 PWM requests. You have to enforce a maximum of two PWMs. > > When i implemented this PWM code, i only needed one PWM. So it took > the easy option. GPIO bank 0 uses counter A, GPIO bank1 uses counter > B. For the hardware you have, this is not sufficient, so you need to > generalise this. Any PWM can use any counter, whatever is available > when the PWM is requested.
Hi Andrew Understood. I will change it in next version. > Rather than have a linked list of PWM, i think it would be better to > have a static array of two mvebu_pwm structures. Index 0 uses counter > A, index 1 uses counter B. You can then keep with the concept of > pwm->pgiod != NULL means the counter is in use. The request() call can > then find an unused PWM, set pwm->gpiod, and point mvchip->mvpwm to > one of the two static instances. That was my initial idea to use static array but then I thought maybe I could generalise it for future device by using linked list. Regards, Aditya > > Andrew