On Fri, 2019-12-20 at 14:55 +0530, Shubhrajyoti Datta wrote: > Hi , > > On Thu, Dec 19, 2019 at 7:00 PM Radu Pirea <radu_nicolae.pirea@xxxxxx > > wrote: > > 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. > > However that should be done only if no master is talking to the slave > right? Yes. The state of the slave must be IDLE, otherwise cdns_i2c_master_xfer will return -EAGAIN. > > > In cdns_i2c_master_xfer is done all the magic.