summaryrefslogtreecommitdiff
path: root/firmware/export/tuner.h
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/export/tuner.h')
-rw-r--r--firmware/export/tuner.h173
1 files changed, 92 insertions, 81 deletions
diff --git a/firmware/export/tuner.h b/firmware/export/tuner.h
index 9f6d29f697..cf18102744 100644
--- a/firmware/export/tuner.h
+++ b/firmware/export/tuner.h
@@ -22,101 +22,112 @@
#include "hwcompat.h"
-/* settings to the tuner layer */
-#define RADIO_ALL -1 /* debug */
-#define RADIO_SLEEP 0
-#define RADIO_FREQUENCY 1
-#define RADIO_MUTE 2
-#define RADIO_IF_MEASUREMENT 3
-#define RADIO_SENSITIVITY 4
-#define RADIO_FORCE_MONO 5
-#define RADIO_SCAN_FREQUENCY 6
-#if (CONFIG_TUNER & TEA5767)
-#define RADIO_SET_DEEMPHASIS 7
-#define RADIO_SET_BAND 8
-#endif
-#if (CONFIG_TUNER & LV24020LP)
-#define RADIO_REGION 9 /* to be used for all tuners */
-#define RADIO_REG_STAT 100
-#define RADIO_MSS_FM 101
-#define RADIO_MSS_IF 102
-#define RADIO_MSS_SD 103
-#define RADIO_IF_SET 104
-#define RADIO_SD_SET 105
-#endif
-/* readback from the tuner layer */
-#define RADIO_PRESENT 0
-#define RADIO_TUNED 1
-#define RADIO_STEREO 2
+/** Settings to the tuner layer **/
+enum
+{
+ RADIO_ALL = -1, /* debug */
+ RADIO_SLEEP,
+ RADIO_FREQUENCY,
+ RADIO_MUTE,
+ RADIO_FORCE_MONO,
+ RADIO_SCAN_FREQUENCY,
+
+ /* Put new general-purpose settings above this line */
+ __RADIO_SET_STANDARD_LAST
+};
+
+/** Readback from the tuner layer **/
+enum
+{
+ RADIO_PRESENT = 0,
+ RADIO_TUNED,
+ RADIO_STEREO,
+
+ /* Put new general-purpose readback values above this line */
+ __RADIO_GET_STANDARD_LAST
+};
+
+/** Tuner regions **/
+
+/* Basic region information */
+enum
+{
+ REGION_EUROPE = 0,
+ REGION_US_CANADA,
+ REGION_JAPAN,
+ REGION_KOREA,
+
+ /* Add new regions above this line */
+ TUNER_NUM_REGIONS
+};
-#define REGION_EUROPE 0
-#define REGION_US_CANADA 1
-#define REGION_JAPAN 2
-#define REGION_KOREA 3
+struct fm_region_data
+{
+ int freq_min;
+ int freq_max;
+ int freq_step;
+};
+
+extern const struct fm_region_data fm_region_data[TUNER_NUM_REGIONS];
#if CONFIG_TUNER
#ifdef SIMULATOR
-int radio_set(int setting, int value);
-int radio_get(int setting);
+int tuner_set(int setting, int value);
+int tuner_get(int setting);
#else
-#if CONFIG_TUNER == S1A0903X01 /* FM recorder */
-#define radio_set samsung_set
-#define radio_get samsung_get
-#elif CONFIG_TUNER == LV24020LP /* Sansa */
-#define radio_set sanyo_set
-#define radio_get sanyo_get
-#elif CONFIG_TUNER == TEA5767 /* iRiver, iAudio */
-#define radio_set philips_set
-#define radio_get philips_get
-#elif CONFIG_TUNER == (S1A0903X01 | TEA5767) /* OndioFM */
-#define radio_set _radio_set
-#define radio_get _radio_get
-int (*_radio_set)(int setting, int value);
-int (*_radio_get)(int setting);
-#endif /* CONFIG_TUNER == */
-#endif /* SIMULATOR */
-#if (CONFIG_TUNER & S1A0903X01)
-int samsung_set(int setting, int value);
-int samsung_get(int setting);
-#endif /* CONFIG_TUNER & S1A0903X01 */
+#ifdef CONFIG_TUNER_MULTI
+extern int (*tuner_set)(int setting, int value);
+extern int (*tuner_get)(int setting);
+#endif /* CONFIG_TUNER_MULTI */
+/** Sanyo LV24020LP **/
#if (CONFIG_TUNER & LV24020LP)
-int sanyo_set(int setting, int value);
-int sanyo_get(int setting);
-#endif /* CONFIG_TUNER & LV24020LP */
+/* Sansa e200 Series */
+#include "lv24020lp.h"
+#endif
+
+/** Samsung S1A0903X01 **/
+#if (CONFIG_TUNER & S1A0903X01)
+/* Ondio FM, FM Recorder */
+#include "s1a0903x01.h"
+#endif
+/** Philips TEA5767 **/
#if (CONFIG_TUNER & TEA5767)
-struct philips_dbg_info
+/* Ondio FM, FM Recorder, Recorder V2, iRiver h100/h300, iAudio x5 */
+#include "tea5767.h"
+#endif
+
+#endif /* SIMULATOR */
+
+/* Additional messages that get enumerated after tuner driver headers */
+
+/* for tuner_set */
+enum
{
- unsigned char read_regs[5];
- unsigned char write_regs[5];
+ __RADIO_SET_ADDITIONAL_START = __RADIO_SET_STANDARD_LAST-1,
+#ifdef HAVE_RADIO_REGION
+ RADIO_REGION,
+#endif
+
+ RADIO_SET_CHIP_FIRST
};
-int philips_set(int setting, int value);
-int philips_get(int setting);
-void philips_dbg_info(struct philips_dbg_info *info);
-#endif /* CONFIG_TUNER & TEA5767 */
-
-/* Just inline here since only radio screen needs this atm and
- there's no tuner.c. */
-static inline void tuner_init(void)
+
+/* for tuner_get */
+enum
{
-#ifndef SIMULATOR
-#if CONFIG_TUNER == (S1A0903X01 | TEA5767)
- if (HW_MASK & TUNER_MODEL)
- {
- _radio_set = philips_set;
- _radio_get = philips_get;
- }
- else
- {
- _radio_set = samsung_set;
- _radio_get = samsung_get;
- }
-#endif
-#endif
-}
+ __RADIO_GET_ADDITIONAL_START = __RADIO_SET_STANDARD_LAST-1,
+
+ RADIO_GET_CHIP_FIRST
+};
+
+/** **/
+
+void tuner_init(void);
+bool tuner_power(bool power);
+bool tuner_powered(void);
#endif /* #if CONFIG_TUNER */