OpenCloudOS-Kernel/drivers/net/dsa
Vladimir Oltean 747e5eb31d net: dsa: sja1105: configure the PTP_CLK pin as EXT_TS or PER_OUT
The SJA1105 switch family has a PTP_CLK pin which emits a signal with
fixed 50% duty cycle, but variable frequency and programmable start time.

On the second generation (P/Q/R/S) switches, this pin supports even more
functionality. The use case described by the hardware documents talks
about synchronization via oneshot pulses: given 2 sja1105 switches,
arbitrarily designated as a master and a slave, the master emits a
single pulse on PTP_CLK, while the slave is configured to timestamp this
pulse received on its PTP_CLK pin (which must obviously be configured as
input). The difference between the timestamps then exactly becomes the
slave offset to the master.

The only trouble with the above is that the hardware is very much tied
into this use case only, and not very generic beyond that:
 - When emitting a oneshot pulse, instead of being told when to emit it,
   the switch just does it "now" and tells you later what time it was,
   via the PTPSYNCTS register. [ Incidentally, this is the same register
   that the slave uses to collect the ext_ts timestamp from, too. ]
 - On the sync slave, there is no interrupt mechanism on reception of a
   new extts, and no FIFO to buffer them, because in the foreseen use
   case, software is in control of both the master and the slave pins,
   so it "knows" when there's something to collect.

These 2 problems mean that:
 - We don't support (at least yet) the quirky oneshot mode exposed by
   the hardware, just normal periodic output.
 - We abuse the hardware a little bit when we expose generic extts.
   Because there's no interrupt mechanism, we need to poll at double the
   frequency we expect to receive a pulse. Currently that means a
   non-configurable "twice a second".

Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Acked-by: Richard Cochran <richardcochran@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2020-03-23 22:15:07 -07:00
..
b53 net: dsa: propagate resolved link config via mac_link_up() 2020-02-27 12:02:14 -08:00
microchip net: dsa: microchip: use delayed_work instead of timer + work 2020-03-10 16:10:19 -07:00
mv88e6xxx net: dsa: mv88e6xxx: use PHY_DETECT in mac_link_up/mac_link_down 2020-03-15 17:11:12 -07:00
ocelot net: dsa: felix: Allow unknown unicast traffic towards the CPU port module 2020-03-04 14:19:01 -08:00
qca net: dsa: propagate resolved link config via mac_link_up() 2020-02-27 12:02:14 -08:00
sja1105 net: dsa: sja1105: configure the PTP_CLK pin as EXT_TS or PER_OUT 2020-03-23 22:15:07 -07:00
Kconfig net: dsa: vsc73xx: Remove dependency on CONFIG_OF 2020-01-05 14:23:48 -08:00
Makefile net: dsa: add support for Atheros AR9331 built-in switch 2019-12-20 17:05:47 -08:00
bcm_sf2.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2020-02-27 18:31:39 -08:00
bcm_sf2.h net: dsa: bcm_sf2: Add support for optional reset controller line 2019-11-05 18:06:38 -08:00
bcm_sf2_cfp.c net: dsa: bcm_sf2: Fix IP fragment location and behavior 2019-12-24 16:08:49 -08:00
bcm_sf2_regs.h Revert "net: dsa: bcm_sf2: Also configure Port 5 for 2Gb/sec on 7278" 2020-02-26 16:33:35 -08:00
dsa_loop.c net: dsa: Get information about stacked DSA protocol 2020-01-08 16:01:13 -08:00
dsa_loop.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
dsa_loop_bdinfo.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
lan9303-core.c net: dsa: Get information about stacked DSA protocol 2020-01-08 16:01:13 -08:00
lan9303.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-11-04 09:26:51 +09:00
lan9303_i2c.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
lan9303_mdio.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
lantiq_gswip.c net: dsa: propagate resolved link config via mac_link_up() 2020-02-27 12:02:14 -08:00
lantiq_pce.h net: dsa: Use the correct style for SPDX License Identifier 2019-09-22 15:25:08 -07:00
mt7530.c net: dsa: mt7530: add support for port mirroring 2020-03-09 19:25:04 -07:00
mt7530.h net: dsa: mt7530: fix macro MIRROR_PORT 2020-03-10 16:12:54 -07:00
mv88e6060.c net: dsa: Get information about stacked DSA protocol 2020-01-08 16:01:13 -08:00
mv88e6060.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
qca8k.c net: dsa: Get information about stacked DSA protocol 2020-01-08 16:01:13 -08:00
qca8k.h net: dsa: qca8k: introduce reset via gpio feature 2019-06-27 11:17:30 -07:00
realtek-smi-core.c net: dsa: remove dsa_switch_alloc helper 2019-10-22 12:37:07 -07:00
realtek-smi-core.h net: dsa: fix warning same module names 2019-06-14 19:28:54 -07:00
rtl8366.c net: dsa: rtl8366: Check VLAN ID and not ports 2019-10-02 12:09:23 -04:00
rtl8366rb.c net: dsa: Get information about stacked DSA protocol 2020-01-08 16:01:13 -08:00
vitesse-vsc73xx-core.c net: dsa: Get information about stacked DSA protocol 2020-01-08 16:01:13 -08:00
vitesse-vsc73xx-platform.c net: dsa: vsc73xx: add support for parallel mode 2019-07-07 14:16:32 -07:00
vitesse-vsc73xx-spi.c net: dsa: vsc73xx: Split vsc73xx driver 2019-07-07 14:16:32 -07:00
vitesse-vsc73xx.h net: dsa: vsc73xx: Split vsc73xx driver 2019-07-07 14:16:32 -07:00