pinmux 配置
eqos_txc_pe0 {
nvidia,pins = “eqos_txc_pe0”;
nvidia,function = “eqos”;
nvidia,pull = <TEGRA_PIN_PULL_NONE>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_DISABLE>;
};
eqos_td0_pe1 {
nvidia,pins = "eqos_td0_pe1";
nvidia,function = "eqos";
nvidia,pull = <TEGRA_PIN_PULL_NONE>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_DISABLE>;
};
eqos_td1_pe2 {
nvidia,pins = "eqos_td1_pe2";
nvidia,function = "eqos";
nvidia,pull = <TEGRA_PIN_PULL_NONE>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_DISABLE>;
};
eqos_td2_pe3 {
nvidia,pins = "eqos_td2_pe3";
nvidia,function = "eqos";
nvidia,pull = <TEGRA_PIN_PULL_NONE>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_DISABLE>;
};
eqos_td3_pe4 {
nvidia,pins = "eqos_td3_pe4";
nvidia,function = "eqos";
nvidia,pull = <TEGRA_PIN_PULL_NONE>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_DISABLE>;
};
eqos_tx_ctl_pe5 {
nvidia,pins = "eqos_tx_ctl_pe5";
nvidia,function = "eqos";
nvidia,pull = <TEGRA_PIN_PULL_NONE>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_DISABLE>;
};
eqos_rd0_pe6 {
nvidia,pins = "eqos_rd0_pe6";
nvidia,function = "eqos";
nvidia,pull = <TEGRA_PIN_PULL_NONE>;
nvidia,tristate = <TEGRA_PIN_ENABLE>;
nvidia,enable-input = <TEGRA_PIN_ENABLE>;
};
eqos_rd1_pe7 {
nvidia,pins = "eqos_rd1_pe7";
nvidia,function = "eqos";
nvidia,pull = <TEGRA_PIN_PULL_NONE>;
nvidia,tristate = <TEGRA_PIN_ENABLE>;
nvidia,enable-input = <TEGRA_PIN_ENABLE>;
};
eqos_rd2_pf0 {
nvidia,pins = "eqos_rd2_pf0";
nvidia,function = "eqos";
nvidia,pull = <TEGRA_PIN_PULL_NONE>;
nvidia,tristate = <TEGRA_PIN_ENABLE>;
nvidia,enable-input = <TEGRA_PIN_ENABLE>;
};
eqos_rd3_pf1 {
nvidia,pins = "eqos_rd3_pf1";
nvidia,function = "eqos";
nvidia,pull = <TEGRA_PIN_PULL_NONE>;
nvidia,tristate = <TEGRA_PIN_ENABLE>;
nvidia,enable-input = <TEGRA_PIN_ENABLE>;
};
eqos_rx_ctl_pf2 {
nvidia,pins = "eqos_rx_ctl_pf2";
nvidia,function = "eqos";
nvidia,pull = <TEGRA_PIN_PULL_NONE>;
nvidia,tristate = <TEGRA_PIN_ENABLE>;
nvidia,enable-input = <TEGRA_PIN_ENABLE>;
};
eqos_rxc_pf3 {
nvidia,pins = "eqos_rxc_pf3";
nvidia,function = "eqos";
nvidia,pull = <TEGRA_PIN_PULL_NONE>;
nvidia,tristate = <TEGRA_PIN_ENABLE>;
nvidia,enable-input = <TEGRA_PIN_ENABLE>;
};
eqos_sma_mdio_pf4 {
nvidia,pins = "eqos_sma_mdio_pf4";
nvidia,function = "eqos";
nvidia,pull = <TEGRA_PIN_PULL_NONE>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_ENABLE>;
};
eqos_sma_mdc_pf5 {
nvidia,pins = "eqos_sma_mdc_pf5";
nvidia,function = "eqos";
nvidia,pull = <TEGRA_PIN_PULL_NONE>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_DISABLE>;
};
EQOS 配置
ethernet@2310000 {
compatible = “nvidia,nveqos”;
reg = <0x0 0x02310000 0x0 0x10000>, /* EQOS Base Register /
<0x0 0x023D0000 0x0 0x10000>, / MACSEC Base Register /
<0x0 0x02300000 0x0 0x10000>; / HV Base Register /
reg-names = “mac-base”, “macsec-base”, “hv-base”;
interrupts = <0 194 0x4>, / common /
<0 186 0x4>, / vm0 /
<0 187 0x4>, / vm1 /
<0 188 0x4>, / vm2 /
<0 189 0x4>, / vm3 /
<0 190 0x4>, / MACsec non-secure intr /
<0 191 0x4>; / MACsec secure intr /
interrupt-names = “common”, “vm0”, “vm1”, “vm2”, “vm3”,
“macsec-ns-irq”, “macsec-s-irq”;
resets = <&bpmp_resets TEGRA234_RESET_EQOS>,
<&bpmp_resets TEGRA234_RESET_EQOS_MACSEC>; / MACsec non-secure reset /
reset-names = “mac_rst”, “macsec_ns_rst”;
clocks = <&bpmp_clks TEGRA234_CLK_PLLREFE_VCOOUT>,
<&bpmp_clks TEGRA234_CLK_EQOS_AXI>,
<&bpmp_clks TEGRA234_CLK_EQOS_RX>,
<&bpmp_clks TEGRA234_CLK_EQOS_PTP_REF>,
<&bpmp_clks TEGRA234_CLK_EQOS_TX>,
<&bpmp_clks TEGRA234_CLK_AXI_CBB>,
<&bpmp_clks TEGRA234_CLK_EQOS_RX_M>,
<&bpmp_clks TEGRA234_CLK_EQOS_RX_INPUT>,
<&bpmp_clks TEGRA234_CLK_EQOS_MACSEC_TX>,
<&bpmp_clks TEGRA234_CLK_EQOS_TX_DIVIDER>,
<&bpmp_clks TEGRA234_CLK_EQOS_MACSEC_RX>;
clock-names = “pllrefe_vcoout”, “eqos_axi”, “eqos_rx”,
“eqos_ptp_ref”, “eqos_tx”, “axi_cbb”,
“eqos_rx_m”, “eqos_rx_input”,
“eqos_macsec_tx”, “eqos_tx_divider”,
“eqos_macsec_rx”;
#if TEGRA_IOMMU_DT_VERSION >= DT_VERSION_2
interconnects = <&mc TEGRA234_MEMORY_CLIENT_EQOSR>,
<&mc TEGRA234_MEMORY_CLIENT_EQOSW>;
interconnect-names = “dma-mem”, “dma-mem”;
#endif
iommus = <&smmu_niso1 TEGRA_SID_NISO1_EQOS>;
nvidia,num-dma-chans = <8>;
nvidia,num-mtl-queues = <8>;
nvidia,mtl-queues = <0 1 2 3 4 5 6 7>;
nvidia,dma-chans = <0 1 2 3 4 5 6 7>;
nvidia,tc-mapping = <0 1 2 3 4 5 6 7>;
/ Residual Queue can be any valid queue except RxQ0 /
nvidia,residual-queue = <1>;
nvidia,rx-queue-prio = <0x2 0x1 0x30 0x48 0x0 0x0 0x0 0x0>;
nvidia,tx-queue-prio = <0x0 0x7 0x2 0x3 0x0 0x0 0x0 0x0>;
nvidia,rxq_enable_ctrl = <2 2 2 2 2 2 2 2>;
nvidia,vm-irq-config = <&eqos_vm_irq_config>;
status = “disable”;
nvidia,dcs-enable = <0x1>;
nvidia,pad_calibration = <0x1>;
nvidia,rx_riwt = <512>;
nvidia,rx_frames = <64>;
nvidia,tx_usecs = <256>;
nvidia,tx_frames = <5>;
nvidia,promisc_mode = <1>;
nvidia,slot_num_check = <0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0>;
nvidia,slot_intvl_vals = <0x0 0x7D 0x7D 0x7D 0x7D 0x7D 0x7D 0x7D>;
nvidia,ptp_ref_clock_speed = <208333334>;
nvidia,instance_id = <4>; / EQOS instance */
nvidia,ptp-rx-queue = <3>;
pinctrl-names = “mii_rx_disable”, “mii_rx_enable”;
pinctrl-0 = <&eqos_mii_rx_input_state_disable>;
pinctrl-1 = <&eqos_mii_rx_input_state_enable>;
dma-coherent;
};
};
eth0: ethernet@2310000 {
status = "okay";
nvidia,pause_frames = <0>;
phy-mode = "rgmii-id";
nvidia,max-platform-mtu = <16383>;
nvidia,phy-reset-gpio = <&tegra_main_gpio TEGRA234_MAIN_GPIO(G, 5) 0>;
nvidia,mac-addr-idx = <0>;
fixed-link {
speed = <1000>;
full-duplex;
};
};
KSZ9893-spi配置
spi1: spi@c260000 {
status = “okay”;
spi-max-frequency = <25000000>;
ksz9893: ksz9893@0 {
compatible = “microchip,ksz9893”;
#pinctrl-names = “default”;
reg = <0>;
phy-mode = “rgmii-id”;
status = “okay”;
spi-max-frequency = <10000000>;
//spi-cpha;
//spi-cpol;
interrupt-parent = <&tegra_main_gpio>;
interrupts = <TEGRA234_MAIN_GPIO(G, 4) IRQ_TYPE_LEVEL_LOW>;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
label = “lan1”;
};
port@1 {
reg = <1>;
label = “lan2”;
};
port@3 {
reg = <2>;
label = “cpu”;
ethernet = <ð0>;
fixed-link {
speed = <1000>;
full-duplex;
};
};
};
};
};
网口配置
@ubuntu:~$ sudo ifconfig eth0 up
[ 917.036506] [eqos_poll_for_swr][598][type:0x4][loga-0x0] poll_for_swr: timeout
[ 917.044063] net eth0: failed to poll MAC Software reset
SIOCSIFFLAGS: Operation not permitted
:~$ ifconfig eth0
eth0: flags=4098<BROADCAST,MULTICAST> mtu 1466
ether 48:b0:2d:94:c9:73 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0