[PATCH v3 15/22] firmware: arm_scmi: abstract mailbox interface
From: Sudeep Holla <hidden>
Date: 2017-10-04 11:32:29
Also in:
linux-devicetree, lkml
On 04/10/17 12:24, Arnd Bergmann wrote:
On Thu, Sep 28, 2017 at 3:11 PM, Sudeep Holla [off-list ref] wrote:quoted
Some of the mailbox controller expects controller specific data in order to implement simple doorbell mechanism as expected by SCMI specification. This patch creates a shim layer to abstract the mailbox interface so that it can support any mailbox controller. It also provides default implementation which maps to standard mailbox client APIs, so that controllers implementing doorbell mechanism need not require any additional layer. Cc: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Sudeep Holla <redacted>Another level? Now we have three levels of stacked mailboxes, with the highest level being the combined mailbox/memory, then the shim, and below it the hardware mailbox. Can you try to come up with a way to do this with fewer abstractions?
I completely agree with you. I was against this but Jassi recommended this. I just wanted this SCMI to work with mailbox controllers that support simple doorbell mechanism as specified in the specification but Jassi disagrees with that.
Maybe you could assume that the mailbox itself can take variable-length data packets, and then use the shim here for those that require something else?
As per SCMI specification, we pass all the data in shared memory and it just expects to use a simple doorbell feature from hardware mailbox controllers. It's done that way intentionally to avoid dependency on h/w and we for sure will have variety of it and that defeats the purpose of this standard specification. Also, I have added shim only for specific controllers that need them. E.g. ARM MHU as Jassi disagreed to add doorbell mechanism to that. mbox_if provides default implementation that just calls direct mailbox APIs. -- Regards, Sudeep