Lines Matching refs:chip
589 static void __maestro_write(struct es1968 *chip, u16 reg, u16 data) in __maestro_write() argument
591 outw(reg, chip->io_port + ESM_INDEX); in __maestro_write()
592 outw(data, chip->io_port + ESM_DATA); in __maestro_write()
593 chip->maestro_map[reg] = data; in __maestro_write()
596 static inline void maestro_write(struct es1968 *chip, u16 reg, u16 data) in maestro_write() argument
599 spin_lock_irqsave(&chip->reg_lock, flags); in maestro_write()
600 __maestro_write(chip, reg, data); in maestro_write()
601 spin_unlock_irqrestore(&chip->reg_lock, flags); in maestro_write()
605 static u16 __maestro_read(struct es1968 *chip, u16 reg) in __maestro_read() argument
608 outw(reg, chip->io_port + ESM_INDEX); in __maestro_read()
609 chip->maestro_map[reg] = inw(chip->io_port + ESM_DATA); in __maestro_read()
611 return chip->maestro_map[reg]; in __maestro_read()
614 static inline u16 maestro_read(struct es1968 *chip, u16 reg) in maestro_read() argument
618 spin_lock_irqsave(&chip->reg_lock, flags); in maestro_read()
619 result = __maestro_read(chip, reg); in maestro_read()
620 spin_unlock_irqrestore(&chip->reg_lock, flags); in maestro_read()
625 static int snd_es1968_ac97_wait(struct es1968 *chip) in snd_es1968_ac97_wait() argument
630 if (!(inb(chip->io_port + ESM_AC97_INDEX) & 1)) in snd_es1968_ac97_wait()
638 static int snd_es1968_ac97_wait_poll(struct es1968 *chip) in snd_es1968_ac97_wait_poll() argument
643 if (!(inb(chip->io_port + ESM_AC97_INDEX) & 1)) in snd_es1968_ac97_wait_poll()
652 struct es1968 *chip = ac97->private_data; in snd_es1968_ac97_write() local
654 snd_es1968_ac97_wait(chip); in snd_es1968_ac97_write()
657 outw(val, chip->io_port + ESM_AC97_DATA); in snd_es1968_ac97_write()
659 outb(reg, chip->io_port + ESM_AC97_INDEX); in snd_es1968_ac97_write()
666 struct es1968 *chip = ac97->private_data; in snd_es1968_ac97_read() local
668 snd_es1968_ac97_wait(chip); in snd_es1968_ac97_read()
670 outb(reg | 0x80, chip->io_port + ESM_AC97_INDEX); in snd_es1968_ac97_read()
673 if (!snd_es1968_ac97_wait_poll(chip)) { in snd_es1968_ac97_read()
674 data = inw(chip->io_port + ESM_AC97_DATA); in snd_es1968_ac97_read()
682 static void apu_index_set(struct es1968 *chip, u16 index) in apu_index_set() argument
685 __maestro_write(chip, IDR1_CRAM_POINTER, index); in apu_index_set()
687 if (__maestro_read(chip, IDR1_CRAM_POINTER) == index) in apu_index_set()
693 static void apu_data_set(struct es1968 *chip, u16 data) in apu_data_set() argument
697 if (__maestro_read(chip, IDR0_DATA_PORT) == data) in apu_data_set()
699 __maestro_write(chip, IDR0_DATA_PORT, data); in apu_data_set()
705 static void __apu_set_register(struct es1968 *chip, u16 channel, u8 reg, u16 data) in __apu_set_register() argument
710 chip->apu_map[channel][reg] = data; in __apu_set_register()
713 apu_index_set(chip, reg); in __apu_set_register()
714 apu_data_set(chip, data); in __apu_set_register()
717 static void apu_set_register(struct es1968 *chip, u16 channel, u8 reg, u16 data) in apu_set_register() argument
720 spin_lock_irqsave(&chip->reg_lock, flags); in apu_set_register()
721 __apu_set_register(chip, channel, reg, data); in apu_set_register()
722 spin_unlock_irqrestore(&chip->reg_lock, flags); in apu_set_register()
725 static u16 __apu_get_register(struct es1968 *chip, u16 channel, u8 reg) in __apu_get_register() argument
730 apu_index_set(chip, reg); in __apu_get_register()
731 return __maestro_read(chip, IDR0_DATA_PORT); in __apu_get_register()
734 static u16 apu_get_register(struct es1968 *chip, u16 channel, u8 reg) in apu_get_register() argument
738 spin_lock_irqsave(&chip->reg_lock, flags); in apu_get_register()
739 v = __apu_get_register(chip, channel, reg); in apu_get_register()
740 spin_unlock_irqrestore(&chip->reg_lock, flags); in apu_get_register()
746 static void assp_set_register(struct es1968 *chip, u32 reg, u32 value)
750 spin_lock_irqsave(&chip->reg_lock, flags);
751 outl(reg, chip->io_port + ASSP_INDEX);
752 outl(value, chip->io_port + ASSP_DATA);
753 spin_unlock_irqrestore(&chip->reg_lock, flags);
756 static u32 assp_get_register(struct es1968 *chip, u32 reg)
761 spin_lock_irqsave(&chip->reg_lock, flags);
762 outl(reg, chip->io_port + ASSP_INDEX);
763 value = inl(chip->io_port + ASSP_DATA);
764 spin_unlock_irqrestore(&chip->reg_lock, flags);
771 static void wave_set_register(struct es1968 *chip, u16 reg, u16 value) in wave_set_register() argument
775 spin_lock_irqsave(&chip->reg_lock, flags); in wave_set_register()
776 outw(reg, chip->io_port + WC_INDEX); in wave_set_register()
777 outw(value, chip->io_port + WC_DATA); in wave_set_register()
778 spin_unlock_irqrestore(&chip->reg_lock, flags); in wave_set_register()
781 static u16 wave_get_register(struct es1968 *chip, u16 reg) in wave_get_register() argument
786 spin_lock_irqsave(&chip->reg_lock, flags); in wave_get_register()
787 outw(reg, chip->io_port + WC_INDEX); in wave_get_register()
788 value = inw(chip->io_port + WC_DATA); in wave_get_register()
789 spin_unlock_irqrestore(&chip->reg_lock, flags); in wave_get_register()
798 static void snd_es1968_bob_stop(struct es1968 *chip) in snd_es1968_bob_stop() argument
802 reg = __maestro_read(chip, 0x11); in snd_es1968_bob_stop()
804 __maestro_write(chip, 0x11, reg); in snd_es1968_bob_stop()
805 reg = __maestro_read(chip, 0x17); in snd_es1968_bob_stop()
807 __maestro_write(chip, 0x17, reg); in snd_es1968_bob_stop()
810 static void snd_es1968_bob_start(struct es1968 *chip) in snd_es1968_bob_start() argument
818 if (chip->bob_freq > (ESS_SYSCLK >> (prescale + 9))) in snd_es1968_bob_start()
831 if (chip->bob_freq > in snd_es1968_bob_start()
842 __maestro_write(chip, 6, 0x9000 | (prescale << 5) | divide); /* set reg */ in snd_es1968_bob_start()
845 __maestro_write(chip, 0x11, __maestro_read(chip, 0x11) | 1); in snd_es1968_bob_start()
846 __maestro_write(chip, 0x17, __maestro_read(chip, 0x17) | 1); in snd_es1968_bob_start()
850 static void snd_es1968_bob_inc(struct es1968 *chip, int freq) in snd_es1968_bob_inc() argument
852 chip->bobclient++; in snd_es1968_bob_inc()
853 if (chip->bobclient == 1) { in snd_es1968_bob_inc()
854 chip->bob_freq = freq; in snd_es1968_bob_inc()
855 snd_es1968_bob_start(chip); in snd_es1968_bob_inc()
856 } else if (chip->bob_freq < freq) { in snd_es1968_bob_inc()
857 snd_es1968_bob_stop(chip); in snd_es1968_bob_inc()
858 chip->bob_freq = freq; in snd_es1968_bob_inc()
859 snd_es1968_bob_start(chip); in snd_es1968_bob_inc()
864 static void snd_es1968_bob_dec(struct es1968 *chip) in snd_es1968_bob_dec() argument
866 chip->bobclient--; in snd_es1968_bob_dec()
867 if (chip->bobclient <= 0) in snd_es1968_bob_dec()
868 snd_es1968_bob_stop(chip); in snd_es1968_bob_dec()
869 else if (chip->bob_freq > ESM_BOB_FREQ) { in snd_es1968_bob_dec()
873 list_for_each_entry(es, &chip->substream_list, list) { in snd_es1968_bob_dec()
877 if (max_freq != chip->bob_freq) { in snd_es1968_bob_dec()
878 snd_es1968_bob_stop(chip); in snd_es1968_bob_dec()
879 chip->bob_freq = max_freq; in snd_es1968_bob_dec()
880 snd_es1968_bob_start(chip); in snd_es1968_bob_dec()
886 snd_es1968_calc_bob_rate(struct es1968 *chip, struct esschan *es, in snd_es1968_calc_bob_rate() argument
908 static u32 snd_es1968_compute_rate(struct es1968 *chip, u32 freq) in snd_es1968_compute_rate() argument
910 u32 rate = (freq << 16) / chip->clock; in snd_es1968_compute_rate()
920 snd_es1968_get_dma_ptr(struct es1968 *chip, struct esschan *es) in snd_es1968_get_dma_ptr() argument
924 offset = apu_get_register(chip, es->apu[0], 5); in snd_es1968_get_dma_ptr()
931 static void snd_es1968_apu_set_freq(struct es1968 *chip, int apu, int freq) in snd_es1968_apu_set_freq() argument
933 apu_set_register(chip, apu, 2, in snd_es1968_apu_set_freq()
934 (apu_get_register(chip, apu, 2) & 0x00FF) | in snd_es1968_apu_set_freq()
936 apu_set_register(chip, apu, 3, freq >> 8); in snd_es1968_apu_set_freq()
948 static void snd_es1968_pcm_start(struct es1968 *chip, struct esschan *es) in snd_es1968_pcm_start() argument
950 spin_lock(&chip->reg_lock); in snd_es1968_pcm_start()
951 __apu_set_register(chip, es->apu[0], 5, es->base[0]); in snd_es1968_pcm_start()
952 snd_es1968_trigger_apu(chip, es->apu[0], es->apu_mode[0]); in snd_es1968_pcm_start()
954 __apu_set_register(chip, es->apu[2], 5, es->base[2]); in snd_es1968_pcm_start()
955 snd_es1968_trigger_apu(chip, es->apu[2], es->apu_mode[2]); in snd_es1968_pcm_start()
958 __apu_set_register(chip, es->apu[1], 5, es->base[1]); in snd_es1968_pcm_start()
959 snd_es1968_trigger_apu(chip, es->apu[1], es->apu_mode[1]); in snd_es1968_pcm_start()
961 __apu_set_register(chip, es->apu[3], 5, es->base[3]); in snd_es1968_pcm_start()
962 snd_es1968_trigger_apu(chip, es->apu[3], es->apu_mode[3]); in snd_es1968_pcm_start()
965 spin_unlock(&chip->reg_lock); in snd_es1968_pcm_start()
968 static void snd_es1968_pcm_stop(struct es1968 *chip, struct esschan *es) in snd_es1968_pcm_stop() argument
970 spin_lock(&chip->reg_lock); in snd_es1968_pcm_stop()
971 snd_es1968_trigger_apu(chip, es->apu[0], 0); in snd_es1968_pcm_stop()
972 snd_es1968_trigger_apu(chip, es->apu[1], 0); in snd_es1968_pcm_stop()
974 snd_es1968_trigger_apu(chip, es->apu[2], 0); in snd_es1968_pcm_stop()
975 snd_es1968_trigger_apu(chip, es->apu[3], 0); in snd_es1968_pcm_stop()
977 spin_unlock(&chip->reg_lock); in snd_es1968_pcm_stop()
981 static void snd_es1968_program_wavecache(struct es1968 *chip, struct esschan *es, in snd_es1968_program_wavecache() argument
994 wave_set_register(chip, es->apu[channel] << 3, tmpval); in snd_es1968_program_wavecache()
1002 static void snd_es1968_playback_setup(struct es1968 *chip, struct esschan *es, in snd_es1968_playback_setup() argument
1020 snd_es1968_program_wavecache(chip, es, channel, es->memory->buf.addr, 0); in snd_es1968_playback_setup()
1024 pa -= chip->dma.addr; in snd_es1968_playback_setup()
1042 apu_set_register(chip, apu, i, 0x0000); in snd_es1968_playback_setup()
1045 apu_set_register(chip, apu, 4, ((pa >> 16) & 0xFF) << 8); in snd_es1968_playback_setup()
1046 apu_set_register(chip, apu, 5, pa & 0xFFFF); in snd_es1968_playback_setup()
1047 apu_set_register(chip, apu, 6, (pa + size) & 0xFFFF); in snd_es1968_playback_setup()
1049 apu_set_register(chip, apu, 7, size); in snd_es1968_playback_setup()
1052 apu_set_register(chip, apu, 8, 0x0000); in snd_es1968_playback_setup()
1054 apu_set_register(chip, apu, 9, 0xD000); in snd_es1968_playback_setup()
1057 apu_set_register(chip, apu, 11, 0x0000); in snd_es1968_playback_setup()
1059 apu_set_register(chip, apu, 0, 0x400F); in snd_es1968_playback_setup()
1072 apu_set_register(chip, apu, 10, in snd_es1968_playback_setup()
1076 apu_set_register(chip, apu, 10, 0x8F08); in snd_es1968_playback_setup()
1079 spin_lock_irqsave(&chip->reg_lock, flags); in snd_es1968_playback_setup()
1081 outw(1, chip->io_port + 0x04); in snd_es1968_playback_setup()
1083 outw(inw(chip->io_port + ESM_PORT_HOST_IRQ) | ESM_HIRQ_DSIE, chip->io_port + ESM_PORT_HOST_IRQ); in snd_es1968_playback_setup()
1084 spin_unlock_irqrestore(&chip->reg_lock, flags); in snd_es1968_playback_setup()
1097 freq = snd_es1968_compute_rate(chip, freq); in snd_es1968_playback_setup()
1100 snd_es1968_apu_set_freq(chip, es->apu[0], freq); in snd_es1968_playback_setup()
1101 snd_es1968_apu_set_freq(chip, es->apu[1], freq); in snd_es1968_playback_setup()
1105 static void init_capture_apu(struct es1968 *chip, struct esschan *es, int channel, in init_capture_apu() argument
1114 snd_es1968_program_wavecache(chip, es, channel, pa, 1); in init_capture_apu()
1117 pa -= chip->dma.addr; in init_capture_apu()
1127 apu_set_register(chip, apu, i, 0x0000); in init_capture_apu()
1131 apu_set_register(chip, apu, 2, 0x8); in init_capture_apu()
1134 apu_set_register(chip, apu, 4, ((pa >> 16) & 0xFF) << 8); in init_capture_apu()
1135 apu_set_register(chip, apu, 5, pa & 0xFFFF); in init_capture_apu()
1136 apu_set_register(chip, apu, 6, (pa + bsize) & 0xFFFF); in init_capture_apu()
1137 apu_set_register(chip, apu, 7, bsize); in init_capture_apu()
1139 apu_set_register(chip, apu, 8, 0x00F0); in init_capture_apu()
1141 apu_set_register(chip, apu, 9, 0x0000); in init_capture_apu()
1143 apu_set_register(chip, apu, 10, 0x8F08); in init_capture_apu()
1145 apu_set_register(chip, apu, 11, route); in init_capture_apu()
1147 apu_set_register(chip, apu, 0, 0x400F); in init_capture_apu()
1150 static void snd_es1968_capture_setup(struct es1968 *chip, struct esschan *es, in snd_es1968_capture_setup() argument
1171 init_capture_apu(chip, es, 2, in snd_es1968_capture_setup()
1175 init_capture_apu(chip, es, 0, es->memory->buf.addr, size, in snd_es1968_capture_setup()
1179 init_capture_apu(chip, es, 3, in snd_es1968_capture_setup()
1184 init_capture_apu(chip, es, 1, in snd_es1968_capture_setup()
1196 freq = snd_es1968_compute_rate(chip, freq); in snd_es1968_capture_setup()
1199 snd_es1968_apu_set_freq(chip, es->apu[0], freq); in snd_es1968_capture_setup()
1200 snd_es1968_apu_set_freq(chip, es->apu[1], freq); in snd_es1968_capture_setup()
1204 snd_es1968_apu_set_freq(chip, es->apu[2], freq); in snd_es1968_capture_setup()
1205 snd_es1968_apu_set_freq(chip, es->apu[3], freq); in snd_es1968_capture_setup()
1207 spin_lock_irqsave(&chip->reg_lock, flags); in snd_es1968_capture_setup()
1209 outw(1, chip->io_port + 0x04); in snd_es1968_capture_setup()
1211 outw(inw(chip->io_port + ESM_PORT_HOST_IRQ) | ESM_HIRQ_DSIE, chip->io_port + ESM_PORT_HOST_IRQ); in snd_es1968_capture_setup()
1212 spin_unlock_irqrestore(&chip->reg_lock, flags); in snd_es1968_capture_setup()
1221 struct es1968 *chip = snd_pcm_substream_chip(substream); in snd_es1968_pcm_prepare() local
1237 es->bob_freq = snd_es1968_calc_bob_rate(chip, es, runtime); in snd_es1968_pcm_prepare()
1241 snd_es1968_playback_setup(chip, es, runtime); in snd_es1968_pcm_prepare()
1244 snd_es1968_capture_setup(chip, es, runtime); in snd_es1968_pcm_prepare()
1253 struct es1968 *chip = snd_pcm_substream_chip(substream); in snd_es1968_pcm_trigger() local
1256 spin_lock(&chip->substream_lock); in snd_es1968_pcm_trigger()
1262 snd_es1968_bob_inc(chip, es->bob_freq); in snd_es1968_pcm_trigger()
1265 snd_es1968_pcm_start(chip, es); in snd_es1968_pcm_trigger()
1272 snd_es1968_pcm_stop(chip, es); in snd_es1968_pcm_trigger()
1274 snd_es1968_bob_dec(chip); in snd_es1968_pcm_trigger()
1277 spin_unlock(&chip->substream_lock); in snd_es1968_pcm_trigger()
1283 struct es1968 *chip = snd_pcm_substream_chip(substream); in snd_es1968_pcm_pointer() local
1287 ptr = snd_es1968_get_dma_ptr(chip, es) << es->wav_shift; in snd_es1968_pcm_pointer()
1341 static int calc_available_memory_size(struct es1968 *chip) in calc_available_memory_size() argument
1346 mutex_lock(&chip->memory_mutex); in calc_available_memory_size()
1347 list_for_each_entry(buf, &chip->buf_list, list) { in calc_available_memory_size()
1351 mutex_unlock(&chip->memory_mutex); in calc_available_memory_size()
1358 static struct esm_memory *snd_es1968_new_memory(struct es1968 *chip, int size) in snd_es1968_new_memory() argument
1363 mutex_lock(&chip->memory_mutex); in snd_es1968_new_memory()
1364 list_for_each_entry(buf, &chip->buf_list, list) { in snd_es1968_new_memory()
1368 mutex_unlock(&chip->memory_mutex); in snd_es1968_new_memory()
1375 mutex_unlock(&chip->memory_mutex); in snd_es1968_new_memory()
1387 mutex_unlock(&chip->memory_mutex); in snd_es1968_new_memory()
1392 static void snd_es1968_free_memory(struct es1968 *chip, struct esm_memory *buf) in snd_es1968_free_memory() argument
1396 mutex_lock(&chip->memory_mutex); in snd_es1968_free_memory()
1398 if (buf->list.prev != &chip->buf_list) { in snd_es1968_free_memory()
1407 if (buf->list.next != &chip->buf_list) { in snd_es1968_free_memory()
1415 mutex_unlock(&chip->memory_mutex); in snd_es1968_free_memory()
1418 static void snd_es1968_free_dmabuf(struct es1968 *chip) in snd_es1968_free_dmabuf() argument
1422 if (! chip->dma.area) in snd_es1968_free_dmabuf()
1424 snd_dma_reserve_buf(&chip->dma, snd_dma_pci_buf_id(chip->pci)); in snd_es1968_free_dmabuf()
1425 while ((p = chip->buf_list.next) != &chip->buf_list) { in snd_es1968_free_dmabuf()
1433 snd_es1968_init_dmabuf(struct es1968 *chip) in snd_es1968_init_dmabuf() argument
1438 chip->dma.dev.type = SNDRV_DMA_TYPE_DEV; in snd_es1968_init_dmabuf()
1439 chip->dma.dev.dev = snd_dma_pci_data(chip->pci); in snd_es1968_init_dmabuf()
1440 if (! snd_dma_get_reserved_buf(&chip->dma, snd_dma_pci_buf_id(chip->pci))) { in snd_es1968_init_dmabuf()
1442 snd_dma_pci_data(chip->pci), in snd_es1968_init_dmabuf()
1443 chip->total_bufsize, &chip->dma); in snd_es1968_init_dmabuf()
1444 if (err < 0 || ! chip->dma.area) { in snd_es1968_init_dmabuf()
1446 chip->total_bufsize); in snd_es1968_init_dmabuf()
1449 if ((chip->dma.addr + chip->dma.bytes - 1) & ~((1 << 28) - 1)) { in snd_es1968_init_dmabuf()
1450 snd_dma_free_pages(&chip->dma); in snd_es1968_init_dmabuf()
1456 INIT_LIST_HEAD(&chip->buf_list); in snd_es1968_init_dmabuf()
1460 snd_es1968_free_dmabuf(chip); in snd_es1968_init_dmabuf()
1463 memset(chip->dma.area, 0, ESM_MEM_ALIGN); in snd_es1968_init_dmabuf()
1464 chunk->buf = chip->dma; in snd_es1968_init_dmabuf()
1469 list_add(&chunk->list, &chip->buf_list); in snd_es1968_init_dmabuf()
1479 struct es1968 *chip = snd_pcm_substream_chip(substream); in snd_es1968_hw_params() local
1489 snd_es1968_free_memory(chip, chan->memory); in snd_es1968_hw_params()
1491 chan->memory = snd_es1968_new_memory(chip, size); in snd_es1968_hw_params()
1503 struct es1968 *chip = snd_pcm_substream_chip(substream); in snd_es1968_hw_free() local
1511 snd_es1968_free_memory(chip, chan->memory); in snd_es1968_hw_free()
1521 static int snd_es1968_alloc_apu_pair(struct es1968 *chip, int type) in snd_es1968_alloc_apu_pair() argument
1526 if (chip->apu[apu] == ESM_APU_FREE && in snd_es1968_alloc_apu_pair()
1527 chip->apu[apu + 1] == ESM_APU_FREE) { in snd_es1968_alloc_apu_pair()
1528 chip->apu[apu] = chip->apu[apu + 1] = type; in snd_es1968_alloc_apu_pair()
1538 static void snd_es1968_free_apu_pair(struct es1968 *chip, int apu) in snd_es1968_free_apu_pair() argument
1540 chip->apu[apu] = chip->apu[apu + 1] = ESM_APU_FREE; in snd_es1968_free_apu_pair()
1550 struct es1968 *chip = snd_pcm_substream_chip(substream); in snd_es1968_playback_open() local
1556 apu1 = snd_es1968_alloc_apu_pair(chip, ESM_APU_PCM_PLAY); in snd_es1968_playback_open()
1562 snd_es1968_free_apu_pair(chip, apu1); in snd_es1968_playback_open()
1577 calc_available_memory_size(chip); in snd_es1968_playback_open()
1579 spin_lock_irq(&chip->substream_lock); in snd_es1968_playback_open()
1580 list_add(&es->list, &chip->substream_list); in snd_es1968_playback_open()
1581 spin_unlock_irq(&chip->substream_lock); in snd_es1968_playback_open()
1589 struct es1968 *chip = snd_pcm_substream_chip(substream); in snd_es1968_capture_open() local
1593 apu1 = snd_es1968_alloc_apu_pair(chip, ESM_APU_PCM_CAPTURE); in snd_es1968_capture_open()
1596 apu2 = snd_es1968_alloc_apu_pair(chip, ESM_APU_PCM_RATECONV); in snd_es1968_capture_open()
1598 snd_es1968_free_apu_pair(chip, apu1); in snd_es1968_capture_open()
1604 snd_es1968_free_apu_pair(chip, apu1); in snd_es1968_capture_open()
1605 snd_es1968_free_apu_pair(chip, apu2); in snd_es1968_capture_open()
1622 if ((es->mixbuf = snd_es1968_new_memory(chip, ESM_MIXBUF_SIZE)) == NULL) { in snd_es1968_capture_open()
1623 snd_es1968_free_apu_pair(chip, apu1); in snd_es1968_capture_open()
1624 snd_es1968_free_apu_pair(chip, apu2); in snd_es1968_capture_open()
1633 calc_available_memory_size(chip) - 1024; /* keep MIXBUF size */ in snd_es1968_capture_open()
1636 spin_lock_irq(&chip->substream_lock); in snd_es1968_capture_open()
1637 list_add(&es->list, &chip->substream_list); in snd_es1968_capture_open()
1638 spin_unlock_irq(&chip->substream_lock); in snd_es1968_capture_open()
1645 struct es1968 *chip = snd_pcm_substream_chip(substream); in snd_es1968_playback_close() local
1651 spin_lock_irq(&chip->substream_lock); in snd_es1968_playback_close()
1653 spin_unlock_irq(&chip->substream_lock); in snd_es1968_playback_close()
1654 snd_es1968_free_apu_pair(chip, es->apu[0]); in snd_es1968_playback_close()
1662 struct es1968 *chip = snd_pcm_substream_chip(substream); in snd_es1968_capture_close() local
1668 spin_lock_irq(&chip->substream_lock); in snd_es1968_capture_close()
1670 spin_unlock_irq(&chip->substream_lock); in snd_es1968_capture_close()
1671 snd_es1968_free_memory(chip, es->mixbuf); in snd_es1968_capture_close()
1672 snd_es1968_free_apu_pair(chip, es->apu[0]); in snd_es1968_capture_close()
1673 snd_es1968_free_apu_pair(chip, es->apu[2]); in snd_es1968_capture_close()
1707 static void es1968_measure_clock(struct es1968 *chip) in es1968_measure_clock() argument
1714 if (chip->clock == 0) in es1968_measure_clock()
1715 chip->clock = 48000; /* default clock value */ in es1968_measure_clock()
1718 if ((apu = snd_es1968_alloc_apu_pair(chip, ESM_APU_PCM_PLAY)) < 0) { in es1968_measure_clock()
1722 if ((memory = snd_es1968_new_memory(chip, CLOCK_MEASURE_BUFSIZE)) == NULL) { in es1968_measure_clock()
1723 snd_printk(KERN_ERR "cannot allocate dma buffer - using default clock %d\n", chip->clock); in es1968_measure_clock()
1724 snd_es1968_free_apu_pair(chip, apu); in es1968_measure_clock()
1730 wave_set_register(chip, apu << 3, (memory->buf.addr - 0x10) & 0xfff8); in es1968_measure_clock()
1732 pa = (unsigned int)((memory->buf.addr - chip->dma.addr) >> 1); in es1968_measure_clock()
1737 apu_set_register(chip, apu, i, 0x0000); in es1968_measure_clock()
1739 apu_set_register(chip, apu, 0, 0x400f); in es1968_measure_clock()
1740 apu_set_register(chip, apu, 4, ((pa >> 16) & 0xff) << 8); in es1968_measure_clock()
1741 apu_set_register(chip, apu, 5, pa & 0xffff); in es1968_measure_clock()
1742 apu_set_register(chip, apu, 6, (pa + CLOCK_MEASURE_BUFSIZE/2) & 0xffff); in es1968_measure_clock()
1743 apu_set_register(chip, apu, 7, CLOCK_MEASURE_BUFSIZE/2); in es1968_measure_clock()
1744 apu_set_register(chip, apu, 8, 0x0000); in es1968_measure_clock()
1745 apu_set_register(chip, apu, 9, 0xD000); in es1968_measure_clock()
1746 apu_set_register(chip, apu, 10, 0x8F08); in es1968_measure_clock()
1747 apu_set_register(chip, apu, 11, 0x0000); in es1968_measure_clock()
1748 spin_lock_irq(&chip->reg_lock); in es1968_measure_clock()
1749 outw(1, chip->io_port + 0x04); /* clear WP interrupts */ in es1968_measure_clock()
1750 …outw(inw(chip->io_port + ESM_PORT_HOST_IRQ) | ESM_HIRQ_DSIE, chip->io_port + ESM_PORT_HOST_IRQ); /… in es1968_measure_clock()
1751 spin_unlock_irq(&chip->reg_lock); in es1968_measure_clock()
1753 snd_es1968_apu_set_freq(chip, apu, ((unsigned int)48000 << 16) / chip->clock); /* 48000 Hz */ in es1968_measure_clock()
1755 chip->in_measurement = 1; in es1968_measure_clock()
1756 chip->measure_apu = apu; in es1968_measure_clock()
1757 spin_lock_irq(&chip->reg_lock); in es1968_measure_clock()
1758 snd_es1968_bob_inc(chip, ESM_BOB_FREQ); in es1968_measure_clock()
1759 __apu_set_register(chip, apu, 5, pa & 0xffff); in es1968_measure_clock()
1760 snd_es1968_trigger_apu(chip, apu, ESM_APU_16BITLINEAR); in es1968_measure_clock()
1762 spin_unlock_irq(&chip->reg_lock); in es1968_measure_clock()
1764 spin_lock_irq(&chip->reg_lock); in es1968_measure_clock()
1765 offset = __apu_get_register(chip, apu, 5); in es1968_measure_clock()
1767 snd_es1968_trigger_apu(chip, apu, 0); /* stop */ in es1968_measure_clock()
1768 snd_es1968_bob_dec(chip); in es1968_measure_clock()
1769 chip->in_measurement = 0; in es1968_measure_clock()
1770 spin_unlock_irq(&chip->reg_lock); in es1968_measure_clock()
1775 offset += chip->measure_count * (CLOCK_MEASURE_BUFSIZE/2); in es1968_measure_clock()
1790 chip->clock = (chip->clock * offset) / 48000; in es1968_measure_clock()
1792 printk(KERN_INFO "es1968: clocking to %d\n", chip->clock); in es1968_measure_clock()
1794 snd_es1968_free_memory(chip, memory); in es1968_measure_clock()
1795 snd_es1968_free_apu_pair(chip, apu); in es1968_measure_clock()
1810 snd_es1968_pcm(struct es1968 *chip, int device) in snd_es1968_pcm() argument
1816 if ((err = snd_es1968_init_dmabuf(chip)) < 0) in snd_es1968_pcm()
1820 wave_set_register(chip, 0x01FC, chip->dma.addr >> 12); in snd_es1968_pcm()
1821 wave_set_register(chip, 0x01FD, chip->dma.addr >> 12); in snd_es1968_pcm()
1822 wave_set_register(chip, 0x01FE, chip->dma.addr >> 12); in snd_es1968_pcm()
1823 wave_set_register(chip, 0x01FF, chip->dma.addr >> 12); in snd_es1968_pcm()
1825 if ((err = snd_pcm_new(chip->card, "ESS Maestro", device, in snd_es1968_pcm()
1826 chip->playback_streams, in snd_es1968_pcm()
1827 chip->capture_streams, &pcm)) < 0) in snd_es1968_pcm()
1830 pcm->private_data = chip; in snd_es1968_pcm()
1840 chip->pcm = pcm; in snd_es1968_pcm()
1847 static void snd_es1968_suppress_jitter(struct es1968 *chip, struct esschan *es) in snd_es1968_suppress_jitter() argument
1853 cp1 = __apu_get_register(chip, 0, 5); in snd_es1968_suppress_jitter()
1854 cp2 = __apu_get_register(chip, 1, 5); in snd_es1968_suppress_jitter()
1858 __maestro_write(chip, IDR0_DATA_PORT, cp1); in snd_es1968_suppress_jitter()
1864 static void snd_es1968_update_pcm(struct es1968 *chip, struct esschan *es) in snd_es1968_update_pcm() argument
1873 hwptr = snd_es1968_get_dma_ptr(chip, es) << es->wav_shift; in snd_es1968_update_pcm()
1882 spin_unlock(&chip->substream_lock); in snd_es1968_update_pcm()
1884 spin_lock(&chip->substream_lock); in snd_es1968_update_pcm()
1895 struct es1968 *chip = container_of(work, struct es1968, hwvol_work); in es1968_update_hw_volume() local
1901 x = inb(chip->io_port + 0x1c) & 0xee; in es1968_update_hw_volume()
1903 outb(0x88, chip->io_port + 0x1c); in es1968_update_hw_volume()
1904 outb(0x88, chip->io_port + 0x1d); in es1968_update_hw_volume()
1905 outb(0x88, chip->io_port + 0x1e); in es1968_update_hw_volume()
1906 outb(0x88, chip->io_port + 0x1f); in es1968_update_hw_volume()
1908 if (chip->in_suspend) in es1968_update_hw_volume()
1912 if (! chip->master_switch || ! chip->master_volume) in es1968_update_hw_volume()
1915 val = snd_ac97_read(chip->ac97, AC97_MASTER); in es1968_update_hw_volume()
1936 if (snd_ac97_update(chip->ac97, AC97_MASTER, val)) in es1968_update_hw_volume()
1937 snd_ctl_notify(chip->card, SNDRV_CTL_EVENT_MASK_VALUE, in es1968_update_hw_volume()
1938 &chip->master_volume->id); in es1968_update_hw_volume()
1940 if (!chip->input_dev) in es1968_update_hw_volume()
1962 input_report_key(chip->input_dev, val, 1); in es1968_update_hw_volume()
1963 input_sync(chip->input_dev); in es1968_update_hw_volume()
1964 input_report_key(chip->input_dev, val, 0); in es1968_update_hw_volume()
1965 input_sync(chip->input_dev); in es1968_update_hw_volume()
1975 struct es1968 *chip = dev_id; in snd_es1968_interrupt() local
1978 if (!(event = inb(chip->io_port + 0x1A))) in snd_es1968_interrupt()
1981 outw(inw(chip->io_port + 4) & 1, chip->io_port + 4); in snd_es1968_interrupt()
1984 schedule_work(&chip->hwvol_work); in snd_es1968_interrupt()
1987 outb(0xFF, chip->io_port + 0x1A); in snd_es1968_interrupt()
1989 if ((event & ESM_MPU401_IRQ) && chip->rmidi) { in snd_es1968_interrupt()
1990 snd_mpu401_uart_interrupt(irq, chip->rmidi->private_data); in snd_es1968_interrupt()
1995 spin_lock(&chip->substream_lock); in snd_es1968_interrupt()
1996 list_for_each_entry(es, &chip->substream_list, list) { in snd_es1968_interrupt()
1998 snd_es1968_update_pcm(chip, es); in snd_es1968_interrupt()
2000 snd_es1968_suppress_jitter(chip, es); in snd_es1968_interrupt()
2003 spin_unlock(&chip->substream_lock); in snd_es1968_interrupt()
2004 if (chip->in_measurement) { in snd_es1968_interrupt()
2005 unsigned int curp = __apu_get_register(chip, chip->measure_apu, 5); in snd_es1968_interrupt()
2006 if (curp < chip->measure_lastpos) in snd_es1968_interrupt()
2007 chip->measure_count++; in snd_es1968_interrupt()
2008 chip->measure_lastpos = curp; in snd_es1968_interrupt()
2020 snd_es1968_mixer(struct es1968 *chip) in snd_es1968_mixer() argument
2033 if ((err = snd_ac97_bus(chip->card, 0, &ops, NULL, &pbus)) < 0) in snd_es1968_mixer()
2038 ac97.private_data = chip; in snd_es1968_mixer()
2039 if ((err = snd_ac97_mixer(pbus, &ac97, &chip->ac97)) < 0) in snd_es1968_mixer()
2047 chip->master_switch = snd_ctl_find_id(chip->card, &elem_id); in snd_es1968_mixer()
2051 chip->master_volume = snd_ctl_find_id(chip->card, &elem_id); in snd_es1968_mixer()
2061 static void snd_es1968_ac97_reset(struct es1968 *chip) in snd_es1968_ac97_reset() argument
2063 unsigned long ioaddr = chip->io_port; in snd_es1968_ac97_reset()
2081 pci_read_config_word(chip->pci, 0x58, &w); /* something magical with gpio and bus arb. */ in snd_es1968_ac97_reset()
2082 pci_read_config_dword(chip->pci, PCI_SUBSYSTEM_VENDOR_ID, &vend); in snd_es1968_ac97_reset()
2166 static void snd_es1968_reset(struct es1968 *chip) in snd_es1968_reset() argument
2170 chip->io_port + ESM_PORT_HOST_IRQ); in snd_es1968_reset()
2172 outw(0x0000, chip->io_port + ESM_PORT_HOST_IRQ); in snd_es1968_reset()
2179 static void snd_es1968_chip_init(struct es1968 *chip) in snd_es1968_chip_init() argument
2181 struct pci_dev *pci = chip->pci; in snd_es1968_chip_init()
2183 unsigned long iobase = chip->io_port; in snd_es1968_chip_init()
2261 snd_es1968_reset(chip); in snd_es1968_chip_init()
2277 snd_es1968_ac97_reset(chip); in snd_es1968_chip_init()
2313 wave_set_register(chip, IDR7_WAVE_ROMRAM, in snd_es1968_chip_init()
2314 (wave_get_register(chip, IDR7_WAVE_ROMRAM) & 0xFF00)); in snd_es1968_chip_init()
2315 wave_set_register(chip, IDR7_WAVE_ROMRAM, in snd_es1968_chip_init()
2316 wave_get_register(chip, IDR7_WAVE_ROMRAM) | 0x100); in snd_es1968_chip_init()
2317 wave_set_register(chip, IDR7_WAVE_ROMRAM, in snd_es1968_chip_init()
2318 wave_get_register(chip, IDR7_WAVE_ROMRAM) & ~0x200); in snd_es1968_chip_init()
2319 wave_set_register(chip, IDR7_WAVE_ROMRAM, in snd_es1968_chip_init()
2320 wave_get_register(chip, IDR7_WAVE_ROMRAM) | ~0x400); in snd_es1968_chip_init()
2323 maestro_write(chip, IDR2_CRAM_DATA, 0x0000); in snd_es1968_chip_init()
2326 maestro_write(chip, 0x08, 0xB004); in snd_es1968_chip_init()
2327 maestro_write(chip, 0x09, 0x001B); in snd_es1968_chip_init()
2328 maestro_write(chip, 0x0A, 0x8000); in snd_es1968_chip_init()
2329 maestro_write(chip, 0x0B, 0x3F37); in snd_es1968_chip_init()
2330 maestro_write(chip, 0x0C, 0x0098); in snd_es1968_chip_init()
2333 maestro_write(chip, 0x0C, in snd_es1968_chip_init()
2334 (maestro_read(chip, 0x0C) & ~0xF000) | 0x8000); in snd_es1968_chip_init()
2336 maestro_write(chip, 0x0C, in snd_es1968_chip_init()
2337 (maestro_read(chip, 0x0C) & ~0x0F00) | 0x0500); in snd_es1968_chip_init()
2339 maestro_write(chip, 0x0D, 0x7632); in snd_es1968_chip_init()
2364 apu_set_register(chip, i, w, 0); in snd_es1968_chip_init()
2370 static void snd_es1968_start_irq(struct es1968 *chip) in snd_es1968_start_irq() argument
2374 if (chip->rmidi) in snd_es1968_start_irq()
2376 outb(w, chip->io_port + 0x1A); in snd_es1968_start_irq()
2377 outw(w, chip->io_port + ESM_PORT_HOST_IRQ); in snd_es1968_start_irq()
2388 struct es1968 *chip = card->private_data; in es1968_suspend() local
2390 if (! chip->do_pm) in es1968_suspend()
2393 chip->in_suspend = 1; in es1968_suspend()
2394 cancel_work_sync(&chip->hwvol_work); in es1968_suspend()
2396 snd_pcm_suspend_all(chip->pcm); in es1968_suspend()
2397 snd_ac97_suspend(chip->ac97); in es1968_suspend()
2398 snd_es1968_bob_stop(chip); in es1968_suspend()
2410 struct es1968 *chip = card->private_data; in es1968_resume() local
2413 if (! chip->do_pm) in es1968_resume()
2427 snd_es1968_chip_init(chip); in es1968_resume()
2430 if (chip->dma.addr) { in es1968_resume()
2432 wave_set_register(chip, 0x01FC, chip->dma.addr >> 12); in es1968_resume()
2435 snd_es1968_start_irq(chip); in es1968_resume()
2438 snd_ac97_resume(chip->ac97); in es1968_resume()
2440 list_for_each_entry(es, &chip->substream_list, list) { in es1968_resume()
2443 snd_es1968_playback_setup(chip, es, es->substream->runtime); in es1968_resume()
2446 snd_es1968_capture_setup(chip, es, es->substream->runtime); in es1968_resume()
2452 if (chip->bobclient) in es1968_resume()
2453 snd_es1968_bob_start(chip); in es1968_resume()
2456 chip->in_suspend = 0; in es1968_resume()
2468 static int snd_es1968_create_gameport(struct es1968 *chip, int dev) in snd_es1968_create_gameport() argument
2481 chip->gameport = gp = gameport_allocate_port(); in snd_es1968_create_gameport()
2488 pci_read_config_word(chip->pci, ESM_LEGACY_AUDIO_CONTROL, &val); in snd_es1968_create_gameport()
2489 pci_write_config_word(chip->pci, ESM_LEGACY_AUDIO_CONTROL, val | 0x04); in snd_es1968_create_gameport()
2492 gameport_set_phys(gp, "pci%s/gameport0", pci_name(chip->pci)); in snd_es1968_create_gameport()
2493 gameport_set_dev_parent(gp, &chip->pci->dev); in snd_es1968_create_gameport()
2502 static void snd_es1968_free_gameport(struct es1968 *chip) in snd_es1968_free_gameport() argument
2504 if (chip->gameport) { in snd_es1968_free_gameport()
2505 struct resource *r = gameport_get_port_data(chip->gameport); in snd_es1968_free_gameport()
2507 gameport_unregister_port(chip->gameport); in snd_es1968_free_gameport()
2508 chip->gameport = NULL; in snd_es1968_free_gameport()
2514 static inline int snd_es1968_create_gameport(struct es1968 *chip, int dev) { return -ENOSYS; } in snd_es1968_create_gameport() argument
2515 static inline void snd_es1968_free_gameport(struct es1968 *chip) { } in snd_es1968_free_gameport() argument
2519 static int snd_es1968_input_register(struct es1968 *chip) in snd_es1968_input_register() argument
2528 snprintf(chip->phys, sizeof(chip->phys), "pci-%s/input0", in snd_es1968_input_register()
2529 pci_name(chip->pci)); in snd_es1968_input_register()
2531 input_dev->name = chip->card->driver; in snd_es1968_input_register()
2532 input_dev->phys = chip->phys; in snd_es1968_input_register()
2534 input_dev->id.vendor = chip->pci->vendor; in snd_es1968_input_register()
2535 input_dev->id.product = chip->pci->device; in snd_es1968_input_register()
2536 input_dev->dev.parent = &chip->pci->dev; in snd_es1968_input_register()
2549 chip->input_dev = input_dev; in snd_es1968_input_register()
2568 struct es1968 *chip = tea->private_data; in snd_es1968_tea575x_set_pins() local
2569 unsigned long io = chip->io_port + GPIO_DATA; in snd_es1968_tea575x_set_pins()
2581 struct es1968 *chip = tea->private_data; in snd_es1968_tea575x_get_pins() local
2582 unsigned long io = chip->io_port + GPIO_DATA; in snd_es1968_tea575x_get_pins()
2596 struct es1968 *chip = tea->private_data; in snd_es1968_tea575x_set_direction() local
2597 unsigned long io = chip->io_port + GPIO_DATA; in snd_es1968_tea575x_set_direction()
2616 static int snd_es1968_free(struct es1968 *chip) in snd_es1968_free() argument
2618 cancel_work_sync(&chip->hwvol_work); in snd_es1968_free()
2620 if (chip->input_dev) in snd_es1968_free()
2621 input_unregister_device(chip->input_dev); in snd_es1968_free()
2624 if (chip->io_port) { in snd_es1968_free()
2625 if (chip->irq >= 0) in snd_es1968_free()
2626 synchronize_irq(chip->irq); in snd_es1968_free()
2627 outw(1, chip->io_port + 0x04); /* clear WP interrupts */ in snd_es1968_free()
2628 outw(0, chip->io_port + ESM_PORT_HOST_IRQ); /* disable IRQ */ in snd_es1968_free()
2632 snd_tea575x_exit(&chip->tea); in snd_es1968_free()
2633 v4l2_device_unregister(&chip->v4l2_dev); in snd_es1968_free()
2636 if (chip->irq >= 0) in snd_es1968_free()
2637 free_irq(chip->irq, chip); in snd_es1968_free()
2638 snd_es1968_free_gameport(chip); in snd_es1968_free()
2639 pci_release_regions(chip->pci); in snd_es1968_free()
2640 pci_disable_device(chip->pci); in snd_es1968_free()
2641 kfree(chip); in snd_es1968_free()
2647 struct es1968 *chip = device->device_data; in snd_es1968_dev_free() local
2648 return snd_es1968_free(chip); in snd_es1968_dev_free()
2684 struct es1968 *chip; in snd_es1968_create() local
2700 chip = kzalloc(sizeof(*chip), GFP_KERNEL); in snd_es1968_create()
2701 if (! chip) { in snd_es1968_create()
2707 chip->type = chip_type; in snd_es1968_create()
2708 spin_lock_init(&chip->reg_lock); in snd_es1968_create()
2709 spin_lock_init(&chip->substream_lock); in snd_es1968_create()
2710 INIT_LIST_HEAD(&chip->buf_list); in snd_es1968_create()
2711 INIT_LIST_HEAD(&chip->substream_list); in snd_es1968_create()
2712 mutex_init(&chip->memory_mutex); in snd_es1968_create()
2713 INIT_WORK(&chip->hwvol_work, es1968_update_hw_volume); in snd_es1968_create()
2714 chip->card = card; in snd_es1968_create()
2715 chip->pci = pci; in snd_es1968_create()
2716 chip->irq = -1; in snd_es1968_create()
2717 chip->total_bufsize = total_bufsize; /* in bytes */ in snd_es1968_create()
2718 chip->playback_streams = play_streams; in snd_es1968_create()
2719 chip->capture_streams = capt_streams; in snd_es1968_create()
2722 kfree(chip); in snd_es1968_create()
2726 chip->io_port = pci_resource_start(pci, 0); in snd_es1968_create()
2728 KBUILD_MODNAME, chip)) { in snd_es1968_create()
2730 snd_es1968_free(chip); in snd_es1968_create()
2733 chip->irq = pci->irq; in snd_es1968_create()
2737 chip->maestro_map[i] = 0; in snd_es1968_create()
2741 chip->apu[i] = ESM_APU_FREE; in snd_es1968_create()
2749 pci_read_config_word(chip->pci, PCI_SUBSYSTEM_VENDOR_ID, &vend); in snd_es1968_create()
2751 if (chip->type == pm_whitelist[i].type && in snd_es1968_create()
2763 chip->do_pm = do_pm; in snd_es1968_create()
2765 snd_es1968_chip_init(chip); in snd_es1968_create()
2767 if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops)) < 0) { in snd_es1968_create()
2768 snd_es1968_free(chip); in snd_es1968_create()
2775 err = v4l2_device_register(&pci->dev, &chip->v4l2_dev); in snd_es1968_create()
2777 snd_es1968_free(chip); in snd_es1968_create()
2780 chip->tea.v4l2_dev = &chip->v4l2_dev; in snd_es1968_create()
2781 chip->tea.private_data = chip; in snd_es1968_create()
2782 chip->tea.radio_nr = radio_nr; in snd_es1968_create()
2783 chip->tea.ops = &snd_es1968_tea_ops; in snd_es1968_create()
2784 strlcpy(chip->tea.card, "SF64-PCE2", sizeof(chip->tea.card)); in snd_es1968_create()
2785 sprintf(chip->tea.bus_info, "PCI:%s", pci_name(pci)); in snd_es1968_create()
2786 if (!snd_tea575x_init(&chip->tea, THIS_MODULE)) in snd_es1968_create()
2790 *chip_ret = chip; in snd_es1968_create()
2803 struct es1968 *chip; in snd_es1968_probe() local
2829 &chip)) < 0) { in snd_es1968_probe()
2833 card->private_data = chip; in snd_es1968_probe()
2835 switch (chip->type) { in snd_es1968_probe()
2850 if ((err = snd_es1968_pcm(chip, 0)) < 0) { in snd_es1968_probe()
2855 if ((err = snd_es1968_mixer(chip)) < 0) { in snd_es1968_probe()
2863 pci_read_config_word(chip->pci, PCI_SUBSYSTEM_VENDOR_ID, &vend); in snd_es1968_probe()
2865 if (chip->type == mpu_blacklist[i].type && in snd_es1968_probe()
2874 chip->io_port + ESM_MPU401_PORT, in snd_es1968_probe()
2877 -1, &chip->rmidi)) < 0) { in snd_es1968_probe()
2882 snd_es1968_create_gameport(chip, dev); in snd_es1968_probe()
2885 err = snd_es1968_input_register(chip); in snd_es1968_probe()
2891 snd_es1968_start_irq(chip); in snd_es1968_probe()
2893 chip->clock = clock[dev]; in snd_es1968_probe()
2894 if (! chip->clock) in snd_es1968_probe()
2895 es1968_measure_clock(chip); in snd_es1968_probe()
2898 card->shortname, chip->io_port, chip->irq); in snd_es1968_probe()