• Home
  • Raw
  • Download

Lines Matching +full:switch +full:- +full:freq

2  *  Support for Digigram Lola PCI-e boards
18 * Temple Place - Suite 330, Boston, MA 02111-1307, USA.
30 unsigned int freq; in lola_sample_rate_convert() local
33 switch (coded & 0x3) { in lola_sample_rate_convert()
34 case 0: freq = 48000; break; in lola_sample_rate_convert()
35 case 1: freq = 44100; break; in lola_sample_rate_convert()
36 case 2: freq = 32000; break; in lola_sample_rate_convert()
41 switch (coded & 0x1c) { in lola_sample_rate_convert()
44 case (1 << 2): freq *= 2; break; in lola_sample_rate_convert()
45 case (2 << 2): freq *= 4; break; in lola_sample_rate_convert()
46 case (5 << 2): freq /= 2; break; in lola_sample_rate_convert()
47 case (6 << 2): freq /= 4; break; in lola_sample_rate_convert()
52 switch (coded & 0x60) { in lola_sample_rate_convert()
54 case (1 << 5): freq = (freq * 999) / 1000; break; in lola_sample_rate_convert()
55 case (2 << 5): freq = (freq * 1001) / 1000; break; in lola_sample_rate_convert()
58 return freq; in lola_sample_rate_convert()
70 unsigned int freq) in check_gran_clock_compatibility() argument
72 if (!chip->granularity) in check_gran_clock_compatibility()
80 if (freq > LOLA_MAXFREQ_AT_GRANULARITY_MIN) in check_gran_clock_compatibility()
83 if (freq > LOLA_MAXFREQ_AT_GRANULARITY_BELOW_MAX) in check_gran_clock_compatibility()
94 if (val == chip->granularity) in lola_set_granularity()
98 if (chip->audio_in_alloc_mask || chip->audio_out_alloc_mask) in lola_set_granularity()
99 return -EBUSY; in lola_set_granularity()
102 chip->clock.cur_freq)) in lola_set_granularity()
103 return -EINVAL; in lola_set_granularity()
106 chip->granularity = val; in lola_set_granularity()
131 dev_err(chip->card->dev, "Can't read wcaps for 0x%x\n", nid); in lola_init_clock_widget()
136 dev_dbg(chip->card->dev, "No valid clock widget\n"); in lola_init_clock_widget()
140 chip->clock.nid = nid; in lola_init_clock_widget()
141 chip->clock.items = val & 0xff; in lola_init_clock_widget()
142 dev_dbg(chip->card->dev, "clock_list nid=%x, entries=%d\n", nid, in lola_init_clock_widget()
143 chip->clock.items); in lola_init_clock_widget()
144 if (chip->clock.items > MAX_SAMPLE_CLOCK_COUNT) { in lola_init_clock_widget()
145 dev_err(chip->card->dev, "CLOCK_LIST too big: %d\n", in lola_init_clock_widget()
146 chip->clock.items); in lola_init_clock_widget()
147 return -EINVAL; in lola_init_clock_widget()
150 nitems = chip->clock.items; in lola_init_clock_widget()
161 dev_err(chip->card->dev, "Can't read CLOCK_LIST\n"); in lola_init_clock_widget()
162 return -EINVAL; in lola_init_clock_widget()
172 unsigned int freq = items[j] & 0xff; in lola_init_clock_widget() local
176 freq = lola_sample_rate_convert(freq); in lola_init_clock_widget()
177 if (freq < chip->sample_rate_min) in lola_init_clock_widget()
179 else if (freq == 48000) { in lola_init_clock_widget()
180 chip->clock.cur_index = idx_list; in lola_init_clock_widget()
181 chip->clock.cur_freq = 48000; in lola_init_clock_widget()
182 chip->clock.cur_valid = true; in lola_init_clock_widget()
185 freq = lola_sample_rate_convert(freq); in lola_init_clock_widget()
186 if (freq < chip->sample_rate_min) in lola_init_clock_widget()
196 sc = &chip->clock.sample_clock[idx_list]; in lola_init_clock_widget()
197 sc->type = type; in lola_init_clock_widget()
198 sc->format = format; in lola_init_clock_widget()
199 sc->freq = freq; in lola_init_clock_widget()
201 chip->clock.idx_lookup[idx_list] = idx; in lola_init_clock_widget()
204 chip->clock.items--; in lola_init_clock_widget()
219 err = lola_codec_read(chip, chip->clock.nid, in lola_enable_clock_events()
226 dev_warn(chip->card->dev, "error in enable_clock_events %d\n", in lola_enable_clock_events()
228 return -EINVAL; in lola_enable_clock_events()
238 err = lola_codec_read(chip, chip->clock.nid, in lola_set_clock_index()
240 chip->clock.idx_lookup[idx], in lola_set_clock_index()
245 dev_warn(chip->card->dev, "error in set_clock %d\n", res); in lola_set_clock_index()
246 return -EINVAL; in lola_set_clock_index()
265 if (chip->clock.sample_clock[chip->clock.cur_index].type != in lola_update_ext_clock_freq()
267 chip->clock.cur_freq = lola_sample_rate_convert(val & 0x7f); in lola_update_ext_clock_freq()
268 chip->clock.cur_valid = (val & 0x100) != 0; in lola_update_ext_clock_freq()
275 int freq = 0; in lola_set_clock() local
278 if (idx == chip->clock.cur_index) { in lola_set_clock()
280 freq = chip->clock.cur_freq; in lola_set_clock()
281 valid = chip->clock.cur_valid; in lola_set_clock()
282 } else if (chip->clock.sample_clock[idx].type == in lola_set_clock()
285 freq = chip->clock.sample_clock[idx].freq; in lola_set_clock()
289 if (!freq || !valid) in lola_set_clock()
290 return -EINVAL; in lola_set_clock()
292 if (!check_gran_clock_compatibility(chip, chip->granularity, freq)) in lola_set_clock()
293 return -EINVAL; in lola_set_clock()
295 if (idx != chip->clock.cur_index) { in lola_set_clock()
300 chip->clock.cur_index = idx; in lola_set_clock()
301 chip->clock.cur_freq = freq; in lola_set_clock()
302 chip->clock.cur_valid = true; in lola_set_clock()
311 if (chip->clock.cur_freq == rate && chip->clock.cur_valid) in lola_set_sample_rate()
314 for (i = 0; i < chip->clock.items; i++) { in lola_set_sample_rate()
315 if (chip->clock.sample_clock[i].type == LOLA_CLOCK_TYPE_INTERNAL && in lola_set_sample_rate()
316 chip->clock.sample_clock[i].freq == rate) in lola_set_sample_rate()
319 if (i >= chip->clock.items) in lola_set_sample_rate()
320 return -EINVAL; in lola_set_sample_rate()