Messages in this thread | | | Date | Tue, 21 Jan 2020 15:40:19 +0100 | From | Andrew Lunn <> | Subject | Re: No master_xfer_atomic for i2c-mv64xxx.c |
| |
> > However, I'm not entirely sure how we could implement it without > > sleeping. The controller is basically a state machine that triggers an > > interrupt on each state change, so you first set the address, get an > > interrupt, then set the direction, then you get an interrupt, etc. > > > > I guess we could implement it using polling, but I'm not sure if > > that's wise in an interrupt context either. > > I believe that is actually how some of the other drivers handle it, > using polling. You can mask or disable the interrupts while in the > xfer_atomic callback, and the i2c core won't schedule two transfers > at the same time anyway.
The ocore driver is similar to the Marvell driver, a big state machine. It implements polling for atomic transfers. It needs polling support anyway, because some instantiations of the hardware have broken interrupts :-(
Maybe there is some code which can be copied from the ocore driver?
Andrew
| |