Lines Matching refs:ice

44 	struct snd_ice1712 *ice = bus->private_data;
50 snd_ice1712_write(ice, ICE1712_IREG_GPIO_DATA, tmp);
56 struct snd_ice1712 *ice = bus->private_data;
57 return snd_ice1712_read(ice, ICE1712_IREG_GPIO_DATA) & ICE1712_EWX2496_SERIAL_CLOCK ? 1 : 0;
62 struct snd_ice1712 *ice = bus->private_data;
65 snd_ice1712_write(ice, ICE1712_IREG_GPIO_WRITE_MASK, ~ICE1712_EWX2496_RW);
66 snd_ice1712_write(ice, ICE1712_IREG_GPIO_DATA, 0);
69 bit = snd_ice1712_read(ice, ICE1712_IREG_GPIO_DATA) & ICE1712_EWX2496_SERIAL_DATA ? 1 : 0;
71 snd_ice1712_write(ice, ICE1712_IREG_GPIO_DATA, ICE1712_EWX2496_RW);
73 snd_ice1712_write(ice, ICE1712_IREG_GPIO_WRITE_MASK, ~ICE1712_EWX2496_SERIAL_CLOCK);
79 struct snd_ice1712 *ice = bus->private_data;
82 snd_ice1712_save_gpio_status(ice);
85 switch (ice->eeprom.subvendor) {
93 snd_ice1712_gpio_write_bits(ice, mask, mask);
98 struct snd_ice1712 *ice = bus->private_data;
99 snd_ice1712_restore_gpio_status(ice);
104 struct snd_ice1712 *ice = bus->private_data;
111 ice->gpio.direction &= ~(ICE1712_EWX2496_SERIAL_CLOCK|ICE1712_EWX2496_SERIAL_DATA);
112 ice->gpio.direction |= mask;
113 snd_ice1712_write(ice, ICE1712_IREG_GPIO_DIRECTION, ice->gpio.direction);
114 snd_ice1712_write(ice, ICE1712_IREG_GPIO_WRITE_MASK, ~mask);
132 static int snd_ice1712_ews88mt_chip_select(struct snd_ice1712 *ice, int chip_mask)
134 struct ews_spec *spec = ice->spec;
139 snd_i2c_lock(ice->i2c);
147 snd_i2c_unlock(ice->i2c);
151 snd_i2c_unlock(ice->i2c);
152 dev_err(ice->card->dev,
160 struct snd_ice1712 *ice = ak->private_data[0];
163 if (snd_ice1712_ews88mt_chip_select(ice, ~(1 << chip) & 0x0f) < 0)
164 dev_err(ice->card->dev, "fatal error (ews88mt chip select)\n");
165 snd_ice1712_save_gpio_status(ice);
169 snd_ice1712_write(ice, ICE1712_IREG_GPIO_DIRECTION,
170 ice->gpio.direction | tmp);
171 snd_ice1712_write(ice, ICE1712_IREG_GPIO_WRITE_MASK, ~tmp);
177 struct snd_ice1712 *ice = ak->private_data[0];
178 snd_ice1712_restore_gpio_status(ice);
180 snd_ice1712_ews88mt_chip_select(ice, 0x0f);
186 struct snd_ice1712 *ice = ak->private_data[0];
188 snd_ice1712_save_gpio_status(ice);
193 snd_ice1712_write(ice, ICE1712_IREG_GPIO_DIRECTION,
194 ice->gpio.direction | tmp);
195 snd_ice1712_write(ice, ICE1712_IREG_GPIO_WRITE_MASK, ~tmp);
202 struct snd_ice1712 *ice = ak->private_data[0];
204 snd_ice1712_save_gpio_status(ice);
209 snd_ice1712_write(ice, ICE1712_IREG_GPIO_DIRECTION,
210 ice->gpio.direction | tmp);
211 snd_ice1712_write(ice, ICE1712_IREG_GPIO_WRITE_MASK, ~tmp);
218 static void snd_ice1712_ews_cs8404_spdif_write(struct snd_ice1712 *ice, unsigned char bits)
220 struct ews_spec *spec = ice->spec;
223 snd_i2c_lock(ice->i2c);
224 switch (ice->eeprom.subvendor) {
246 snd_i2c_unlock(ice->i2c);
252 static void ews88_spdif_default_get(struct snd_ice1712 *ice, struct snd_ctl_elem_value *ucontrol)
254 snd_cs8404_decode_spdif_bits(&ucontrol->value.iec958, ice->spdif.cs8403_bits);
257 static int ews88_spdif_default_put(struct snd_ice1712 *ice, struct snd_ctl_elem_value *ucontrol)
263 spin_lock_irq(&ice->reg_lock);
264 change = ice->spdif.cs8403_bits != val;
265 ice->spdif.cs8403_bits = val;
266 if (change && ice->playback_pro_substream == NULL) {
267 spin_unlock_irq(&ice->reg_lock);
268 snd_ice1712_ews_cs8404_spdif_write(ice, val);
270 spin_unlock_irq(&ice->reg_lock);
275 static void ews88_spdif_stream_get(struct snd_ice1712 *ice, struct snd_ctl_elem_value *ucontrol)
277 snd_cs8404_decode_spdif_bits(&ucontrol->value.iec958, ice->spdif.cs8403_stream_bits);
280 static int ews88_spdif_stream_put(struct snd_ice1712 *ice, struct snd_ctl_elem_value *ucontrol)
286 spin_lock_irq(&ice->reg_lock);
287 change = ice->spdif.cs8403_stream_bits != val;
288 ice->spdif.cs8403_stream_bits = val;
289 if (change && ice->playback_pro_substream != NULL) {
290 spin_unlock_irq(&ice->reg_lock);
291 snd_ice1712_ews_cs8404_spdif_write(ice, val);
293 spin_unlock_irq(&ice->reg_lock);
300 static void ews88_open_spdif(struct snd_ice1712 *ice, struct snd_pcm_substream *substream)
302 ice->spdif.cs8403_stream_bits = ice->spdif.cs8403_bits;
306 static void ews88_setup_spdif(struct snd_ice1712 *ice, int rate)
312 spin_lock_irqsave(&ice->reg_lock, flags);
313 tmp = ice->spdif.cs8403_stream_bits;
322 change = ice->spdif.cs8403_stream_bits != tmp;
323 ice->spdif.cs8403_stream_bits = tmp;
324 spin_unlock_irqrestore(&ice->reg_lock, flags);
326 snd_ctl_notify(ice->card, SNDRV_CTL_EVENT_MASK_VALUE, &ice->spdif.stream_ctl->id);
327 snd_ice1712_ews_cs8404_spdif_write(ice, tmp);
407 static int snd_ice1712_6fire_write_pca(struct snd_ice1712 *ice, unsigned char reg, unsigned char data);
409 static int snd_ice1712_ews_init(struct snd_ice1712 *ice)
416 switch (ice->eeprom.subvendor) {
418 ice->num_total_dacs = 2;
419 ice->num_total_adcs = 2;
425 ice->num_total_dacs = 8;
426 ice->num_total_adcs = 8;
430 ice->num_total_dacs = 8;
431 ice->num_total_adcs = 8;
434 ice->num_total_dacs = 6;
435 ice->num_total_adcs = 6;
442 ice->spec = spec;
445 if ((err = snd_i2c_bus_create(ice->card, "ICE1712 GPIO 1", NULL, &ice->i2c)) < 0) {
446 dev_err(ice->card->dev, "unable to create I2C bus\n");
449 ice->i2c->private_data = ice;
450 ice->i2c->hw_ops.bit = &snd_ice1712_ewx_cs8427_bit_ops;
453 switch (ice->eeprom.subvendor) {
455 err = snd_i2c_device_create(ice->i2c, "PCF9554",
459 dev_err(ice->card->dev,
463 snd_ice1712_6fire_write_pca(ice, PCF9554_REG_CONFIG, 0x80);
470 err = snd_i2c_device_create(ice->i2c, "CS8404",
475 err = snd_i2c_device_create(ice->i2c, "PCF8574 (1st)",
480 err = snd_i2c_device_create(ice->i2c, "PCF8574 (2nd)",
486 if ((err = snd_ice1712_ews88mt_chip_select(ice, 0x0f)) < 0)
490 err = snd_i2c_device_create(ice->i2c, "PCF8575",
499 switch (ice->eeprom.subvendor) {
501 if ((err = snd_ice1712_init_cs8427(ice, CS8427_BASE_ADDR)) < 0)
503 snd_cs8427_reg_write(ice->cs8427, CS8427_REG_RECVERRMASK, CS8427_UNLOCK | CS8427_CONF | CS8427_BIP | CS8427_PAR);
506 if ((err = snd_ice1712_init_cs8427(ice, ICE1712_6FIRE_CS8427_ADDR)) < 0)
508 snd_cs8427_reg_write(ice->cs8427, CS8427_REG_RECVERRMASK, CS8427_UNLOCK | CS8427_CONF | CS8427_BIP | CS8427_PAR);
516 ice->spdif.ops.open = ews88_open_spdif;
517 ice->spdif.ops.setup_rate = ews88_setup_spdif;
518 ice->spdif.ops.default_get = ews88_spdif_default_get;
519 ice->spdif.ops.default_put = ews88_spdif_default_put;
520 ice->spdif.ops.stream_get = ews88_spdif_stream_get;
521 ice->spdif.ops.stream_put = ews88_spdif_stream_put;
523 snd_ice1712_ews_cs8404_spdif_write(ice, ice->spdif.cs8403_bits);
528 switch (ice->eeprom.subvendor) {
534 ak = ice->akm = kzalloc(sizeof(struct snd_akm4xxx), GFP_KERNEL);
537 ice->akm_codecs = 1;
539 switch (ice->eeprom.subvendor) {
544 err = snd_ice1712_akm4xxx_init(ak, &akm_ews88mt, &akm_ews88mt_priv, ice);
547 err = snd_ice1712_akm4xxx_init(ak, &akm_ewx2496, &akm_ewx2496_priv, ice);
550 err = snd_ice1712_akm4xxx_init(ak, &akm_6fire, &akm_6fire_priv, ice);
574 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
577 snd_ice1712_save_gpio_status(ice);
578 ucontrol->value.enumerated.item[0] = snd_ice1712_read(ice, ICE1712_IREG_GPIO_DATA) & mask ? 1 : 0;
579 snd_ice1712_restore_gpio_status(ice);
585 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
592 snd_ice1712_save_gpio_status(ice);
593 val = snd_ice1712_read(ice, ICE1712_IREG_GPIO_DATA);
595 snd_ice1712_write(ice, ICE1712_IREG_GPIO_DATA, nval);
596 snd_ice1712_restore_gpio_status(ice);
626 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
627 struct ews_spec *spec = ice->spec;
630 snd_i2c_lock(ice->i2c);
632 snd_i2c_unlock(ice->i2c);
635 snd_i2c_unlock(ice->i2c);
643 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
644 struct ews_spec *spec = ice->spec;
647 snd_i2c_lock(ice->i2c);
649 snd_i2c_unlock(ice->i2c);
655 snd_i2c_unlock(ice->i2c);
658 snd_i2c_unlock(ice->i2c);
665 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
666 struct ews_spec *spec = ice->spec;
672 snd_i2c_lock(ice->i2c);
674 snd_i2c_unlock(ice->i2c);
679 snd_i2c_unlock(ice->i2c);
686 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
687 struct ews_spec *spec = ice->spec;
693 snd_i2c_lock(ice->i2c);
695 snd_i2c_unlock(ice->i2c);
701 snd_i2c_unlock(ice->i2c);
704 snd_i2c_unlock(ice->i2c);
734 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
735 struct ews_spec *spec = ice->spec;
740 snd_i2c_lock(ice->i2c);
742 snd_i2c_unlock(ice->i2c);
745 snd_i2c_unlock(ice->i2c);
755 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
756 struct ews_spec *spec = ice->spec;
762 snd_i2c_lock(ice->i2c);
764 snd_i2c_unlock(ice->i2c);
778 snd_i2c_unlock(ice->i2c);
781 snd_i2c_unlock(ice->i2c);
808 static int snd_ice1712_6fire_read_pca(struct snd_ice1712 *ice, unsigned char reg)
811 struct ews_spec *spec = ice->spec;
813 snd_i2c_lock(ice->i2c);
816 snd_i2c_unlock(ice->i2c);
817 dev_err(ice->card->dev, "cannot send pca\n");
823 snd_i2c_unlock(ice->i2c);
824 dev_err(ice->card->dev, "cannot read pca\n");
827 snd_i2c_unlock(ice->i2c);
831 static int snd_ice1712_6fire_write_pca(struct snd_ice1712 *ice, unsigned char reg, unsigned char data)
834 struct ews_spec *spec = ice->spec;
836 snd_i2c_lock(ice->i2c);
840 snd_i2c_unlock(ice->i2c);
843 snd_i2c_unlock(ice->i2c);
851 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
856 if ((data = snd_ice1712_6fire_read_pca(ice, PCF9554_REG_OUTPUT)) < 0)
867 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
872 if ((data = snd_ice1712_6fire_read_pca(ice, PCF9554_REG_OUTPUT)) < 0)
880 snd_ice1712_6fire_write_pca(ice, PCF9554_REG_OUTPUT, (unsigned char)ndata);
896 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
899 if ((data = snd_ice1712_6fire_read_pca(ice, PCF9554_REG_OUTPUT)) < 0)
907 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
910 if ((data = snd_ice1712_6fire_read_pca(ice, PCF9554_REG_OUTPUT)) < 0)
915 snd_ice1712_6fire_write_pca(ice, PCF9554_REG_OUTPUT, (unsigned char)ndata);
947 static int snd_ice1712_ews_add_controls(struct snd_ice1712 *ice)
953 if (ice->cs8427 == NULL) {
954 err = snd_ice1712_spdif_build_controls(ice);
960 switch (ice->eeprom.subvendor) {
967 err = snd_ice1712_akm4xxx_build_controls(ice);
974 switch (ice->eeprom.subvendor) {
977 err = snd_ctl_add(ice->card, snd_ctl_new1(&snd_ice1712_ewx2496_controls[idx], ice));
986 err = snd_ctl_add(ice->card, snd_ctl_new1(&snd_ice1712_ews88mt_input_sense, ice));
989 err = snd_ctl_add(ice->card, snd_ctl_new1(&snd_ice1712_ews88mt_output_sense, ice));
995 err = snd_ctl_add(ice->card, snd_ctl_new1(&snd_ice1712_ews88d_controls[idx], ice));
1002 err = snd_ctl_add(ice->card, snd_ctl_new1(&snd_ice1712_6fire_controls[idx], ice));