[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:

DMA: AREA = ffff8800dd44b000, ADDR = dd44b000

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
 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