diff options
Diffstat (limited to 'sound/drivers/vx/vx_uer.c')
| -rw-r--r-- | sound/drivers/vx/vx_uer.c | 46 |
1 files changed, 18 insertions, 28 deletions
diff --git a/sound/drivers/vx/vx_uer.c b/sound/drivers/vx/vx_uer.c index 18114713c3b3..4fc38bde34f4 100644 --- a/sound/drivers/vx/vx_uer.c +++ b/sound/drivers/vx/vx_uer.c | |||
| @@ -162,34 +162,24 @@ static int vx_read_uer_status(vx_core_t *chip, int *mode) | |||
| 162 | 162 | ||
| 163 | static int vx_calc_clock_from_freq(vx_core_t *chip, int freq) | 163 | static int vx_calc_clock_from_freq(vx_core_t *chip, int freq) |
| 164 | { | 164 | { |
| 165 | #define XX_FECH48000 0x0000004B | 165 | int hexfreq; |
| 166 | #define XX_FECH32000 0x00000171 | 166 | |
| 167 | #define XX_FECH24000 0x0000024B | 167 | snd_assert(freq > 0, return 0); |
| 168 | #define XX_FECH16000 0x00000371 | 168 | |
| 169 | #define XX_FECH12000 0x0000044B | 169 | hexfreq = (28224000 * 10) / freq; |
| 170 | #define XX_FECH8000 0x00000571 | 170 | hexfreq = (hexfreq + 5) / 10; |
| 171 | #define XX_FECH44100 0x0000007F | 171 | |
| 172 | #define XX_FECH29400 0x0000016F | 172 | /* max freq = 55125 Hz */ |
| 173 | #define XX_FECH22050 0x0000027F | 173 | snd_assert(hexfreq > 0x00000200, return 0); |
| 174 | #define XX_FECH14000 0x000003EF | 174 | |
| 175 | #define XX_FECH11025 0x0000047F | 175 | if (hexfreq <= 0x03ff) |
| 176 | #define XX_FECH7350 0x000005BF | 176 | return hexfreq - 0x00000201; |
| 177 | 177 | if (hexfreq <= 0x07ff) | |
| 178 | switch (freq) { | 178 | return (hexfreq / 2) - 1; |
| 179 | case 48000: return XX_FECH48000; | 179 | if (hexfreq <= 0x0fff) |
| 180 | case 44100: return XX_FECH44100; | 180 | return (hexfreq / 4) + 0x000001ff; |
| 181 | case 32000: return XX_FECH32000; | 181 | |
| 182 | case 29400: return XX_FECH29400; | 182 | return 0x5fe; /* min freq = 6893 Hz */ |
| 183 | case 24000: return XX_FECH24000; | ||
| 184 | case 22050: return XX_FECH22050; | ||
| 185 | case 16000: return XX_FECH16000; | ||
| 186 | case 14000: return XX_FECH14000; | ||
| 187 | case 12000: return XX_FECH12000; | ||
| 188 | case 11025: return XX_FECH11025; | ||
| 189 | case 8000: return XX_FECH8000; | ||
| 190 | case 7350: return XX_FECH7350; | ||
| 191 | default: return freq; /* The value is already correct */ | ||
| 192 | } | ||
| 193 | } | 183 | } |
| 194 | 184 | ||
| 195 | 185 | ||
