Announcement

Collapse
No announcement yet.

x86_64 hdmi audio

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • #11
    2.6.29 is not a nice place to be; it's too new for the drm code in freedesktop.org, and too old to have the 6xx/7xx drm code already there

    2.6.30 is your friend, although not for 6xx/7xx 3d I guess - for that you'll want to stay with 2.6.28 for a bit longer. Once we get the userspace running better we should be able to merge the drm support into the kernel.

    2.6.30 should work for EXA and Xv but not for 3D.
    Last edited by bridgman; 26 June 2009, 11:11 PM.
    Test signature

    Comment


    • #12
      I just finished loading/compiling this with the 2.6.30 for 32 bit and you are right.

      compiling drm (agd5f's) didn't work. Error is:
      Code:
      linux-core/drm_os_linux.h:54: error: conflicting types for 'irqreturn_t'
      include/linux/irqreturn.h:16: error: previous declaration of 'irqreturn_t' was here
      But if a lot of drm now in 2.6.30 kernel I guess this is not surprising. Compiling the other (mesa and ati and radeonhd) worked.

      Audio over hdmi worked with same xorg.conf and windows were pretty quick I guess indicating EXA is working.

      Code:
      (WW) RADEONHD(0): Direct rendering for R600 and up forced on - This is NOT officially supported yet and may cause instability or lockups
      (II) RADEONHD(0): Found libdri 5.4.0.
      drmOpenDevice: node name is /dev/dri/card0
      drmOpenDevice: open result is -1, (No such device or address)
      drmOpenDevice: open result is -1, (No such device or address)
      drmOpenDevice: Open failed
      drmOpenByBusid: Searching for BusID pci:0000:01:05.0
      drmOpenDevice: node name is /dev/dri/card0
      drmOpenDevice: open result is 10, (OK)
      drmOpenByBusid: drmOpenMinor returns 10
      drmOpenByBusid: drmGetBusid reports pci:0000:01:05.0
      (II) RADEONHD(0): Found libdrm 1.3.0.
      (II) RADEONHD(0): Found radeon drm 1.30.0.
      (II) Loading sub module "i2c"
      (II) LoadModule: "i2c"
      ...
      (II) RADEONHD(0): Mapped IO @ 0xfdfe0000 to 0xb7a15000 (size 0x00010000)
      (II) RADEONHD(0): Mapped FB @ 0xd0000000 to 0xa7963000 (size 0x10000000)
      (II) RADEONHD(0): Current Engine Clock: 494040
      drmOpenDevice: node name is /dev/dri/card0
      drmOpenDevice: open result is 10, (OK)
      drmOpenDevice: node name is /dev/dri/card0
      drmOpenDevice: open result is 10, (OK)
      drmOpenByBusid: Searching for BusID pci:0000:01:05.0
      drmOpenDevice: node name is /dev/dri/card0
      drmOpenDevice: open result is 10, (OK)
      drmOpenByBusid: drmOpenMinor returns 10
      drmOpenByBusid: drmGetBusid reports pci:0000:01:05.0
      (II) [drm] DRM interface version 1.3
      (II) [drm] DRM open master succeeded.
      (II) RADEONHD(0): [drm] Using the DRM lock SAREA also for drawables.
      (II) RADEONHD(0): [drm] framebuffer handle = 0xd0000000
      (II) RADEONHD(0): [drm] added 1 reserved context for kernel
      (II) RADEONHD(0): X context handle = 0x1
      (II) RADEONHD(0): [drm] installed DRM signal handler
      (II) RADEONHD(0): [pci] 16384 kB allocated with handle 0xfde1a000
      (II) RADEONHD(0): [pci] ring handle = 0xfde1a000
      (II) RADEONHD(0): [pci] Ring mapped at 0xa7721000
      (II) RADEONHD(0): [pci] Ring contents 0x00000000
      (II) RADEONHD(0): [pci] ring read ptr handle = 0xfe01b000
      (II) RADEONHD(0): [pci] Ring read ptr mapped at 0xb7f2b000
      (II) RADEONHD(0): [pci] Ring read ptr contents 0x00000000
      (II) RADEONHD(0): [pci] vertex/indirect buffers handle = 0xfe01c000
      (II) RADEONHD(0): [pci] Vertex/indirect buffers mapped at 0xa7521000
      (II) RADEONHD(0): [pci] Vertex/indirect buffers contents 0x00000000
      (II) RADEONHD(0): [pci] GART texture map handle = 0xfe21c000
      (II) RADEONHD(0): [pci] GART Texture map mapped at 0xa6961000
      (II) RADEONHD(0): [drm] register handle = 0x2fbfc000
      (II) RADEONHD(0): [dri] Visual configs initialized
      (II) RADEONHD(0): Attempting to enable power management
      (II) RADEONHD(0): [DRI] installation complete
      (II) RADEONHD(0): [drm] Added 32 65536 byte vertex/indirect buffers
      (II) RADEONHD(0): [drm] Mapped 32 vertex/indirect buffers
      (II) RADEONHD(0): [drm] dma control initialized, using IRQ 18
      (II) RADEONHD(0): [drm] Initialized kernel GART heap manager, 12320768
      (II) RADEONHD(0): Direct rendering enabled
      (II) RADEONHD(0): Using DRM Command Processor (indirect) for acceleration.
      (II) EXA(0): Offscreen pixmap area of 26845184 bytes
      (II) EXA(0): Driver registered support for the following operations:
      (II)         Solid
      (II)         Copy
      (II)         Composite (RENDER acceleration)
      (II)         UploadToScreen
      (II)         DownloadFromScreen
      (==) RADEONHD(0): Backing store disabled
      (==) RADEONHD(0): Silken mouse enabled
      (II) RADEONHD(0): RandR 1.2 enabled, ignore the following RandR disabled message.
      (II) RADEONHD(0): Mapping DIG2 encoder to KLDSKP_LVTMA
      (II) RADEONHD(0): On Crtc 0 Setting 60.0 Hz Mode: Modeline "1920x1080"  148.50  1920 2008 2052 2200  1080 1085 1090 1125 +hsync +vsync
      None
      (II) RADEONHD(0): RHDAudioSetClock: using UNIPHY_KLDSKP_LVTMA as clock source with 148500 khz
      Pretty good and thanks. I'll maybe get around to trying 2.6.30 with 64 bit tomorrow.

      Comment


      • #13
        Iirc that irqreturn_t thing was not difficult to fix. If you take a look at the header file, it only declares irqreturn_t if IRQ_HANDLED is not defined. Well, the thing is, IRQ_HANDLED is nowadays a member of enumerated value irqreturn_t (and not a macro, unsure if it has been but considering there's code that relies on it being thus, it likely was) so the test in drm_os_linux.h gives a false success. Commenting out
        Code:
        #ifndef IRQ_HANDLED
        typedef void irqreturn_t;
        #define IRQ_HANDLED		/* nothing */
        #define IRQ_NONE		/* nothing */
        #endif
        should suffice for the specific problem iirc. (the proper solution probably would be to check in configure for the presence of irqreturn.h) There's also a problem with sysfs API change so you'd have to beat drm_sysfs.c with a hammer too. I fed up at that point, personally, wouldn't know if it works with those two. Might still require more.
        Last edited by nanonyme; 27 June 2009, 07:35 AM.

        Comment


        • #14
          sound works with 2.6.30 64 bit with radeonhd. Same error msg as before with drm.

          I see what you mean.

          The drm code under linux-core/drm_os_linux.h has
          Code:
          #ifndef IRQ_HANDLED
          typedef void irqreturn_t;
          We see in 2.6.27.15 at linux/include/linux/irqreturn.h
          Code:
          #define IRQ_HANDLED	(1)
          But in 2.6.30 at linux/include/linux/irqreturn.h
          There is no IRQ_HANDLED except in comment
          /**
          * enum irqreturn
          * @IRQ_NONE interrupt was not from this device
          * @IRQ_HANDLED interrupt was handled by this device
          The kernel 2.6.30 and 2.6.27.15 have include/linux/interrupt.h
          typedef irqreturn_t (*irq_handler_t)(int, void *);

          Since irqreturn_t is in both kernels it should not be needed at drm_os_linux.h for any of these versions, right?

          If it is needed you could add another ifndef in the IRQ_HANDLED or pull it out by itself, right?
          -I don't know C or C++ much so not sure how to do this
          Code:
          #ifndef IRQ_HANDLED
          #define IRQ_HANDLED		/* nothing */
          #define IRQ_NONE		/* nothing */
          #ifndef irqreturn_t typedef void irqreturn_t;
          #endif
          #endif
          Code:
          #ifndef IRQ_HANDLED
          #define IRQ_HANDLED		/* nothing */
          #define IRQ_NONE		/* nothing */
          #endif
          
          #ifndef irqreturn_t typedef void irqreturn_t;
          #endif
          Last edited by forum1793; 27 June 2009, 11:30 AM.

          Comment


          • #15
            You don't need to define IRQ_HANDLED and IRQ_NONE with the new way, they're members in irqreturn_t enum.
            I'd suspect IRQ_HANDLED was moved into irqreturn_t but left as a macro as backwards compatibility and the macro was finally dropped in 2.6.30 but can't be sure without reading through a lot of mailing list posts. The "new" solution is definitely cleaner though...
            Last edited by nanonyme; 27 June 2009, 04:24 PM.

            Comment

            Working...
            X