Lines Matching defs:ice

33 static void ap_cs8427_write_byte(struct snd_ice1712 *ice, unsigned char data, unsigned char tmp)
41 snd_ice1712_write(ice, ICE1712_IREG_GPIO_DATA, tmp);
44 snd_ice1712_write(ice, ICE1712_IREG_GPIO_DATA, tmp);
50 static unsigned char ap_cs8427_read_byte(struct snd_ice1712 *ice, unsigned char tmp)
57 snd_ice1712_write(ice, ICE1712_IREG_GPIO_DATA, tmp);
59 if (snd_ice1712_read(ice, ICE1712_IREG_GPIO_DATA) & ICE1712_DELTA_AP_DIN)
62 snd_ice1712_write(ice, ICE1712_IREG_GPIO_DATA, tmp);
69 static unsigned char ap_cs8427_codec_select(struct snd_ice1712 *ice)
72 tmp = snd_ice1712_read(ice, ICE1712_IREG_GPIO_DATA);
73 switch (ice->eeprom.subvendor) {
94 snd_ice1712_write(ice, ICE1712_IREG_GPIO_DATA, tmp);
100 static void ap_cs8427_codec_deassert(struct snd_ice1712 *ice, unsigned char tmp)
102 switch (ice->eeprom.subvendor) {
119 snd_ice1712_write(ice, ICE1712_IREG_GPIO_DATA, tmp);
125 struct snd_ice1712 *ice = device->bus->private_data;
129 mutex_lock(&ice->gpio_mutex);
130 tmp = ap_cs8427_codec_select(ice);
131 ap_cs8427_write_byte(ice, (device->addr << 1) | 0, tmp); /* address + write mode */
133 ap_cs8427_write_byte(ice, *bytes++, tmp);
134 ap_cs8427_codec_deassert(ice, tmp);
135 mutex_unlock(&ice->gpio_mutex);
142 struct snd_ice1712 *ice = device->bus->private_data;
146 mutex_lock(&ice->gpio_mutex);
147 tmp = ap_cs8427_codec_select(ice);
148 ap_cs8427_write_byte(ice, (device->addr << 1) | 1, tmp); /* address + read mode */
150 *bytes++ = ap_cs8427_read_byte(ice, tmp);
151 ap_cs8427_codec_deassert(ice, tmp);
152 mutex_unlock(&ice->gpio_mutex);
172 static void snd_ice1712_delta_cs8403_spdif_write(struct snd_ice1712 *ice, unsigned char bits)
179 mutex_lock(&ice->gpio_mutex);
180 tmp = snd_ice1712_read(ice, ICE1712_IREG_GPIO_DATA);
185 snd_ice1712_write(ice, ICE1712_IREG_GPIO_DATA, tmp);
188 snd_ice1712_write(ice, ICE1712_IREG_GPIO_DATA, tmp);
192 snd_ice1712_write(ice, ICE1712_IREG_GPIO_DATA, tmp);
193 mutex_unlock(&ice->gpio_mutex);
197 static void delta_spdif_default_get(struct snd_ice1712 *ice, struct snd_ctl_elem_value *ucontrol)
199 snd_cs8403_decode_spdif_bits(&ucontrol->value.iec958, ice->spdif.cs8403_bits);
202 static int delta_spdif_default_put(struct snd_ice1712 *ice, struct snd_ctl_elem_value *ucontrol)
208 spin_lock_irq(&ice->reg_lock);
209 change = ice->spdif.cs8403_bits != val;
210 ice->spdif.cs8403_bits = val;
211 if (change && ice->playback_pro_substream == NULL) {
212 spin_unlock_irq(&ice->reg_lock);
213 snd_ice1712_delta_cs8403_spdif_write(ice, val);
215 spin_unlock_irq(&ice->reg_lock);
220 static void delta_spdif_stream_get(struct snd_ice1712 *ice, struct snd_ctl_elem_value *ucontrol)
222 snd_cs8403_decode_spdif_bits(&ucontrol->value.iec958, ice->spdif.cs8403_stream_bits);
225 static int delta_spdif_stream_put(struct snd_ice1712 *ice, struct snd_ctl_elem_value *ucontrol)
231 spin_lock_irq(&ice->reg_lock);
232 change = ice->spdif.cs8403_stream_bits != val;
233 ice->spdif.cs8403_stream_bits = val;
234 if (change && ice->playback_pro_substream != NULL) {
235 spin_unlock_irq(&ice->reg_lock);
236 snd_ice1712_delta_cs8403_spdif_write(ice, val);
238 spin_unlock_irq(&ice->reg_lock);
250 struct snd_ice1712 *ice = ak->private_data[0];
252 snd_ice1712_save_gpio_status(ice);
264 struct snd_ice1712 *ice = ak->private_data[0];
266 snd_ice1712_save_gpio_status(ice);
277 struct snd_ice1712 *ice = ak->private_data[0];
279 snd_ice1712_save_gpio_status(ice);
291 struct snd_ice1712 *ice = ak->private_data[0];
293 snd_ice1712_save_gpio_status(ice);
302 static void delta_1010_set_rate_val(struct snd_ice1712 *ice, unsigned int rate)
309 mutex_lock(&ice->gpio_mutex);
310 tmp = snd_ice1712_read(ice, ICE1712_IREG_GPIO_DATA);
315 snd_ice1712_write(ice, ICE1712_IREG_GPIO_DATA, tmp2);
316 mutex_unlock(&ice->gpio_mutex);
325 struct snd_ice1712 *ice = ak->private_data[0];
331 mutex_lock(&ice->gpio_mutex);
332 tmp = snd_ice1712_read(ice, ICE1712_IREG_GPIO_DATA);
333 mutex_unlock(&ice->gpio_mutex);
342 mutex_lock(&ice->gpio_mutex);
343 tmp = snd_ice1712_read(ice, ICE1712_IREG_GPIO_DATA) & ~ICE1712_DELTA_DFS;
346 snd_ice1712_write(ice, ICE1712_IREG_GPIO_DATA, tmp);
347 mutex_unlock(&ice->gpio_mutex);
374 static void delta_open_spdif(struct snd_ice1712 *ice, struct snd_pcm_substream *substream)
376 ice->spdif.cs8403_stream_bits = ice->spdif.cs8403_bits;
380 static void delta_setup_spdif(struct snd_ice1712 *ice, int rate)
386 spin_lock_irqsave(&ice->reg_lock, flags);
387 tmp = ice->spdif.cs8403_stream_bits;
396 change = ice->spdif.cs8403_stream_bits != tmp;
397 ice->spdif.cs8403_stream_bits = tmp;
398 spin_unlock_irqrestore(&ice->reg_lock, flags);
400 snd_ctl_notify(ice->card, SNDRV_CTL_EVENT_MASK_VALUE, &ice->spdif.stream_ctl->id);
401 snd_ice1712_delta_cs8403_spdif_write(ice, tmp);
411 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
413 if (snd_i2c_sendbytes(ice->cs8427, &reg, 1) != 1)
414 dev_err(ice->card->dev,
416 snd_i2c_readbytes(ice->cs8427, &reg, 1);
566 static int snd_ice1712_delta_resume(struct snd_ice1712 *ice)
572 switch (ice->eeprom.subvendor) {
579 snd_cs8427_init(ice->i2c, ice->cs8427);
588 snd_ice1712_delta_cs8403_spdif_write(ice, ice->spdif.cs8403_bits);
593 if (ice->akm_codecs) {
594 memcpy(akm_img_bak, ice->akm->images, sizeof(akm_img_bak));
595 memcpy(akm_vol_bak, ice->akm->volumes, sizeof(akm_vol_bak));
596 snd_akm4xxx_init(ice->akm);
597 memcpy(ice->akm->images, akm_img_bak, sizeof(akm_img_bak));
598 memcpy(ice->akm->volumes, akm_vol_bak, sizeof(akm_vol_bak));
599 snd_akm4xxx_reset(ice->akm, 0);
605 static int snd_ice1712_delta_suspend(struct snd_ice1712 *ice)
607 if (ice->akm_codecs) /* reset & mute codec */
608 snd_akm4xxx_reset(ice->akm, 1);
614 static int snd_ice1712_delta_init(struct snd_ice1712 *ice)
620 if (ice->eeprom.subvendor == ICE1712_SUBDEVICE_DELTA1010 &&
621 ice->eeprom.gpiodir == 0x7b)
622 ice->eeprom.subvendor = ICE1712_SUBDEVICE_DELTA1010E;
624 if (ice->eeprom.subvendor == ICE1712_SUBDEVICE_DELTA66 &&
625 ice->eeprom.gpiodir == 0xfb)
626 ice->eeprom.subvendor = ICE1712_SUBDEVICE_DELTA66E;
629 switch (ice->eeprom.subvendor) {
631 ice->num_total_dacs = 2;
632 ice->num_total_adcs = 2;
635 ice->num_total_dacs = 8;
636 ice->num_total_adcs = 2;
640 ice->num_total_dacs = ice->omni ? 8 : 4;
641 ice->num_total_adcs = ice->omni ? 8 : 4;
648 ice->num_total_dacs = 8;
649 ice->num_total_adcs = 8;
652 ice->num_total_dacs = 4; /* two AK4324 codecs */
656 ice->num_total_dacs = 4;
657 ice->num_total_adcs = 4;
661 ice->pm_resume = snd_ice1712_delta_resume;
662 ice->pm_suspend = snd_ice1712_delta_suspend;
663 ice->pm_suspend_enabled = 1;
666 tmp = snd_ice1712_read(ice, ICE1712_IREG_GPIO_DATA);
668 snd_ice1712_write(ice, ICE1712_IREG_GPIO_DATA, tmp);
672 switch (ice->eeprom.subvendor) {
679 err = snd_i2c_bus_create(ice->card, "ICE1712 GPIO 1", NULL, &ice->i2c);
681 dev_err(ice->card->dev, "unable to create I2C bus\n");
684 ice->i2c->private_data = ice;
685 ice->i2c->ops = &ap_cs8427_i2c_ops;
686 err = snd_ice1712_init_cs8427(ice, CS8427_BASE_ADDR);
692 ice->gpio.set_pro_rate = delta_1010_set_rate_val;
695 ice->gpio.set_pro_rate = delta_1010_set_rate_val;
698 ice->spdif.ops.open = delta_open_spdif;
699 ice->spdif.ops.setup_rate = delta_setup_spdif;
700 ice->spdif.ops.default_get = delta_spdif_default_get;
701 ice->spdif.ops.default_put = delta_spdif_default_put;
702 ice->spdif.ops.stream_get = delta_spdif_stream_get;
703 ice->spdif.ops.stream_put = delta_spdif_stream_put;
705 snd_ice1712_delta_cs8403_spdif_write(ice, ice->spdif.cs8403_bits);
710 switch (ice->eeprom.subvendor) {
719 ak = ice->akm = kmalloc(sizeof(struct snd_akm4xxx), GFP_KERNEL);
722 ice->akm_codecs = 1;
724 switch (ice->eeprom.subvendor) {
726 err = snd_ice1712_akm4xxx_init(ak, &akm_audiophile, &akm_audiophile_priv, ice);
729 err = snd_ice1712_akm4xxx_init(ak, &akm_delta410, &akm_delta410_priv, ice);
733 err = snd_ice1712_akm4xxx_init(ak, &akm_delta1010lt, &akm_delta1010lt_priv, ice);
737 err = snd_ice1712_akm4xxx_init(ak, &akm_delta44, &akm_delta44_priv, ice);
740 err = snd_ice1712_akm4xxx_init(ak, &akm_vx442, &akm_vx442_priv, ice);
743 err = snd_ice1712_akm4xxx_init(ak, &akm_delta66e, &akm_delta66e_priv, ice);
770 static int snd_ice1712_delta_add_controls(struct snd_ice1712 *ice)
775 switch (ice->eeprom.subvendor) {
778 err = snd_ctl_add(ice->card, snd_ctl_new1(&snd_ice1712_delta1010_wordclock_select, ice));
781 err = snd_ctl_add(ice->card, snd_ctl_new1(&snd_ice1712_delta1010_wordclock_status, ice));
786 err = snd_ctl_add(ice->card, snd_ctl_new1(&snd_ice1712_deltadio2496_spdif_in_select, ice));
792 err = snd_ctl_add(ice->card, snd_ctl_new1(&snd_ice1712_delta1010lt_wordclock_select, ice));
795 err = snd_ctl_add(ice->card, snd_ctl_new1(&snd_ice1712_delta1010lt_wordclock_status, ice));
802 switch (ice->eeprom.subvendor) {
807 err = snd_ice1712_spdif_build_controls(ice);
814 switch (ice->eeprom.subvendor) {
819 err = snd_ctl_add(ice->card, snd_ctl_new1(&snd_ice1712_delta_spdif_in_status, ice));
826 switch (ice->eeprom.subvendor) {
835 err = snd_ice1712_akm4xxx_build_controls(ice);