Post Go back to editing

enable adin1110 on cn0575 using nucleo_l4r5zi

Thread Summary

The user encountered issues initializing the ADIN1110 driver on a NUCLEO-L4R5ZI board with an EVAL-CN0575. The solution involved configuring SPI and MDIO settings in prj.conf, including setting CONFIG_SPI_STM32_DMA=y, CONFIG_MDIO=y, CONFIG_ETH_ADIN2111_SPI_CFG0=n, and increasing the system workqueue stack size to 4096. In app.overlay, the SPI and GPIO configurations were adjusted, and spi-oa and spi-oa-protection were commented out. The default EVAL-CN0575 settings (Generic SPI, CRC Disabled) were also considered.
AI Generated Content
Category: Hardware
Product Number: cn0575

Hi, I have a NUCLEO-L4R5ZI board and a eval_cn0575. I want to enable adin1110 driver for cn0575 on nucleo. I connected nucleo pins to cn575 rpi compatible header as follows:

                                       CN0575 rpi header                                         nucleo

SPI2_SCK                     23                                                                   pb13

SPI2_MOSI                   19                                                                   pb15

SPI2_MISO                   21                                                                   pb14

SPI2_CS                       24                                                                   pb12

SPI_INT                        22                                                                   pb11

RESET_N                    13                                                                    pc13

this is prj.conf:

CONFIG_GPIO=y
CONFIG_SPI=y
CONFIG_NETWORKING=y
CONFIG_NET_L2_ETHERNET=y
CONFIG_ETH_DRIVER=y

CONFIG_ETH_ADIN2111=y
CONFIG_MDIO_ADIN2111=y

CONFIG_SPI_STM32_DMA=y

CONFIG_MDIO_INIT_PRIORITY=81
CONFIG_PHY_INIT_PRIORITY=82

# Enable UART
CONFIG_SERIAL=y

# Console configuration
CONFIG_CONSOLE=y
CONFIG_UART_CONSOLE=y
CONFIG_NET_LOG=y
CONFIG_NET_SHELL=y

# Enable IPv4
CONFIG_NET_IPV4=y
CONFIG_NET_IF_MAX_IPV4_COUNT=2

# Enable IPv6 (if needed)
CONFIG_NET_IPV6=n

CONFIG_LOG_BUFFER_SIZE=8192
CONFIG_SHELL_BACKEND_SERIAL_LOG_MESSAGE_QUEUE_SIZE=256


this is app.overlay
/ {
aliases {
adin1110 = &adin1110;
};
};

&spi2 {
pinctrl-0 = <&spi2_sck_pb13 &spi2_miso_pb14 &spi2_mosi_pb15>;
pinctrl-names = "default";
cs-gpios = <&gpiob 12 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
dmas = <&dmamux1 2 13 (STM32_DMA_MEMORY_TO_PERIPH | STM32_DMA_MEM_INC |
STM32_DMA_MEM_8BITS | STM32_DMA_PERIPH_8BITS)>,
<&dmamux1 3 12 (STM32_DMA_PERIPH_TO_MEMORY | STM32_DMA_MEM_INC |
STM32_DMA_MEM_8BITS | STM32_DMA_PERIPH_8BITS)>;
dma-names = "tx", "rx";
status = "okay";

adin1110: adin1110@0 {
compatible = "adi,adin1110";
reg = <0x0>;
spi-max-frequency = <25000000>;
int-gpios = <&gpiob 11 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
reset-gpios = <&gpioc 13p GPIO_ACTIVE_LOW>;
status = "okay";

port1 {
local-mac-address = [ 00 E0 22 FE DA C8 ];
};
mdio {
compatible = "adi,adin2111-mdio";
#address-cells = <1>;
#size-cells = <0>;

ethernet-phy@1 {
reg = <0x1>;
compatible = "adi,adin2111-phy";
};
};
};
};

&iwdg {
status = "okay";
};

&rng {
status = "okay";
};

&dma1 {
status = "okay";
};

&dmamux1 {
status = "okay";
};

this is output
[00:00:00.210,000] <err> eth_adin2111: Failed to communicate over SPI, -5
[00:00:10.410,000] <err> phy_adin: PHY 1 didn't come out of reset, -5
[00:00:10.410,000] <err> eth_adin2111: ADIN adin1110@0 is not ready, can't init port 0 iface


