1. 07 4月, 2010 2 次提交
    • D
      drm/kms/fb: move to using fb helper crtc grouping instead of core crtc list · 8be48d92
      Dave Airlie 提交于
      This move to using the list of crtcs in the fb helper and cleans up the
      whole picking code, now we store the crtc/connectors we want directly
      into the modeset and we use the modeset directly to set the mode.
      
      Fixes from James Simmons and Ben Skeggs.
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      8be48d92
    • D
      drm/fb: fix fbdev object model + cleanup properly. · 38651674
      Dave Airlie 提交于
      The fbdev layer in the kms code should act like a consumer of the kms services and avoid having relying on information being store in the kms core structures in order for it to work.
      
      This patch
      
      a) removes the info pointer/psuedo palette from the core drm_framebuffer structure and moves it to the fbdev helper layer, it also removes the core drm keeping a list of kernel kms fbdevs.
      b) migrated all the fb helper functions out of the crtc helper file into the fb helper file.
      c) pushed the fb probing/hotplug control into the driver
      d) makes the surface sizes into a structure for ease of passing
      This changes the intel/radeon/nouveau drivers to use the new helper.
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      38651674
  2. 01 3月, 2010 1 次提交
    • D
      vga_switcheroo: initial implementation (v15) · 6a9ee8af
      Dave Airlie 提交于
      Many new laptops now come with 2 gpus, one to be used for low power
      modes and one for gaming/on-ac applications. These GPUs are typically
      wired to the laptop panel and VGA ports via a multiplexer unit which
      is controlled via ACPI methods.
      
      4 combinations of systems typically exist - with 2 ACPI methods.
      Intel/ATI - Lenovo W500/T500 - use ATPX ACPI method
      ATI/ATI - some ASUS - use ATPX ACPI Method
      Intel/Nvidia - - use _DSM ACPI method
      Nvidia/Nvidia -  - use _DSM ACPI method.
      
      TODO:
      This patch adds support for the ATPX method and initial bits
      for the _DSM methods that need to written by someone with
      access to the hardware.
      Add a proper non-debugfs interface - need to get some proper
      testing first.
      
      v2: add power up/down support for both devices
      on W500 puts i915/radeon into D3 and cuts power to radeon.
      
      v3: redo probing methods, no DMI list, drm devices call to
      register with switcheroo, it tries to find an ATPX method on
      any device and once there is two devices + ATPX it inits the
      switcher.
      
      v4: ATPX msg handling using buffers - should work on more machines
      
      v5: rearchitect after more mjg59 discussion - move ATPX handling to
          radeon driver.
      
      v6: add file headers + initial nouveau bits (to be filled out).
      
      v7: merge delayed switcher code.
      
      v8: avoid suspend/resume of gpu that is off
      
      v9: rearchitect - mjg59 is always right. - move all ATPX code to
      radeon, should allow simpler DSM also proper ATRM handling
      
      v10: add ATRM support for radeon BIOS, add mutex to lock vgasr_priv
      
      v11: fix bug in resuming Intel for 2nd time.
      
      v12: start fixing up nvidia code blindly.
      
      v13: blindly guess at finishing nvidia code
      
      v14: remove radeon audio hacks - fix up intel resume more like upstream
      
      v15: clean up printks + remove unnecessary igd/dis pointers
      
      mount debugfs
      
      /sys/kernel/debug/vgaswitcheroo/switch - should exist if ATPX detected
       + 2 cards.
      
      DIS - immediate change to discrete
      IGD - immediate change to IGD
      DDIS - delayed change to discrete
      DIGD - delayed change to IGD
      ON - turn on not in use
      OFF - turn off not in use
      
      Tested on W500 (Intel/ATI) and T500 (Intel/ATI)
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      6a9ee8af
  3. 18 2月, 2010 1 次提交
    • J
      drm/radeon/kms: simplify memory controller setup V2 · d594e46a
      Jerome Glisse 提交于
      Get rid of _location and use _start/_end also simplify the
      computation of vram_start|end & gtt_start|end. For R1XX-R2XX
      we place VRAM at the same address of PCI aperture, those GPU
      shouldn't have much memory and seems to behave better when
      setup that way. For R3XX and newer we place VRAM at 0. For
      R6XX-R7XX AGP we place VRAM before or after AGP aperture this
      might limit to limit the VRAM size but it's very unlikely.
      For IGP we don't change the VRAM placement.
      
      Tested on (compiz,quake3,suspend/resume):
      PCI/PCIE:RV280,R420,RV515,RV570,RV610,RV710
      AGP:RV100,RV280,R420,RV350,RV620(RPB*),RV730
      IGP:RS480(RPB*),RS690,RS780(RPB*),RS880
      
      RPB: resume previously broken
      
      V2 correct commit message to reflect more accurately the bug
      and move VRAM placement to 0 for most of the GPU to avoid
      limiting VRAM.
      Signed-off-by: NJerome Glisse <jglisse@redhat.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      d594e46a
  4. 11 2月, 2010 1 次提交
  5. 09 2月, 2010 1 次提交
  6. 04 12月, 2009 1 次提交
  7. 02 12月, 2009 2 次提交
  8. 06 10月, 2009 1 次提交
    • D
      drm/fb: add more correct 8/16/24/32 bpp fb support. · b8c00ac5
      Dave Airlie 提交于
      The previous patches had some unwanted side effects, I've fixed
      the lack of 32bpp working, and fixed up 16bpp so it should also work.
      
      this also adds the interface to allow the driver to set a preferred
      console depth so for example low memory rn50 can set it to 8bpp.
      It also catches 24bpp on cards that can't do it and forces 32bpp.
      
      Tested on r100/r600/i945.
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      b8c00ac5
  9. 05 10月, 2009 2 次提交
  10. 25 9月, 2009 1 次提交
    • D
      drm/kms: start adding command line interface using fb. · d50ba256
      Dave Airlie 提交于
      [note this requires an fb patch posted to linux-fbdev-devel already]
      
      This uses the normal video= command line option to control the kms
      output setup at boot time. It is used to override the autodetection
      done by kms.
      
      video= normally takes a framebuffer as the first parameter, in kms
      it will take a connector name, DVI-I-1, or LVDS-1 etc. If no output
      connector is specified the mode string will apply to all connectors.
      
      The mode specification used will match down the probed modes, and if
      no mode is found it will add a CVT mode that matches.
      
      video=1024x768 - all connectors match a 1024x768 mode or add a CVT on
      video=VGA-1:1024x768, VGA-1 connector gets mode only.
      
      The same strings as used in current fb modedb.c are used, except I've
      added three more letters, e, D, d, e = enable, D = enable Digital,
      d = disable, which allow a connector to be forced into a certain state.
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      d50ba256
  11. 18 9月, 2009 1 次提交
  12. 11 9月, 2009 1 次提交
  13. 31 8月, 2009 1 次提交
    • D
      drm/kms: move driver specific fb common code to helper functions (v2) · 785b93ef
      Dave Airlie 提交于
      Initially I always meant this code to be shared, but things
      ran away from me before I got to it.
      
      This refactors the i915 and radeon kms fbdev interaction layers
      out into generic helpers + driver specific pieces.
      
      It moves all the panic/sysrq enhancements to the core file,
      and stores a linked list of kernel fbs. This could possibly be
      improved to only store the fb which has fbcon on it for panics
      etc.
      
      radeon retains some specific codes used for a big endian
      workaround.
      
      changes:
      fix oops in v1
      fix freeing path for crtc_info
      Reviewed-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      785b93ef
  14. 19 8月, 2009 1 次提交
  15. 29 7月, 2009 2 次提交
    • D
      drm/radeon: set fb aperture sizes for framebuffer handoff. · ed8f0d9e
      Dave Airlie 提交于
      This will allow efi/vesa to handoff to radeon.
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      ed8f0d9e
    • D
      drm/radeon/kms: add initial colortiling support. · e024e110
      Dave Airlie 提交于
      This adds new set/get tiling interfaces where the pitch
      and macro/micro tiling enables can be set. Along with
      a flag to decide if this object should have a surface when mapped.
      
      The only thing we need to allocate with a mapped surface should be
      the frontbuffer. Note rotate scanout shouldn't require one, and
      back/depth shouldn't either, though mesa needs some fixes.
      
      It fixes the TTM interfaces along Thomas's suggestions, and I've tested
      the surface stealing code with two X servers and not seen any lockdep issues.
      
      I've stopped tiling the fbcon frontbuffer, as I don't see there being
      any advantage other than testing, I've left the testing commands in there,
      just flip the fb_tiled to true in radeon_fb.c
      
      Open: Can we integrate endian swapping in with this?
      
      Future features:
      texture tiling - need to relocate texture registers TXOFFSET* with tiling info.
      
      This also merges Michel's cleanup surfaces regs at init time patch
      even though it makes sense on its own, this patch really relies on it.
      
      Some PowerMac firmwares set up a tiling surface at the beginning of VRAM
      which messes us up otherwise.
      that patch is:
      Signed-off-by: NMichel Dänzer <daenzer@vmware.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      e024e110
  16. 15 7月, 2009 1 次提交
  17. 24 6月, 2009 2 次提交
  18. 15 6月, 2009 1 次提交
    • J
      drm/radeon: introduce kernel modesetting for radeon hardware · 771fe6b9
      Jerome Glisse 提交于
      Add kernel modesetting support to radeon driver, use the ttm memory
      manager to manage memory and DRM/GEM to provide userspace API.
      In order to avoid backward compatibility issue and to allow clean
      design and code the radeon kernel modesetting use different code path
      than old radeon/drm driver.
      
      When kernel modesetting is enabled the IOCTL of radeon/drm
      driver are considered as invalid and an error message is printed
      in the log and they return failure.
      
      KMS enabled userspace will use new API to talk with the radeon/drm
      driver. The new API provide functions to create/destroy/share/mmap
      buffer object which are then managed by the kernel memory manager
      (here TTM). In order to submit command to the GPU the userspace
      provide a buffer holding the command stream, along this buffer
      userspace have to provide a list of buffer object used by the
      command stream. The kernel radeon driver will then place buffer
      in GPU accessible memory and will update command stream to reflect
      the position of the different buffers.
      
      The kernel will also perform security check on command stream
      provided by the user, we want to catch and forbid any illegal use
      of the GPU such as DMA into random system memory or into memory
      not owned by the process supplying the command stream. This part
      of the code is still incomplete and this why we propose that patch
      as a staging driver addition, future security might forbid current
      experimental userspace to run.
      
      This code support the following hardware : R1XX,R2XX,R3XX,R4XX,R5XX
      (radeon up to X1950). Works is underway to provide support for R6XX,
      R7XX and newer hardware (radeon from HD2XXX to HD4XXX).
      
      Authors:
          Jerome Glisse <jglisse@redhat.com>
          Dave Airlie <airlied@redhat.com>
          Alex Deucher <alexdeucher@gmail.com>
      Signed-off-by: NJerome Glisse <jglisse@redhat.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      Signed-off-by: NAlex Deucher <alexdeucher@gmail.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      771fe6b9
  19. 12 6月, 2009 1 次提交
  20. 11 6月, 2009 1 次提交
  21. 05 6月, 2009 1 次提交
  22. 15 5月, 2009 1 次提交
  23. 09 4月, 2009 1 次提交
  24. 20 2月, 2009 1 次提交
  25. 29 12月, 2008 4 次提交