From: Francesco Valla <francesco@valla.it>
To: Bjorn Andersson <andersson@kernel.org>,
Mathieu Poirier <mathieu.poirier@linaro.org>,
Kees Cook <kees@kernel.org>,
"Gustavo A. R. Silva" <gustavoars@kernel.org>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Francesco Valla <francesco@valla.it>,
Jonathan Corbet <corbet@lwn.net>,
Shuah Khan <skhan@linuxfoundation.org>,
Randy Dunlap <rdunlap@infradead.org>,
Frank Li <Frank.Li@nxp.com>,
Sascha Hauer <s.hauer@pengutronix.de>,
Pengutronix Kernel Team <kernel@pengutronix.de>,
Fabio Estevam <festevam@gmail.com>, Peng Fan <peng.fan@nxp.com>
Cc: Robin Murphy <robin.murphy@arm.com>,
linux-remoteproc@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-hardening@vger.kernel.org, devicetree@vger.kernel.org,
linux-doc@vger.kernel.org, imx@lists.linux.dev,
linux-arm-kernel@lists.infradead.org
Subject: [PATCH RFC v2 11/11] PoC: arm64: dts: imx93-11x11-frdm: add multiple vdevs
Date: Mon, 02 Nov 2026 00:26:48 +0100 [thread overview]
Message-ID: <20261102-remoteproc_virtio_map-v2-11-26b300e01c62@valla.it> (raw)
In-Reply-To: <20261102-remoteproc_virtio_map-v2-0-26b300e01c62@valla.it>
Add rings and buffers for multiple virtio devices exposed by the
firmware running on the Cortex-M33 processor which is part of the i.MX93.
It is expected that such firmware exposes, through its resource table,
the following vdevs:
- vdev0: rpmsg
- vdev1: entropy
- vdev2: gpio
- vdev3: i2c
- vdev4: spi
- vdev5: can
The order in which the devices are contained inside the resource table
is critical, since it is used both to associate vrings and buffers to a
vdev and to map additional dt nodes to them.
All vdev buffers except the one for the rpmsg bus are declared as
restricted-dma-pool, because the corresponding drivers need bounce
buffering for the communication to work correctly.
Nodes for the gpio and i2c vdevs with example children devices are
included.
NOTE: this is a Proof-Of-Concept, not meant to be integrated!
Signed-off-by: Francesco Valla <francesco@valla.it>
---
Notable diff from RFC v1: the rsc-table node has been re-introduced to
focus on the changes that are truly in scope for the series. I still
believe something is off with the current implementation, but I'll
tackle it separately.
---
arch/arm64/boot/dts/freescale/imx93-11x11-frdm.dts | 188 +++++++++++++++++++++
1 file changed, 188 insertions(+)
diff --git a/arch/arm64/boot/dts/freescale/imx93-11x11-frdm.dts b/arch/arm64/boot/dts/freescale/imx93-11x11-frdm.dts
index 6e8351d12016..84324b02c45d 100644
--- a/arch/arm64/boot/dts/freescale/imx93-11x11-frdm.dts
+++ b/arch/arm64/boot/dts/freescale/imx93-11x11-frdm.dts
@@ -137,3 +137,191 @@ MX93_PAD_SD3_DATA3__GPIO3_IO25 0x31e
>;
};
};
+
+/* Multi-vdev PoC */
+
+#include <dt-bindings/input/linux-event-codes.h>
+
+/ {
+ reserved-memory {
+ rsc_table: rsc-table@2021e000 {
+ reg = <0 0x2021e000 0 0x1000>;
+ no-map;
+ };
+
+ /* vdev0: rpmsg */
+ vdev0vring0: vdev0vring0@a4000000 {
+ reg = <0 0xa4000000 0 0x8000>;
+ no-map;
+ };
+
+ vdev0vring1: vdev0vring1@a4008000 {
+ reg = <0 0xa4008000 0 0x8000>;
+ no-map;
+ };
+
+ vdev0buffer: vdev0buffer@a4020000 {
+ compatible = "shared-dma-pool";
+ reg = <0 0xa4020000 0 0x100000>;
+ no-map;
+ };
+
+ /* vdev1: entropy */
+ vdev1vring0: vdev1vring0@a4010000 {
+ reg = <0 0xa4010000 0 0x1000>;
+ no-map;
+ };
+
+ /delete-node/ vdev1vring1@a4018000;
+
+ vdev1buffer: vdev1buffer@a4120000 {
+ compatible = "restricted-dma-pool";
+ reg = <0 0xa4120000 0 0x10000>;
+ };
+
+ /* vdev2: GPIO */
+ vdev2vring0: vdev2vring0@a4011000 {
+ reg = <0 0xa4011000 0 0x2000>;
+ no-map;
+ };
+
+ vdev2vring1: vdev2vring1@a4013000 {
+ reg = <0 0xa4013000 0 0x2000>;
+ no-map;
+ };
+
+ vdev2buffer: vdev2buffer@a4130000 {
+ compatible = "restricted-dma-pool";
+ reg = <0 0xa4130000 0 0x20000>;
+ };
+
+ /* vdev3: I2C */
+ vdev3vring0: vdev3vring0@a4015000 {
+ reg = <0 0xa4015000 0 0x2000>;
+ no-map;
+ };
+
+ vdev3buffer: vdev3buffer@a4150000 {
+ compatible = "restricted-dma-pool";
+ reg = <0 0xa4150000 0 0x20000>;
+ };
+
+ /* vdev4: SPI */
+ vdev4vring0: vdev4vring0@a4017000 {
+ reg = <0 0xa4017000 0 0x4000>;
+ no-map;
+ };
+
+ vdev4buffer: vdev4buffer@a4170000 {
+ compatible = "restricted-dma-pool";
+ reg = <0 0xa4170000 0 0x90000>;
+ };
+
+ /* vdev5: CAN */
+ vdev5vring0: vdev5vring0@a401b000 {
+ reg = <0 0xa401b000 0 0x2000>;
+ no-map;
+ };
+
+ vdev5vring1: vdev5vring1@a401d000 {
+ reg = <0 0xa401d000 0 0x2000>;
+ no-map;
+ };
+
+ vdev5vring2: vdev5vring2@a401f000 {
+ reg = <0 0xa401f000 0 0x1000>;
+ no-map;
+ };
+
+ vdev5buffer: vdev5buffer@a4200000 {
+ compatible = "restricted-dma-pool";
+ reg = <0 0xa4200000 0 0x80000>;
+ };
+ };
+
+ gpio-keys-virtio {
+ compatible = "gpio-keys";
+
+ button-v1 {
+ label = "Button V1";
+ linux,code = <BTN_3>;
+ gpios = <&v_gpio 23 GPIO_ACTIVE_LOW>;
+ };
+
+ button-v2 {
+ label = "Button V2";
+ linux,code = <BTN_4>;
+ gpios = <&v_gpio 24 GPIO_ACTIVE_LOW>;
+ };
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ led {
+ gpios = <&v_gpio 18 GPIO_ACTIVE_HIGH>;
+ label = "LED V";
+ };
+ };
+};
+
+&cm33 {
+ memory-region = <&vdev0buffer>, <&vdev0vring0>, <&vdev0vring1>,
+ <&vdev1vring0>, <&vdev2vring0>, <&vdev2vring1>,
+ <&vdev3vring0>, <&vdev4vring0>, <&vdev5vring0>,
+ <&vdev5vring1>, <&vdev5vring2>, <&rsc_table>;
+
+ virtio {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ /* vdev1: entropy */
+ vdev@1 {
+ reg = <1>;
+ memory-region = <&vdev1buffer>;
+ };
+
+ /* vdev2: GPIO */
+ vdev@2 {
+ reg = <2>;
+ memory-region = <&vdev2buffer>;
+
+ v_gpio: gpio {
+ compatible = "virtio,device29";
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+ };
+
+ /* vdev3: I2C */
+ vdev@3 {
+ reg = <3>;
+ memory-region = <&vdev3buffer>;
+
+ i2c {
+ compatible = "virtio,device22";
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ eeprom@50 {
+ compatible = "atmel,24c1025";
+ reg = <0x50>;
+ };
+ };
+ };
+
+ /* vdev4: SPI */
+ vdev@4 {
+ reg = <4>;
+ memory-region = <&vdev4buffer>;
+ };
+
+ /* vdev5: CAN */
+ vdev@5 {
+ reg = <5>;
+ memory-region = <&vdev5buffer>;
+ };
+ };
+};
--
2.56.0
prev parent reply other threads:[~2026-11-01 23:38 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-01 23:26 [PATCH RFC v2 00/11] remoteproc: add support for any virtio device Francesco Valla
2026-11-01 23:26 ` [PATCH RFC v2 01/11] remoteproc: virtio: cleanup rproc_add_virtio_dev error path Francesco Valla
2026-11-01 23:26 ` [PATCH RFC v2 02/11] remoteproc: virtio: replace commas with semicolons Francesco Valla
2026-11-01 23:26 ` [PATCH RFC v2 03/11] remoteproc: virtio: support dynamic number of vrings Francesco Valla
2026-11-01 23:26 ` [PATCH RFC v2 04/11] remoteproc: report VIRTIO_F_VERSION_1 for non-rproc-specific vdevs Francesco Valla
2026-11-01 23:26 ` [PATCH RFC v2 05/11] remoteproc: virtio: report VIRTIO_F_ACCESS_PLATFORM when required Francesco Valla
2026-11-01 23:26 ` [PATCH RFC v2 06/11] dt-bindings: remoteproc: add remoteproc-virtio Francesco Valla
2026-11-01 23:26 ` [PATCH RFC v2 07/11] remoteproc: assign fwnode during vdev registration Francesco Valla
2026-11-01 23:26 ` [PATCH RFC v2 08/11] Documentation: remoteproc: expand virtio support section Francesco Valla
2026-11-03 14:15 ` Daniel Pereira
2026-11-06 21:29 ` Francesco Valla
2026-11-01 23:26 ` [PATCH RFC v2 09/11] remoteproc: imx_rproc: always use non-blocking mailboxes Francesco Valla
2026-11-01 23:26 ` [PATCH RFC v2 10/11] dt-bindings: remoteproc: imx-rproc: support virtio Francesco Valla
2026-11-01 23:26 ` Francesco Valla [this message]
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=20261102-remoteproc_virtio_map-v2-11-26b300e01c62@valla.it \
--to=francesco@valla.it \
--cc=Frank.Li@nxp.com \
--cc=andersson@kernel.org \
--cc=conor+dt@kernel.org \
--cc=corbet@lwn.net \
--cc=devicetree@vger.kernel.org \
--cc=festevam@gmail.com \
--cc=gustavoars@kernel.org \
--cc=imx@lists.linux.dev \
--cc=kees@kernel.org \
--cc=kernel@pengutronix.de \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-hardening@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-remoteproc@vger.kernel.org \
--cc=mathieu.poirier@linaro.org \
--cc=peng.fan@nxp.com \
--cc=rdunlap@infradead.org \
--cc=robh@kernel.org \
--cc=robin.murphy@arm.com \
--cc=s.hauer@pengutronix.de \
--cc=skhan@linuxfoundation.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
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®