How can I properly use the adin1110 driver for cn0575 using the nucleo board?

Thread Notes

Parents
  • Hi  ,

    Thank you for your inquiry. We’re currently looking into the issue and will get back to you as soon as we have more information.

    Appreciate your patience.

    Julious

  • on Aug 23, 2025 2:50 AM in reply to jnb22 Contains AI Generated Content
    +1

    Hi  ,

    I finally managed to resolve my issues and now I can run adin1110 driver on Nucleo_L4RZI.

    I had to use these in prj.conf file:

    CONFIG_SPI_STM32_DMA=y
    CONFIG_MDIO=y
    CONFIG_MDIO_INIT_PRIORITY=81
    CONFIG_NET_L2_ETHERNET=y
    CONFIG_ETH_DRIVER=y
    CONFIG_NET_L2_ETHERNET=y
    CONFIG_PHY_INIT_PRIORITY=82
    CONFIG_NETWORKING=y
    CONFIG_ETH_ADIN2111=y
    CONFIG_ETH_ADIN2111_SPI_CFG0=n
    # # Enable Heap memory allocation (required for k_malloc and k_free)
    CONFIG_HEAP_MEM_POOL_SIZE=4096
    CONFIG_MAIN_STACK_SIZE=4096
    CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=4096
    These four are very important:
    CONFIG_MDIO_INIT_PRIORITY=81
    CONFIG_PHY_INIT_PRIORITY=82
    CONFIG_ETH_ADIN2111_SPI_CFG0=n
    CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=4096
    And also I used these in app.overlay:
    / {
            aliases {
                    adin1110 = &adin1110;
            };
    };

    &iwdg {
            status = "okay";
    };

    &rng {
           status = "okay";
    };

    &dma1 {
          status = "okay";
    };

    &dmamux1 {
          status = "okay";
    };

    &spi2 {
          pinctrl-0 = <&spi2_sck_pb13 &spi2_miso_pb14 &spi2_mosi_pb15>;
          pinctrl-names = "default";
          cs-gpios = <&gpiob 12 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
          dmas = <&dmamux1 2 13 (STM32_DMA_MEMORY_TO_PERIPH | STM32_DMA_MEM_INC |
                                                      STM32_DMA_MEM_8BITS | STM32_DMA_PERIPH_8BITS)>,
                       <&dmamux1 3 12 (STM32_DMA_PERIPH_TO_MEMORY | STM32_DMA_MEM_INC |
                                                      STM32_DMA_MEM_8BITS | STM32_DMA_PERIPH_8BITS)>;
          dma-names = "tx", "rx";
          status = "okay";

          adin1110: adin1110@0 {
                    compatible = "adi,adin1110";
                    reg = <0x0>;
                    spi-max-frequency = <25000000>;
                    int-gpios = <&gpiob 11 GPIO_ACTIVE_LOW>;
                    reset-gpios = <&gpioc 7 GPIO_ACTIVE_LOW>;
                    status = "okay";
                    //spi-oa;
                    //spi-oa-protection;

                    port1 {
                              local-mac-address = [ 00 E0 22 FE DA 30 ];
                    };
                    mdio {
                             compatible = "adi,adin2111-mdio";
                             #address-cells = <1>;
                             #size-cells = <0>;

                             ethernet-phy@1 {
                                      reg = <0x1>;
                                      compatible = "adi,adin2111-phy";
                                      led0-en;
                            };
                   };
          };
    };
    The default config of CN0575 are:
    Generic SPI
    CRC Disabled
    So I needed to make spi-oa and spi-oa-protection commented in app.overlay and CONFIG_ETH_ADIN2111_SPI_CFG0=n in prj.conf
    Also If CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE is set as default value, the program crashes when we request a ping from local host.
    Regards,
    Ali
  • Hi  ,

    That's great!

    Thanks for documenting the resolution! This will guide others on what to be mindful of when working with a similar setup.

    Julious

Reply Children
No Data

Before You Switch


Switching languages will make ADI Explorer unavailable. Resume your session by switching back to English and reopening ADI Explorer.