summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
Diffstat (limited to 'firmware')
-rw-r--r--firmware/drivers/fmradio.c22
-rw-r--r--firmware/export/fmradio.h4
-rw-r--r--firmware/powermgmt.c6
3 files changed, 21 insertions, 11 deletions
diff --git a/firmware/drivers/fmradio.c b/firmware/drivers/fmradio.c
index 0d947f4480..14abb8e2b0 100644
--- a/firmware/drivers/fmradio.c
+++ b/firmware/drivers/fmradio.c
@@ -50,17 +50,7 @@
50/* delay loop */ 50/* delay loop */
51#define DELAY do { int _x; for(_x=0;_x<10;_x++);} while (0) 51#define DELAY do { int _x; for(_x=0;_x<10;_x++);} while (0)
52 52
53static struct mutex fmradio_mtx; 53static int fmstatus = 0;
54
55void fmradio_begin(void)
56{
57 mutex_lock(&fmradio_mtx);
58}
59
60void fmradio_end(void)
61{
62 mutex_unlock(&fmradio_mtx);
63}
64 54
65int fmradio_read(int addr) 55int fmradio_read(int addr)
66{ 56{
@@ -130,4 +120,14 @@ void fmradio_set(int addr, int data)
130 CE_LO; 120 CE_LO;
131} 121}
132 122
123void fmradio_set_status(int status)
124{
125 fmstatus = status;
126}
127
128int fmradio_get_status(void)
129{
130 return fmstatus;
131}
132
133#endif 133#endif
diff --git a/firmware/export/fmradio.h b/firmware/export/fmradio.h
index 2877501361..b5b239bde1 100644
--- a/firmware/export/fmradio.h
+++ b/firmware/export/fmradio.h
@@ -21,5 +21,9 @@
21 21
22extern int fmradio_read(int addr); 22extern int fmradio_read(int addr);
23extern void fmradio_set(int addr, int data); 23extern void fmradio_set(int addr, int data);
24extern void fmradio_set_status(int status);
25extern int fmradio_get_status(void);
26
27#define FMRADIO_PLAYING 1
24 28
25#endif 29#endif
diff --git a/firmware/powermgmt.c b/firmware/powermgmt.c
index e04e520ad1..00492bbcc6 100644
--- a/firmware/powermgmt.c
+++ b/firmware/powermgmt.c
@@ -34,6 +34,9 @@
34#include "usb.h" 34#include "usb.h"
35#include "powermgmt.h" 35#include "powermgmt.h"
36#include "backlight.h" 36#include "backlight.h"
37#ifdef HAVE_FMRADIO
38#include "fmradio.h"
39#endif
37 40
38#ifdef SIMULATOR 41#ifdef SIMULATOR
39 42
@@ -299,6 +302,9 @@ static void handle_auto_poweroff(void)
299 charger_was_inserted = charger_is_inserted; 302 charger_was_inserted = charger_is_inserted;
300 303
301 if(timeout && 304 if(timeout &&
305#ifdef HAVE_FMRADIO
306 !fmradio_get_status() &&
307#endif
302 !usb_inserted() && 308 !usb_inserted() &&
303 (mpeg_stat == 0 || 309 (mpeg_stat == 0 ||
304 mpeg_stat == (MPEG_STATUS_PLAY | MPEG_STATUS_PAUSE))) 310 mpeg_stat == (MPEG_STATUS_PLAY | MPEG_STATUS_PAUSE)))