On 05/18/2018 09:32 PM, Sergei Shtylyov wrote:

> Finally, add support for the DT probing of the R-Car V3H (AKA R8A77980) --
> it's the only R-Car gen3 SoC having the GEther controller -- others have
> only EtherAVB...
> 
> Based on the original (and large) patch by Vladimir Barinov.
> 
> Signed-off-by: Vladimir Barinov <vladimir.bari...@cogentembedded.com>
> Signed-off-by: Sergei Shtylyov <sergei.shtyl...@cogentembedded.com>
> Reviewed-by: Simon Horman <horms+rene...@verge.net.au>
> 
[...]
> Index: net-next/drivers/net/ethernet/renesas/sh_eth.c
> ===================================================================
> --- net-next.orig/drivers/net/ethernet/renesas/sh_eth.c
> +++ net-next/drivers/net/ethernet/renesas/sh_eth.c
> @@ -753,6 +753,49 @@ static struct sh_eth_cpu_data rcar_gen2_
>       .rmiimode       = 1,
>       .magic          = 1,
>  };
> +
> +/* R8A77980 */
> +static struct sh_eth_cpu_data r8a77980_data = {
> +     .soft_reset     = sh_eth_soft_reset_gether,
> +
> +     .set_duplex     = sh_eth_set_duplex,
> +     .set_rate       = sh_eth_set_rate_gether,
> +
> +     .register_type  = SH_ETH_REG_GIGABIT,
> +
> +     .edtrr_trns     = EDTRR_TRNS_GETHER,
> +     .ecsr_value     = ECSR_PSRTO | ECSR_LCHNG | ECSR_ICD | ECSR_MPD,
> +     .ecsipr_value   = ECSIPR_PSRTOIP | ECSIPR_LCHNGIP | ECSIPR_ICDIP |
> +                       ECSIPR_MPDIP,
> +     .eesipr_value   = EESIPR_RFCOFIP | EESIPR_ECIIP |
> +                       EESIPR_FTCIP | EESIPR_TDEIP | EESIPR_TFUFIP |
> +                       EESIPR_FRIP | EESIPR_RDEIP | EESIPR_RFOFIP |
> +                       EESIPR_RMAFIP | EESIPR_RRFIP |
> +                       EESIPR_RTLFIP | EESIPR_RTSFIP |
> +                       EESIPR_PREIP | EESIPR_CERFIP,
> +
> +     .tx_check       = EESR_FTC | EESR_CD | EESR_RTO,
> +     .eesr_err_check = EESR_TWB1 | EESR_TWB | EESR_TABT | EESR_RABT |
> +                       EESR_RFE | EESR_RDE | EESR_RFRMER |
> +                       EESR_TFE | EESR_TDE | EESR_ECI,
> +     .fdr_value      = 0x0000070f,
> +
> +     .apr            = 1,
> +     .mpr            = 1,
> +     .tpauser        = 1,
> +     .bculr          = 1,
> +     .hw_swap        = 1,
> +     .nbst           = 1,
> +     .rpadir         = 1,
> +     .rpadir_value   = 2 << 16,
> +     .no_trimd       = 1,
> +     .no_ade         = 1,
> +     .xdfar_rw       = 1,
> +     .hw_checksum    = 1,

   Ugh, the "intelligent" checksum is not actually supported, just a simplistic
checksum (from byte 14). I'll send a fix.

> +     .select_mii     = 1,
> +     .magic          = 1,
> +     .cexcr          = 1,
> +};
>  #endif /* CONFIG_OF */
>  
>  static void sh_eth_set_rate_sh7724(struct net_device *ndev)
[...]

MBR, Sergei

Reply via email to