diff options
author | Julia Lawall <julia@diku.dk> | 2009-08-01 15:48:41 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2009-09-12 11:19:08 -0400 |
commit | 75b697f747b14b0c6afae48ee0f5e605abd2df4c (patch) | |
tree | 3812e853ff3d8758cded2fdfebb58bdec76babfc /drivers | |
parent | 166987c6987a25a95cef6889d24088f0eb2daa36 (diff) |
V4L/DVB (12483): Use DIV_ROUND_CLOSEST
The kernel.h macro DIV_ROUND_CLOSEST performs the computation (x + d/2)/d
but is perhaps more readable.
The semantic patch that makes this change is as follows:
(http://www.emn.fr/x-info/coccinelle/)
// <smpl>
@haskernel@
@@
@depends on haskernel@
expression x,__divisor;
@@
- (((x) + ((__divisor) / 2)) / (__divisor))
+ DIV_ROUND_CLOSEST(x,__divisor)
// </smpl>
Signed-off-by: Julia Lawall <julia@diku.dk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/media/dvb/frontends/dib7000p.c | 2 | ||||
-rw-r--r-- | drivers/media/dvb/frontends/stb6100.c | 4 | ||||
-rw-r--r-- | drivers/media/dvb/frontends/tda10021.c | 2 | ||||
-rw-r--r-- | drivers/media/dvb/frontends/ves1820.c | 2 | ||||
-rw-r--r-- | drivers/media/dvb/pluto2/pluto2.c | 2 | ||||
-rw-r--r-- | drivers/media/video/tuner-core.c | 4 | ||||
-rw-r--r-- | drivers/media/video/v4l1-compat.c | 5 |
7 files changed, 11 insertions, 10 deletions
diff --git a/drivers/media/dvb/frontends/dib7000p.c b/drivers/media/dvb/frontends/dib7000p.c index 8217e5b38f47..fc96fbf03d6d 100644 --- a/drivers/media/dvb/frontends/dib7000p.c +++ b/drivers/media/dvb/frontends/dib7000p.c | |||
@@ -883,7 +883,7 @@ static void dib7000p_spur_protect(struct dib7000p_state *state, u32 rf_khz, u32 | |||
883 | 255, 255, 255, 255, 255, 255}; | 883 | 255, 255, 255, 255, 255, 255}; |
884 | 884 | ||
885 | u32 xtal = state->cfg.bw->xtal_hz / 1000; | 885 | u32 xtal = state->cfg.bw->xtal_hz / 1000; |
886 | int f_rel = ( (rf_khz + xtal/2) / xtal) * xtal - rf_khz; | 886 | int f_rel = DIV_ROUND_CLOSEST(rf_khz, xtal) * xtal - rf_khz; |
887 | int k; | 887 | int k; |
888 | int coef_re[8],coef_im[8]; | 888 | int coef_re[8],coef_im[8]; |
889 | int bw_khz = bw; | 889 | int bw_khz = bw; |
diff --git a/drivers/media/dvb/frontends/stb6100.c b/drivers/media/dvb/frontends/stb6100.c index 1ed5a7db4c5e..60ee18a94f43 100644 --- a/drivers/media/dvb/frontends/stb6100.c +++ b/drivers/media/dvb/frontends/stb6100.c | |||
@@ -367,7 +367,9 @@ static int stb6100_set_frequency(struct dvb_frontend *fe, u32 frequency) | |||
367 | /* N(I) = floor(f(VCO) / (f(XTAL) * (PSD2 ? 2 : 1))) */ | 367 | /* N(I) = floor(f(VCO) / (f(XTAL) * (PSD2 ? 2 : 1))) */ |
368 | nint = fvco / (state->reference << psd2); | 368 | nint = fvco / (state->reference << psd2); |
369 | /* N(F) = round(f(VCO) / f(XTAL) * (PSD2 ? 2 : 1) - N(I)) * 2 ^ 9 */ | 369 | /* N(F) = round(f(VCO) / f(XTAL) * (PSD2 ? 2 : 1) - N(I)) * 2 ^ 9 */ |
370 | nfrac = (((fvco - (nint * state->reference << psd2)) << (9 - psd2)) + state->reference / 2) / state->reference; | 370 | nfrac = DIV_ROUND_CLOSEST((fvco - (nint * state->reference << psd2)) |
371 | << (9 - psd2), | ||
372 | state->reference); | ||
371 | dprintk(verbose, FE_DEBUG, 1, | 373 | dprintk(verbose, FE_DEBUG, 1, |
372 | "frequency = %u, srate = %u, g = %u, odiv = %u, psd2 = %u, fxtal = %u, osm = %u, fvco = %u, N(I) = %u, N(F) = %u", | 374 | "frequency = %u, srate = %u, g = %u, odiv = %u, psd2 = %u, fxtal = %u, osm = %u, fvco = %u, N(I) = %u, N(F) = %u", |
373 | frequency, srate, (unsigned int)g, (unsigned int)odiv, | 375 | frequency, srate, (unsigned int)g, (unsigned int)odiv, |
diff --git a/drivers/media/dvb/frontends/tda10021.c b/drivers/media/dvb/frontends/tda10021.c index f5d7b3277a2f..6c1dbf9288d8 100644 --- a/drivers/media/dvb/frontends/tda10021.c +++ b/drivers/media/dvb/frontends/tda10021.c | |||
@@ -176,7 +176,7 @@ static int tda10021_set_symbolrate (struct tda10021_state* state, u32 symbolrate | |||
176 | tmp = ((symbolrate << 4) % FIN) << 8; | 176 | tmp = ((symbolrate << 4) % FIN) << 8; |
177 | ratio = (ratio << 8) + tmp / FIN; | 177 | ratio = (ratio << 8) + tmp / FIN; |
178 | tmp = (tmp % FIN) << 8; | 178 | tmp = (tmp % FIN) << 8; |
179 | ratio = (ratio << 8) + (tmp + FIN/2) / FIN; | 179 | ratio = (ratio << 8) + DIV_ROUND_CLOSEST(tmp, FIN); |
180 | 180 | ||
181 | BDR = ratio; | 181 | BDR = ratio; |
182 | BDRI = (((XIN << 5) / symbolrate) + 1) / 2; | 182 | BDRI = (((XIN << 5) / symbolrate) + 1) / 2; |
diff --git a/drivers/media/dvb/frontends/ves1820.c b/drivers/media/dvb/frontends/ves1820.c index 6e78e4865515..550a07a8a997 100644 --- a/drivers/media/dvb/frontends/ves1820.c +++ b/drivers/media/dvb/frontends/ves1820.c | |||
@@ -165,7 +165,7 @@ static int ves1820_set_symbolrate(struct ves1820_state *state, u32 symbolrate) | |||
165 | tmp = ((symbolrate << 4) % fin) << 8; | 165 | tmp = ((symbolrate << 4) % fin) << 8; |
166 | ratio = (ratio << 8) + tmp / fin; | 166 | ratio = (ratio << 8) + tmp / fin; |
167 | tmp = (tmp % fin) << 8; | 167 | tmp = (tmp % fin) << 8; |
168 | ratio = (ratio << 8) + (tmp + fin / 2) / fin; | 168 | ratio = (ratio << 8) + DIV_ROUND_CLOSEST(tmp, fin); |
169 | 169 | ||
170 | BDR = ratio; | 170 | BDR = ratio; |
171 | BDRI = (((state->config->xin << 5) / symbolrate) + 1) / 2; | 171 | BDRI = (((state->config->xin << 5) / symbolrate) + 1) / 2; |
diff --git a/drivers/media/dvb/pluto2/pluto2.c b/drivers/media/dvb/pluto2/pluto2.c index 598eaf8acc6e..80d14a065bad 100644 --- a/drivers/media/dvb/pluto2/pluto2.c +++ b/drivers/media/dvb/pluto2/pluto2.c | |||
@@ -439,7 +439,7 @@ static inline u32 divide(u32 numerator, u32 denominator) | |||
439 | if (denominator == 0) | 439 | if (denominator == 0) |
440 | return ~0; | 440 | return ~0; |
441 | 441 | ||
442 | return (numerator + denominator / 2) / denominator; | 442 | return DIV_ROUND_CLOSEST(numerator, denominator); |
443 | } | 443 | } |
444 | 444 | ||
445 | /* LG Innotek TDTE-E001P (Infineon TUA6034) */ | 445 | /* LG Innotek TDTE-E001P (Infineon TUA6034) */ |
diff --git a/drivers/media/video/tuner-core.c b/drivers/media/video/tuner-core.c index 537594211a90..2816f1839230 100644 --- a/drivers/media/video/tuner-core.c +++ b/drivers/media/video/tuner-core.c | |||
@@ -819,8 +819,8 @@ static int tuner_g_frequency(struct v4l2_subdev *sd, struct v4l2_frequency *f) | |||
819 | 819 | ||
820 | fe_tuner_ops->get_frequency(&t->fe, &abs_freq); | 820 | fe_tuner_ops->get_frequency(&t->fe, &abs_freq); |
821 | f->frequency = (V4L2_TUNER_RADIO == t->mode) ? | 821 | f->frequency = (V4L2_TUNER_RADIO == t->mode) ? |
822 | (abs_freq * 2 + 125/2) / 125 : | 822 | DIV_ROUND_CLOSEST(abs_freq * 2, 125) : |
823 | (abs_freq + 62500/2) / 62500; | 823 | DIV_ROUND_CLOSEST(abs_freq, 62500); |
824 | return 0; | 824 | return 0; |
825 | } | 825 | } |
826 | f->frequency = (V4L2_TUNER_RADIO == t->mode) ? | 826 | f->frequency = (V4L2_TUNER_RADIO == t->mode) ? |
diff --git a/drivers/media/video/v4l1-compat.c b/drivers/media/video/v4l1-compat.c index 02f2a6d18b45..761fbd64db58 100644 --- a/drivers/media/video/v4l1-compat.c +++ b/drivers/media/video/v4l1-compat.c | |||
@@ -76,9 +76,8 @@ get_v4l_control(struct file *file, | |||
76 | dprintk("VIDIOC_G_CTRL: %d\n", err); | 76 | dprintk("VIDIOC_G_CTRL: %d\n", err); |
77 | return 0; | 77 | return 0; |
78 | } | 78 | } |
79 | return ((ctrl2.value - qctrl2.minimum) * 65535 | 79 | return DIV_ROUND_CLOSEST((ctrl2.value-qctrl2.minimum) * 65535, |
80 | + (qctrl2.maximum - qctrl2.minimum) / 2) | 80 | qctrl2.maximum - qctrl2.minimum); |
81 | / (qctrl2.maximum - qctrl2.minimum); | ||
82 | } | 81 | } |
83 | return 0; | 82 | return 0; |
84 | } | 83 | } |