depuración de ethernet android

La depuración de Android Ethernet se divide principalmente en interfaces gmac y pcie. Los principales representantes son las series 8211 y 8111 de RealTek. Este artículo analiza principalmente el 8211 conectado a Gmac.

Por ejemplo, 8211F es el Phy conectado a GMAC, que se refleja en el diagrama esquemático, y 19-22 IO están todos conectados a GMAC del IC de control principal.

 Tenga en cuenta en la imagen de arriba que GMAC está conectado a GMAC 1. En general, rockchip 3568 tiene 2 conjuntos de interfaces GMAC, a saber, GMAC0 y GMAC1.

Ejemplo: usar GMAC1

 El GMAC0 no utilizado y el GMAC0 IO no utilizado se utilizan para otras funciones, aquí está la función de multiplexación de io.

 Siempre que observe el chip Ethernet, es decir, la interfaz que conecta el PHY y el control principal es la única.

El diagrama esquemático que se muestra a continuación es para su atención 1 control de encendido 2 control de reinicio 3 otros controles

1 La parte de la fuente de alimentación debe activar LAN_WAKE_EN_N para que 8211 pueda suministrar energía, este paso es muy importante.

 2 Acerca del reinicio Muchos circuitos integrados necesitan realizar una acción de reinicio antes de que puedan funcionar normalmente cuando se encienden, y este paso también es muy importante.

El esquema que se muestra aquí es altamente efectivo y el valor predeterminado es bajo

Configuración DTS:

La razón por la que se describe el diagrama esquemático anterior es para configurar en DTS. El puerto mencionado en la descripción anterior es GMAC1, controles de alimentación IO y controles de reinicio IO

En DTS, snps, reset-gpio complete los pines correspondientes para el reinicio IO. El poder del IC se realizará por sí mismo de acuerdo con la diferencia en el diagrama esquemático. El diagrama esquemático predeterminado no tiene este control. Si escribe un controlador usted mismo, activará el IO cuando esté encendido.

&gmac1 {
	phy-mode = "rgmii";
	clock_in_out = "input";

	snps,reset-gpio = <&gpio3 RK_PA5 GPIO_ACTIVE_LOW>;
	snps,reset-active-high;
	/* Reset time is 20ms, 100ms for rtl8211f */
	snps,reset-delays-us = <0 20000 100000>;

	assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>;
	assigned-clock-parents =  <&cru SCLK_GMAC1_RGMII_SPEED>, <&gmac1_clkin>;
	
	pinctrl-names = "default";
	pinctrl-0 = <&gmac1m1_miim
                    &gmac1m1_tx_bus2
                    &gmac1m1_rx_bus2
                    &gmac1m1_rgmii_clk
                    &gmac1m1_rgmii_bus
                    &gmac1m1_clkinout>;
//8211
	tx_delay = <0x63>;
	rx_delay = <0x31>;
	
	phy-handle = <&rgmii_phy1>;
	status = "okay";
};
&gmac {
	phy-supply = <&vcc_phy>; ---PHY 供电由&vcc_phy 提供,见后续说明
	phy-mode = "rgmii"; --- rgmii 或 rmii, pinctrl-0 字段必须与此字段相匹配
	clock_in_out = "input"; --- input: 时钟由 PHY 输入给 MAC,output: 与 input 相反
	snps,reset-gpio = <&gpio2 15 GPIO_ACTIVE_LOW>; ---用于复位 PHY 的 GPIO
	snps,reset-active-low; ---复位 PHY 的GPIO 低有效
	snps,reset-delays-us = <0 10000 50000>; ---表示复位PHY 前的延时为 0ms,拉低维持的时间为 10ms, 拉高后延时 50ms
	assigned-clocks = <&cru SCLK_MAC>; ---MAC 的时钟源
	assigned-clock-parents = <&ext_gmac>; ---MAC 父时钟由&ext_gmac 提供,见后续说明
	pinctrl-names = "default";
	pinctrl-0 = <&rgmii_pins>; ---设为&rgmii_pins 或&rmii_pins, 必须和 phy-mode 字段匹配

	
	tx_delay = <0x30>;
	rx_delay = <0x10>;
	status = "okay";
	};

