Lines Matching +full:pcm +full:- +full:interface +full:- +full:rate

1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
34 #include <dev/sound/pcm/sound.h>
35 #include <dev/sound/pcm/ac97.h>
41 /* -------------------------------------------------------------------- */
80 #define ICH_LOCK(sc) snd_mtxlock((sc)->ich_lock)
81 #define ICH_UNLOCK(sc) snd_mtxunlock((sc)->ich_lock)
82 #define ICH_LOCK_ASSERT(sc) snd_mtxassert((sc)->ich_lock)
145 "AMD-768" },
147 "AMD-8111" }
202 /* -------------------------------------------------------------------- */
211 /* -------------------------------------------------------------------- */
218 return (bus_space_read_1(sc->nabmbart, sc->nabmbarh, regno)); in ich_rd()
220 return (bus_space_read_2(sc->nabmbart, sc->nabmbarh, regno)); in ich_rd()
222 return (bus_space_read_4(sc->nabmbart, sc->nabmbarh, regno)); in ich_rd()
233 bus_space_write_1(sc->nabmbart, sc->nabmbarh, regno, data); in ich_wr()
236 bus_space_write_2(sc->nabmbart, sc->nabmbarh, regno, data); in ich_wr()
239 bus_space_write_4(sc->nabmbart, sc->nabmbarh, regno, data); in ich_wr()
258 if ((sc->flags & ICH_IGNORE_PCR) != 0) in ich_waitcd()
260 device_printf(sc->dev, "CODEC semaphore timeout\n"); in ich_waitcd()
272 return (bus_space_read_2(sc->nambart, sc->nambarh, regno)); in ich_rdcd()
282 bus_space_write_2(sc->nambart, sc->nambarh, regno, data); in ich_wrcd()
294 /* -------------------------------------------------------------------- */
300 struct sc_info *sc = ch->parent; in ich_filldtbl()
304 base = sndbuf_getbufaddr(ch->buffer); in ich_filldtbl()
305 if ((ch->blksz * ch->blkcnt) > sndbuf_getmaxsize(ch->buffer)) in ich_filldtbl()
306 ch->blksz = sndbuf_getmaxsize(ch->buffer) / ch->blkcnt; in ich_filldtbl()
307 if ((sndbuf_getblksz(ch->buffer) != ch->blksz || in ich_filldtbl()
308 sndbuf_getblkcnt(ch->buffer) != ch->blkcnt) && in ich_filldtbl()
309 sndbuf_resize(ch->buffer, ch->blkcnt, ch->blksz) != 0) in ich_filldtbl()
310 device_printf(sc->dev, "%s: failed blksz=%u blkcnt=%u\n", in ich_filldtbl()
311 __func__, ch->blksz, ch->blkcnt); in ich_filldtbl()
312 ch->blksz = sndbuf_getblksz(ch->buffer); in ich_filldtbl()
315 ch->dtbl[i].buffer = base + (ch->blksz * (i % ch->blkcnt)); in ich_filldtbl()
316 ch->dtbl[i].length = ICH_BDC_IOC in ich_filldtbl()
317 | (ch->blksz / ch->parent->sample_size); in ich_filldtbl()
350 if (sc->flags & ICH_IGNORE_RESET) in ich_resetchan()
353 else if (sc->vendor == NVIDIA_VENDORID) { in ich_resetchan()
354 sc->flags |= ICH_IGNORE_RESET; in ich_resetchan()
355 device_printf(sc->dev, "ignoring reset failure!\n"); in ich_resetchan()
360 device_printf(sc->dev, "cannot reset channel %d\n", num); in ich_resetchan()
364 /* -------------------------------------------------------------------- */
365 /* channel interface */
375 num = sc->chnum++; in ichchan_init()
376 ch = &sc->ch[num]; in ichchan_init()
377 ch->num = num; in ichchan_init()
378 ch->buffer = b; in ichchan_init()
379 ch->channel = c; in ichchan_init()
380 ch->parent = sc; in ichchan_init()
381 ch->run = 0; in ichchan_init()
382 ch->dtbl = sc->dtbl + (ch->num * ICH_DTBL_LENGTH); in ichchan_init()
383 ch->desc_addr = sc->desc_addr + in ichchan_init()
384 (ch->num * ICH_DTBL_LENGTH * sizeof(struct ich_desc)); in ichchan_init()
385 ch->blkcnt = sc->blkcnt; in ichchan_init()
386 ch->blksz = sc->bufsz / ch->blkcnt; in ichchan_init()
388 switch(ch->num) { in ichchan_init()
391 ch->regbase = ICH_REG_PO_BASE; in ichchan_init()
392 ch->spdreg = (sc->hasvra) ? AC97_REGEXT_FDACRATE : 0; in ichchan_init()
393 ch->imask = ICH_GLOB_STA_POINT; in ichchan_init()
398 ch->regbase = ICH_REG_PI_BASE; in ichchan_init()
399 ch->spdreg = (sc->hasvra) ? AC97_REGEXT_LADCRATE : 0; in ichchan_init()
400 ch->imask = ICH_GLOB_STA_PIINT; in ichchan_init()
405 ch->regbase = ICH_REG_MC_BASE; in ichchan_init()
406 ch->spdreg = (sc->hasvrm) ? AC97_REGEXT_MADCRATE : 0; in ichchan_init()
407 ch->imask = ICH_GLOB_STA_MINT; in ichchan_init()
414 if (sc->flags & ICH_FIXED_RATE) in ichchan_init()
415 ch->spdreg = 0; in ichchan_init()
418 if (sndbuf_alloc(ch->buffer, sc->chan_dmat, in ichchan_init()
419 ((sc->flags & ICH_DMA_NOCACHE) ? BUS_DMA_NOCACHE : 0), in ichchan_init()
420 sc->bufsz) != 0) in ichchan_init()
424 ich_wr(sc, ch->regbase + ICH_REG_X_BDBAR, (uint32_t)(ch->desc_addr), 4); in ichchan_init()
436 struct sc_info *sc = ch->parent; in ichchan_setformat()
437 if (!(sc->flags & ICH_CALIBRATE_DONE)) in ichchan_setformat()
438 device_printf(sc->dev, in ichchan_setformat()
450 struct sc_info *sc = ch->parent; in ichchan_setspeed()
453 if (!(sc->flags & ICH_CALIBRATE_DONE)) in ichchan_setspeed()
454 device_printf(sc->dev, in ichchan_setspeed()
459 if (ch->spdreg) { in ichchan_setspeed()
463 if (sc->ac97rate <= 32000 || sc->ac97rate >= 64000) in ichchan_setspeed()
464 sc->ac97rate = 48000; in ichchan_setspeed()
465 ac97rate = sc->ac97rate; in ichchan_setspeed()
472 ch->spd = ((uint64_t)ac97_setrate(sc->codec, ch->spdreg, r) * in ichchan_setspeed()
475 ch->spd = 48000; in ichchan_setspeed()
477 return (ch->spd); in ichchan_setspeed()
484 struct sc_info *sc = ch->parent; in ichchan_setblocksize()
487 if (!(sc->flags & ICH_CALIBRATE_DONE)) in ichchan_setblocksize()
488 device_printf(sc->dev, in ichchan_setblocksize()
493 if (sc->flags & ICH_HIGH_LATENCY) in ichchan_setblocksize()
494 blocksize = sndbuf_getmaxsize(ch->buffer) / ch->blkcnt; in ichchan_setblocksize()
498 blocksize &= ~(ICH_MIN_BLKSZ - 1); in ichchan_setblocksize()
499 ch->blksz = blocksize; in ichchan_setblocksize()
502 ich_wr(sc, ch->regbase + ICH_REG_X_LVI, ch->blkcnt - 1, 1); in ichchan_setblocksize()
505 return (ch->blksz); in ichchan_setblocksize()
512 struct sc_info *sc = ch->parent; in ichchan_trigger()
515 if (!(sc->flags & ICH_CALIBRATE_DONE)) in ichchan_trigger()
516 device_printf(sc->dev, in ichchan_trigger()
523 ch->run = 1; in ichchan_trigger()
525 ich_wr(sc, ch->regbase + ICH_REG_X_BDBAR, (uint32_t)(ch->desc_addr), 4); in ichchan_trigger()
526 ich_wr(sc, ch->regbase + ICH_REG_X_CR, ICH_X_CR_RPBM | ICH_X_CR_LVBIE | ICH_X_CR_IOCE, 1); in ichchan_trigger()
532 ich_resetchan(sc, ch->num); in ichchan_trigger()
534 ch->run = 0; in ichchan_trigger()
546 struct sc_info *sc = ch->parent; in ichchan_getptr()
550 if (!(sc->flags & ICH_CALIBRATE_DONE)) in ichchan_getptr()
551 device_printf(sc->dev, in ichchan_getptr()
557 ch->civ = ich_rd(sc, ch->regbase + ICH_REG_X_CIV, 1) % ch->blkcnt; in ichchan_getptr()
560 pos = ch->civ * ch->blksz; in ichchan_getptr()
571 struct sc_info *sc = ch->parent; in ichchan_getcaps()
573 if (!(sc->flags & ICH_CALIBRATE_DONE)) in ichchan_getcaps()
574 device_printf(ch->parent->dev, in ichchan_getcaps()
579 return ((ch->spdreg) ? &ich_vrcaps : &ich_caps); in ichchan_getcaps()
594 /* -------------------------------------------------------------------- */
608 if (!(sc->flags & ICH_CALIBRATE_DONE)) in ich_intr()
609 device_printf(sc->dev, in ich_intr()
616 /* Clear resume interrupt(s) - nothing doing with them */ in ich_intr()
622 ch = &sc->ch[i]; in ich_intr()
623 if ((ch->imask & gs) == 0) in ich_intr()
625 gs &= ~ch->imask; in ich_intr()
626 st = ich_rd(sc, ch->regbase + in ich_intr()
627 ((sc->swap_reg) ? ICH_REG_X_PICB : ICH_REG_X_SR), in ich_intr()
631 /* block complete - update buffer */ in ich_intr()
632 if (ch->run) { in ich_intr()
634 chn_intr(ch->channel); in ich_intr()
637 lvi = ich_rd(sc, ch->regbase + ICH_REG_X_LVI, 1); in ich_intr()
638 cbi = ch->civ % ch->blkcnt; in ich_intr()
640 cbi = ch->blkcnt - 1; in ich_intr()
642 cbi--; in ich_intr()
643 lbi = lvi % ch->blkcnt; in ich_intr()
645 lvi += cbi - lbi; in ich_intr()
647 lvi += cbi + ch->blkcnt - lbi; in ich_intr()
649 ich_wr(sc, ch->regbase + ICH_REG_X_LVI, lvi, 1); in ich_intr()
652 ich_wr(sc, ch->regbase + in ich_intr()
653 ((sc->swap_reg) ? ICH_REG_X_PICB : ICH_REG_X_SR), in ich_intr()
658 device_printf(sc->dev, in ich_intr()
663 /* ------------------------------------------------------------------------- */
671 /* XXX: this should move to a device specific sysctl "dev.pcm.X.yyy" in ich_initsys()
672 via device_get_sysctl_*() as discussed on multimedia@ in msg-id in ich_initsys()
674 SYSCTL_ADD_INT(device_get_sysctl_ctx(sc->dev), in ich_initsys()
675 SYSCTL_CHILDREN(device_get_sysctl_tree(sc->dev)), in ich_initsys()
677 &sc->ac97rate, 48000, in ich_initsys()
678 "AC97 link rate (default = 48000)"); in ich_initsys()
690 rman_get_start(sc->nambar), rman_get_start(sc->nabmbar), in ich_setstatus()
691 rman_get_start(sc->irq), in ich_setstatus()
692 device_get_nameunit(device_get_parent(sc->dev))); in ich_setstatus()
694 if (bootverbose && (sc->flags & ICH_DMA_NOCACHE)) in ich_setstatus()
695 device_printf(sc->dev, in ich_setstatus()
698 pcm_register(sc->dev, status); in ich_setstatus()
701 /* -------------------------------------------------------------------- */
717 ch = &sc->ch[1]; in ich_calibrate()
719 if (sc->intrhook.ich_func != NULL) { in ich_calibrate()
720 config_intrhook_disestablish(&sc->intrhook); in ich_calibrate()
721 sc->intrhook.ich_func = NULL; in ich_calibrate()
731 KASSERT(ch->regbase == ICH_REG_PI_BASE, ("wrong direction")); in ich_calibrate()
733 oblkcnt = ch->blkcnt; in ich_calibrate()
734 ch->blkcnt = 2; in ich_calibrate()
735 sc->flags |= ICH_CALIBRATE_DONE; in ich_calibrate()
737 ichchan_setblocksize(0, ch, sndbuf_getmaxsize(ch->buffer) >> 1); in ich_calibrate()
739 sc->flags &= ~ICH_CALIBRATE_DONE; in ich_calibrate()
746 * we know the time in microseconds, we calculate the sample rate: in ich_calibrate()
754 ociv = ich_rd(sc, ch->regbase + ICH_REG_X_CIV, 1); in ich_calibrate()
756 ich_wr(sc, ch->regbase + ICH_REG_X_BDBAR, (uint32_t)(ch->desc_addr), 4); in ich_calibrate()
760 ich_wr(sc, ch->regbase + ICH_REG_X_CR, ICH_X_CR_RPBM, 1); in ich_calibrate()
765 if (t2.tv_sec - t1.tv_sec > 1) in ich_calibrate()
767 nciv = ich_rd(sc, ch->regbase + ICH_REG_X_CIV, 1); in ich_calibrate()
771 ich_wr(sc, ch->regbase + ICH_REG_X_CR, 0, 1); in ich_calibrate()
775 ich_wr(sc, ch->regbase + ICH_REG_X_CR, ICH_X_CR_RR, 1); in ich_calibrate()
776 ch->blkcnt = oblkcnt; in ich_calibrate()
779 wait_us = ((t2.tv_sec - t1.tv_sec) * 1000000) + t2.tv_usec - t1.tv_usec; in ich_calibrate()
782 device_printf(sc->dev, "ac97 link rate calibration timed out after %d us\n", wait_us); in ich_calibrate()
783 sc->flags |= ICH_CALIBRATE_DONE; in ich_calibrate()
791 actual_48k_rate = ((uint64_t)ch->blksz * 250000) / wait_us; in ich_calibrate()
796 sc->ac97rate = actual_48k_rate; in ich_calibrate()
798 sc->ac97rate = 48000; in ich_calibrate()
801 if (bootverbose || sc->ac97rate != 48000) { in ich_calibrate()
802 device_printf(sc->dev, "measured ac97 link rate at %d Hz", actual_48k_rate); in ich_calibrate()
803 if (sc->ac97rate != actual_48k_rate) in ich_calibrate()
804 printf(", will use %d Hz", sc->ac97rate); in ich_calibrate()
807 sc->flags |= ICH_CALIBRATE_DONE; in ich_calibrate()
815 /* -------------------------------------------------------------------- */
822 sc->desc_addr = segs->ds_addr; in ich_setmap()
837 if (sc->vendor == INTEL_VENDORID && ( in ich_init()
838 sc->devid == INTEL_82801DB || sc->devid == INTEL_82801EB || in ich_init()
839 sc->devid == INTEL_6300ESB || sc->devid == INTEL_82801FB || in ich_init()
840 sc->devid == INTEL_82801GB)) { in ich_init()
841 sc->flags |= ICH_IGNORE_PCR; in ich_init()
842 device_printf(sc->dev, "primary codec not ready!\n"); in ich_init()
854 if (sc->hasmic && ich_resetchan(sc, 2)) in ich_init()
891 sc->ich_lock = snd_mtxcreate(device_get_nameunit(dev), "snd_ich softc"); in ich_pci_attach()
892 sc->dev = dev; in ich_pci_attach()
894 vendor = sc->vendor = pci_get_vendor(dev); in ich_pci_attach()
895 devid = sc->devid = pci_get_device(dev); in ich_pci_attach()
902 sc->swap_reg = 1; in ich_pci_attach()
903 sc->sample_size = 1; in ich_pci_attach()
905 sc->swap_reg = 0; in ich_pci_attach()
906 sc->sample_size = 2; in ich_pci_attach()
911 * - AC97 Soft Audio and Soft Modem Master Abort Errata in ich_pci_attach()
916 sc->flags |= ICH_DMA_NOCACHE; in ich_pci_attach()
926 * read-only. Need to enable "legacy support", by poking into in ich_pci_attach()
934 sc->nambarid = PCIR_MMBAR; in ich_pci_attach()
935 sc->nabmbarid = PCIR_MBBAR; in ich_pci_attach()
936 sc->regtype = SYS_RES_MEMORY; in ich_pci_attach()
939 sc->nambarid = PCIR_NAMBAR; in ich_pci_attach()
940 sc->nabmbarid = PCIR_NABMBAR; in ich_pci_attach()
941 sc->regtype = SYS_RES_IOPORT; in ich_pci_attach()
944 sc->nambar = bus_alloc_resource_any(dev, sc->regtype, in ich_pci_attach()
945 &sc->nambarid, RF_ACTIVE); in ich_pci_attach()
946 sc->nabmbar = bus_alloc_resource_any(dev, sc->regtype, in ich_pci_attach()
947 &sc->nabmbarid, RF_ACTIVE); in ich_pci_attach()
949 if (!sc->nambar || !sc->nabmbar) { in ich_pci_attach()
954 sc->nambart = rman_get_bustag(sc->nambar); in ich_pci_attach()
955 sc->nambarh = rman_get_bushandle(sc->nambar); in ich_pci_attach()
956 sc->nabmbart = rman_get_bustag(sc->nabmbar); in ich_pci_attach()
957 sc->nabmbarh = rman_get_bushandle(sc->nabmbar); in ich_pci_attach()
959 sc->bufsz = pcm_getbuffersize(dev, in ich_pci_attach()
964 sc->blkcnt = sc->bufsz / i; in ich_pci_attach()
966 while (sc->blkcnt >> i) in ich_pci_attach()
968 sc->blkcnt = 1 << (i - 1); in ich_pci_attach()
969 if (sc->blkcnt < ICH_MIN_BLKCNT) in ich_pci_attach()
970 sc->blkcnt = ICH_MIN_BLKCNT; in ich_pci_attach()
971 else if (sc->blkcnt > ICH_MAX_BLKCNT) in ich_pci_attach()
972 sc->blkcnt = ICH_MAX_BLKCNT; in ich_pci_attach()
974 sc->blkcnt = ICH_DEFAULT_BLKCNT; in ich_pci_attach()
978 sc->flags |= ICH_HIGH_LATENCY; in ich_pci_attach()
979 sc->blkcnt = ICH_MIN_BLKCNT; in ich_pci_attach()
984 sc->flags |= ICH_FIXED_RATE; in ich_pci_attach()
988 sc->hasmic = 1; in ich_pci_attach()
990 sc->irqid = 0; in ich_pci_attach()
991 sc->irq = bus_alloc_resource_any(dev, SYS_RES_IRQ, &sc->irqid, in ich_pci_attach()
993 if (!sc->irq || snd_setup_intr(dev, sc->irq, INTR_MPSAFE, ich_intr, in ich_pci_attach()
994 sc, &sc->ih)) { in ich_pci_attach()
1004 sc->codec = AC97_CREATE(dev, sc, ich_ac97); in ich_pci_attach()
1005 if (sc->codec == NULL) in ich_pci_attach()
1016 case 0x204c161f: /* Kvazar-Micro Senator 3592XT */ in ich_pci_attach()
1017 case 0x8144104d: /* Sony VAIO PCG-TR* */ in ich_pci_attach()
1025 ac97_setflags(sc->codec, ac97_getflags(sc->codec) | AC97_F_EAPD_INV); in ich_pci_attach()
1031 mixer_init(dev, ac97_getmixerclass(), sc->codec); in ich_pci_attach()
1034 extcaps = ac97_getextcaps(sc->codec); in ich_pci_attach()
1035 sc->hasvra = extcaps & AC97_EXTCAP_VRA; in ich_pci_attach()
1036 sc->hasvrm = extcaps & AC97_EXTCAP_VRM; in ich_pci_attach()
1037 sc->hasmic = (sc->hasmic != 0 && in ich_pci_attach()
1038 (ac97_getcaps(sc->codec) & AC97_CAP_MICCHANNEL)) ? 1 : 0; in ich_pci_attach()
1039 ac97_setextmode(sc->codec, sc->hasvra | sc->hasvrm); in ich_pci_attach()
1041 sc->dtbl_size = sizeof(struct ich_desc) * ICH_DTBL_LENGTH * in ich_pci_attach()
1042 ((sc->hasmic) ? 3 : 2); in ich_pci_attach()
1047 sc->dtbl_size, 1, 0x3ffff, 0, NULL, NULL, &sc->dmat) != 0) { in ich_pci_attach()
1052 /* PCM channel tag */ in ich_pci_attach()
1055 sc->bufsz, 1, 0x3ffff, 0, NULL, NULL, &sc->chan_dmat) != 0) { in ich_pci_attach()
1060 if (bus_dmamem_alloc(sc->dmat, (void **)&sc->dtbl, BUS_DMA_NOWAIT | in ich_pci_attach()
1061 ((sc->flags & ICH_DMA_NOCACHE) ? BUS_DMA_NOCACHE : 0), in ich_pci_attach()
1062 &sc->dtmap)) in ich_pci_attach()
1065 if (bus_dmamap_load(sc->dmat, sc->dtmap, sc->dtbl, sc->dtbl_size, in ich_pci_attach()
1073 if (sc->hasmic) in ich_pci_attach()
1076 if (sc->flags & ICH_FIXED_RATE) { in ich_pci_attach()
1077 sc->flags |= ICH_CALIBRATE_DONE; in ich_pci_attach()
1082 sc->intrhook.ich_func = ich_calibrate; in ich_pci_attach()
1083 sc->intrhook.ich_arg = sc; in ich_pci_attach()
1085 config_intrhook_establish(&sc->intrhook) != 0) { in ich_pci_attach()
1086 sc->intrhook.ich_func = NULL; in ich_pci_attach()
1094 if (sc->codec) in ich_pci_attach()
1095 ac97_destroy(sc->codec); in ich_pci_attach()
1096 if (sc->ih) in ich_pci_attach()
1097 bus_teardown_intr(dev, sc->irq, sc->ih); in ich_pci_attach()
1098 if (sc->irq) in ich_pci_attach()
1099 bus_release_resource(dev, SYS_RES_IRQ, sc->irqid, sc->irq); in ich_pci_attach()
1100 if (sc->nambar) in ich_pci_attach()
1101 bus_release_resource(dev, sc->regtype, in ich_pci_attach()
1102 sc->nambarid, sc->nambar); in ich_pci_attach()
1103 if (sc->nabmbar) in ich_pci_attach()
1104 bus_release_resource(dev, sc->regtype, in ich_pci_attach()
1105 sc->nabmbarid, sc->nabmbar); in ich_pci_attach()
1106 if (sc->dtmap) in ich_pci_attach()
1107 bus_dmamap_unload(sc->dmat, sc->dtmap); in ich_pci_attach()
1108 if (sc->dtbl) in ich_pci_attach()
1109 bus_dmamem_free(sc->dmat, sc->dtbl, sc->dtmap); in ich_pci_attach()
1110 if (sc->chan_dmat) in ich_pci_attach()
1111 bus_dma_tag_destroy(sc->chan_dmat); in ich_pci_attach()
1112 if (sc->dmat) in ich_pci_attach()
1113 bus_dma_tag_destroy(sc->dmat); in ich_pci_attach()
1114 if (sc->ich_lock) in ich_pci_attach()
1115 snd_mtxfree(sc->ich_lock); in ich_pci_attach()
1131 bus_teardown_intr(dev, sc->irq, sc->ih); in ich_pci_detach()
1132 bus_release_resource(dev, SYS_RES_IRQ, sc->irqid, sc->irq); in ich_pci_detach()
1133 bus_release_resource(dev, sc->regtype, sc->nambarid, sc->nambar); in ich_pci_detach()
1134 bus_release_resource(dev, sc->regtype, sc->nabmbarid, sc->nabmbar); in ich_pci_detach()
1135 bus_dmamap_unload(sc->dmat, sc->dtmap); in ich_pci_detach()
1136 bus_dmamem_free(sc->dmat, sc->dtbl, sc->dtmap); in ich_pci_detach()
1137 bus_dma_tag_destroy(sc->chan_dmat); in ich_pci_detach()
1138 bus_dma_tag_destroy(sc->dmat); in ich_pci_detach()
1139 snd_mtxfree(sc->ich_lock); in ich_pci_detach()
1156 for (i = 500000; i; i--) { in ich_pci_codec_reset()
1175 sc->ch[i].run_save = sc->ch[i].run; in ich_pci_suspend()
1176 if (sc->ch[i].run) { in ich_pci_suspend()
1178 ichchan_trigger(0, &sc->ch[i], PCMTRIG_ABORT); in ich_pci_suspend()
1205 ac97_setextmode(sc->codec, sc->hasvra | sc->hasvrm); in ich_pci_resume()
1206 if (mixer_reinit(dev) == -1) { in ich_pci_resume()
1210 /* Re-start DMA engines */ in ich_pci_resume()
1212 struct sc_chinfo *ch = &sc->ch[i]; in ich_pci_resume()
1213 if (sc->ch[i].run_save) { in ich_pci_resume()
1214 ichchan_setblocksize(0, ch, ch->blksz); in ich_pci_resume()
1215 ichchan_setspeed(0, ch, ch->spd); in ich_pci_resume()
1223 /* Device interface */
1233 "pcm",