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 @@ | |||
22 | 22 | ||
23 | #include "hwcompat.h" | 23 | #include "hwcompat.h" |
24 | 24 | ||
25 | /* settings to the tuner layer */ | 25 | /** Settings to the tuner layer **/ |
26 | #define RADIO_ALL -1 /* debug */ | 26 | enum |
27 | #define RADIO_SLEEP 0 | 27 | { |
28 | #define RADIO_FREQUENCY 1 | 28 | RADIO_ALL = -1, /* debug */ |
29 | #define RADIO_MUTE 2 | 29 | RADIO_SLEEP, |
30 | #define RADIO_IF_MEASUREMENT 3 | 30 | RADIO_FREQUENCY, |
31 | #define RADIO_SENSITIVITY 4 | 31 | RADIO_MUTE, |
32 | #define RADIO_FORCE_MONO 5 | 32 | RADIO_FORCE_MONO, |
33 | #define RADIO_SCAN_FREQUENCY 6 | 33 | RADIO_SCAN_FREQUENCY, |
34 | #if (CONFIG_TUNER & TEA5767) | 34 | |
35 | #define RADIO_SET_DEEMPHASIS 7 | 35 | /* Put new general-purpose settings above this line */ |
36 | #define RADIO_SET_BAND 8 | 36 | __RADIO_SET_STANDARD_LAST |
37 | #endif | 37 | }; |
38 | #if (CONFIG_TUNER & LV24020LP) | 38 | |
39 | #define RADIO_REGION 9 /* to be used for all tuners */ | 39 | /** Readback from the tuner layer **/ |
40 | #define RADIO_REG_STAT 100 | 40 | enum |
41 | #define RADIO_MSS_FM 101 | 41 | { |
42 | #define RADIO_MSS_IF 102 | 42 | RADIO_PRESENT = 0, |
43 | #define RADIO_MSS_SD 103 | 43 | RADIO_TUNED, |
44 | #define RADIO_IF_SET 104 | 44 | RADIO_STEREO, |
45 | #define RADIO_SD_SET 105 | 45 | |
46 | #endif | 46 | /* Put new general-purpose readback values above this line */ |
47 | /* readback from the tuner layer */ | 47 | __RADIO_GET_STANDARD_LAST |
48 | #define RADIO_PRESENT 0 | 48 | }; |
49 | #define RADIO_TUNED 1 | 49 | |
50 | #define RADIO_STEREO 2 | 50 | /** Tuner regions **/ |
51 | |||
52 | /* Basic region information */ | ||
53 | enum | ||
54 | { | ||
55 | REGION_EUROPE = 0, | ||
56 | REGION_US_CANADA, | ||
57 | REGION_JAPAN, | ||
58 | REGION_KOREA, | ||
59 | |||
60 | /* Add new regions above this line */ | ||
61 | TUNER_NUM_REGIONS | ||
62 | }; | ||
51 | 63 | ||
52 | #define REGION_EUROPE 0 | 64 | struct fm_region_data |
53 | #define REGION_US_CANADA 1 | 65 | { |
54 | #define REGION_JAPAN 2 | 66 | int freq_min; |
55 | #define REGION_KOREA 3 | 67 | int freq_max; |
68 | int freq_step; | ||
69 | }; | ||
70 | |||
71 | extern const struct fm_region_data fm_region_data[TUNER_NUM_REGIONS]; | ||
56 | 72 | ||
57 | #if CONFIG_TUNER | 73 | #if CONFIG_TUNER |
58 | 74 | ||
59 | #ifdef SIMULATOR | 75 | #ifdef SIMULATOR |
60 | int radio_set(int setting, int value); | 76 | int tuner_set(int setting, int value); |
61 | int radio_get(int setting); | 77 | int tuner_get(int setting); |
62 | #else | 78 | #else |
63 | #if CONFIG_TUNER == S1A0903X01 /* FM recorder */ | ||
64 | #define radio_set samsung_set | ||
65 | #define radio_get samsung_get | ||
66 | #elif CONFIG_TUNER == LV24020LP /* Sansa */ | ||
67 | #define radio_set sanyo_set | ||
68 | #define radio_get sanyo_get | ||
69 | #elif CONFIG_TUNER == TEA5767 /* iRiver, iAudio */ | ||
70 | #define radio_set philips_set | ||
71 | #define radio_get philips_get | ||
72 | #elif CONFIG_TUNER == (S1A0903X01 | TEA5767) /* OndioFM */ | ||
73 | #define radio_set _radio_set | ||
74 | #define radio_get _radio_get | ||
75 | int (*_radio_set)(int setting, int value); | ||
76 | int (*_radio_get)(int setting); | ||
77 | #endif /* CONFIG_TUNER == */ | ||
78 | #endif /* SIMULATOR */ | ||
79 | 79 | ||
80 | #if (CONFIG_TUNER & S1A0903X01) | 80 | #ifdef CONFIG_TUNER_MULTI |
81 | int samsung_set(int setting, int value); | 81 | extern int (*tuner_set)(int setting, int value); |
82 | int samsung_get(int setting); | 82 | extern int (*tuner_get)(int setting); |
83 | #endif /* CONFIG_TUNER & S1A0903X01 */ | 83 | #endif /* CONFIG_TUNER_MULTI */ |
84 | 84 | ||
85 | /** Sanyo LV24020LP **/ | ||
85 | #if (CONFIG_TUNER & LV24020LP) | 86 | #if (CONFIG_TUNER & LV24020LP) |
86 | int sanyo_set(int setting, int value); | 87 | /* Sansa e200 Series */ |
87 | int sanyo_get(int setting); | 88 | #include "lv24020lp.h" |
88 | #endif /* CONFIG_TUNER & LV24020LP */ | 89 | #endif |
90 | |||
91 | /** Samsung S1A0903X01 **/ | ||
92 | #if (CONFIG_TUNER & S1A0903X01) | ||
93 | /* Ondio FM, FM Recorder */ | ||
94 | #include "s1a0903x01.h" | ||
95 | #endif | ||
89 | 96 | ||
97 | /** Philips TEA5767 **/ | ||
90 | #if (CONFIG_TUNER & TEA5767) | 98 | #if (CONFIG_TUNER & TEA5767) |
91 | struct philips_dbg_info | 99 | /* Ondio FM, FM Recorder, Recorder V2, iRiver h100/h300, iAudio x5 */ |
100 | #include "tea5767.h" | ||
101 | #endif | ||
102 | |||
103 | #endif /* SIMULATOR */ | ||
104 | |||
105 | /* Additional messages that get enumerated after tuner driver headers */ | ||
106 | |||
107 | /* for tuner_set */ | ||
108 | enum | ||
92 | { | 109 | { |
93 | unsigned char read_regs[5]; | 110 | __RADIO_SET_ADDITIONAL_START = __RADIO_SET_STANDARD_LAST-1, |
94 | unsigned char write_regs[5]; | 111 | #ifdef HAVE_RADIO_REGION |
112 | RADIO_REGION, | ||
113 | #endif | ||
114 | |||
115 | RADIO_SET_CHIP_FIRST | ||
95 | }; | 116 | }; |
96 | int philips_set(int setting, int value); | 117 | |
97 | int philips_get(int setting); | 118 | /* for tuner_get */ |
98 | void philips_dbg_info(struct philips_dbg_info *info); | 119 | enum |
99 | #endif /* CONFIG_TUNER & TEA5767 */ | ||
100 | |||
101 | /* Just inline here since only radio screen needs this atm and | ||
102 | there's no tuner.c. */ | ||
103 | static inline void tuner_init(void) | ||
104 | { | 120 | { |
105 | #ifndef SIMULATOR | 121 | __RADIO_GET_ADDITIONAL_START = __RADIO_SET_STANDARD_LAST-1, |
106 | #if CONFIG_TUNER == (S1A0903X01 | TEA5767) | 122 | |
107 | if (HW_MASK & TUNER_MODEL) | 123 | RADIO_GET_CHIP_FIRST |
108 | { | 124 | }; |
109 | _radio_set = philips_set; | 125 | |
110 | _radio_get = philips_get; | 126 | /** **/ |
111 | } | 127 | |
112 | else | 128 | void tuner_init(void); |
113 | { | 129 | bool tuner_power(bool power); |
114 | _radio_set = samsung_set; | 130 | bool tuner_powered(void); |
115 | _radio_get = samsung_get; | ||
116 | } | ||
117 | #endif | ||
118 | #endif | ||
119 | } | ||
120 | 131 | ||
121 | #endif /* #if CONFIG_TUNER */ | 132 | #endif /* #if CONFIG_TUNER */ |
122 | 133 | ||