The Samsung Exynos mailbox controller, used on Google GS101 SoC, has 16 flag bits for hardware interrupt generation and a shared register for passing mailbox messages. When the controller is used by the ACPM protocol the shared register is ignored and the mailbox controller acts as a doorbell. The controller just raises the interrupt to APM after the ACPM protocol has written the message to SRAM. Changes in v6: - mailbox: add support for clients to request channels by arguments. Used by the ACPM interface where the channel identifiers are discovered at runtime. Passing them via DT would be redundant. Initial version sent on its own to gather feedback: - Link: https://lore.kernel.org/all/20241219-mbox_request_channel_by_args-v1-0-617a6910f842@xxxxxxxxxx/ - the patches differ from the initial version as they allow #mbox-cells = 0 - bindings: google,gs101-mbox: update description, make #mbox-cells const 0. - mailbox: exynos-mailbox: - replace exynos_mbox_of_xlate with exynos_mbox_xlate, the channel identifiers are discovered at runtime and passed as 'const struct mbox_xlate_args *sp' - in the xlate method, the first argument is the channel and the second the type, as channels can be configured either in DOORBELL or DATA modes. This becomes an example for when an exynos_mbox_of_xlate() method will be introduced. - make exynos_mbox_chan_index() inline and directly return chan - chan->mbox->chans; - drop Krzysztof's and Peter's R-b tags from the google,gs101-mbox bindings and the Samsung Exynos mailbox driver as they were updated. - add Krzysztof's and Peter's R-b tags to the MAINTAINERS patch - Link to v5: https://lore.kernel.org/r/20241217-acpm-v4-upstream-mbox-v5-0-cd1d3951fe84@xxxxxxxxxx Changes in v5: - fix dt-bindings by using the correct compatible name in the example - drop redundand "bindings" from the dt-bindings patch subject - rebase on top of v6.13-rc3 - Link to v4: https://lore.kernel.org/r/20241212-acpm-v4-upstream-mbox-v4-0-02f8de92cfaf@xxxxxxxxxx Changes in v4: - rename bindings file to be based on compatible: google,gs101-acpm-mbox - specify doorbell or data mode via '#mbox-cells' dt property. Update driver and introduce exynos_mbox_of_xlate() to parse the mode. - s/samsung/Samsung/, s/exynos/Exynos/ - use writel instead of writel_relaxed - remove stray of_match_ptr() - Link to v3: https://lore.kernel.org/linux-arm-kernel/20241205174137.190545-1-tudor.ambarus@xxxxxxxxxx/ Changes in v3: - decouple the mailbox controller driver from the ACPM protocol driver - address Krzysztof's review comments v2: https://lore.kernel.org/linux-arm-kernel/20241017163649.3007062-1-tudor.ambarus@xxxxxxxxxx/ v1: https://lore.kernel.org/linux-arm-kernel/20241004165301.1979527-1-tudor.ambarus@xxxxxxxxxx/ Signed-off-by: Tudor Ambarus <tudor.ambarus@xxxxxxxxxx> --- Tudor Ambarus (5): dt-bindings: mailbox: allow #mbox-cells = <0>; dt-bindings: mailbox: add google,gs101-mbox mailbox: add support for clients to request channels by args mailbox: add Samsung Exynos driver MAINTAINERS: add entry for Samsung Exynos mailbox driver .../bindings/mailbox/google,gs101-mbox.yaml | 70 +++++++++ .../devicetree/bindings/mailbox/mailbox.txt | 3 +- MAINTAINERS | 10 ++ drivers/mailbox/Kconfig | 11 ++ drivers/mailbox/Makefile | 2 + drivers/mailbox/exynos-mailbox.c | 174 +++++++++++++++++++++ drivers/mailbox/mailbox.c | 60 +++++++ include/dt-bindings/mailbox/google,gs101.h | 14 ++ include/linux/mailbox.h | 17 ++ include/linux/mailbox_client.h | 3 + include/linux/mailbox_controller.h | 4 + 11 files changed, 366 insertions(+), 2 deletions(-) --- base-commit: 78d4f34e2115b517bcbfe7ec0d018bbbb6f9b0b8 change-id: 20241212-acpm-v4-upstream-mbox-948714004b05 Best regards, -- Tudor Ambarus <tudor.ambarus@xxxxxxxxxx>