[alsa-devel] ASUS Phoebus (CMI8888) HDA Support
Geoffrey McRae
geoff at spacevs.com
Wed Dec 4 23:20:59 CET 2013
Interestingly I added some code to dump out the DMA addresses used and
checked it with and without IOMMU:
Without:
DMA: AREA = ffff8800dd44b000, ADDR = dd44b000
With:
DMA: AREA = ffff8803ecf15000, ADDR = 68000
Here are the registers while the device is working (with IOMMU):
GCAP: 0x4300
VMIN: 0x00
VMAJ: 0x01
INPAY: 0x0048
OUTPAY: 0x0054
GCTL: 0x00000101
WAKEEN: 0x0000
STATSTS: 0x0000
GSTS: 0x0000
OUTSTRMPAY: 0x0030
INSTRMPAY: 0x001d
INTCTL: 0xc0000000
INTSTS: 0x00000000
WALCLK: 0xb4bdefba
CORBLBASE: 0x00068000
CORBUBASE: 0x00000000
CORBWP: 0x00ad
CORBRP: 0x00ad
CORBCTL: 0x02
CORBSTS: 0x00
CORBSIZE: 0x42
RIRBLBASE: 0x00068800
RIRBUBASE: 0x00000000
RIRBWP: 0x00ad
RINTCNT: 0x0001
RIRBCTL: 0x03
RIRBSTS: 0x00
RIRBSIZE: 0x42
ICOI: 0x00000000
ICII: 0x00000000
ICIS: 0x0002
DPIBLBASE: 0x00000000
DPIULBASE: 0x00000000
CORBLBASE gets set to dd44b000, and RIRBLBASE gets set to dd44b800 when
it is without IOMMU as one would expect.
But... it is not 128bit aligned as per the HD Audio Spec.
Windows uses a DMA address of 0xdd4d0000, which is 128bit aligned. I
will do some more hacking and see if I can figure out how to give it an
aligned DMA buffer.
More information about the Alsa-devel
mailing list