Subject: Re: TC bba audio problem on DEC3000/300
To: Izumi Tsutsui <tsutsui@ceres.dti.ne.jp>
From: Jason R Thorpe <thorpej@zembu.com>
List: port-alpha
Date: 07/17/2000 10:37:28
On Tue, Jul 18, 2000 at 12:05:09AM +0900, Izumi Tsutsui wrote:
> The following patch seems to fix this and now my 3000/300 can
> speak some Japanese :-) But I'm not sure how it works on pmax...
It looks like this patch will be okay on the DECstation, as well. The
new arch/pmax/tc/asc_ioasic.c clears the pointer reload interrupt bit
for the SCSI as well...
>
> --- bba.c Mon Jul 17 23:53:12 2000
> +++ bba.c.orig Mon Jul 17 23:52:52 2000
> @@ -597,6 +597,7 @@
> mask = bus_space_read_4(sc->sc_bst, sc->sc_bsh, IOASIC_INTR);
>
> if (mask & IOASIC_INTR_ISDN_TXLOAD) {
> + mask &= ~IOASIC_INTR_ISDN_TXLOAD;
> d = &sc->sc_tx_dma_state;
> d->curseg = (d->curseg+1) % d->dmam->dm_nsegs;
> nphys = (tc_addr_t)d->dmam->dm_segs[d->curseg].ds_addr;
> @@ -606,6 +607,7 @@
> (*d->intr)(d->intr_arg);
> }
> if (mask & IOASIC_INTR_ISDN_RXLOAD) {
> + mask &= ~IOASIC_INTR_ISDN_RXLOAD;
> d = &sc->sc_rx_dma_state;
> d->curseg = (d->curseg+1) % d->dmam->dm_nsegs;
> nphys = (tc_addr_t)d->dmam->dm_segs[d->curseg].ds_addr;
> @@ -614,6 +616,7 @@
> if (d->intr != NULL)
> (*d->intr)(d->intr_arg);
> }
> + bus_space_write_4(sc->sc_bst, sc->sc_bsh, IOASIC_INTR, mask);
>
> splx(s);
>
> BTW, should bba_round_blocksize() return PAGE_SIZE or
> IOASIC_DMA_BLOCKSIZE ? (I'm not familiar with audio driver...)
No, IOASIC_DMA_BLOCKSIZE is correct. Note, it doesn't return that,
it merely rounds the buffer up to that size.
--
-- Jason R. Thorpe <thorpej@zembu.com>