Lines Matching defs:sis

294 	struct sis7019 *sis = dev;
295 unsigned long io = sis->ioport;
314 sis_voice_irq(status, sis->voices);
320 sis_voice_irq(status, &sis->voices[32]);
326 voice = &sis->capture_voice;
365 static void __sis_map_silence(struct sis7019 *sis)
367 /* Helper function: must hold sis->voice_lock on entry */
368 if (!sis->silence_users)
369 sis->silence_dma_addr = dma_map_single(&sis->pci->dev,
370 sis->suspend_state[0],
372 sis->silence_users++;
375 static void __sis_unmap_silence(struct sis7019 *sis)
377 /* Helper function: must hold sis->voice_lock on entry */
378 sis->silence_users--;
379 if (!sis->silence_users)
380 dma_unmap_single(&sis->pci->dev, sis->silence_dma_addr, 4096,
384 static void sis_free_voice(struct sis7019 *sis, struct voice *voice)
388 spin_lock_irqsave(&sis->voice_lock, flags);
390 __sis_unmap_silence(sis);
396 spin_unlock_irqrestore(&sis->voice_lock, flags);
399 static struct voice *__sis_alloc_playback_voice(struct sis7019 *sis)
406 voice = &sis->voices[i];
418 static struct voice *sis_alloc_playback_voice(struct sis7019 *sis)
423 spin_lock_irqsave(&sis->voice_lock, flags);
424 voice = __sis_alloc_playback_voice(sis);
425 spin_unlock_irqrestore(&sis->voice_lock, flags);
433 struct sis7019 *sis = snd_pcm_substream_chip(substream);
450 spin_lock_irqsave(&sis->voice_lock, flags);
451 voice->timing = __sis_alloc_playback_voice(sis);
453 __sis_map_silence(sis);
454 spin_unlock_irqrestore(&sis->voice_lock, flags);
459 sis_free_voice(sis, voice);
468 struct sis7019 *sis = snd_pcm_substream_chip(substream);
472 voice = sis_alloc_playback_voice(sis);
489 struct sis7019 *sis = snd_pcm_substream_chip(substream);
493 sis_free_voice(sis, voice);
565 struct sis7019 *sis = snd_pcm_substream_chip(substream);
566 unsigned long io = sis->ioport;
596 if (chip != sis)
645 struct sis7019 *sis = snd_pcm_substream_chip(substream);
647 struct voice *voice = &sis->capture_voice;
653 spin_lock_irqsave(&sis->voice_lock, flags);
658 spin_unlock_irqrestore(&sis->voice_lock, flags);
666 runtime->hw.rates = sis->ac97[0]->rates[AC97_RATES_ADC];
679 struct sis7019 *sis = snd_pcm_substream_chip(substream);
682 rc = snd_ac97_set_rate(sis->ac97[0], AC97_PCM_LR_ADC_RATE,
696 struct sis7019 *sis = snd_pcm_substream_chip(substream);
781 writel(sis->silence_dma_addr, play_base + SIS_PLAY_DMA_BASE);
858 static int sis_pcm_create(struct sis7019 *sis)
866 rc = snd_pcm_new(sis->card, "SiS7019", 0, 64, 1, &pcm);
870 pcm->private_data = sis;
872 sis->pcm = pcm;
881 &sis->pci->dev, 64*1024, 128*1024);
886 static unsigned short sis_ac97_rw(struct sis7019 *sis, int codec, u32 cmd)
888 unsigned long io = sis->ioport;
905 mutex_lock(&sis->ac97_mutex);
944 mutex_unlock(&sis->ac97_mutex);
947 dev_err(&sis->pci->dev, "ac97 codec %d timeout cmd 0x%08x\n",
977 static int sis_mixer_create(struct sis7019 *sis)
988 ac97.private_data = sis;
990 rc = snd_ac97_bus(sis->card, 0, &ops, NULL, &bus);
991 if (!rc && sis->codecs_present & SIS_PRIMARY_CODEC_PRESENT)
992 rc = snd_ac97_mixer(bus, &ac97, &sis->ac97[0]);
994 if (!rc && (sis->codecs_present & SIS_SECONDARY_CODEC_PRESENT))
995 rc = snd_ac97_mixer(bus, &ac97, &sis->ac97[1]);
997 if (!rc && (sis->codecs_present & SIS_TERTIARY_CODEC_PRESENT))
998 rc = snd_ac97_mixer(bus, &ac97, &sis->ac97[2]);
1008 struct sis7019 *sis = card->private_data;
1012 outl(SIS_GCR_SOFTWARE_RESET, sis->ioport + SIS_GCR);
1014 outl(0, sis->ioport + SIS_GCR);
1015 outl(0, sis->ioport + SIS_GIER);
1019 if (sis->irq >= 0)
1020 free_irq(sis->irq, sis);
1023 static int sis_chip_init(struct sis7019 *sis)
1025 unsigned long io = sis->ioport;
1026 void __iomem *ioaddr = sis->ioaddr;
1065 sis->codecs_present = 0;
1070 sis->codecs_present |= SIS_PRIMARY_CODEC_PRESENT;
1072 sis->codecs_present |= SIS_SECONDARY_CODEC_PRESENT;
1074 sis->codecs_present |= SIS_TERTIARY_CODEC_PRESENT;
1076 if (sis->codecs_present == codecs)
1084 if (!sis->codecs_present) {
1085 dev_err(&sis->pci->dev, "could not find any codecs\n");
1089 if (sis->codecs_present != codecs) {
1090 dev_warn(&sis->pci->dev, "missing codecs, found %0x, expected %0x\n",
1091 sis->codecs_present, codecs);
1154 struct sis7019 *sis = card->private_data;
1155 void __iomem *ioaddr = sis->ioaddr;
1159 if (sis->codecs_present & SIS_PRIMARY_CODEC_PRESENT)
1160 snd_ac97_suspend(sis->ac97[0]);
1161 if (sis->codecs_present & SIS_SECONDARY_CODEC_PRESENT)
1162 snd_ac97_suspend(sis->ac97[1]);
1163 if (sis->codecs_present & SIS_TERTIARY_CODEC_PRESENT)
1164 snd_ac97_suspend(sis->ac97[2]);
1168 if (sis->irq >= 0) {
1169 free_irq(sis->irq, sis);
1170 sis->irq = -1;
1176 memcpy_fromio(sis->suspend_state[i], ioaddr, 4096);
1187 struct sis7019 *sis = card->private_data;
1188 void __iomem *ioaddr = sis->ioaddr;
1191 if (sis_chip_init(sis)) {
1197 KBUILD_MODNAME, sis)) {
1206 memcpy_toio(ioaddr, sis->suspend_state[i], 4096);
1210 memset(sis->suspend_state[0], 0, 4096);
1212 sis->irq = pci->irq;
1214 if (sis->codecs_present & SIS_PRIMARY_CODEC_PRESENT)
1215 snd_ac97_resume(sis->ac97[0]);
1216 if (sis->codecs_present & SIS_SECONDARY_CODEC_PRESENT)
1217 snd_ac97_resume(sis->ac97[1]);
1218 if (sis->codecs_present & SIS_TERTIARY_CODEC_PRESENT)
1219 snd_ac97_resume(sis->ac97[2]);
1231 static int sis_alloc_suspend(struct sis7019 *sis)
1241 sis->suspend_state[i] = devm_kmalloc(&sis->pci->dev, 4096,
1243 if (!sis->suspend_state[i])
1246 memset(sis->suspend_state[0], 0, 4096);
1254 struct sis7019 *sis = card->private_data;
1269 mutex_init(&sis->ac97_mutex);
1270 spin_lock_init(&sis->voice_lock);
1271 sis->card = card;
1272 sis->pci = pci;
1273 sis->irq = -1;
1274 sis->ioport = pci_resource_start(pci, 0);
1282 sis->ioaddr = devm_ioremap(&pci->dev, pci_resource_start(pci, 1), 0x4000);
1283 if (!sis->ioaddr) {
1288 rc = sis_alloc_suspend(sis);
1294 rc = sis_chip_init(sis);
1300 sis);
1302 dev_err(&pci->dev, "unable to allocate irq %d\n", sis->irq);
1306 sis->irq = pci->irq;
1307 card->sync_irq = sis->irq;
1311 voice = &sis->voices[i];
1313 voice->ctrl_base = SIS_PLAY_DMA_ADDR(sis->ioaddr, i);
1314 voice->wave_base = SIS_WAVE_ADDR(sis->ioaddr, i);
1317 voice = &sis->capture_voice;
1320 voice->ctrl_base = SIS_CAPTURE_DMA_ADDR(sis->ioaddr, voice->num);
1329 struct sis7019 *sis;
1347 sizeof(*sis), &card);
1357 sis = card->private_data;
1359 rc = sis_mixer_create(sis);
1363 rc = sis_pcm_create(sis);
1369 card->shortname, snd_ac97_get_short_name(sis->ac97[0]),
1370 sis->ioport, sis->irq);