| From foo@baz Mon Apr 9 17:09:24 CEST 2018 |
| From: Mario Molitor <mario_molitor@web.de> |
| Date: Thu, 8 Jun 2017 22:41:02 +0200 |
| Subject: stmmac: fix ptp header for GMAC3 hw timestamp |
| |
| From: Mario Molitor <mario_molitor@web.de> |
| |
| |
| [ Upstream commit fd6720aefde06eacf17404eed2cad65c6ec103e1 ] |
| |
| According the CYCLON V documention only the bit 16 of snaptypesel should |
| set. |
| (more information see Table 17-20 (cv_5v4.pdf) : |
| Timestamp Snapshot Dependency on Register Bits) |
| |
| Fixes: d2042052a0aa ("stmmac: update the PTP header file") |
| Signed-off-by: Mario Molitor <mario_molitor@web.de> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 15 ++++++++++++--- |
| drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.h | 3 ++- |
| 2 files changed, 14 insertions(+), 4 deletions(-) |
| |
| --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c |
| +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c |
| @@ -478,7 +478,10 @@ static int stmmac_hwtstamp_ioctl(struct |
| /* PTP v1, UDP, any kind of event packet */ |
| config.rx_filter = HWTSTAMP_FILTER_PTP_V1_L4_EVENT; |
| /* take time stamp for all event messages */ |
| - snap_type_sel = PTP_TCR_SNAPTYPSEL_1; |
| + if (priv->plat->has_gmac4) |
| + snap_type_sel = PTP_GMAC4_TCR_SNAPTYPSEL_1; |
| + else |
| + snap_type_sel = PTP_TCR_SNAPTYPSEL_1; |
| |
| ptp_over_ipv4_udp = PTP_TCR_TSIPV4ENA; |
| ptp_over_ipv6_udp = PTP_TCR_TSIPV6ENA; |
| @@ -510,7 +513,10 @@ static int stmmac_hwtstamp_ioctl(struct |
| config.rx_filter = HWTSTAMP_FILTER_PTP_V2_L4_EVENT; |
| ptp_v2 = PTP_TCR_TSVER2ENA; |
| /* take time stamp for all event messages */ |
| - snap_type_sel = PTP_TCR_SNAPTYPSEL_1; |
| + if (priv->plat->has_gmac4) |
| + snap_type_sel = PTP_GMAC4_TCR_SNAPTYPSEL_1; |
| + else |
| + snap_type_sel = PTP_TCR_SNAPTYPSEL_1; |
| |
| ptp_over_ipv4_udp = PTP_TCR_TSIPV4ENA; |
| ptp_over_ipv6_udp = PTP_TCR_TSIPV6ENA; |
| @@ -544,7 +550,10 @@ static int stmmac_hwtstamp_ioctl(struct |
| config.rx_filter = HWTSTAMP_FILTER_PTP_V2_EVENT; |
| ptp_v2 = PTP_TCR_TSVER2ENA; |
| /* take time stamp for all event messages */ |
| - snap_type_sel = PTP_TCR_SNAPTYPSEL_1; |
| + if (priv->plat->has_gmac4) |
| + snap_type_sel = PTP_GMAC4_TCR_SNAPTYPSEL_1; |
| + else |
| + snap_type_sel = PTP_TCR_SNAPTYPSEL_1; |
| |
| ptp_over_ipv4_udp = PTP_TCR_TSIPV4ENA; |
| ptp_over_ipv6_udp = PTP_TCR_TSIPV6ENA; |
| --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.h |
| +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.h |
| @@ -63,7 +63,8 @@ |
| /* Enable Snapshot for Messages Relevant to Master */ |
| #define PTP_TCR_TSMSTRENA BIT(15) |
| /* Select PTP packets for Taking Snapshots */ |
| -#define PTP_TCR_SNAPTYPSEL_1 GENMASK(17, 16) |
| +#define PTP_TCR_SNAPTYPSEL_1 BIT(16) |
| +#define PTP_GMAC4_TCR_SNAPTYPSEL_1 GENMASK(17, 16) |
| /* Enable MAC address for PTP Frame Filtering */ |
| #define PTP_TCR_TSENMACADDR BIT(18) |
| |