From mboxrd@z Thu Jan 1 00:00:00 1970 From: Radu Pirea Subject: Re: [PATCH] i2c: cadence: Added slave support Date: Thu, 19 Dec 2019 15:29:30 +0200 Message-ID: <6504123809effc310ade02dbb8a63f10db6b6c92.camel@upb.ro> References: <20191219124120.53754-1-radu_nicolae.pirea@upb.ro> <20191219130501.GA958@kunai> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <20191219130501.GA958@kunai> Sender: linux-kernel-owner@vger.kernel.org To: Wolfram Sang Cc: linux-arm-kernel@lists.infradead.org, linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, Chirag Parekh , Michal Simek List-Id: linux-i2c@vger.kernel.org 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.