Add rings for multiple vdevs, as well as the required virtio nodes for I2C, SPI and GPIO functionalities. On top of that, add example peripherals using all of them.
NOTE: this is a Proof-Of-Concept, not meant to be integrated! Signed-off-by: Francesco Valla <[email protected]> --- arch/arm64/boot/dts/freescale/imx93-11x11-frdm.dts | 128 +++++++++++++++++++-- 1 file changed, 119 insertions(+), 9 deletions(-) diff --git a/arch/arm64/boot/dts/freescale/imx93-11x11-frdm.dts b/arch/arm64/boot/dts/freescale/imx93-11x11-frdm.dts index bd14ba28690c..dfa3b122ac5f 100644 --- a/arch/arm64/boot/dts/freescale/imx93-11x11-frdm.dts +++ b/arch/arm64/boot/dts/freescale/imx93-11x11-frdm.dts @@ -53,6 +53,32 @@ button-k3 { }; }; + gpio-keys-virtio { + compatible = "gpio-keys-polled"; + poll-interval = <100>; + + 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"; + }; + }; + reg_usdhc2_vmmc: regulator-usdhc2 { compatible = "regulator-fixed"; off-on-delay-us = <12000>; @@ -89,11 +115,6 @@ linux,cma { linux,cma-default; }; - rsc_table: rsc-table@2021e000 { - reg = <0 0x2021e000 0 0x1000>; - no-map; - }; - vdev0vring0: vdev0vring0@a4000000 { reg = <0 0xa4000000 0 0x8000>; no-map; @@ -105,12 +126,42 @@ vdev0vring1: vdev0vring1@a4008000 { }; vdev1vring0: vdev1vring0@a4010000 { - reg = <0 0xa4010000 0 0x8000>; + reg = <0 0xa4010000 0 0x1000>; + no-map; + }; + + vdev2vring0: vdev2vring0@a4011000 { + reg = <0 0xa4011000 0 0x2000>; + no-map; + }; + + vdev2vring1: vdev2vring1@a4013000 { + reg = <0 0xa4013000 0 0x2000>; + no-map; + }; + + vdev3vring0: vdev3vring0@a4015000 { + reg = <0 0xa4015000 0 0x2000>; + no-map; + }; + + vdev4vring0: vdev4vring0@a4017000 { + reg = <0 0xa4017000 0 0x4000>; + no-map; + }; + + vdev5vring0: vdev5vring0@a401B000 { + reg = <0 0xa401B000 0 0x2000>; + no-map; + }; + + vdev5vring1: vdev5vring1@a401D000 { + reg = <0 0xa401D000 0 0x2000>; no-map; }; - vdev1vring1: vdev1vring1@a4018000 { - reg = <0 0xa4018000 0 0x8000>; + vdev5vring2: vdev5vring2@a401F000 { + reg = <0 0xa401F000 0 0x1000>; no-map; }; @@ -149,8 +200,67 @@ &cm33 { <&mu1 3 1>; mbox-names = "tx", "rx", "rxdb"; memory-region = <&vdevbuffer>, <&vdev0vring0>, <&vdev0vring1>, - <&vdev1vring0>, <&vdev1vring1>, <&rsc_table>; + <&vdev1vring0>, <&vdev2vring0>, <&vdev2vring1>, + <&vdev3vring0>, <&vdev4vring0>, + <&vdev5vring0>, <&vdev5vring1>, <&vdev5vring2>; status = "okay"; + + virtio { + #address-cells = <1>; + #size-cells = <0>; + + vdev@2 { + reg = <2>; + + v_gpio: gpio { + compatible = "virtio,device29"; + gpio-controller; + #gpio-cells = <2>; + interrupt-controller; + #interrupt-cells = <2>; + }; + }; + + vdev@3 { + reg = <3>; + + i2c { + compatible = "virtio,device22"; + #address-cells = <1>; + #size-cells = <0>; + + eeprom@50 { + compatible = "atmel,24c1025"; + reg = <0x50>; + }; + }; + }; + + vdev@4 { + reg = <4>; + + spi { + compatible = "virtio,device2d"; + #address-cells = <1>; + #size-cells = <0>; + + sram@0 { + compatible = "microchip,mchp23k256"; + reg = <0>; + spi-max-frequency = <20000000>; + }; + + lcd@1 { + compatible = "adafruit,yx240qv29", "ilitek,ili9341"; + reg = <1>; + spi-max-frequency = <10000000>; + dc-gpios = <&v_gpio 21 GPIO_ACTIVE_HIGH>; + reset-gpios = <&v_gpio 20 GPIO_ACTIVE_HIGH>; + rotation = <90>; + }; + }; + }; + }; }; &eqos { -- 2.55.0

