Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

media: tda10021: avoid casts when using symbol_rate

The usage of castings and float point when checking for
the setup based at the symbol_rate cause those warnings
with smatch:

drivers/media/dvb-frontends/tda10021.c:153 tda10021_set_symbolrate() warn: unsigned 'symbolrate' is never less than zero.
drivers/media/dvb-frontends/tda10021.c:155 tda10021_set_symbolrate() warn: unsigned 'symbolrate' is never less than zero.
drivers/media/dvb-frontends/tda10021.c:157 tda10021_set_symbolrate() warn: unsigned 'symbolrate' is never less than zero.
drivers/media/dvb-frontends/tda10021.c:159 tda10021_set_symbolrate() warn: unsigned 'symbolrate' is never less than zero.

While the code should work with gcc, as it will evaluate the
values into a constant before compiling, other compilers
could do otherwise. So, get rid of float pointing math on it,
avoiding the need of doing typecasts.

While here, cleanup some coding style issues at the related
code.

Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>

+24 -14
+24 -14
drivers/media/dvb-frontends/tda10021.c
··· 137 137 { 138 138 s32 BDR; 139 139 s32 BDRI; 140 - s16 SFIL=0; 140 + s16 SFIL = 0; 141 141 u16 NDEC = 0; 142 142 u32 tmp, ratio; 143 143 144 - if (symbolrate > XIN/2) 145 - symbolrate = XIN/2; 146 - if (symbolrate < 500000) 144 + if (symbolrate > XIN / 2) 145 + symbolrate = XIN / 2; 146 + else if (symbolrate < 500000) 147 147 symbolrate = 500000; 148 148 149 - if (symbolrate < XIN/16) NDEC = 1; 150 - if (symbolrate < XIN/32) NDEC = 2; 151 - if (symbolrate < XIN/64) NDEC = 3; 149 + if (symbolrate < XIN / 16) 150 + NDEC = 1; 151 + if (symbolrate < XIN / 32) 152 + NDEC = 2; 153 + if (symbolrate < XIN / 64) 154 + NDEC = 3; 152 155 153 - if (symbolrate < (u32)(XIN/12.3)) SFIL = 1; 154 - if (symbolrate < (u32)(XIN/16)) SFIL = 0; 155 - if (symbolrate < (u32)(XIN/24.6)) SFIL = 1; 156 - if (symbolrate < (u32)(XIN/32)) SFIL = 0; 157 - if (symbolrate < (u32)(XIN/49.2)) SFIL = 1; 158 - if (symbolrate < (u32)(XIN/64)) SFIL = 0; 159 - if (symbolrate < (u32)(XIN/98.4)) SFIL = 1; 156 + if (symbolrate < XIN * 10 / 123) 157 + SFIL = 1; 158 + if (symbolrate < XIN * 10 / 160) 159 + SFIL = 0; 160 + if (symbolrate < XIN * 10 / 246) 161 + SFIL = 1; 162 + if (symbolrate < XIN * 10 / 320) 163 + SFIL = 0; 164 + if (symbolrate < XIN * 10 / 492) 165 + SFIL = 1; 166 + if (symbolrate < XIN * 10 / 640) 167 + SFIL = 0; 168 + if (symbolrate < XIN * 10 / 984) 169 + SFIL = 1; 160 170 161 171 symbolrate <<= NDEC; 162 172 ratio = (symbolrate << 4) / FIN;