Messages in this thread | | | From | Parshuram Thombare <> | Subject | [PATCH v1 0/3] I3C mastership handover support | Date | Tue, 7 Apr 2020 00:20:45 +0200 |
| |
Hi,
This patch series is to enable mastership handover feature in I3C master subsystem and Cadence's I3C controller driver.
[PATCH 1/3] i3c: master: split bus_init callback into bus_init and master_set_info There are 2 reasons for this split Currently bus_init callback is involved in a. Controller specific settings such as clock prescalar, enabling different functionalities and finally enabling the controller. b. Allocating address to the main master and calling i3c_master_set_info, which basically create a I3C device for master and add it to system. This is fine for main master, but for secondary master this should be deferred until controller actually owns the bus/mastership.
Another reason is, to support secondary master initialization without board info, controller specific bus mode setting need to be done twice First with pure bus mode and second time when actual bus mode is known based on data received through DEFSLVS, whereas master set info is supposed to be done only once.
[PATCH 2/3] i3c: add mastership handover support to i3c master subsystem This patch add mastership handover support as per MIPI I3C spec v1.0. Main master and secondary masters starts in pure bus mode to allow enumeration (DAA) to happen in same bus mode. Secondary masters are not required to have information about other devices connected on the bus through board info, this information is derived from DEFSLVS received from main master. While acquiring mastership, requesting master always make sure that it has active dynamic address, and received DEFSLVS at least once. Mastership request state machine make sure that any pending DEFSLVS is processed, so that when device become master it always have correct view of the bus.
[PATCH 3/3] i3c: master: add mastership handover support to cdns i3c master driver This patch adds mastership handover support to the Cadence I3C controller driver. Basically, this include necessary callbacks for mastership request.
Regards, Parshuram Thombare
Parshuram Thombare (3): i3c: master: split bus_init callback into bus_init and master_set_info i3c: add mastership handover support to i3c master subsystem i3c: master: add mastership handover support to cdns i3c master driver
drivers/i3c/master.c | 490 ++++++++++++++++++++++++--- drivers/i3c/master/dw-i3c-master.c | 29 +- drivers/i3c/master/i3c-master-cdns.c | 385 ++++++++++++++++++--- include/linux/i3c/master.h | 47 ++- 4 files changed, 854 insertions(+), 97 deletions(-)
-- 2.17.1
| |