Lines Matching refs:ice

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