Lines Matching refs:emu

63 static void ca0106_spdif_enable(struct snd_ca0106 *emu)  in ca0106_spdif_enable()  argument
67 if (emu->spdif_enable) { in ca0106_spdif_enable()
69 snd_ca0106_ptr_write(emu, SPDIF_SELECT1, 0, 0xf); in ca0106_spdif_enable()
70 snd_ca0106_ptr_write(emu, SPDIF_SELECT2, 0, 0x0b000000); in ca0106_spdif_enable()
71 val = snd_ca0106_ptr_read(emu, CAPTURE_CONTROL, 0) & ~0x1000; in ca0106_spdif_enable()
72 snd_ca0106_ptr_write(emu, CAPTURE_CONTROL, 0, val); in ca0106_spdif_enable()
73 val = inl(emu->port + CA0106_GPIO) & ~0x101; in ca0106_spdif_enable()
74 outl(val, emu->port + CA0106_GPIO); in ca0106_spdif_enable()
78 snd_ca0106_ptr_write(emu, SPDIF_SELECT1, 0, 0xf); in ca0106_spdif_enable()
79 snd_ca0106_ptr_write(emu, SPDIF_SELECT2, 0, 0x000f0000); in ca0106_spdif_enable()
80 val = snd_ca0106_ptr_read(emu, CAPTURE_CONTROL, 0) | 0x1000; in ca0106_spdif_enable()
81 snd_ca0106_ptr_write(emu, CAPTURE_CONTROL, 0, val); in ca0106_spdif_enable()
82 val = inl(emu->port + CA0106_GPIO) | 0x101; in ca0106_spdif_enable()
83 outl(val, emu->port + CA0106_GPIO); in ca0106_spdif_enable()
87 static void ca0106_set_capture_source(struct snd_ca0106 *emu) in ca0106_set_capture_source() argument
89 unsigned int val = emu->capture_source; in ca0106_set_capture_source()
92 mask = snd_ca0106_ptr_read(emu, CAPTURE_SOURCE, 0) & 0xffff; in ca0106_set_capture_source()
93 snd_ca0106_ptr_write(emu, CAPTURE_SOURCE, 0, source | mask); in ca0106_set_capture_source()
96 static void ca0106_set_i2c_capture_source(struct snd_ca0106 *emu, in ca0106_set_i2c_capture_source() argument
102 snd_ca0106_i2c_write(emu, ADC_MUX, 0); /* Mute input */ in ca0106_set_i2c_capture_source()
103 ngain = emu->i2c_capture_volume[val][0]; /* Left */ in ca0106_set_i2c_capture_source()
104 ogain = emu->i2c_capture_volume[emu->i2c_capture_source][0]; /* Left */ in ca0106_set_i2c_capture_source()
106 snd_ca0106_i2c_write(emu, ADC_ATTEN_ADCL, ngain & 0xff); in ca0106_set_i2c_capture_source()
107 ngain = emu->i2c_capture_volume[val][1]; /* Right */ in ca0106_set_i2c_capture_source()
108 ogain = emu->i2c_capture_volume[emu->i2c_capture_source][1]; /* Right */ in ca0106_set_i2c_capture_source()
110 snd_ca0106_i2c_write(emu, ADC_ATTEN_ADCR, ngain & 0xff); in ca0106_set_i2c_capture_source()
112 snd_ca0106_i2c_write(emu, ADC_MUX, source); /* Set source */ in ca0106_set_i2c_capture_source()
113 emu->i2c_capture_source = val; in ca0106_set_i2c_capture_source()
116 static void ca0106_set_capture_mic_line_in(struct snd_ca0106 *emu) in ca0106_set_capture_mic_line_in() argument
120 if (emu->capture_mic_line_in) { in ca0106_set_capture_mic_line_in()
122 tmp = inl(emu->port + CA0106_GPIO) & ~0x400; in ca0106_set_capture_mic_line_in()
124 outl(tmp, emu->port + CA0106_GPIO); in ca0106_set_capture_mic_line_in()
128 tmp = inl(emu->port + CA0106_GPIO) & ~0x400; in ca0106_set_capture_mic_line_in()
129 outl(tmp, emu->port + CA0106_GPIO); in ca0106_set_capture_mic_line_in()
134 static void ca0106_set_spdif_bits(struct snd_ca0106 *emu, int idx) in ca0106_set_spdif_bits() argument
136 snd_ca0106_ptr_write(emu, SPCS0 + idx, 0, emu->spdif_str_bits[idx]); in ca0106_set_spdif_bits()
149 struct snd_ca0106 *emu = snd_kcontrol_chip(kcontrol); in snd_ca0106_shared_spdif_get() local
151 ucontrol->value.integer.value[0] = emu->spdif_enable; in snd_ca0106_shared_spdif_get()
158 struct snd_ca0106 *emu = snd_kcontrol_chip(kcontrol); in snd_ca0106_shared_spdif_put() local
163 change = (emu->spdif_enable != val); in snd_ca0106_shared_spdif_put()
165 emu->spdif_enable = val; in snd_ca0106_shared_spdif_put()
166 ca0106_spdif_enable(emu); in snd_ca0106_shared_spdif_put()
184 struct snd_ca0106 *emu = snd_kcontrol_chip(kcontrol); in snd_ca0106_capture_source_get() local
186 ucontrol->value.enumerated.item[0] = emu->capture_source; in snd_ca0106_capture_source_get()
193 struct snd_ca0106 *emu = snd_kcontrol_chip(kcontrol); in snd_ca0106_capture_source_put() local
200 change = (emu->capture_source != val); in snd_ca0106_capture_source_put()
202 emu->capture_source = val; in snd_ca0106_capture_source_put()
203 ca0106_set_capture_source(emu); in snd_ca0106_capture_source_put()
221 struct snd_ca0106 *emu = snd_kcontrol_chip(kcontrol); in snd_ca0106_i2c_capture_source_get() local
223 ucontrol->value.enumerated.item[0] = emu->i2c_capture_source; in snd_ca0106_i2c_capture_source_get()
230 struct snd_ca0106 *emu = snd_kcontrol_chip(kcontrol); in snd_ca0106_i2c_capture_source_put() local
240 change = (emu->i2c_capture_source != source_id); in snd_ca0106_i2c_capture_source_put()
242 ca0106_set_i2c_capture_source(emu, source_id, 0); in snd_ca0106_i2c_capture_source_put()
266 struct snd_ca0106 *emu = snd_kcontrol_chip(kcontrol); in snd_ca0106_capture_mic_line_in_get() local
268 ucontrol->value.enumerated.item[0] = emu->capture_mic_line_in; in snd_ca0106_capture_mic_line_in_get()
275 struct snd_ca0106 *emu = snd_kcontrol_chip(kcontrol); in snd_ca0106_capture_mic_line_in_put() local
282 change = (emu->capture_mic_line_in != val); in snd_ca0106_capture_mic_line_in_put()
284 emu->capture_mic_line_in = val; in snd_ca0106_capture_mic_line_in_put()
285 ca0106_set_capture_mic_line_in(emu); in snd_ca0106_capture_mic_line_in_put()
328 struct snd_ca0106 *emu = snd_kcontrol_chip(kcontrol); in snd_ca0106_spdif_get_default() local
332 emu->spdif_bits[idx]); in snd_ca0106_spdif_get_default()
339 struct snd_ca0106 *emu = snd_kcontrol_chip(kcontrol); in snd_ca0106_spdif_get_stream() local
343 emu->spdif_str_bits[idx]); in snd_ca0106_spdif_get_stream()
368 struct snd_ca0106 *emu = snd_kcontrol_chip(kcontrol); in snd_ca0106_spdif_put_default() local
373 if (val != emu->spdif_bits[idx]) { in snd_ca0106_spdif_put_default()
374 emu->spdif_bits[idx] = val; in snd_ca0106_spdif_put_default()
378 emu->spdif_str_bits[idx] = val; in snd_ca0106_spdif_put_default()
379 ca0106_set_spdif_bits(emu, idx); in snd_ca0106_spdif_put_default()
388 struct snd_ca0106 *emu = snd_kcontrol_chip(kcontrol); in snd_ca0106_spdif_put_stream() local
393 if (val != emu->spdif_str_bits[idx]) { in snd_ca0106_spdif_put_stream()
394 emu->spdif_str_bits[idx] = val; in snd_ca0106_spdif_put_stream()
395 ca0106_set_spdif_bits(emu, idx); in snd_ca0106_spdif_put_stream()
414 struct snd_ca0106 *emu = snd_kcontrol_chip(kcontrol); in snd_ca0106_volume_get() local
421 value = snd_ca0106_ptr_read(emu, reg, channel_id); in snd_ca0106_volume_get()
430 struct snd_ca0106 *emu = snd_kcontrol_chip(kcontrol); in snd_ca0106_volume_put() local
437 oval = snd_ca0106_ptr_read(emu, reg, channel_id); in snd_ca0106_volume_put()
444 snd_ca0106_ptr_write(emu, reg, channel_id, nval); in snd_ca0106_volume_put()
461 struct snd_ca0106 *emu = snd_kcontrol_chip(kcontrol); in snd_ca0106_i2c_volume_get() local
466 ucontrol->value.integer.value[0] = emu->i2c_capture_volume[source_id][0]; in snd_ca0106_i2c_volume_get()
467 ucontrol->value.integer.value[1] = emu->i2c_capture_volume[source_id][1]; in snd_ca0106_i2c_volume_get()
474 struct snd_ca0106 *emu = snd_kcontrol_chip(kcontrol); in snd_ca0106_i2c_volume_put() local
481 ogain = emu->i2c_capture_volume[source_id][0]; /* Left */ in snd_ca0106_i2c_volume_put()
486 if (emu->i2c_capture_source == source_id) in snd_ca0106_i2c_volume_put()
487 snd_ca0106_i2c_write(emu, ADC_ATTEN_ADCL, ((ngain) & 0xff) ); in snd_ca0106_i2c_volume_put()
488 emu->i2c_capture_volume[source_id][0] = ucontrol->value.integer.value[0]; in snd_ca0106_i2c_volume_put()
491 ogain = emu->i2c_capture_volume[source_id][1]; /* Right */ in snd_ca0106_i2c_volume_put()
496 if (emu->i2c_capture_source == source_id) in snd_ca0106_i2c_volume_put()
497 snd_ca0106_i2c_write(emu, ADC_ATTEN_ADCR, ((ngain) & 0xff)); in snd_ca0106_i2c_volume_put()
498 emu->i2c_capture_volume[source_id][1] = ucontrol->value.integer.value[1]; in snd_ca0106_i2c_volume_put()
510 struct snd_ca0106 *emu = snd_kcontrol_chip(kcontrol); in spi_mute_get() local
514 ucontrol->value.integer.value[0] = !(emu->spi_dac_reg[reg] & bit); in spi_mute_get()
521 struct snd_ca0106 *emu = snd_kcontrol_chip(kcontrol); in spi_mute_put() local
526 ret = emu->spi_dac_reg[reg] & bit; in spi_mute_put()
530 emu->spi_dac_reg[reg] &= ~bit; in spi_mute_put()
534 emu->spi_dac_reg[reg] |= bit; in spi_mute_put()
537 ret = snd_ca0106_spi_write(emu, emu->spi_dac_reg[reg]); in spi_mute_put()
729 #define ADD_CTLS(emu, ctls) \ argument
733 _err = snd_ctl_add(card, snd_ctl_new1(&ctls[i], emu)); \
774 int snd_ca0106_mixer(struct snd_ca0106 *emu) in snd_ca0106_mixer() argument
777 struct snd_card *card = emu->card; in snd_ca0106_mixer()
824 ADD_CTLS(emu, snd_ca0106_volume_ctls); in snd_ca0106_mixer()
825 if (emu->details->i2c_adc == 1) { in snd_ca0106_mixer()
826 ADD_CTLS(emu, snd_ca0106_volume_i2c_adc_ctls); in snd_ca0106_mixer()
827 if (emu->details->gpio_type == 1) in snd_ca0106_mixer()
828 err = snd_ctl_add(card, snd_ctl_new1(&snd_ca0106_capture_mic_line_in, emu)); in snd_ca0106_mixer()
830 err = snd_ctl_add(card, snd_ctl_new1(&snd_ca0106_capture_line_in_side_out, emu)); in snd_ca0106_mixer()
834 if (emu->details->spi_dac) { in snd_ca0106_mixer()
838 ctl = snd_ca0106_volume_spi_dac_ctl(emu->details, i); in snd_ca0106_mixer()
841 err = snd_ctl_add(card, snd_ctl_new1(&ctl, emu)); in snd_ca0106_mixer()
857 if (emu->details->spi_dac) { in snd_ca0106_mixer()