diff options
Diffstat (limited to 'firmware/drivers/tuner/si4700.c')
-rw-r--r-- | firmware/drivers/tuner/si4700.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/firmware/drivers/tuner/si4700.c b/firmware/drivers/tuner/si4700.c index dfc0e46caf..4747357037 100644 --- a/firmware/drivers/tuner/si4700.c +++ b/firmware/drivers/tuner/si4700.c | |||
@@ -50,6 +50,10 @@ extern int si4700_st(void); | |||
50 | 50 | ||
51 | #define I2C_ADR 0x20 | 51 | #define I2C_ADR 0x20 |
52 | 52 | ||
53 | /* define RSSI range */ | ||
54 | #define RSSI_MIN 0 | ||
55 | #define RSSI_MAX 70 | ||
56 | |||
53 | /** Registers and bits - "x" denotes Si4702/03 only (so they say) **/ | 57 | /** Registers and bits - "x" denotes Si4702/03 only (so they say) **/ |
54 | #define DEVICEID 0x0 | 58 | #define DEVICEID 0x0 |
55 | #define CHIPID 0x1 | 59 | #define CHIPID 0x1 |
@@ -197,7 +201,7 @@ extern int si4700_st(void); | |||
197 | #define STATUSRSSI_BLERA (0x3 << 9) /* x */ | 201 | #define STATUSRSSI_BLERA (0x3 << 9) /* x */ |
198 | #define STATUSRSSI_ST (0x1 << 8) | 202 | #define STATUSRSSI_ST (0x1 << 8) |
199 | #define STATUSRSSI_RSSI (0xff << 0) | 203 | #define STATUSRSSI_RSSI (0xff << 0) |
200 | #define STATUSRSSI_RSSIr(x) ((x) & 0xff) | 204 | #define STATUSRSSI_RSSIr(x) ((x) & 0xff) |
201 | 205 | ||
202 | /* READCHAN (0xB) */ | 206 | /* READCHAN (0xB) */ |
203 | #define READCHAN_BLERB (0x3 << 14) /* x */ | 207 | #define READCHAN_BLERB (0x3 << 14) /* x */ |
@@ -481,6 +485,18 @@ int si4700_get(int setting) | |||
481 | case RADIO_STEREO: | 485 | case RADIO_STEREO: |
482 | val = si4700_st(); | 486 | val = si4700_st(); |
483 | break; | 487 | break; |
488 | |||
489 | case RADIO_RSSI: | ||
490 | val = STATUSRSSI_RSSIr(si4700_read_reg(STATUSRSSI)); | ||
491 | break; | ||
492 | |||
493 | case RADIO_RSSI_MIN: | ||
494 | val = RSSI_MIN; | ||
495 | break; | ||
496 | |||
497 | case RADIO_RSSI_MAX: | ||
498 | val = RSSI_MAX; | ||
499 | break; | ||
484 | } | 500 | } |
485 | 501 | ||
486 | return val; | 502 | return val; |