mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-10-13 18:17:39 -04:00
Back-port r28582 (prevent hang when changing radio region on si4700/rda5802), see also FS#11754
git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_7@28594 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
6c0746fc88
commit
9772ea2b85
2 changed files with 0 additions and 19 deletions
|
@ -96,7 +96,6 @@ static const uint16_t initvals[16] = {
|
|||
};
|
||||
|
||||
static bool tuner_present = false;
|
||||
static int curr_frequency = 87500000; /* Current station frequency (HZ) */
|
||||
static uint16_t cache[16];
|
||||
|
||||
/* reads <len> registers from radio at offset 0x0A into cache */
|
||||
|
@ -204,8 +203,6 @@ static void rda5802_set_frequency(int freq)
|
|||
int start = CHANNEL_BANDr(cache[CHANNEL]) & 1 ? 76000000 : 87000000;
|
||||
int chan = (freq - start) / 50000;
|
||||
|
||||
curr_frequency = freq;
|
||||
|
||||
for (i = 0; i < 5; i++) {
|
||||
/* tune and wait a bit */
|
||||
rda5802_write_masked(CHANNEL, CHANNEL_CHANw(chan) | CHANNEL_TUNE,
|
||||
|
@ -246,16 +243,9 @@ static void rda5802_set_region(int region)
|
|||
|
||||
uint16_t bandspacing = CHANNEL_BANDw(band) |
|
||||
CHANNEL_SPACEw(CHANNEL_SPACE_50KHZ);
|
||||
uint16_t oldbs = cache[CHANNEL] & (CHANNEL_BAND | CHANNEL_SPACE);
|
||||
|
||||
rda5802_write_masked(SYSCONFIG1, deemphasis, SYSCONFIG1_DE);
|
||||
rda5802_write_masked(CHANNEL, bandspacing, CHANNEL_BAND | CHANNEL_SPACE);
|
||||
rda5802_write_cache();
|
||||
|
||||
/* Retune if this region change would change the channel number. */
|
||||
if (oldbs != bandspacing) {
|
||||
rda5802_set_frequency(curr_frequency);
|
||||
}
|
||||
}
|
||||
|
||||
static bool rda5802_st(void)
|
||||
|
|
|
@ -209,7 +209,6 @@ extern int si4700_st(void);
|
|||
/* 4702/03: RDS Block A-D data */
|
||||
|
||||
static bool tuner_present = false;
|
||||
static int curr_frequency = 87500000; /* Current station frequency (HZ) */
|
||||
static uint16_t cache[16];
|
||||
|
||||
/* reads <len> registers from radio at offset 0x0A into cache */
|
||||
|
@ -376,8 +375,6 @@ static void si4700_set_frequency(int freq)
|
|||
int chan = (freq - bands[band]) / spacings[space];
|
||||
int readchan;
|
||||
|
||||
curr_frequency = freq;
|
||||
|
||||
do
|
||||
{
|
||||
/* tuning should be done within 60 ms according to the datasheet */
|
||||
|
@ -412,15 +409,9 @@ static void si4700_set_region(int region)
|
|||
|
||||
uint16_t bandspacing = SYSCONFIG2_BANDw(band) |
|
||||
SYSCONFIG2_SPACEw(spacing);
|
||||
uint16_t oldbs = cache[SYSCONFIG2] & (SYSCONFIG2_BAND | SYSCONFIG2_SPACE);
|
||||
|
||||
si4700_write_masked(SYSCONFIG1, deemphasis, SYSCONFIG1_DE);
|
||||
si4700_write_masked(SYSCONFIG2, bandspacing,
|
||||
SYSCONFIG2_BAND | SYSCONFIG2_SPACE);
|
||||
|
||||
/* Retune if this region change would change the channel number. */
|
||||
if (oldbs != bandspacing)
|
||||
si4700_set_frequency(curr_frequency);
|
||||
}
|
||||
|
||||
/* tuner abstraction layer: set something to the tuner */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue