safe/jmp/linux-2.6
14 years agodrm/nv50: fix suspend/resume delays without firmware present
Ben Skeggs [Wed, 16 Dec 2009 05:07:45 +0000 (15:07 +1000)]
drm/nv50: fix suspend/resume delays without firmware present

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agodrm/nouveau: prevent all channel creation if accel not available
Ben Skeggs [Wed, 16 Dec 2009 04:28:55 +0000 (14:28 +1000)]
drm/nouveau: prevent all channel creation if accel not available

Previously, if there was no firmware available, the DRM would just
disable channel creation from userspace, but still use a single
channel for its own purposes.

With a bit of care it should actually be possible to do this, due
to the DRM's very limited use of the engine.  It currently doesn't
work correctly however, resulting in corrupted fbcon and hangs on
a number of cards.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agodrm/nv50: fix two potential suspend/resume oopses
Ben Skeggs [Wed, 16 Dec 2009 04:51:13 +0000 (14:51 +1000)]
drm/nv50: fix two potential suspend/resume oopses

This avoids touching the dummy channel 0/127 we have on nv50.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agodrm/nv40: implement ctxprog/state generation
Ben Skeggs [Tue, 15 Dec 2009 12:02:47 +0000 (22:02 +1000)]
drm/nv40: implement ctxprog/state generation

The context programs are *very* simple compared to the ones used by
the binary driver.  There's notes in nv40_grctx.c explaining most of
the things we don't implement.  If we discover if/why any of it is
required further down the track, we'll handle it then.

