On Mon, 11 May 2020 15:12:39 +0200
Parshuram Thombare wrote:
> Document describing secondary master initialization,
> mastership handover and DEFSLVS handling processes.
Thanks for doing that, but you probably didn't try to compile the doc
(the formatting is all messed up).
# make htmldocs
and then check the output in Documentation/output/ (open index.html
with a web-browser and go to the i3c section).
>
> Signed-off-by: Parshuram Thombare
> ---
> Documentation/driver-api/i3c/index.rst| 1 +
> .../i3c/secondary-master-initialization.rst | 118 ++
> 2 files changed, 119 insertions(+)
> create mode 100644
> Documentation/driver-api/i3c/secondary-master-initialization.rst
>
> diff --git a/Documentation/driver-api/i3c/index.rst
> b/Documentation/driver-api/i3c/index.rst
> index 783d6dad054b..af2a0aa68f5b 100644
> --- a/Documentation/driver-api/i3c/index.rst
> +++ b/Documentation/driver-api/i3c/index.rst
> @@ -9,3 +9,4 @@ I3C subsystem
> protocol
> device-driver-api
> master-driver-api
> + secondary-master-initialization
> diff --git a/Documentation/driver-api/i3c/secondary-master-initialization.rst
> b/Documentation/driver-api/i3c/secondary-master-initialization.rst
> new file mode 100644
> index ..9d1869550807
> --- /dev/null
> +++ b/Documentation/driver-api/i3c/secondary-master-initialization.rst
> @@ -0,0 +1,118 @@
> +.. SPDX-License-Identifier: GPL-2.0
> +
> +===
> +I3C Secondary Master Initialization
> +===
> +
> ++-+---+
> +| **Main master** | **Secondary master**
> |
> ++=+===+
> +| |
> |
> +| | Do I3C master controller specific | | Do I3C master controller
> specefic |
> +| initialization. | initialization, except
> enabling |
> +| | the DEFSLVS interrupt.
> |
> +| | Call i3c_master_register | | Call
> i3c_secondary_master_register |
> +| |
> |
> +| *i3c_master_register* |
> *i3c_secondary_master_register* |
> +|| Initialize I3C master controller || Initialize I3C master
> controller |
> +| object.| object.
> |
> +|| Scan I3C and I2C devices from DTS. || Scan I2C devices from DTS.
> |
> +|| Set appropriate bus mode based on || Set appropriate bus mode
> based on|
> +| I2C devices information. | I3C and I2C devices
> information. |
> +|| Create a work queue. || Create a work queue.
> |
> +|| Call i3c_master_bus_init || Call
> i3c_secondary_master_bus_init |
> +| |
> |
> +| *i3c_master_bus_init* |
> *i3c_secondary_master_bus_init* |
> +| | Call bus_init to do controller | | Call bus_init to do
> controller|
> +| specific bus initialization and | specific bus
> initialization and |
> +| enabling the controller.| enabling the controller.
> |
> +| | Create I3C device representing a| | Create I3C device
> representing a |
> +| master and add it to the I3C| master and add it to the
> I3C |
> +| device list.| device list.
> |
> +| | Set current master to the device|
> |
> +| created to represent I3C master || Allocate memory for
> 'defslvs_data', |
> +| device. | that will be used to pass
> I3C|
> +| | Reset all dynamic address that | device list received in
> DEFSLVS |
> +| may have been assigned before. | to I3C core DEFSLVS
> processing |
> +| | Disable all slave events before || Add I3C device representing
> this |
> +| starting DAA. | master to the system.
> |
> +| | Pre-assign dynamic address and || Expose our I3C bus as an
> I2C adapter |
> +| retrieve device information if | so that I2C devices are
> exposed |
> +| needed. | through the I2C subsystem.
> |
> +| | Do dynamic address assignment to|
> |
> +| all I3C devices currenly present| |