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>