The PGRAPH state generated for each chipset should match what NVIDIA
do almost exactly (there's a couple of exceptions).  If someone has
a lot of time on their hands, they could figure out the mapping of
object/method to PGRAPH register and demagic the initial state a little,
it's not terribly important however.

At time of commit, confirmed to be working at least well enough for
accelerated X (and where tested, for 3D apps) on NV40, NV43, NV44, NV46,
NV49, NV4A, NV4B and NV4E.

A module option has been added to force the use of external firmware
blobs if it becomes required.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agodrm/nv10: Add the initial graph context and soft methods needed for LMA.
Francisco Jerez [Mon, 14 Dec 2009 14:00:30 +0000 (15:00 +0100)]
drm/nv10: Add the initial graph context and soft methods needed for LMA.

Signed-off-by: Francisco Jerez <currojerez@riseup.net>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agodrm/nouveau: Fix up buffer eviction, and evict them to GART, if possible.
Francisco Jerez [Fri, 11 Dec 2009 17:40:17 +0000 (18:40 +0100)]
drm/nouveau: Fix up buffer eviction, and evict them to GART, if possible.

Signed-off-by: Francisco Jerez <currojerez@riseup.net>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agodrm/nouveau: Add proper error handling to nouveau_card_init
Marcin Kościelnicki [Mon, 14 Dec 2009 20:58:39 +0000 (20:58 +0000)]
drm/nouveau: Add proper error handling to nouveau_card_init

Signed-off-by: Marcin Kościelnicki <koriakin@0x04.net>
Signed-off-by: Maarten Maathuis <madman2003@gmail.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agodrm/nv04: Fix NV04 set_operation software method.
Marcin Kościelnicki [Mon, 14 Dec 2009 20:38:17 +0000 (20:38 +0000)]
drm/nv04: Fix NV04 set_operation software method.

Signed-off-by: Marcin Kościelnicki <koriakin@0x04.net>
Signed-off-by: Maarten Maathuis <madman2003@gmail.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agodrm/nouveau: Kill global state in BIOS script interpreter
Marcin Kościelnicki [Tue, 15 Dec 2009 00:37:31 +0000 (00:37 +0000)]
drm/nouveau: Kill global state in BIOS script interpreter

Signed-off-by: Marcin Kościelnicki <koriakin@0x04.net>
Signed-off-by: Maarten Maathuis <madman2003@gmail.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agodrm/nouveau: Kill global state in NvShadowBIOS
Marcin Kościelnicki [Tue, 15 Dec 2009 00:37:30 +0000 (00:37 +0000)]
drm/nouveau: Kill global state in NvShadowBIOS

Signed-off-by: Marcin Kościelnicki <koriakin@0x04.net>
Signed-off-by: Maarten Maathuis <madman2003@gmail.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agodrm/nouveau: use drm debug levels
Maarten Maathuis [Sun, 13 Dec 2009 15:53:12 +0000 (16:53 +0100)]
drm/nouveau: use drm debug levels

- Use driver level (0x2) for NV_DEBUG instead of all levels
- Create a NV_DEBUG_KMS for KMS level (0x4) and use them in modesetting code
- Remove a few odd NV_TRACE calls and replace some of them with NV_DEBUG_KMS or
NV_INFO

Signed-off-by: Maarten Maathuis <madman2003@gmail.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agodrm/i2c/ch7006: Fix load detection false positives right after system init.
Francisco Jerez [Tue, 15 Dec 2009 00:34:42 +0000 (01:34 +0100)]
drm/i2c/ch7006: Fix load detection false positives right after system init.

Signed-off-by: Francisco Jerez <currojerez@riseup.net>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agodrm/nv04-nv40: Fix "conflicting memory types" when saving/restoring VGA fonts.
Francisco Jerez [Fri, 11 Dec 2009 22:44:49 +0000 (23:44 +0100)]
drm/nv04-nv40: Fix "conflicting memory types" when saving/restoring VGA fonts.

Signed-off-by: Francisco Jerez <currojerez@riseup.net>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agodrm/nouveau: remove use of -ERESTART
Ben Skeggs [Tue, 15 Dec 2009 01:04:25 +0000 (11:04 +1000)]
drm/nouveau: remove use of -ERESTART

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agonouveau: Fix endianness with new context program loader
Benjamin Herrenschmidt [Mon, 14 Dec 2009 03:31:40 +0000 (14:31 +1100)]
nouveau: Fix endianness with new context program loader

When switching to request_firmware() to load the context programs,
some endian fixes need to be applied. This makes it work again on
my quad g5 nvidia 6600.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agodrm/nouveau: fix build with CONFIG_AGP=n
Ben Skeggs [Tue, 15 Dec 2009 00:38:32 +0000 (10:38 +1000)]
drm/nouveau: fix build with CONFIG_AGP=n

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agodrm/nouveau: fix ch7006 build
Randy Dunlap [Mon, 14 Dec 2009 19:51:40 +0000 (11:51 -0800)]
drm/nouveau: fix ch7006 build

The ch7006 driver could be built even when nouveau was not enabled,
but the build fails in that case, so make it depend on DRM_NOUVEUA.

Also make the I2c encoder/helper chips menu depend on I2C (no build
error, just visual inspection).

ERROR: "drm_helper_probe_single_connector_modes" [drivers/gpu/drm/i2c/ch7006.ko] undefined!

Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agodrm/nouveau: Add DRM driver for NVIDIA GPUs
Ben Skeggs [Fri, 11 Dec 2009 09:24:15 +0000 (19:24 +1000)]
drm/nouveau: Add DRM driver for NVIDIA GPUs

This adds a drm/kms staging non-API stable driver for GPUs from NVIDIA.

This driver is a KMS-based driver and requires a compatible nouveau
userspace libdrm and nouveau X.org driver.

This driver requires firmware files not available in this kernel tree,
interested parties can find them via the nouveau project git archive.

This driver is reverse engineered, and is in no way supported by nVidia.

Support for nearly the complete range of nvidia hw from nv04->g80 (nv50)
is available, and the kms driver should support driving nearly all
output types (displayport is under development still) along with supporting
suspend/resume.

This work is all from the upstream nouveau project found at
nouveau.freedesktop.org.

The original authors list from nouveau git tree is:
Anssi Hannula <anssi.hannula@iki.fi>
Ben Skeggs <bskeggs@redhat.com>
Francisco Jerez <currojerez@riseup.net>
Maarten Maathuis <madman2003@gmail.com>
Marcin Kościelnicki <koriakin@0x04.net>
Matthew Garrett <mjg@redhat.com>
Matt Parnell <mparnell@gmail.com>
Patrice Mandin <patmandin@gmail.com>
Pekka Paalanen <pq@iki.fi>
Xavier Chantry <shiningxc@gmail.com>
along with project founder Stephane Marchesin <marchesin@icps.u-strasbg.fr>

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/ttm: export some functions useful to drivers using ttm
Ben Skeggs [Fri, 11 Dec 2009 05:13:00 +0000 (15:13 +1000)]
drm/ttm: export some functions useful to drivers using ttm

These are functions required by nouveau which will be merged later.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms/avivo: fix typo in new_pll module description
Alex Deucher [Thu, 10 Dec 2009 00:38:58 +0000 (19:38 -0500)]
drm/radeon/kms/avivo: fix typo in new_pll module description

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: Convert radeon to new ttm_bo_init
Jerome Glisse [Thu, 10 Dec 2009 16:16:28 +0000 (17:16 +0100)]
drm/radeon/kms: Convert radeon to new ttm_bo_init

Now bo init use placement structure like bo validation does.

Signed-off-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/ttm: Convert ttm_buffer_object_init to use ttm_placement
Jerome Glisse [Thu, 10 Dec 2009 16:16:27 +0000 (17:16 +0100)]
drm/ttm: Convert ttm_buffer_object_init to use ttm_placement

Convert ttm_buffer_object_init to use struct ttm_placement and
rename to ttm_bo_init for consistency with function naming. This
allow to give more complex placement at buffer creation. For
instance you ask to allocate bo into vram first but if there is
not enough vram you can give system as a second possible
placement. It also allow to create buffer in a specific range.

Also rename ttm_buffer_object_validate to ttm_bo_validate.

Signed-off-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: fix warning about cur_placement being uninitialised.
Dave Airlie [Thu, 10 Dec 2009 05:59:32 +0000 (15:59 +1000)]
drm/radeon/kms: fix warning about cur_placement being uninitialised.

Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agoMerge remote branch 'korg/drm-radeon-next' of into drm-linus
Dave Airlie [Thu, 10 Dec 2009 05:47:57 +0000 (15:47 +1000)]
Merge remote branch 'korg/drm-radeon-next' of into drm-linus

This merges some TTM overhauls to allow us to do better object placement
for certain radeon GPUs that need scanout+cursor within range of each other,
along with an API change to not return ERESTART to userspace, but to use
ERESTARTSYS properly internally and have it convert to EINTR and catch that
correctly. Also lots of radeon fixes across the board.

14 years agoMerge remote branch 'anholt/drm-intel-next' into drm-linus
Dave Airlie [Thu, 10 Dec 2009 05:44:11 +0000 (15:44 +1000)]
Merge remote branch 'anholt/drm-intel-next' into drm-linus

Pull more Intel changes in, especially one to init the GTT properly

14 years agodrm/ttm: Print debug information on memory manager when eviction fails
Jerome Glisse [Wed, 9 Dec 2009 20:55:10 +0000 (21:55 +0100)]
drm/ttm: Print debug information on memory manager when eviction fails

This add helper function to print information on eviction placements
and memory manager status when eviction fails to allocate memory
space.

Signed-off-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm: Add memory manager debug function
Jerome Glisse [Wed, 9 Dec 2009 20:55:09 +0000 (21:55 +0100)]
drm: Add memory manager debug function

drm_mm_debug_table will print the memory manager state
in table allowing to give a snapshot of the manager at
given point in time. Usefull for debugging.

Signed-off-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: restore surface registers on resume.
Dave Airlie [Wed, 9 Dec 2009 04:15:38 +0000 (14:15 +1000)]
drm/radeon/kms: restore surface registers on resume.

On resume on my rv530 laptop surface cntl was left disabled, so
wierd stuff would happen with rendering to a tiled front buffer.

This checks if the surface regs are assigned to bos and reprograms
the surface registers on resume using the same path that clears
them all on init.

Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms/r600/r700: fallback gracefully on ucode failure
Alex Deucher [Thu, 10 Dec 2009 00:31:44 +0000 (19:31 -0500)]
drm/radeon/kms/r600/r700: fallback gracefully on ucode failure

Sent the wrong patch earlier.

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/ttm: Initialize eviction placement in case the driver callback doesn't
Jerome Glisse [Wed, 9 Dec 2009 21:14:27 +0000 (22:14 +0100)]
drm/ttm: Initialize eviction placement in case the driver callback doesn't

This would allow to catch driver callback error of not properly
setting the eviction placement structure.

Signed-off-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@linux.ie>
14 years agodrm/radeon/kms: cleanup structure and module if initialization fails
Jerome Glisse [Wed, 9 Dec 2009 17:21:55 +0000 (18:21 +0100)]
drm/radeon/kms: cleanup structure and module if initialization fails

This would allow us to properly unload others module like TTM if
initialization fails after we initiliazed TTM structure.

Signed-off-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@linux.ie>
14 years agodrm/radeon/kms: actualy set the eviction placements we choose
Jerome Glisse [Wed, 9 Dec 2009 20:57:37 +0000 (21:57 +0100)]
drm/radeon/kms: actualy set the eviction placements we choose

Stupid bug, somehow copying the eviction placements into the
result structure was missing.

Signed-off-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@linux.ie>
14 years agodrm/radeon/kms: Fix NULL ptr dereference
Jerome Glisse [Wed, 9 Dec 2009 16:39:16 +0000 (17:39 +0100)]
drm/radeon/kms: Fix NULL ptr dereference

radeon_atombios_fini might be call while there is not valid
atombios structure allocated, thus test for a not null ptr
before trying to access this structure.

Signed-off-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@linux.ie>
14 years agodrm/radeon/kms/avivo: add support for new pll selection algo
Alex Deucher [Wed, 9 Dec 2009 22:44:25 +0000 (17:44 -0500)]
drm/radeon/kms/avivo: add support for new pll selection algo

Supported on all AVIVO-based asics.
Can be disabled via the new_pll module parameter:
new_pll=0 - disable
new_pll=1 - enable
enabled by default

[airlied: fixed to use do_div]
Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@linux.ie>
14 years agodrm/radeon/kms/avivo: fix some bugs in the display bandwidth setup
Alex Deucher [Wed, 9 Dec 2009 19:40:06 +0000 (14:40 -0500)]
drm/radeon/kms/avivo: fix some bugs in the display bandwidth setup

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@linux.ie>
14 years agodrm/radeon/kms: fix return value from fence function.
Dave Airlie [Wed, 9 Dec 2009 05:32:23 +0000 (15:32 +1000)]
drm/radeon/kms: fix return value from fence function.

We only want to return here for errors, the wait functions return
a positive timeout otherwise, which gets back to userspace and
causes X to crash here.

Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon: Remove tests for -ERESTART from the TTM code.
Thomas Hellstrom [Mon, 7 Dec 2009 17:36:19 +0000 (18:36 +0100)]
drm/radeon: Remove tests for -ERESTART from the TTM code.

Also sets affected TTM calls up to not wait interruptible, since
that would cause an in-kernel spin until the TTM call succeeds, since
the Radeon code does not return to user-space when a signal is received.

Modifies interruptible fence waits to return -ERESTARTSYS rather than
-EBUSY when interrupted by a signal, since that's the (yet undocumented)
semantics required by the TTM sync object hooks.

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/ttm: Have the TTM code return -ERESTARTSYS instead of -ERESTART.
Thomas Hellstrom [Mon, 7 Dec 2009 17:36:18 +0000 (18:36 +0100)]
drm/ttm: Have the TTM code return -ERESTARTSYS instead of -ERESTART.

Return -ERESTARTSYS instead of -ERESTART when interrupted by a signal.
The -ERESTARTSYS is converted to an -EINTR by the kernel signal layer
before returned to user-space.

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: Convert radeon to new TTM validation API (V2)
Jerome Glisse [Mon, 7 Dec 2009 14:52:58 +0000 (15:52 +0100)]
drm/radeon/kms: Convert radeon to new TTM validation API (V2)

This convert radeon to use new TTM validation API, it doesn't
really take advantage of it beside in the eviction case.

Signed-off-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/ttm: Rework validation & memory space allocation (V3)
Jerome Glisse [Tue, 8 Dec 2009 14:33:32 +0000 (15:33 +0100)]
drm/ttm: Rework validation & memory space allocation (V3)

This change allow driver to pass sorted memory placement,
from most prefered placement to least prefered placement.
In order to avoid long function prototype a structure is
used to gather memory placement informations such as range
restriction (if you need a buffer to be in given range).
Range restriction is determined by fpfn & lpfn which are
the first page and last page number btw which allocation
can happen. If those fields are set to 0 ttm will assume
buffer can be put anywhere in the address space (thus it
avoids putting a burden on the driver to always properly
set those fields).

This patch also factor few functions like evicting first
entry of lru list or getting a memory space. This avoid
code duplication.

V2: Change API to use placement flags and array instead
    of packing placement order into a quadword.
V3: Make sure we set the appropriate mem.placement flag
    when validating or allocation memory space.

[Pending Thomas Hellstrom further review but okay
from preliminary review so far].

Signed-off-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm: Add search/get functions to get a block in a specific range
Jerome Glisse [Mon, 7 Dec 2009 14:52:56 +0000 (15:52 +0100)]
drm: Add search/get functions to get a block in a specific range

These are required for changes to TTM.

Signed-off-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: fix avivo tiling regression since radeon object rework
Dave Airlie [Tue, 8 Dec 2009 05:45:13 +0000 (15:45 +1000)]
drm/radeon/kms: fix avivo tiling regression since radeon object rework

The object rework moved the tiling flag setup around wrongly,
so tiling we getting setup then overwritten by fb format.

Fixes regression with drm-radeon-next on rv530 laptop tiling test.

Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/i915: Remove a debugging printk from hangcheck
Chris Wilson [Tue, 8 Dec 2009 22:12:06 +0000 (22:12 +0000)]
drm/i915: Remove a debugging printk from hangcheck

A residual bare printk survived the merger of the hang detector, remove
this debugging left-over.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Eric Anholt <eric@anholt.net>
14 years agodrm/radeon/kms: make sure i2c id matches
Alex Deucher [Tue, 8 Dec 2009 19:30:49 +0000 (14:30 -0500)]
drm/radeon/kms: make sure i2c id matches

Entries in the i2c table aren't always ordered
by id.  This allows us to remove some quirks
that are no longer needed.

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: make sure ss id matches
Alex Deucher [Tue, 8 Dec 2009 19:07:03 +0000 (14:07 -0500)]
drm/radeon/kms: make sure ss id matches

entries in the ss table aren't always ordered
by id.

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: connector fixes
Alex Deucher [Tue, 8 Dec 2009 17:48:20 +0000 (12:48 -0500)]
drm/radeon/kms: connector fixes

- Don't add dac load detection property to DVI-D
- Make sure i2c info is valid before adding DP aux chan bus
- Don't create scaling_mode_property twice
- fix typo that prevented coherent and load detection from working
- add coherent prop to DP (for dp->dvi adapters)

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/ttm: fix memory leak noticed by kmemleak.
Dave Airlie [Tue, 8 Dec 2009 05:58:08 +0000 (15:58 +1000)]
drm/ttm: fix memory leak noticed by kmemleak.

If we don't need the zone we need to free it.

Acked-By: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm: disable all the possible outputs/crtcs before entering KMS mode
Zhao Yakui [Wed, 9 Dec 2009 03:23:42 +0000 (11:23 +0800)]
drm: disable all the possible outputs/crtcs before entering KMS mode

Sometimes we will use a crtc for integerated LVDS, which is different with
that assigned by BIOS. If we want to get flicker-free transitions,
then we could read out the current state for it and set our current state
accordingly.

But it is true that if we aren't reading current state out, we do need
to turn everything off before modesetting.  Otherwise the clocks can get very
angry and we get things worse than a flicker at boot.
In fact we also do the similar thing in UMS mode. We will disable all the
possible outputs/crtcs for the first modesetting.

So we disable all the possible outputs/crtcs before entering the KMS mode.
Before we configure connector/encoder/crtc, the function of
drm_helper_disable_unused_function can disable all the possible outputs/crtcs.

Signed-off-by: Zhao Yakui <yakui.zhao@intel.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Rafal Milecki <zajec5@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/i915: restore render clock gating on resume
Andrew Lutomirski [Sun, 8 Nov 2009 18:49:51 +0000 (13:49 -0500)]
drm/i915: restore render clock gating on resume

Rather than restoring just a few clock gating registers on resume,
just reinitialize the whole thing.

Signed-off-by: Andy Lutomirski <luto@mit.edu>
[anholt: Fixed up for RC6 support landed since the patch was written]
Signed-off-by: Eric Anholt <eric@anholt.net>
14 years agoMerge remote branch 'korg/drm-radeon-dp' into drm-linus
Dave Airlie [Tue, 8 Dec 2009 04:29:15 +0000 (14:29 +1000)]
Merge remote branch 'korg/drm-radeon-dp' into drm-linus

This merges the radeon KMS DisplayPort and hotplug detect support.

Tested on RV635 DP card with a Dell 2408 monitor.

Conflicts:
drivers/gpu/drm/drm_fb_helper.c

14 years agoMerge remote branch 'korg/drm-radeon-next' into drm-linus
Dave Airlie [Tue, 8 Dec 2009 04:06:07 +0000 (14:06 +1000)]
Merge remote branch 'korg/drm-radeon-next' into drm-linus

This merges all the radeon changes that weren't reliant on core-next.

14 years agoMerge remote branch 'anholt/drm-intel-next' into drm-linus
Dave Airlie [Tue, 8 Dec 2009 04:03:47 +0000 (14:03 +1000)]
Merge remote branch 'anholt/drm-intel-next' into drm-linus

This merges the upstream Intel tree and fixes up numerous conflicts
due to patches merged into Linus tree later in -rc cycle.

Conflicts:
drivers/char/agp/intel-agp.c
drivers/gpu/drm/drm_dp_i2c_helper.c
drivers/gpu/drm/i915/i915_irq.c
drivers/gpu/drm/i915/i915_suspend.c

14 years agoMerge branch 'drm-core-next' into drm-linus
Dave Airlie [Tue, 8 Dec 2009 03:52:41 +0000 (13:52 +1000)]
Merge branch 'drm-core-next' into drm-linus

Bring all core drm changes into 2.6.32 tree and resolve
the conflict that occurs.

Conflicts:
drivers/gpu/drm/drm_fb_helper.c

14 years agodrm/kms: fix fb cmap allocation to use modeset->crtc not crtc
Ben Skeggs [Tue, 8 Dec 2009 01:15:10 +0000 (11:15 +1000)]
drm/kms: fix fb cmap allocation to use modeset->crtc not crtc

crtc may be undefined at this point.

Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: enable hpd support
Alex Deucher [Fri, 4 Dec 2009 21:56:37 +0000 (16:56 -0500)]
drm/radeon/kms: enable hpd support

This enabled interrupt driven hpd support for all
radeon chips.  Assuming the hpd pin is wired up
correctly, the driver will generate uevents on
digital monitor connect and disconnect and retrain
DP monitors automatically.

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: add asic callbacks for hpd
Alex Deucher [Fri, 4 Dec 2009 20:26:55 +0000 (15:26 -0500)]
drm/radeon/kms: add asic callbacks for hpd

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: add hpd support for r6xx/r7xx/rs780/rs880 asics
Alex Deucher [Fri, 4 Dec 2009 20:12:21 +0000 (15:12 -0500)]
drm/radeon/kms: add hpd support for r6xx/r7xx/rs780/rs880 asics

This just adds the functionality, it's not hooked up
yet.

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: add hpd support for r5xx/rs600/rs690/rs740 asics
Alex Deucher [Fri, 4 Dec 2009 20:04:19 +0000 (15:04 -0500)]
drm/radeon/kms: add hpd support for r5xx/rs600/rs690/rs740 asics

This just adds the functionality, it's not hooked up
yet.

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: add hpd support for r1xx-r4xx asics
Alex Deucher [Fri, 4 Dec 2009 19:53:41 +0000 (14:53 -0500)]
drm/radeon/kms: add hpd support for r1xx-r4xx asics

This just adds the functionality, it's not hooked up
yet.

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: add regs and irq tracking bits for hpd
Alex Deucher [Thu, 3 Dec 2009 18:08:53 +0000 (13:08 -0500)]
drm/radeon/kms: add regs and irq tracking bits for hpd

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: get HPD info for connectors
Alex Deucher [Fri, 4 Dec 2009 19:45:27 +0000 (14:45 -0500)]
drm/radeon/kms: get HPD info for connectors

This populates the connectors with HPD (Hot Plug Detect)
information.  This will be used in subsequent patches
for automatic digital monitor connect/disconnect handling.

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: clean up DP debugging
Alex Deucher [Fri, 27 Nov 2009 18:14:37 +0000 (13:14 -0500)]
drm/radeon/kms: clean up DP debugging

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: fix DP detect
Alex Deucher [Fri, 27 Nov 2009 18:01:46 +0000 (13:01 -0500)]
drm/radeon/kms: fix DP detect

only return connected if there is actually a
monitor connected.

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: drop unused array to fix warning.
Dave Airlie [Wed, 25 Nov 2009 22:57:23 +0000 (08:57 +1000)]
drm/radeon/kms: drop unused array to fix warning.

Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: do dp link training at dpms on time not mode set.
Dave Airlie [Wed, 25 Nov 2009 22:56:35 +0000 (08:56 +1000)]
drm/radeon/kms: do dp link training at dpms on time not mode set.

This moves the radeon DP link training call to happen when we
dpms on the encoder not when we set the mode.

Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: make displayport work by reorganising vsemph setup.
Dave Airlie [Wed, 25 Nov 2009 22:55:18 +0000 (08:55 +1000)]
drm/radeon/kms: make displayport work by reorganising vsemph setup.

This fix reorganises the initial DP link training slightly, and
actually makes DP work under kms here.

Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms/dp: fix return in dpcd retrival.
Dave Airlie [Wed, 25 Nov 2009 22:49:17 +0000 (08:49 +1000)]
drm/radeon/kms/dp: fix return in dpcd retrival.

Not returning here caused us to get a display port version of 0 for everything
this caused power up to not get sent which ends up in a black screen.

Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: free aux channel i2c adapter on destroy
Alex Deucher [Tue, 24 Nov 2009 21:13:23 +0000 (16:13 -0500)]
drm/radeon/kms: free aux channel i2c adapter on destroy

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: add support for DP modesetting
Alex Deucher [Tue, 24 Nov 2009 18:32:59 +0000 (13:32 -0500)]
drm/radeon/kms: add support for DP modesetting

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: handle dp sinks in atom encoder/transmitter tables
Alex Deucher [Mon, 23 Nov 2009 23:40:40 +0000 (18:40 -0500)]
drm/radeon/kms: handle dp sinks in atom encoder/transmitter tables

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: store sink type in atom dig connector
Alex Deucher [Mon, 23 Nov 2009 23:02:35 +0000 (18:02 -0500)]
drm/radeon/kms: store sink type in atom dig connector

This will be used laster when the encoder and transmitters
are set up.

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: i2c reorg
Alex Deucher [Mon, 23 Nov 2009 22:39:28 +0000 (17:39 -0500)]
drm/radeon/kms: i2c reorg

- keep the atom i2c id in the i2c rec
- fix gpio regs for GPIO and MDGPIO on pre-avivo chips
- track whether the i2c line is hw capable
- track whether the i2c line uses the multimedia i2c block

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: DP fixes and cleanup from the ddx
Alex Deucher [Sat, 21 Nov 2009 00:40:13 +0000 (19:40 -0500)]
drm/radeon/kms: DP fixes and cleanup from the ddx

- dpcp -> dpcd
- fix up dig encoder routing
- aux transaction table takes delay in 10 usec units

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: initial radeon displayport porting
Dave Airlie [Mon, 7 Dec 2009 21:07:28 +0000 (07:07 +1000)]
drm/radeon/kms: initial radeon displayport porting

This is enough to retrieve EDID and DPCP.

Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/i915: Set the error code after failing to insert new offset into mm ht.
Chris Wilson [Wed, 2 Dec 2009 15:15:30 +0000 (15:15 +0000)]
drm/i915: Set the error code after failing to insert new offset into mm ht.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: stable@kernel.org
Signed-off-by: Eric Anholt <eric@anholt.net>
14 years agodrm/i915: Report purgeable status in buffer lists.
Chris Wilson [Wed, 2 Dec 2009 16:48:57 +0000 (16:48 +0000)]
drm/i915: Report purgeable status in buffer lists.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Eric Anholt <eric@anholt.net>
14 years agoagp/intel-agp: Clear entire GTT on startup
David Woodhouse [Wed, 2 Dec 2009 11:00:05 +0000 (11:00 +0000)]
agp/intel-agp: Clear entire GTT on startup

Some BIOSes fail to initialise the GTT, which will cause DMA faults when
the IOMMU is enabled. We need to clear the whole thing to point at the
scratch page, not just the part that Linux is going to use.

Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
[anholt: Note that this may also help with stability in the presence of
driver bugs, by not drawing to memory we don't own]
Signed-off-by: Eric Anholt <eric@anholt.net>
14 years agodrm/ttm: fix unreachable code.
Dave Airlie [Mon, 7 Dec 2009 23:25:45 +0000 (09:25 +1000)]
drm/ttm: fix unreachable code.

None of the in-tree drivers use user objects yet so this wasn't hitting
us.

Stanse found unreachable code in ttm_bo_add_ttm:
http://decibel.fi.muni.cz/~xslaby/stanse/error.cgi?db=32&id=714#l238

Reported-by: Jiri Slaby <jirislaby@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/intel: refactor DP i2c support and DP common header to drm helper
Dave Airlie [Fri, 4 Dec 2009 00:55:24 +0000 (10:55 +1000)]
drm/intel: refactor DP i2c support and DP common header to drm helper

Both radeon and nouveau can re-use this code so move it up a level
so they can. However the hw interfaces for aux ch are different
enough that the code to translate from mode, address, bytes
to actual hw interfaces isn't generic, so move that code into the
Intel driver.

Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: fix vram setup on rs600/rs690/rs740
Alex Deucher [Mon, 7 Dec 2009 00:45:17 +0000 (19:45 -0500)]
drm/radeon/kms: fix vram setup on rs600/rs690/rs740

Don't remap vram to 0 on IGP chips.

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/i915: Fix product names and #defines
Adam Jackson [Thu, 3 Dec 2009 22:14:42 +0000 (17:14 -0500)]
drm/i915: Fix product names and #defines

IGD* isn't a useful name.  Replace with the codenames, as sourced from
pci.ids.

Signed-off-by: Adam Jackson <ajax@redhat.com>
[anholt: Fixed up for merge with pineview/ironlake changes]
Signed-off-by: Eric Anholt <eric@anholt.net>
14 years agodrm/radeon/kms: more r4xx lvds fixes
Alex Deucher [Fri, 4 Dec 2009 21:35:57 +0000 (16:35 -0500)]
drm/radeon/kms: more r4xx lvds fixes

Grab pll ref div from regs at driver init.  r4xx seems very
picky about the dividers for the pll driving lvds.

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms/legacy: set common regs to sane value
Alex Deucher [Fri, 4 Dec 2009 15:55:12 +0000 (10:55 -0500)]
drm/radeon/kms/legacy: set common regs to sane value

The DDX and radeonfb always set these regs to a sane value.

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms/legacy: set overscan regs on modeset
Alex Deucher [Fri, 4 Dec 2009 15:40:41 +0000 (10:40 -0500)]
drm/radeon/kms/legacy: set overscan regs on modeset

These can end up with garbage otherwise.

fixes rh bug 537140

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: add support to atom parser for FB read/write
Dave Airlie [Mon, 16 Nov 2009 20:29:46 +0000 (06:29 +1000)]
drm/radeon/kms: add support to atom parser for FB read/write

FB read/write really doesn't need to access the actual VRAM, we
can just use a scratch area. This is required for using atom displayport
calls later.

Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agoagp/intel: Fix product names and #defines
Adam Jackson [Thu, 3 Dec 2009 22:14:41 +0000 (17:14 -0500)]
agp/intel: Fix product names and #defines

IGD* isn't a useful name.  Replace with the codenames, as sourced
from pci.ids.

Signed-off-by: Adam Jackson <ajax@redhat.com>
Signed-off-by: Eric Anholt <eric@anholt.net>
14 years agoMerge remote branch 'origin/drm-core-next' into test
Dave Airlie [Mon, 7 Dec 2009 21:03:55 +0000 (07:03 +1000)]
Merge remote branch 'origin/drm-core-next' into test

Conflicts:
drivers/gpu/drm/drm_fb_helper.c

14 years agodrm/i915: Drop a some common DRM_ERROR()
Chris Wilson [Mon, 7 Dec 2009 11:34:08 +0000 (11:34 +0000)]
drm/i915: Drop a some common DRM_ERROR()

These are handled by the error return being propagated to user-space and
do not any add any information to the original error, so are useless.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Eric Anholt <eric@anholt.net>
14 years agodrm/i915: warn if Pineview CxSR can't be enabled
Jesse Barnes [Thu, 3 Dec 2009 17:52:43 +0000 (09:52 -0800)]
drm/i915: warn if Pineview CxSR can't be enabled

If we don't detect a supported memory configuration, we can't enable
CxSR.  Warn the user in this case so they can file a bug.

14 years agodrm/i915: pageflip fixes
Jesse Barnes [Wed, 2 Dec 2009 21:42:53 +0000 (13:42 -0800)]
drm/i915: pageflip fixes

This patch brings the tree up to date with some fixes that were in a
more recent version of the page flipping patch you applied.  It fixes
pre-965 flip support, removes a leftover hack that forced alignment,
and initializes the pipe & plane CRTC mappings.

Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Signed-off-by: Eric Anholt <eric@anholt.net>
14 years agodrm: Export symbols needed for the vmwgfx driver.
Thomas Hellstrom [Sun, 6 Dec 2009 20:46:28 +0000 (21:46 +0100)]
drm: Export symbols needed for the vmwgfx driver.

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/ttm: Export symbols needed for the vmwgfx driver.
Thomas Hellstrom [Sun, 6 Dec 2009 20:46:27 +0000 (21:46 +0100)]
drm/ttm: Export symbols needed for the vmwgfx driver.

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/ttm: Add TTM execbuf utilities.
Thomas Hellstrom [Sun, 6 Dec 2009 20:46:26 +0000 (21:46 +0100)]
drm/ttm: Add TTM execbuf utilities.

Utilities to reserve, unreserve and fence a list of TTM
buffer objects in a deadlock-safe manner.

Used by the vmwgfx driver.

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/ttm: Add ttm lock functionality.
Thomas Hellstrom [Sun, 6 Dec 2009 20:46:25 +0000 (21:46 +0100)]
drm/ttm: Add ttm lock functionality.

This is intended to be used by ttm-aware drivers to
1) Block clients to inactive masters when
they try to validate buffers for GPU use.
2) Optionally block clients to the current master when
there is thrashing due to GPU memory shortage.

