RE: [PATCH 7/9] ravb: Add support for RZ/V2M

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

 



Hi Sergey,

On 05 May 2022 21:18 Sergey Shtylyov wrote:
> On 5/4/22 5:54 PM, Phil Edworthy wrote:
> 
> > RZ/V2M Ethernet is very similar to R-Car Gen3 Ethernet-AVB, though
> > some small parts are the same as R-Car Gen2.
> 
>    You mean the absence of the interrupt enable/disable registers?
> 
> > Other differences are:
> 
>    Differences to gen3, you mean?
Differences to both gen3 and gen2.

 
> > * It has separate data (DI), error (Line 1) and management (Line 2) irqs
> >   rather than one irq for all three.
> > * Instead of using the High-speed peripheral bus clock for gPTP, it has
> a
> >   separate gPTP reference clock.
> >
> > Signed-off-by: Phil Edworthy <phil.edworthy@xxxxxxxxxxx>
> > Reviewed-by: Biju Das <biju.das.jz@xxxxxxxxxxxxxx>
> > ---
> > Note: gPTP was tested using an RZ/V2M EVK and an R-Car M3N Salvator-XS
> > board, connected with a Summit X440 AVB switch, using ptp4l.
> 
>    Oh, that's good! :-)
btw, you should be able to test gPTP without an AVB switch if you connect
the boards directly. I haven't tried it as I'm using rootfs over NFS on
the rz/v2m board.

For ptp4l, I had to create a config file that increases tx_timestamp_timeout
on the rzv2m board:
  echo "[global]" > ptp.cfg
  echo "tx_timestamp_timeout    100" >> ptp.cfg
This increases the timeout waiting for the tx time stamp to 100ms, which is
excessive and it would likely work with 2ms. The default is 1ms.

Rcar gen3 didn’t need this config file, but it has a more powerful processor.
Though whilst familiarising myself with ptp4l I had some debug code in the
driver and that was enough for rcar to also need this config change.

Then just run ptp4l on both sides:
  ptp4l -i eth0 -m -f ./ptp.cfg


> > ---
> >  drivers/net/ethernet/renesas/ravb_main.c | 27 ++++++++++++++++++++++++
> >  1 file changed, 27 insertions(+)
> >
> > diff --git a/drivers/net/ethernet/renesas/ravb_main.c
> b/drivers/net/ethernet/renesas/ravb_main.c
> > index ded87cb51650..03b127faf52f 100644
> > --- a/drivers/net/ethernet/renesas/ravb_main.c
> > +++ b/drivers/net/ethernet/renesas/ravb_main.c
> > @@ -2461,6 +2461,32 @@ static const struct ravb_hw_info
> ravb_gen2_hw_info = {
> >  	.magic_pkt = 1,
> >  };
> >
> > +static const struct ravb_hw_info ravb_rzv2m_hw_info = {
> > +	.rx_ring_free = ravb_rx_ring_free_rcar,
> > +	.rx_ring_format = ravb_rx_ring_format_rcar,
> > +	.alloc_rx_desc = ravb_alloc_rx_desc_rcar,
> > +	.receive = ravb_rx_rcar,
> > +	.set_rate = ravb_set_rate_rcar,
> > +	.set_feature = ravb_set_features_rcar,
> > +	.dmac_init = ravb_dmac_init_rcar,
> > +	.emac_init = ravb_emac_init_rcar,
> > +	.gstrings_stats = ravb_gstrings_stats,
> > +	.gstrings_size = sizeof(ravb_gstrings_stats),
> > +	.net_hw_features = NETIF_F_RXCSUM,
> > +	.net_features = NETIF_F_RXCSUM,
> > +	.stats_len = ARRAY_SIZE(ravb_gstrings_stats),
> > +	.max_rx_len = RX_BUF_SZ + RAVB_ALIGN - 1,
> > +	.tccr_mask = TCCR_TSRQ0 | TCCR_TSRQ1 | TCCR_TSRQ2 | TCCR_TSRQ3,
> > +	.rx_max_buf_size = SZ_2K,
> 
>    What about .internal_delay and .tx_counters?
rz/v2m doesn't have the APSR reg, so .internal_delay = 0, and doesn't
have the TROCR reg, so .tx_counters = 0


> > +	.multi_irqs = 1,
> > +	.err_mgmt_irqs = 1,
> > +	.gptp = 1,
> 
>    Not .ccc_gac?
Nope, not on this device.

Thanks
Phil




[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