Commit cd0983c7 authored by Arnd Bergmann's avatar Arnd Bergmann Committed by Marc Kleine-Budde
Browse files

can: rockchip_canfd: rkcanfd_timestamp_init(): rework delay calculation



Rework the delay calculation to only require a single 64-bit division.

Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
[mkl: port to on-top of existing 32-bit division fix]
Link: https://patch.msgid.link/20240911-can-rockchip_canfd-fixes-v1-1-5ce385b5ab10@pengutronix.de


Signed-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
parent 709cbd5b
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -71,8 +71,8 @@ void rkcanfd_timestamp_init(struct rkcanfd_priv *priv)

	max_cycles = div_u64(ULLONG_MAX, cc->mult);
	max_cycles = min(max_cycles, cc->mask);
	work_delay_ns = div_u64(clocksource_cyc2ns(max_cycles, cc->mult, cc->shift), 3);
	priv->work_delay_jiffies = nsecs_to_jiffies(work_delay_ns);
	work_delay_ns = clocksource_cyc2ns(max_cycles, cc->mult, cc->shift);
	priv->work_delay_jiffies = div_u64(work_delay_ns, 3u * NSEC_PER_SEC / HZ);
	INIT_DELAYED_WORK(&priv->timestamp, rkcanfd_timestamp_work);

	netdev_dbg(priv->ndev, "clock=%lu.%02luMHz bitrate=%lu.%02luMBit/s div=%u rate=%lu.%02luMHz mult=%u shift=%u delay=%lus\n",