[U-Boot] [PATCH] net: ravb: Avoid unsupported internal delay mode for R-Car E3/D3

Joe Hershberger joe.hershberger at ni.com
Thu May 9 18:56:08 UTC 2019


On Wed, May 1, 2019 at 5:36 PM Marek Vasut <marek.vasut at gmail.com> wrote:
>
> According to the R-Car Gen3 Hardware Manual Rev 1.50 of Nov 30, 2018, the
> TX clock internal delay mode isn't supported on R-Car E3 (r8a77990) or D3
> (r8a77995).
>
> Avoid setting the APSR:TDM bit on these SoCs. Moreover, only set APSR:TDM
> when the DT explicitly specifies RGMII ID or TXID mode instead of setting
> it unconditionally when the PHY link speed is 1000 Mbit/s.

We just ran into an issue with a very similar patch.  It blocked my
tree being merged for a few months. Finally got to the bottom of it.
https://patchwork.ozlabs.org/patch/1096572/

Are you sure there are no boards depending on the broken DT, like the
335-evm was?

>
> Signed-off-by: Marek Vasut <marek.vasut+renesas at gmail.com>
> Cc: Nobuhiro Iwamatsu <iwamatsu at nigauri.org>
> Cc: Joe Hershberger <joe.hershberger at ni.com>
> ---
>  drivers/net/ravb.c | 13 ++++++++++---
>  1 file changed, 10 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/ravb.c b/drivers/net/ravb.c
> index 749562db96..11abe5e0c9 100644
> --- a/drivers/net/ravb.c
> +++ b/drivers/net/ravb.c
> @@ -46,6 +46,8 @@
>  #define CSR_OPS                        0x0000000F
>  #define CSR_OPS_CONFIG         BIT(1)
>
> +#define APSR_TDM               BIT(14)
> +
>  #define TCCR_TSRQ0             BIT(0)
>
>  #define RFLR_RFL_MIN           0x05EE
> @@ -389,9 +391,14 @@ static int ravb_dmac_init(struct udevice *dev)
>         /* FIFO size set */
>         writel(0x00222210, eth->iobase + RAVB_REG_TGC);
>
> -       /* Delay CLK: 2ns */
> -       if (pdata->max_speed == 1000)
> -               writel(BIT(14), eth->iobase + RAVB_REG_APSR);
> +       /* Delay CLK: 2ns (not applicable on R-Car E3/D3) */
> +       if ((rmobile_get_cpu_type() == RMOBILE_CPU_TYPE_R8A77990) ||
> +           (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);
>
>         return 0;
>  }
> --
> 2.20.1
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> https://lists.denx.de/listinfo/u-boot


More information about the U-Boot mailing list