On Sat May 10 10:48:52 2025 +0200, Jacopo Mondi wrote:
> The kernel test robot reports the following error when building on
> Hexagon with hexagon-allmodconfig.
> 
> ERROR: modpost: "__hexagon_divdi3"
> [drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.ko] undefined!
> 
> The error is caused by using DIV_ROUND_UP() with a 64 bits divisor with
> a 32-bit dividend, which on Hexagon and clang-17 is resolved with a call
> to the __hexagon_divdi3() helper function, part of the compiler support
> library and not available when building Linux.
> 
> Use DIV_ROUND_UP_ULL() to fix the build error and avoid calling the
> __hexagon_divdi3() helper function.
> 
> Reported-by: kernel test robot <l...@intel.com>
> Closes: 
> https://lore.kernel.org/oe-kbuild-all/202505101334.uhxncuuo-...@intel.com/
> Signed-off-by: Jacopo Mondi <jacopo.mo...@ideasonboard.com>
> Signed-off-by: Hans Verkuil <hverk...@xs4all.nl>

Patch committed.

Thanks,
Hans Verkuil

 drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

---

diff --git a/drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c 
b/drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
index f92815ffa4ae..1011ab3ebac7 100644
--- a/drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
+++ b/drivers/media/platform/amlogic/c3/mipi-csi2/c3-mipi-csi2.c
@@ -5,6 +5,7 @@
 
 #include <linux/clk.h>
 #include <linux/device.h>
+#include <linux/math.h>
 #include <linux/module.h>
 #include <linux/mutex.h>
 #include <linux/platform_device.h>
@@ -321,7 +322,7 @@ static void c3_mipi_csi_cfg_dphy(struct c3_csi_device *csi, 
s64 rate)
        u32 settle;
 
        /* Calculate the high speed settle */
-       val = DIV_ROUND_UP(1000000000, rate);
+       val = DIV_ROUND_UP_ULL(1000000000, rate);
        settle = (16 * val + 230) / 10;
 
        c3_mipi_csi_write(csi, MIPI_PHY_CLK_LANE_CTRL,

Reply via email to