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 if ((err = snd_i2c_bus_create(ice->card, "ICE1712 GPIO 1", NULL, &ice->i2c)) < 0) { in snd_ice1712_ews_init()
446 dev_err(ice->card->dev, "unable to create I2C bus\n"); in snd_ice1712_ews_init()
449 ice->i2c->private_data = ice; in snd_ice1712_ews_init()
450 ice->i2c->hw_ops.bit = &snd_ice1712_ewx_cs8427_bit_ops; in snd_ice1712_ews_init()
453 switch (ice->eeprom.subvendor) { in snd_ice1712_ews_init()
455 err = snd_i2c_device_create(ice->i2c, "PCF9554", in snd_ice1712_ews_init()
459 dev_err(ice->card->dev, in snd_ice1712_ews_init()
463 snd_ice1712_6fire_write_pca(ice, PCF9554_REG_CONFIG, 0x80); in snd_ice1712_ews_init()
470 err = snd_i2c_device_create(ice->i2c, "CS8404", in snd_ice1712_ews_init()
475 err = snd_i2c_device_create(ice->i2c, "PCF8574 (1st)", in snd_ice1712_ews_init()
480 err = snd_i2c_device_create(ice->i2c, "PCF8574 (2nd)", in snd_ice1712_ews_init()
486 if ((err = snd_ice1712_ews88mt_chip_select(ice, 0x0f)) < 0) in snd_ice1712_ews_init()
490 err = snd_i2c_device_create(ice->i2c, "PCF8575", in snd_ice1712_ews_init()
499 switch (ice->eeprom.subvendor) { in snd_ice1712_ews_init()
501 if ((err = snd_ice1712_init_cs8427(ice, CS8427_BASE_ADDR)) < 0) in snd_ice1712_ews_init()
503 …snd_cs8427_reg_write(ice->cs8427, CS8427_REG_RECVERRMASK, CS8427_UNLOCK | CS8427_CONF | CS8427_BIP… in snd_ice1712_ews_init()
506 if ((err = snd_ice1712_init_cs8427(ice, ICE1712_6FIRE_CS8427_ADDR)) < 0) in snd_ice1712_ews_init()
508 …snd_cs8427_reg_write(ice->cs8427, CS8427_REG_RECVERRMASK, CS8427_UNLOCK | CS8427_CONF | CS8427_BIP… in snd_ice1712_ews_init()
516 ice->spdif.ops.open = ews88_open_spdif; in snd_ice1712_ews_init()
517 ice->spdif.ops.setup_rate = ews88_setup_spdif; in snd_ice1712_ews_init()
518 ice->spdif.ops.default_get = ews88_spdif_default_get; in snd_ice1712_ews_init()
519 ice->spdif.ops.default_put = ews88_spdif_default_put; in snd_ice1712_ews_init()
520 ice->spdif.ops.stream_get = ews88_spdif_stream_get; in snd_ice1712_ews_init()
521 ice->spdif.ops.stream_put = ews88_spdif_stream_put; in snd_ice1712_ews_init()
523 snd_ice1712_ews_cs8404_spdif_write(ice, ice->spdif.cs8403_bits); in snd_ice1712_ews_init()
528 switch (ice->eeprom.subvendor) { in snd_ice1712_ews_init()
534 ak = ice->akm = kzalloc(sizeof(struct snd_akm4xxx), GFP_KERNEL); in snd_ice1712_ews_init()
537 ice->akm_codecs = 1; in snd_ice1712_ews_init()
539 switch (ice->eeprom.subvendor) { in snd_ice1712_ews_init()
544 err = snd_ice1712_akm4xxx_init(ak, &akm_ews88mt, &akm_ews88mt_priv, ice); in snd_ice1712_ews_init()
547 err = snd_ice1712_akm4xxx_init(ak, &akm_ewx2496, &akm_ewx2496_priv, ice); in snd_ice1712_ews_init()
550 err = snd_ice1712_akm4xxx_init(ak, &akm_6fire, &akm_6fire_priv, ice); in snd_ice1712_ews_init()
574 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in snd_ice1712_ewx_io_sense_get() local
577 snd_ice1712_save_gpio_status(ice); in snd_ice1712_ewx_io_sense_get()
578 ucontrol->value.enumerated.item[0] = snd_ice1712_read(ice, ICE1712_IREG_GPIO_DATA) & mask ? 1 : 0; in snd_ice1712_ewx_io_sense_get()
579 snd_ice1712_restore_gpio_status(ice); in snd_ice1712_ewx_io_sense_get()
585 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in snd_ice1712_ewx_io_sense_put() local
592 snd_ice1712_save_gpio_status(ice); in snd_ice1712_ewx_io_sense_put()
593 val = snd_ice1712_read(ice, ICE1712_IREG_GPIO_DATA); in snd_ice1712_ewx_io_sense_put()
595 snd_ice1712_write(ice, ICE1712_IREG_GPIO_DATA, nval); in snd_ice1712_ewx_io_sense_put()
596 snd_ice1712_restore_gpio_status(ice); in snd_ice1712_ewx_io_sense_put()
626 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in snd_ice1712_ews88mt_output_sense_get() local
627 struct ews_spec *spec = ice->spec; in snd_ice1712_ews88mt_output_sense_get()
630 snd_i2c_lock(ice->i2c); in snd_ice1712_ews88mt_output_sense_get()
632 snd_i2c_unlock(ice->i2c); in snd_ice1712_ews88mt_output_sense_get()
635 snd_i2c_unlock(ice->i2c); in snd_ice1712_ews88mt_output_sense_get()
643 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in snd_ice1712_ews88mt_output_sense_put() local
644 struct ews_spec *spec = ice->spec; in snd_ice1712_ews88mt_output_sense_put()
647 snd_i2c_lock(ice->i2c); in snd_ice1712_ews88mt_output_sense_put()
649 snd_i2c_unlock(ice->i2c); in snd_ice1712_ews88mt_output_sense_put()
655 snd_i2c_unlock(ice->i2c); in snd_ice1712_ews88mt_output_sense_put()
658 snd_i2c_unlock(ice->i2c); in snd_ice1712_ews88mt_output_sense_put()
665 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in snd_ice1712_ews88mt_input_sense_get() local
666 struct ews_spec *spec = ice->spec; in snd_ice1712_ews88mt_input_sense_get()
672 snd_i2c_lock(ice->i2c); in snd_ice1712_ews88mt_input_sense_get()
674 snd_i2c_unlock(ice->i2c); in snd_ice1712_ews88mt_input_sense_get()
679 snd_i2c_unlock(ice->i2c); in snd_ice1712_ews88mt_input_sense_get()
686 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in snd_ice1712_ews88mt_input_sense_put() local
687 struct ews_spec *spec = ice->spec; in snd_ice1712_ews88mt_input_sense_put()
693 snd_i2c_lock(ice->i2c); in snd_ice1712_ews88mt_input_sense_put()
695 snd_i2c_unlock(ice->i2c); in snd_ice1712_ews88mt_input_sense_put()
701 snd_i2c_unlock(ice->i2c); in snd_ice1712_ews88mt_input_sense_put()
704 snd_i2c_unlock(ice->i2c); in snd_ice1712_ews88mt_input_sense_put()
734 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in snd_ice1712_ews88d_control_get() local
735 struct ews_spec *spec = ice->spec; in snd_ice1712_ews88d_control_get()
740 snd_i2c_lock(ice->i2c); in snd_ice1712_ews88d_control_get()
742 snd_i2c_unlock(ice->i2c); in snd_ice1712_ews88d_control_get()
745 snd_i2c_unlock(ice->i2c); in snd_ice1712_ews88d_control_get()
755 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in snd_ice1712_ews88d_control_put() local
756 struct ews_spec *spec = ice->spec; in snd_ice1712_ews88d_control_put()
762 snd_i2c_lock(ice->i2c); in snd_ice1712_ews88d_control_put()
764 snd_i2c_unlock(ice->i2c); in snd_ice1712_ews88d_control_put()
778 snd_i2c_unlock(ice->i2c); in snd_ice1712_ews88d_control_put()
781 snd_i2c_unlock(ice->i2c); in snd_ice1712_ews88d_control_put()
808 static int snd_ice1712_6fire_read_pca(struct snd_ice1712 *ice, unsigned char reg) in snd_ice1712_6fire_read_pca() argument
811 struct ews_spec *spec = ice->spec; in snd_ice1712_6fire_read_pca()
813 snd_i2c_lock(ice->i2c); in snd_ice1712_6fire_read_pca()
816 snd_i2c_unlock(ice->i2c); in snd_ice1712_6fire_read_pca()
817 dev_err(ice->card->dev, "cannot send pca\n"); in snd_ice1712_6fire_read_pca()
823 snd_i2c_unlock(ice->i2c); in snd_ice1712_6fire_read_pca()
824 dev_err(ice->card->dev, "cannot read pca\n"); in snd_ice1712_6fire_read_pca()
827 snd_i2c_unlock(ice->i2c); in snd_ice1712_6fire_read_pca()
831 static int snd_ice1712_6fire_write_pca(struct snd_ice1712 *ice, unsigned char reg, unsigned char da… in snd_ice1712_6fire_write_pca() argument
834 struct ews_spec *spec = ice->spec; in snd_ice1712_6fire_write_pca()
836 snd_i2c_lock(ice->i2c); in snd_ice1712_6fire_write_pca()
840 snd_i2c_unlock(ice->i2c); in snd_ice1712_6fire_write_pca()
843 snd_i2c_unlock(ice->i2c); in snd_ice1712_6fire_write_pca()
851 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in snd_ice1712_6fire_control_get() local
856 if ((data = snd_ice1712_6fire_read_pca(ice, PCF9554_REG_OUTPUT)) < 0) in snd_ice1712_6fire_control_get()
867 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in snd_ice1712_6fire_control_put() local
872 if ((data = snd_ice1712_6fire_read_pca(ice, PCF9554_REG_OUTPUT)) < 0) in snd_ice1712_6fire_control_put()
880 snd_ice1712_6fire_write_pca(ice, PCF9554_REG_OUTPUT, (unsigned char)ndata); in snd_ice1712_6fire_control_put()
896 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in snd_ice1712_6fire_select_input_get() local
899 if ((data = snd_ice1712_6fire_read_pca(ice, PCF9554_REG_OUTPUT)) < 0) in snd_ice1712_6fire_select_input_get()
907 struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol); in snd_ice1712_6fire_select_input_put() local
910 if ((data = snd_ice1712_6fire_read_pca(ice, PCF9554_REG_OUTPUT)) < 0) in snd_ice1712_6fire_select_input_put()
915 snd_ice1712_6fire_write_pca(ice, PCF9554_REG_OUTPUT, (unsigned char)ndata); in snd_ice1712_6fire_select_input_put()
947 static int snd_ice1712_ews_add_controls(struct snd_ice1712 *ice) in snd_ice1712_ews_add_controls() argument
953 if (ice->cs8427 == NULL) { in snd_ice1712_ews_add_controls()
954 err = snd_ice1712_spdif_build_controls(ice); in snd_ice1712_ews_add_controls()
960 switch (ice->eeprom.subvendor) { in snd_ice1712_ews_add_controls()
967 err = snd_ice1712_akm4xxx_build_controls(ice); in snd_ice1712_ews_add_controls()
974 switch (ice->eeprom.subvendor) { in snd_ice1712_ews_add_controls()
977 err = snd_ctl_add(ice->card, snd_ctl_new1(&snd_ice1712_ewx2496_controls[idx], ice)); in snd_ice1712_ews_add_controls()
986 err = snd_ctl_add(ice->card, snd_ctl_new1(&snd_ice1712_ews88mt_input_sense, ice)); in snd_ice1712_ews_add_controls()
989 err = snd_ctl_add(ice->card, snd_ctl_new1(&snd_ice1712_ews88mt_output_sense, ice)); in snd_ice1712_ews_add_controls()
995 err = snd_ctl_add(ice->card, snd_ctl_new1(&snd_ice1712_ews88d_controls[idx], ice)); in snd_ice1712_ews_add_controls()
1002 err = snd_ctl_add(ice->card, snd_ctl_new1(&snd_ice1712_6fire_controls[idx], ice)); in snd_ice1712_ews_add_controls()