SPI on Toradex Verdin iMX8M Plus

238 Views Asked by At

I'm new to device tree and I'm trying to get spidev0.1, spidev 1.0, spidev 1.1, spidev 2.0 and spidev2.1. Currently I only have spidev0.0 in /dev.

I've tried to modify my device tree as follows but it doesn't work:

imx8mp-verdin-yavia.dtsi

/* Verdin SPI_1 */
&ecspi1 {
    status = "okay";
    spidev@0 {
        compatible = "toradex,evalspi";
        reg = <0>;
        spi-max-frequency = <10000000>;
        status = "okay";
    };
    spidev@1 {
        compatible = "toradex,evalspi";
        reg = <1>;
        spi-max-frequency = <10000000>;
        status = "okay";
    };
    spidev@2 {
        compatible = "toradex,evalspi";
        reg = <2>;
        spi-max-frequency = <10000000>;
        status = "okay";
    };
      };

imx8mp-verdin.dtsi

&iomuxc {
    pinctrl_bt_uart: btuartgrp {
        fsl,pins = <
            MX8MP_IOMUXC_ECSPI2_SCLK__UART4_DCE_RX      0x1c4
            MX8MP_IOMUXC_ECSPI2_MOSI__UART4_DCE_TX      0x1c4
            MX8MP_IOMUXC_ECSPI2_MISO__UART4_DCE_CTS     0x1c4
            MX8MP_IOMUXC_ECSPI2_SS0__UART4_DCE_RTS      0x1c4
        >;
    };

    pinctrl_ctrl_sleep_moci: ctrlsleepmocigrp {
        fsl,pins = <
            MX8MP_IOMUXC_SAI3_RXC__GPIO4_IO29       0x1c4   /*  SODIMM 256 */
        >;
    };

    pinctrl_ecspi1: ecspi1grp {
        fsl,pins = <
            MX8MP_IOMUXC_ECSPI1_SCLK__ECSPI1_SCLK       0x4 /* SODIMM 196 */
            MX8MP_IOMUXC_ECSPI1_MOSI__ECSPI1_MOSI       0x4 /* SODIMM 200 */
            MX8MP_IOMUXC_ECSPI1_MISO__ECSPI1_MISO       0x1c4   /* SODIMM 198 */
            MX8MP_IOMUXC_ECSPI1_SS0__GPIO5_IO09     0x1c4   /* SODIMM 202 */
        >;
    };

imx8mp.dtsi

            aips3: bus@30800000 {
            compatible = "simple-bus";
            reg = <0x30800000 0x400000>;
            #address-cells = <1>;
            #size-cells = <1>;
            ranges;

            ecspi1: spi@30820000 {
                #address-cells = <1>;
                #size-cells = <0>;
                compatible = "fsl,imx8mp-ecspi", "fsl,imx6ul-ecspi";
                reg = <0x30820000 0x10000>;
                interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&clk IMX8MP_CLK_ECSPI1_ROOT>,
                     <&clk IMX8MP_CLK_ECSPI1_ROOT>;
                clock-names = "ipg", "per";
                assigned-clock-rates = <80000000>;
                assigned-clocks = <&clk IMX8MP_CLK_ECSPI1>;
                assigned-clock-parents = <&clk IMX8MP_SYS_PLL1_800M>;
                dmas = <&sdma1 0 7 1>, <&sdma1 1 7 2>;
                dma-names = "rx", "tx";
                status = "okay";
            };

            ecspi2: spi@30830000 {
                #address-cells = <1>;
                #size-cells = <0>;
                compatible = "fsl,imx8mp-ecspi", "fsl,imx6ul-ecspi";
                reg = <0x30830000 0x10000>;
                interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&clk IMX8MP_CLK_ECSPI2_ROOT>,
                     <&clk IMX8MP_CLK_ECSPI2_ROOT>;
                clock-names = "ipg", "per";
                assigned-clock-rates = <80000000>;
                assigned-clocks = <&clk IMX8MP_CLK_ECSPI2>;
                assigned-clock-parents = <&clk IMX8MP_SYS_PLL1_800M>;
                dmas = <&sdma1 2 7 1>, <&sdma1 3 7 2>;
                dma-names = "rx", "tx";
                status = "okay";
            };

            ecspi3: spi@30840000 {
                #address-cells = <1>;
                #size-cells = <0>;
                compatible = "fsl,imx8mp-ecspi", "fsl,imx6ul-ecspi";
                reg = <0x30840000 0x10000>;
                interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&clk IMX8MP_CLK_ECSPI3_ROOT>,
                     <&clk IMX8MP_CLK_ECSPI3_ROOT>;
                clock-names = "ipg", "per";
                assigned-clock-rates = <80000000>;
                assigned-clocks = <&clk IMX8MP_CLK_ECSPI3>;
                assigned-clock-parents = <&clk IMX8MP_SYS_PLL1_800M>;
                dmas = <&sdma1 4 7 1>, <&sdma1 5 7 2>;
                dma-names = "rx", "tx";
                status = "okay";
            };

I also have this overlay that I haven't modified.

  // SPDX-License-Identifier: GPL-2.0-or-later OR MIT
    /*
    * Copyright 2022 Toradex
    */

    // Verdin imx8mp spidev

    /dts-v1/;
    /plugin/;

    / {
        compatible = "toradex,verdin-imx8mp";
    };

    /* Verdin SPI_1 */
    &ecspi1 {
        #address-cells = <1>;
        #size-cells = <0>;
        status = "okay";

        spidev@0 {
        /* Use compatible "rohm,dh2228fv" to bind spidev driver */
        compatible = "rohm,dh2228fv";
        reg = <0>;
        spi-max-frequency = <10000000>;
    };
    
    };
0

There are 0 best solutions below