media: venus: fix build on 32bit environments
authorMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Mon, 7 Oct 2019 13:35:05 +0000 (10:35 -0300)
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Tue, 8 Oct 2019 16:46:36 +0000 (13:46 -0300)
As reported by jenkins@linuxtv.org, the build with i386 fails
with:

ld: drivers/media/platform/qcom/venus/helpers.o: in function `venus_helper_load_scale_clocks':
(.text+0x1d77): undefined reference to `__udivdi3'
ld: (.text+0x1dce): undefined reference to `__udivdi3'
make: *** [Makefile:1094: vmlinux] Error 1

That's because it divides an u32 bit integer by a u64 one.

Reviewed-by: Stanimir Varbanov <stanimir.varbanov@linaro.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
drivers/media/platform/qcom/venus/helpers.c

index 5ea5d90..a172f1a 100644 (file)
@@ -520,10 +520,11 @@ static unsigned long calculate_inst_freq(struct venus_inst *inst,
                                         unsigned long filled_len)
 {
        unsigned long vpp_freq = 0, vsp_freq = 0;
-       u64 fps = inst->fps;
+       u32 fps = (u32)inst->fps;
        u32 mbs_per_sec;
 
-       mbs_per_sec = load_per_instance(inst) / inst->fps;
+       mbs_per_sec = load_per_instance(inst) / fps;
+
        vpp_freq = mbs_per_sec * inst->clk_data.codec_freq_data->vpp_freq;
        /* 21 / 20 is overhead factor */
        vpp_freq += vpp_freq / 20;