Lines Matching refs:emu

77 static void ca0106_spdif_enable(struct snd_ca0106 *emu)  in ca0106_spdif_enable()  argument
81 if (emu->spdif_enable) { in ca0106_spdif_enable()
83 snd_ca0106_ptr_write(emu, SPDIF_SELECT1, 0, 0xf); in ca0106_spdif_enable()
84 snd_ca0106_ptr_write(emu, SPDIF_SELECT2, 0, 0x0b000000); in ca0106_spdif_enable()
85 val = snd_ca0106_ptr_read(emu, CAPTURE_CONTROL, 0) & ~0x1000; in ca0106_spdif_enable()
86 snd_ca0106_ptr_write(emu, CAPTURE_CONTROL, 0, val); in ca0106_spdif_enable()
87 val = inl(emu->port + GPIO) & ~0x101; in ca0106_spdif_enable()
88 outl(val, emu->port + GPIO); in ca0106_spdif_enable()
92 snd_ca0106_ptr_write(emu, SPDIF_SELECT1, 0, 0xf); in ca0106_spdif_enable()
93 snd_ca0106_ptr_write(emu, SPDIF_SELECT2, 0, 0x000f0000); in ca0106_spdif_enable()
94 val = snd_ca0106_ptr_read(emu, CAPTURE_CONTROL, 0) | 0x1000; in ca0106_spdif_enable()
95 snd_ca0106_ptr_write(emu, CAPTURE_CONTROL, 0, val); in ca0106_spdif_enable()
96 val = inl(emu->port + GPIO) | 0x101; in ca0106_spdif_enable()
97 outl(val, emu->port + GPIO); in ca0106_spdif_enable()
101 static void ca0106_set_capture_source(struct snd_ca0106 *emu) in ca0106_set_capture_source() argument
103 unsigned int val = emu->capture_source; in ca0106_set_capture_source()
106 mask = snd_ca0106_ptr_read(emu, CAPTURE_SOURCE, 0) & 0xffff; in ca0106_set_capture_source()
107 snd_ca0106_ptr_write(emu, CAPTURE_SOURCE, 0, source | mask); in ca0106_set_capture_source()
110 static void ca0106_set_i2c_capture_source(struct snd_ca0106 *emu, in ca0106_set_i2c_capture_source() argument
116 snd_ca0106_i2c_write(emu, ADC_MUX, 0); /* Mute input */ in ca0106_set_i2c_capture_source()
117 ngain = emu->i2c_capture_volume[val][0]; /* Left */ in ca0106_set_i2c_capture_source()
118 ogain = emu->i2c_capture_volume[emu->i2c_capture_source][0]; /* Left */ in ca0106_set_i2c_capture_source()
120 snd_ca0106_i2c_write(emu, ADC_ATTEN_ADCL, ngain & 0xff); in ca0106_set_i2c_capture_source()
121 ngain = emu->i2c_capture_volume[val][1]; /* Right */ in ca0106_set_i2c_capture_source()
122 ogain = emu->i2c_capture_volume[emu->i2c_capture_source][1]; /* Right */ in ca0106_set_i2c_capture_source()
124 snd_ca0106_i2c_write(emu, ADC_ATTEN_ADCR, ngain & 0xff); in ca0106_set_i2c_capture_source()
126 snd_ca0106_i2c_write(emu, ADC_MUX, source); /* Set source */ in ca0106_set_i2c_capture_source()
127 emu->i2c_capture_source = val; in ca0106_set_i2c_capture_source()
130 static void ca0106_set_capture_mic_line_in(struct snd_ca0106 *emu) in ca0106_set_capture_mic_line_in() argument
134 if (emu->capture_mic_line_in) { in ca0106_set_capture_mic_line_in()
136 tmp = inl(emu->port+GPIO) & ~0x400; in ca0106_set_capture_mic_line_in()
138 outl(tmp, emu->port+GPIO); in ca0106_set_capture_mic_line_in()
142 tmp = inl(emu->port+GPIO) & ~0x400; in ca0106_set_capture_mic_line_in()
143 outl(tmp, emu->port+GPIO); in ca0106_set_capture_mic_line_in()
148 static void ca0106_set_spdif_bits(struct snd_ca0106 *emu, int idx) in ca0106_set_spdif_bits() argument
150 snd_ca0106_ptr_write(emu, SPCS0 + idx, 0, emu->spdif_str_bits[idx]); in ca0106_set_spdif_bits()
163 struct snd_ca0106 *emu = snd_kcontrol_chip(kcontrol); in snd_ca0106_shared_spdif_get() local
165 ucontrol->value.integer.value[0] = emu->spdif_enable; in snd_ca0106_shared_spdif_get()
172 struct snd_ca0106 *emu = snd_kcontrol_chip(kcontrol); in snd_ca0106_shared_spdif_put() local
177 change = (emu->spdif_enable != val); in snd_ca0106_shared_spdif_put()
179 emu->spdif_enable = val; in snd_ca0106_shared_spdif_put()
180 ca0106_spdif_enable(emu); in snd_ca0106_shared_spdif_put()
198 struct snd_ca0106 *emu = snd_kcontrol_chip(kcontrol); in snd_ca0106_capture_source_get() local
200 ucontrol->value.enumerated.item[0] = emu->capture_source; in snd_ca0106_capture_source_get()
207 struct snd_ca0106 *emu = snd_kcontrol_chip(kcontrol); in snd_ca0106_capture_source_put() local
214 change = (emu->capture_source != val); in snd_ca0106_capture_source_put()
216 emu->capture_source = val; in snd_ca0106_capture_source_put()
217 ca0106_set_capture_source(emu); in snd_ca0106_capture_source_put()
235 struct snd_ca0106 *emu = snd_kcontrol_chip(kcontrol); in snd_ca0106_i2c_capture_source_get() local
237 ucontrol->value.enumerated.item[0] = emu->i2c_capture_source; in snd_ca0106_i2c_capture_source_get()
244 struct snd_ca0106 *emu = snd_kcontrol_chip(kcontrol); in snd_ca0106_i2c_capture_source_put() local
254 change = (emu->i2c_capture_source != source_id); in snd_ca0106_i2c_capture_source_put()
256 ca0106_set_i2c_capture_source(emu, source_id, 0); in snd_ca0106_i2c_capture_source_put()
280 struct snd_ca0106 *emu = snd_kcontrol_chip(kcontrol); in snd_ca0106_capture_mic_line_in_get() local
282 ucontrol->value.enumerated.item[0] = emu->capture_mic_line_in; in snd_ca0106_capture_mic_line_in_get()
289 struct snd_ca0106 *emu = snd_kcontrol_chip(kcontrol); in snd_ca0106_capture_mic_line_in_put() local
296 change = (emu->capture_mic_line_in != val); in snd_ca0106_capture_mic_line_in_put()
298 emu->capture_mic_line_in = val; in snd_ca0106_capture_mic_line_in_put()
299 ca0106_set_capture_mic_line_in(emu); in snd_ca0106_capture_mic_line_in_put()
342 struct snd_ca0106 *emu = snd_kcontrol_chip(kcontrol); in snd_ca0106_spdif_get_default() local
346 emu->spdif_bits[idx]); in snd_ca0106_spdif_get_default()
353 struct snd_ca0106 *emu = snd_kcontrol_chip(kcontrol); in snd_ca0106_spdif_get_stream() local
357 emu->spdif_str_bits[idx]); in snd_ca0106_spdif_get_stream()
382 struct snd_ca0106 *emu = snd_kcontrol_chip(kcontrol); in snd_ca0106_spdif_put_default() local
387 if (val != emu->spdif_bits[idx]) { in snd_ca0106_spdif_put_default()
388 emu->spdif_bits[idx] = val; in snd_ca0106_spdif_put_default()
392 emu->spdif_str_bits[idx] = val; in snd_ca0106_spdif_put_default()
393 ca0106_set_spdif_bits(emu, idx); in snd_ca0106_spdif_put_default()
402 struct snd_ca0106 *emu = snd_kcontrol_chip(kcontrol); in snd_ca0106_spdif_put_stream() local
407 if (val != emu->spdif_str_bits[idx]) { in snd_ca0106_spdif_put_stream()
408 emu->spdif_str_bits[idx] = val; in snd_ca0106_spdif_put_stream()
409 ca0106_set_spdif_bits(emu, idx); in snd_ca0106_spdif_put_stream()
428 struct snd_ca0106 *emu = snd_kcontrol_chip(kcontrol); in snd_ca0106_volume_get() local
435 value = snd_ca0106_ptr_read(emu, reg, channel_id); in snd_ca0106_volume_get()
444 struct snd_ca0106 *emu = snd_kcontrol_chip(kcontrol); in snd_ca0106_volume_put() local
451 oval = snd_ca0106_ptr_read(emu, reg, channel_id); in snd_ca0106_volume_put()
458 snd_ca0106_ptr_write(emu, reg, channel_id, nval); in snd_ca0106_volume_put()
475 struct snd_ca0106 *emu = snd_kcontrol_chip(kcontrol); in snd_ca0106_i2c_volume_get() local
480 ucontrol->value.integer.value[0] = emu->i2c_capture_volume[source_id][0]; in snd_ca0106_i2c_volume_get()
481 ucontrol->value.integer.value[1] = emu->i2c_capture_volume[source_id][1]; in snd_ca0106_i2c_volume_get()
488 struct snd_ca0106 *emu = snd_kcontrol_chip(kcontrol); in snd_ca0106_i2c_volume_put() local
495 ogain = emu->i2c_capture_volume[source_id][0]; /* Left */ in snd_ca0106_i2c_volume_put()
500 if (emu->i2c_capture_source == source_id) in snd_ca0106_i2c_volume_put()
501 snd_ca0106_i2c_write(emu, ADC_ATTEN_ADCL, ((ngain) & 0xff) ); in snd_ca0106_i2c_volume_put()
502 emu->i2c_capture_volume[source_id][0] = ucontrol->value.integer.value[0]; in snd_ca0106_i2c_volume_put()
505 ogain = emu->i2c_capture_volume[source_id][1]; /* Right */ in snd_ca0106_i2c_volume_put()
510 if (emu->i2c_capture_source == source_id) in snd_ca0106_i2c_volume_put()
511 snd_ca0106_i2c_write(emu, ADC_ATTEN_ADCR, ((ngain) & 0xff)); in snd_ca0106_i2c_volume_put()
512 emu->i2c_capture_volume[source_id][1] = ucontrol->value.integer.value[1]; in snd_ca0106_i2c_volume_put()
524 struct snd_ca0106 *emu = snd_kcontrol_chip(kcontrol); in spi_mute_get() local
528 ucontrol->value.integer.value[0] = !(emu->spi_dac_reg[reg] & bit); in spi_mute_get()
535 struct snd_ca0106 *emu = snd_kcontrol_chip(kcontrol); in spi_mute_put() local
540 ret = emu->spi_dac_reg[reg] & bit; in spi_mute_put()
544 emu->spi_dac_reg[reg] &= ~bit; in spi_mute_put()
548 emu->spi_dac_reg[reg] |= bit; in spi_mute_put()
551 ret = snd_ca0106_spi_write(emu, emu->spi_dac_reg[reg]); in spi_mute_put()
743 #define ADD_CTLS(emu, ctls) \ argument
747 _err = snd_ctl_add(card, snd_ctl_new1(&ctls[i], emu)); \
788 int snd_ca0106_mixer(struct snd_ca0106 *emu) in snd_ca0106_mixer() argument
791 struct snd_card *card = emu->card; in snd_ca0106_mixer()
838 ADD_CTLS(emu, snd_ca0106_volume_ctls); in snd_ca0106_mixer()
839 if (emu->details->i2c_adc == 1) { in snd_ca0106_mixer()
840 ADD_CTLS(emu, snd_ca0106_volume_i2c_adc_ctls); in snd_ca0106_mixer()
841 if (emu->details->gpio_type == 1) in snd_ca0106_mixer()
842 err = snd_ctl_add(card, snd_ctl_new1(&snd_ca0106_capture_mic_line_in, emu)); in snd_ca0106_mixer()
844 err = snd_ctl_add(card, snd_ctl_new1(&snd_ca0106_capture_line_in_side_out, emu)); in snd_ca0106_mixer()
848 if (emu->details->spi_dac) { in snd_ca0106_mixer()
852 ctl = snd_ca0106_volume_spi_dac_ctl(emu->details, i); in snd_ca0106_mixer()
855 err = snd_ctl_add(card, snd_ctl_new1(&ctl, emu)); in snd_ca0106_mixer()
871 if (emu->details->spi_dac) { in snd_ca0106_mixer()