Used by the vmwgfx driver.

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/ttm: Add user-space objects.
Thomas Hellstrom [Sun, 6 Dec 2009 20:46:24 +0000 (21:46 +0100)]
drm/ttm: Add user-space objects.

Add objects needed for user-space to maintain reference counts on ttm objects.
This is used by the vmwgfx driver which allows user-space to maintain
map-counts on dma buffers, lock-counts on the ttm lock and ref-counts on
gpu surfaces, gpu contexts and dma buffer.

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: fix RS600 MC setup.
Dave Airlie [Mon, 7 Dec 2009 03:29:51 +0000 (13:29 +1000)]
drm/radeon/kms: fix RS600 MC setup.

Again we try to put VRAM at 0, and it didn't work on this chipset,
reports of corrupt RAM appeared on irc and bugzilla.

Fix the vram location according to what the BIOS setup, I'm not 100%
sure we don't need the same thing on rs690/rs780/rs880, we probably
should do it there just in case as its what the DDX does.

Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: fix up gart setup on rs600
Alex Deucher [Sat, 5 Dec 2009 22:55:37 +0000 (17:55 -0500)]
drm/radeon/kms: fix up gart setup on rs600

Set up rs600 gart like r600:
- set gart system aperture to vram
- inside gart system aperture is unmapped*
- outside gart system aperture is mapped*

*mapped refers to memory handled by page tables

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: quirk for Gigabyte RV515 card, DVI+VGA not 2xDVI.
Dave Airlie [Fri, 4 Dec 2009 01:51:34 +0000 (11:51 +1000)]
drm/radeon/kms: quirk for Gigabyte RV515 card, DVI+VGA not 2xDVI.

Similiar to other quirks for RV515, this card has no second DVI port.

Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: rs6xx/rs740: clamp vram to aperture size
Alex Deucher [Thu, 3 Dec 2009 21:28:02 +0000 (16:28 -0500)]
drm/radeon/kms: rs6xx/rs740: clamp vram to aperture size

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Cc: stable@kernel.org
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: fix vram setup on rs600
Alex Deucher [Thu, 3 Dec 2009 21:18:19 +0000 (16:18 -0500)]
drm/radeon/kms: fix vram setup on rs600

also fix up rs690 mem width.

should fix fdo bug 25408

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Cc: stable@kernel.org
Signed-off-by: Dave Airlie <airlied@redhat.com>