On Wed, Sep 16, 2026 at 11:10:57PM +0200, Francesco Valla wrote:
> 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;
> -             };
> -

Why is the resource table removed?  There is no mention of that in the
changelog...

>               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>;

Who is using vdev5 vrings?  

>       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
> 

Reply via email to