Colibri iMX8QXP 2nd ethernet Port

Device: Colibri iMX8QXP 2GB IT V1.0D

Using Torizon-Core builder I would like to get the 2nd ethernet port functional on the Colibri iMX8QXP along with device tree “imx8qxp-colibri-lvds-single-channel.dts”. The ethernet IC installed on the custom carrier board is KSZ8873RLL. Aside from the required pin-mux what other steps are required?
Is there a reference for this? Thanks

Hi @CEK !

We recommend you read chapter 5.3 of the Colibri iMX8X datasheet to take a look at some details of the second Ethernet for this module: Colibri iMX8X | Toradex Developer Center

Also, check the Colibri iMX8X device tree where you will need to create a node like the one we have here: imx8x-colibri.dtsi « freescale « dts « boot « arm64 « arch - linux-toradex.git - Linux kernel for Apalis, Colibri and Verdin modules

Best regards,

I would like to note the following observation for the 2nd ethernet:
under sys/kernel/debug/pinctrl/pinctrl-maps I see “device scu:pinctrl” instead of “device ”. see attached .

That would appear to be an issue, I have: status = “okay” in a device tree overlay. Why would the device not indicate ?

thanks
image

Could you perhaps share your device tree overlay/device tree changes?

It’s not clear to me what you’ve done to “enable” this 2nd ethernet.

Best Regards,
Jeremias

Here are the device tree overlay settings for second ethernet, if you need something more let me know.

Is there a driver/module that needs installed/referenced for the “rmii”?

In torizoncore builder I’m using “ imx8qxp-colibri-lvds-single-channel.dts” as the device tree source. I can successfully complete a “torizoncore build” and install with the device tree and overlays.

Obviously I’m in learn mode when it comes to device trees, etc

/***********************************************************/

&fec2 {

status = “okay”;

pinctrl-names = “default”;

pinctrl-0 = <&pinctrl_fec2>;

#address-cells = <1>;

#size-cells = <0>;

phy-mode = “rmii”;

fsl,magic-packet;

fixed-link {

speed = <100>;

full-duplex;

};

};

/pin mux/

pinctrl_fec2: fec2grp {

fsl,pins = <

IMX8QXP_ESAI0_FSR_CONN_ENET1_RCLK50M_OUT 0x06000060 /0x0e000060/ /SODIMM 76/

IMX8QXP_ESAI0_SCKR_CONN_ENET1_RGMII_TX_CTL 0x00000060 /0x18000060/ /SODIMM 60/

IMX8QXP_ESAI0_TX3_RX2_CONN_ENET1_RGMII_RXD1 0x00000060 /0x18000060/ /SODIMM 46/

IMX8QXP_ESAI0_TX4_RX1_CONN_ENET1_RGMII_TXD0 0x00000060 /0x18000060/ /SODIMM 62/

IMX8QXP_ESAI0_TX5_RX0_CONN_ENET1_RGMII_TXD1 0x00000060 /0x18000060/ /SODIMM 48/

IMX8QXP_SPDIF0_RX_CONN_ENET1_RGMII_RXD0 0x00000060 /0x18000060/ /SODIMM 74/

IMX8QXP_SPDIF0_TX_CONN_ENET1_RGMII_RX_CTL 0x00000060 /0x18000060/ /SODIMM 50/

;

};

/***************************************************************************************************/

Just glancing at the snippet you provided it seems there’s no mdio sub-node in the fec2 node.

If you see the existing fec1 node here: imx8x-colibri.dtsi « freescale « dts « boot « arm64 « arch - linux-toradex.git - Linux kernel for Apalis, Colibri and Verdin modules

There’s a mdio sub-node that further defines the connected Ethernet PHY.

Is there a driver/module that needs installed/referenced for the “rmii”?

There shouldn’t be anything special. As seen from the above link, the existing fec1 node also uses rmii.

Also I found another helpful reference that could help you. In our device tree for the Verdin i.MX8M Plus: imx8mp-verdin.dtsi « freescale « dts « boot « arm64 « arch - linux-toradex.git - Linux kernel for Apalis, Colibri and Verdin modules

We already have dual Ethernet interfaces defined. Though this isn’t one to one with what you’re doing it should be fairly similar.

Best Regards,
Jeremias