本系统需要宏定义:#ifdef MULTI_ADDR_MODE.有了这个宏定义,实际访问交换芯片的函数为MultiAddrRead/MultiAddrRead,通过交换芯片的命令寄存器和数据寄存器访问。配置efg.mode.baseAddr=0x10为交换芯片地址(和交换芯片地址跳线相关);配置cfg.cpu Port Num=10为交换芯片和CPU相连的端口地址,本例中为10口。
3 CPU和以太网RGMII连接驱动配置
由于CPU是通过RGMII数字接口和交换芯片直接相连,中间没有PHY,故需要在设备树中直接定义连接配置为固定波特率模式。有PHY的配置,例如phy—handle=,实际波特率配置需要配置相应PHY的寄存器或者自适应;固定波特率模式配置,例如fixed—link=,表示全双工1000 Mbps(nopause and no asym_pause)。
通过配置交换芯片所有端口的0x06控制寄存器可实现该功能,该寄存器名为端口级VLAN映射(PORT Based VLAN MAP)。其中的10:0位指示VLANTable,其中每一位对应一个端口,置1表示该端口输入的数据会发到相应端口(如5端口的VLANTable=0x003表示5端口的数据会转发给0端口和1端口)。实际配置0~9端口读取寄存器内容,和0x400按位“与”之后回写。10端口读取寄存器内容和0x300按位“与”之后回写。