Aquí nos centraremos en algunas configuraciones de multiplexación de E/S de gmac1m1_miim bajo pinctrl 0. En general, primero observamos el diagrama esquemático, que es el que está conectado al control principal, como se muestra en el GMAC1 anterior. 

GPIO3_D6 ~ GPIO4_B1 son parte de GMAC1, abiertos en kernel\arch\arm64\boot\dts\rockchip

rk3568-pinctrl.dtsi Ver 3 RK_PD6 encontrados aquí en gmac1:

gmac1 {
		/omit-if-no-ref/
		gmac1m0_miim: gmac1m0-miim {
			rockchip,pins =
				/* gmac1_mdcm0 */
				<3 RK_PC4 3 &pcfg_pull_none>,
				/* gmac1_mdiom0 */
				<3 RK_PC5 3 &pcfg_pull_none>;
		};

		/omit-if-no-ref/
		gmac1m0_clkinout: gmac1m0-clkinout {
			rockchip,pins =
				/* gmac1_mclkinoutm0 */
				<3 RK_PC0 3 &pcfg_pull_none>;
		};

		/omit-if-no-ref/
		gmac1m0_rx_er: gmac1m0-rx-er {
			rockchip,pins =
				/* gmac1_rxerm0 */
				<3 RK_PB4 3 &pcfg_pull_none>;
		};

		/omit-if-no-ref/
		gmac1m0_rx_bus2: gmac1m0-rx-bus2 {
			rockchip,pins =
				/* gmac1_rxd0m0 */
				<3 RK_PB1 3 &pcfg_pull_none>,
				/* gmac1_rxd1m0 */
				<3 RK_PB2 3 &pcfg_pull_none>,
				/* gmac1_rxdvcrsm0 */
				<3 RK_PB3 3 &pcfg_pull_none>;
		};

		/omit-if-no-ref/
		gmac1m0_tx_bus2: gmac1m0-tx-bus2 {
			rockchip,pins =
				/* gmac1_txd0m0 */
				<3 RK_PB5 3 &pcfg_pull_none_drv_level_2>,
				/* gmac1_txd1m0 */
				<3 RK_PB6 3 &pcfg_pull_none_drv_level_2>,
				/* gmac1_txenm0 */
				<3 RK_PB7 3 &pcfg_pull_none>;
		};

		/omit-if-no-ref/
		gmac1m0_rgmii_clk: gmac1m0-rgmii-clk {
			rockchip,pins =
				/* gmac1_rxclkm0 */
				<3 RK_PA7 3 &pcfg_pull_none>,
				/* gmac1_txclkm0 */
				<3 RK_PA6 3 &pcfg_pull_none_drv_level_1>;
		};

		/omit-if-no-ref/
		gmac1m0_rgmii_bus: gmac1m0-rgmii-bus {
			rockchip,pins =
				/* gmac1_rxd2m0 */
				<3 RK_PA4 3 &pcfg_pull_none>,
				/* gmac1_rxd3m0 */
				<3 RK_PA5 3 &pcfg_pull_none>,
				/* gmac1_txd2m0 */
				<3 RK_PA2 3 &pcfg_pull_none_drv_level_2>,
				/* gmac1_txd3m0 */
				<3 RK_PA3 3 &pcfg_pull_none_drv_level_2>;
		};

		/omit-if-no-ref/
		gmac1m1_miim: gmac1m1-miim {
			rockchip,pins =
				/* gmac1_mdcm1 */
				<4 RK_PB6 3 &pcfg_pull_none>,
				/* gmac1_mdiom1 */
				<4 RK_PB7 3 &pcfg_pull_none>;
		};

		/omit-if-no-ref/
		gmac1m1_clkinout: gmac1m1-clkinout {
			rockchip,pins =
				/* gmac1_mclkinoutm1 */
				<4 RK_PC1 3 &pcfg_pull_none>;
		};

		/omit-if-no-ref/
		gmac1m1_rx_er: gmac1m1-rx-er {
			rockchip,pins =
				/* gmac1_rxerm1 */
				<4 RK_PB2 3 &pcfg_pull_none>;
		};

		/omit-if-no-ref/
		gmac1m1_rx_bus2: gmac1m1-rx-bus2 {
			rockchip,pins =
				/* gmac1_rxd0m1 */
				<4 RK_PA7 3 &pcfg_pull_none>,
				/* gmac1_rxd1m1 */
				<4 RK_PB0 3 &pcfg_pull_none>,
				/* gmac1_rxdvcrsm1 */
				<4 RK_PB1 3 &pcfg_pull_none>;
		};

		/omit-if-no-ref/
		gmac1m1_tx_bus2: gmac1m1-tx-bus2 {
			rockchip,pins =
				/* gmac1_txd0m1 */
				<4 RK_PA4 3 &pcfg_pull_none_drv_level_2>,
				/* gmac1_txd1m1 */
				<4 RK_PA5 3 &pcfg_pull_none_drv_level_2>,
				/* gmac1_txenm1 */
				<4 RK_PA6 3 &pcfg_pull_none>;
		};

		/omit-if-no-ref/
		gmac1m1_rgmii_clk: gmac1m1-rgmii-clk {
			rockchip,pins =
				/* gmac1_rxclkm1 */
				<4 RK_PA3 3 &pcfg_pull_none>,
				/* gmac1_txclkm1 */
				<4 RK_PA0 3 &pcfg_pull_none_drv_level_1>;
		};

		/omit-if-no-ref/
		gmac1m1_rgmii_bus: gmac1m1-rgmii-bus {
			rockchip,pins =
				/* gmac1_rxd2m1 */
				<4 RK_PA1 3 &pcfg_pull_none>,
				/* gmac1_rxd3m1 */
				<4 RK_PA2 3 &pcfg_pull_none>,
				/* gmac1_txd2m1 */
				<3 RK_PD6 3 &pcfg_pull_none_drv_level_2>,
				/* gmac1_txd3m1 */
				<3 RK_PD7 3 &pcfg_pull_none_drv_level_2>;
		};
	};

