OK35xS2,增加一路千兆网卡
本帖最后由 shijunpu 于 2015-2-26 21:03 编辑大佬好!
AM335xSII只有一个百兆网卡(LAN8720的PHY)。现在想将OK335xS上的千兆网卡(AR8031的PHY)移植过来一路,作为第二个网卡。
原理图和PCB复制即可,但现在遇到几个不确定的问题:
1. linux代码修改。需要修改的地方:引脚复用肯定要增加一路RGMII2的引脚复用,这个参考OK335xS即可,没有不确定的
2.网络初始化 代码修改不确定。在arch/arm/OMap2/board-am335xevm.c的函数:setup_ok335x中:
#if defined(CONFIG_OK335XS2)
am33xx_cpsw_init(AM33XX_CPSW_MODE_RMII, NULL, NULL);
phy_register_fixup_for_uid(AM335X_EVM_PHY_ID, AM335X_EVM_PHY_MASK,
am33xx_evm_tx_clk_dly_phy_fixup);
#else
am33xx_cpsw_init(AM33XX_CPSW_MODE_RGMII, NULL, NULL);
/* Atheros Tx Clk delay Phy fixup */
phy_register_fixup_for_uid(AM335X_EVM_PHY_ID, AM335X_EVM_PHY_MASK,
am33xx_evm_tx_clk_dly_phy_fixup);
#endif
现在百兆是RMII,千兆是RGMII,两个调用都不合适,是不是可修改官方的am33xx_cpsw_init函数?
如果要修改,在该函数中:writel(gmii_sel, AM33XX_CTRL_REGADDR(AM33XX_CONTROL_GMII_SEL_OFFSET));RGMII和RMII模式分别将gmii_sel设为了不同的值,那么似乎没办法将寄存器AM33XX_CTRL_REGADDR(AM33XX_CONTROL_GMII_SEL_OFFSET)的值既设为RMII又设为RGMII对应的gmii_sel的值,这块又该如何改呢?--这个查看了AM335X的技术手册,应该也能解决,不过要改am33xx_cpsw_init的代码
另外,在am33xx_cpsw_init中,飞凌将RMII的gmii_sel值做了个0x0040的或操作(
#if defined(CONFIG_OK335XS2) #define RMII1_IO_CLK_EN 0x0040
gmii_sel |= (RMII1_IO_CLK_EN);
#endif),这是为何呢?---这个明白了,大概就是使用外部时钟的意思,如果没有这个经测试ping会时通时断
有没有两个不同类型网卡(RMII和RGMII)的成功过的先例?其他论坛有人问过这个问题,但没看到给出答案,见这位兄弟的帖子(也是飞凌用户,不知道解决了没)http://www.deyisupport.com/quest ... m/f/25/t/79522.aspx
3.查阅资料中,有人士指出:Boot也要做相应修改(修改两个网卡的PHY)。见上面那位兄弟的帖子
4.修改device.c中PHY初始化,现在的百兆网卡PHYID为01,新加的千兆PHY改为00(硬件上地址参考OK335xS地址为00的那个)。这个也是确定的
上面中,2不知道如何该如何修改,因为为同一个寄存器同时写两个值似乎不可行;3则是不确定需不需要修改,如果修改是不是飞凌可以提供一份?
页:
[1]