Lines Matching refs:chip

68 static bool check_gran_clock_compatibility(struct lola *chip,  in check_gran_clock_compatibility()  argument
72 if (!chip->granularity) in check_gran_clock_compatibility()
89 int lola_set_granularity(struct lola *chip, unsigned int val, bool force) in lola_set_granularity() argument
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()
101 if (!check_gran_clock_compatibility(chip, val, in lola_set_granularity()
102 chip->clock.cur_freq)) in lola_set_granularity()
106 chip->granularity = val; in lola_set_granularity()
110 err = lola_codec_write(chip, 1, LOLA_VERB_SET_GRANULARITY_STEPS, in lola_set_granularity()
116 return lola_codec_flush(chip); in lola_set_granularity()
123 int lola_init_clock_widget(struct lola *chip, int nid) in lola_init_clock_widget() argument
129 err = lola_read_param(chip, nid, LOLA_PAR_AUDIO_WIDGET_CAP, &val); in lola_init_clock_widget()
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()
150 nitems = chip->clock.items; in lola_init_clock_widget()
158 err = lola_codec_read(chip, nid, LOLA_VERB_GET_CLOCK_LIST, in lola_init_clock_widget()
161 dev_err(chip->card->dev, "Can't read CLOCK_LIST\n"); in lola_init_clock_widget()
177 if (freq < chip->sample_rate_min) 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()
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()
201 chip->clock.idx_lookup[idx_list] = idx; in lola_init_clock_widget()
204 chip->clock.items--; in lola_init_clock_widget()
214 int lola_enable_clock_events(struct lola *chip) in lola_enable_clock_events() argument
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()
233 int lola_set_clock_index(struct lola *chip, unsigned int idx) in lola_set_clock_index() argument
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()
251 bool lola_update_ext_clock_freq(struct lola *chip, unsigned int val) in lola_update_ext_clock_freq() argument
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()
273 int lola_set_clock(struct lola *chip, int idx) in lola_set_clock() argument
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()
292 if (!check_gran_clock_compatibility(chip, chip->granularity, freq)) in lola_set_clock()
295 if (idx != chip->clock.cur_index) { in lola_set_clock()
296 int err = lola_set_clock_index(chip, idx); 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()
307 int lola_set_sample_rate(struct lola *chip, int rate) in lola_set_sample_rate() argument
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()
321 return lola_set_clock(chip, i); in lola_set_sample_rate()