Tool/software: Linux
Hello,
in one of our own designs using an AM3352 and SMSC LAN8710 PHYs for both Ethernet ports, communication on eth0 is fine, but reception on eth1 doesn't seem to work.
When I ping on eth1 an ARP request is sent and received on the other side, but the response doesn't seem to reach the driver.
Through printk outputs in the driver source I found out that cpsw_rx_interrupt() isn't called for eth1, but works fine for eth0.
I've tried Linux Kernel versions 4.4.50 and 3.9.13 with the same result.
Here is the revelvant excerpt from the DTS:
&am33xx_pinmux { cpsw_default: cpsw_default { pinctrl-single,pins = < /* Slave 0 */ 0x10c ( PIN_INPUT_PULLDOWN | MUX_MODE1 ) /* (H17) gmii1_crs.rmii1_crs_dv */ 0x110 ( PIN_INPUT_PULLDOWN | MUX_MODE1 ) /* (J15) gmii1_rxer.rmii1_rxer */ 0x114 ( PIN_OUTPUT | MUX_MODE1 ) /* (J16) gmii1_txen.rmii1_txen */ 0x128 ( PIN_OUTPUT | MUX_MODE1 ) /* (K17) gmii1_txd0.rmii1_txd0 */ 0x124 ( PIN_OUTPUT | MUX_MODE1 ) /* (K16) gmii1_txd1.rmii1_txd1 */ 0x140 ( PIN_INPUT_PULLDOWN | MUX_MODE1 ) /* (M16) gmii1_rxd0.rmii1_rxd0 */ 0x13c ( PIN_INPUT_PULLDOWN | MUX_MODE1 ) /* (L15) gmii1_rxd1.rmii1_rxd1 */ 0x144 ( PIN_INPUT_PULLDOWN | MUX_MODE0 ) /* (H18) rmii1_refclk.rmii1_refclk */ /* Slave 1 */ 0x64 ( PIN_INPUT_PULLDOWN | MUX_MODE3 ) /* (U16) gpmc_a9.rmii2_crs_dv */ 0x74 ( PIN_INPUT_PULLDOWN | MUX_MODE3 ) /* (U17) gpmc_wpn.rmii2_rxer */ 0x40 ( PIN_OUTPUT | MUX_MODE3 ) /* (R13) gpmc_a0.rmii2_txen */ 0x54 ( PIN_OUTPUT | MUX_MODE3 ) /* (V15) gpmc_a5.rmii2_txd0 */ 0x50 ( PIN_OUTPUT | MUX_MODE3 ) /* (R14) gpmc_a4.rmii2_txd1 */ 0x6c ( PIN_INPUT_PULLDOWN | MUX_MODE3 ) /* (V17) gpmc_a11.rmii2_rxd0 */ 0x68 ( PIN_INPUT_PULLDOWN | MUX_MODE3 ) /* (T16) gpmc_a10.rmii2_rxd1 */ 0x108 ( PIN_INPUT_PULLDOWN | MUX_MODE1 ) /* (H16) gmii1_col.rmii2_refclk */ >; }; cpsw_sleep: cpsw_sleep { pinctrl-single,pins = < /* Slave 0 reset value */ 0x10c ( PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (H17) gmii1_crs.rmii1_crs_dv */ 0x110 ( PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (J15) gmii1_rxer.rmii1_rxer */ 0x114 ( PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (J16) gmii1_txen.rmii1_txen */ 0x128 ( PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (K17) gmii1_txd0.rmii1_txd0 */ 0x124 ( PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (K16) gmii1_txd1.rmii1_txd1 */ 0x140 ( PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (M16) gmii1_rxd0.rmii1_rxd0 */ 0x13c ( PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (L15) gmii1_rxd1.rmii1_rxd1 */ 0x144 ( PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (H18) rmii1_refclk.rmii1_refclk */ /* Slave 1 reset value */ 0x64 ( PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (U16) gpmc_a9.rmii2_crs_dv */ 0x74 ( PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (U17) gpmc_wpn.rmii2_rxer */ 0x40 ( PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (R13) gpmc_a0.rmii2_txen */ 0x54 ( PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (V15) gpmc_a5.rmii2_txd0 */ 0x50 ( PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (R14) gpmc_a4.rmii2_txd1 */ 0x6c ( PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (V17) gpmc_a11.rmii2_rxd0 */ 0x68 ( PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (T16) gpmc_a10.rmii2_rxd1 */ 0x108 ( PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (H16) gmii1_col.rmii2_refclk */ >; }; davinci_mdio_default: davinci_mdio_default { pinctrl-single,pins = < /* MDIO */ 0x148 (PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0) /* (M17) mdio_data.mdio_data */ 0x14c (PIN_OUTPUT_PULLUP | MUX_MODE0) /* (M18) mdio_clk.mdio_clk */ >; }; davinci_mdio_sleep: davinci_mdio_sleep { pinctrl-single,pins = < /* MDIO reset value */ 0x148 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* (M17) mdio_data.mdio_data */ 0x14c (PIN_INPUT_PULLDOWN | MUX_MODE7) /* (M18) mdio_clk.mdio_clk */ >; }; }; &cppi41dma { status = "okay"; }; &mac { pinctrl-names = "default", "sleep"; pinctrl-0 = <&cpsw_default>; pinctrl-1 = <&cpsw_sleep>; rx_descs = <64>; /* Was removed from am33xx.dtsi but is needed by the CPSW driver */ dual_emac; status = "okay"; }; &davinci_mdio { pinctrl-names = "default", "sleep"; pinctrl-names = "default"; pinctrl-0 = <&davinci_mdio_default>; pinctrl-1 = <&davinci_mdio_sleep>; status = "okay"; }; &cpsw_emac0 { phy_id = <&davinci_mdio>, <1>; phy-mode = "rmii"; dual_emac_res_vlan = <1>; }; &cpsw_emac1 { phy_id = <&davinci_mdio>, <3>; phy-mode = "rmii"; dual_emac_res_vlan = <2>; }; &phy_sel { rmii-clock-ext; };
Thanks in advance for any hints that might help me solve this problem.