Lines Matching refs:rt

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