Using KSZ9031 PHY On i.MX8MM and L5.4.24_2.1.0

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Using KSZ9031 PHY On i.MX8MM and L5.4.24_2.1.0

Using KSZ9031 PHY On i.MX8MM and L5.4.24_2.1.0

 

1. Hardware design

weidong_sun_0-1605669263897.png

KSZ9031

weidong_sun_1-1605669294549.png

Power Rail of KSZ9031

[Comment]
1. VDDIO: KSZ9031 supports 1.8V or 3.3V IO, here we use 1.8V
2. Phy address: 0x07
3. Reset Pin: Using GPIO1_IO07 Pad of CPU
4. 125MHz OUTPUT: not used, left unconnected.

weidong_sun_2-1605669338917.png

2. Software
--In device tree of u-boot
&fec1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_fec1>;
phy-mode = "rgmii-id";
phy-handle = <&ethphy0>;
fsl,magic-packet;
status = "okay";
mdio {
#address-cells = <1>;
#size-cells = <0>;
ethphy0: ethernet-phy@7 {
compatible = "ethernet-phy-ieee802.3-c22";
reg = <7>;
            };
       };
};

[comment]
After u-boot booting is done, don’t forget to set MAC address on u-boot command line.
U-Boot > setenv ethaddr 00:01:02:03:04:05
U-Boot > save

--In device tree of linux kernel

pinctrl_fec1: fec1grp {
fsl,pins = <
MX8MM_IOMUXC_ENET_MDC_ENET1_MDC 0x3
MX8MM_IOMUXC_ENET_MDIO_ENET1_MDIO 0x3
MX8MM_IOMUXC_ENET_TD3_ENET1_RGMII_TD3 0x1f
MX8MM_IOMUXC_ENET_TD2_ENET1_RGMII_TD2 0x1f
MX8MM_IOMUXC_ENET_TD1_ENET1_RGMII_TD1 0x1f
MX8MM_IOMUXC_ENET_TD0_ENET1_RGMII_TD0 0x1f
MX8MM_IOMUXC_ENET_RD3_ENET1_RGMII_RD3 0x91
MX8MM_IOMUXC_ENET_RD2_ENET1_RGMII_RD2 0x91
MX8MM_IOMUXC_ENET_RD1_ENET1_RGMII_RD1 0x91
MX8MM_IOMUXC_ENET_RD0_ENET1_RGMII_RD0 0x91
MX8MM_IOMUXC_ENET_TXC_ENET1_RGMII_TXC 0x1f
MX8MM_IOMUXC_ENET_RXC_ENET1_RGMII_RXC 0x91
MX8MM_IOMUXC_ENET_RX_CTL_ENET1_RGMII_RX_CTL 0x91
MX8MM_IOMUXC_ENET_TX_CTL_ENET1_RGMII_TX_CTL 0x1f
MX8MM_IOMUXC_GPIO1_IO07_GPIO1_IO7 0x19
>;
};

&fec1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_fec1>;
phy-mode = "rgmii-id";
phy-handle = <&ethphy0>;
phy-reset-gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
phy-reset-post-delay = <150>;
phy-reset-duration = <10>;
fsl,magic-packet;
status = "okay";

mdio {
#address-cells = <1>;
#size-cells = <0>;
ethphy0: ethernet-phy@7 {
compatible = "ethernet-phy-ieee802.3-c22";
reg = <7>;

rxc-skew-ps = <1860>;
txc-skew-ps = <1860>;
           };
    };

};

3. About PHY driver
Drivers/net/phy/micrel.c supports following PHYs:

* Support : Micrel Phys:
* Giga phys: ksz9021, ksz9031, ksz9131
* 100/10 Phys : ksz8001, ksz8721, ksz8737, ksz8041
* ksz8021, ksz8031, ksz8051,
* ksz8081, ksz8091,
* ksz8061,
* Switch : ksz8873, ksz886x
* ksz9477
*/

In Linux kernel configuration, the item should be selected:
CONFIG_MICREL_PHY=y

