• Linux ARM平台开发系列讲解(网络篇) 2.3 Marvell 88EA6321/88EA6320 Switch 设备树的配置分析


    1. 概述

    交换机设备树主要是要配置它的端口数量,每个Port的物理模式(例如Mac to Phy)、双工模式、连接速度、地址和与之连接的PHY地址等等,这一节就以88EA6321做例子解析一下DSA设备树,以主控S32G274A为例。

    2. 参考文档

    Linux5.10中,有Marvell 的交换机系列的设备树配置参考手册,具体如下:

    • 源码地址:/linux/Documentation/devicetree/bindings/net/dsa/marvell.txt

    3.设备树配置

    3.1 Marvell 交换机引脚Pinctrl配置

    &pinctrl0 {
    			/* 复位引脚 */
    			pinctrl_mv88exxx_gpio_reset: mv88exxx_reset {
    					fsl,pins = <
    							S32_GEN1_PAD_PC_11_LLCE_CAN0_RX_O
    							S32_GEN1_PAD_PC_12_LLCE_CAN0_TX
    					>;
    			};
    			/* 中断引脚 */
    			pinctrl_switch_mv88exxx_irq: mv88exxx_irq {
    				fsl,pins = <
    						S32_GEN1_PAD_PC_11_LLCE_CAN0_RX_O
    						S32_GEN1_PAD_PC_12_LLCE_CAN0_TX
    				>;
    			};
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    3.2 添加交换机复位引脚

    在前几章硬件篇中总结到,Marvell交换机有一个复位引脚,主要是用来主动复位交换机的,具体配置方法如下:

    / {
    
    	gpio-marverll{
    		/* 88ea6321复位引脚  */
    		compatible = "marvell_gpio,mv88e6321";
    		reset {
    				label = "marvell-reset";
    				gpios = <&gpiosb 21 GPIO_ACTIVE_LOW>;
    				pinctrl-names = "default";
    				pinctrl-0 = <&pinctrl_mv88exxx_gpio_reset>;
    				status = "okay";
    		};
    	};
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    3.3 S32G274A GMAC配置

    对于GMAC或者MAC来说,配置方法都大同小异,因为交换机与S32G274A是以MAC TO MAC的方式连接,所以要修改原设备书中的MAC TO PHYMAC TO MAC;其次,由于使用的是RGMII的方式连接,应当设置tx-delayrx-delay2ns,具体如下:

    &gmac0 {
            status = "okay";
            phy-mode = "rgmii-id";
            phy-handle = <&switch_cpu>;
    		tx_delay=<0x2f>;
    		rx_delay=<0x24>;
            pinctrl-names = "default";
            pinctrl-0 = <&pinctrl0_gmac0_rgmii_c>,
                                    <&pinctrl0_gmac0_mdio_c>;
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    3.4 配置Marvell交换机Port口配置

    Marvell 88EA6321 是采用SMI通信配置的,所以首先需要给它配置一个PHY ID,其次再给它的每个Port MAC配置PHY IDPort MAC的连接方式 ,具体如下:

    &gmac0_mdio {
            marvell88ea6321:mv88ea6321-phy@5{
                compatible = "marvell,mv88e6085";
    			/* 交换机接收中断引脚 */
    			pinctrl-0 = <&pinctrl_switch_mv88exxx_irq>;
    			pinctrl-names = "default";
    			status = "okay";
    			/* mdio phy地址 */
    			reg = <5>;
    			dsa,member = <0 0>;
    			/* eeprom大小 */
    			eeprom-length = <512>;
    			/* 中断引脚 */
    			interrupt-parent = <&gic>;
    			/* 中断触发方式 */
    			interrupts = <15 IRQ_TYPE_LEVEL_LOW>;
    			interrupt-controller;
    			#interrupt-cells = <2>;
    			/* Port口Port号和配置 */
    			ports {
    				#address-cells = <1>;
    				#size-cells = <0>;
    
    				port@0 {
    					/* prot口序号 */
    					reg = <1>;
    					/* port口名字 */
    					label = "lan0";
    					/* phy信息 */
    					phy-handle = <&switchphy0>;
    				};
    
    				port@1 {
    					reg = <2>;
    					label = "lan1";
    					phy-handle = <&switchphy1>;
    				};
    
    				port@2 {
    					reg = <3>;
    					label = "lan2";
    					phy-handle = <&switchphy5>;
    
    				};
    
    				port@3 {
    					reg = <4>;
    					label = "lan3";
    					phy-handle = <&switchphy3>;
    				};
    
    				port@4 {
    					reg = <5>;
    					label = "lan4";
    					phy-handle = <&switchphy4>;
    				};
    
    				switch_cpu: port@5 {
    					reg = <6>;
    					label = "cpu";
    					/* 需要和CPU模式匹配 */
    					phy-mode = "rgmii";
    					/*与 CPU GMAC 关联*/
    					ethernet = <&gmac0>;
    					/* Mac to Mac 需要设置固定的双工模式和速度 */
    					fixed-link {
    						speed = <1000>;
    						full-duplex;
    					};
    				};
    
    				port@6 {
    					reg = <7>;
    					label = "lan6";
    					phy-handle = <&switchphy6>;
    				};
    				
    			};
    
    			mdio {
    				#address-cells = <1>;
    				#size-cells = <0>;
    
    				switchphy0: switchphy@0 {
    					/* phy ID */
    					reg = <1>;
    					/* 中断优先级 */
    					interrupt-parent = <&marvell88ea6321>;
    					interrupts = <0 IRQ_TYPE_LEVEL_HIGH>;
    				};
    
    				switchphy1: switchphy@1 {
    					reg = <2>;
    					interrupt-parent = <&marvell88ea6321>;
    					interrupts = <1 IRQ_TYPE_LEVEL_HIGH>;
    				};
    
    				switchphy2: switchphy@2 {
    					reg = <3>;
    					interrupt-parent = <&marvell88ea6321>;
    					interrupts = <2 IRQ_TYPE_LEVEL_HIGH>;
    				};
    
    				switchphy3: switchphy@3 {
    					reg = <4>;
    					interrupt-parent = <&marvell88ea6321>;
    					interrupts = <3 IRQ_TYPE_LEVEL_HIGH>;
    				};
    
    				switchphy4: switchphy@4 {
    					reg = <5>;
    					interrupt-parent = <&marvell88ea6321>;
    					interrupts = <4 IRQ_TYPE_LEVEL_HIGH>;
    				};
    
    				switchphy5: switchphy@5 {
    					reg = <6>;
    					interrupt-parent = <&marvell88ea6321>;
    					interrupts = <5 IRQ_TYPE_LEVEL_HIGH>;
    				};
    
    				switchphy6: switchphy@6 {
    					reg = <7>;
    					interrupt-parent = <&marvell88ea6321>;
    					interrupts = <6 IRQ_TYPE_LEVEL_HIGH>;
    				};
    			};
    
    
    };
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131

    返回总目录

  • 相关阅读:
    基于Java的捐赠平台
    Vue3新增加的css语法糖
    【资源分享】官网imagent下载太慢?完整train、test、val资源分享
    Python爬虫异常处理实用技巧分享
    ImportError: DLL load failed with error code -1073741795
    Qt | windows Qt6.5.3安卓环境搭建成功版(保姆级教程)
    手撕Vue-数据驱动界面改变上
    遗失备份悲剧?迅软DSE来拯救,告诉你不备份的办公文件会带来怎样的下场!
    docker Cgroup资源控制
    「运维有小邓」SIEM解决方案数据安全分析组件
  • 原文地址:https://blog.csdn.net/DSMGUOGUO/article/details/126227554