• 周五. 5月 2nd, 2025

rk3288 — gmac dts配置

3月 21, 2020

关键词:rk3288; 以太网;rockchip,px30-gmac;rockchip,rk3128-gmac;rockchip,rk3228-gmac;rockchip,rk3288-gmac;rockchip,rk3308-mac;rockchip,rk3328-gmac;rockchip,rk3366-gmac;rockchip,rk3368-gmac;rockchip,rk3399-gmac;rockchip,rv1108-gmac;

rk3288 — gmac dts配置

1、GMAC简介

GMAC (Rockchip SoC RK3288 10/100/1000 Ethernet driver),即指10/100/1000以太网;

2、属性值配置:

 - compatible: 可以配置成:"rockchip,<name>-gmac" or "rockchip,<name>-mac"
   "rockchip,px30-gmac": found on PX30 SoCs
   "rockchip,rk3128-gmac": found on RK312x SoCs
   "rockchip,rk3228-gmac": found on RK322x SoCs
   "rockchip,rk3288-gmac": found on RK3288 SoCs
   "rockchip,rk3308-mac":  found on RK3308 SoCs
   "rockchip,rk3328-gmac": found on RK3328 SoCs
   "rockchip,rk3366-gmac": found on RK3366 SoCs
   "rockchip,rk3368-gmac": found on RK3368 SoCs
   "rockchip,rk3399-gmac": found on RK3399 SoCs
   "rockchip,rv1108-gmac": found on RV1108 SoCs
 - reg: 配置gmac的物理基地址,以及寄存器的空间大小;
 - interrupts: 配置gmac的中断号;
 - interrupt-names: 配置中断的名称:"macirq".
 - rockchip,grf: 指定grf,用于配置速度和模式;
 - clocks: <&cru SCLK_MAC>: 配置主时钟,该时钟可以从PLL获取,也可以从外部PHY获取;
	   <&cru SCLK_MAC_PLL>: PLL clock for SCLK_MAC
	   <&cru SCLK_MAC_RX>: clock gate for RX
	   <&cru SCLK_MAC_TX>: clock gate for TX
	   <&cru SCLK_MACREF>: clock gate for RMII referce clock
	   <&cru SCLK_MACREF_OUT> clock gate for RMII reference clock output
	   <&cru ACLK_GMAC>: AXI clock gate for GMAC
	   <&cru PCLK_GMAC>: APB clock gate for GMAC
 - clock-names: 配置时钟的名称;
 - phy-mode: 配置phy的模式;
 - pinctrl-names: 配置pinctrl的名称;
 - pinctrl-0: pinctrl配置成 <&rgmii_pins> or <&rmii_pins>.
 - clock_in_out: 选择时钟,对于 RGMII, 必须配置成 "input", 代表主时钟为(125MHz)
   该时钟不是由芯片PLL提供,而是由外部PHY提供; 对于 RMII, "input" 代表时钟(50MHz)由于PHY提供时钟;如果为output代表GMAC提供时钟;
 - snps,reset-gpio       配置phy复位的gpio脚.
 - snps,reset-active-low 配置该值,说明低电平触发phy复位;
 - assigned-clocks: 主时钟,配置成 <&cru SCLK_MAC>;
 - assigned-clock-parents  主时钟的parent时钟,可以是<&ext_gmac> 或者 <&cru SCLK_MAC_PLL>.
 - tx_delay: TXD timing 延迟值,取值范围0-0x7F,0x30是默认值;
 - rx_delay: RXD timing 延迟值,取值范围0-0x7F,0x10是默认值;
 - phy-supply: 配置phy的电源;

3、以rk3288为例:

Example:

gmac: ethernet@ff290000 {
	compatible = "rockchip,rk3288-gmac";
	reg = <0xff290000 0x10000>;
	interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
	interrupt-names = "macirq";
	rockchip,grf = <&grf>;
	clocks = <&cru SCLK_MAC>,
		<&cru SCLK_MAC_RX>, <&cru SCLK_MAC_TX>,
		<&cru SCLK_MACREF>, <&cru SCLK_MACREF_OUT>,
		<&cru ACLK_GMAC>, <&cru PCLK_GMAC>;
	clock-names = "stmmaceth",
		"mac_clk_rx", "mac_clk_tx",
		"clk_mac_ref", "clk_mac_refout",
		"aclk_mac", "pclk_mac";
	phy-mode = "rgmii";
	pinctrl-names = "default";
	pinctrl-0 = <&rgmii_pins /*&rmii_pins*/>;

	clock_in_out = "input";
	snps,reset-gpio = <&gpio4 7 0>;
	snps,reset-active-low;

	assigned-clocks = <&cru SCLK_MAC>;
	assigned-clock-parents = <&ext_gmac>;
	tx_delay = <0x30>;
	rx_delay = <0x10>;

	status = "ok";
};