summaryrefslogtreecommitdiff
path: root/firmware/export
diff options
context:
space:
mode:
authorWolfram Sang <wsa@the-dreams.de>2021-12-10 16:13:49 +0100
committerWolfram Sang <wsa@the-dreams.de>2022-02-07 22:01:20 +0100
commit5b8873bf333add9ec7208901c62bbd30ad7ea8c3 (patch)
treef17916b7dcf0fb8059354094858a9f691c703b9f /firmware/export
parent8d453ae9c3beef82bd61401af6216f74a400cbd0 (diff)
downloadrockbox-5b8873bf333add9ec7208901c62bbd30ad7ea8c3.tar.gz
rockbox-5b8873bf333add9ec7208901c62bbd30ad7ea8c3.zip
RFT: convert Gigabeat RDS to thread
This kind of reverts 7b596416bf ("Gigabeat S: Update RDS processing to use asynchronous I2C rather than thread."). However, requiring RDS to run in thread context will a) allow more upcoming features and b) remove quite some complexity from the codebase (see the diffstat here) because Gigabeat is the only user. iMX31 should be able to handle one more thread, as it can even run Linux. Change-Id: I46130034595ba66392c5417c275d036f4bd26943
Diffstat (limited to 'firmware/export')
-rw-r--r--firmware/export/config.h2
-rw-r--r--firmware/export/config/gigabeats.h3
-rw-r--r--firmware/export/si4700.h8
3 files changed, 2 insertions, 11 deletions
diff --git a/firmware/export/config.h b/firmware/export/config.h
index 2ae7ef2c53..efd99569b6 100644
--- a/firmware/export/config.h
+++ b/firmware/export/config.h
@@ -728,7 +728,7 @@ Lyre prototype 1 */
728 728
729#ifdef HAVE_RDS_CAP 729#ifdef HAVE_RDS_CAP
730/* combinable bitflags */ 730/* combinable bitflags */
731#define RDS_CFG_ISR 0x1 /* uses ISR to process packets */ 731/* 0x01 can be reused, was RDS_CFG_ISR */
732#define RDS_CFG_PROCESS 0x2 /* uses raw packet processing */ 732#define RDS_CFG_PROCESS 0x2 /* uses raw packet processing */
733#define RDS_CFG_PUSH 0x4 /* pushes processed information */ 733#define RDS_CFG_PUSH 0x4 /* pushes processed information */
734#define RDS_CFG_POLL 0x8 /* tuner driver provides a polling function */ 734#define RDS_CFG_POLL 0x8 /* tuner driver provides a polling function */
diff --git a/firmware/export/config/gigabeats.h b/firmware/export/config/gigabeats.h
index 8d82b44065..edf76d0e98 100644
--- a/firmware/export/config/gigabeats.h
+++ b/firmware/export/config/gigabeats.h
@@ -121,7 +121,6 @@
121/* Define this if you have a SI4700 fm radio tuner */ 121/* Define this if you have a SI4700 fm radio tuner */
122#define CONFIG_TUNER SI4700 122#define CONFIG_TUNER SI4700
123#define HAVE_RDS_CAP 123#define HAVE_RDS_CAP
124#define CONFIG_RDS (RDS_CFG_ISR | RDS_CFG_PROCESS)
125 124
126/* define this if you can flip your LCD */ 125/* define this if you can flip your LCD */
127#define HAVE_LCD_FLIP 126#define HAVE_LCD_FLIP
@@ -164,7 +163,7 @@
164#define GPIO_EVENT_MASK (USE_GPIO1_EVENTS) 163#define GPIO_EVENT_MASK (USE_GPIO1_EVENTS)
165 164
166/* Define this if target has an additional number of threads specific to it */ 165/* Define this if target has an additional number of threads specific to it */
167#define TARGET_EXTRA_THREADS 1 166#define TARGET_EXTRA_THREADS 2 /* one is for RDS */
168 167
169/* Type of mobile power - check this out */ 168/* Type of mobile power - check this out */
170#define BATTERY_CAPACITY_DEFAULT 700 /* default battery capacity */ 169#define BATTERY_CAPACITY_DEFAULT 700 /* default battery capacity */
diff --git a/firmware/export/si4700.h b/firmware/export/si4700.h
index 033b435f2a..cf9e0f077b 100644
--- a/firmware/export/si4700.h
+++ b/firmware/export/si4700.h
@@ -49,15 +49,7 @@ void si4700_rds_init(void) INIT_ATTR;
49/* Radio is fully powered up or about to be powered down */ 49/* Radio is fully powered up or about to be powered down */
50void si4700_rds_powerup(bool on); 50void si4700_rds_powerup(bool on);
51 51
52#if (CONFIG_RDS & RDS_CFG_ISR)
53/* Read raw RDS info for processing - asynchronously */
54void si4700_rds_read_raw_async(unsigned char *buf, int count); /* implemented by target */
55void si4700_rds_interrupt(void);
56#endif /* (CONFIG_RDS & RDS_CFG_ISR) */
57
58/* Read raw RDS info for processing. 52/* Read raw RDS info for processing.
59 * - If RDS_CFG_ISR is set, the tuner driver will call si4700_rds_read_raw_async() which should
60 * perform an asynchronous read and call this function when the data has been read.
61 * - If RDS_CFG_POLL is set, this function will read status and RDS data and process it if a new 53 * - If RDS_CFG_POLL is set, this function will read status and RDS data and process it if a new
62 * packet is available. 54 * packet is available.
63 * - Otherwise this function will read a RDS packet and process it under the assumption that it is 55 * - Otherwise this function will read a RDS packet and process it under the assumption that it is