[PATCH 1/2] net: ravb: Add tx/rx delay flag checks and support for rgmii-rxid

Marek Vasut marex at denx.de
Mon Feb 21 00:58:32 CET 2022


On 2/20/22 22:45, Adam Ford wrote:

Hi,

[...]

> @@ -376,6 +377,8 @@ static int ravb_dmac_init(struct udevice *dev)
>   	struct ravb_priv *eth = dev_get_priv(dev);
>   	struct eth_pdata *pdata = dev_get_plat(dev);
>   	int ret = 0;
> +	int mode = 0;
> +	unsigned int delay;
>   
>   	/* Set CONFIG mode */
>   	ret = ravb_reset(dev);
> @@ -402,9 +405,25 @@ static int ravb_dmac_init(struct udevice *dev)
>   	    (rmobile_get_cpu_type() == RMOBILE_CPU_TYPE_R8A77995))
>   		return 0;
>   
> -	if ((pdata->phy_interface == PHY_INTERFACE_MODE_RGMII_ID) ||
> -	    (pdata->phy_interface == PHY_INTERFACE_MODE_RGMII_TXID))
> -		writel(APSR_TDM, eth->iobase + RAVB_REG_APSR);
> +	if (!dev_read_u32(dev, "tx-internal-delay-ps", &delay)) {
> +		if (delay)
> +			mode |= APSR_TDM;
> +	}
> +
> +	if (!dev_read_u32(dev, "rx-internal-delay-ps", &delay)) {
> +		if (delay)
> +			mode |= APSR_RDM;
> +	}

Are these two conditionals above really needed ?

Isn't it enough to set the PHY mode to rgmii-NNN like it is checked below ?

> +	if (pdata->phy_interface == PHY_INTERFACE_MODE_RGMII_ID ||
> +	    pdata->phy_interface == PHY_INTERFACE_MODE_RGMII_RXID)
> +		mode |= APSR_RDM;
> +
> +	if (pdata->phy_interface == PHY_INTERFACE_MODE_RGMII_ID ||
> +	    pdata->phy_interface == PHY_INTERFACE_MODE_RGMII_TXID)
> +		mode |= APSR_TDM;
> +
> +	writel(mode, eth->iobase + RAVB_REG_APSR);
>   
>   	return 0;
>   }

[...]


More information about the U-Boot mailing list