免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5859 | 回复: 4
打印 上一主题 下一主题

[硬件及驱动] 通过CPU的MDIO控制交换芯片的实现---遇到问题,在这里请教各位高手,在线坐等 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-06-07 14:33 |只看该作者 |倒序浏览
遇到问题,在这里请教各位高手,在线坐等


平台:MPCP1022DS  (与P1013的差别就在于多一个核)
Linux内核:2.6.35
u-boot:u-boot-2010.12



现在自己的设计是把原来P1022DS上的两个网口中的一个eth0用来做网口,phy由VT的换成了bcm54616S;另一个eth1用来连接BCM5396 switch芯片的管理口,通过MDIO来控制,连接方式为RGMII,其实就是MAC to MAC的连接方式。


这个在u-boot中对于eth1的配置需要做哪些工作?
在kernel中,把dts修改完后,具体还要做哪些工作?
现在被这个问题给卡住了,期盼有高手给以指点。

曾经参考过  http://blog.chinaunix.net/uid-13889805-id-3382225.html

dts内容修改:
............
                 mdio@24000 {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        compatible = "fsl,etsec2-mdio";
                        reg = <0x24000 0x1000 0xb0030 0x4>;
                        phy0: ethernet-phy@0 {
                                interrupt-parent = <&mpic>;
                                interrupts = <3 1>;
                                reg = <0x1>;
                        };
                        /*phy1: ethernet-phy@1 {
                                interrupt-parent = <&mpic>;
                                interrupts = <9 1>;
                                reg = <0x2>;
                        };*/
                };
............
                enet0: ethernet@B0000 {
                        #address-cells = <1>;
                        #size-cells = <1>;
                        cell-index = <0>;
                        device_type = "network";
                        model = "eTSEC";
                        compatible = "fsl,etsec2";
                        fsl,num_rx_queues = <0x8>;
                        fsl,num_tx_queues = <0x8>;
                        fsl,magic-packet;
                        fsl,wake-on-filer;
                        clk-handle = <&etsec1_clk>;
                        local-mac-address = [ 00 00 00 00 00 00 ];
                        interrupt-parent = <&mpic>;
                        fixed-link = <1 1 1000 0 0>;
                        phy-handle = <&phy0>;
                        phy-connection-type = "rgmii-id";
                        queue-group@0{
                                #address-cells = <1>;
                                #size-cells = <1>;
                                reg = <0xB0000 0x1000>;
                                interrupts = <29 2 30 2 34 2>;
                        };
                        queue-group@1{
                                #address-cells = <1>;
                                #size-cells = <1>;
                                reg = <0xB4000 0x1000>;
                                interrupts = <17 2 18 2 24 2>;
                        };
                };

                enet1: ethernet@B1000 {
                        #address-cells = <1>;
                        #size-cells = <1>;
                        cell-index = <0>;
                        device_type = "network";
                        model = "eTSEC";
                        compatible = "fsl,etsec2";
                        fsl,num_rx_queues = <0x8>;
                        fsl,num_tx_queues = <0x8>;
                        fsl,magic-packet;
                        fsl,wake-on-filer;
                        clk-handle = <&etsec2_clk>;
                        local-mac-address = [ 00 00 00 00 00 00 ];
                        interrupt-parent = <&mpic>;
                        fixed-link = <1 1 1000 0 0>;
                        /*phy-handle = <&phy1>;*/
                        phy-connection-type = "rgmii-id";
                        queue-group@0{
                                #address-cells = <1>;
                                #size-cells = <1>;
                                reg = <0xB1000 0x1000>;
                                interrupts = <35 2 36 2 40 2>;
                        };
                        queue-group@1{
                                #address-cells = <1>;
                                #size-cells = <1>;
                                reg = <0xB5000 0x1000>;
                                interrupts = <51 2 52 2 67 2>;
                        };
                };


盼有人给以帮助,联系方式:
QQ:185230542
E-mail: suipl@yahoo.com.cn

论坛徽章:
0
2 [报告]
发表于 2013-06-07 15:28 |只看该作者
没人管吗?

论坛徽章:
0
3 [报告]
发表于 2013-06-07 17:55 |只看该作者
没搞过MAC to MAC,对MAC跟PHY有一点了解,猜测是要将MAC通过MDIO从PHY获取信息的(如自协商状态、全半双工状态以及LINK状态)地方统统写死,也就是搞一个虚拟的、一直正常工作的PHY。这个需要对MAC跟PHY的驱动非常了解,工作量貌似有点大,最好参考别人已经实现的代码。

具体MAC跟PHY的通信应该有个xxx_mdio_read和xxx_mdio_write函数可以参考。

论坛徽章:
0
4 [报告]
发表于 2013-06-08 09:00 |只看该作者
回复 3# frank529


    非常感谢!

论坛徽章:
0
5 [报告]
发表于 2013-06-08 09:00 |只看该作者
回复 3# frank529


    非常感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP