[media] cobalt: fix 64-bit division link error
authorHans Verkuil <hans.verkuil@cisco.com>
Thu, 21 May 2015 12:37:40 +0000 (09:37 -0300)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Sat, 30 May 2015 14:19:30 +0000 (11:19 -0300)
[linuxtv-media:master 1023/1029] ERROR: "__aeabi_uldivmod" [drivers/media/pci/cobalt/cobalt.ko] undefined!

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Reported-by: kbuild test robot <fengguang.wu@intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
drivers/media/pci/cobalt/cobalt-v4l2.c

index bf80f11d94d89b27633719638789b12a7f373d85..6e8d25b18b4e8ae2d1ac5e31bd352310a15f18bc 100644 (file)
@@ -22,6 +22,7 @@
 
 #include <linux/dma-mapping.h>
 #include <linux/delay.h>
+#include <linux/math64.h>
 #include <linux/pci.h>
 #include <linux/v4l2-dv-timings.h>
 
@@ -314,8 +315,8 @@ static int cobalt_start_streaming(struct vb2_queue *q, unsigned int count)
        cvi->frame_height = bt->height;
        tot_size = V4L2_DV_BT_FRAME_WIDTH(bt) * V4L2_DV_BT_FRAME_HEIGHT(bt);
        vmr->hsync_timeout_val =
-               ((u64)V4L2_DV_BT_FRAME_WIDTH(bt) * COBALT_CLK * 4) /
-               bt->pixelclock;
+               div_u64((u64)V4L2_DV_BT_FRAME_WIDTH(bt) * COBALT_CLK * 4,
+                       bt->pixelclock);
        vmr->control = M00233_CONTROL_BITMAP_ENABLE_MEASURE_MSK;
        clkloss->ref_clk_cnt_val = fw->clk_freq / 1000000;
        /* The lower bound for the clock frequency is 0.5% lower as is
@@ -324,7 +325,7 @@ static int cobalt_start_streaming(struct vb2_queue *q, unsigned int count)
                (((u64)bt->pixelclock * 995) / 1000) / 1000000;
        /* will be enabled after the first frame has been received */
        fw->active_length = bt->width * bt->height;
-       fw->total_length = ((u64)fw->clk_freq * tot_size) / bt->pixelclock;
+       fw->total_length = div_u64((u64)fw->clk_freq * tot_size, bt->pixelclock);
        vmr->irq_triggers = M00233_IRQ_TRIGGERS_BITMAP_VACTIVE_AREA_MSK |
                M00233_IRQ_TRIGGERS_BITMAP_HACTIVE_AREA_MSK;
        cvi->control = 0;