Commit ddc11db2 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab

media: tda10086: cleanup symbol_rate setting logic

The original logic had an integer to unsigned integer
conversion, plus a float-point math. While gcc should be
able to do the match at compile time, other compilers might
not do the same. Also, those produce the following warnings
with static code analyzers:

	drivers/media/dvb-frontends/tda10086.c:300 tda10086_set_symbol_rate() warn: unsigned 'symbol_rate' is never less than zero.
	drivers/media/dvb-frontends/tda10086.c:303 tda10086_set_symbol_rate() warn: unsigned 'symbol_rate' is never less than zero.
	drivers/media/dvb-frontends/tda10086.c:306 tda10086_set_symbol_rate() warn: unsigned 'symbol_rate' is never less than zero.
	drivers/media/dvb-frontends/tda10086.c:309 tda10086_set_symbol_rate() warn: unsigned 'symbol_rate' is never less than zero.
	drivers/media/dvb-frontends/tda10086.c:312 tda10086_set_symbol_rate() warn: unsigned 'symbol_rate' is never less than zero.
	drivers/media/dvb-frontends/tda10086.c:315 tda10086_set_symbol_rate() warn: unsigned 'symbol_rate' is never less than zero.
	drivers/media/dvb-frontends/tda10086.c:318 tda10086_set_symbol_rate() warn: unsigned 'symbol_rate' is never less than zero.
	drivers/media/dvb-frontends/tda10086.c:321 tda10086_set_symbol_rate() warn: unsigned 'symbol_rate' is never less than zero.
	drivers/media/dvb-frontends/tda10086.c:324 tda10086_set_symbol_rate() warn: unsigned 'symbol_rate' is never less than zero.
	drivers/media/dvb-frontends/tda10086.c:327 tda10086_set_symbol_rate() warn: unsigned 'symbol_rate' is never less than zero.

Change the logic to declare the reference constant as unsigned
and to not use float point math.
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
parent a4f37617
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
#include <media/dvb_frontend.h> #include <media/dvb_frontend.h>
#include "tda10086.h" #include "tda10086.h"
#define SACLK 96000000 #define SACLK 96000000U
struct tda10086_state { struct tda10086_state {
struct i2c_adapter* i2c; struct i2c_adapter* i2c;
...@@ -297,34 +297,34 @@ static int tda10086_set_symbol_rate(struct tda10086_state *state, ...@@ -297,34 +297,34 @@ static int tda10086_set_symbol_rate(struct tda10086_state *state,
dprintk ("%s %i\n", __func__, symbol_rate); dprintk ("%s %i\n", __func__, symbol_rate);
/* setup the decimation and anti-aliasing filters.. */ /* setup the decimation and anti-aliasing filters.. */
if (symbol_rate < (u32) (SACLK * 0.0137)) { if (symbol_rate < SACLK / 10000 * 137) {
dfn=4; dfn=4;
afs=1; afs=1;
} else if (symbol_rate < (u32) (SACLK * 0.0208)) { } else if (symbol_rate < SACLK / 10000 * 208) {
dfn=4; dfn=4;
afs=0; afs=0;
} else if (symbol_rate < (u32) (SACLK * 0.0270)) { } else if (symbol_rate < SACLK / 10000 * 270) {
dfn=3; dfn=3;
afs=1; afs=1;
} else if (symbol_rate < (u32) (SACLK * 0.0416)) { } else if (symbol_rate < SACLK / 10000 * 416) {
dfn=3; dfn=3;
afs=0; afs=0;
} else if (symbol_rate < (u32) (SACLK * 0.0550)) { } else if (symbol_rate < SACLK / 10000 * 550) {
dfn=2; dfn=2;
afs=1; afs=1;
} else if (symbol_rate < (u32) (SACLK * 0.0833)) { } else if (symbol_rate < SACLK / 10000 * 833) {
dfn=2; dfn=2;
afs=0; afs=0;
} else if (symbol_rate < (u32) (SACLK * 0.1100)) { } else if (symbol_rate < SACLK / 10000 * 1100) {
dfn=1; dfn=1;
afs=1; afs=1;
} else if (symbol_rate < (u32) (SACLK * 0.1666)) { } else if (symbol_rate < SACLK / 10000 * 1666) {
dfn=1; dfn=1;
afs=0; afs=0;
} else if (symbol_rate < (u32) (SACLK * 0.2200)) { } else if (symbol_rate < SACLK / 10000 * 2200) {
dfn=0; dfn=0;
afs=1; afs=1;
} else if (symbol_rate < (u32) (SACLK * 0.3333)) { } else if (symbol_rate < SACLK / 10000 * 3333) {
dfn=0; dfn=0;
afs=0; afs=0;
} else { } else {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment