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 err = snd_i2c_bus_create(ice->card, "ICE1712 GPIO 1", NULL, &ice->i2c);
447 dev_err(ice->card->dev, "unable to create I2C bus\n");
450 ice->i2c->private_data = ice;
451 ice->i2c->hw_ops.bit = &snd_ice1712_ewx_cs8427_bit_ops;
454 switch (ice->eeprom.subvendor) {
456 err = snd_i2c_device_create(ice->i2c, "PCF9554",
460 dev_err(ice->card->dev,
464 snd_ice1712_6fire_write_pca(ice, PCF9554_REG_CONFIG, 0x80);
471 err = snd_i2c_device_create(ice->i2c, "CS8404",
476 err = snd_i2c_device_create(ice->i2c, "PCF8574 (1st)",
481 err = snd_i2c_device_create(ice->i2c, "PCF8574 (2nd)",
487 err = snd_ice1712_ews88mt_chip_select(ice, 0x0f);
492 err = snd_i2c_device_create(ice->i2c, "PCF8575",
501 switch (ice->eeprom.subvendor) {
503 err = snd_ice1712_init_cs8427(ice, CS8427_BASE_ADDR);
506 snd_cs8427_reg_write(ice->cs8427, CS8427_REG_RECVERRMASK, CS8427_UNLOCK | CS8427_CONF | CS8427_BIP | CS8427_PAR);
509 err = snd_ice1712_init_cs8427(ice, ICE1712_6FIRE_CS8427_ADDR);
512 snd_cs8427_reg_write(ice->cs8427, CS8427_REG_RECVERRMASK, CS8427_UNLOCK | CS8427_CONF | CS8427_BIP | CS8427_PAR);
520 ice->spdif.ops.open = ews88_open_spdif;
521 ice->spdif.ops.setup_rate = ews88_setup_spdif;
522 ice->spdif.ops.default_get = ews88_spdif_default_get;
523 ice->spdif.ops.default_put = ews88_spdif_default_put;
524 ice->spdif.ops.stream_get = ews88_spdif_stream_get;
525 ice->spdif.ops.stream_put = ews88_spdif_stream_put;
527 snd_ice1712_ews_cs8404_spdif_write(ice, ice->spdif.cs8403_bits);
532 switch (ice->eeprom.subvendor) {
538 ak = ice->akm = kzalloc(sizeof(struct snd_akm4xxx), GFP_KERNEL);
541 ice->akm_codecs = 1;
543 switch (ice->eeprom.subvendor) {
548 err = snd_ice1712_akm4xxx_init(ak, &akm_ews88mt, &akm_ews88mt_priv, ice);
551 err = snd_ice1712_akm4xxx_init(ak, &akm_ewx2496, &akm_ewx2496_priv, ice);
554 err = snd_ice1712_akm4xxx_init(ak, &akm_6fire, &akm_6fire_priv, ice);
578 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
581 snd_ice1712_save_gpio_status(ice);
582 ucontrol->value.enumerated.item[0] = snd_ice1712_read(ice, ICE1712_IREG_GPIO_DATA) & mask ? 1 : 0;
583 snd_ice1712_restore_gpio_status(ice);
589 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
596 snd_ice1712_save_gpio_status(ice);
597 val = snd_ice1712_read(ice, ICE1712_IREG_GPIO_DATA);
599 snd_ice1712_write(ice, ICE1712_IREG_GPIO_DATA, nval);
600 snd_ice1712_restore_gpio_status(ice);
630 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
631 struct ews_spec *spec = ice->spec;
634 snd_i2c_lock(ice->i2c);
636 snd_i2c_unlock(ice->i2c);
639 snd_i2c_unlock(ice->i2c);
647 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
648 struct ews_spec *spec = ice->spec;
651 snd_i2c_lock(ice->i2c);
653 snd_i2c_unlock(ice->i2c);
659 snd_i2c_unlock(ice->i2c);
662 snd_i2c_unlock(ice->i2c);
669 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
670 struct ews_spec *spec = ice->spec;
676 snd_i2c_lock(ice->i2c);
678 snd_i2c_unlock(ice->i2c);
683 snd_i2c_unlock(ice->i2c);
690 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
691 struct ews_spec *spec = ice->spec;
697 snd_i2c_lock(ice->i2c);
699 snd_i2c_unlock(ice->i2c);
705 snd_i2c_unlock(ice->i2c);
708 snd_i2c_unlock(ice->i2c);
738 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
739 struct ews_spec *spec = ice->spec;
744 snd_i2c_lock(ice->i2c);
746 snd_i2c_unlock(ice->i2c);
749 snd_i2c_unlock(ice->i2c);
759 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
760 struct ews_spec *spec = ice->spec;
766 snd_i2c_lock(ice->i2c);
768 snd_i2c_unlock(ice->i2c);
782 snd_i2c_unlock(ice->i2c);
785 snd_i2c_unlock(ice->i2c);
812 static int snd_ice1712_6fire_read_pca(struct snd_ice1712 *ice, unsigned char reg)
815 struct ews_spec *spec = ice->spec;
817 snd_i2c_lock(ice->i2c);
820 snd_i2c_unlock(ice->i2c);
821 dev_err(ice->card->dev, "cannot send pca\n");
827 snd_i2c_unlock(ice->i2c);
828 dev_err(ice->card->dev, "cannot read pca\n");
831 snd_i2c_unlock(ice->i2c);
835 static int snd_ice1712_6fire_write_pca(struct snd_ice1712 *ice, unsigned char reg, unsigned char data)
838 struct ews_spec *spec = ice->spec;
840 snd_i2c_lock(ice->i2c);
844 snd_i2c_unlock(ice->i2c);
847 snd_i2c_unlock(ice->i2c);
855 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
860 data = snd_ice1712_6fire_read_pca(ice, PCF9554_REG_OUTPUT);
872 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
877 data = snd_ice1712_6fire_read_pca(ice, PCF9554_REG_OUTPUT);
886 snd_ice1712_6fire_write_pca(ice, PCF9554_REG_OUTPUT, (unsigned char)ndata);
902 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
905 data = snd_ice1712_6fire_read_pca(ice, PCF9554_REG_OUTPUT);
914 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
917 data = snd_ice1712_6fire_read_pca(ice, PCF9554_REG_OUTPUT);
923 snd_ice1712_6fire_write_pca(ice, PCF9554_REG_OUTPUT, (unsigned char)ndata);
955 static int snd_ice1712_ews_add_controls(struct snd_ice1712 *ice)
961 if (ice->cs8427 == NULL) {
962 err = snd_ice1712_spdif_build_controls(ice);
968 switch (ice->eeprom.subvendor) {
975 err = snd_ice1712_akm4xxx_build_controls(ice);
982 switch (ice->eeprom.subvendor) {
985 err = snd_ctl_add(ice->card, snd_ctl_new1(&snd_ice1712_ewx2496_controls[idx], ice));
994 err = snd_ctl_add(ice->card, snd_ctl_new1(&snd_ice1712_ews88mt_input_sense, ice));
997 err = snd_ctl_add(ice->card, snd_ctl_new1(&snd_ice1712_ews88mt_output_sense, ice));
1003 err = snd_ctl_add(ice->card, snd_ctl_new1(&snd_ice1712_ews88d_controls[idx], ice));
1010 err = snd_ctl_add(ice->card, snd_ctl_new1(&snd_ice1712_6fire_controls[idx], ice));