net: dsa: sja1105: allow RX timestamps to be taken on all ports for SJA1110
authorVladimir Oltean <vladimir.oltean@nxp.com>
Fri, 11 Jun 2021 19:01:23 +0000 (22:01 +0300)
committerDavid S. Miller <davem@davemloft.net>
Fri, 11 Jun 2021 19:45:38 +0000 (12:45 -0700)
commit6c0de59b3d735f4c8c704dae30db540204b496ec
treeb819cc22d92ed63d1b3662d517adf8ca17ee992d
parent29305260d29ec4ed9a657af818f2744a6ee09913
net: dsa: sja1105: allow RX timestamps to be taken on all ports for SJA1110

On SJA1105, there is support for a cascade port which is presumably
connected to a downstream SJA1105 switch. The upstream one does not take
PTP timestamps for packets received on this port, presumably because the
downstream switch already did (and for PTP, it only makes sense for the
leaf nodes in a DSA switch tree to do that).

I haven't been able to validate that feature in a fully assembled setup,
so I am disabling the feature by setting the cascade port to an unused
port value (ds->num_ports).

In SJA1110, multiple cascade ports are supported, and CASC_PORT became
a bit mask from a port number. So when CASC_PORT is set to ds->num_ports
(which is 11 on SJA1110), it is actually set to 0b1011, so ports 3, 1
and 0 are configured as cascade ports and we cannot take RX timestamps
on them.

So we need to introduce a check for SJA1110 and set things differently
(to zero there), so that the cascading feature is properly disabled and
RX timestamps can be taken on all ports.

Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/dsa/sja1105/sja1105.h
drivers/net/dsa/sja1105/sja1105_main.c
drivers/net/dsa/sja1105/sja1105_spi.c