From: Quanyang Wang <quanyang.w...@windriver.com>

64-bit division "(u64 A) / (u32 B)" will break linking on ARCH arm:

rm-linux-gnueabihf-ld: drivers/rtc/rtc-zynqmp.o: in function 
`xlnx_rtc_read_offset':
rtc-zynqmp.c:(.text+0x48): undefined reference to `__aeabi_ldivmod'

Fix this by using do_div.

Signed-off-by: Quanyang Wang <quanyang.w...@windriver.com>
---
 drivers/rtc/rtc-zynqmp.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/rtc/rtc-zynqmp.c b/drivers/rtc/rtc-zynqmp.c
index 0f0edbeec7cf9..6412179f5b223 100644
--- a/drivers/rtc/rtc-zynqmp.c
+++ b/drivers/rtc/rtc-zynqmp.c
@@ -193,9 +193,10 @@ static void xlnx_init_rtc(struct xlnx_rtc_dev *xrtcdev)
 static int xlnx_rtc_read_offset(struct device *dev, long *offset)
 {
        struct xlnx_rtc_dev *xrtcdev = dev_get_drvdata(dev);
+       unsigned long long rtc_ppb = RTC_PPB;
        long offset_val;
        unsigned int reg;
-       unsigned int tick_mult = RTC_PPB / xrtcdev->calibval;
+       unsigned int tick_mult = do_div(rtc_ppb, xrtcdev->calibval);
 
        reg = readl(xrtcdev->reg_base + RTC_CALIB_RD);
 
@@ -216,11 +217,12 @@ static int xlnx_rtc_read_offset(struct device *dev, long 
*offset)
 static int xlnx_rtc_set_offset(struct device *dev, long offset)
 {
        struct xlnx_rtc_dev *xrtcdev = dev_get_drvdata(dev);
+       unsigned long long rtc_ppb = RTC_PPB;
        short int  max_tick;
        unsigned char fract_tick = 0;
        unsigned int calibval;
        int fract_offset;
-       unsigned int tick_mult = RTC_PPB / xrtcdev->calibval;
+       unsigned int tick_mult = do_div(rtc_ppb, xrtcdev->calibval);
 
        /* Make sure offset value is within supported range */
        if (offset < RTC_OFFSET_MIN || offset > RTC_OFFSET_MAX)
-- 
2.25.1

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#10102): 
https://lists.yoctoproject.org/g/linux-yocto/message/10102
Mute This Topic: https://lists.yoctoproject.org/mt/84148461/21656
Group Owner: linux-yocto+ow...@lists.yoctoproject.org
Unsubscribe: https://lists.yoctoproject.org/g/linux-yocto/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to