media: av7110: don't do float point math
authorMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Fri, 11 Sep 2020 07:27:35 +0000 (09:27 +0200)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Sat, 12 Sep 2020 07:39:37 +0000 (09:39 +0200)
It sounds that earlier versions of GCC have troubles when
doing const math at compile time, if no typecast is used:

on i386:
ERROR: modpost: "__floatunsidf" [drivers/media/pci/ttpci/dvb-ttpci.ko] undefined!
ERROR: modpost: "__ltdf2" [drivers/media/pci/ttpci/dvb-ttpci.ko] undefined!

The warning was generated on gcc (SUSE Linux) 7.5.0.
Gcc 9.2 compiles it fine.

As an added bonus, it also fixes this objtool warning:

drivers/media/pci/ttpci/av7110_v4l.c:163:11: error: SSE register return with SSE disabled

Reported-by: Randy Dunlap <rdunlap@infradead.org>
Acked-by: Randy Dunlap <rdunlap@infradead.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/media/pci/ttpci/av7110_v4l.c

index 6d9c908..c89f536 100644 (file)
@@ -160,9 +160,9 @@ static int ves1820_set_tv_freq(struct saa7146_dev *dev, u32 freq)
        buf[1] = div & 0xff;
        buf[2] = 0x8e;
 
-       if (freq < 16U * 168.25)
+       if (freq < 16U * 16825 / 100)
                config = 0xa0;
-       else if (freq < 16U * 447.25)
+       else if (freq < 16U * 44725 / 100)
                config = 0x90;
        else
                config = 0x30;