Lines Matching refs:ice

44 	struct snd_ice1712 *ice = bus->private_data;  in ewx_i2c_setlines()  local
50 snd_ice1712_write(ice, ICE1712_IREG_GPIO_DATA, tmp); in ewx_i2c_setlines()
56 struct snd_ice1712 *ice = bus->private_data; in ewx_i2c_getclock() local
57 return snd_ice1712_read(ice, ICE1712_IREG_GPIO_DATA) & ICE1712_EWX2496_SERIAL_CLOCK ? 1 : 0; in ewx_i2c_getclock()
62 struct snd_ice1712 *ice = bus->private_data; in ewx_i2c_getdata() local
65 snd_ice1712_write(ice, ICE1712_IREG_GPIO_WRITE_MASK, ~ICE1712_EWX2496_RW); in ewx_i2c_getdata()
66 snd_ice1712_write(ice, ICE1712_IREG_GPIO_DATA, 0); in ewx_i2c_getdata()
69 bit = snd_ice1712_read(ice, ICE1712_IREG_GPIO_DATA) & ICE1712_EWX2496_SERIAL_DATA ? 1 : 0; in ewx_i2c_getdata()
71 snd_ice1712_write(ice, ICE1712_IREG_GPIO_DATA, ICE1712_EWX2496_RW); in ewx_i2c_getdata()
73 snd_ice1712_write(ice, ICE1712_IREG_GPIO_WRITE_MASK, ~ICE1712_EWX2496_SERIAL_CLOCK); in ewx_i2c_getdata()
79 struct snd_ice1712 *ice = bus->private_data; in ewx_i2c_start() local
82 snd_ice1712_save_gpio_status(ice); in ewx_i2c_start()
85 switch (ice->eeprom.subvendor) { in ewx_i2c_start()
93 snd_ice1712_gpio_write_bits(ice, mask, mask); in ewx_i2c_start()
98 struct snd_ice1712 *ice = bus->private_data; in ewx_i2c_stop() local
99 snd_ice1712_restore_gpio_status(ice); in ewx_i2c_stop()
104 struct snd_ice1712 *ice = bus->private_data; in ewx_i2c_direction() local
111 ice->gpio.direction &= ~(ICE1712_EWX2496_SERIAL_CLOCK|ICE1712_EWX2496_SERIAL_DATA); in ewx_i2c_direction()
112 ice->gpio.direction |= mask; in ewx_i2c_direction()
113 snd_ice1712_write(ice, ICE1712_IREG_GPIO_DIRECTION, ice->gpio.direction); in ewx_i2c_direction()
114 snd_ice1712_write(ice, ICE1712_IREG_GPIO_WRITE_MASK, ~mask); in ewx_i2c_direction()
132 static int snd_ice1712_ews88mt_chip_select(struct snd_ice1712 *ice, int chip_mask) in snd_ice1712_ews88mt_chip_select() argument
134 struct ews_spec *spec = ice->spec; in snd_ice1712_ews88mt_chip_select()
139 snd_i2c_lock(ice->i2c); in snd_ice1712_ews88mt_chip_select()
147 snd_i2c_unlock(ice->i2c); in snd_ice1712_ews88mt_chip_select()
151 snd_i2c_unlock(ice->i2c); in snd_ice1712_ews88mt_chip_select()
152 dev_err(ice->card->dev, in snd_ice1712_ews88mt_chip_select()
160 struct snd_ice1712 *ice = ak->private_data[0]; in ews88mt_ak4524_lock() local
163 if (snd_ice1712_ews88mt_chip_select(ice, ~(1 << chip) & 0x0f) < 0) in ews88mt_ak4524_lock()
164 dev_err(ice->card->dev, "fatal error (ews88mt chip select)\n"); in ews88mt_ak4524_lock()
165 snd_ice1712_save_gpio_status(ice); in ews88mt_ak4524_lock()
169 snd_ice1712_write(ice, ICE1712_IREG_GPIO_DIRECTION, in ews88mt_ak4524_lock()
170 ice->gpio.direction | tmp); in ews88mt_ak4524_lock()
171 snd_ice1712_write(ice, ICE1712_IREG_GPIO_WRITE_MASK, ~tmp); in ews88mt_ak4524_lock()
177 struct snd_ice1712 *ice = ak->private_data[0]; in ews88mt_ak4524_unlock() local
178 snd_ice1712_restore_gpio_status(ice); in ews88mt_ak4524_unlock()
180 snd_ice1712_ews88mt_chip_select(ice, 0x0f); in ews88mt_ak4524_unlock()
186 struct snd_ice1712 *ice = ak->private_data[0]; in ewx2496_ak4524_lock() local
188 snd_ice1712_save_gpio_status(ice); in ewx2496_ak4524_lock()
193 snd_ice1712_write(ice, ICE1712_IREG_GPIO_DIRECTION, in ewx2496_ak4524_lock()
194 ice->gpio.direction | tmp); in ewx2496_ak4524_lock()
195 snd_ice1712_write(ice, ICE1712_IREG_GPIO_WRITE_MASK, ~tmp); in ewx2496_ak4524_lock()
202 struct snd_ice1712 *ice = ak->private_data[0]; in dmx6fire_ak4524_lock() local
204 snd_ice1712_save_gpio_status(ice); in dmx6fire_ak4524_lock()
209 snd_ice1712_write(ice, ICE1712_IREG_GPIO_DIRECTION, in dmx6fire_ak4524_lock()
210 ice->gpio.direction | tmp); in dmx6fire_ak4524_lock()
211 snd_ice1712_write(ice, ICE1712_IREG_GPIO_WRITE_MASK, ~tmp); in dmx6fire_ak4524_lock()
218 static void snd_ice1712_ews_cs8404_spdif_write(struct snd_ice1712 *ice, unsigned char bits) in snd_ice1712_ews_cs8404_spdif_write() argument
220 struct ews_spec *spec = ice->spec; in snd_ice1712_ews_cs8404_spdif_write()
223 snd_i2c_lock(ice->i2c); in snd_ice1712_ews_cs8404_spdif_write()
224 switch (ice->eeprom.subvendor) { in snd_ice1712_ews_cs8404_spdif_write()
246 snd_i2c_unlock(ice->i2c); in snd_ice1712_ews_cs8404_spdif_write()
252 static void ews88_spdif_default_get(struct snd_ice1712 *ice, struct snd_ctl_elem_value *ucontrol) in ews88_spdif_default_get() argument
254 snd_cs8404_decode_spdif_bits(&ucontrol->value.iec958, ice->spdif.cs8403_bits); in ews88_spdif_default_get()
257 static int ews88_spdif_default_put(struct snd_ice1712 *ice, struct snd_ctl_elem_value *ucontrol) in ews88_spdif_default_put() argument
263 spin_lock_irq(&ice->reg_lock); in ews88_spdif_default_put()
264 change = ice->spdif.cs8403_bits != val; in ews88_spdif_default_put()
265 ice->spdif.cs8403_bits = val; in ews88_spdif_default_put()
266 if (change && ice->playback_pro_substream == NULL) { in ews88_spdif_default_put()
267 spin_unlock_irq(&ice->reg_lock); in ews88_spdif_default_put()
268 snd_ice1712_ews_cs8404_spdif_write(ice, val); in ews88_spdif_default_put()
270 spin_unlock_irq(&ice->reg_lock); in ews88_spdif_default_put()
275 static void ews88_spdif_stream_get(struct snd_ice1712 *ice, struct snd_ctl_elem_value *ucontrol) in ews88_spdif_stream_get() argument
277 snd_cs8404_decode_spdif_bits(&ucontrol->value.iec958, ice->spdif.cs8403_stream_bits); in ews88_spdif_stream_get()
280 static int ews88_spdif_stream_put(struct snd_ice1712 *ice, struct snd_ctl_elem_value *ucontrol) in ews88_spdif_stream_put() argument
286 spin_lock_irq(&ice->reg_lock); in ews88_spdif_stream_put()
287 change = ice->spdif.cs8403_stream_bits != val; in ews88_spdif_stream_put()
288 ice->spdif.cs8403_stream_bits = val; in ews88_spdif_stream_put()
289 if (change && ice->playback_pro_substream != NULL) { in ews88_spdif_stream_put()
290 spin_unlock_irq(&ice->reg_lock); in ews88_spdif_stream_put()
291 snd_ice1712_ews_cs8404_spdif_write(ice, val); in ews88_spdif_stream_put()
293 spin_unlock_irq(&ice->reg_lock); in ews88_spdif_stream_put()
300 static void ews88_open_spdif(struct snd_ice1712 *ice, struct snd_pcm_substream *substream) in ews88_open_spdif() argument
302 ice->spdif.cs8403_stream_bits = ice->spdif.cs8403_bits; in ews88_open_spdif()
306 static void ews88_setup_spdif(struct snd_ice1712 *ice, int rate) in ews88_setup_spdif() argument
312 spin_lock_irqsave(&ice->reg_lock, flags); in ews88_setup_spdif()
313 tmp = ice->spdif.cs8403_stream_bits; in ews88_setup_spdif()
322 change = ice->spdif.cs8403_stream_bits != tmp; in ews88_setup_spdif()
323 ice->spdif.cs8403_stream_bits = tmp; in ews88_setup_spdif()
324 spin_unlock_irqrestore(&ice->reg_lock, flags); in ews88_setup_spdif()
326 snd_ctl_notify(ice->card, SNDRV_CTL_EVENT_MASK_VALUE, &ice->spdif.stream_ctl->id); in ews88_setup_spdif()
327 snd_ice1712_ews_cs8404_spdif_write(ice, tmp); in ews88_setup_spdif()
407 static int snd_ice1712_6fire_write_pca(struct snd_ice1712 *ice, unsigned char reg, unsigned char da…
409 static int snd_ice1712_ews_init(struct snd_ice1712 *ice) in snd_ice1712_ews_init() argument
416 switch (ice->eeprom.subvendor) { in snd_ice1712_ews_init()
418 ice->num_total_dacs = 2; in snd_ice1712_ews_init()
419 ice->num_total_adcs = 2; in snd_ice1712_ews_init()
425 ice->num_total_dacs = 8; in snd_ice1712_ews_init()
426 ice->num_total_adcs = 8; in snd_ice1712_ews_init()
430 ice->num_total_dacs = 8; in snd_ice1712_ews_init()
431 ice->num_total_adcs = 8; in snd_ice1712_ews_init()
434 ice->num_total_dacs = 6; in snd_ice1712_ews_init()
435 ice->num_total_adcs = 6; in snd_ice1712_ews_init()
442 ice->spec = spec; in snd_ice1712_ews_init()
445 err = snd_i2c_bus_create(ice->card, "ICE1712 GPIO 1", NULL, &ice->i2c); in snd_ice1712_ews_init()
447 dev_err(ice->card->dev, "unable to create I2C bus\n"); in snd_ice1712_ews_init()
450 ice->i2c->private_data = ice; in snd_ice1712_ews_init()
451 ice->i2c->hw_ops.bit = &snd_ice1712_ewx_cs8427_bit_ops; in snd_ice1712_ews_init()
454 switch (ice->eeprom.subvendor) { in snd_ice1712_ews_init()
456 err = snd_i2c_device_create(ice->i2c, "PCF9554", in snd_ice1712_ews_init()
460 dev_err(ice->card->dev, in snd_ice1712_ews_init()
464 snd_ice1712_6fire_write_pca(ice, PCF9554_REG_CONFIG, 0x80); in snd_ice1712_ews_init()
471 err = snd_i2c_device_create(ice->i2c, "CS8404", in snd_ice1712_ews_init()
476 err = snd_i2c_device_create(ice->i2c, "PCF8574 (1st)", in snd_ice1712_ews_init()
481 err = snd_i2c_device_create(ice->i2c, "PCF8574 (2nd)", in snd_ice1712_ews_init()
487 err = snd_ice1712_ews88mt_chip_select(ice, 0x0f); in snd_ice1712_ews_init()
492 err = snd_i2c_device_create(ice->i2c, "PCF8575", in snd_ice1712_ews_init()
501 switch (ice->eeprom.subvendor) { in snd_ice1712_ews_init()
503 err = snd_ice1712_init_cs8427(ice, CS8427_BASE_ADDR); in snd_ice1712_ews_init()
506 …snd_cs8427_reg_write(ice->cs8427, CS8427_REG_RECVERRMASK, CS8427_UNLOCK | CS8427_CONF | CS8427_BIP… in snd_ice1712_ews_init()
509 err = snd_ice1712_init_cs8427(ice, ICE1712_6FIRE_CS8427_ADDR); in snd_ice1712_ews_init()
512 …snd_cs8427_reg_write(ice->cs8427, CS8427_REG_RECVERRMASK, CS8427_UNLOCK | CS8427_CONF | CS8427_BIP… in snd_ice1712_ews_init()
520 ice->spdif.ops.open = ews88_open_spdif; in snd_ice1712_ews_init()
521 ice->spdif.ops.setup_rate = ews88_setup_spdif; in snd_ice1712_ews_init()
522 ice->spdif.ops.default_get = ews88_spdif_default_get; in snd_ice1712_ews_init()
523 ice->spdif.ops.default_put = ews88_spdif_default_put; in snd_ice1712_ews_init()
524 ice->spdif.ops.stream_get = ews88_spdif_stream_get; in snd_ice1712_ews_init()
525 ice->spdif.ops.stream_put = ews88_spdif_stream_put; in snd_ice1712_ews_init()
527 snd_ice1712_ews_cs8404_spdif_write(ice, ice->spdif.cs8403_bits); in snd_ice1712_ews_init()
532 switch (ice->eeprom.subvendor) { in snd_ice1712_ews_init()
538 ak = ice->akm = kzalloc(sizeof(struct snd_akm4xxx), GFP_KERNEL); in snd_ice1712_ews_init()
541 ice->akm_codecs = 1; in snd_ice1712_ews_init()
543 switch (ice->eeprom.subvendor) { in snd_ice1712_ews_init()
548 err = snd_ice1712_akm4xxx_init(ak, &akm_ews88mt, &akm_ews88mt_priv, ice); in snd_ice1712_ews_init()
551 err = snd_ice1712_akm4xxx_init(ak, &akm_ewx2496, &akm_ewx2496_priv, ice); in snd_ice1712_ews_init()
554 err = snd_ice1712_akm4xxx_init(ak, &akm_6fire, &akm_6fire_priv, ice); in snd_ice1712_ews_init()
578 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in snd_ice1712_ewx_io_sense_get() local
581 snd_ice1712_save_gpio_status(ice); in snd_ice1712_ewx_io_sense_get()
582 ucontrol->value.enumerated.item[0] = snd_ice1712_read(ice, ICE1712_IREG_GPIO_DATA) & mask ? 1 : 0; in snd_ice1712_ewx_io_sense_get()
583 snd_ice1712_restore_gpio_status(ice); in snd_ice1712_ewx_io_sense_get()
589 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in snd_ice1712_ewx_io_sense_put() local
596 snd_ice1712_save_gpio_status(ice); in snd_ice1712_ewx_io_sense_put()
597 val = snd_ice1712_read(ice, ICE1712_IREG_GPIO_DATA); in snd_ice1712_ewx_io_sense_put()
599 snd_ice1712_write(ice, ICE1712_IREG_GPIO_DATA, nval); in snd_ice1712_ewx_io_sense_put()
600 snd_ice1712_restore_gpio_status(ice); in snd_ice1712_ewx_io_sense_put()
630 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in snd_ice1712_ews88mt_output_sense_get() local
631 struct ews_spec *spec = ice->spec; in snd_ice1712_ews88mt_output_sense_get()
634 snd_i2c_lock(ice->i2c); in snd_ice1712_ews88mt_output_sense_get()
636 snd_i2c_unlock(ice->i2c); in snd_ice1712_ews88mt_output_sense_get()
639 snd_i2c_unlock(ice->i2c); in snd_ice1712_ews88mt_output_sense_get()
647 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in snd_ice1712_ews88mt_output_sense_put() local
648 struct ews_spec *spec = ice->spec; in snd_ice1712_ews88mt_output_sense_put()
651 snd_i2c_lock(ice->i2c); in snd_ice1712_ews88mt_output_sense_put()
653 snd_i2c_unlock(ice->i2c); in snd_ice1712_ews88mt_output_sense_put()
659 snd_i2c_unlock(ice->i2c); in snd_ice1712_ews88mt_output_sense_put()
662 snd_i2c_unlock(ice->i2c); in snd_ice1712_ews88mt_output_sense_put()
669 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in snd_ice1712_ews88mt_input_sense_get() local
670 struct ews_spec *spec = ice->spec; in snd_ice1712_ews88mt_input_sense_get()
676 snd_i2c_lock(ice->i2c); in snd_ice1712_ews88mt_input_sense_get()
678 snd_i2c_unlock(ice->i2c); in snd_ice1712_ews88mt_input_sense_get()
683 snd_i2c_unlock(ice->i2c); in snd_ice1712_ews88mt_input_sense_get()
690 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in snd_ice1712_ews88mt_input_sense_put() local
691 struct ews_spec *spec = ice->spec; in snd_ice1712_ews88mt_input_sense_put()
697 snd_i2c_lock(ice->i2c); in snd_ice1712_ews88mt_input_sense_put()
699 snd_i2c_unlock(ice->i2c); in snd_ice1712_ews88mt_input_sense_put()
705 snd_i2c_unlock(ice->i2c); in snd_ice1712_ews88mt_input_sense_put()
708 snd_i2c_unlock(ice->i2c); in snd_ice1712_ews88mt_input_sense_put()
738 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in snd_ice1712_ews88d_control_get() local
739 struct ews_spec *spec = ice->spec; in snd_ice1712_ews88d_control_get()
744 snd_i2c_lock(ice->i2c); in snd_ice1712_ews88d_control_get()
746 snd_i2c_unlock(ice->i2c); in snd_ice1712_ews88d_control_get()
749 snd_i2c_unlock(ice->i2c); in snd_ice1712_ews88d_control_get()
759 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in snd_ice1712_ews88d_control_put() local
760 struct ews_spec *spec = ice->spec; in snd_ice1712_ews88d_control_put()
766 snd_i2c_lock(ice->i2c); in snd_ice1712_ews88d_control_put()
768 snd_i2c_unlock(ice->i2c); in snd_ice1712_ews88d_control_put()
782 snd_i2c_unlock(ice->i2c); in snd_ice1712_ews88d_control_put()
785 snd_i2c_unlock(ice->i2c); in snd_ice1712_ews88d_control_put()
812 static int snd_ice1712_6fire_read_pca(struct snd_ice1712 *ice, unsigned char reg) in snd_ice1712_6fire_read_pca() argument
815 struct ews_spec *spec = ice->spec; in snd_ice1712_6fire_read_pca()
817 snd_i2c_lock(ice->i2c); in snd_ice1712_6fire_read_pca()
820 snd_i2c_unlock(ice->i2c); in snd_ice1712_6fire_read_pca()
821 dev_err(ice->card->dev, "cannot send pca\n"); in snd_ice1712_6fire_read_pca()
827 snd_i2c_unlock(ice->i2c); in snd_ice1712_6fire_read_pca()
828 dev_err(ice->card->dev, "cannot read pca\n"); in snd_ice1712_6fire_read_pca()
831 snd_i2c_unlock(ice->i2c); in snd_ice1712_6fire_read_pca()
835 static int snd_ice1712_6fire_write_pca(struct snd_ice1712 *ice, unsigned char reg, unsigned char da… in snd_ice1712_6fire_write_pca() argument
838 struct ews_spec *spec = ice->spec; in snd_ice1712_6fire_write_pca()
840 snd_i2c_lock(ice->i2c); in snd_ice1712_6fire_write_pca()
844 snd_i2c_unlock(ice->i2c); in snd_ice1712_6fire_write_pca()
847 snd_i2c_unlock(ice->i2c); in snd_ice1712_6fire_write_pca()
855 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in snd_ice1712_6fire_control_get() local
860 data = snd_ice1712_6fire_read_pca(ice, PCF9554_REG_OUTPUT); in snd_ice1712_6fire_control_get()
872 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in snd_ice1712_6fire_control_put() local
877 data = snd_ice1712_6fire_read_pca(ice, PCF9554_REG_OUTPUT); in snd_ice1712_6fire_control_put()
886 snd_ice1712_6fire_write_pca(ice, PCF9554_REG_OUTPUT, (unsigned char)ndata); in snd_ice1712_6fire_control_put()
902 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in snd_ice1712_6fire_select_input_get() local
905 data = snd_ice1712_6fire_read_pca(ice, PCF9554_REG_OUTPUT); in snd_ice1712_6fire_select_input_get()
914 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in snd_ice1712_6fire_select_input_put() local
917 data = snd_ice1712_6fire_read_pca(ice, PCF9554_REG_OUTPUT); in snd_ice1712_6fire_select_input_put()
923 snd_ice1712_6fire_write_pca(ice, PCF9554_REG_OUTPUT, (unsigned char)ndata); in snd_ice1712_6fire_select_input_put()
955 static int snd_ice1712_ews_add_controls(struct snd_ice1712 *ice) in snd_ice1712_ews_add_controls() argument
961 if (ice->cs8427 == NULL) { in snd_ice1712_ews_add_controls()
962 err = snd_ice1712_spdif_build_controls(ice); in snd_ice1712_ews_add_controls()
968 switch (ice->eeprom.subvendor) { in snd_ice1712_ews_add_controls()
975 err = snd_ice1712_akm4xxx_build_controls(ice); in snd_ice1712_ews_add_controls()
982 switch (ice->eeprom.subvendor) { in snd_ice1712_ews_add_controls()
985 err = snd_ctl_add(ice->card, snd_ctl_new1(&snd_ice1712_ewx2496_controls[idx], ice)); in snd_ice1712_ews_add_controls()
994 err = snd_ctl_add(ice->card, snd_ctl_new1(&snd_ice1712_ews88mt_input_sense, ice)); in snd_ice1712_ews_add_controls()
997 err = snd_ctl_add(ice->card, snd_ctl_new1(&snd_ice1712_ews88mt_output_sense, ice)); in snd_ice1712_ews_add_controls()
1003 err = snd_ctl_add(ice->card, snd_ctl_new1(&snd_ice1712_ews88d_controls[idx], ice)); in snd_ice1712_ews_add_controls()
1010 err = snd_ctl_add(ice->card, snd_ctl_new1(&snd_ice1712_6fire_controls[idx], ice)); in snd_ice1712_ews_add_controls()