Lines Matching full:ice
67 static unsigned short wm_get(struct snd_ice1712 *ice, int reg) in wm_get() argument
70 return ((unsigned short)ice->akm[0].images[reg] << 8) | in wm_get()
71 ice->akm[0].images[reg + 1]; in wm_get()
77 static void wm_put_nocache(struct snd_ice1712 *ice, int reg, unsigned short val) in wm_put_nocache() argument
81 snd_vt1724_write_i2c(ice, WM_DEV, cval >> 8, cval & 0xff); in wm_put_nocache()
84 static void wm_put(struct snd_ice1712 *ice, int reg, unsigned short val) in wm_put() argument
86 wm_put_nocache(ice, reg, val); in wm_put()
88 ice->akm[0].images[reg] = val >> 8; in wm_put()
89 ice->akm[0].images[reg + 1] = val; in wm_put()
111 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_dac_vol_get() local
115 mutex_lock(&ice->gpio_mutex); in wm_dac_vol_get()
117 val = wm_get(ice, WM_DAC_ATTEN_L + i) & 0xff; in wm_dac_vol_get()
121 mutex_unlock(&ice->gpio_mutex); in wm_dac_vol_get()
127 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_dac_vol_put() local
131 mutex_lock(&ice->gpio_mutex); in wm_dac_vol_put()
136 oval = wm_get(ice, idx) & 0xff; in wm_dac_vol_put()
138 wm_put(ice, idx, nval); in wm_dac_vol_put()
139 wm_put_nocache(ice, idx, nval | 0x100); in wm_dac_vol_put()
143 mutex_unlock(&ice->gpio_mutex); in wm_dac_vol_put()
166 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_adc_vol_get() local
170 mutex_lock(&ice->gpio_mutex); in wm_adc_vol_get()
172 val = wm_get(ice, WM_ADC_ATTEN_L + i) & 0xff; in wm_adc_vol_get()
176 mutex_unlock(&ice->gpio_mutex); in wm_adc_vol_get()
182 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_adc_vol_put() local
186 mutex_lock(&ice->gpio_mutex); in wm_adc_vol_put()
191 ovol = wm_get(ice, idx) & 0xff; in wm_adc_vol_put()
193 wm_put(ice, idx, nvol); in wm_adc_vol_put()
197 mutex_unlock(&ice->gpio_mutex); in wm_adc_vol_put()
208 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_adc_mux_get() local
211 mutex_lock(&ice->gpio_mutex); in wm_adc_mux_get()
212 ucontrol->value.integer.value[0] = (wm_get(ice, WM_ADC_MUX) & (1 << bit)) ? 1 : 0; in wm_adc_mux_get()
213 mutex_unlock(&ice->gpio_mutex); in wm_adc_mux_get()
219 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_adc_mux_put() local
224 mutex_lock(&ice->gpio_mutex); in wm_adc_mux_put()
225 nval = oval = wm_get(ice, WM_ADC_MUX); in wm_adc_mux_put()
232 wm_put(ice, WM_ADC_MUX, nval); in wm_adc_mux_put()
234 mutex_unlock(&ice->gpio_mutex); in wm_adc_mux_put()
245 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_bypass_get() local
247 mutex_lock(&ice->gpio_mutex); in wm_bypass_get()
248 ucontrol->value.integer.value[0] = (wm_get(ice, WM_OUT_MUX) & 0x04) ? 1 : 0; in wm_bypass_get()
249 mutex_unlock(&ice->gpio_mutex); in wm_bypass_get()
255 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_bypass_put() local
259 mutex_lock(&ice->gpio_mutex); in wm_bypass_put()
260 val = oval = wm_get(ice, WM_OUT_MUX); in wm_bypass_put()
266 wm_put(ice, WM_OUT_MUX, val); in wm_bypass_put()
269 mutex_unlock(&ice->gpio_mutex); in wm_bypass_put()
280 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_chswap_get() local
282 mutex_lock(&ice->gpio_mutex); in wm_chswap_get()
283 ucontrol->value.integer.value[0] = (wm_get(ice, WM_DAC_CTRL1) & 0xf0) != 0x90; in wm_chswap_get()
284 mutex_unlock(&ice->gpio_mutex); in wm_chswap_get()
290 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in wm_chswap_put() local
294 mutex_lock(&ice->gpio_mutex); in wm_chswap_put()
295 oval = wm_get(ice, WM_DAC_CTRL1); in wm_chswap_put()
302 wm_put(ice, WM_DAC_CTRL1, val); in wm_chswap_put()
303 wm_put_nocache(ice, WM_DAC_CTRL1, val); in wm_chswap_put()
306 mutex_unlock(&ice->gpio_mutex); in wm_chswap_put()
313 static void set_gpio_bit(struct snd_ice1712 *ice, unsigned int bit, int val) in set_gpio_bit() argument
315 unsigned int tmp = snd_ice1712_gpio_read(ice); in set_gpio_bit()
320 snd_ice1712_gpio_write(ice, tmp); in set_gpio_bit()
323 static void spi_send_byte(struct snd_ice1712 *ice, unsigned char data) in spi_send_byte() argument
327 set_gpio_bit(ice, PONTIS_CS_CLK, 0); in spi_send_byte()
329 set_gpio_bit(ice, PONTIS_CS_WDATA, data & 0x80); in spi_send_byte()
331 set_gpio_bit(ice, PONTIS_CS_CLK, 1); in spi_send_byte()
337 static unsigned int spi_read_byte(struct snd_ice1712 *ice) in spi_read_byte() argument
344 set_gpio_bit(ice, PONTIS_CS_CLK, 0); in spi_read_byte()
346 if (snd_ice1712_gpio_read(ice) & PONTIS_CS_RDATA) in spi_read_byte()
349 set_gpio_bit(ice, PONTIS_CS_CLK, 1); in spi_read_byte()
356 static void spi_write(struct snd_ice1712 *ice, unsigned int dev, unsigned int reg, unsigned int dat… in spi_write() argument
358 snd_ice1712_gpio_set_dir(ice, PONTIS_CS_CS|PONTIS_CS_WDATA|PONTIS_CS_CLK); in spi_write()
359 snd_ice1712_gpio_set_mask(ice, ~(PONTIS_CS_CS|PONTIS_CS_WDATA|PONTIS_CS_CLK)); in spi_write()
360 set_gpio_bit(ice, PONTIS_CS_CS, 0); in spi_write()
361 spi_send_byte(ice, dev & ~1); /* WRITE */ in spi_write()
362 spi_send_byte(ice, reg); /* MAP */ in spi_write()
363 spi_send_byte(ice, data); /* DATA */ in spi_write()
365 set_gpio_bit(ice, PONTIS_CS_CS, 1); in spi_write()
368 snd_ice1712_gpio_set_mask(ice, ice->gpio.write_mask); in spi_write()
369 snd_ice1712_gpio_set_dir(ice, ice->gpio.direction); in spi_write()
372 static unsigned int spi_read(struct snd_ice1712 *ice, unsigned int dev, unsigned int reg) in spi_read() argument
375 snd_ice1712_gpio_set_dir(ice, PONTIS_CS_CS|PONTIS_CS_WDATA|PONTIS_CS_CLK); in spi_read()
376 snd_ice1712_gpio_set_mask(ice, ~(PONTIS_CS_CS|PONTIS_CS_WDATA|PONTIS_CS_CLK)); in spi_read()
377 set_gpio_bit(ice, PONTIS_CS_CS, 0); in spi_read()
378 spi_send_byte(ice, dev & ~1); /* WRITE */ in spi_read()
379 spi_send_byte(ice, reg); /* MAP */ in spi_read()
381 set_gpio_bit(ice, PONTIS_CS_CS, 1); in spi_read()
383 set_gpio_bit(ice, PONTIS_CS_CS, 0); in spi_read()
384 spi_send_byte(ice, dev | 1); /* READ */ in spi_read()
385 val = spi_read_byte(ice); in spi_read()
387 set_gpio_bit(ice, PONTIS_CS_CS, 1); in spi_read()
390 snd_ice1712_gpio_set_mask(ice, ice->gpio.write_mask); in spi_read()
391 snd_ice1712_gpio_set_dir(ice, ice->gpio.direction); in spi_read()
411 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in cs_source_get() local
413 mutex_lock(&ice->gpio_mutex); in cs_source_get()
414 ucontrol->value.enumerated.item[0] = ice->gpio.saved[0]; in cs_source_get()
415 mutex_unlock(&ice->gpio_mutex); in cs_source_get()
421 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in cs_source_put() local
425 mutex_lock(&ice->gpio_mutex); in cs_source_put()
426 if (ucontrol->value.enumerated.item[0] != ice->gpio.saved[0]) { in cs_source_put()
427 ice->gpio.saved[0] = ucontrol->value.enumerated.item[0] & 3; in cs_source_put()
428 val = 0x80 | (ice->gpio.saved[0] << 3); in cs_source_put()
429 spi_write(ice, CS_DEV, 0x04, val); in cs_source_put()
432 mutex_unlock(&ice->gpio_mutex); in cs_source_put()
451 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in pontis_gpio_mask_get() local
452 mutex_lock(&ice->gpio_mutex); in pontis_gpio_mask_get()
454 ucontrol->value.integer.value[0] = (~ice->gpio.write_mask & 0xffff) | 0x00f0; in pontis_gpio_mask_get()
455 mutex_unlock(&ice->gpio_mutex); in pontis_gpio_mask_get()
461 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in pontis_gpio_mask_put() local
464 mutex_lock(&ice->gpio_mutex); in pontis_gpio_mask_put()
467 changed = val != ice->gpio.write_mask; in pontis_gpio_mask_put()
468 ice->gpio.write_mask = val; in pontis_gpio_mask_put()
469 mutex_unlock(&ice->gpio_mutex); in pontis_gpio_mask_put()
475 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in pontis_gpio_dir_get() local
476 mutex_lock(&ice->gpio_mutex); in pontis_gpio_dir_get()
478 ucontrol->value.integer.value[0] = ice->gpio.direction & 0xff0f; in pontis_gpio_dir_get()
479 mutex_unlock(&ice->gpio_mutex); in pontis_gpio_dir_get()
485 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in pontis_gpio_dir_put() local
488 mutex_lock(&ice->gpio_mutex); in pontis_gpio_dir_put()
491 changed = (val != ice->gpio.direction); in pontis_gpio_dir_put()
492 ice->gpio.direction = val; in pontis_gpio_dir_put()
493 mutex_unlock(&ice->gpio_mutex); in pontis_gpio_dir_put()
499 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in pontis_gpio_data_get() local
500 mutex_lock(&ice->gpio_mutex); in pontis_gpio_data_get()
501 snd_ice1712_gpio_set_dir(ice, ice->gpio.direction); in pontis_gpio_data_get()
502 snd_ice1712_gpio_set_mask(ice, ice->gpio.write_mask); in pontis_gpio_data_get()
503 ucontrol->value.integer.value[0] = snd_ice1712_gpio_read(ice) & 0xffff; in pontis_gpio_data_get()
504 mutex_unlock(&ice->gpio_mutex); in pontis_gpio_data_get()
510 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in pontis_gpio_data_put() local
513 mutex_lock(&ice->gpio_mutex); in pontis_gpio_data_put()
514 snd_ice1712_gpio_set_dir(ice, ice->gpio.direction); in pontis_gpio_data_put()
515 snd_ice1712_gpio_set_mask(ice, ice->gpio.write_mask); in pontis_gpio_data_put()
516 val = snd_ice1712_gpio_read(ice) & 0xffff; in pontis_gpio_data_put()
519 snd_ice1712_gpio_write(ice, nval); in pontis_gpio_data_put()
522 mutex_unlock(&ice->gpio_mutex); in pontis_gpio_data_put()
620 struct snd_ice1712 *ice = entry->private_data; in wm_proc_regs_write() local
623 mutex_lock(&ice->gpio_mutex); in wm_proc_regs_write()
628 wm_put(ice, reg, val); in wm_proc_regs_write()
630 mutex_unlock(&ice->gpio_mutex); in wm_proc_regs_write()
635 struct snd_ice1712 *ice = entry->private_data; in wm_proc_regs_read() local
638 mutex_lock(&ice->gpio_mutex); in wm_proc_regs_read()
640 val = wm_get(ice, reg); in wm_proc_regs_read()
643 mutex_unlock(&ice->gpio_mutex); in wm_proc_regs_read()
646 static void wm_proc_init(struct snd_ice1712 *ice) in wm_proc_init() argument
648 snd_card_rw_proc_new(ice->card, "wm_codec", ice, wm_proc_regs_read, in wm_proc_init()
654 struct snd_ice1712 *ice = entry->private_data; in cs_proc_regs_read() local
657 mutex_lock(&ice->gpio_mutex); in cs_proc_regs_read()
659 val = spi_read(ice, CS_DEV, reg); in cs_proc_regs_read()
662 val = spi_read(ice, CS_DEV, 0x7f); in cs_proc_regs_read()
664 mutex_unlock(&ice->gpio_mutex); in cs_proc_regs_read()
667 static void cs_proc_init(struct snd_ice1712 *ice) in cs_proc_init() argument
669 snd_card_ro_proc_new(ice->card, "cs_codec", ice, cs_proc_regs_read); in cs_proc_init()
673 static int pontis_add_controls(struct snd_ice1712 *ice) in pontis_add_controls() argument
679 err = snd_ctl_add(ice->card, snd_ctl_new1(&pontis_controls[i], ice)); in pontis_add_controls()
684 wm_proc_init(ice); in pontis_add_controls()
685 cs_proc_init(ice); in pontis_add_controls()
694 static int pontis_init(struct snd_ice1712 *ice) in pontis_init() argument
740 ice->vt1720 = 1; in pontis_init()
741 ice->num_total_dacs = 2; in pontis_init()
742 ice->num_total_adcs = 2; in pontis_init()
745 ice->akm = kzalloc(sizeof(struct snd_akm4xxx), GFP_KERNEL); in pontis_init()
746 if (! ice->akm) in pontis_init()
748 ice->akm_codecs = 1; in pontis_init()
753 ice->gpio.saved[0] = 0; in pontis_init()
757 wm_put(ice, wm_inits[i], wm_inits[i+1]); in pontis_init()
760 wm_put(ice, wm_inits2[i], wm_inits2[i+1]); in pontis_init()
764 outb(inb(ICEMT1724(ice, AC97_CMD)) | 0x80, ICEMT1724(ice, AC97_CMD)); in pontis_init()
767 outb(inb(ICEMT1724(ice, AC97_CMD)) & ~0x80, ICEMT1724(ice, AC97_CMD)); in pontis_init()
770 spi_write(ice, CS_DEV, cs_inits[i], cs_inits[i+1]); in pontis_init()