aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/sound/pci/atiixp.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/sound/pci/atiixp.c')
-rw-r--r--sys/dev/sound/pci/atiixp.c43
1 files changed, 20 insertions, 23 deletions
diff --git a/sys/dev/sound/pci/atiixp.c b/sys/dev/sound/pci/atiixp.c
index 90e5742e6523..12906ecc6253 100644
--- a/sys/dev/sound/pci/atiixp.c
+++ b/sys/dev/sound/pci/atiixp.c
@@ -129,7 +129,7 @@ struct atiixp_info {
uint32_t blkcnt;
int registered_channels;
- struct mtx *lock;
+ struct mtx lock;
struct callout poll_timer;
int poll_ticks, polling;
};
@@ -139,9 +139,9 @@ struct atiixp_info {
#define atiixp_wr(_sc, _reg, _val) \
bus_space_write_4((_sc)->st, (_sc)->sh, _reg, _val)
-#define atiixp_lock(_sc) snd_mtxlock((_sc)->lock)
-#define atiixp_unlock(_sc) snd_mtxunlock((_sc)->lock)
-#define atiixp_assert(_sc) snd_mtxassert((_sc)->lock)
+#define atiixp_lock(_sc) mtx_lock(&(_sc)->lock)
+#define atiixp_unlock(_sc) mtx_unlock(&(_sc)->lock)
+#define atiixp_assert(_sc) mtx_assert(&(_sc)->lock, MA_OWNED)
static uint32_t atiixp_fmt_32bit[] = {
SND_FORMAT(AFMT_S16_LE, 2, 0),
@@ -535,8 +535,8 @@ atiixp_chan_setfragments(kobj_t obj, void *data,
blksz &= ATI_IXP_BLK_ALIGN;
- if (blksz > (sndbuf_getmaxsize(ch->buffer) / ATI_IXP_DMA_CHSEGS_MIN))
- blksz = sndbuf_getmaxsize(ch->buffer) / ATI_IXP_DMA_CHSEGS_MIN;
+ if (blksz > (ch->buffer->maxsize / ATI_IXP_DMA_CHSEGS_MIN))
+ blksz = ch->buffer->maxsize / ATI_IXP_DMA_CHSEGS_MIN;
if (blksz < ATI_IXP_BLK_MIN)
blksz = ATI_IXP_BLK_MIN;
if (blkcnt > ATI_IXP_DMA_CHSEGS_MAX)
@@ -544,7 +544,7 @@ atiixp_chan_setfragments(kobj_t obj, void *data,
if (blkcnt < ATI_IXP_DMA_CHSEGS_MIN)
blkcnt = ATI_IXP_DMA_CHSEGS_MIN;
- while ((blksz * blkcnt) > sndbuf_getmaxsize(ch->buffer)) {
+ while ((blksz * blkcnt) > ch->buffer->maxsize) {
if ((blkcnt >> 1) >= ATI_IXP_DMA_CHSEGS_MIN)
blkcnt >>= 1;
else if ((blksz >> 1) >= ATI_IXP_BLK_MIN)
@@ -553,14 +553,14 @@ atiixp_chan_setfragments(kobj_t obj, void *data,
break;
}
- if ((sndbuf_getblksz(ch->buffer) != blksz ||
- sndbuf_getblkcnt(ch->buffer) != blkcnt) &&
+ if ((ch->buffer->blksz != blksz ||
+ ch->buffer->blkcnt != blkcnt) &&
sndbuf_resize(ch->buffer, blkcnt, blksz) != 0)
device_printf(sc->dev, "%s: failed blksz=%u blkcnt=%u\n",
__func__, blksz, blkcnt);
- ch->blksz = sndbuf_getblksz(ch->buffer);
- ch->blkcnt = sndbuf_getblkcnt(ch->buffer);
+ ch->blksz = ch->buffer->blksz;
+ ch->blkcnt = ch->buffer->blkcnt;
return (0);
}
@@ -583,7 +583,7 @@ atiixp_buildsgdt(struct atiixp_chinfo *ch)
uint32_t addr, blksz, blkcnt;
int i;
- addr = sndbuf_getbufaddr(ch->buffer);
+ addr = ch->buffer->buf_addr;
if (sc->polling != 0) {
blksz = ch->blksz * ch->blkcnt;
@@ -610,7 +610,7 @@ atiixp_dmapos(struct atiixp_chinfo *ch)
volatile uint32_t ptr;
reg = ch->dt_cur_bit;
- addr = sndbuf_getbufaddr(ch->buffer);
+ addr = ch->buffer->buf_addr;
sz = ch->blkcnt * ch->blksz;
retry = ATI_IXP_DMA_RETRY_MAX;
@@ -739,8 +739,7 @@ atiixp_chan_trigger(kobj_t obj, void *data, int go)
ch->ptr = 0;
ch->prevptr = 0;
pollticks = ((uint64_t)hz * ch->blksz) /
- ((uint64_t)sndbuf_getalign(ch->buffer) *
- sndbuf_getspd(ch->buffer));
+ ((uint64_t)ch->buffer->align * ch->buffer->spd);
pollticks >>= 2;
if (pollticks > hz)
pollticks = hz;
@@ -781,8 +780,8 @@ atiixp_chan_trigger(kobj_t obj, void *data, int go)
else
ch = &sc->rch;
pollticks = ((uint64_t)hz * ch->blksz) /
- ((uint64_t)sndbuf_getalign(ch->buffer) *
- sndbuf_getspd(ch->buffer));
+ ((uint64_t)ch->buffer->align *
+ ch->buffer->spd);
pollticks >>= 2;
if (pollticks > hz)
pollticks = hz;
@@ -1020,7 +1019,7 @@ atiixp_chip_post_init(void *arg)
if (sc->codec_not_ready_bits == 0) {
/* wait for the interrupts to happen */
do {
- msleep(sc, sc->lock, PWAIT, "ixpslp", max(hz / 10, 1));
+ msleep(sc, &sc->lock, PWAIT, "ixpslp", max(hz / 10, 1));
if (sc->codec_not_ready_bits != 0)
break;
} while (--timeout);
@@ -1158,10 +1157,7 @@ atiixp_release_resource(struct atiixp_info *sc)
bus_dma_tag_destroy(sc->sgd_dmat);
sc->sgd_dmat = NULL;
}
- if (sc->lock) {
- snd_mtxfree(sc->lock);
- sc->lock = NULL;
- }
+ mtx_destroy(&sc->lock);
free(sc, M_DEVBUF);
}
@@ -1191,7 +1187,8 @@ atiixp_pci_attach(device_t dev)
int i;
sc = malloc(sizeof(*sc), M_DEVBUF, M_WAITOK | M_ZERO);
- sc->lock = snd_mtxcreate(device_get_nameunit(dev), "snd_atiixp softc");
+ mtx_init(&sc->lock, device_get_nameunit(dev), "snd_atiixp softc",
+ MTX_DEF);
sc->dev = dev;
callout_init(&sc->poll_timer, 1);