diff options
Diffstat (limited to 'firmware/export/tuner.h')
-rw-r--r-- | firmware/export/tuner.h | 173 |
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 */ |