Lines Matching refs:ice

113 static unsigned short wm_get(struct snd_ice1712 *ice, int reg)
116 return ((unsigned short)ice->akm[0].images[reg] << 8) |
117 ice->akm[0].images[reg + 1];
123 static void wm_put_nocache(struct snd_ice1712 *ice, int reg, unsigned short val)
127 snd_vt1724_write_i2c(ice, WM_DEV, cval >> 8, cval & 0xff);
130 static void wm_put(struct snd_ice1712 *ice, int reg, unsigned short val)
132 wm_put_nocache(ice, reg, val);
134 ice->akm[0].images[reg] = val >> 8;
135 ice->akm[0].images[reg + 1] = val;
142 static void set_gpio_bit(struct snd_ice1712 *ice, unsigned int bit, int val)
144 unsigned int tmp = snd_ice1712_gpio_read(ice);
149 snd_ice1712_gpio_write(ice, tmp);
156 static void wm8766_spi_send_word(struct snd_ice1712 *ice, unsigned int data)
160 set_gpio_bit(ice, WM8766_SPI_CLK, 0);
162 set_gpio_bit(ice, WM8766_SPI_MD, data & 0x8000);
164 set_gpio_bit(ice, WM8766_SPI_CLK, 1);
170 static void wm8766_spi_write(struct snd_ice1712 *ice, unsigned int reg,
175 snd_ice1712_gpio_set_dir(ice, WM8766_SPI_MD|
177 snd_ice1712_gpio_set_mask(ice, ~(WM8766_SPI_MD|
180 set_gpio_bit(ice, WM8766_SPI_ML, 0);
182 wm8766_spi_send_word(ice, block); /* REGISTER ADDRESS */
184 set_gpio_bit(ice, WM8766_SPI_ML, 1);
187 snd_ice1712_gpio_set_mask(ice, ice->gpio.write_mask);
188 snd_ice1712_gpio_set_dir(ice, ice->gpio.direction);
196 static void ak4396_send_word(struct snd_ice1712 *ice, unsigned int data)
200 set_gpio_bit(ice, AK4396_CCLK, 0);
202 set_gpio_bit(ice, AK4396_CDTI, data & 0x8000);
204 set_gpio_bit(ice, AK4396_CCLK, 1);
210 static void ak4396_write(struct snd_ice1712 *ice, unsigned int reg,
215 snd_ice1712_gpio_set_dir(ice, AK4396_CSN|AK4396_CCLK|AK4396_CDTI);
216 snd_ice1712_gpio_set_mask(ice, ~(AK4396_CSN|AK4396_CCLK|AK4396_CDTI));
218 set_gpio_bit(ice, AK4396_CSN, 0);
221 ak4396_send_word(ice, block); /* REGISTER ADDRESS */
223 set_gpio_bit(ice, AK4396_CSN, 1);
226 snd_ice1712_gpio_set_mask(ice, ice->gpio.write_mask);
227 snd_ice1712_gpio_set_dir(ice, ice->gpio.direction);
254 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
255 struct prodigy_hifi_spec *spec = ice->spec;
266 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
267 struct prodigy_hifi_spec *spec = ice->spec;
271 mutex_lock(&ice->gpio_mutex);
275 ak4396_write(ice, AK4396_LCH_ATT + i,
280 mutex_unlock(&ice->gpio_mutex);
312 static void wm_set_vol(struct snd_ice1712 *ice, unsigned int index,
325 wm_put(ice, index, nvol);
326 wm_put_nocache(ice, index, 0x100 | nvol);
329 static void wm8766_set_vol(struct snd_ice1712 *ice, unsigned int index,
342 wm8766_spi_write(ice, index, (0x0100 | nvol));
363 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
364 struct prodigy_hifi_spec *spec = ice->spec;
375 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
376 struct prodigy_hifi_spec *spec = ice->spec;
379 mutex_lock(&ice->gpio_mutex);
385 wm_set_vol(ice, idx, spec->vol[2 + i], spec->master[i]);
389 mutex_unlock(&ice->gpio_mutex);
411 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
412 struct prodigy_hifi_spec *spec = ice->spec;
424 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
425 struct prodigy_hifi_spec *spec = ice->spec;
431 mutex_lock(&ice->gpio_mutex);
437 wm8766_set_vol(ice, idx,
442 mutex_unlock(&ice->gpio_mutex);
462 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
463 struct prodigy_hifi_spec *spec = ice->spec;
473 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
474 struct prodigy_hifi_spec *spec = ice->spec;
477 mutex_lock(&ice->gpio_mutex);
483 wm_set_vol(ice, WM_DAC_ATTEN_L + ch,
486 wm8766_set_vol(ice, WM8766_LDA1 + ch,
489 wm8766_set_vol(ice, WM8766_LDA2 + ch,
492 wm8766_set_vol(ice, WM8766_LDA3 + ch,
497 mutex_unlock(&ice->gpio_mutex);
536 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
538 mutex_lock(&ice->gpio_mutex);
539 ucontrol->value.enumerated.item[0] = wm_get(ice, WM_ADC_MUX) & 0x1f;
540 mutex_unlock(&ice->gpio_mutex);
547 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
551 mutex_lock(&ice->gpio_mutex);
552 oval = wm_get(ice, WM_ADC_MUX);
555 wm_put(ice, WM_ADC_MUX, nval);
558 mutex_unlock(&ice->gpio_mutex);
585 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
589 mutex_lock(&ice->gpio_mutex);
591 val = wm_get(ice, WM_ADC_ATTEN_L + i) & 0xff;
595 mutex_unlock(&ice->gpio_mutex);
602 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
606 mutex_lock(&ice->gpio_mutex);
611 ovol = wm_get(ice, idx) & 0xff;
613 wm_put(ice, idx, nvol);
617 mutex_unlock(&ice->gpio_mutex);
629 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
632 mutex_lock(&ice->gpio_mutex);
634 (wm_get(ice, WM_ADC_MUX) & (1 << bit)) ? 1 : 0;
635 mutex_unlock(&ice->gpio_mutex);
642 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
647 mutex_lock(&ice->gpio_mutex);
648 nval = oval = wm_get(ice, WM_ADC_MUX);
655 wm_put(ice, WM_ADC_MUX, nval);
657 mutex_unlock(&ice->gpio_mutex);
669 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
671 mutex_lock(&ice->gpio_mutex);
673 (wm_get(ice, WM_OUT_MUX) & 0x04) ? 1 : 0;
674 mutex_unlock(&ice->gpio_mutex);
681 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
685 mutex_lock(&ice->gpio_mutex);
686 val = oval = wm_get(ice, WM_OUT_MUX);
692 wm_put(ice, WM_OUT_MUX, val);
695 mutex_unlock(&ice->gpio_mutex);
707 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
709 mutex_lock(&ice->gpio_mutex);
711 (wm_get(ice, WM_DAC_CTRL1) & 0xf0) != 0x90;
712 mutex_unlock(&ice->gpio_mutex);
719 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
723 mutex_lock(&ice->gpio_mutex);
724 oval = wm_get(ice, WM_DAC_CTRL1);
731 wm_put(ice, WM_DAC_CTRL1, val);
732 wm_put_nocache(ice, WM_DAC_CTRL1, val);
735 mutex_unlock(&ice->gpio_mutex);
864 struct snd_ice1712 *ice = entry->private_data;
867 mutex_lock(&ice->gpio_mutex);
872 wm_put(ice, reg, val);
874 mutex_unlock(&ice->gpio_mutex);
880 struct snd_ice1712 *ice = entry->private_data;
883 mutex_lock(&ice->gpio_mutex);
885 val = wm_get(ice, reg);
888 mutex_unlock(&ice->gpio_mutex);
891 static void wm_proc_init(struct snd_ice1712 *ice)
893 snd_card_rw_proc_new(ice->card, "wm_codec", ice, wm_proc_regs_read,
897 static int prodigy_hifi_add_controls(struct snd_ice1712 *ice)
903 err = snd_ctl_add(ice->card,
904 snd_ctl_new1(&prodigy_hifi_controls[i], ice));
909 wm_proc_init(ice);
914 static int prodigy_hd2_add_controls(struct snd_ice1712 *ice)
920 err = snd_ctl_add(ice->card,
921 snd_ctl_new1(&prodigy_hd2_controls[i], ice));
926 wm_proc_init(ice);
931 static void wm8766_init(struct snd_ice1712 *ice)
951 wm8766_spi_write(ice, wm8766_inits[i], wm8766_inits[i + 1]);
954 static void wm8776_init(struct snd_ice1712 *ice)
970 wm_put(ice, wm8776_inits[i], wm8776_inits[i + 1]);
974 static int prodigy_hifi_resume(struct snd_ice1712 *ice)
994 struct prodigy_hifi_spec *spec = ice->spec;
997 mutex_lock(&ice->gpio_mutex);
1000 wm8776_init(ice);
1003 wm_put(ice, wm8776_reinit_registers[i],
1004 wm_get(ice, wm8776_reinit_registers[i]));
1007 wm8766_init(ice);
1009 wm_set_vol(ice, WM_DAC_ATTEN_L + ch,
1012 wm8766_set_vol(ice, WM8766_LDA1 + ch,
1015 wm8766_set_vol(ice, WM8766_LDA2 + ch,
1018 wm8766_set_vol(ice, WM8766_LDA3 + ch,
1023 wm_put(ice, WM_DAC_MUTE, 0x00);
1024 wm_put(ice, WM_DAC_CTRL1, 0x90);
1026 mutex_unlock(&ice->gpio_mutex);
1034 static int prodigy_hifi_init(struct snd_ice1712 *ice)
1067 ice->vt1720 = 0;
1068 ice->vt1724 = 1;
1070 ice->num_total_dacs = 8;
1071 ice->num_total_adcs = 1;
1076 ice->gpio.saved[0] = 0;
1079 ice->akm = kzalloc(sizeof(struct snd_akm4xxx), GFP_KERNEL);
1080 if (! ice->akm)
1082 ice->akm_codecs = 1;
1087 ice->spec = spec;
1090 wm8776_init(ice);
1093 wm_put(ice, wm8776_defaults[i], wm8776_defaults[i + 1]);
1095 wm8766_init(ice);
1098 ice->pm_resume = &prodigy_hifi_resume;
1099 ice->pm_suspend_enabled = 1;
1109 static void ak4396_init(struct snd_ice1712 *ice)
1123 ak4396_write(ice, AK4396_CTRL1, 0x86);
1125 ak4396_write(ice, AK4396_CTRL1, 0x87);
1128 ak4396_write(ice, ak4396_inits[i], ak4396_inits[i+1]);
1132 static int prodigy_hd2_resume(struct snd_ice1712 *ice)
1135 struct prodigy_hifi_spec *spec = ice->spec;
1137 mutex_lock(&ice->gpio_mutex);
1138 ak4396_init(ice);
1140 ak4396_write(ice, AK4396_LCH_ATT + i, spec->vol[i] & 0xff);
1141 mutex_unlock(&ice->gpio_mutex);
1146 static int prodigy_hd2_init(struct snd_ice1712 *ice)
1150 ice->vt1720 = 0;
1151 ice->vt1724 = 1;
1153 ice->num_total_dacs = 1;
1154 ice->num_total_adcs = 1;
1159 ice->gpio.saved[0] = 0;
1162 ice->akm = kzalloc(sizeof(struct snd_akm4xxx), GFP_KERNEL);
1163 if (! ice->akm)
1165 ice->akm_codecs = 1;
1170 ice->spec = spec;
1173 ice->pm_resume = &prodigy_hd2_resume;
1174 ice->pm_suspend_enabled = 1;
1177 ak4396_init(ice);