Lines Matching full:ice

97 static void aureon_pca9554_write(struct snd_ice1712 *ice, unsigned char reg,  in aureon_pca9554_write()  argument
105 tmp = snd_ice1712_gpio_read(ice); in aureon_pca9554_write()
107 snd_ice1712_gpio_set_mask(ice, ~(AUREON_SPI_MOSI|AUREON_SPI_CLK| in aureon_pca9554_write()
115 snd_ice1712_gpio_write(ice, tmp); in aureon_pca9554_write()
123 snd_ice1712_gpio_write(ice, tmp); in aureon_pca9554_write()
126 snd_ice1712_gpio_write(ice, tmp); in aureon_pca9554_write()
129 snd_ice1712_gpio_write(ice, tmp); in aureon_pca9554_write()
132 snd_ice1712_gpio_write(ice, tmp); in aureon_pca9554_write()
152 snd_ice1712_gpio_write(ice, tmp); in aureon_pca9554_write()
158 snd_ice1712_gpio_write(ice, tmp); in aureon_pca9554_write()
161 snd_ice1712_gpio_write(ice, tmp); in aureon_pca9554_write()
165 snd_ice1712_gpio_write(ice, tmp); in aureon_pca9554_write()
168 snd_ice1712_gpio_write(ice, tmp); in aureon_pca9554_write()
171 snd_ice1712_gpio_write(ice, tmp); in aureon_pca9554_write()
175 snd_ice1712_gpio_write(ice, tmp); in aureon_pca9554_write()
178 snd_ice1712_gpio_write(ice, tmp); in aureon_pca9554_write()
181 snd_ice1712_gpio_write(ice, tmp); in aureon_pca9554_write()
184 snd_ice1712_gpio_write(ice, tmp); in aureon_pca9554_write()
200 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_universe_inmux_get() local
201 struct aureon_spec *spec = ice->spec; in aureon_universe_inmux_get()
209 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_universe_inmux_put() local
210 struct aureon_spec *spec = ice->spec; in aureon_universe_inmux_put()
217 snd_ice1712_save_gpio_status(ice); in aureon_universe_inmux_put()
221 aureon_pca9554_write(ice, PCA9554_OUT, nval); in aureon_universe_inmux_put()
224 snd_ice1712_restore_gpio_status(ice); in aureon_universe_inmux_put()
229 static void aureon_ac97_write(struct snd_ice1712 *ice, unsigned short reg, in aureon_ac97_write() argument
232 struct aureon_spec *spec = ice->spec; in aureon_ac97_write()
236 tmp = (snd_ice1712_gpio_read(ice) & ~0xFF) | (reg & 0x7F); in aureon_ac97_write()
237 snd_ice1712_gpio_write(ice, tmp); in aureon_ac97_write()
240 snd_ice1712_gpio_write(ice, tmp); in aureon_ac97_write()
243 snd_ice1712_gpio_write(ice, tmp); in aureon_ac97_write()
249 snd_ice1712_gpio_write(ice, tmp); in aureon_ac97_write()
252 snd_ice1712_gpio_write(ice, tmp); in aureon_ac97_write()
255 snd_ice1712_gpio_write(ice, tmp); in aureon_ac97_write()
262 snd_ice1712_gpio_write(ice, tmp); in aureon_ac97_write()
265 snd_ice1712_gpio_write(ice, tmp); in aureon_ac97_write()
268 snd_ice1712_gpio_write(ice, tmp); in aureon_ac97_write()
273 snd_ice1712_gpio_write(ice, tmp); in aureon_ac97_write()
276 snd_ice1712_gpio_write(ice, tmp); in aureon_ac97_write()
283 static unsigned short aureon_ac97_read(struct snd_ice1712 *ice, unsigned short reg) in aureon_ac97_read() argument
285 struct aureon_spec *spec = ice->spec; in aureon_ac97_read()
292 static int aureon_ac97_init(struct snd_ice1712 *ice) in aureon_ac97_init() argument
294 struct aureon_spec *spec = ice->spec; in aureon_ac97_init()
320 tmp = (snd_ice1712_gpio_read(ice) | AUREON_AC97_RESET) & ~AUREON_AC97_DATA_MASK; in aureon_ac97_init()
321 snd_ice1712_gpio_write(ice, tmp); in aureon_ac97_init()
325 snd_ice1712_gpio_write(ice, tmp); in aureon_ac97_init()
329 snd_ice1712_gpio_write(ice, tmp); in aureon_ac97_init()
337 aureon_ac97_write(ice, AC97_MASTER, 0x0000); in aureon_ac97_init()
358 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_ac97_vol_get() local
361 mutex_lock(&ice->gpio_mutex); in aureon_ac97_vol_get()
363 vol = aureon_ac97_read(ice, kcontrol->private_value & 0x7F); in aureon_ac97_vol_get()
368 mutex_unlock(&ice->gpio_mutex); in aureon_ac97_vol_get()
374 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_ac97_vol_put() local
378 snd_ice1712_save_gpio_status(ice); in aureon_ac97_vol_put()
380 ovol = aureon_ac97_read(ice, kcontrol->private_value & 0x7F); in aureon_ac97_vol_put()
388 aureon_ac97_write(ice, kcontrol->private_value & 0x7F, nvol); in aureon_ac97_vol_put()
390 snd_ice1712_restore_gpio_status(ice); in aureon_ac97_vol_put()
402 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_ac97_mute_get() local
404 mutex_lock(&ice->gpio_mutex); in aureon_ac97_mute_get()
406 ucontrol->value.integer.value[0] = aureon_ac97_read(ice, in aureon_ac97_mute_get()
409 mutex_unlock(&ice->gpio_mutex); in aureon_ac97_mute_get()
415 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_ac97_mute_put() local
419 snd_ice1712_save_gpio_status(ice); in aureon_ac97_mute_put()
421 ovol = aureon_ac97_read(ice, kcontrol->private_value & 0x7F); in aureon_ac97_mute_put()
426 aureon_ac97_write(ice, kcontrol->private_value & 0x7F, nvol); in aureon_ac97_mute_put()
428 snd_ice1712_restore_gpio_status(ice); in aureon_ac97_mute_put()
440 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_ac97_micboost_get() local
442 mutex_lock(&ice->gpio_mutex); in aureon_ac97_micboost_get()
444 ucontrol->value.integer.value[0] = aureon_ac97_read(ice, AC97_MIC) & 0x0020 ? 0 : 1; in aureon_ac97_micboost_get()
446 mutex_unlock(&ice->gpio_mutex); in aureon_ac97_micboost_get()
452 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_ac97_micboost_put() local
456 snd_ice1712_save_gpio_status(ice); in aureon_ac97_micboost_put()
458 ovol = aureon_ac97_read(ice, AC97_MIC); in aureon_ac97_micboost_put()
463 aureon_ac97_write(ice, AC97_MIC, nvol); in aureon_ac97_micboost_put()
465 snd_ice1712_restore_gpio_status(ice); in aureon_ac97_micboost_put()
473 static void aureon_spi_write(struct snd_ice1712 *ice, unsigned int cs, unsigned int data, int bits) in aureon_spi_write() argument
479 tmp = snd_ice1712_gpio_read(ice); in aureon_spi_write()
481 if (ice->eeprom.subvendor == VT1724_SUBDEVICE_PRODIGY71LT || in aureon_spi_write()
482 ice->eeprom.subvendor == VT1724_SUBDEVICE_PRODIGY71XT) { in aureon_spi_write()
483 snd_ice1712_gpio_set_mask(ice, ~(PRODIGY_SPI_MOSI|PRODIGY_SPI_CLK|PRODIGY_WM_CS)); in aureon_spi_write()
487 snd_ice1712_gpio_set_mask(ice, ~(AUREON_WM_RW|AUREON_SPI_MOSI|AUREON_SPI_CLK| in aureon_spi_write()
496 snd_ice1712_gpio_write(ice, tmp); in aureon_spi_write()
501 snd_ice1712_gpio_write(ice, tmp); in aureon_spi_write()
507 snd_ice1712_gpio_write(ice, tmp); in aureon_spi_write()
510 snd_ice1712_gpio_write(ice, tmp); in aureon_spi_write()
516 snd_ice1712_gpio_write(ice, tmp); in aureon_spi_write()
519 snd_ice1712_gpio_write(ice, tmp); in aureon_spi_write()
526 static void aureon_spi_read(struct snd_ice1712 *ice, unsigned int cs, in aureon_spi_read() argument
532 tmp = (snd_ice1712_gpio_read(ice) & ~AUREON_SPI_CLK) | AUREON_CS8415_CS|AUREON_WM_CS; in aureon_spi_read()
533 snd_ice1712_gpio_write(ice, tmp); in aureon_spi_read()
535 snd_ice1712_gpio_write(ice, tmp); in aureon_spi_read()
543 snd_ice1712_gpio_write(ice, tmp); in aureon_spi_read()
547 snd_ice1712_gpio_write(ice, tmp); in aureon_spi_read()
551 snd_ice1712_gpio_write(ice, tmp); in aureon_spi_read()
558 tmp = snd_ice1712_gpio_read(ice); in aureon_spi_read()
564 snd_ice1712_gpio_write(ice, tmp); in aureon_spi_read()
568 snd_ice1712_gpio_write(ice, tmp); in aureon_spi_read()
575 snd_ice1712_gpio_write(ice, tmp); in aureon_spi_read()
578 static unsigned char aureon_cs8415_get(struct snd_ice1712 *ice, int reg) in aureon_cs8415_get() argument
581 aureon_spi_write(ice, AUREON_CS8415_CS, 0x2000 | reg, 16); in aureon_cs8415_get()
582 aureon_spi_read(ice, AUREON_CS8415_CS, 0x21, 8, &val, 1); in aureon_cs8415_get()
586 static void aureon_cs8415_read(struct snd_ice1712 *ice, int reg, in aureon_cs8415_read() argument
589 aureon_spi_write(ice, AUREON_CS8415_CS, 0x2000 | reg, 16); in aureon_cs8415_read()
590 aureon_spi_read(ice, AUREON_CS8415_CS, 0x21, 8, buffer, size); in aureon_cs8415_read()
593 static void aureon_cs8415_put(struct snd_ice1712 *ice, int reg, in aureon_cs8415_put() argument
596 aureon_spi_write(ice, AUREON_CS8415_CS, 0x200000 | (reg << 8) | val, 24); in aureon_cs8415_put()
602 static unsigned short wm_get(struct snd_ice1712 *ice, int reg) in wm_get() argument
605 return ((unsigned short)ice->akm[0].images[reg] << 8) | in wm_get()
606 ice->akm[0].images[reg + 1]; in wm_get()
612 static void wm_put_nocache(struct snd_ice1712 *ice, int reg, unsigned short val) in wm_put_nocache() argument
614 aureon_spi_write(ice, in wm_put_nocache()
615 ((ice->eeprom.subvendor == VT1724_SUBDEVICE_PRODIGY71LT || in wm_put_nocache()
616 ice->eeprom.subvendor == VT1724_SUBDEVICE_PRODIGY71XT) ? in wm_put_nocache()
624 static void wm_put(struct snd_ice1712 *ice, int reg, unsigned short val) in wm_put() argument
626 wm_put_nocache(ice, reg, val); in wm_put()
628 ice->akm[0].images[reg] = val >> 8; in wm_put()
629 ice->akm[0].images[reg + 1] = val; in wm_put()
643 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_ac97_mmute_get() local
645 mutex_lock(&ice->gpio_mutex); in aureon_ac97_mmute_get()
647 ucontrol->value.integer.value[0] = (wm_get(ice, WM_OUT_MUX1) >> 1) & 0x01; in aureon_ac97_mmute_get()
649 mutex_unlock(&ice->gpio_mutex); in aureon_ac97_mmute_get()
655 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_ac97_mmute_put() local
659 snd_ice1712_save_gpio_status(ice); in aureon_ac97_mmute_put()
661 ovol = wm_get(ice, WM_OUT_MUX1); in aureon_ac97_mmute_put()
665 wm_put(ice, WM_OUT_MUX1, nvol); in aureon_ac97_mmute_put()
667 snd_ice1712_restore_gpio_status(ice); in aureon_ac97_mmute_put()
682 static void wm_set_vol(struct snd_ice1712 *ice, unsigned int index, unsigned short vol, unsigned sh… in wm_set_vol() argument
694 wm_put(ice, index, nvol); in wm_set_vol()
695 wm_put_nocache(ice, index, 0x180 | nvol); in wm_set_vol()
705 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_pcm_mute_get() local
707 mutex_lock(&ice->gpio_mutex); in wm_pcm_mute_get()
708 ucontrol->value.integer.value[0] = (wm_get(ice, WM_MUTE) & 0x10) ? 0 : 1; in wm_pcm_mute_get()
709 mutex_unlock(&ice->gpio_mutex); in wm_pcm_mute_get()
715 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_pcm_mute_put() local
719 snd_ice1712_save_gpio_status(ice); in wm_pcm_mute_put()
720 oval = wm_get(ice, WM_MUTE); in wm_pcm_mute_put()
724 wm_put(ice, WM_MUTE, nval); in wm_pcm_mute_put()
725 snd_ice1712_restore_gpio_status(ice); in wm_pcm_mute_put()
744 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_master_vol_get() local
745 struct aureon_spec *spec = ice->spec; in wm_master_vol_get()
755 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_master_vol_put() local
756 struct aureon_spec *spec = ice->spec; in wm_master_vol_put()
759 snd_ice1712_save_gpio_status(ice); in wm_master_vol_put()
768 for (dac = 0; dac < ice->num_total_dacs; dac += 2) in wm_master_vol_put()
769 wm_set_vol(ice, WM_DAC_ATTEN + dac + ch, in wm_master_vol_put()
775 snd_ice1712_restore_gpio_status(ice); in wm_master_vol_put()
794 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_vol_get() local
795 struct aureon_spec *spec = ice->spec; in wm_vol_get()
808 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_vol_put() local
809 struct aureon_spec *spec = ice->spec; in wm_vol_put()
815 snd_ice1712_save_gpio_status(ice); in wm_vol_put()
824 wm_set_vol(ice, idx, spec->vol[ofs + i], in wm_vol_put()
829 snd_ice1712_restore_gpio_status(ice); in wm_vol_put()
847 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_mute_get() local
848 struct aureon_spec *spec = ice->spec; in wm_mute_get()
862 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_mute_put() local
863 struct aureon_spec *spec = ice->spec; in wm_mute_put()
869 snd_ice1712_save_gpio_status(ice); in wm_mute_put()
876 wm_set_vol(ice, ofs + i, spec->vol[ofs + i], in wm_mute_put()
881 snd_ice1712_restore_gpio_status(ice); in wm_mute_put()
893 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_master_mute_get() local
894 struct aureon_spec *spec = ice->spec; in wm_master_mute_get()
905 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_master_mute_put() local
906 struct aureon_spec *spec = ice->spec; in wm_master_mute_put()
909 snd_ice1712_save_gpio_status(ice); in wm_master_mute_put()
917 for (dac = 0; dac < ice->num_total_dacs; dac += 2) in wm_master_mute_put()
918 wm_set_vol(ice, WM_DAC_ATTEN + dac + i, in wm_master_mute_put()
924 snd_ice1712_restore_gpio_status(ice); in wm_master_mute_put()
944 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_pcm_vol_get() local
947 mutex_lock(&ice->gpio_mutex); in wm_pcm_vol_get()
948 val = wm_get(ice, WM_DAC_DIG_MASTER_ATTEN) & 0xff; in wm_pcm_vol_get()
951 mutex_unlock(&ice->gpio_mutex); in wm_pcm_vol_get()
957 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_pcm_vol_put() local
964 snd_ice1712_save_gpio_status(ice); in wm_pcm_vol_put()
966 ovol = wm_get(ice, WM_DAC_DIG_MASTER_ATTEN) & 0xff; in wm_pcm_vol_put()
968 wm_put(ice, WM_DAC_DIG_MASTER_ATTEN, nvol); /* prelatch */ in wm_pcm_vol_put()
969 wm_put_nocache(ice, WM_DAC_DIG_MASTER_ATTEN, nvol | 0x100); /* update */ in wm_pcm_vol_put()
972 snd_ice1712_restore_gpio_status(ice); in wm_pcm_vol_put()
983 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_adc_mute_get() local
987 mutex_lock(&ice->gpio_mutex); in wm_adc_mute_get()
989 val = wm_get(ice, WM_ADC_GAIN + i); in wm_adc_mute_get()
992 mutex_unlock(&ice->gpio_mutex); in wm_adc_mute_get()
998 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_adc_mute_put() local
1002 snd_ice1712_save_gpio_status(ice); in wm_adc_mute_put()
1004 old = wm_get(ice, WM_ADC_GAIN + i); in wm_adc_mute_put()
1007 wm_put(ice, WM_ADC_GAIN + i, new); in wm_adc_mute_put()
1011 snd_ice1712_restore_gpio_status(ice); in wm_adc_mute_put()
1030 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_adc_vol_get() local
1034 mutex_lock(&ice->gpio_mutex); in wm_adc_vol_get()
1037 vol = wm_get(ice, idx) & 0x1f; in wm_adc_vol_get()
1040 mutex_unlock(&ice->gpio_mutex); in wm_adc_vol_get()
1046 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_adc_vol_put() local
1051 snd_ice1712_save_gpio_status(ice); in wm_adc_vol_put()
1055 ovol = wm_get(ice, idx); in wm_adc_vol_put()
1057 wm_put(ice, idx, nvol | (ovol & ~0x1f)); in wm_adc_vol_put()
1061 snd_ice1712_restore_gpio_status(ice); in wm_adc_vol_put()
1087 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_adc_mux_info() local
1089 if (ice->eeprom.subvendor == VT1724_SUBDEVICE_AUREON71_UNIVERSE) in wm_adc_mux_info()
1097 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_adc_mux_get() local
1100 mutex_lock(&ice->gpio_mutex); in wm_adc_mux_get()
1101 val = wm_get(ice, WM_ADC_MUX); in wm_adc_mux_get()
1104 mutex_unlock(&ice->gpio_mutex); in wm_adc_mux_get()
1110 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_adc_mux_put() local
1114 snd_ice1712_save_gpio_status(ice); in wm_adc_mux_put()
1115 oval = wm_get(ice, WM_ADC_MUX); in wm_adc_mux_put()
1121 wm_put(ice, WM_ADC_MUX, nval); in wm_adc_mux_put()
1122 snd_ice1712_restore_gpio_status(ice); in wm_adc_mux_put()
1131 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_cs8415_mux_info() local
1140 if (ice->eeprom.subvendor == VT1724_SUBDEVICE_PRODIGY71) in aureon_cs8415_mux_info()
1148 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_cs8415_mux_get() local
1149 struct aureon_spec *spec = ice->spec; in aureon_cs8415_mux_get()
1151 /* snd_ice1712_save_gpio_status(ice); */ in aureon_cs8415_mux_get()
1152 /* val = aureon_cs8415_get(ice, CS8415_CTRL2); */ in aureon_cs8415_mux_get()
1154 /* snd_ice1712_restore_gpio_status(ice); */ in aureon_cs8415_mux_get()
1160 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_cs8415_mux_put() local
1161 struct aureon_spec *spec = ice->spec; in aureon_cs8415_mux_put()
1165 snd_ice1712_save_gpio_status(ice); in aureon_cs8415_mux_put()
1166 oval = aureon_cs8415_get(ice, CS8415_CTRL2); in aureon_cs8415_mux_put()
1171 aureon_cs8415_put(ice, CS8415_CTRL2, nval); in aureon_cs8415_mux_put()
1172 snd_ice1712_restore_gpio_status(ice); in aureon_cs8415_mux_put()
1188 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_cs8415_rate_get() local
1190 ratio = aureon_cs8415_get(ice, CS8415_RATIO); in aureon_cs8415_rate_get()
1202 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_cs8415_mute_get() local
1203 snd_ice1712_save_gpio_status(ice); in aureon_cs8415_mute_get()
1204 ucontrol->value.integer.value[0] = (aureon_cs8415_get(ice, CS8415_CTRL1) & 0x20) ? 0 : 1; in aureon_cs8415_mute_get()
1205 snd_ice1712_restore_gpio_status(ice); in aureon_cs8415_mute_get()
1211 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_cs8415_mute_put() local
1214 snd_ice1712_save_gpio_status(ice); in aureon_cs8415_mute_put()
1215 oval = aureon_cs8415_get(ice, CS8415_CTRL1); in aureon_cs8415_mute_put()
1222 aureon_cs8415_put(ice, CS8415_CTRL1, nval); in aureon_cs8415_mute_put()
1223 snd_ice1712_restore_gpio_status(ice); in aureon_cs8415_mute_put()
1239 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_cs8415_qsub_get() local
1241 snd_ice1712_save_gpio_status(ice); in aureon_cs8415_qsub_get()
1242 aureon_cs8415_read(ice, CS8415_QSUB, ucontrol->value.bytes.data, 10); in aureon_cs8415_qsub_get()
1243 snd_ice1712_restore_gpio_status(ice); in aureon_cs8415_qsub_get()
1263 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_cs8415_spdif_get() local
1265 snd_ice1712_save_gpio_status(ice); in aureon_cs8415_spdif_get()
1266 aureon_cs8415_read(ice, CS8415_C_BUFFER, ucontrol->value.iec958.status, 24); in aureon_cs8415_spdif_get()
1267 snd_ice1712_restore_gpio_status(ice); in aureon_cs8415_spdif_get()
1274 static int aureon_set_headphone_amp(struct snd_ice1712 *ice, int enable) in aureon_set_headphone_amp() argument
1278 tmp2 = tmp = snd_ice1712_gpio_read(ice); in aureon_set_headphone_amp()
1280 if (ice->eeprom.subvendor != VT1724_SUBDEVICE_PRODIGY71LT && in aureon_set_headphone_amp()
1281 ice->eeprom.subvendor != VT1724_SUBDEVICE_PRODIGY71XT) in aureon_set_headphone_amp()
1286 if (ice->eeprom.subvendor != VT1724_SUBDEVICE_PRODIGY71LT && in aureon_set_headphone_amp()
1287 ice->eeprom.subvendor != VT1724_SUBDEVICE_PRODIGY71XT) in aureon_set_headphone_amp()
1292 snd_ice1712_gpio_write(ice, tmp); in aureon_set_headphone_amp()
1298 static int aureon_get_headphone_amp(struct snd_ice1712 *ice) in aureon_get_headphone_amp() argument
1300 unsigned int tmp = snd_ice1712_gpio_read(ice); in aureon_get_headphone_amp()
1309 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_hpamp_get() local
1311 ucontrol->value.integer.value[0] = aureon_get_headphone_amp(ice); in aureon_hpamp_get()
1318 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_hpamp_put() local
1320 return aureon_set_headphone_amp(ice, ucontrol->value.integer.value[0]); in aureon_hpamp_put()
1331 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_deemp_get() local
1332 ucontrol->value.integer.value[0] = (wm_get(ice, WM_DAC_CTRL2) & 0xf) == 0xf; in aureon_deemp_get()
1338 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_deemp_put() local
1340 temp2 = temp = wm_get(ice, WM_DAC_CTRL2); in aureon_deemp_put()
1346 wm_put(ice, WM_DAC_CTRL2, temp); in aureon_deemp_put()
1364 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_oversampling_get() local
1365 ucontrol->value.enumerated.item[0] = (wm_get(ice, WM_MASTER) & 0x8) == 0x8; in aureon_oversampling_get()
1372 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in aureon_oversampling_put() local
1374 temp2 = temp = wm_get(ice, WM_MASTER); in aureon_oversampling_put()
1382 wm_put(ice, WM_MASTER, temp); in aureon_oversampling_put()
1855 static int aureon_add_controls(struct snd_ice1712 *ice) in aureon_add_controls() argument
1861 if (ice->eeprom.subvendor == VT1724_SUBDEVICE_AUREON51_SKY) in aureon_add_controls()
1864 err = snd_ctl_add(ice->card, snd_ctl_new1(&aureon_dac_controls[i], ice)); in aureon_add_controls()
1870 err = snd_ctl_add(ice->card, snd_ctl_new1(&wm_controls[i], ice)); in aureon_add_controls()
1875 if (ice->eeprom.subvendor == VT1724_SUBDEVICE_AUREON71_UNIVERSE) { in aureon_add_controls()
1877 err = snd_ctl_add(ice->card, snd_ctl_new1(&universe_ac97_controls[i], ice)); in aureon_add_controls()
1881 } else if (ice->eeprom.subvendor != VT1724_SUBDEVICE_PRODIGY71LT && in aureon_add_controls()
1882 ice->eeprom.subvendor != VT1724_SUBDEVICE_PRODIGY71XT) { in aureon_add_controls()
1884 err = snd_ctl_add(ice->card, snd_ctl_new1(&ac97_controls[i], ice)); in aureon_add_controls()
1890 if (ice->eeprom.subvendor != VT1724_SUBDEVICE_PRODIGY71LT && in aureon_add_controls()
1891 ice->eeprom.subvendor != VT1724_SUBDEVICE_PRODIGY71XT) { in aureon_add_controls()
1893 snd_ice1712_save_gpio_status(ice); in aureon_add_controls()
1894 id = aureon_cs8415_get(ice, CS8415_ID); in aureon_add_controls()
1895 snd_ice1712_restore_gpio_status(ice); in aureon_add_controls()
1897 dev_info(ice->card->dev, in aureon_add_controls()
1902 kctl = snd_ctl_new1(&cs8415_controls[i], ice); in aureon_add_controls()
1904 kctl->id.device = ice->pcm->device; in aureon_add_controls()
1905 err = snd_ctl_add(ice->card, kctl); in aureon_add_controls()
1918 static int aureon_reset(struct snd_ice1712 *ice) in aureon_reset() argument
2008 struct aureon_spec *spec = ice->spec; in aureon_reset()
2010 err = aureon_ac97_init(ice); in aureon_reset()
2014 snd_ice1712_gpio_set_dir(ice, 0x5fffff); /* fix this for the time being */ in aureon_reset()
2017 snd_ice1712_save_gpio_status(ice); in aureon_reset()
2018 snd_ice1712_gpio_set_mask(ice, ~(AUREON_WM_RESET|AUREON_WM_CS|AUREON_CS8415_CS|AUREON_HP_SEL)); in aureon_reset()
2020 tmp = snd_ice1712_gpio_read(ice); in aureon_reset()
2022 snd_ice1712_gpio_write(ice, tmp); in aureon_reset()
2025 snd_ice1712_gpio_write(ice, tmp); in aureon_reset()
2028 snd_ice1712_gpio_write(ice, tmp); in aureon_reset()
2032 if (ice->eeprom.subvendor == VT1724_SUBDEVICE_PRODIGY71 || in aureon_reset()
2033 ice->eeprom.subvendor == VT1724_SUBDEVICE_PRODIGY71LT || in aureon_reset()
2034 ice->eeprom.subvendor == VT1724_SUBDEVICE_PRODIGY71XT) in aureon_reset()
2039 wm_put(ice, p[0], p[1]); in aureon_reset()
2042 if (ice->eeprom.subvendor != VT1724_SUBDEVICE_PRODIGY71LT && in aureon_reset()
2043 ice->eeprom.subvendor != VT1724_SUBDEVICE_PRODIGY71XT) { in aureon_reset()
2045 aureon_spi_write(ice, AUREON_CS8415_CS, *p | 0x200000, 24); in aureon_reset()
2048 aureon_set_headphone_amp(ice, 1); in aureon_reset()
2051 snd_ice1712_restore_gpio_status(ice); in aureon_reset()
2054 aureon_pca9554_write(ice, PCA9554_DIR, 0x00); in aureon_reset()
2055 aureon_pca9554_write(ice, PCA9554_OUT, 0x00); /* internal AUX */ in aureon_reset()
2063 static int aureon_resume(struct snd_ice1712 *ice) in aureon_resume() argument
2065 struct aureon_spec *spec = ice->spec; in aureon_resume()
2068 err = aureon_reset(ice); in aureon_resume()
2074 for (i = 0; i < ice->num_total_dacs; i++) in aureon_resume()
2075 wm_set_vol(ice, i, spec->vol[i], spec->master[i % 2]); in aureon_resume()
2083 static int aureon_init(struct snd_ice1712 *ice) in aureon_init() argument
2091 ice->spec = spec; in aureon_init()
2093 if (ice->eeprom.subvendor == VT1724_SUBDEVICE_AUREON51_SKY) { in aureon_init()
2094 ice->num_total_dacs = 6; in aureon_init()
2095 ice->num_total_adcs = 2; in aureon_init()
2098 ice->num_total_dacs = 8; in aureon_init()
2099 ice->num_total_adcs = 2; in aureon_init()
2103 ice->akm = kzalloc(sizeof(struct snd_akm4xxx), GFP_KERNEL); in aureon_init()
2104 if (!ice->akm) in aureon_init()
2106 ice->akm_codecs = 1; in aureon_init()
2108 err = aureon_reset(ice); in aureon_init()
2114 for (i = 0; i < ice->num_total_dacs; i++) { in aureon_init()
2116 wm_set_vol(ice, i, spec->vol[i], spec->master[i % 2]); in aureon_init()
2120 ice->pm_resume = aureon_resume; in aureon_init()
2121 ice->pm_suspend_enabled = 1; in aureon_init()