嵌入式爱好者

查看: 6609|回复: 0

[Linux] OK35xS2,增加一路千兆网卡

[复制链接]

19

主题

29

帖子

50

积分

i.MX6UL通行证FCU11xx通行证

扫一扫,手机访问本帖
发表于 2015-2-23 21:45:38 | 显示全部楼层 |阅读模式
本帖最后由 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则是不确定需不需要修改,如果修改是不是飞凌可以提供一份?

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2024-5-20 03:38

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表