FEC phyless RMII operation ... timing adjustment

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

FEC phyless RMII operation ... timing adjustment

217 次查看
peterva
NXP Employee
NXP Employee

Customer needs to understand if there are design guidelines for Rx/Tx timing when doing layout of Ethernet traces between i.MX8MPlus and an FPGA.

Q1) Is timing configurable via ENET regs ?

Research :
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/Documentation/devicetree/bindi... shows the following device tree bindings :

tx-internal-delay-ps:
enum: [0, 2000]

rx-internal-delay-ps:
enum: [0, 2000]

Checking the driver https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/net/ethernet/freescale... shows that this property applies to RGMII ... it is not clear if this also applies to RMIII ?

static int fec_enet_parse_rgmii_delay(struct fec_enet_private *fep,
				      struct device_node *np)
{
	u32 rgmii_tx_delay, rgmii_rx_delay;

	/* For rgmii tx internal delay, valid values are 0ps and 2000ps */
	if (!of_property_read_u32(np, "tx-internal-delay-ps", &rgmii_tx_delay)) {
		if (rgmii_tx_delay != 0 && rgmii_tx_delay != 2000) {
			dev_err(&fep->pdev->dev, "The only allowed RGMII TX delay values are: 0ps, 2000ps");
			return -EINVAL;
		} else if (rgmii_tx_delay == 2000) {
			fep->rgmii_txc_dly = true;
		}
	}

	/* For rgmii rx internal delay, valid values are 0ps and 2000ps */
	if (!of_property_read_u32(np, "rx-internal-delay-ps", &rgmii_rx_delay)) {
		if (rgmii_rx_delay != 0 && rgmii_rx_delay != 2000) {
			dev_err(&fep->pdev->dev, "The only allowed RGMII RX delay values are: 0ps, 2000ps");
			return -EINVAL;
		} else if (rgmii_rx_delay == 2000) {
			fep->rgmii_rxc_dly = true;
		}
	}

	return 0;
}

 

标签 (1)
0 项奖励
0 回复数