KSZ9893交换机dsa驱动调试

使用的是NXP的imx8qm做主控,imx8qm芯片有两个以太网,AR8031直接通过fec出去rj45

先来看设备树配置

&fec2 {
	pinctrl-names = "default";
	phy-mode = "rgmii-txid";
	pinctrl-0 = <&pinctrl_fec2>;
	fsl,magic-packet;
	nvmem-cells = <&fec_mac1>;
	nvmem-cell-names = "mac-address";
	fsl,rgmii_txc_dly;
	status = "okay";
	fixed-link {
		speed = <1000>;
		full-duplex;
	};
};

&i2c4 {

	#address-cells = <1>;
	#size-cells = <0>;
	clock-frequency = <100000>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_i2c4>;
	status = "okay";
	
	i2c_ksz9893: ksz9893@5f {
		compatible = "microchip,ksz9893";
		reg = <0x5f>;
		phy_mode = "rgmii-txid";
		pinctrl-names = "default";
		dsa,member = <1 1>;
		status = "okay";
		ports {
			#address-cells = <1>;
			#size-cells = <0>;
			
			port@0 {
				reg = <0>;
				label = "ksz-lan1";

			};
			port@1 {
				reg = <1>;
				label = "ksz-lan2";
			};
			port@2 {
				reg = <2>;
				lable = "cpu";
				ethernet = <&fec2>;
				fixed-link {
					speed = <1000>;
					full-duplex;
				};
			};
		};
	};
};

ksz9893有3个端口:port3支持RGMII,我这里接的是主控的cpu,port1接通过网络变压器直接和wifi模块连接,port2口出去rj45以太网。

设备树的配置需要注意下面几点:

1、phy-mode应该设置为rgmii-txid

2、因为ks9893默认设置了tx-delay,所以cpu端要设置fsl,rgmii_txc_dly,如果这里设置错误,RX会一直没有数据

3、禁用自协商使用fixed-link模式,具体操作就是添加下面四行代码到设备树中

fixed-link {
		speed = <1000>;
		full-duplex;
	};

4、dsa,member = <0 0>;这个属性暂时可以不用管它,当连接多个交换机时需要配置这个属性

5、交换机使用dsa驱动时,各个端口之间是隔离的不能通信,要想使端口之间正常通信需要建立桥接方式,下面假设m-lan1和m-lan2之间建立桥接

ip link set eth1 up
ip link set m-lan2 up
ip link set m-lan3 up
ip link add name br0 type bridge
ifconfig br0 hw ether 3A:25:D3:7C:AB:5A
ip link set dev m-lan2 master br0
ip link set dev m-lan3 master br0
ip addr add 192.168.2.102/24 dev br0
ip link set dev br0 up

5、ksz9893的驱动程序可以直接到microchip的官网下载,不过编译的时候可能会报错,自己修改一下即可.

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值