板子上有2路网口,第一路为DP83848 百兆网(RMII接口),第二路为KSZ9031千兆网(RGMII接口),在3.20上已经调试完成,所以硬件上不存在问题,但现在将其移植到3.14版本上,第二路网口一直不能ping通,已经进行的确认和尝试如下:
1.gmii_sel寄存器配置为0xc9,即第一个port使用rmii模式,第二个port使用rgmii模式,使用chip pin clk,无internal delay
2.dts配置如下:
&mac {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&cpsw_default>;
pinctrl-1 = <&cpsw_sleep>;
dual_emac;
}
&davinci_mdio {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&davinci_mdio _default>;
pinctrl-1 = <&davinci_mdio _sleep>;
}
&cpsw_emac0 {
phy_id = <&davinci_mdio>, <1>;
phy-mode = "rmii";
dual_emac_res_vlan = <3>;
};
&cpsw_emac1 {
phy_id = <&davinci_mdio>, <2>;
phy-mode = "rgmii";
dual_emac_res_vlan = <4>;
};
相应管脚确认已配置
3.根据链接http://processors.wiki.ti.com/index.php/Linux_Core_CPSW_User%27s_Guide#Dual_Standalone_EMAC_mode 配置了内核相关选项
4.内核启动有以下网口信息:
......
[ 4.124316] davinci_mdio 4a101000.mdio: phy[1] : device 4a101000.mdio:01, driver unknown
[ 4.171734] davinci_mdio 4a101000.mdio: phy[2] : device 4a101000.mdio:02, driver Micrel KSZ9031 Gigabit PHY
......
[ 11.364246] net eth0 : phy found : id is 0x20005c90
[ 11.534238] net eth1 : phy found : id is 0x221622
...
5.插入网线后,千兆网口均能自动识别插入拔出以及自适应100M/1000M,可以ping自身IP和回环网口,但是ping不通外网
6.http://e2e.ti.com/support/arm/sitara_arm/f/791/t/182794.aspx 根据链接中所描述的配置了KSZ9031的skew参数,没有效果
7.此外,硬件连接上有一个gpio脚接到KSZ9031的rst脚,在代码中有进行以下复位操作:
gpio_direction_output(64, 0);
gpio_set_value(64, 1);
mdelay(10);
gpio_direction_output(64,0);
mdelay(10);
gpio_direction_output(64,1);
-内核版本:3.14.26
问题:第二路千兆网口不通,暂时不能定位原因,请问现在还可以确认哪些方面