From: Samuel Holland <samuel@sholland.org> To: Maxime Ripard <maxime.ripard@bootlin.com>, Chen-Yu Tsai <wens@csie.org>, Jassi Brar <jassisinghbrar@gmail.com>, Michael Turquette <mturquette@baylibre.com>, Stephen Boyd <sboyd@kernel.org>, Rob Herring <robh+dt@kernel.org>, Mark Rutland <mark.rutland@arm.com>, Corentin Labbe <clabbe.montjoie@gmail.com>, Vasily Khoruzhick <anarsoul@gmail.com> Cc: devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org, linux-sunxi@googlegroups.com, Samuel Holland <samuel@sholland.org> Subject: [PATCH v4 00/10] Allwinner sunxi message box support Date: Mon, 19 Aug 2019 22:23:01 -0500 Message-ID: <20190820032311.6506-1-samuel@sholland.org> (raw) This series adds support for the "hardware message box" in sun8i, sun9i, and sun50i SoCs, used for communication with the ARISC management processor (the platform's equivalent of the ARM SCP). The end goal is to use the arm_scpi driver as a client, communicating with firmware running on the AR100 CPU, or to use the mailbox to forward NMIs that the firmware picks up from R_INTC. Unfortunately, the ARM SCPI client no longer works with this driver since it now exposes all 8 hardware FIFOs individually. The SCPI client could be made to work (and I posted proof-of-concept code to that effect with v1 of this series), but that is a low priority, as Linux does not directly use SCPI with the current firmware version; all SCPI use goes through ATF via PSCI. As requested in the comments to v3 of this patchset, a demo client is provided in the final patch. This demo goes along with a toy firmware which shows that the driver does indeed work for two-way communication on all channels. To build the firmware component, run: git clone https://github.com/crust-firmware/meta meta git clone -b mailbox-demo https://github.com/crust-firmware/crust meta/crust cd meta make That will by default produce a U-Boot + ATF + SCP firmware image in [meta/]build/pinebook/u-boot-sunxi-with-spl.bin. See the top-level README.md for more information, such as cross-compiler setup. I've now used this driver with three separate clients over the past two years, and they all work. If there are no remaining concerns with the driver, I'd like it to get merged. Even without the driver, the clock patches (1-2) can go in at any time. Changes from v3: - Rebased on sunxi-next - Added Rob's Reviewed-by for patch 3 - Fixed a crash when receiving a message on a disabled channel - Cleaned up some comments/formatting in the driver - Fixed #mbox-cells in sunxi-h3-h5.dtsi (patch 7) - Removed the irqchip example (no longer relevant to the fw design) - Added a demo/example client that uses the driver and a toy firmware Changes from v2: - Merge patches 1-3 - Add a comment in the code explaining the CLK_IS_CRITICAL usage - Add a patch to mark the AR100 clocks as critical - Use YAML for the device tree binding - Include a not-for-merge example usage of the mailbox Changes from v1: - Marked message box clocks as critical instead of hacks in the driver - 8 unidirectional channels instead of 4 bidirectional pairs - Use per-SoC compatible strings and an A31 fallback compatible - Dropped the mailbox framework patch - Include DT patches for SoCs that document the message box Samuel Holland (10): clk: sunxi-ng: Mark msgbox clocks as critical clk: sunxi-ng: Mark AR100 clocks as critical dt-bindings: mailbox: Add a sunxi message box binding mailbox: sunxi-msgbox: Add a new mailbox driver ARM: dts: sunxi: a80: Add msgbox node ARM: dts: sunxi: a83t: Add msgbox node ARM: dts: sunxi: h3/h5: Add msgbox node arm64: dts: allwinner: a64: Add msgbox node arm64: dts: allwinner: h6: Add msgbox node [DO NOT MERGE] drivers: firmware: msgbox demo .../mailbox/allwinner,sunxi-msgbox.yaml | 79 +++++ arch/arm/boot/dts/sun8i-a83t.dtsi | 10 + arch/arm/boot/dts/sun9i-a80.dtsi | 10 + arch/arm/boot/dts/sunxi-h3-h5.dtsi | 10 + arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi | 34 ++ arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi | 24 ++ arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 10 + drivers/clk/sunxi-ng/ccu-sun50i-a64.c | 3 +- drivers/clk/sunxi-ng/ccu-sun50i-h6-r.c | 2 +- drivers/clk/sunxi-ng/ccu-sun50i-h6.c | 3 +- drivers/clk/sunxi-ng/ccu-sun8i-a23.c | 3 +- drivers/clk/sunxi-ng/ccu-sun8i-a33.c | 3 +- drivers/clk/sunxi-ng/ccu-sun8i-a83t.c | 3 +- drivers/clk/sunxi-ng/ccu-sun8i-h3.c | 3 +- drivers/clk/sunxi-ng/ccu-sun8i-r.c | 2 +- drivers/clk/sunxi-ng/ccu-sun9i-a80.c | 3 +- drivers/firmware/Kconfig | 6 + drivers/firmware/Makefile | 1 + drivers/firmware/sunxi_msgbox_demo.c | 307 +++++++++++++++++ drivers/mailbox/Kconfig | 10 + drivers/mailbox/Makefile | 2 + drivers/mailbox/sunxi-msgbox.c | 323 ++++++++++++++++++ 22 files changed, 842 insertions(+), 9 deletions(-) create mode 100644 Documentation/devicetree/bindings/mailbox/allwinner,sunxi-msgbox.yaml create mode 100644 drivers/firmware/sunxi_msgbox_demo.c create mode 100644 drivers/mailbox/sunxi-msgbox.c -- 2.21.0
next reply index Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-08-20 3:23 Samuel Holland [this message] 2019-08-20 3:23 ` [PATCH v4 01/10] clk: sunxi-ng: Mark msgbox clocks as critical Samuel Holland 2019-08-20 3:23 ` [PATCH v4 02/10] clk: sunxi-ng: Mark AR100 " Samuel Holland 2019-08-20 7:11 ` Maxime Ripard 2019-08-20 13:02 ` Samuel Holland 2019-08-21 12:24 ` Maxime Ripard 2019-09-05 18:56 ` Stephen Boyd 2019-08-20 3:23 ` [PATCH v4 03/10] dt-bindings: mailbox: Add a sunxi message box binding Samuel Holland 2019-08-20 7:14 ` Maxime Ripard 2019-08-20 13:04 ` Samuel Holland 2019-08-21 12:07 ` Maxime Ripard 2019-08-20 3:23 ` [PATCH v4 04/10] mailbox: sunxi-msgbox: Add a new mailbox driver Samuel Holland 2019-08-20 8:27 ` Maxime Ripard 2019-08-20 11:18 ` Ondřej Jirman 2019-08-20 13:07 ` Samuel Holland 2019-08-20 13:34 ` Ondřej Jirman 2019-08-21 12:30 ` Maxime Ripard 2019-08-20 3:23 ` [PATCH v4 05/10] ARM: dts: sunxi: a80: Add msgbox node Samuel Holland 2019-08-20 8:15 ` Maxime Ripard 2019-08-20 13:17 ` Samuel Holland 2019-08-23 14:56 ` Maxime Ripard 2019-08-20 3:23 ` [PATCH v4 06/10] ARM: dts: sunxi: a83t: " Samuel Holland 2019-08-20 3:23 ` [PATCH v4 07/10] ARM: dts: sunxi: h3/h5: " Samuel Holland 2019-08-20 3:23 ` [PATCH v4 08/10] arm64: dts: allwinner: a64: " Samuel Holland 2019-08-20 3:23 ` [PATCH v4 09/10] arm64: dts: allwinner: h6: " Samuel Holland 2019-08-20 3:23 ` [PATCH v4 10/10] [DO NOT MERGE] drivers: firmware: msgbox demo Samuel Holland 2019-09-09 3:22 ` [PATCH v4 00/10] Allwinner sunxi message box support Ondřej Jirman 2019-09-09 3:54 ` Samuel Holland 2019-09-09 12:36 ` Ondřej Jirman
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20190820032311.6506-1-samuel@sholland.org \ --to=samuel@sholland.org \ --cc=anarsoul@gmail.com \ --cc=clabbe.montjoie@gmail.com \ --cc=devicetree@vger.kernel.org \ --cc=jassisinghbrar@gmail.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-clk@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-sunxi@googlegroups.com \ --cc=mark.rutland@arm.com \ --cc=maxime.ripard@bootlin.com \ --cc=mturquette@baylibre.com \ --cc=robh+dt@kernel.org \ --cc=sboyd@kernel.org \ --cc=wens@csie.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Linux-Clk Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/linux-clk/0 linux-clk/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 linux-clk linux-clk/ https://lore.kernel.org/linux-clk \ linux-clk@vger.kernel.org public-inbox-index linux-clk Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.kernel.vger.linux-clk AGPL code for this site: git clone https://public-inbox.org/public-inbox.git