Hi Boris,
The DT Bindings say "The node describing an I3C bus should be named
i3c-master.". Do you have a field for secondary master?
On 24-08-2018 19:16, Boris Brezillon wrote:
Well, before even considering supporting secondary master registration,
we need to handle mastership handover. As for the DAA operation, it's
likely to be host specific, so we'll have to add a new hook to the
i3c_master_controller_ops struct.
Do you mean when master try to delegate the bus ownership through
GETACCMST? or to get the bus ownership with IBI-MR?
I think that could be useful to pass the ibi type on request_ibi(),
there is some case where the master doesn't support IBI-MR.
Once you've done that, we'll have trigger a mastership handover
everytime an I3C driver tries to send a frame on the bus, and the
master this frame should do through is not in control of the bus. That
should be pretty easy for the nominal case, but error cases are likely
to be hard to deal with.
Note that I have a ->cur_master field in the i3c_bus object which
stores allows us to track whose the currently active master. If
master->this != master->bus->cur_master that means you need to start a
mastership handover procedure.
That's all I thought about for now, and we'll probably face other
problems when implementing it. Let me know if you have other questions,
and don't hesitate to share your code early during the development
phase.
Also note that the bus representation is likely to change based on
Arnd's feedback, so you might have to rework your implementation a bit
at some point.
Regards,
Boris
Best regards,
Vitor Soares