mirror of
https://github.com/torvalds/linux.git
synced 2024-11-01 13:03:25 +01:00
ptp: ocp: Improve PCIe delay estimation
The PCIe bus can be pretty busy during boot and probe function can see excessive delays. Let's find the minimal value out of several tests and use it as estimated value. Signed-off-by: Vadim Fedorenko <vadim.fedorenko@linux.dev> Link: https://patch.msgid.link/20240905140028.560454-1-vadim.fedorenko@linux.dev Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
9a95eedc81
commit
aa05fe67bc
1 changed files with 11 additions and 9 deletions
|
@ -1558,22 +1558,24 @@ ptp_ocp_watchdog(struct timer_list *t)
|
|||
static void
|
||||
ptp_ocp_estimate_pci_timing(struct ptp_ocp *bp)
|
||||
{
|
||||
ktime_t start, end;
|
||||
ktime_t delay;
|
||||
ktime_t start, end, delay = U64_MAX;
|
||||
u32 ctrl;
|
||||
int i;
|
||||
|
||||
ctrl = ioread32(&bp->reg->ctrl);
|
||||
ctrl = OCP_CTRL_READ_TIME_REQ | OCP_CTRL_ENABLE;
|
||||
for (i = 0; i < 3; i++) {
|
||||
ctrl = ioread32(&bp->reg->ctrl);
|
||||
ctrl = OCP_CTRL_READ_TIME_REQ | OCP_CTRL_ENABLE;
|
||||
|
||||
iowrite32(ctrl, &bp->reg->ctrl);
|
||||
iowrite32(ctrl, &bp->reg->ctrl);
|
||||
|
||||
start = ktime_get_ns();
|
||||
start = ktime_get_raw_ns();
|
||||
|
||||
ctrl = ioread32(&bp->reg->ctrl);
|
||||
ctrl = ioread32(&bp->reg->ctrl);
|
||||
|
||||
end = ktime_get_ns();
|
||||
end = ktime_get_raw_ns();
|
||||
|
||||
delay = end - start;
|
||||
delay = min(delay, end - start);
|
||||
}
|
||||
bp->ts_window_adjust = (delay >> 5) * 3;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue