net: dsa: hellcreek: Add PTP clock support
authorKamil Alkhouri <kamil.alkhouri@hs-offenburg.de>
Tue, 3 Nov 2020 07:10:57 +0000 (08:10 +0100)
committerJakub Kicinski <kuba@kernel.org>
Thu, 5 Nov 2020 22:04:49 +0000 (14:04 -0800)
commitddd56dfe52c987d82964595902db0600970ef406
treec43cf4c971655fbd125b355d1d7140f43f098f46
parente4b27ebc780fa7fa951d81d241912755532568ff
net: dsa: hellcreek: Add PTP clock support

The switch has internal PTP hardware clocks. Add support for it. There are three
clocks:

 * Synchronized
 * Syntonized
 * Free running

Currently the synchronized clock is exported to user space which is a good
default for the beginning. The free running clock might be exported later
e.g. for implementing 802.1AS-2011/2020 Time Aware Bridges (TAB). The switch
also supports cross time stamping for that purpose.

The implementation adds support setting/getting the time as well as offset and
frequency adjustments. However, the clock only holds a partial timeofday
timestamp. This is why we track the seconds completely in software (see overflow
work and last_ts).

Furthermore, add the PTP multicast addresses into the FDB to forward that
packages only to the CPU port where they are processed by a PTP program.

Signed-off-by: Kamil Alkhouri <kamil.alkhouri@hs-offenburg.de>
Signed-off-by: Kurt Kanzenbach <kurt@linutronix.de>
Acked-by: Richard Cochran <richardcochran@gmail.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/dsa/hirschmann/Kconfig
drivers/net/dsa/hirschmann/Makefile
drivers/net/dsa/hirschmann/hellcreek.c
drivers/net/dsa/hirschmann/hellcreek.h
drivers/net/dsa/hirschmann/hellcreek_ptp.c [new file with mode: 0644]
drivers/net/dsa/hirschmann/hellcreek_ptp.h [new file with mode: 0644]