- u8 new_band;
- u32 spacing;
- u32 hz;
- u32 min_hz;
- u32 max_hz;
- u8 margin;
- u8 step;
- u16 upper_limit;
- u16 lower_limit;
- u16 next_up;
- u16 next_down;
- u8 next_band_up;
- u8 next_band_down;
-
- switch (width) {
- case NARROW:
- margin = NARROW_MARGIN;
- step = NARROW_STEP;
- spacing = NARROW_SPACING;
- break;
- case ULTRAWIDE:
- margin = ULTRAWIDE_MARGIN;
- step = ULTRAWIDE_STEP;
- spacing = ULTRAWIDE_SPACING;
-
- /* nearest 20 MHz step */
- freq = ((freq + 10) / 20) * 20;
- break;
- default:
- margin = WIDE_MARGIN;
- step = WIDE_STEP;
- spacing = WIDE_SPACING;
-
- /* nearest 5 MHz step */
- freq = ((freq + 2) / 5) * 5;
- break;
- }
-
- /* handle cases near edges of bands */
- if (freq > EDGE_900) {
- new_band = BAND_900;
- upper_limit = UPPER(MAX_900, margin, step);
- lower_limit = LOWER(MIN_900, margin, step);
- next_up = LOWER(MIN_300, margin, step);
- next_down = UPPER(MAX_400, margin, step);
- next_band_up = BAND_300;
- next_band_down = BAND_400;
- } else if (freq > EDGE_400) {
- new_band = BAND_400;
- upper_limit = UPPER(MAX_400, margin, step);
- lower_limit = LOWER(MIN_400, margin, step);
- next_up = LOWER(MIN_900, margin, step);
- next_down = UPPER(MAX_300, margin, step);
- next_band_up = BAND_900;
- next_band_down = BAND_300;
- } else {
- new_band = BAND_300;
- upper_limit = UPPER(MAX_300, margin, step);
- lower_limit = LOWER(MIN_300, margin, step);
- next_up = LOWER(MIN_400, margin, step);
- next_down = UPPER(MAX_900, margin, step);
- next_band_up = BAND_400;
- next_band_down = BAND_900;
- }
-
- if (freq > upper_limit) {
- freq = upper_limit;
- if (new_band == band) {
- new_band = next_band_up;
- freq = next_up;
- }
- } else if (freq < lower_limit) {
- freq = lower_limit;
- if (new_band == band) {
- new_band = next_band_down;
- freq = next_down;
- }
- }
-
- band = new_band;
-
- /* doing everything in Hz from here on */
- switch (band) {
- case BAND_400:
- min_hz = MIN_400 * 1000000;
- max_hz = MAX_400 * 1000000;
- break;
- case BAND_300:
- min_hz = MIN_300 * 1000000;
- max_hz = MAX_300 * 1000000;
- break;
- default:
- min_hz = MIN_900 * 1000000;
- max_hz = MAX_900 * 1000000;
- break;
- }
-
- /* calibrate upper channels */
- hz = freq * 1000000;
- max_chan = NUM_CHANNELS / 2;
- while (hz <= max_hz && max_chan < NUM_CHANNELS) {
- calibrate_freq(hz, max_chan);
- hz += spacing;
- max_chan++;
- }
-
- /* calibrate lower channels */
- hz = freq * 1000000 - spacing;
- min_chan = NUM_CHANNELS / 2;
- while (hz >= min_hz && min_chan > 0) {
- min_chan--;
- calibrate_freq(hz, min_chan);
- hz -= spacing;
- }
-
- center_freq = freq;
- max_hold = 0;
-
- return freq;
+ u8 new_band;
+ u32 spacing;
+ u32 hz;
+ u32 min_hz;
+ u32 max_hz;
+ u8 margin;
+ u8 step;
+ u16 upper_limit;
+ u16 lower_limit;
+ u16 next_up;
+ u16 next_down;
+ u8 next_band_up;
+ u8 next_band_down;
+
+ switch (width) {
+ case NARROW:
+ margin = NARROW_MARGIN;
+ step = NARROW_STEP;
+ spacing = NARROW_SPACING;
+ break;
+ case ULTRAWIDE:
+ margin = ULTRAWIDE_MARGIN;
+ step = ULTRAWIDE_STEP;
+ spacing = ULTRAWIDE_SPACING;
+
+ /* nearest 20 MHz step */
+ freq = ((freq + 10) / 20) * 20;
+ break;
+ default:
+ margin = WIDE_MARGIN;
+ step = WIDE_STEP;
+ spacing = WIDE_SPACING;
+
+ /* nearest 5 MHz step */
+ freq = ((freq + 2) / 5) * 5;
+ break;
+ }
+
+ /* handle cases near edges of bands */
+ if (freq > EDGE_900) {
+ new_band = BAND_900;
+ upper_limit = UPPER(MAX_900, margin, step);
+ lower_limit = LOWER(MIN_900, margin, step);
+ next_up = LOWER(MIN_300, margin, step);
+ next_down = UPPER(MAX_400, margin, step);
+ next_band_up = BAND_300;
+ next_band_down = BAND_400;
+ } else if (freq > EDGE_400) {
+ new_band = BAND_400;
+ upper_limit = UPPER(MAX_400, margin, step);
+ lower_limit = LOWER(MIN_400, margin, step);
+ next_up = LOWER(MIN_900, margin, step);
+ next_down = UPPER(MAX_300, margin, step);
+ next_band_up = BAND_900;
+ next_band_down = BAND_300;
+ } else {
+ new_band = BAND_300;
+ upper_limit = UPPER(MAX_300, margin, step);
+ lower_limit = LOWER(MIN_300, margin, step);
+ next_up = LOWER(MIN_400, margin, step);
+ next_down = UPPER(MAX_900, margin, step);
+ next_band_up = BAND_400;
+ next_band_down = BAND_900;
+ }
+
+ if (freq > upper_limit) {
+ freq = upper_limit;
+ if (new_band == band) {
+ new_band = next_band_up;
+ freq = next_up;
+ }
+ } else if (freq < lower_limit) {
+ freq = lower_limit;
+ if (new_band == band) {
+ new_band = next_band_down;
+ freq = next_down;
+ }
+ }
+
+ band = new_band;
+
+ /* doing everything in Hz from here on */
+ switch (band) {
+ case BAND_400:
+ min_hz = MIN_400 * 1000000;
+ max_hz = MAX_400 * 1000000;
+ break;
+ case BAND_300:
+ min_hz = MIN_300 * 1000000;
+ max_hz = MAX_300 * 1000000;
+ break;
+ default:
+ min_hz = MIN_900 * 1000000;
+ max_hz = MAX_900 * 1000000;
+ break;
+ }
+
+ /* calibrate upper channels */
+ hz = freq * 1000000;
+ max_chan = NUM_CHANNELS / 2;
+ while (hz <= max_hz && max_chan < NUM_CHANNELS) {
+ calibrate_freq(hz, max_chan);
+ hz += spacing;
+ max_chan++;
+ }
+
+ /* calibrate lower channels */
+ hz = freq * 1000000 - spacing;
+ min_chan = NUM_CHANNELS / 2;
+ while (hz >= min_hz && min_chan > 0) {
+ min_chan--;
+ calibrate_freq(hz, min_chan);
+ hz -= spacing;
+ }
+
+ center_freq = freq;
+ max_hold = 0;
+
+ return freq;