Compilation on 32-bit ARM fails after commit 992aa864dca0 ("mlxsw:
spectrum_ptp: Add implementation for physical hardware clock operations")
because of 64-bit division:

arm-linux-gnueabi-ld:
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.o: in function
`mlxsw_sp1_ptp_phc_settime': spectrum_ptp.c:(.text+0x39c): undefined
reference to `__aeabi_uldivmod'

Fix by using div_u64().

Fixes: 992aa864dca0 ("mlxsw: spectrum_ptp: Add implementation for physical 
hardware clock operations")
Signed-off-by: Shalom Toledo <shal...@mellanox.com>
Reviewed-by: Ido Schimmel <ido...@mellanox.com>
Reported-by: Nathan Chancellor <natechancel...@gmail.com>
---
 drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c 
b/drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
index 2a9bbc90225e..bb6c0cb25771 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
@@ -81,13 +81,12 @@ static int
 mlxsw_sp1_ptp_phc_settime(struct mlxsw_sp_ptp_clock *clock, u64 nsec)
 {
        struct mlxsw_core *mlxsw_core = clock->core;
+       u64 next_sec, next_sec_in_nsec, cycles;
        char mtutc_pl[MLXSW_REG_MTUTC_LEN];
        char mtpps_pl[MLXSW_REG_MTPPS_LEN];
-       u64 next_sec_in_nsec, cycles;
-       u32 next_sec;
        int err;
 
-       next_sec = nsec / NSEC_PER_SEC + 1;
+       next_sec = div_u64(nsec, NSEC_PER_SEC) + 1;
        next_sec_in_nsec = next_sec * NSEC_PER_SEC;
 
        spin_lock(&clock->lock);
-- 
2.20.1

Reply via email to