Re: [PATCH/RFC] net: ravb: Add MII support for R-Car V4M

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Geert,

Thanks for your work.

On 2024-06-14 17:25:22 +0200, Geert Uytterhoeven wrote:
> All EtherAVB instances on R-Car Gen3/Gen4 SoCs support the RGMII
> interface.  In addition, the first two EtherAVB instances on R-Car V4M
> also support the MII interface, but this is not yet supported by the
> driver.
> 
> Add support for MII to the R-Car Gen3/Gen4-specific EMAC initialization
> function, by selecting the MII clock instead of the RGMII clock when the
> PHY interface is MII.  Note that all implementations of EtherAVB on
> R-Car Gen3/Gen4 SoCs have the APSR register, but only MII-capable
> instances are documented to have the MIISELECT bit, which has a
> documented value of zero when reserved.
> 
> Signed-off-by: Geert Uytterhoeven <geert+renesas@xxxxxxxxx>
> ---
> Compile-tested only, as all AVB interfaces on the Gray Hawk Single
> development board are connected to RGMII PHYs.
> No regressions on R-Car E3, H3, M3-W, M3-N, and V4H.

This would be interesting to test on a platform if we ever find one 
which uses MII. The change do match the docs.

Reviewed-by: Niklas Söderlund <niklas.soderlund+renesas@xxxxxxxxxxxx>

> ---
>  drivers/net/ethernet/renesas/ravb.h      |  1 +
>  drivers/net/ethernet/renesas/ravb_main.c | 12 +++++++++++-
>  2 files changed, 12 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/ethernet/renesas/ravb.h b/drivers/net/ethernet/renesas/ravb.h
> index 6b2444d31fcc3093..9893c91af1050fa1 100644
> --- a/drivers/net/ethernet/renesas/ravb.h
> +++ b/drivers/net/ethernet/renesas/ravb.h
> @@ -258,6 +258,7 @@ enum APSR_BIT {
>  	APSR_CMSW	= 0x00000010,
>  	APSR_RDM	= 0x00002000,
>  	APSR_TDM	= 0x00004000,
> +	APSR_MIISELECT	= 0x01000000,	/* R-Car V4M only */
>  };
>  
>  /* RCR */
> diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c
> index c1546b916e4ef581..cbe2709e0ace871f 100644
> --- a/drivers/net/ethernet/renesas/ravb_main.c
> +++ b/drivers/net/ethernet/renesas/ravb_main.c
> @@ -579,6 +579,16 @@ static void ravb_emac_init_rcar(struct net_device *ndev)
>  	ravb_write(ndev, ECSIPR_ICDIP | ECSIPR_MPDIP | ECSIPR_LCHNGIP, ECSIPR);
>  }
>  
> +static void ravb_emac_init_rcar_apsr(struct net_device *ndev)
> +{
> +	struct ravb_private *priv = netdev_priv(ndev);
> +	bool mii = priv->phy_interface == PHY_INTERFACE_MODE_MII;
> +
> +	ravb_modify(ndev, APSR, APSR_MIISELECT, mii ? APSR_MIISELECT : 0);
> +
> +	ravb_emac_init_rcar(ndev);
> +}
> +
>  /* E-MAC init function */
>  static void ravb_emac_init(struct net_device *ndev)
>  {
> @@ -2657,7 +2667,7 @@ static const struct ravb_hw_info ravb_gen3_hw_info = {
>  	.set_rate = ravb_set_rate_rcar,
>  	.set_feature = ravb_set_features_rcar,
>  	.dmac_init = ravb_dmac_init_rcar,
> -	.emac_init = ravb_emac_init_rcar,
> +	.emac_init = ravb_emac_init_rcar_apsr,
>  	.gstrings_stats = ravb_gstrings_stats,
>  	.gstrings_size = sizeof(ravb_gstrings_stats),
>  	.net_hw_features = NETIF_F_RXCSUM,
> -- 
> 2.34.1
> 

-- 
Kind Regards,
Niklas Söderlund




[Index of Archives]     [Linux Samsung SOC]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux