Lines Matching refs:chip
590 static void __maestro_write(struct es1968 *chip, u16 reg, u16 data) in __maestro_write() argument
592 outw(reg, chip->io_port + ESM_INDEX); in __maestro_write()
593 outw(data, chip->io_port + ESM_DATA); in __maestro_write()
594 chip->maestro_map[reg] = data; in __maestro_write()
597 static inline void maestro_write(struct es1968 *chip, u16 reg, u16 data) in maestro_write() argument
600 spin_lock_irqsave(&chip->reg_lock, flags); in maestro_write()
601 __maestro_write(chip, reg, data); in maestro_write()
602 spin_unlock_irqrestore(&chip->reg_lock, flags); in maestro_write()
606 static u16 __maestro_read(struct es1968 *chip, u16 reg) in __maestro_read() argument
609 outw(reg, chip->io_port + ESM_INDEX); in __maestro_read()
610 chip->maestro_map[reg] = inw(chip->io_port + ESM_DATA); in __maestro_read()
612 return chip->maestro_map[reg]; in __maestro_read()
615 static inline u16 maestro_read(struct es1968 *chip, u16 reg) in maestro_read() argument
619 spin_lock_irqsave(&chip->reg_lock, flags); in maestro_read()
620 result = __maestro_read(chip, reg); in maestro_read()
621 spin_unlock_irqrestore(&chip->reg_lock, flags); in maestro_read()
626 static int snd_es1968_ac97_wait(struct es1968 *chip) in snd_es1968_ac97_wait() argument
631 if (!(inb(chip->io_port + ESM_AC97_INDEX) & 1)) in snd_es1968_ac97_wait()
635 dev_dbg(chip->card->dev, "ac97 timeout\n"); in snd_es1968_ac97_wait()
639 static int snd_es1968_ac97_wait_poll(struct es1968 *chip) in snd_es1968_ac97_wait_poll() argument
644 if (!(inb(chip->io_port + ESM_AC97_INDEX) & 1)) in snd_es1968_ac97_wait_poll()
647 dev_dbg(chip->card->dev, "ac97 timeout\n"); in snd_es1968_ac97_wait_poll()
653 struct es1968 *chip = ac97->private_data; in snd_es1968_ac97_write() local
655 snd_es1968_ac97_wait(chip); in snd_es1968_ac97_write()
658 outw(val, chip->io_port + ESM_AC97_DATA); in snd_es1968_ac97_write()
660 outb(reg, chip->io_port + ESM_AC97_INDEX); in snd_es1968_ac97_write()
667 struct es1968 *chip = ac97->private_data; in snd_es1968_ac97_read() local
669 snd_es1968_ac97_wait(chip); in snd_es1968_ac97_read()
671 outb(reg | 0x80, chip->io_port + ESM_AC97_INDEX); in snd_es1968_ac97_read()
674 if (!snd_es1968_ac97_wait_poll(chip)) { in snd_es1968_ac97_read()
675 data = inw(chip->io_port + ESM_AC97_DATA); in snd_es1968_ac97_read()
683 static void apu_index_set(struct es1968 *chip, u16 index) in apu_index_set() argument
686 __maestro_write(chip, IDR1_CRAM_POINTER, index); in apu_index_set()
688 if (__maestro_read(chip, IDR1_CRAM_POINTER) == index) in apu_index_set()
690 dev_dbg(chip->card->dev, "APU register select failed. (Timeout)\n"); in apu_index_set()
694 static void apu_data_set(struct es1968 *chip, u16 data) in apu_data_set() argument
698 if (__maestro_read(chip, IDR0_DATA_PORT) == data) in apu_data_set()
700 __maestro_write(chip, IDR0_DATA_PORT, data); in apu_data_set()
702 dev_dbg(chip->card->dev, "APU register set probably failed (Timeout)!\n"); in apu_data_set()
706 static void __apu_set_register(struct es1968 *chip, u16 channel, u8 reg, u16 data) in __apu_set_register() argument
711 chip->apu_map[channel][reg] = data; in __apu_set_register()
714 apu_index_set(chip, reg); in __apu_set_register()
715 apu_data_set(chip, data); in __apu_set_register()
718 static void apu_set_register(struct es1968 *chip, u16 channel, u8 reg, u16 data) in apu_set_register() argument
721 spin_lock_irqsave(&chip->reg_lock, flags); in apu_set_register()
722 __apu_set_register(chip, channel, reg, data); in apu_set_register()
723 spin_unlock_irqrestore(&chip->reg_lock, flags); in apu_set_register()
726 static u16 __apu_get_register(struct es1968 *chip, u16 channel, u8 reg) in __apu_get_register() argument
731 apu_index_set(chip, reg); in __apu_get_register()
732 return __maestro_read(chip, IDR0_DATA_PORT); in __apu_get_register()
735 static u16 apu_get_register(struct es1968 *chip, u16 channel, u8 reg) in apu_get_register() argument
739 spin_lock_irqsave(&chip->reg_lock, flags); in apu_get_register()
740 v = __apu_get_register(chip, channel, reg); in apu_get_register()
741 spin_unlock_irqrestore(&chip->reg_lock, flags); in apu_get_register()
747 static void assp_set_register(struct es1968 *chip, u32 reg, u32 value)
751 spin_lock_irqsave(&chip->reg_lock, flags);
752 outl(reg, chip->io_port + ASSP_INDEX);
753 outl(value, chip->io_port + ASSP_DATA);
754 spin_unlock_irqrestore(&chip->reg_lock, flags);
757 static u32 assp_get_register(struct es1968 *chip, u32 reg)
762 spin_lock_irqsave(&chip->reg_lock, flags);
763 outl(reg, chip->io_port + ASSP_INDEX);
764 value = inl(chip->io_port + ASSP_DATA);
765 spin_unlock_irqrestore(&chip->reg_lock, flags);
772 static void wave_set_register(struct es1968 *chip, u16 reg, u16 value) in wave_set_register() argument
776 spin_lock_irqsave(&chip->reg_lock, flags); in wave_set_register()
777 outw(reg, chip->io_port + WC_INDEX); in wave_set_register()
778 outw(value, chip->io_port + WC_DATA); in wave_set_register()
779 spin_unlock_irqrestore(&chip->reg_lock, flags); in wave_set_register()
782 static u16 wave_get_register(struct es1968 *chip, u16 reg) in wave_get_register() argument
787 spin_lock_irqsave(&chip->reg_lock, flags); in wave_get_register()
788 outw(reg, chip->io_port + WC_INDEX); in wave_get_register()
789 value = inw(chip->io_port + WC_DATA); in wave_get_register()
790 spin_unlock_irqrestore(&chip->reg_lock, flags); in wave_get_register()
799 static void snd_es1968_bob_stop(struct es1968 *chip) in snd_es1968_bob_stop() argument
803 reg = __maestro_read(chip, 0x11); in snd_es1968_bob_stop()
805 __maestro_write(chip, 0x11, reg); in snd_es1968_bob_stop()
806 reg = __maestro_read(chip, 0x17); in snd_es1968_bob_stop()
808 __maestro_write(chip, 0x17, reg); in snd_es1968_bob_stop()
811 static void snd_es1968_bob_start(struct es1968 *chip) in snd_es1968_bob_start() argument
819 if (chip->bob_freq > (ESS_SYSCLK >> (prescale + 9))) in snd_es1968_bob_start()
832 if (chip->bob_freq > in snd_es1968_bob_start()
843 __maestro_write(chip, 6, 0x9000 | (prescale << 5) | divide); /* set reg */ in snd_es1968_bob_start()
846 __maestro_write(chip, 0x11, __maestro_read(chip, 0x11) | 1); in snd_es1968_bob_start()
847 __maestro_write(chip, 0x17, __maestro_read(chip, 0x17) | 1); in snd_es1968_bob_start()
851 static void snd_es1968_bob_inc(struct es1968 *chip, int freq) in snd_es1968_bob_inc() argument
853 chip->bobclient++; in snd_es1968_bob_inc()
854 if (chip->bobclient == 1) { in snd_es1968_bob_inc()
855 chip->bob_freq = freq; in snd_es1968_bob_inc()
856 snd_es1968_bob_start(chip); in snd_es1968_bob_inc()
857 } else if (chip->bob_freq < freq) { in snd_es1968_bob_inc()
858 snd_es1968_bob_stop(chip); in snd_es1968_bob_inc()
859 chip->bob_freq = freq; in snd_es1968_bob_inc()
860 snd_es1968_bob_start(chip); in snd_es1968_bob_inc()
865 static void snd_es1968_bob_dec(struct es1968 *chip) in snd_es1968_bob_dec() argument
867 chip->bobclient--; in snd_es1968_bob_dec()
868 if (chip->bobclient <= 0) in snd_es1968_bob_dec()
869 snd_es1968_bob_stop(chip); in snd_es1968_bob_dec()
870 else if (chip->bob_freq > ESM_BOB_FREQ) { in snd_es1968_bob_dec()
874 list_for_each_entry(es, &chip->substream_list, list) { in snd_es1968_bob_dec()
878 if (max_freq != chip->bob_freq) { in snd_es1968_bob_dec()
879 snd_es1968_bob_stop(chip); in snd_es1968_bob_dec()
880 chip->bob_freq = max_freq; in snd_es1968_bob_dec()
881 snd_es1968_bob_start(chip); in snd_es1968_bob_dec()
887 snd_es1968_calc_bob_rate(struct es1968 *chip, struct esschan *es, in snd_es1968_calc_bob_rate() argument
909 static u32 snd_es1968_compute_rate(struct es1968 *chip, u32 freq) in snd_es1968_compute_rate() argument
911 u32 rate = (freq << 16) / chip->clock; in snd_es1968_compute_rate()
921 snd_es1968_get_dma_ptr(struct es1968 *chip, struct esschan *es) in snd_es1968_get_dma_ptr() argument
925 offset = apu_get_register(chip, es->apu[0], 5); in snd_es1968_get_dma_ptr()
932 static void snd_es1968_apu_set_freq(struct es1968 *chip, int apu, int freq) in snd_es1968_apu_set_freq() argument
934 apu_set_register(chip, apu, 2, in snd_es1968_apu_set_freq()
935 (apu_get_register(chip, apu, 2) & 0x00FF) | in snd_es1968_apu_set_freq()
937 apu_set_register(chip, apu, 3, freq >> 8); in snd_es1968_apu_set_freq()
949 static void snd_es1968_pcm_start(struct es1968 *chip, struct esschan *es) in snd_es1968_pcm_start() argument
951 spin_lock(&chip->reg_lock); in snd_es1968_pcm_start()
952 __apu_set_register(chip, es->apu[0], 5, es->base[0]); in snd_es1968_pcm_start()
953 snd_es1968_trigger_apu(chip, es->apu[0], es->apu_mode[0]); in snd_es1968_pcm_start()
955 __apu_set_register(chip, es->apu[2], 5, es->base[2]); in snd_es1968_pcm_start()
956 snd_es1968_trigger_apu(chip, es->apu[2], es->apu_mode[2]); in snd_es1968_pcm_start()
959 __apu_set_register(chip, es->apu[1], 5, es->base[1]); in snd_es1968_pcm_start()
960 snd_es1968_trigger_apu(chip, es->apu[1], es->apu_mode[1]); in snd_es1968_pcm_start()
962 __apu_set_register(chip, es->apu[3], 5, es->base[3]); in snd_es1968_pcm_start()
963 snd_es1968_trigger_apu(chip, es->apu[3], es->apu_mode[3]); in snd_es1968_pcm_start()
966 spin_unlock(&chip->reg_lock); in snd_es1968_pcm_start()
969 static void snd_es1968_pcm_stop(struct es1968 *chip, struct esschan *es) in snd_es1968_pcm_stop() argument
971 spin_lock(&chip->reg_lock); in snd_es1968_pcm_stop()
972 snd_es1968_trigger_apu(chip, es->apu[0], 0); in snd_es1968_pcm_stop()
973 snd_es1968_trigger_apu(chip, es->apu[1], 0); in snd_es1968_pcm_stop()
975 snd_es1968_trigger_apu(chip, es->apu[2], 0); in snd_es1968_pcm_stop()
976 snd_es1968_trigger_apu(chip, es->apu[3], 0); in snd_es1968_pcm_stop()
978 spin_unlock(&chip->reg_lock); in snd_es1968_pcm_stop()
982 static void snd_es1968_program_wavecache(struct es1968 *chip, struct esschan *es, in snd_es1968_program_wavecache() argument
995 wave_set_register(chip, es->apu[channel] << 3, tmpval); in snd_es1968_program_wavecache()
1003 static void snd_es1968_playback_setup(struct es1968 *chip, struct esschan *es, in snd_es1968_playback_setup() argument
1021 snd_es1968_program_wavecache(chip, es, channel, es->memory->buf.addr, 0); in snd_es1968_playback_setup()
1025 pa -= chip->dma.addr; in snd_es1968_playback_setup()
1043 apu_set_register(chip, apu, i, 0x0000); in snd_es1968_playback_setup()
1046 apu_set_register(chip, apu, 4, ((pa >> 16) & 0xFF) << 8); in snd_es1968_playback_setup()
1047 apu_set_register(chip, apu, 5, pa & 0xFFFF); in snd_es1968_playback_setup()
1048 apu_set_register(chip, apu, 6, (pa + size) & 0xFFFF); in snd_es1968_playback_setup()
1050 apu_set_register(chip, apu, 7, size); in snd_es1968_playback_setup()
1053 apu_set_register(chip, apu, 8, 0x0000); in snd_es1968_playback_setup()
1055 apu_set_register(chip, apu, 9, 0xD000); in snd_es1968_playback_setup()
1058 apu_set_register(chip, apu, 11, 0x0000); in snd_es1968_playback_setup()
1060 apu_set_register(chip, apu, 0, 0x400F); in snd_es1968_playback_setup()
1073 apu_set_register(chip, apu, 10, in snd_es1968_playback_setup()
1077 apu_set_register(chip, apu, 10, 0x8F08); in snd_es1968_playback_setup()
1080 spin_lock_irqsave(&chip->reg_lock, flags); in snd_es1968_playback_setup()
1082 outw(1, chip->io_port + 0x04); in snd_es1968_playback_setup()
1084 outw(inw(chip->io_port + ESM_PORT_HOST_IRQ) | ESM_HIRQ_DSIE, chip->io_port + ESM_PORT_HOST_IRQ); in snd_es1968_playback_setup()
1085 spin_unlock_irqrestore(&chip->reg_lock, flags); in snd_es1968_playback_setup()
1098 freq = snd_es1968_compute_rate(chip, freq); in snd_es1968_playback_setup()
1101 snd_es1968_apu_set_freq(chip, es->apu[0], freq); in snd_es1968_playback_setup()
1102 snd_es1968_apu_set_freq(chip, es->apu[1], freq); in snd_es1968_playback_setup()
1106 static void init_capture_apu(struct es1968 *chip, struct esschan *es, int channel, in init_capture_apu() argument
1115 snd_es1968_program_wavecache(chip, es, channel, pa, 1); in init_capture_apu()
1118 pa -= chip->dma.addr; in init_capture_apu()
1128 apu_set_register(chip, apu, i, 0x0000); in init_capture_apu()
1132 apu_set_register(chip, apu, 2, 0x8); in init_capture_apu()
1135 apu_set_register(chip, apu, 4, ((pa >> 16) & 0xFF) << 8); in init_capture_apu()
1136 apu_set_register(chip, apu, 5, pa & 0xFFFF); in init_capture_apu()
1137 apu_set_register(chip, apu, 6, (pa + bsize) & 0xFFFF); in init_capture_apu()
1138 apu_set_register(chip, apu, 7, bsize); in init_capture_apu()
1140 apu_set_register(chip, apu, 8, 0x00F0); in init_capture_apu()
1142 apu_set_register(chip, apu, 9, 0x0000); in init_capture_apu()
1144 apu_set_register(chip, apu, 10, 0x8F08); in init_capture_apu()
1146 apu_set_register(chip, apu, 11, route); in init_capture_apu()
1148 apu_set_register(chip, apu, 0, 0x400F); in init_capture_apu()
1151 static void snd_es1968_capture_setup(struct es1968 *chip, struct esschan *es, in snd_es1968_capture_setup() argument
1172 init_capture_apu(chip, es, 2, in snd_es1968_capture_setup()
1176 init_capture_apu(chip, es, 0, es->memory->buf.addr, size, in snd_es1968_capture_setup()
1180 init_capture_apu(chip, es, 3, in snd_es1968_capture_setup()
1185 init_capture_apu(chip, es, 1, in snd_es1968_capture_setup()
1197 freq = snd_es1968_compute_rate(chip, freq); in snd_es1968_capture_setup()
1200 snd_es1968_apu_set_freq(chip, es->apu[0], freq); in snd_es1968_capture_setup()
1201 snd_es1968_apu_set_freq(chip, es->apu[1], freq); in snd_es1968_capture_setup()
1205 snd_es1968_apu_set_freq(chip, es->apu[2], freq); in snd_es1968_capture_setup()
1206 snd_es1968_apu_set_freq(chip, es->apu[3], freq); in snd_es1968_capture_setup()
1208 spin_lock_irqsave(&chip->reg_lock, flags); in snd_es1968_capture_setup()
1210 outw(1, chip->io_port + 0x04); in snd_es1968_capture_setup()
1212 outw(inw(chip->io_port + ESM_PORT_HOST_IRQ) | ESM_HIRQ_DSIE, chip->io_port + ESM_PORT_HOST_IRQ); in snd_es1968_capture_setup()
1213 spin_unlock_irqrestore(&chip->reg_lock, flags); in snd_es1968_capture_setup()
1222 struct es1968 *chip = snd_pcm_substream_chip(substream); in snd_es1968_pcm_prepare() local
1238 es->bob_freq = snd_es1968_calc_bob_rate(chip, es, runtime); in snd_es1968_pcm_prepare()
1242 snd_es1968_playback_setup(chip, es, runtime); in snd_es1968_pcm_prepare()
1245 snd_es1968_capture_setup(chip, es, runtime); in snd_es1968_pcm_prepare()
1254 struct es1968 *chip = snd_pcm_substream_chip(substream); in snd_es1968_pcm_trigger() local
1257 spin_lock(&chip->substream_lock); in snd_es1968_pcm_trigger()
1263 snd_es1968_bob_inc(chip, es->bob_freq); in snd_es1968_pcm_trigger()
1266 snd_es1968_pcm_start(chip, es); in snd_es1968_pcm_trigger()
1273 snd_es1968_pcm_stop(chip, es); in snd_es1968_pcm_trigger()
1275 snd_es1968_bob_dec(chip); in snd_es1968_pcm_trigger()
1278 spin_unlock(&chip->substream_lock); in snd_es1968_pcm_trigger()
1284 struct es1968 *chip = snd_pcm_substream_chip(substream); in snd_es1968_pcm_pointer() local
1288 ptr = snd_es1968_get_dma_ptr(chip, es) << es->wav_shift; in snd_es1968_pcm_pointer()
1342 static int calc_available_memory_size(struct es1968 *chip) in calc_available_memory_size() argument
1347 mutex_lock(&chip->memory_mutex); in calc_available_memory_size()
1348 list_for_each_entry(buf, &chip->buf_list, list) { in calc_available_memory_size()
1352 mutex_unlock(&chip->memory_mutex); in calc_available_memory_size()
1359 static struct esm_memory *snd_es1968_new_memory(struct es1968 *chip, int size) in snd_es1968_new_memory() argument
1364 mutex_lock(&chip->memory_mutex); in snd_es1968_new_memory()
1365 list_for_each_entry(buf, &chip->buf_list, list) { in snd_es1968_new_memory()
1369 mutex_unlock(&chip->memory_mutex); in snd_es1968_new_memory()
1376 mutex_unlock(&chip->memory_mutex); in snd_es1968_new_memory()
1388 mutex_unlock(&chip->memory_mutex); in snd_es1968_new_memory()
1393 static void snd_es1968_free_memory(struct es1968 *chip, struct esm_memory *buf) in snd_es1968_free_memory() argument
1397 mutex_lock(&chip->memory_mutex); in snd_es1968_free_memory()
1399 if (buf->list.prev != &chip->buf_list) { in snd_es1968_free_memory()
1408 if (buf->list.next != &chip->buf_list) { in snd_es1968_free_memory()
1416 mutex_unlock(&chip->memory_mutex); in snd_es1968_free_memory()
1419 static void snd_es1968_free_dmabuf(struct es1968 *chip) in snd_es1968_free_dmabuf() argument
1423 if (! chip->dma.area) in snd_es1968_free_dmabuf()
1425 snd_dma_free_pages(&chip->dma); in snd_es1968_free_dmabuf()
1426 while ((p = chip->buf_list.next) != &chip->buf_list) { in snd_es1968_free_dmabuf()
1434 snd_es1968_init_dmabuf(struct es1968 *chip) in snd_es1968_init_dmabuf() argument
1439 chip->dma.dev.type = SNDRV_DMA_TYPE_DEV; in snd_es1968_init_dmabuf()
1440 chip->dma.dev.dev = snd_dma_pci_data(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()
1445 dev_err(chip->card->dev, in snd_es1968_init_dmabuf()
1447 chip->total_bufsize); in snd_es1968_init_dmabuf()
1450 if ((chip->dma.addr + chip->dma.bytes - 1) & ~((1 << 28) - 1)) { in snd_es1968_init_dmabuf()
1451 snd_dma_free_pages(&chip->dma); in snd_es1968_init_dmabuf()
1452 dev_err(chip->card->dev, "DMA buffer beyond 256MB.\n"); 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()
1493 dev_dbg(chip->card->dev, in snd_es1968_hw_params()
1504 struct es1968 *chip = snd_pcm_substream_chip(substream); in snd_es1968_hw_free() local
1512 snd_es1968_free_memory(chip, chan->memory); in snd_es1968_hw_free()
1522 static int snd_es1968_alloc_apu_pair(struct es1968 *chip, int type) in snd_es1968_alloc_apu_pair() argument
1527 if (chip->apu[apu] == ESM_APU_FREE && in snd_es1968_alloc_apu_pair()
1528 chip->apu[apu + 1] == ESM_APU_FREE) { in snd_es1968_alloc_apu_pair()
1529 chip->apu[apu] = chip->apu[apu + 1] = type; in snd_es1968_alloc_apu_pair()
1539 static void snd_es1968_free_apu_pair(struct es1968 *chip, int apu) in snd_es1968_free_apu_pair() argument
1541 chip->apu[apu] = chip->apu[apu + 1] = ESM_APU_FREE; in snd_es1968_free_apu_pair()
1551 struct es1968 *chip = snd_pcm_substream_chip(substream); in snd_es1968_playback_open() local
1557 apu1 = snd_es1968_alloc_apu_pair(chip, ESM_APU_PCM_PLAY); in snd_es1968_playback_open()
1563 snd_es1968_free_apu_pair(chip, apu1); in snd_es1968_playback_open()
1578 calc_available_memory_size(chip); in snd_es1968_playback_open()
1580 spin_lock_irq(&chip->substream_lock); in snd_es1968_playback_open()
1581 list_add(&es->list, &chip->substream_list); in snd_es1968_playback_open()
1582 spin_unlock_irq(&chip->substream_lock); in snd_es1968_playback_open()
1590 struct es1968 *chip = snd_pcm_substream_chip(substream); in snd_es1968_capture_open() local
1594 apu1 = snd_es1968_alloc_apu_pair(chip, ESM_APU_PCM_CAPTURE); in snd_es1968_capture_open()
1597 apu2 = snd_es1968_alloc_apu_pair(chip, ESM_APU_PCM_RATECONV); in snd_es1968_capture_open()
1599 snd_es1968_free_apu_pair(chip, apu1); in snd_es1968_capture_open()
1605 snd_es1968_free_apu_pair(chip, apu1); in snd_es1968_capture_open()
1606 snd_es1968_free_apu_pair(chip, apu2); in snd_es1968_capture_open()
1623 if ((es->mixbuf = snd_es1968_new_memory(chip, ESM_MIXBUF_SIZE)) == NULL) { in snd_es1968_capture_open()
1624 snd_es1968_free_apu_pair(chip, apu1); in snd_es1968_capture_open()
1625 snd_es1968_free_apu_pair(chip, apu2); in snd_es1968_capture_open()
1634 calc_available_memory_size(chip) - 1024; /* keep MIXBUF size */ in snd_es1968_capture_open()
1637 spin_lock_irq(&chip->substream_lock); in snd_es1968_capture_open()
1638 list_add(&es->list, &chip->substream_list); in snd_es1968_capture_open()
1639 spin_unlock_irq(&chip->substream_lock); in snd_es1968_capture_open()
1646 struct es1968 *chip = snd_pcm_substream_chip(substream); in snd_es1968_playback_close() local
1652 spin_lock_irq(&chip->substream_lock); in snd_es1968_playback_close()
1654 spin_unlock_irq(&chip->substream_lock); in snd_es1968_playback_close()
1655 snd_es1968_free_apu_pair(chip, es->apu[0]); in snd_es1968_playback_close()
1663 struct es1968 *chip = snd_pcm_substream_chip(substream); in snd_es1968_capture_close() local
1669 spin_lock_irq(&chip->substream_lock); in snd_es1968_capture_close()
1671 spin_unlock_irq(&chip->substream_lock); in snd_es1968_capture_close()
1672 snd_es1968_free_memory(chip, es->mixbuf); in snd_es1968_capture_close()
1673 snd_es1968_free_apu_pair(chip, es->apu[0]); in snd_es1968_capture_close()
1674 snd_es1968_free_apu_pair(chip, es->apu[2]); in snd_es1968_capture_close()
1708 static void es1968_measure_clock(struct es1968 *chip) in es1968_measure_clock() argument
1716 if (chip->clock == 0) in es1968_measure_clock()
1717 chip->clock = 48000; /* default clock value */ in es1968_measure_clock()
1720 if ((apu = snd_es1968_alloc_apu_pair(chip, ESM_APU_PCM_PLAY)) < 0) { in es1968_measure_clock()
1721 dev_err(chip->card->dev, "Hmm, cannot find empty APU pair!?\n"); in es1968_measure_clock()
1724 if ((memory = snd_es1968_new_memory(chip, CLOCK_MEASURE_BUFSIZE)) == NULL) { in es1968_measure_clock()
1725 dev_warn(chip->card->dev, in es1968_measure_clock()
1727 chip->clock); in es1968_measure_clock()
1728 snd_es1968_free_apu_pair(chip, apu); in es1968_measure_clock()
1734 wave_set_register(chip, apu << 3, (memory->buf.addr - 0x10) & 0xfff8); in es1968_measure_clock()
1736 pa = (unsigned int)((memory->buf.addr - chip->dma.addr) >> 1); in es1968_measure_clock()
1741 apu_set_register(chip, apu, i, 0x0000); in es1968_measure_clock()
1743 apu_set_register(chip, apu, 0, 0x400f); in es1968_measure_clock()
1744 apu_set_register(chip, apu, 4, ((pa >> 16) & 0xff) << 8); in es1968_measure_clock()
1745 apu_set_register(chip, apu, 5, pa & 0xffff); in es1968_measure_clock()
1746 apu_set_register(chip, apu, 6, (pa + CLOCK_MEASURE_BUFSIZE/2) & 0xffff); in es1968_measure_clock()
1747 apu_set_register(chip, apu, 7, CLOCK_MEASURE_BUFSIZE/2); in es1968_measure_clock()
1748 apu_set_register(chip, apu, 8, 0x0000); in es1968_measure_clock()
1749 apu_set_register(chip, apu, 9, 0xD000); in es1968_measure_clock()
1750 apu_set_register(chip, apu, 10, 0x8F08); in es1968_measure_clock()
1751 apu_set_register(chip, apu, 11, 0x0000); in es1968_measure_clock()
1752 spin_lock_irq(&chip->reg_lock); in es1968_measure_clock()
1753 outw(1, chip->io_port + 0x04); /* clear WP interrupts */ in es1968_measure_clock()
1754 …outw(inw(chip->io_port + ESM_PORT_HOST_IRQ) | ESM_HIRQ_DSIE, chip->io_port + ESM_PORT_HOST_IRQ); /… in es1968_measure_clock()
1755 spin_unlock_irq(&chip->reg_lock); in es1968_measure_clock()
1757 snd_es1968_apu_set_freq(chip, apu, ((unsigned int)48000 << 16) / chip->clock); /* 48000 Hz */ in es1968_measure_clock()
1759 chip->in_measurement = 1; in es1968_measure_clock()
1760 chip->measure_apu = apu; in es1968_measure_clock()
1761 spin_lock_irq(&chip->reg_lock); in es1968_measure_clock()
1762 snd_es1968_bob_inc(chip, ESM_BOB_FREQ); in es1968_measure_clock()
1763 __apu_set_register(chip, apu, 5, pa & 0xffff); in es1968_measure_clock()
1764 snd_es1968_trigger_apu(chip, apu, ESM_APU_16BITLINEAR); in es1968_measure_clock()
1766 spin_unlock_irq(&chip->reg_lock); in es1968_measure_clock()
1768 spin_lock_irq(&chip->reg_lock); in es1968_measure_clock()
1769 offset = __apu_get_register(chip, apu, 5); in es1968_measure_clock()
1771 snd_es1968_trigger_apu(chip, apu, 0); /* stop */ in es1968_measure_clock()
1772 snd_es1968_bob_dec(chip); in es1968_measure_clock()
1773 chip->in_measurement = 0; in es1968_measure_clock()
1774 spin_unlock_irq(&chip->reg_lock); in es1968_measure_clock()
1779 offset += chip->measure_count * (CLOCK_MEASURE_BUFSIZE/2); in es1968_measure_clock()
1784 dev_err(chip->card->dev, "?? calculation error..\n"); in es1968_measure_clock()
1790 chip->clock = (chip->clock * offset) / 48000; in es1968_measure_clock()
1792 dev_info(chip->card->dev, "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()
2112 dev_info(chip->card->dev, "trying software reset\n"); 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()
2387 struct es1968 *chip = card->private_data; in es1968_suspend() local
2389 if (! chip->do_pm) in es1968_suspend()
2392 chip->in_suspend = 1; in es1968_suspend()
2393 cancel_work_sync(&chip->hwvol_work); in es1968_suspend()
2395 snd_pcm_suspend_all(chip->pcm); in es1968_suspend()
2396 snd_ac97_suspend(chip->ac97); in es1968_suspend()
2397 snd_es1968_bob_stop(chip); in es1968_suspend()
2404 struct es1968 *chip = card->private_data; in es1968_resume() local
2407 if (! chip->do_pm) in es1968_resume()
2410 snd_es1968_chip_init(chip); in es1968_resume()
2413 if (chip->dma.addr) { in es1968_resume()
2415 wave_set_register(chip, 0x01FC, chip->dma.addr >> 12); in es1968_resume()
2418 snd_es1968_start_irq(chip); in es1968_resume()
2421 snd_ac97_resume(chip->ac97); in es1968_resume()
2423 list_for_each_entry(es, &chip->substream_list, list) { in es1968_resume()
2426 snd_es1968_playback_setup(chip, es, es->substream->runtime); in es1968_resume()
2429 snd_es1968_capture_setup(chip, es, es->substream->runtime); in es1968_resume()
2435 if (chip->bobclient) in es1968_resume()
2436 snd_es1968_bob_start(chip); in es1968_resume()
2439 chip->in_suspend = 0; in es1968_resume()
2451 static int snd_es1968_create_gameport(struct es1968 *chip, int dev) in snd_es1968_create_gameport() argument
2464 chip->gameport = gp = gameport_allocate_port(); in snd_es1968_create_gameport()
2466 dev_err(chip->card->dev, in snd_es1968_create_gameport()
2472 pci_read_config_word(chip->pci, ESM_LEGACY_AUDIO_CONTROL, &val); in snd_es1968_create_gameport()
2473 pci_write_config_word(chip->pci, ESM_LEGACY_AUDIO_CONTROL, val | 0x04); in snd_es1968_create_gameport()
2476 gameport_set_phys(gp, "pci%s/gameport0", pci_name(chip->pci)); in snd_es1968_create_gameport()
2477 gameport_set_dev_parent(gp, &chip->pci->dev); in snd_es1968_create_gameport()
2486 static void snd_es1968_free_gameport(struct es1968 *chip) in snd_es1968_free_gameport() argument
2488 if (chip->gameport) { in snd_es1968_free_gameport()
2489 struct resource *r = gameport_get_port_data(chip->gameport); in snd_es1968_free_gameport()
2491 gameport_unregister_port(chip->gameport); in snd_es1968_free_gameport()
2492 chip->gameport = NULL; in snd_es1968_free_gameport()
2498 static inline int snd_es1968_create_gameport(struct es1968 *chip, int dev) { return -ENOSYS; } in snd_es1968_create_gameport() argument
2499 static inline void snd_es1968_free_gameport(struct es1968 *chip) { } in snd_es1968_free_gameport() argument
2503 static int snd_es1968_input_register(struct es1968 *chip) in snd_es1968_input_register() argument
2512 snprintf(chip->phys, sizeof(chip->phys), "pci-%s/input0", in snd_es1968_input_register()
2513 pci_name(chip->pci)); in snd_es1968_input_register()
2515 input_dev->name = chip->card->driver; in snd_es1968_input_register()
2516 input_dev->phys = chip->phys; in snd_es1968_input_register()
2518 input_dev->id.vendor = chip->pci->vendor; in snd_es1968_input_register()
2519 input_dev->id.product = chip->pci->device; in snd_es1968_input_register()
2520 input_dev->dev.parent = &chip->pci->dev; in snd_es1968_input_register()
2533 chip->input_dev = input_dev; in snd_es1968_input_register()
2556 #define get_tea575x_gpio(chip) \ argument
2557 (&snd_es1968_tea575x_gpios[(chip)->tea575x_tuner])
2562 struct es1968 *chip = tea->private_data; in snd_es1968_tea575x_set_pins() local
2563 struct snd_es1968_tea575x_gpio gpio = *get_tea575x_gpio(chip); in snd_es1968_tea575x_set_pins()
2570 outw(val, chip->io_port + GPIO_DATA); in snd_es1968_tea575x_set_pins()
2575 struct es1968 *chip = tea->private_data; in snd_es1968_tea575x_get_pins() local
2576 struct snd_es1968_tea575x_gpio gpio = *get_tea575x_gpio(chip); in snd_es1968_tea575x_get_pins()
2577 u16 val = inw(chip->io_port + GPIO_DATA); in snd_es1968_tea575x_get_pins()
2590 struct es1968 *chip = tea->private_data; in snd_es1968_tea575x_set_direction() local
2591 unsigned long io = chip->io_port + GPIO_DATA; in snd_es1968_tea575x_set_direction()
2593 struct snd_es1968_tea575x_gpio gpio = *get_tea575x_gpio(chip); in snd_es1968_tea575x_set_direction()
2615 static int snd_es1968_free(struct es1968 *chip) in snd_es1968_free() argument
2617 cancel_work_sync(&chip->hwvol_work); in snd_es1968_free()
2619 if (chip->input_dev) in snd_es1968_free()
2620 input_unregister_device(chip->input_dev); in snd_es1968_free()
2623 if (chip->io_port) { in snd_es1968_free()
2624 if (chip->irq >= 0) in snd_es1968_free()
2625 synchronize_irq(chip->irq); in snd_es1968_free()
2626 outw(1, chip->io_port + 0x04); /* clear WP interrupts */ in snd_es1968_free()
2627 outw(0, chip->io_port + ESM_PORT_HOST_IRQ); /* disable IRQ */ in snd_es1968_free()
2631 snd_tea575x_exit(&chip->tea); in snd_es1968_free()
2632 v4l2_device_unregister(&chip->v4l2_dev); in snd_es1968_free()
2635 if (chip->irq >= 0) in snd_es1968_free()
2636 free_irq(chip->irq, chip); in snd_es1968_free()
2637 snd_es1968_free_gameport(chip); in snd_es1968_free()
2638 pci_release_regions(chip->pci); in snd_es1968_free()
2639 pci_disable_device(chip->pci); in snd_es1968_free()
2640 kfree(chip); in snd_es1968_free()
2646 struct es1968 *chip = device->device_data; in snd_es1968_dev_free() local
2647 return snd_es1968_free(chip); in snd_es1968_dev_free()
2683 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()
2774 if (chip->pci->subsystem_vendor != 0x125d) in snd_es1968_create()
2776 err = v4l2_device_register(&pci->dev, &chip->v4l2_dev); in snd_es1968_create()
2778 snd_es1968_free(chip); in snd_es1968_create()
2781 chip->tea.v4l2_dev = &chip->v4l2_dev; in snd_es1968_create()
2782 chip->tea.private_data = chip; in snd_es1968_create()
2783 chip->tea.radio_nr = radio_nr; in snd_es1968_create()
2784 chip->tea.ops = &snd_es1968_tea_ops; in snd_es1968_create()
2785 sprintf(chip->tea.bus_info, "PCI:%s", pci_name(pci)); in snd_es1968_create()
2787 chip->tea575x_tuner = i; in snd_es1968_create()
2788 if (!snd_tea575x_init(&chip->tea, THIS_MODULE)) { in snd_es1968_create()
2790 get_tea575x_gpio(chip)->name); in snd_es1968_create()
2791 strlcpy(chip->tea.card, get_tea575x_gpio(chip)->name, in snd_es1968_create()
2792 sizeof(chip->tea.card)); in snd_es1968_create()
2799 *chip_ret = chip; in snd_es1968_create()
2812 struct es1968 *chip; in snd_es1968_probe() local
2839 &chip)) < 0) { in snd_es1968_probe()
2843 card->private_data = chip; in snd_es1968_probe()
2845 switch (chip->type) { in snd_es1968_probe()
2860 if ((err = snd_es1968_pcm(chip, 0)) < 0) { in snd_es1968_probe()
2865 if ((err = snd_es1968_mixer(chip)) < 0) { in snd_es1968_probe()
2873 pci_read_config_word(chip->pci, PCI_SUBSYSTEM_VENDOR_ID, &vend); in snd_es1968_probe()
2875 if (chip->type == mpu_blacklist[i].type && in snd_es1968_probe()
2884 chip->io_port + ESM_MPU401_PORT, in snd_es1968_probe()
2887 -1, &chip->rmidi)) < 0) { in snd_es1968_probe()
2892 snd_es1968_create_gameport(chip, dev); in snd_es1968_probe()
2895 err = snd_es1968_input_register(chip); in snd_es1968_probe()
2901 snd_es1968_start_irq(chip); in snd_es1968_probe()
2903 chip->clock = clock[dev]; in snd_es1968_probe()
2904 if (! chip->clock) in snd_es1968_probe()
2905 es1968_measure_clock(chip); in snd_es1968_probe()
2908 card->shortname, chip->io_port, chip->irq); in snd_es1968_probe()