]> CyberLeo.Net >> Repos - FreeBSD/stable/8.git/commit
MFC: r197401
authormarius <marius@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Fri, 25 Sep 2009 19:59:18 +0000 (19:59 +0000)
committermarius <marius@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Fri, 25 Sep 2009 19:59:18 +0000 (19:59 +0000)
commitaa9bae12d380441c4bdb51b89e836bc94b2dabbb
treed0df795e719b1fa5e46ce94e6ce65811b72bc87b
parent64ed1009e48c67225c8bc1586ebcb186f1b3dcdd
MFC: r197401

- According to Linux, the ALi M5451 can do 31-bit DMA instead of just
  30-bit like the reset of the controllers supported by this driver.
  Actually ALi M5451 can be setup up to generate 32-bit addresses by
  setting the 31st bit via the accompanying ISA bridge, which allows
  it to work in sparc64 machines whose IOMMU require at least 32-bit
  DMA. Even though other architectures would also benefit from 32-bit
  DMA, enabling this bit is limited to sparc64 as bus_dma(9) doesn't
  generally guarantee that a low address of BUS_SPACE_MAXADDR_32BIT
  results in a buffer in the 32-bit range.
- According to Tatsuo YOKOGAWA's ali(4), the the DMA transfer size of
  ALi M5451 is fixed to 64k and in fact using the default size of 4k
  causes the chip to overrun the mapping, triggering uncorrectable
  DMA errors on sparc64.
- The 4DWAVE DX and NX require the recording buffer to be 8-byte
  aligned so adjust the bus_dma_tag_create(9) accordingly.
- Unlike the rest of the controllers supported by this driver, the
  ALi M5451 only has 32 hardware channels instead of 64 so limit the
  loop in tr_intr() accordingly. [1]

Submitted by: yongari [1]
Reviewed by: yongari (superset of what is committed)
Approved by: re (kib)

git-svn-id: svn://svn.freebsd.org/base/stable/8@197502 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
sys/dev/sound/pci/t4dwave.c