Lines Matching refs:ice
111 static void aureon_pca9554_write(struct snd_ice1712 *ice, unsigned char reg, in aureon_pca9554_write() argument
119 tmp = snd_ice1712_gpio_read(ice); in aureon_pca9554_write()
121 snd_ice1712_gpio_set_mask(ice, ~(AUREON_SPI_MOSI|AUREON_SPI_CLK| in aureon_pca9554_write()
129 snd_ice1712_gpio_write(ice, tmp); in aureon_pca9554_write()
137 snd_ice1712_gpio_write(ice, tmp); in aureon_pca9554_write()
140 snd_ice1712_gpio_write(ice, tmp); in aureon_pca9554_write()
143 snd_ice1712_gpio_write(ice, tmp); in aureon_pca9554_write()
146 snd_ice1712_gpio_write(ice, tmp); in aureon_pca9554_write()
166 snd_ice1712_gpio_write(ice, tmp); in aureon_pca9554_write()
172 snd_ice1712_gpio_write(ice, tmp); in aureon_pca9554_write()
175 snd_ice1712_gpio_write(ice, tmp); in aureon_pca9554_write()
179 snd_ice1712_gpio_write(ice, tmp); in aureon_pca9554_write()
182 snd_ice1712_gpio_write(ice, tmp); in aureon_pca9554_write()
185 snd_ice1712_gpio_write(ice, tmp); in aureon_pca9554_write()
189 snd_ice1712_gpio_write(ice, tmp); in aureon_pca9554_write()
192 snd_ice1712_gpio_write(ice, tmp); in aureon_pca9554_write()
195 snd_ice1712_gpio_write(ice, tmp); in aureon_pca9554_write()
198 snd_ice1712_gpio_write(ice, tmp); in aureon_pca9554_write()
214 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_universe_inmux_get() local
215 struct aureon_spec *spec = ice->spec; in aureon_universe_inmux_get()
223 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_universe_inmux_put() local
224 struct aureon_spec *spec = ice->spec; in aureon_universe_inmux_put()
231 snd_ice1712_save_gpio_status(ice); in aureon_universe_inmux_put()
235 aureon_pca9554_write(ice, PCA9554_OUT, nval); in aureon_universe_inmux_put()
238 snd_ice1712_restore_gpio_status(ice); in aureon_universe_inmux_put()
243 static void aureon_ac97_write(struct snd_ice1712 *ice, unsigned short reg, in aureon_ac97_write() argument
246 struct aureon_spec *spec = ice->spec; in aureon_ac97_write()
250 tmp = (snd_ice1712_gpio_read(ice) & ~0xFF) | (reg & 0x7F); in aureon_ac97_write()
251 snd_ice1712_gpio_write(ice, tmp); in aureon_ac97_write()
254 snd_ice1712_gpio_write(ice, tmp); in aureon_ac97_write()
257 snd_ice1712_gpio_write(ice, tmp); in aureon_ac97_write()
263 snd_ice1712_gpio_write(ice, tmp); in aureon_ac97_write()
266 snd_ice1712_gpio_write(ice, tmp); in aureon_ac97_write()
269 snd_ice1712_gpio_write(ice, tmp); in aureon_ac97_write()
276 snd_ice1712_gpio_write(ice, tmp); in aureon_ac97_write()
279 snd_ice1712_gpio_write(ice, tmp); in aureon_ac97_write()
282 snd_ice1712_gpio_write(ice, tmp); in aureon_ac97_write()
287 snd_ice1712_gpio_write(ice, tmp); in aureon_ac97_write()
290 snd_ice1712_gpio_write(ice, tmp); in aureon_ac97_write()
297 static unsigned short aureon_ac97_read(struct snd_ice1712 *ice, unsigned short reg) in aureon_ac97_read() argument
299 struct aureon_spec *spec = ice->spec; in aureon_ac97_read()
306 static int aureon_ac97_init(struct snd_ice1712 *ice) in aureon_ac97_init() argument
308 struct aureon_spec *spec = ice->spec; in aureon_ac97_init()
334 tmp = (snd_ice1712_gpio_read(ice) | AUREON_AC97_RESET) & ~AUREON_AC97_DATA_MASK; in aureon_ac97_init()
335 snd_ice1712_gpio_write(ice, tmp); in aureon_ac97_init()
339 snd_ice1712_gpio_write(ice, tmp); in aureon_ac97_init()
343 snd_ice1712_gpio_write(ice, tmp); in aureon_ac97_init()
351 aureon_ac97_write(ice, AC97_MASTER, 0x0000); in aureon_ac97_init()
372 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_ac97_vol_get() local
375 mutex_lock(&ice->gpio_mutex); in aureon_ac97_vol_get()
377 vol = aureon_ac97_read(ice, kcontrol->private_value & 0x7F); in aureon_ac97_vol_get()
382 mutex_unlock(&ice->gpio_mutex); in aureon_ac97_vol_get()
388 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_ac97_vol_put() local
392 snd_ice1712_save_gpio_status(ice); in aureon_ac97_vol_put()
394 ovol = aureon_ac97_read(ice, kcontrol->private_value & 0x7F); in aureon_ac97_vol_put()
402 aureon_ac97_write(ice, kcontrol->private_value & 0x7F, nvol); in aureon_ac97_vol_put()
404 snd_ice1712_restore_gpio_status(ice); in aureon_ac97_vol_put()
416 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_ac97_mute_get() local
418 mutex_lock(&ice->gpio_mutex); in aureon_ac97_mute_get()
420 ucontrol->value.integer.value[0] = aureon_ac97_read(ice, in aureon_ac97_mute_get()
423 mutex_unlock(&ice->gpio_mutex); in aureon_ac97_mute_get()
429 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_ac97_mute_put() local
433 snd_ice1712_save_gpio_status(ice); in aureon_ac97_mute_put()
435 ovol = aureon_ac97_read(ice, kcontrol->private_value & 0x7F); in aureon_ac97_mute_put()
440 aureon_ac97_write(ice, kcontrol->private_value & 0x7F, nvol); in aureon_ac97_mute_put()
442 snd_ice1712_restore_gpio_status(ice); in aureon_ac97_mute_put()
454 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_ac97_micboost_get() local
456 mutex_lock(&ice->gpio_mutex); in aureon_ac97_micboost_get()
458 ucontrol->value.integer.value[0] = aureon_ac97_read(ice, AC97_MIC) & 0x0020 ? 0 : 1; in aureon_ac97_micboost_get()
460 mutex_unlock(&ice->gpio_mutex); in aureon_ac97_micboost_get()
466 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_ac97_micboost_put() local
470 snd_ice1712_save_gpio_status(ice); in aureon_ac97_micboost_put()
472 ovol = aureon_ac97_read(ice, AC97_MIC); in aureon_ac97_micboost_put()
477 aureon_ac97_write(ice, AC97_MIC, nvol); in aureon_ac97_micboost_put()
479 snd_ice1712_restore_gpio_status(ice); in aureon_ac97_micboost_put()
487 static void aureon_spi_write(struct snd_ice1712 *ice, unsigned int cs, unsigned int data, int bits) in aureon_spi_write() argument
493 tmp = snd_ice1712_gpio_read(ice); in aureon_spi_write()
495 if (ice->eeprom.subvendor == VT1724_SUBDEVICE_PRODIGY71LT || in aureon_spi_write()
496 ice->eeprom.subvendor == VT1724_SUBDEVICE_PRODIGY71XT) { in aureon_spi_write()
497 snd_ice1712_gpio_set_mask(ice, ~(PRODIGY_SPI_MOSI|PRODIGY_SPI_CLK|PRODIGY_WM_CS)); in aureon_spi_write()
501 snd_ice1712_gpio_set_mask(ice, ~(AUREON_WM_RW|AUREON_SPI_MOSI|AUREON_SPI_CLK| in aureon_spi_write()
510 snd_ice1712_gpio_write(ice, tmp); in aureon_spi_write()
515 snd_ice1712_gpio_write(ice, tmp); in aureon_spi_write()
521 snd_ice1712_gpio_write(ice, tmp); in aureon_spi_write()
524 snd_ice1712_gpio_write(ice, tmp); in aureon_spi_write()
530 snd_ice1712_gpio_write(ice, tmp); in aureon_spi_write()
533 snd_ice1712_gpio_write(ice, tmp); in aureon_spi_write()
540 static void aureon_spi_read(struct snd_ice1712 *ice, unsigned int cs, in aureon_spi_read() argument
546 tmp = (snd_ice1712_gpio_read(ice) & ~AUREON_SPI_CLK) | AUREON_CS8415_CS|AUREON_WM_CS; in aureon_spi_read()
547 snd_ice1712_gpio_write(ice, tmp); in aureon_spi_read()
549 snd_ice1712_gpio_write(ice, tmp); in aureon_spi_read()
557 snd_ice1712_gpio_write(ice, tmp); in aureon_spi_read()
561 snd_ice1712_gpio_write(ice, tmp); in aureon_spi_read()
565 snd_ice1712_gpio_write(ice, tmp); in aureon_spi_read()
572 tmp = snd_ice1712_gpio_read(ice); in aureon_spi_read()
578 snd_ice1712_gpio_write(ice, tmp); in aureon_spi_read()
582 snd_ice1712_gpio_write(ice, tmp); in aureon_spi_read()
589 snd_ice1712_gpio_write(ice, tmp); in aureon_spi_read()
592 static unsigned char aureon_cs8415_get(struct snd_ice1712 *ice, int reg) in aureon_cs8415_get() argument
595 aureon_spi_write(ice, AUREON_CS8415_CS, 0x2000 | reg, 16); in aureon_cs8415_get()
596 aureon_spi_read(ice, AUREON_CS8415_CS, 0x21, 8, &val, 1); in aureon_cs8415_get()
600 static void aureon_cs8415_read(struct snd_ice1712 *ice, int reg, in aureon_cs8415_read() argument
603 aureon_spi_write(ice, AUREON_CS8415_CS, 0x2000 | reg, 16); in aureon_cs8415_read()
604 aureon_spi_read(ice, AUREON_CS8415_CS, 0x21, 8, buffer, size); in aureon_cs8415_read()
607 static void aureon_cs8415_put(struct snd_ice1712 *ice, int reg, in aureon_cs8415_put() argument
610 aureon_spi_write(ice, AUREON_CS8415_CS, 0x200000 | (reg << 8) | val, 24); in aureon_cs8415_put()
616 static unsigned short wm_get(struct snd_ice1712 *ice, int reg) in wm_get() argument
619 return ((unsigned short)ice->akm[0].images[reg] << 8) | in wm_get()
620 ice->akm[0].images[reg + 1]; in wm_get()
626 static void wm_put_nocache(struct snd_ice1712 *ice, int reg, unsigned short val) in wm_put_nocache() argument
628 aureon_spi_write(ice, in wm_put_nocache()
629 ((ice->eeprom.subvendor == VT1724_SUBDEVICE_PRODIGY71LT || in wm_put_nocache()
630 ice->eeprom.subvendor == VT1724_SUBDEVICE_PRODIGY71XT) ? in wm_put_nocache()
638 static void wm_put(struct snd_ice1712 *ice, int reg, unsigned short val) in wm_put() argument
640 wm_put_nocache(ice, reg, val); in wm_put()
642 ice->akm[0].images[reg] = val >> 8; in wm_put()
643 ice->akm[0].images[reg + 1] = val; in wm_put()
657 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_ac97_mmute_get() local
659 mutex_lock(&ice->gpio_mutex); in aureon_ac97_mmute_get()
661 ucontrol->value.integer.value[0] = (wm_get(ice, WM_OUT_MUX1) >> 1) & 0x01; in aureon_ac97_mmute_get()
663 mutex_unlock(&ice->gpio_mutex); in aureon_ac97_mmute_get()
669 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_ac97_mmute_put() local
673 snd_ice1712_save_gpio_status(ice); in aureon_ac97_mmute_put()
675 ovol = wm_get(ice, WM_OUT_MUX1); in aureon_ac97_mmute_put()
679 wm_put(ice, WM_OUT_MUX1, nvol); in aureon_ac97_mmute_put()
681 snd_ice1712_restore_gpio_status(ice); in aureon_ac97_mmute_put()
696 static void wm_set_vol(struct snd_ice1712 *ice, unsigned int index, unsigned short vol, unsigned sh… in wm_set_vol() argument
708 wm_put(ice, index, nvol); in wm_set_vol()
709 wm_put_nocache(ice, index, 0x180 | nvol); in wm_set_vol()
719 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_pcm_mute_get() local
721 mutex_lock(&ice->gpio_mutex); in wm_pcm_mute_get()
722 ucontrol->value.integer.value[0] = (wm_get(ice, WM_MUTE) & 0x10) ? 0 : 1; in wm_pcm_mute_get()
723 mutex_unlock(&ice->gpio_mutex); in wm_pcm_mute_get()
729 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_pcm_mute_put() local
733 snd_ice1712_save_gpio_status(ice); in wm_pcm_mute_put()
734 oval = wm_get(ice, WM_MUTE); in wm_pcm_mute_put()
738 wm_put(ice, WM_MUTE, nval); in wm_pcm_mute_put()
739 snd_ice1712_restore_gpio_status(ice); in wm_pcm_mute_put()
758 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_master_vol_get() local
759 struct aureon_spec *spec = ice->spec; in wm_master_vol_get()
769 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_master_vol_put() local
770 struct aureon_spec *spec = ice->spec; in wm_master_vol_put()
773 snd_ice1712_save_gpio_status(ice); in wm_master_vol_put()
782 for (dac = 0; dac < ice->num_total_dacs; dac += 2) in wm_master_vol_put()
783 wm_set_vol(ice, WM_DAC_ATTEN + dac + ch, in wm_master_vol_put()
789 snd_ice1712_restore_gpio_status(ice); in wm_master_vol_put()
808 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_vol_get() local
809 struct aureon_spec *spec = ice->spec; in wm_vol_get()
822 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_vol_put() local
823 struct aureon_spec *spec = ice->spec; in wm_vol_put()
829 snd_ice1712_save_gpio_status(ice); in wm_vol_put()
838 wm_set_vol(ice, idx, spec->vol[ofs + i], in wm_vol_put()
843 snd_ice1712_restore_gpio_status(ice); in wm_vol_put()
861 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_mute_get() local
862 struct aureon_spec *spec = ice->spec; in wm_mute_get()
876 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_mute_put() local
877 struct aureon_spec *spec = ice->spec; in wm_mute_put()
883 snd_ice1712_save_gpio_status(ice); in wm_mute_put()
890 wm_set_vol(ice, ofs + i, spec->vol[ofs + i], in wm_mute_put()
895 snd_ice1712_restore_gpio_status(ice); in wm_mute_put()
907 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_master_mute_get() local
908 struct aureon_spec *spec = ice->spec; in wm_master_mute_get()
919 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_master_mute_put() local
920 struct aureon_spec *spec = ice->spec; in wm_master_mute_put()
923 snd_ice1712_save_gpio_status(ice); in wm_master_mute_put()
931 for (dac = 0; dac < ice->num_total_dacs; dac += 2) in wm_master_mute_put()
932 wm_set_vol(ice, WM_DAC_ATTEN + dac + i, in wm_master_mute_put()
938 snd_ice1712_restore_gpio_status(ice); in wm_master_mute_put()
958 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_pcm_vol_get() local
961 mutex_lock(&ice->gpio_mutex); in wm_pcm_vol_get()
962 val = wm_get(ice, WM_DAC_DIG_MASTER_ATTEN) & 0xff; in wm_pcm_vol_get()
965 mutex_unlock(&ice->gpio_mutex); in wm_pcm_vol_get()
971 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_pcm_vol_put() local
978 snd_ice1712_save_gpio_status(ice); in wm_pcm_vol_put()
980 ovol = wm_get(ice, WM_DAC_DIG_MASTER_ATTEN) & 0xff; in wm_pcm_vol_put()
982 wm_put(ice, WM_DAC_DIG_MASTER_ATTEN, nvol); /* prelatch */ in wm_pcm_vol_put()
983 wm_put_nocache(ice, WM_DAC_DIG_MASTER_ATTEN, nvol | 0x100); /* update */ in wm_pcm_vol_put()
986 snd_ice1712_restore_gpio_status(ice); in wm_pcm_vol_put()
997 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_adc_mute_get() local
1001 mutex_lock(&ice->gpio_mutex); in wm_adc_mute_get()
1003 val = wm_get(ice, WM_ADC_GAIN + i); in wm_adc_mute_get()
1006 mutex_unlock(&ice->gpio_mutex); in wm_adc_mute_get()
1012 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_adc_mute_put() local
1016 snd_ice1712_save_gpio_status(ice); in wm_adc_mute_put()
1018 old = wm_get(ice, WM_ADC_GAIN + i); in wm_adc_mute_put()
1021 wm_put(ice, WM_ADC_GAIN + i, new); in wm_adc_mute_put()
1025 snd_ice1712_restore_gpio_status(ice); in wm_adc_mute_put()
1044 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_adc_vol_get() local
1048 mutex_lock(&ice->gpio_mutex); in wm_adc_vol_get()
1051 vol = wm_get(ice, idx) & 0x1f; in wm_adc_vol_get()
1054 mutex_unlock(&ice->gpio_mutex); in wm_adc_vol_get()
1060 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_adc_vol_put() local
1065 snd_ice1712_save_gpio_status(ice); in wm_adc_vol_put()
1069 ovol = wm_get(ice, idx); in wm_adc_vol_put()
1071 wm_put(ice, idx, nvol | (ovol & ~0x1f)); in wm_adc_vol_put()
1075 snd_ice1712_restore_gpio_status(ice); in wm_adc_vol_put()
1101 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_adc_mux_info() local
1103 if (ice->eeprom.subvendor == VT1724_SUBDEVICE_AUREON71_UNIVERSE) in wm_adc_mux_info()
1111 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_adc_mux_get() local
1114 mutex_lock(&ice->gpio_mutex); in wm_adc_mux_get()
1115 val = wm_get(ice, WM_ADC_MUX); in wm_adc_mux_get()
1118 mutex_unlock(&ice->gpio_mutex); in wm_adc_mux_get()
1124 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_adc_mux_put() local
1128 snd_ice1712_save_gpio_status(ice); in wm_adc_mux_put()
1129 oval = wm_get(ice, WM_ADC_MUX); in wm_adc_mux_put()
1135 wm_put(ice, WM_ADC_MUX, nval); in wm_adc_mux_put()
1136 snd_ice1712_restore_gpio_status(ice); in wm_adc_mux_put()
1145 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_cs8415_mux_info() local
1154 if (ice->eeprom.subvendor == VT1724_SUBDEVICE_PRODIGY71) in aureon_cs8415_mux_info()
1162 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_cs8415_mux_get() local
1163 struct aureon_spec *spec = ice->spec; in aureon_cs8415_mux_get()
1174 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_cs8415_mux_put() local
1175 struct aureon_spec *spec = ice->spec; in aureon_cs8415_mux_put()
1179 snd_ice1712_save_gpio_status(ice); in aureon_cs8415_mux_put()
1180 oval = aureon_cs8415_get(ice, CS8415_CTRL2); in aureon_cs8415_mux_put()
1185 aureon_cs8415_put(ice, CS8415_CTRL2, nval); in aureon_cs8415_mux_put()
1186 snd_ice1712_restore_gpio_status(ice); in aureon_cs8415_mux_put()
1202 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_cs8415_rate_get() local
1204 ratio = aureon_cs8415_get(ice, CS8415_RATIO); in aureon_cs8415_rate_get()
1216 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_cs8415_mute_get() local
1217 snd_ice1712_save_gpio_status(ice); in aureon_cs8415_mute_get()
1218 ucontrol->value.integer.value[0] = (aureon_cs8415_get(ice, CS8415_CTRL1) & 0x20) ? 0 : 1; in aureon_cs8415_mute_get()
1219 snd_ice1712_restore_gpio_status(ice); in aureon_cs8415_mute_get()
1225 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_cs8415_mute_put() local
1228 snd_ice1712_save_gpio_status(ice); in aureon_cs8415_mute_put()
1229 oval = aureon_cs8415_get(ice, CS8415_CTRL1); in aureon_cs8415_mute_put()
1236 aureon_cs8415_put(ice, CS8415_CTRL1, nval); in aureon_cs8415_mute_put()
1237 snd_ice1712_restore_gpio_status(ice); in aureon_cs8415_mute_put()
1253 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_cs8415_qsub_get() local
1255 snd_ice1712_save_gpio_status(ice); in aureon_cs8415_qsub_get()
1256 aureon_cs8415_read(ice, CS8415_QSUB, ucontrol->value.bytes.data, 10); in aureon_cs8415_qsub_get()
1257 snd_ice1712_restore_gpio_status(ice); in aureon_cs8415_qsub_get()
1277 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_cs8415_spdif_get() local
1279 snd_ice1712_save_gpio_status(ice); in aureon_cs8415_spdif_get()
1280 aureon_cs8415_read(ice, CS8415_C_BUFFER, ucontrol->value.iec958.status, 24); in aureon_cs8415_spdif_get()
1281 snd_ice1712_restore_gpio_status(ice); in aureon_cs8415_spdif_get()
1288 static int aureon_set_headphone_amp(struct snd_ice1712 *ice, int enable) in aureon_set_headphone_amp() argument
1292 tmp2 = tmp = snd_ice1712_gpio_read(ice); in aureon_set_headphone_amp()
1294 if (ice->eeprom.subvendor != VT1724_SUBDEVICE_PRODIGY71LT && in aureon_set_headphone_amp()
1295 ice->eeprom.subvendor != VT1724_SUBDEVICE_PRODIGY71XT) in aureon_set_headphone_amp()
1300 if (ice->eeprom.subvendor != VT1724_SUBDEVICE_PRODIGY71LT && in aureon_set_headphone_amp()
1301 ice->eeprom.subvendor != VT1724_SUBDEVICE_PRODIGY71XT) in aureon_set_headphone_amp()
1306 snd_ice1712_gpio_write(ice, tmp); in aureon_set_headphone_amp()
1312 static int aureon_get_headphone_amp(struct snd_ice1712 *ice) in aureon_get_headphone_amp() argument
1314 unsigned int tmp = snd_ice1712_gpio_read(ice); in aureon_get_headphone_amp()
1323 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_hpamp_get() local
1325 ucontrol->value.integer.value[0] = aureon_get_headphone_amp(ice); in aureon_hpamp_get()
1332 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_hpamp_put() local
1334 return aureon_set_headphone_amp(ice, ucontrol->value.integer.value[0]); in aureon_hpamp_put()
1345 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_deemp_get() local
1346 ucontrol->value.integer.value[0] = (wm_get(ice, WM_DAC_CTRL2) & 0xf) == 0xf; in aureon_deemp_get()
1352 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_deemp_put() local
1354 temp2 = temp = wm_get(ice, WM_DAC_CTRL2); in aureon_deemp_put()
1360 wm_put(ice, WM_DAC_CTRL2, temp); in aureon_deemp_put()
1378 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_oversampling_get() local
1379 ucontrol->value.enumerated.item[0] = (wm_get(ice, WM_MASTER) & 0x8) == 0x8; in aureon_oversampling_get()
1386 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_oversampling_put() local
1388 temp2 = temp = wm_get(ice, WM_MASTER); in aureon_oversampling_put()
1396 wm_put(ice, WM_MASTER, temp); in aureon_oversampling_put()
1869 static int aureon_add_controls(struct snd_ice1712 *ice) in aureon_add_controls() argument
1875 if (ice->eeprom.subvendor == VT1724_SUBDEVICE_AUREON51_SKY) in aureon_add_controls()
1878 err = snd_ctl_add(ice->card, snd_ctl_new1(&aureon_dac_controls[i], ice)); in aureon_add_controls()
1884 err = snd_ctl_add(ice->card, snd_ctl_new1(&wm_controls[i], ice)); in aureon_add_controls()
1889 if (ice->eeprom.subvendor == VT1724_SUBDEVICE_AUREON71_UNIVERSE) { in aureon_add_controls()
1891 err = snd_ctl_add(ice->card, snd_ctl_new1(&universe_ac97_controls[i], ice)); in aureon_add_controls()
1895 } else if (ice->eeprom.subvendor != VT1724_SUBDEVICE_PRODIGY71LT && in aureon_add_controls()
1896 ice->eeprom.subvendor != VT1724_SUBDEVICE_PRODIGY71XT) { in aureon_add_controls()
1898 err = snd_ctl_add(ice->card, snd_ctl_new1(&ac97_controls[i], ice)); in aureon_add_controls()
1904 if (ice->eeprom.subvendor != VT1724_SUBDEVICE_PRODIGY71LT && in aureon_add_controls()
1905 ice->eeprom.subvendor != VT1724_SUBDEVICE_PRODIGY71XT) { in aureon_add_controls()
1907 snd_ice1712_save_gpio_status(ice); in aureon_add_controls()
1908 id = aureon_cs8415_get(ice, CS8415_ID); in aureon_add_controls()
1910 dev_info(ice->card->dev, in aureon_add_controls()
1913 dev_info(ice->card->dev, in aureon_add_controls()
1919 err = snd_ctl_add(ice->card, (kctl = snd_ctl_new1(&cs8415_controls[i], ice))); in aureon_add_controls()
1923 kctl->id.device = ice->pcm->device; in aureon_add_controls()
1926 snd_ice1712_restore_gpio_status(ice); in aureon_add_controls()
1935 static int aureon_reset(struct snd_ice1712 *ice) in aureon_reset() argument
2025 struct aureon_spec *spec = ice->spec; in aureon_reset()
2027 err = aureon_ac97_init(ice); in aureon_reset()
2031 snd_ice1712_gpio_set_dir(ice, 0x5fffff); /* fix this for the time being */ in aureon_reset()
2034 snd_ice1712_save_gpio_status(ice); in aureon_reset()
2035 snd_ice1712_gpio_set_mask(ice, ~(AUREON_WM_RESET|AUREON_WM_CS|AUREON_CS8415_CS|AUREON_HP_SEL)); in aureon_reset()
2037 tmp = snd_ice1712_gpio_read(ice); in aureon_reset()
2039 snd_ice1712_gpio_write(ice, tmp); in aureon_reset()
2042 snd_ice1712_gpio_write(ice, tmp); in aureon_reset()
2045 snd_ice1712_gpio_write(ice, tmp); in aureon_reset()
2049 if (ice->eeprom.subvendor == VT1724_SUBDEVICE_PRODIGY71 || in aureon_reset()
2050 ice->eeprom.subvendor == VT1724_SUBDEVICE_PRODIGY71LT || in aureon_reset()
2051 ice->eeprom.subvendor == VT1724_SUBDEVICE_PRODIGY71XT) in aureon_reset()
2056 wm_put(ice, p[0], p[1]); in aureon_reset()
2059 if (ice->eeprom.subvendor != VT1724_SUBDEVICE_PRODIGY71LT && in aureon_reset()
2060 ice->eeprom.subvendor != VT1724_SUBDEVICE_PRODIGY71XT) { in aureon_reset()
2062 aureon_spi_write(ice, AUREON_CS8415_CS, *p | 0x200000, 24); in aureon_reset()
2065 aureon_set_headphone_amp(ice, 1); in aureon_reset()
2068 snd_ice1712_restore_gpio_status(ice); in aureon_reset()
2071 aureon_pca9554_write(ice, PCA9554_DIR, 0x00); in aureon_reset()
2072 aureon_pca9554_write(ice, PCA9554_OUT, 0x00); /* internal AUX */ in aureon_reset()
2080 static int aureon_resume(struct snd_ice1712 *ice) in aureon_resume() argument
2082 struct aureon_spec *spec = ice->spec; in aureon_resume()
2085 err = aureon_reset(ice); in aureon_resume()
2091 for (i = 0; i < ice->num_total_dacs; i++) in aureon_resume()
2092 wm_set_vol(ice, i, spec->vol[i], spec->master[i % 2]); in aureon_resume()
2100 static int aureon_init(struct snd_ice1712 *ice) in aureon_init() argument
2108 ice->spec = spec; in aureon_init()
2110 if (ice->eeprom.subvendor == VT1724_SUBDEVICE_AUREON51_SKY) { in aureon_init()
2111 ice->num_total_dacs = 6; in aureon_init()
2112 ice->num_total_adcs = 2; in aureon_init()
2115 ice->num_total_dacs = 8; in aureon_init()
2116 ice->num_total_adcs = 2; in aureon_init()
2120 ice->akm = kzalloc(sizeof(struct snd_akm4xxx), GFP_KERNEL); in aureon_init()
2121 if (!ice->akm) in aureon_init()
2123 ice->akm_codecs = 1; in aureon_init()
2125 err = aureon_reset(ice); in aureon_init()
2131 for (i = 0; i < ice->num_total_dacs; i++) { in aureon_init()
2133 wm_set_vol(ice, i, spec->vol[i], spec->master[i % 2]); in aureon_init()
2137 ice->pm_resume = aureon_resume; in aureon_init()
2138 ice->pm_suspend_enabled = 1; in aureon_init()