0.本文主要记录开机发程过程,默认你已经熟悉RGMII/SGMII等相关概念,如果不熟悉,请自行ChatGPT解决。
1.本案使用rtl8367s,同样兼容于rtl8367sc;
realtek的8367系列比较多,至少分为以下几个型号:
5个UTP口(内置PHY)+2个EXT口(GMAC),EXT口可以做RGMII/RMII/HSGMII/SGMII。
具体型号可以通过读取chipID和version来确认:
if((retVal = rtl8367d_setAsicReg(unit, 0x13C2, 0x0249)) != RT_ERR_OK)
return retVal;
if((retVal = rtl8367d_getAsicReg(unit, 0x1300, &data)) != RT_ERR_OK)
return retVal;
if((retVal = rtl8367d_getAsicReg(unit, 0x1301, ®Value)) != RT_ERR_OK)
return retVal;
if((retVal = rtl8367d_setAsicReg(unit, 0x13C2, 0x0000)) != RT_ERR_OK)
return retVal;
1.1:读取chipID:
先写入magic数,然后从0x1300为chipID;
1.2: 读取version:
从0x1301为silon的version;
2.通讯方式及dts配置:
2.1. mdio通讯方式;
要求kernel版本不低于5.10:
dts配置如下:
&mdio0 { 
 
    status = "okay";
         /delete-node/ phy@0;
         switch: switch@0 { 
 
         compatible = "realtek,rtl8367s";
         reset-gpios = <&gpio3 RK_PC0 GPIO_ACTIVE_LOW>;
         ldo-gpios = <&gpio2 RK_PD3 GPIO_ACTIVE_HIGH>;
         realtek,disable-leds;
         reg = <0>;
         dsa,member = <0 0>;
         switch_intc: interrupt-controller { 
 
                 /* GPIO 15 provides the interrupt */
                 interrupt-parent = <&gpio3>;
                 interrupts = <16 IRQ_TYPE_LEVEL_LOW>;
                 interrupt-controller;
                 #address-cells = <0>;
                 #interrupt-cells = <1>;
         };
        ports { 
 
                 #address-cells = <1>;
                 #size-cells = <0>;<

                  
                  
                  
                  
最低0.47元/天 解锁文章
                          
                      
      
          
                
                
                
                
              
                
                
                
                
                
              
                
                
              
            
                  
					2676
					
被折叠的  条评论
		 为什么被折叠?
		 
		 
		
    
  
    
  
            


            