Lines Matching refs:ice
127 static unsigned short wm_get(struct snd_ice1712 *ice, int reg) in wm_get() argument
130 return ((unsigned short)ice->akm[0].images[reg] << 8) | in wm_get()
131 ice->akm[0].images[reg + 1]; in wm_get()
137 static void wm_put_nocache(struct snd_ice1712 *ice, int reg, unsigned short val) in wm_put_nocache() argument
141 snd_vt1724_write_i2c(ice, WM_DEV, cval >> 8, cval & 0xff); in wm_put_nocache()
144 static void wm_put(struct snd_ice1712 *ice, int reg, unsigned short val) in wm_put() argument
146 wm_put_nocache(ice, reg, val); in wm_put()
148 ice->akm[0].images[reg] = val >> 8; in wm_put()
149 ice->akm[0].images[reg + 1] = val; in wm_put()
156 static void set_gpio_bit(struct snd_ice1712 *ice, unsigned int bit, int val) in set_gpio_bit() argument
158 unsigned int tmp = snd_ice1712_gpio_read(ice); in set_gpio_bit()
163 snd_ice1712_gpio_write(ice, tmp); in set_gpio_bit()
170 static void wm8766_spi_send_word(struct snd_ice1712 *ice, unsigned int data) in wm8766_spi_send_word() argument
174 set_gpio_bit(ice, WM8766_SPI_CLK, 0); in wm8766_spi_send_word()
176 set_gpio_bit(ice, WM8766_SPI_MD, data & 0x8000); in wm8766_spi_send_word()
178 set_gpio_bit(ice, WM8766_SPI_CLK, 1); in wm8766_spi_send_word()
184 static void wm8766_spi_write(struct snd_ice1712 *ice, unsigned int reg, in wm8766_spi_write() argument
189 snd_ice1712_gpio_set_dir(ice, WM8766_SPI_MD| in wm8766_spi_write()
191 snd_ice1712_gpio_set_mask(ice, ~(WM8766_SPI_MD| in wm8766_spi_write()
194 set_gpio_bit(ice, WM8766_SPI_ML, 0); in wm8766_spi_write()
196 wm8766_spi_send_word(ice, block); /* REGISTER ADDRESS */ in wm8766_spi_write()
198 set_gpio_bit(ice, WM8766_SPI_ML, 1); in wm8766_spi_write()
201 snd_ice1712_gpio_set_mask(ice, ice->gpio.write_mask); in wm8766_spi_write()
202 snd_ice1712_gpio_set_dir(ice, ice->gpio.direction); in wm8766_spi_write()
210 static void ak4396_send_word(struct snd_ice1712 *ice, unsigned int data) in ak4396_send_word() argument
214 set_gpio_bit(ice, AK4396_CCLK, 0); in ak4396_send_word()
216 set_gpio_bit(ice, AK4396_CDTI, data & 0x8000); in ak4396_send_word()
218 set_gpio_bit(ice, AK4396_CCLK, 1); in ak4396_send_word()
224 static void ak4396_write(struct snd_ice1712 *ice, unsigned int reg, in ak4396_write() argument
229 snd_ice1712_gpio_set_dir(ice, AK4396_CSN|AK4396_CCLK|AK4396_CDTI); in ak4396_write()
230 snd_ice1712_gpio_set_mask(ice, ~(AK4396_CSN|AK4396_CCLK|AK4396_CDTI)); in ak4396_write()
232 set_gpio_bit(ice, AK4396_CSN, 0); in ak4396_write()
235 ak4396_send_word(ice, block); /* REGISTER ADDRESS */ in ak4396_write()
237 set_gpio_bit(ice, AK4396_CSN, 1); in ak4396_write()
240 snd_ice1712_gpio_set_mask(ice, ice->gpio.write_mask); in ak4396_write()
241 snd_ice1712_gpio_set_dir(ice, ice->gpio.direction); in ak4396_write()
268 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in ak4396_dac_vol_get() local
269 struct prodigy_hifi_spec *spec = ice->spec; in ak4396_dac_vol_get()
280 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in ak4396_dac_vol_put() local
281 struct prodigy_hifi_spec *spec = ice->spec; in ak4396_dac_vol_put()
285 mutex_lock(&ice->gpio_mutex); in ak4396_dac_vol_put()
289 ak4396_write(ice, AK4396_LCH_ATT + i, in ak4396_dac_vol_put()
294 mutex_unlock(&ice->gpio_mutex); in ak4396_dac_vol_put()
345 static void wm_set_vol(struct snd_ice1712 *ice, unsigned int index, in wm_set_vol() argument
358 wm_put(ice, index, nvol); in wm_set_vol()
359 wm_put_nocache(ice, index, 0x100 | nvol); in wm_set_vol()
362 static void wm8766_set_vol(struct snd_ice1712 *ice, unsigned int index, in wm8766_set_vol() argument
375 wm8766_spi_write(ice, index, (0x0100 | nvol)); in wm8766_set_vol()
396 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_dac_vol_get() local
397 struct prodigy_hifi_spec *spec = ice->spec; in wm_dac_vol_get()
408 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_dac_vol_put() local
409 struct prodigy_hifi_spec *spec = ice->spec; in wm_dac_vol_put()
412 mutex_lock(&ice->gpio_mutex); in wm_dac_vol_put()
418 wm_set_vol(ice, idx, spec->vol[2 + i], spec->master[i]); in wm_dac_vol_put()
422 mutex_unlock(&ice->gpio_mutex); in wm_dac_vol_put()
444 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm8766_vol_get() local
445 struct prodigy_hifi_spec *spec = ice->spec; in wm8766_vol_get()
457 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm8766_vol_put() local
458 struct prodigy_hifi_spec *spec = ice->spec; in wm8766_vol_put()
464 mutex_lock(&ice->gpio_mutex); in wm8766_vol_put()
470 wm8766_set_vol(ice, idx, in wm8766_vol_put()
475 mutex_unlock(&ice->gpio_mutex); in wm8766_vol_put()
495 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_master_vol_get() local
496 struct prodigy_hifi_spec *spec = ice->spec; in wm_master_vol_get()
506 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_master_vol_put() local
507 struct prodigy_hifi_spec *spec = ice->spec; in wm_master_vol_put()
510 mutex_lock(&ice->gpio_mutex); in wm_master_vol_put()
516 wm_set_vol(ice, WM_DAC_ATTEN_L + ch, in wm_master_vol_put()
519 wm8766_set_vol(ice, WM8766_LDA1 + ch, in wm_master_vol_put()
522 wm8766_set_vol(ice, WM8766_LDA2 + ch, in wm_master_vol_put()
525 wm8766_set_vol(ice, WM8766_LDA3 + ch, in wm_master_vol_put()
530 mutex_unlock(&ice->gpio_mutex); in wm_master_vol_put()
569 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_adc_mux_enum_get() local
571 mutex_lock(&ice->gpio_mutex); in wm_adc_mux_enum_get()
572 ucontrol->value.integer.value[0] = wm_get(ice, WM_ADC_MUX) & 0x1f; in wm_adc_mux_enum_get()
573 mutex_unlock(&ice->gpio_mutex); in wm_adc_mux_enum_get()
580 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_adc_mux_enum_put() local
584 mutex_lock(&ice->gpio_mutex); in wm_adc_mux_enum_put()
585 oval = wm_get(ice, WM_ADC_MUX); in wm_adc_mux_enum_put()
588 wm_put(ice, WM_ADC_MUX, nval); in wm_adc_mux_enum_put()
591 mutex_unlock(&ice->gpio_mutex); in wm_adc_mux_enum_put()
618 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_adc_vol_get() local
622 mutex_lock(&ice->gpio_mutex); in wm_adc_vol_get()
624 val = wm_get(ice, WM_ADC_ATTEN_L + i) & 0xff; in wm_adc_vol_get()
628 mutex_unlock(&ice->gpio_mutex); in wm_adc_vol_get()
635 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_adc_vol_put() local
639 mutex_lock(&ice->gpio_mutex); in wm_adc_vol_put()
644 ovol = wm_get(ice, idx) & 0xff; in wm_adc_vol_put()
646 wm_put(ice, idx, nvol); in wm_adc_vol_put()
650 mutex_unlock(&ice->gpio_mutex); in wm_adc_vol_put()
662 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_adc_mux_get() local
665 mutex_lock(&ice->gpio_mutex); in wm_adc_mux_get()
667 (wm_get(ice, WM_ADC_MUX) & (1 << bit)) ? 1 : 0; in wm_adc_mux_get()
668 mutex_unlock(&ice->gpio_mutex); in wm_adc_mux_get()
675 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_adc_mux_put() local
680 mutex_lock(&ice->gpio_mutex); in wm_adc_mux_put()
681 nval = oval = wm_get(ice, WM_ADC_MUX); in wm_adc_mux_put()
688 wm_put(ice, WM_ADC_MUX, nval); in wm_adc_mux_put()
690 mutex_unlock(&ice->gpio_mutex); in wm_adc_mux_put()
702 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_bypass_get() local
704 mutex_lock(&ice->gpio_mutex); in wm_bypass_get()
706 (wm_get(ice, WM_OUT_MUX) & 0x04) ? 1 : 0; in wm_bypass_get()
707 mutex_unlock(&ice->gpio_mutex); in wm_bypass_get()
714 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_bypass_put() local
718 mutex_lock(&ice->gpio_mutex); in wm_bypass_put()
719 val = oval = wm_get(ice, WM_OUT_MUX); in wm_bypass_put()
725 wm_put(ice, WM_OUT_MUX, val); in wm_bypass_put()
728 mutex_unlock(&ice->gpio_mutex); in wm_bypass_put()
740 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_chswap_get() local
742 mutex_lock(&ice->gpio_mutex); in wm_chswap_get()
744 (wm_get(ice, WM_DAC_CTRL1) & 0xf0) != 0x90; in wm_chswap_get()
745 mutex_unlock(&ice->gpio_mutex); in wm_chswap_get()
752 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_chswap_put() local
756 mutex_lock(&ice->gpio_mutex); in wm_chswap_put()
757 oval = wm_get(ice, WM_DAC_CTRL1); in wm_chswap_put()
764 wm_put(ice, WM_DAC_CTRL1, val); in wm_chswap_put()
765 wm_put_nocache(ice, WM_DAC_CTRL1, val); in wm_chswap_put()
768 mutex_unlock(&ice->gpio_mutex); in wm_chswap_put()
897 struct snd_ice1712 *ice = entry->private_data; in wm_proc_regs_write() local
900 mutex_lock(&ice->gpio_mutex); in wm_proc_regs_write()
905 wm_put(ice, reg, val); in wm_proc_regs_write()
907 mutex_unlock(&ice->gpio_mutex); in wm_proc_regs_write()
913 struct snd_ice1712 *ice = entry->private_data; in wm_proc_regs_read() local
916 mutex_lock(&ice->gpio_mutex); in wm_proc_regs_read()
918 val = wm_get(ice, reg); in wm_proc_regs_read()
921 mutex_unlock(&ice->gpio_mutex); in wm_proc_regs_read()
924 static void wm_proc_init(struct snd_ice1712 *ice) in wm_proc_init() argument
927 if (!snd_card_proc_new(ice->card, "wm_codec", &entry)) { in wm_proc_init()
928 snd_info_set_text_ops(entry, ice, wm_proc_regs_read); in wm_proc_init()
934 static int prodigy_hifi_add_controls(struct snd_ice1712 *ice) in prodigy_hifi_add_controls() argument
940 err = snd_ctl_add(ice->card, in prodigy_hifi_add_controls()
941 snd_ctl_new1(&prodigy_hifi_controls[i], ice)); in prodigy_hifi_add_controls()
946 wm_proc_init(ice); in prodigy_hifi_add_controls()
951 static int prodigy_hd2_add_controls(struct snd_ice1712 *ice) in prodigy_hd2_add_controls() argument
957 err = snd_ctl_add(ice->card, in prodigy_hd2_add_controls()
958 snd_ctl_new1(&prodigy_hd2_controls[i], ice)); in prodigy_hd2_add_controls()
963 wm_proc_init(ice); in prodigy_hd2_add_controls()
972 static int prodigy_hifi_init(struct snd_ice1712 *ice) in prodigy_hifi_init() argument
1032 ice->vt1720 = 0; in prodigy_hifi_init()
1033 ice->vt1724 = 1; in prodigy_hifi_init()
1035 ice->num_total_dacs = 8; in prodigy_hifi_init()
1036 ice->num_total_adcs = 1; in prodigy_hifi_init()
1041 ice->gpio.saved[0] = 0; in prodigy_hifi_init()
1044 ice->akm = kzalloc(sizeof(struct snd_akm4xxx), GFP_KERNEL); in prodigy_hifi_init()
1045 if (! ice->akm) in prodigy_hifi_init()
1047 ice->akm_codecs = 1; in prodigy_hifi_init()
1052 ice->spec = spec; in prodigy_hifi_init()
1056 wm_put(ice, wm_inits[i], wm_inits[i+1]); in prodigy_hifi_init()
1059 wm_put(ice, wm_inits2[i], wm_inits2[i+1]); in prodigy_hifi_init()
1063 wm8766_spi_write(ice, wm8766_inits[i], wm8766_inits[i+1]); in prodigy_hifi_init()
1073 static void ak4396_init(struct snd_ice1712 *ice) in ak4396_init() argument
1087 ak4396_write(ice, AK4396_CTRL1, 0x86); in ak4396_init()
1089 ak4396_write(ice, AK4396_CTRL1, 0x87); in ak4396_init()
1092 ak4396_write(ice, ak4396_inits[i], ak4396_inits[i+1]); in ak4396_init()
1096 static int prodigy_hd2_resume(struct snd_ice1712 *ice) in prodigy_hd2_resume() argument
1099 struct prodigy_hifi_spec *spec = ice->spec; in prodigy_hd2_resume()
1101 mutex_lock(&ice->gpio_mutex); in prodigy_hd2_resume()
1102 ak4396_init(ice); in prodigy_hd2_resume()
1104 ak4396_write(ice, AK4396_LCH_ATT + i, spec->vol[i] & 0xff); in prodigy_hd2_resume()
1105 mutex_unlock(&ice->gpio_mutex); in prodigy_hd2_resume()
1110 static int prodigy_hd2_init(struct snd_ice1712 *ice) in prodigy_hd2_init() argument
1114 ice->vt1720 = 0; in prodigy_hd2_init()
1115 ice->vt1724 = 1; in prodigy_hd2_init()
1117 ice->num_total_dacs = 1; in prodigy_hd2_init()
1118 ice->num_total_adcs = 1; in prodigy_hd2_init()
1123 ice->gpio.saved[0] = 0; in prodigy_hd2_init()
1126 ice->akm = kzalloc(sizeof(struct snd_akm4xxx), GFP_KERNEL); in prodigy_hd2_init()
1127 if (! ice->akm) in prodigy_hd2_init()
1129 ice->akm_codecs = 1; in prodigy_hd2_init()
1134 ice->spec = spec; in prodigy_hd2_init()
1137 ice->pm_resume = &prodigy_hd2_resume; in prodigy_hd2_init()
1138 ice->pm_suspend_enabled = 1; in prodigy_hd2_init()
1141 ak4396_init(ice); in prodigy_hd2_init()