El último gmac1m1_rgmii_bus contiene 3 RK_PD6 y 3 RK_PD7 4 RK_PA1 4 RK_PA2. Estos 3 IO están todos dentro del alcance del diagrama esquemático. Los IO correspondientes se pueden encontrar en gmac1m1_xxx. Luego complete el gmac1m1_xxx correspondiente en DTS

La prueba tx_delay rx_delay puede hacer referencia a Rockchip_Developer_Guide_Linux_GMAC_RGMII_Delayline_CN.pdf

Busque phy_lb_scan y ejecute echo 1000 > phy_lb_scan para obtener el valor correspondiente.

Todo lo anterior es fluido y Ethernet puede funcionar. Aquí hay algunos casos especiales:

1 Una vez completada la configuración, no se puede usar Ethernet después del arranque. El hardware de medición encontró que el reinicio de E/S siempre es alto. Al verificar el registro, se encontró que el reinicio de E/S ha sido utilizado por otros lugares, y es normal después de quitarlo.

2 modo rgmii-rxid

Cuando el hardware habilita el retraso RX del PHY, como RTL8211F

 Es necesario desactivar el retardo de RX del maestro, y el modo de configuración de dts pasa a ser "rgmii-rxid", por ejemplo

&gmac0 {
/* Use rgmii-rxid mode to disable rx delay inside Soc */
phy-mode = "rgmii-rxid";
clock_in_out = "output";
......
tx_delay = <0x43>;
/* rx_delay = <0x42>; */
phy-handle = <&rgmii_phy>;
status = "okay";
}

Supongo que te gusta

Origin blog.csdn.net/m0_56343264/article/details/131420814
Recomendado
Clasificación