Lines Matching full:rt
60 static void usb6fire_control_output_vol_update(struct control_runtime *rt) in usb6fire_control_output_vol_update() argument
62 struct comm_runtime *comm_rt = rt->chip->comm; in usb6fire_control_output_vol_update()
67 if (!(rt->ovol_updated & (1 << i))) { in usb6fire_control_output_vol_update()
69 180 - rt->output_vol[i]); in usb6fire_control_output_vol_update()
70 rt->ovol_updated |= 1 << i; in usb6fire_control_output_vol_update()
74 static void usb6fire_control_output_mute_update(struct control_runtime *rt) in usb6fire_control_output_mute_update() argument
76 struct comm_runtime *comm_rt = rt->chip->comm; in usb6fire_control_output_mute_update()
79 comm_rt->write8(comm_rt, 0x12, 0x0e, ~rt->output_mute); in usb6fire_control_output_mute_update()
82 static void usb6fire_control_input_vol_update(struct control_runtime *rt) in usb6fire_control_input_vol_update() argument
84 struct comm_runtime *comm_rt = rt->chip->comm; in usb6fire_control_input_vol_update()
89 if (!(rt->ivol_updated & (1 << i))) { in usb6fire_control_input_vol_update()
91 rt->input_vol[i] & 0x3f); in usb6fire_control_input_vol_update()
92 rt->ivol_updated |= 1 << i; in usb6fire_control_input_vol_update()
96 static void usb6fire_control_line_phono_update(struct control_runtime *rt) in usb6fire_control_line_phono_update() argument
98 struct comm_runtime *comm_rt = rt->chip->comm; in usb6fire_control_line_phono_update()
100 comm_rt->write8(comm_rt, 0x22, 0x02, rt->line_phono_switch); in usb6fire_control_line_phono_update()
101 comm_rt->write8(comm_rt, 0x21, 0x02, rt->line_phono_switch); in usb6fire_control_line_phono_update()
105 static void usb6fire_control_opt_coax_update(struct control_runtime *rt) in usb6fire_control_opt_coax_update() argument
107 struct comm_runtime *comm_rt = rt->chip->comm; in usb6fire_control_opt_coax_update()
109 comm_rt->write8(comm_rt, 0x22, 0x00, rt->opt_coax_switch); in usb6fire_control_opt_coax_update()
110 comm_rt->write8(comm_rt, 0x21, 0x00, rt->opt_coax_switch); in usb6fire_control_opt_coax_update()
114 static int usb6fire_control_set_rate(struct control_runtime *rt, int rate) in usb6fire_control_set_rate() argument
117 struct usb_device *device = rt->chip->dev; in usb6fire_control_set_rate()
118 struct comm_runtime *comm_rt = rt->chip->comm; in usb6fire_control_set_rate()
137 struct control_runtime *rt, int n_analog_out, in usb6fire_control_set_channels() argument
141 struct comm_runtime *comm_rt = rt->chip->comm; in usb6fire_control_set_channels()
160 static int usb6fire_control_streaming_update(struct control_runtime *rt) in usb6fire_control_streaming_update() argument
162 struct comm_runtime *comm_rt = rt->chip->comm; in usb6fire_control_streaming_update()
165 if (!rt->usb_streaming && rt->digital_thru_switch) in usb6fire_control_streaming_update()
166 usb6fire_control_set_rate(rt, in usb6fire_control_streaming_update()
169 (rt->usb_streaming ? 0x01 : 0x00) | in usb6fire_control_streaming_update()
170 (rt->digital_thru_switch ? 0x08 : 0x00)); in usb6fire_control_streaming_update()
188 struct control_runtime *rt = snd_kcontrol_chip(kcontrol); in usb6fire_control_output_vol_put() local
193 dev_err(&rt->chip->dev->dev, in usb6fire_control_output_vol_put()
198 if (rt->output_vol[ch] != ucontrol->value.integer.value[0]) { in usb6fire_control_output_vol_put()
199 rt->output_vol[ch] = ucontrol->value.integer.value[0]; in usb6fire_control_output_vol_put()
200 rt->ovol_updated &= ~(1 << ch); in usb6fire_control_output_vol_put()
203 if (rt->output_vol[ch + 1] != ucontrol->value.integer.value[1]) { in usb6fire_control_output_vol_put()
204 rt->output_vol[ch + 1] = ucontrol->value.integer.value[1]; in usb6fire_control_output_vol_put()
205 rt->ovol_updated &= ~(2 << ch); in usb6fire_control_output_vol_put()
210 usb6fire_control_output_vol_update(rt); in usb6fire_control_output_vol_put()
218 struct control_runtime *rt = snd_kcontrol_chip(kcontrol); in usb6fire_control_output_vol_get() local
222 dev_err(&rt->chip->dev->dev, in usb6fire_control_output_vol_get()
227 ucontrol->value.integer.value[0] = rt->output_vol[ch]; in usb6fire_control_output_vol_get()
228 ucontrol->value.integer.value[1] = rt->output_vol[ch + 1]; in usb6fire_control_output_vol_get()
235 struct control_runtime *rt = snd_kcontrol_chip(kcontrol); in usb6fire_control_output_mute_put() local
237 u8 old = rt->output_mute; in usb6fire_control_output_mute_put()
241 dev_err(&rt->chip->dev->dev, in usb6fire_control_output_mute_put()
246 rt->output_mute &= ~(3 << ch); in usb6fire_control_output_mute_put()
251 rt->output_mute |= value << ch; in usb6fire_control_output_mute_put()
253 if (rt->output_mute != old) in usb6fire_control_output_mute_put()
254 usb6fire_control_output_mute_update(rt); in usb6fire_control_output_mute_put()
256 return rt->output_mute != old; in usb6fire_control_output_mute_put()
262 struct control_runtime *rt = snd_kcontrol_chip(kcontrol); in usb6fire_control_output_mute_get() local
264 u8 value = rt->output_mute >> ch; in usb6fire_control_output_mute_get()
267 dev_err(&rt->chip->dev->dev, in usb6fire_control_output_mute_get()
292 struct control_runtime *rt = snd_kcontrol_chip(kcontrol); in usb6fire_control_input_vol_put() local
295 if (rt->input_vol[0] != ucontrol->value.integer.value[0]) { in usb6fire_control_input_vol_put()
296 rt->input_vol[0] = ucontrol->value.integer.value[0] - 15; in usb6fire_control_input_vol_put()
297 rt->ivol_updated &= ~(1 << 0); in usb6fire_control_input_vol_put()
300 if (rt->input_vol[1] != ucontrol->value.integer.value[1]) { in usb6fire_control_input_vol_put()
301 rt->input_vol[1] = ucontrol->value.integer.value[1] - 15; in usb6fire_control_input_vol_put()
302 rt->ivol_updated &= ~(1 << 1); in usb6fire_control_input_vol_put()
307 usb6fire_control_input_vol_update(rt); in usb6fire_control_input_vol_put()
315 struct control_runtime *rt = snd_kcontrol_chip(kcontrol); in usb6fire_control_input_vol_get() local
317 ucontrol->value.integer.value[0] = rt->input_vol[0] + 15; in usb6fire_control_input_vol_get()
318 ucontrol->value.integer.value[1] = rt->input_vol[1] + 15; in usb6fire_control_input_vol_get()
332 struct control_runtime *rt = snd_kcontrol_chip(kcontrol); in usb6fire_control_line_phono_put() local
334 if (rt->line_phono_switch != ucontrol->value.integer.value[0]) { in usb6fire_control_line_phono_put()
335 rt->line_phono_switch = ucontrol->value.integer.value[0]; in usb6fire_control_line_phono_put()
336 usb6fire_control_line_phono_update(rt); in usb6fire_control_line_phono_put()
345 struct control_runtime *rt = snd_kcontrol_chip(kcontrol); in usb6fire_control_line_phono_get() local
346 ucontrol->value.integer.value[0] = rt->line_phono_switch; in usb6fire_control_line_phono_get()
359 struct control_runtime *rt = snd_kcontrol_chip(kcontrol); in usb6fire_control_opt_coax_put() local
362 if (rt->opt_coax_switch != ucontrol->value.enumerated.item[0]) { in usb6fire_control_opt_coax_put()
363 rt->opt_coax_switch = ucontrol->value.enumerated.item[0]; in usb6fire_control_opt_coax_put()
364 usb6fire_control_opt_coax_update(rt); in usb6fire_control_opt_coax_put()
373 struct control_runtime *rt = snd_kcontrol_chip(kcontrol); in usb6fire_control_opt_coax_get() local
374 ucontrol->value.enumerated.item[0] = rt->opt_coax_switch; in usb6fire_control_opt_coax_get()
381 struct control_runtime *rt = snd_kcontrol_chip(kcontrol); in usb6fire_control_digital_thru_put() local
384 if (rt->digital_thru_switch != ucontrol->value.integer.value[0]) { in usb6fire_control_digital_thru_put()
385 rt->digital_thru_switch = ucontrol->value.integer.value[0]; in usb6fire_control_digital_thru_put()
386 usb6fire_control_streaming_update(rt); in usb6fire_control_digital_thru_put()
395 struct control_runtime *rt = snd_kcontrol_chip(kcontrol); in usb6fire_control_digital_thru_get() local
396 ucontrol->value.integer.value[0] = rt->digital_thru_switch; in usb6fire_control_digital_thru_get()
517 struct control_runtime *rt, in usb6fire_control_add_virtual() argument
536 control = snd_ctl_new1(&elems[i], rt); in usb6fire_control_add_virtual()
554 struct control_runtime *rt = kzalloc(sizeof(struct control_runtime), in usb6fire_control_init() local
558 if (!rt) in usb6fire_control_init()
561 rt->chip = chip; in usb6fire_control_init()
562 rt->update_streaming = usb6fire_control_streaming_update; in usb6fire_control_init()
563 rt->set_rate = usb6fire_control_set_rate; in usb6fire_control_init()
564 rt->set_channels = usb6fire_control_set_channels; in usb6fire_control_init()
573 usb6fire_control_opt_coax_update(rt); in usb6fire_control_init()
574 usb6fire_control_line_phono_update(rt); in usb6fire_control_init()
575 usb6fire_control_output_vol_update(rt); in usb6fire_control_init()
576 usb6fire_control_output_mute_update(rt); in usb6fire_control_init()
577 usb6fire_control_input_vol_update(rt); in usb6fire_control_init()
578 usb6fire_control_streaming_update(rt); in usb6fire_control_init()
580 ret = usb6fire_control_add_virtual(rt, chip->card, in usb6fire_control_init()
584 kfree(rt); in usb6fire_control_init()
587 ret = usb6fire_control_add_virtual(rt, chip->card, in usb6fire_control_init()
591 kfree(rt); in usb6fire_control_init()
597 ret = snd_ctl_add(chip->card, snd_ctl_new1(&elements[i], rt)); in usb6fire_control_init()
599 kfree(rt); in usb6fire_control_init()
606 chip->control = rt; in usb6fire_control_init()