[comment]
If the phy driver is not loaded in u-boot, which mean there is no MAC address for ethernet,
linux will automatically assign a random MAC address for it.

NXP TIC team
Weidong sun
11/18/2020

 

 

 

 

Tags (1)
Attachments
%3CLINGO-SUB%20id%3D%22lingo-sub-1184862%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EUsing%20KSZ9031%20PHY%20On%20i.MX8MM%20and%20L5.4.24_2.1.0%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1184862%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CDIV%20class%3D%22lia-message-template-symptoms-zone%22%3E%26nbsp%3B%3C%2FDIV%3E%0A%3CDIV%20class%3D%22lia-message-template-solution-zone%22%3E%0A%3CP%3E1.%20Hardware%20design%3C%2FP%3E%0A%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22weidong_sun_0-1605669263897.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22weidong_sun_0-1605669263897.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F130324i162026BF22AAD822%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22weidong_sun_0-1605669263897.png%22%20alt%3D%22weidong_sun_0-1605669263897.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%0A%3CP%20class%3D%22lia-align-center%22%20style%3D%22text-align%3A%20center%3B%22%20style%3D%22text-align%3A%20center%3B%22%3EKSZ9031%3C%2FP%3E%0A%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22weidong_sun_1-1605669294549.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22weidong_sun_1-1605669294549.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F130325i13ECE85FD56CB9AF%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22weidong_sun_1-1605669294549.png%22%20alt%3D%22weidong_sun_1-1605669294549.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%0A%3CP%20class%3D%22lia-align-center%22%20style%3D%22text-align%3A%20center%3B%22%20style%3D%22text-align%3A%20center%3B%22%3EPower%20Rail%20of%20KSZ9031%3C%2FP%3E%0A%3CP%20class%3D%22lia-align-left%22%20style%3D%22text-align%20%3A%20left%3B%22%20style%3D%22text-align%20%3A%20left%3B%22%3E%5BComment%5D%3CBR%20%2F%3E1.%20VDDIO%3A%20KSZ9031%20supports%201.8V%20or%203.3V%20IO%2C%20here%20we%20use%201.8V%3CBR%20%2F%3E2.%20Phy%20address%3A%200x07%3CBR%20%2F%3E3.%20Reset%20Pin%3A%20Using%20GPIO1_IO07%20Pad%20of%20CPU%3CBR%20%2F%3E4.%20125MHz%20OUTPUT%3A%20not%20used%2C%20left%20unconnected.%3C%2FP%3E%0A%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22weidong_sun_2-1605669338917.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22weidong_sun_2-1605669338917.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F130326i7986BC027E98B4B9%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22weidong_sun_2-1605669338917.png%22%20alt%3D%22weidong_sun_2-1605669338917.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%0A%3CP%3E2.%20Software%3CBR%20%2F%3E--In%20device%20tree%20of%20u-boot%3CBR%20%2F%3E%26amp%3Bfec1%20%7B%3CBR%20%2F%3Epinctrl-names%20%3D%20%22default%22%3B%3CBR%20%2F%3Epinctrl-0%20%3D%20%26lt%3B%26amp%3Bpinctrl_fec1%26gt%3B%3B%3CBR%20%2F%3Ephy-mode%20%3D%20%22rgmii-id%22%3B%3CBR%20%2F%3Ephy-handle%20%3D%20%26lt%3B%26amp%3Bethphy0%26gt%3B%3B%3CBR%20%2F%3Efsl%2Cmagic-packet%3B%3CBR%20%2F%3Estatus%20%3D%20%22okay%22%3B%3CBR%20%2F%3Emdio%20%7B%3CBR%20%2F%3E%23address-cells%20%3D%20%26lt%3B1%26gt%3B%3B%3CBR%20%2F%3E%23size-cells%20%3D%20%26lt%3B0%26gt%3B%3B%3CBR%20%2F%3Eethphy0%3A%20ethernet-phy%407%20%7B%3CBR%20%2F%3Ecompatible%20%3D%20%22ethernet-phy-ieee802.3-c22%22%3B%3CBR%20%2F%3Ereg%20%3D%20%26lt%3B7%26gt%3B%3B%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7D%3B%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7D%3B%3CBR%20%2F%3E%7D%3B%3C%2FP%3E%0A%3CP%3E%5Bcomment%5D%3CBR%20%2F%3EAfter%20u-boot%20booting%20is%20done%2C%20don%E2%80%99t%20forget%20to%20set%20MAC%20address%20on%20u-boot%20command%20line.%3CBR%20%2F%3EU-Boot%20%26gt%3B%20setenv%20ethaddr%2000%3A01%3A02%3A03%3A04%3A05%3CBR%20%2F%3EU-Boot%20%26gt%3B%20save%3C%2FP%3E%0A%3CP%3E--In%20device%20tree%20of%20linux%20kernel%3C%2FP%3E%0A%3CP%3Epinctrl_fec1%3A%20fec1grp%20%7B%3CBR%20%2F%3Efsl%2Cpins%20%3D%20%26lt%3B%3CBR%20%2F%3EMX8MM_IOMUXC_ENET_MDC_ENET1_MDC%200x3%3CBR%20%2F%3EMX8MM_IOMUXC_ENET_MDIO_ENET1_MDIO%200x3%3CBR%20%2F%3EMX8MM_IOMUXC_ENET_TD3_ENET1_RGMII_TD3%200x1f%3CBR%20%2F%3EMX8MM_IOMUXC_ENET_TD2_ENET1_RGMII_TD2%200x1f%3CBR%20%2F%3EMX8MM_IOMUXC_ENET_TD1_ENET1_RGMII_TD1%200x1f%3CBR%20%2F%3EMX8MM_IOMUXC_ENET_TD0_ENET1_RGMII_TD0%200x1f%3CBR%20%2F%3EMX8MM_IOMUXC_ENET_RD3_ENET1_RGMII_RD3%200x91%3CBR%20%2F%3EMX8MM_IOMUXC_ENET_RD2_ENET1_RGMII_RD2%200x91%3CBR%20%2F%3EMX8MM_IOMUXC_ENET_RD1_ENET1_RGMII_RD1%200x91%3CBR%20%2F%3EMX8MM_IOMUXC_ENET_RD0_ENET1_RGMII_RD0%200x91%3CBR%20%2F%3EMX8MM_IOMUXC_ENET_TXC_ENET1_RGMII_TXC%200x1f%3CBR%20%2F%3EMX8MM_IOMUXC_ENET_RXC_ENET1_RGMII_RXC%200x91%3CBR%20%2F%3EMX8MM_IOMUXC_ENET_RX_CTL_ENET1_RGMII_RX_CTL%200x91%3CBR%20%2F%3EMX8MM_IOMUXC_ENET_TX_CTL_ENET1_RGMII_TX_CTL%200x1f%3CBR%20%2F%3EMX8MM_IOMUXC_GPIO1_IO07_GPIO1_IO7%200x19%3CBR%20%2F%3E%26gt%3B%3B%3CBR%20%2F%3E%7D%3B%3C%2FP%3E%0A%3CP%3E%26amp%3Bfec1%20%7B%3CBR%20%2F%3Epinctrl-names%20%3D%20%22default%22%3B%3CBR%20%2F%3Epinctrl-0%20%3D%20%26lt%3B%26amp%3Bpinctrl_fec1%26gt%3B%3B%3CBR%20%2F%3Ephy-mode%20%3D%20%22rgmii-id%22%3B%3CBR%20%2F%3Ephy-handle%20%3D%20%26lt%3B%26amp%3Bethphy0%26gt%3B%3B%3CBR%20%2F%3Ephy-reset-gpios%20%3D%20%26lt%3B%26amp%3Bgpio1%207%20GPIO_ACTIVE_LOW%26gt%3B%3B%3CBR%20%2F%3Ephy-reset-post-delay%20%3D%20%26lt%3B150%26gt%3B%3B%3CBR%20%2F%3Ephy-reset-duration%20%3D%20%26lt%3B10%26gt%3B%3B%3CBR%20%2F%3Efsl%2Cmagic-packet%3B%3CBR%20%2F%3Estatus%20%3D%20%22okay%22%3B%3C%2FP%3E%0A%3CP%3Emdio%20%7B%3CBR%20%2F%3E%23address-cells%20%3D%20%26lt%3B1%26gt%3B%3B%3CBR%20%2F%3E%23size-cells%20%3D%20%26lt%3B0%26gt%3B%3B%3CBR%20%2F%3Eethphy0%3A%20ethernet-phy%407%20%7B%3CBR%20%2F%3Ecompatible%20%3D%20%22ethernet-phy-ieee802.3-c22%22%3B%3CBR%20%2F%3Ereg%20%3D%20%26lt%3B7%26gt%3B%3B%3C%2FP%3E%0A%3CP%3Erxc-skew-ps%20%3D%20%26lt%3B1860%26gt%3B%3B%3CBR%20%2F%3Etxc-skew-ps%20%3D%20%26lt%3B1860%26gt%3B%3B%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7D%3B%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7D%3B%3C%2FP%3E%0A%3CP%3E%7D%3B%3C%2FP%3E%0A%3CP%3E3.%20About%20PHY%20driver%3CBR%20%2F%3EDrivers%2Fnet%2Fphy%2Fmicrel.c%20supports%20following%20PHYs%3A%3C%2FP%3E%0A%3CP%3E*%20Support%20%3A%20Micrel%20Phys%3A%3CBR%20%2F%3E*%20Giga%20phys%3A%20ksz9021%2C%20ksz9031%2C%20ksz9131%3CBR%20%2F%3E*%20100%2F10%20Phys%20%3A%20ksz8001%2C%20ksz8721%2C%20ksz8737%2C%20ksz8041%3CBR%20%2F%3E*%20ksz8021%2C%20ksz8031%2C%20ksz8051%2C%3CBR%20%2F%3E*%20ksz8081%2C%20ksz8091%2C%3CBR%20%2F%3E*%20ksz8061%2C%3CBR%20%2F%3E*%20Switch%20%3A%20ksz8873%2C%20ksz886x%3CBR%20%2F%3E*%20ksz9477%3CBR%20%2F%3E*%2F%3C%2FP%3E%0A%3CP%3EIn%20Linux%20kernel%20configuration%2C%20the%20item%20should%20be%20selected%3A%3CBR%20%2F%3ECONFIG_MICREL_PHY%3Dy%3C%2FP%3E%0A%3CP%3E%5Bcomment%5D%3CBR%20%2F%3EIf%20the%20phy%20driver%20is%20not%20loaded%20in%20u-boot%2C%20which%20mean%20there%20is%20no%20MAC%20address%20for%20ethernet%2C%3CBR%20%2F%3Elinux%20will%20automatically%20assign%20a%20random%20MAC%20address%20for%20it.%3C%2FP%3E%0A%3CP%20class%3D%22lia-align-right%22%20style%3D%22text-align%20%3A%20right%3B%22%20style%3D%22text-align%20%3A%20right%3B%22%3ENXP%20TIC%20team%3CBR%20%2F%3EWeidong%20sun%3CBR%20%2F%3E11%2F18%2F2020%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CBR%20%2F%3E%0A%3CP%20class%3D%22lia-align-left%22%20style%3D%22text-align%20%3A%20left%3B%22%20style%3D%22text-align%20%3A%20left%3B%22%3E%26nbsp%3B%3C%2FP%3E%0A%3C%2FDIV%3E%0A%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-TEASER%20id%3D%22lingo-teaser-1184862%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CBR%20%2F%3E%0A%3CBR%20%2F%3E%3C%2FLINGO-TEASER%3E
No ratings
Version history
Last update:
‎11-17-2020 08:24 PM
Updated by: