1
0
mirror of https://git.FreeBSD.org/src.git synced 2025-01-13 14:40:22 +00:00

Limit DMA address space to 1GB since the trident audio cards can't

handle DMA addresses located above 1GB. The LBA(loop begin address)
register which holds DMA base address is 32bits register. But the
MSB 2bits are used for other purposes. This effectivly limits the
DMA address space up to 1GB.

Approved by:	jake (mentor)
Reviewed by:	truckman, matk
This commit is contained in:
Pyun YongHyeon 2004-10-13 06:04:01 +00:00
parent eba1cb6e3e
commit a2f4d2f5b0
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=136470

View File

@ -43,6 +43,16 @@ SND_DECLARE_FILE("$FreeBSD$");
#define TR_DEFAULT_BUFSZ 0x1000
#define TR_TIMEOUT_CDC 0xffff
#define TR_MAXPLAYCH 4
/*
* Though, it's not clearly documented in trident datasheet, trident
* audio cards can't handle DMA addresses located above 1GB. The LBA
* (loop begin address) register which holds DMA base address is 32bits
* register.
* But the MSB 2bits are used for other purposes(I guess it is really
* bad idea). This effectivly limits the DMA address space up to 1GB.
*/
#define TR_MAXADDR ((1 << 30) - 1)
struct tr_info;
@ -851,7 +861,7 @@ tr_pci_attach(device_t dev)
}
if (bus_dma_tag_create(/*parent*/NULL, /*alignment*/2, /*boundary*/0,
/*lowaddr*/BUS_SPACE_MAXADDR_32BIT,
/*lowaddr*/TR_MAXADDR,
/*highaddr*/BUS_SPACE_MAXADDR,
/*filter*/NULL, /*filterarg*/NULL,
/*maxsize*/tr->bufsz, /*nsegments*/1, /*maxsegz*/0x3ffff,