octeontx2-af: return correct ptp timestamp for CN10K silicon
The MIO_PTP_TIMESTAMP format has been changed in CN10K silicon family. The upper 32-bits represents seconds and lower 32-bits represents nanoseconds. This patch returns nanosecond timestamp to NIX PF driver. Signed-off-by: Naveen Mamindlapalli <naveenm@marvell.com> Signed-off-by: Sunil Kovvuri Goutham <sgoutham@marvell.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
5947b7f794
commit
a8025e7946
@ -56,6 +56,11 @@
|
||||
static struct ptp *first_ptp_block;
|
||||
static const struct pci_device_id ptp_id_table[];
|
||||
|
||||
static bool is_ptp_dev_cn10k(struct ptp *ptp)
|
||||
{
|
||||
return (ptp->pdev->device == PCI_DEVID_CN10K_PTP) ? true : false;
|
||||
}
|
||||
|
||||
static bool cn10k_ptp_errata(struct ptp *ptp)
|
||||
{
|
||||
if (ptp->pdev->subsystem_device == PCI_SUBSYS_DEVID_CN10K_A_PTP ||
|
||||
@ -282,7 +287,14 @@ void ptp_start(struct ptp *ptp, u64 sclk, u32 ext_clk_freq, u32 extts)
|
||||
|
||||
static int ptp_get_tstmp(struct ptp *ptp, u64 *clk)
|
||||
{
|
||||
*clk = readq(ptp->reg_base + PTP_TIMESTAMP);
|
||||
u64 timestamp;
|
||||
|
||||
if (is_ptp_dev_cn10k(ptp)) {
|
||||
timestamp = readq(ptp->reg_base + PTP_TIMESTAMP);
|
||||
*clk = (timestamp >> 32) * NSEC_PER_SEC + (timestamp & 0xFFFFFFFF);
|
||||
} else {
|
||||
*clk = readq(ptp->reg_base + PTP_TIMESTAMP);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user