On Thu, 2019-12-19 at 14:05 +0100, Wolfram Sang wrote: > > +/** > > + * enum cdns_i2c_mode - I2C Controller current operating mode > > + * > > + * @CDNS_I2C_MODE_SLAVE: I2C controller operating in slave > > mode > > + * @CDNS_I2C_MODE_MASTER: I2C Controller operating in master > > mode > > + */ > > Can't the hardware operate as master and slave at the same time? > Of course, it can. If the driver has a slave registered wait and listens and if the subsystem needs to use the controller as master, the driver changes the state of the controller to master, sends and reads data from the bus and after this change the state of the controller to slave. In cdns_i2c_master_xfer is done all the magic.