Lines Matching refs:chip
39 static int snd_es1688_dsp_command(struct snd_es1688 *chip, unsigned char val) in snd_es1688_dsp_command() argument
44 if ((inb(ES1688P(chip, STATUS)) & 0x80) == 0) { in snd_es1688_dsp_command()
45 outb(val, ES1688P(chip, COMMAND)); in snd_es1688_dsp_command()
54 static int snd_es1688_dsp_get_byte(struct snd_es1688 *chip) in snd_es1688_dsp_get_byte() argument
59 if (inb(ES1688P(chip, DATA_AVAIL)) & 0x80) in snd_es1688_dsp_get_byte()
60 return inb(ES1688P(chip, READ)); in snd_es1688_dsp_get_byte()
61 …rintd("es1688 get byte failed: 0x%lx = 0x%x!!!\n", ES1688P(chip, DATA_AVAIL), inb(ES1688P(chip, DA… in snd_es1688_dsp_get_byte()
65 static int snd_es1688_write(struct snd_es1688 *chip, in snd_es1688_write() argument
68 if (!snd_es1688_dsp_command(chip, reg)) in snd_es1688_write()
70 return snd_es1688_dsp_command(chip, data); in snd_es1688_write()
73 static int snd_es1688_read(struct snd_es1688 *chip, unsigned char reg) in snd_es1688_read() argument
76 if (!snd_es1688_dsp_command(chip, 0xc0)) in snd_es1688_read()
78 if (!snd_es1688_dsp_command(chip, reg)) in snd_es1688_read()
80 return snd_es1688_dsp_get_byte(chip); in snd_es1688_read()
83 void snd_es1688_mixer_write(struct snd_es1688 *chip, in snd_es1688_mixer_write() argument
86 outb(reg, ES1688P(chip, MIXER_ADDR)); in snd_es1688_mixer_write()
88 outb(data, ES1688P(chip, MIXER_DATA)); in snd_es1688_mixer_write()
92 static unsigned char snd_es1688_mixer_read(struct snd_es1688 *chip, unsigned char reg) in snd_es1688_mixer_read() argument
96 outb(reg, ES1688P(chip, MIXER_ADDR)); in snd_es1688_mixer_read()
98 result = inb(ES1688P(chip, MIXER_DATA)); in snd_es1688_mixer_read()
103 int snd_es1688_reset(struct snd_es1688 *chip) in snd_es1688_reset() argument
107 outb(3, ES1688P(chip, RESET)); /* valid only for ESS chips, SB -> 1 */ in snd_es1688_reset()
109 outb(0, ES1688P(chip, RESET)); in snd_es1688_reset()
111 for (i = 0; i < 1000 && !(inb(ES1688P(chip, DATA_AVAIL)) & 0x80); i++); in snd_es1688_reset()
112 if (inb(ES1688P(chip, READ)) != 0xaa) { in snd_es1688_reset()
113 snd_printd("ess_reset at 0x%lx: failed!!!\n", chip->port); in snd_es1688_reset()
116 snd_es1688_dsp_command(chip, 0xc6); /* enable extended mode */ in snd_es1688_reset()
121 static int snd_es1688_probe(struct snd_es1688 *chip) in snd_es1688_probe() argument
131 spin_lock_irqsave(&chip->reg_lock, flags); /* Some ESS1688 cards need this */ in snd_es1688_probe()
132 inb(ES1688P(chip, ENABLE1)); /* ENABLE1 */ in snd_es1688_probe()
133 inb(ES1688P(chip, ENABLE1)); /* ENABLE1 */ in snd_es1688_probe()
134 inb(ES1688P(chip, ENABLE1)); /* ENABLE1 */ in snd_es1688_probe()
135 inb(ES1688P(chip, ENABLE2)); /* ENABLE2 */ in snd_es1688_probe()
136 inb(ES1688P(chip, ENABLE1)); /* ENABLE1 */ in snd_es1688_probe()
137 inb(ES1688P(chip, ENABLE2)); /* ENABLE2 */ in snd_es1688_probe()
138 inb(ES1688P(chip, ENABLE1)); /* ENABLE1 */ in snd_es1688_probe()
139 inb(ES1688P(chip, ENABLE1)); /* ENABLE1 */ in snd_es1688_probe()
140 inb(ES1688P(chip, ENABLE2)); /* ENABLE2 */ in snd_es1688_probe()
141 inb(ES1688P(chip, ENABLE1)); /* ENABLE1 */ in snd_es1688_probe()
142 inb(ES1688P(chip, ENABLE0)); /* ENABLE0 */ in snd_es1688_probe()
144 if (snd_es1688_reset(chip) < 0) { in snd_es1688_probe()
145 snd_printdd("ESS: [0x%lx] reset failed... 0x%x\n", chip->port, inb(ES1688P(chip, READ))); in snd_es1688_probe()
146 spin_unlock_irqrestore(&chip->reg_lock, flags); in snd_es1688_probe()
149 snd_es1688_dsp_command(chip, 0xe7); /* return identification */ in snd_es1688_probe()
152 if (inb(ES1688P(chip, DATA_AVAIL)) & 0x80) { in snd_es1688_probe()
154 major = inb(ES1688P(chip, READ)); in snd_es1688_probe()
156 minor = inb(ES1688P(chip, READ)); in snd_es1688_probe()
161 spin_unlock_irqrestore(&chip->reg_lock, flags); in snd_es1688_probe()
163 snd_printdd("ESS: [0x%lx] found.. major = 0x%x, minor = 0x%x\n", chip->port, major, minor); in snd_es1688_probe()
165 chip->version = (major << 8) | minor; in snd_es1688_probe()
166 if (!chip->version) in snd_es1688_probe()
170 switch (chip->version & 0xfff0) { in snd_es1688_probe()
173 "but driver is in another place\n", chip->port); in snd_es1688_probe()
176 hw = (chip->version & 0x0f) >= 8 ? ES1688_HW_1688 : ES1688_HW_688; in snd_es1688_probe()
181 chip->port, chip->version); in snd_es1688_probe()
185 spin_lock_irqsave(&chip->reg_lock, flags); in snd_es1688_probe()
186 snd_es1688_write(chip, 0xb1, 0x10); /* disable IRQ */ in snd_es1688_probe()
187 snd_es1688_write(chip, 0xb2, 0x00); /* disable DMA */ in snd_es1688_probe()
188 spin_unlock_irqrestore(&chip->reg_lock, flags); in snd_es1688_probe()
191 spin_lock_irqsave(&chip->mixer_lock, flags); in snd_es1688_probe()
192 snd_es1688_mixer_write(chip, 0x40, 0x01); in snd_es1688_probe()
193 spin_unlock_irqrestore(&chip->mixer_lock, flags); in snd_es1688_probe()
198 static int snd_es1688_init(struct snd_es1688 * chip, int enable) in snd_es1688_init() argument
206 if (enable && chip->mpu_port >= 0x300 && chip->mpu_irq > 0 && chip->hardware != ES1688_HW_688) { in snd_es1688_init()
207 tmp = (chip->mpu_port & 0x0f0) >> 4; in snd_es1688_init()
209 switch (chip->mpu_irq) { in snd_es1688_init()
233 spin_lock_irqsave(&chip->reg_lock, flags); in snd_es1688_init()
234 snd_es1688_mixer_write(chip, 0x40, cfg); in snd_es1688_init()
235 spin_unlock_irqrestore(&chip->reg_lock, flags); in snd_es1688_init()
237 spin_lock_irqsave(&chip->reg_lock, flags); in snd_es1688_init()
238 snd_es1688_read(chip, 0xb1); in snd_es1688_init()
239 snd_es1688_read(chip, 0xb2); in snd_es1688_init()
240 spin_unlock_irqrestore(&chip->reg_lock, flags); in snd_es1688_init()
243 irq_bits = irqs[chip->irq & 0x0f]; in snd_es1688_init()
247 chip->port, chip->irq); in snd_es1688_init()
254 spin_lock_irqsave(&chip->reg_lock, flags); in snd_es1688_init()
255 snd_es1688_write(chip, 0xb1, cfg | (irq_bits << 2)); in snd_es1688_init()
256 spin_unlock_irqrestore(&chip->reg_lock, flags); in snd_es1688_init()
258 dma = chip->dma8; in snd_es1688_init()
261 "for ES1688 chip!!\n", chip->port, dma); in snd_es1688_init()
272 spin_lock_irqsave(&chip->reg_lock, flags); in snd_es1688_init()
273 snd_es1688_write(chip, 0xb2, cfg | (dma_bits << 2)); in snd_es1688_init()
274 spin_unlock_irqrestore(&chip->reg_lock, flags); in snd_es1688_init()
276 spin_lock_irqsave(&chip->reg_lock, flags); in snd_es1688_init()
277 snd_es1688_write(chip, 0xb1, 0x10); /* disable IRQ */ in snd_es1688_init()
278 snd_es1688_write(chip, 0xb2, 0x00); /* disable DMA */ in snd_es1688_init()
279 spin_unlock_irqrestore(&chip->reg_lock, flags); in snd_es1688_init()
281 spin_lock_irqsave(&chip->reg_lock, flags); in snd_es1688_init()
282 snd_es1688_read(chip, 0xb1); in snd_es1688_init()
283 snd_es1688_read(chip, 0xb2); in snd_es1688_init()
284 snd_es1688_reset(chip); in snd_es1688_init()
285 spin_unlock_irqrestore(&chip->reg_lock, flags); in snd_es1688_init()
313 static void snd_es1688_set_rate(struct snd_es1688 *chip, struct snd_pcm_substream *substream) in snd_es1688_set_rate() argument
325 snd_es1688_write(chip, 0xa1, bits); in snd_es1688_set_rate()
326 snd_es1688_write(chip, 0xa2, divider); in snd_es1688_set_rate()
335 static int snd_es1688_trigger(struct snd_es1688 *chip, int cmd, unsigned char value) in snd_es1688_trigger() argument
344 spin_lock(&chip->reg_lock); in snd_es1688_trigger()
345 chip->trigger_value = value; in snd_es1688_trigger()
346 val = snd_es1688_read(chip, 0xb8); in snd_es1688_trigger()
348 spin_unlock(&chip->reg_lock); in snd_es1688_trigger()
354 snd_dma_pointer(chip->dma8, chip->dma_size)); in snd_es1688_trigger()
356 snd_es1688_write(chip, 0xb8, (val & 0xf0) | value); in snd_es1688_trigger()
357 spin_unlock(&chip->reg_lock); in snd_es1688_trigger()
375 struct snd_es1688 *chip = snd_pcm_substream_chip(substream); in snd_es1688_playback_prepare() local
380 chip->dma_size = size; in snd_es1688_playback_prepare()
381 spin_lock_irqsave(&chip->reg_lock, flags); in snd_es1688_playback_prepare()
382 snd_es1688_reset(chip); in snd_es1688_playback_prepare()
383 snd_es1688_set_rate(chip, substream); in snd_es1688_playback_prepare()
384 snd_es1688_write(chip, 0xb8, 4); /* auto init DMA mode */ in snd_es1688_playback_prepare()
385 snd_es1688_write(chip, 0xa8, (snd_es1688_read(chip, 0xa8) & ~0x03) | (3 - runtime->channels)); in snd_es1688_playback_prepare()
386 snd_es1688_write(chip, 0xb9, 2); /* demand mode (4 bytes/request) */ in snd_es1688_playback_prepare()
390 snd_es1688_write(chip, 0xb6, 0x80); in snd_es1688_playback_prepare()
391 snd_es1688_write(chip, 0xb7, 0x51); in snd_es1688_playback_prepare()
392 snd_es1688_write(chip, 0xb7, 0xd0); in snd_es1688_playback_prepare()
395 snd_es1688_write(chip, 0xb6, 0x00); in snd_es1688_playback_prepare()
396 snd_es1688_write(chip, 0xb7, 0x71); in snd_es1688_playback_prepare()
397 snd_es1688_write(chip, 0xb7, 0xf4); in snd_es1688_playback_prepare()
402 snd_es1688_write(chip, 0xb6, 0x80); in snd_es1688_playback_prepare()
403 snd_es1688_write(chip, 0xb7, 0x51); in snd_es1688_playback_prepare()
404 snd_es1688_write(chip, 0xb7, 0x98); in snd_es1688_playback_prepare()
407 snd_es1688_write(chip, 0xb6, 0x00); in snd_es1688_playback_prepare()
408 snd_es1688_write(chip, 0xb7, 0x71); in snd_es1688_playback_prepare()
409 snd_es1688_write(chip, 0xb7, 0xbc); in snd_es1688_playback_prepare()
412 snd_es1688_write(chip, 0xb1, (snd_es1688_read(chip, 0xb1) & 0x0f) | 0x50); in snd_es1688_playback_prepare()
413 snd_es1688_write(chip, 0xb2, (snd_es1688_read(chip, 0xb2) & 0x0f) | 0x50); in snd_es1688_playback_prepare()
414 snd_es1688_dsp_command(chip, ES1688_DSP_CMD_SPKON); in snd_es1688_playback_prepare()
415 spin_unlock_irqrestore(&chip->reg_lock, flags); in snd_es1688_playback_prepare()
418 snd_dma_program(chip->dma8, runtime->dma_addr, size, DMA_MODE_WRITE | DMA_AUTOINIT); in snd_es1688_playback_prepare()
419 spin_lock_irqsave(&chip->reg_lock, flags); in snd_es1688_playback_prepare()
420 snd_es1688_write(chip, 0xa4, (unsigned char) count); in snd_es1688_playback_prepare()
421 snd_es1688_write(chip, 0xa5, (unsigned char) (count >> 8)); in snd_es1688_playback_prepare()
422 spin_unlock_irqrestore(&chip->reg_lock, flags); in snd_es1688_playback_prepare()
429 struct snd_es1688 *chip = snd_pcm_substream_chip(substream); in snd_es1688_playback_trigger() local
430 return snd_es1688_trigger(chip, cmd, 0x05); in snd_es1688_playback_trigger()
436 struct snd_es1688 *chip = snd_pcm_substream_chip(substream); in snd_es1688_capture_prepare() local
441 chip->dma_size = size; in snd_es1688_capture_prepare()
442 spin_lock_irqsave(&chip->reg_lock, flags); in snd_es1688_capture_prepare()
443 snd_es1688_reset(chip); in snd_es1688_capture_prepare()
444 snd_es1688_set_rate(chip, substream); in snd_es1688_capture_prepare()
445 snd_es1688_dsp_command(chip, ES1688_DSP_CMD_SPKOFF); in snd_es1688_capture_prepare()
446 snd_es1688_write(chip, 0xb8, 0x0e); /* auto init DMA mode */ in snd_es1688_capture_prepare()
447 snd_es1688_write(chip, 0xa8, (snd_es1688_read(chip, 0xa8) & ~0x03) | (3 - runtime->channels)); in snd_es1688_capture_prepare()
448 snd_es1688_write(chip, 0xb9, 2); /* demand mode (4 bytes/request) */ in snd_es1688_capture_prepare()
452 snd_es1688_write(chip, 0xb7, 0x51); in snd_es1688_capture_prepare()
453 snd_es1688_write(chip, 0xb7, 0xd0); in snd_es1688_capture_prepare()
456 snd_es1688_write(chip, 0xb7, 0x71); in snd_es1688_capture_prepare()
457 snd_es1688_write(chip, 0xb7, 0xf4); in snd_es1688_capture_prepare()
462 snd_es1688_write(chip, 0xb7, 0x51); in snd_es1688_capture_prepare()
463 snd_es1688_write(chip, 0xb7, 0x98); in snd_es1688_capture_prepare()
466 snd_es1688_write(chip, 0xb7, 0x71); in snd_es1688_capture_prepare()
467 snd_es1688_write(chip, 0xb7, 0xbc); in snd_es1688_capture_prepare()
470 snd_es1688_write(chip, 0xb1, (snd_es1688_read(chip, 0xb1) & 0x0f) | 0x50); in snd_es1688_capture_prepare()
471 snd_es1688_write(chip, 0xb2, (snd_es1688_read(chip, 0xb2) & 0x0f) | 0x50); in snd_es1688_capture_prepare()
472 spin_unlock_irqrestore(&chip->reg_lock, flags); in snd_es1688_capture_prepare()
475 snd_dma_program(chip->dma8, runtime->dma_addr, size, DMA_MODE_READ | DMA_AUTOINIT); in snd_es1688_capture_prepare()
476 spin_lock_irqsave(&chip->reg_lock, flags); in snd_es1688_capture_prepare()
477 snd_es1688_write(chip, 0xa4, (unsigned char) count); in snd_es1688_capture_prepare()
478 snd_es1688_write(chip, 0xa5, (unsigned char) (count >> 8)); in snd_es1688_capture_prepare()
479 spin_unlock_irqrestore(&chip->reg_lock, flags); in snd_es1688_capture_prepare()
486 struct snd_es1688 *chip = snd_pcm_substream_chip(substream); in snd_es1688_capture_trigger() local
487 return snd_es1688_trigger(chip, cmd, 0x0f); in snd_es1688_capture_trigger()
492 struct snd_es1688 *chip = dev_id; in snd_es1688_interrupt() local
494 if (chip->trigger_value == 0x05) /* ok.. playback is active */ in snd_es1688_interrupt()
495 snd_pcm_period_elapsed(chip->playback_substream); in snd_es1688_interrupt()
496 if (chip->trigger_value == 0x0f) /* ok.. capture is active */ in snd_es1688_interrupt()
497 snd_pcm_period_elapsed(chip->capture_substream); in snd_es1688_interrupt()
499 inb(ES1688P(chip, DATA_AVAIL)); /* ack interrupt */ in snd_es1688_interrupt()
505 struct snd_es1688 *chip = snd_pcm_substream_chip(substream); in snd_es1688_playback_pointer() local
508 if (chip->trigger_value != 0x05) in snd_es1688_playback_pointer()
510 ptr = snd_dma_pointer(chip->dma8, chip->dma_size); in snd_es1688_playback_pointer()
516 struct snd_es1688 *chip = snd_pcm_substream_chip(substream); in snd_es1688_capture_pointer() local
519 if (chip->trigger_value != 0x0f) in snd_es1688_capture_pointer()
521 ptr = snd_dma_pointer(chip->dma8, chip->dma_size); in snd_es1688_capture_pointer()
571 struct snd_es1688 *chip = snd_pcm_substream_chip(substream); in snd_es1688_playback_open() local
574 if (chip->capture_substream != NULL) in snd_es1688_playback_open()
576 chip->playback_substream = substream; in snd_es1688_playback_open()
585 struct snd_es1688 *chip = snd_pcm_substream_chip(substream); in snd_es1688_capture_open() local
588 if (chip->playback_substream != NULL) in snd_es1688_capture_open()
590 chip->capture_substream = substream; in snd_es1688_capture_open()
599 struct snd_es1688 *chip = snd_pcm_substream_chip(substream); in snd_es1688_playback_close() local
601 chip->playback_substream = NULL; in snd_es1688_playback_close()
607 struct snd_es1688 *chip = snd_pcm_substream_chip(substream); in snd_es1688_capture_close() local
609 chip->capture_substream = NULL; in snd_es1688_capture_close()
613 static int snd_es1688_free(struct snd_es1688 *chip) in snd_es1688_free() argument
615 if (chip->hardware != ES1688_HW_UNDEF) in snd_es1688_free()
616 snd_es1688_init(chip, 0); in snd_es1688_free()
617 release_and_free_resource(chip->res_port); in snd_es1688_free()
618 if (chip->irq >= 0) in snd_es1688_free()
619 free_irq(chip->irq, (void *) chip); in snd_es1688_free()
620 if (chip->dma8 >= 0) { in snd_es1688_free()
621 disable_dma(chip->dma8); in snd_es1688_free()
622 free_dma(chip->dma8); in snd_es1688_free()
629 struct snd_es1688 *chip = device->device_data; in snd_es1688_dev_free() local
630 return snd_es1688_free(chip); in snd_es1688_dev_free()
633 static const char *snd_es1688_chip_id(struct snd_es1688 *chip) in snd_es1688_chip_id() argument
636 sprintf(tmp, "ES%s688 rev %i", chip->hardware == ES1688_HW_688 ? "" : "1", chip->version & 0x0f); in snd_es1688_chip_id()
641 struct snd_es1688 *chip, in snd_es1688_create() argument
655 if (chip == NULL) in snd_es1688_create()
657 chip->irq = -1; in snd_es1688_create()
658 chip->dma8 = -1; in snd_es1688_create()
659 chip->hardware = ES1688_HW_UNDEF; in snd_es1688_create()
661 chip->res_port = request_region(port + 4, 12, "ES1688"); in snd_es1688_create()
662 if (chip->res_port == NULL) { in snd_es1688_create()
668 err = request_irq(irq, snd_es1688_interrupt, 0, "ES1688", (void *) chip); in snd_es1688_create()
674 chip->irq = irq; in snd_es1688_create()
681 chip->dma8 = dma8; in snd_es1688_create()
683 spin_lock_init(&chip->reg_lock); in snd_es1688_create()
684 spin_lock_init(&chip->mixer_lock); in snd_es1688_create()
685 chip->port = port; in snd_es1688_create()
689 chip->mpu_port = mpu_port; in snd_es1688_create()
690 chip->mpu_irq = mpu_irq; in snd_es1688_create()
691 chip->hardware = hardware; in snd_es1688_create()
693 err = snd_es1688_probe(chip); in snd_es1688_create()
697 err = snd_es1688_init(chip, 1); in snd_es1688_create()
702 err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops); in snd_es1688_create()
705 snd_es1688_free(chip); in snd_es1688_create()
731 int snd_es1688_pcm(struct snd_card *card, struct snd_es1688 *chip, int device) in snd_es1688_pcm() argument
743 pcm->private_data = chip; in snd_es1688_pcm()
745 strcpy(pcm->name, snd_es1688_chip_id(chip)); in snd_es1688_pcm()
746 chip->pcm = pcm; in snd_es1688_pcm()
770 struct snd_es1688 *chip = snd_kcontrol_chip(kcontrol); in snd_es1688_get_mux() local
771 ucontrol->value.enumerated.item[0] = snd_es1688_mixer_read(chip, ES1688_REC_DEV) & 7; in snd_es1688_get_mux()
777 struct snd_es1688 *chip = snd_kcontrol_chip(kcontrol); in snd_es1688_put_mux() local
784 spin_lock_irqsave(&chip->reg_lock, flags); in snd_es1688_put_mux()
785 oval = snd_es1688_mixer_read(chip, ES1688_REC_DEV); in snd_es1688_put_mux()
789 snd_es1688_mixer_write(chip, ES1688_REC_DEV, nval); in snd_es1688_put_mux()
790 spin_unlock_irqrestore(&chip->reg_lock, flags); in snd_es1688_put_mux()
813 struct snd_es1688 *chip = snd_kcontrol_chip(kcontrol); in snd_es1688_get_single() local
820 spin_lock_irqsave(&chip->reg_lock, flags); in snd_es1688_get_single()
821 ucontrol->value.integer.value[0] = (snd_es1688_mixer_read(chip, reg) >> shift) & mask; in snd_es1688_get_single()
822 spin_unlock_irqrestore(&chip->reg_lock, flags); in snd_es1688_get_single()
830 struct snd_es1688 *chip = snd_kcontrol_chip(kcontrol); in snd_es1688_put_single() local
843 spin_lock_irqsave(&chip->reg_lock, flags); in snd_es1688_put_single()
844 oval = snd_es1688_mixer_read(chip, reg); in snd_es1688_put_single()
848 snd_es1688_mixer_write(chip, reg, nval); in snd_es1688_put_single()
849 spin_unlock_irqrestore(&chip->reg_lock, flags); in snd_es1688_put_single()
872 struct snd_es1688 *chip = snd_kcontrol_chip(kcontrol); in snd_es1688_get_double() local
882 spin_lock_irqsave(&chip->reg_lock, flags); in snd_es1688_get_double()
884 left = snd_es1688_mixer_read(chip, left_reg); in snd_es1688_get_double()
886 left = snd_es1688_read(chip, left_reg); in snd_es1688_get_double()
889 right = snd_es1688_mixer_read(chip, right_reg); in snd_es1688_get_double()
891 right = snd_es1688_read(chip, right_reg); in snd_es1688_get_double()
894 spin_unlock_irqrestore(&chip->reg_lock, flags); in snd_es1688_get_double()
906 struct snd_es1688 *chip = snd_kcontrol_chip(kcontrol); in snd_es1688_put_double() local
925 spin_lock_irqsave(&chip->reg_lock, flags); in snd_es1688_put_double()
928 oval1 = snd_es1688_mixer_read(chip, left_reg); in snd_es1688_put_double()
930 oval1 = snd_es1688_read(chip, left_reg); in snd_es1688_put_double()
932 oval2 = snd_es1688_mixer_read(chip, right_reg); in snd_es1688_put_double()
934 oval2 = snd_es1688_read(chip, right_reg); in snd_es1688_put_double()
940 snd_es1688_mixer_write(chip, left_reg, val1); in snd_es1688_put_double()
942 snd_es1688_write(chip, left_reg, val1); in snd_es1688_put_double()
944 snd_es1688_mixer_write(chip, right_reg, val1); in snd_es1688_put_double()
946 snd_es1688_write(chip, right_reg, val1); in snd_es1688_put_double()
950 oval1 = snd_es1688_mixer_read(chip, left_reg); in snd_es1688_put_double()
952 oval1 = snd_es1688_read(chip, left_reg); in snd_es1688_put_double()
957 snd_es1688_mixer_write(chip, left_reg, val1); in snd_es1688_put_double()
959 snd_es1688_write(chip, left_reg, val1); in snd_es1688_put_double()
963 spin_unlock_irqrestore(&chip->reg_lock, flags); in snd_es1688_put_double()
1002 int snd_es1688_mixer(struct snd_card *card, struct snd_es1688 *chip) in snd_es1688_mixer() argument
1008 if (snd_BUG_ON(!chip || !card)) in snd_es1688_mixer()
1011 strcpy(card->mixername, snd_es1688_chip_id(chip)); in snd_es1688_mixer()
1014 if ((err = snd_ctl_add(card, snd_ctl_new1(&snd_es1688_controls[idx], chip))) < 0) in snd_es1688_mixer()
1021 snd_es1688_mixer_write(chip, reg, val); in snd_es1688_mixer()
1023 snd_es1688_write(chip, reg, val); in snd_es1688_mixer()