summaryrefslogtreecommitdiff
path: root/firmware/drivers/tuner/rda5802.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/drivers/tuner/rda5802.c')
-rw-r--r--firmware/drivers/tuner/rda5802.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/firmware/drivers/tuner/rda5802.c b/firmware/drivers/tuner/rda5802.c
index 43dffe2355..82dc0bbcb9 100644
--- a/firmware/drivers/tuner/rda5802.c
+++ b/firmware/drivers/tuner/rda5802.c
@@ -34,6 +34,10 @@
34 34
35#define I2C_ADR 0x20 35#define I2C_ADR 0x20
36 36
37/* define RSSI range */
38#define RSSI_MIN 0
39#define RSSI_MAX 70
40
37/** Registers and bits **/ 41/** Registers and bits **/
38#define POWERCFG 0x2 42#define POWERCFG 0x2
39#define CHANNEL 0x3 43#define CHANNEL 0x3
@@ -263,6 +267,12 @@ static bool rda5802_st(void)
263 return (rda5802_read_reg(READCHAN) & READCHAN_ST); 267 return (rda5802_read_reg(READCHAN) & READCHAN_ST);
264} 268}
265 269
270static int rda5802_rssi(void)
271{
272 uint16_t status = rda5802_read_reg(STATUSRSSI);
273 return STATUSRSSI_RSSIr(status);
274}
275
266/* tuner abstraction layer: set something to the tuner */ 276/* tuner abstraction layer: set something to the tuner */
267int rda5802_set(int setting, int value) 277int rda5802_set(int setting, int value)
268{ 278{
@@ -323,6 +333,18 @@ int rda5802_get(int setting)
323 case RADIO_STEREO: 333 case RADIO_STEREO:
324 val = rda5802_st(); 334 val = rda5802_st();
325 break; 335 break;
336
337 case RADIO_RSSI:
338 val = rda5802_rssi();
339 break;
340
341 case RADIO_RSSI_MIN:
342 val = RSSI_MIN;
343 break;
344
345 case RADIO_RSSI_MAX:
346 val = RSSI_MAX;
347 break;
326 } 348 }
327 349
328 return val; 350 return val;