net: stmmac: Add Flexible PPS support
This adds support for Flexible PPS output (which is equivalent to per_out output of PTP subsystem). Tested using an oscilloscope and the following commands: 1) Start PTP4L: # ptp4l -A -4 -H -m -i eth0 & 2) Set Flexible PPS frequency: # echo <idx> <ts> <tns> <ps> <pns> > /sys/class/ptp/ptpX/period Where, ts/tns is start time and ps/pns is period time, and ptpX is ptp of eth0. Signed-off-by: Jose Abreu <joabreu@synopsys.com> Cc: David S. Miller <davem@davemloft.net> Cc: Joao Pinto <jpinto@synopsys.com> Cc: Vitor Soares <soares@synopsys.com> Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com> Cc: Alexandre Torgue <alexandre.torgue@st.com> Cc: Richard Cochran <richardcochran@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
9db9268fe4
commit
9a8a02c9d4
@@ -241,6 +241,7 @@ struct net_device;
|
||||
struct rgmii_adv;
|
||||
struct stmmac_safety_stats;
|
||||
struct stmmac_tc_entry;
|
||||
struct stmmac_pps_cfg;
|
||||
|
||||
/* Helpers to program the MAC core */
|
||||
struct stmmac_ops {
|
||||
@@ -313,6 +314,10 @@ struct stmmac_ops {
|
||||
/* Flexible RX Parser */
|
||||
int (*rxp_config)(void __iomem *ioaddr, struct stmmac_tc_entry *entries,
|
||||
unsigned int count);
|
||||
/* Flexible PPS */
|
||||
int (*flex_pps_config)(void __iomem *ioaddr, int index,
|
||||
struct stmmac_pps_cfg *cfg, bool enable,
|
||||
u32 sub_second_inc, u32 systime_flags);
|
||||
};
|
||||
|
||||
#define stmmac_core_init(__priv, __args...) \
|
||||
@@ -379,6 +384,8 @@ struct stmmac_ops {
|
||||
stmmac_do_callback(__priv, mac, safety_feat_dump, __args)
|
||||
#define stmmac_rxp_config(__priv, __args...) \
|
||||
stmmac_do_callback(__priv, mac, rxp_config, __args)
|
||||
#define stmmac_flex_pps_config(__priv, __args...) \
|
||||
stmmac_do_callback(__priv, mac, flex_pps_config, __args)
|
||||
|
||||
/* PTP and HW Timer helpers */
|
||||
struct stmmac_hwtimestamp {
|
||||
|
Reference in New Issue
Block a user