Message ID | 1606659554-19229-1-git-send-email-pthombar@cadence.com (mailing list archive) |
---|---|
Headers | show |
Series | I3C mastership handover support | expand |
Ping ! >-----Original Message----- >From: Parshuram Thombare <pthombar@cadence.com> >Sent: Sunday, November 29, 2020 7:49 PM >To: alexandre.belloni@bootlin.com; slongerbeam@gmail.com; >vitor.soares@synopsys.com >Cc: linux-i3c@lists.infradead.org; linux-kernel@vger.kernel.org; Milind Parab ><mparab@cadence.com>; praneeth@ti.com; Parshuram Raju Thombare ><pthombar@cadence.com> >Subject: [RESEND PATCH v9 0/7] I3C mastership handover support > >Main changes between v8 and v9 are: >- Fix NULL dereference issue in current_master_show when > cat'ing sysfs key current_master for secondary master > before primary master gets initialized. > >Main changes between v7 and v8 are: >- Document format changed from table to DOT diagram >- Appropriate names for few functions >- Moved mastership request process entirely to the driver >- Reuse of i3c_master_add_i3c_dev_locked in core defslvs > processing > >Main changes between v6 and v7 are: >- Added separate functions for main and secondary > master initialization >- Secondary master initialization don't wait for > DEFSLSVS. >- Change to use I2C device information from DTS, > and corresponding changes in controller driver > and I3C core DEFSLVS processing to ignore I2C > devices received in DEFSLVS >- Reverted bus_init split >- Fixed formatting issues in document > >Main changes between v5 and v6 are: >- Moved populate_bus() hook to master subsystem code. >- For secondary master initialization i3c_master_register > spawan separate threads, as secondary master may have to > wait for DEFSLVS and bus mastership. >- Populate bus info is based on DEFSLVS data and take care > of hot plugged / unplugged I3C devices. >- Split bus_init into bus_init and master_set_info callbacks >- Moved mastership aquire and handover to separate state > machines. >- Added DEFSLVS processing code. >- Moved back all locks in side the subsystem code. >- Secondary mastership support to Cadence I3C master > controller driver >- Sysfs key 'i3c_acquire_bus' to acauire bus. >- NULL check for pool pointer in i3c_generic_ibi_free_pool. > >Main changes between v4 and v5 are: >- Add populate_bus() hook >- Split i3c_master_register into init and register pair >- Split device information retrieval, let add partialy discovered devices >- Make i3c_master_set_info private >- Add separate function to register secondary master >- Reworked secondary master register in CDNS driver >- Export i3c_bus_set_mode > >Main changes between v3 and v4 are: >- Reworked acquire bus ownership >- Refactored the code > >Main changes between v2 and v3 are: >- Added DEFSLVS devices are registered from master driver >- Reworked I2C registering on secondary master side >- Reworked Mastership event is enabled/disabled globally (for all devices) > >Main changes between initial version and v2 are: >- Reworked devices registration on secondary master side >- Reworked mastership event disabling/enabling >- Reworked bus locking during mastership takeover process >- Added DEFSLVS devices registration during initialization >- Fixed style issues > >Parshuram Thombare (7): > i3c: master: master initialization flow document > i3c: master: use i3c_master_register only for main master > i3c: master: add i3c_secondary_master_register > i3c: master: add mastership handover support > i3c: master: add defslvs processing > i3c: master: sysfs key for acquire bus > i3c: master: mastership handover, defslvs processing in cdns > controller driver > > Documentation/driver-api/i3c/index.rst | 1 + > .../driver-api/i3c/master-initialization-flow.rst | 187 ++++++++ > drivers/i3c/master.c | 497 ++++++++++++++++++-- > drivers/i3c/master/dw-i3c-master.c | 4 +- > drivers/i3c/master/i3c-master-cdns.c | 329 ++++++++++++- > include/linux/i3c/master.h | 23 +- > 6 files changed, 968 insertions(+), 73 deletions(-) > create mode 100644 Documentation/driver-api/i3c/master-initialization-flow.rst