diff options
Diffstat (limited to 'firmware/target/arm/i2s-pp.c')
-rw-r--r-- | firmware/target/arm/i2s-pp.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/firmware/target/arm/i2s-pp.c b/firmware/target/arm/i2s-pp.c index c63287b72b..b9e32b8789 100644 --- a/firmware/target/arm/i2s-pp.c +++ b/firmware/target/arm/i2s-pp.c | |||
@@ -25,6 +25,7 @@ | |||
25 | ****************************************************************************/ | 25 | ****************************************************************************/ |
26 | 26 | ||
27 | #include "system.h" | 27 | #include "system.h" |
28 | #include "cpu.h" | ||
28 | 29 | ||
29 | /* TODO: Add in PP5002 defs */ | 30 | /* TODO: Add in PP5002 defs */ |
30 | #if CONFIG_CPU == PP5002 | 31 | #if CONFIG_CPU == PP5002 |
@@ -140,4 +141,34 @@ void i2s_reset(void) | |||
140 | /* Rx.CLR = 1, TX.CLR = 1 */ | 141 | /* Rx.CLR = 1, TX.CLR = 1 */ |
141 | IISFIFO_CFG |= 0x1100; | 142 | IISFIFO_CFG |= 0x1100; |
142 | } | 143 | } |
144 | |||
145 | #ifdef SANSA_E200 | ||
146 | void i2s_scale_attn_level(long frequency) | ||
147 | { | ||
148 | unsigned int iisfifo_cfg = IISFIFO_CFG & ~0xff; | ||
149 | |||
150 | /* TODO: set this more appropriately for frequency */ | ||
151 | if (frequency <= CPUFREQ_DEFAULT) | ||
152 | { | ||
153 | /* when 4 slots full */ | ||
154 | /* when 4 slots empty */ | ||
155 | iisfifo_cfg |= 0x11; | ||
156 | } | ||
157 | else if (frequency < CPUFREQ_MAX) | ||
158 | { | ||
159 | /* when 8 slots full */ | ||
160 | /* when 8 slots empty */ | ||
161 | iisfifo_cfg |= 0x22; | ||
162 | } | ||
163 | else | ||
164 | { | ||
165 | /* when 12 slots full */ | ||
166 | /* when 12 slots empty */ | ||
167 | iisfifo_cfg |= 0x33; | ||
168 | } | ||
169 | |||
170 | IISFIFO_CFG = iisfifo_cfg; | ||
171 | } | ||
172 | #endif /* SANSA_E200 */ | ||
173 | |||
143 | #endif | 174 | #endif |