mbox series

[v7,0/3] mailbox: add Samsung Exynos driver

Message ID 20250115-acpm-v4-upstream-mbox-v7-0-948e09fcb5f2@linaro.org (mailing list archive)
Headers show
Series mailbox: add Samsung Exynos driver | expand

Message

Tudor Ambarus Jan. 15, 2025, 2:18 p.m. UTC
Hi,

Now that the channel identifiers are passed through 'void *data' in
send_data(), the clients now depend on the message format introduced in
include/linux/mailbox/exynos-message.h. If Jassi finds this set fine,
then he shall provide either an immutable tag so that Krzysztof uses it
if applying the ACPM interface driver, or to ACK this set and let Krzysztof
queue it.

Description and change log below. Thanks.
ta

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 v7:
- driver: pass channel identifiers via 'void *data' in send_data().
- bindings: drop chan type definitions - not used in dt
- bindings: drop comment and "|".
- spin-off dt-bindings mailbox patch on its own. #mbox-cells = <0>; was
  already allowed and used in brcm and mtk.
- refer to the ACPM driver as "ACPM interface". The interface uses some
  protocols (PMIC, DVFS, etc.) to communicate with the ACPM firmware.
- Link to v6: https://lore.kernel.org/r/20241220-acpm-v4-upstream-mbox-v6-0-a6942806e52a@linaro.org

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@linaro.org/
  - 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@linaro.org

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@linaro.org

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@linaro.org/

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@linaro.org/

v1:
https://lore.kernel.org/linux-arm-kernel/20241004165301.1979527-1-tudor.ambarus@linaro.org/

Signed-off-by: Tudor Ambarus <tudor.ambarus@linaro.org>
---
Tudor Ambarus (3):
      dt-bindings: mailbox: add google,gs101-mbox
      mailbox: add Samsung Exynos driver
      MAINTAINERS: add entry for Samsung Exynos mailbox driver

 .../bindings/mailbox/google,gs101-mbox.yaml        |  69 +++++++++
 MAINTAINERS                                        |  10 ++
 drivers/mailbox/Kconfig                            |  11 ++
 drivers/mailbox/Makefile                           |   2 +
 drivers/mailbox/exynos-mailbox.c                   | 157 +++++++++++++++++++++
 include/linux/mailbox/exynos-message.h             |  19 +++
 6 files changed, 268 insertions(+)
---
base-commit: 5bc55a333a2f7316b58edc7573e8e893f7acb532
change-id: 20241212-acpm-v4-upstream-mbox-948714004b05

Best regards,

Comments

Jassi Brar Jan. 15, 2025, 5:22 p.m. UTC | #1
On Wed, Jan 15, 2025 at 8:18 AM Tudor Ambarus <tudor.ambarus@linaro.org> wrote:
>
> Hi,
>
> Now that the channel identifiers are passed through 'void *data' in
> send_data(), the clients now depend on the message format introduced in
> include/linux/mailbox/exynos-message.h. If Jassi finds this set fine,
> then he shall provide either an immutable tag so that Krzysztof uses it
> if applying the ACPM interface driver, or to ACK this set and let Krzysztof
> queue it.
>
   v6  =>  11 files changed, 366 insertions(+), 2 deletions(-)
   v7  =>    6 files changed, 268 insertions(+)

Awesome! we have far fewer changes and no new api added.
I will queue the driver.

Cheers!