diff options
Diffstat (limited to 'firmware/drivers/tuner/si4700.c')
-rw-r--r-- | firmware/drivers/tuner/si4700.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/firmware/drivers/tuner/si4700.c b/firmware/drivers/tuner/si4700.c index 8e43fe6acc..f9b26be6f8 100644 --- a/firmware/drivers/tuner/si4700.c +++ b/firmware/drivers/tuner/si4700.c | |||
@@ -370,19 +370,21 @@ static void si4700_set_frequency(int freq) | |||
370 | int space = SYSCONFIG2_SPACEr(cache[SYSCONFIG2]); | 370 | int space = SYSCONFIG2_SPACEr(cache[SYSCONFIG2]); |
371 | int band = SYSCONFIG2_BANDr(cache[SYSCONFIG2]); | 371 | int band = SYSCONFIG2_BANDr(cache[SYSCONFIG2]); |
372 | int chan = (freq - bands[band]) / spacings[space]; | 372 | int chan = (freq - bands[band]) / spacings[space]; |
373 | int readchan; | ||
373 | 374 | ||
374 | curr_frequency = freq; | 375 | curr_frequency = freq; |
375 | 376 | ||
376 | si4700_write_reg(CHANNEL, CHANNEL_CHANw(chan) | CHANNEL_TUNE); | ||
377 | |||
378 | do | 377 | do |
379 | { | 378 | { |
380 | /* tuning should be done within 60 ms according to the datasheet */ | 379 | /* tuning should be done within 60 ms according to the datasheet */ |
380 | si4700_write_reg(CHANNEL, CHANNEL_CHANw(chan) | CHANNEL_TUNE); | ||
381 | sleep(HZ * 60 / 1000); | 381 | sleep(HZ * 60 / 1000); |
382 | } | ||
383 | while ((si4700_read_reg(STATUSRSSI) & STATUSRSSI_STC) == 0); /* STC high? */ | ||
384 | 382 | ||
385 | si4700_write_clear(CHANNEL, CHANNEL_TUNE); /* Set TUNE low */ | 383 | /* get tune result */ |
384 | readchan = si4700_read_reg(READCHAN) & READCHAN_READCHAN; | ||
385 | |||
386 | si4700_write_clear(CHANNEL, CHANNEL_TUNE); | ||
387 | } while (!((cache[STATUSRSSI] & STATUSRSSI_STC) && (readchan == chan))); | ||
386 | } | 388 | } |
387 | 389 | ||
388 | static int si4700_tuned(void) | 390 | static int si4700_tuned(void) |