openwrt/staging/blogic.git
14 years agodrm/radeon/kms/pm: voltage fixes
Alex Deucher [Thu, 27 May 2010 21:01:42 +0000 (17:01 -0400)]
drm/radeon/kms/pm: voltage fixes

- Enable GPIO voltage for non pm modes as well so resetting
the default voltage works.

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms/pm: radeon_set_power_state fixes
Alex Deucher [Thu, 27 May 2010 21:01:41 +0000 (17:01 -0400)]
drm/radeon/kms/pm: radeon_set_power_state fixes

- wait for vbl for both profile and dynpm
- unify profile and dynpm code paths more
- call pm_misc before of after clocks to make
sure voltage is changed in the proper order.

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms/pm: patch default power state with default clocks/voltages on r6xx+
Alex Deucher [Thu, 27 May 2010 21:01:40 +0000 (17:01 -0400)]
drm/radeon/kms/pm: patch default power state with default clocks/voltages on r6xx+

The default power state does not always match the default clocks and voltage
for a particular card.  The information in the firmware info table is correct
and should be used in preference to the info the default power state.

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms/pm: enable SetVoltage on r7xx/evergreen
Alex Deucher [Fri, 28 May 2010 23:35:01 +0000 (19:35 -0400)]
drm/radeon/kms/pm: enable SetVoltage on r7xx/evergreen

I missed these in the r6xx commit.

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms/pm: add support for SetVoltage cmd table (V2)
Alex Deucher [Thu, 27 May 2010 23:25:54 +0000 (19:25 -0400)]
drm/radeon/kms/pm: add support for SetVoltage cmd table (V2)

- This enables voltage adjustment on r6xx+ and certain
r5xx asics.
- Voltage drop support is already available for most
r1xx-r5xx asics.

V2: endian fix for voltage table.

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms/evergreen: add initial CS parser
Alex Deucher [Fri, 28 May 2010 23:01:35 +0000 (19:01 -0400)]
drm/radeon/kms/evergreen: add initial CS parser

Advanced validation is not implemented yet.
The mesa code that uses this will be released soon.

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agoMerge remote branch 'nouveau/for-airlied' of ../drm-nouveau-next into drm-testing
Dave Airlie [Tue, 1 Jun 2010 01:32:29 +0000 (11:32 +1000)]
Merge remote branch 'nouveau/for-airlied' of ../drm-nouveau-next into drm-testing

* 'nouveau/for-airlied' of ../drm-nouveau-next:
  drm/nv50: cast IGP memory location to u64 before shifting
  drm/nv50: use alternate source of SOR_MODE_CTRL for DP hack
  drm/nouveau: fix dual-link displays when plugged into single-link outputs
  drm/nv50: obey dcb->duallink_possible
  drm/nv50: fix duallink_possible calculation for DCB 4.0 cards
  drm/nouveau: don't execute INIT_GPIO unless we're really running the table
  drm/nv40: allow cold-booting of nv4x chipsets
  drm/nouveau: fix POST detection for certain chipsets
  drm/nouveau: Add getparam for current PTIMER time.
  drm/nouveau: allow cursor image and position to survive suspend

14 years agoMerge branch 'drm-switcheroo-fixes' into drm-testing
Dave Airlie [Tue, 1 Jun 2010 01:32:06 +0000 (11:32 +1000)]
Merge branch 'drm-switcheroo-fixes' into drm-testing

* drm-switcheroo-fixes:
  drm/kms: disable/enable poll around switcheroo on/off
  drm/nouveau: fixup confusion over which handle the DSM is hanging off.
  drm/nouveau: attempt to get bios from ACPI v3

14 years agoMerge branch 'drm-vmware-fixes' into drm-testing
Dave Airlie [Tue, 1 Jun 2010 01:32:06 +0000 (11:32 +1000)]
Merge branch 'drm-vmware-fixes' into drm-testing

* drm-vmware-fixes:
  drm/vmwgfx: Remove some leftover debug messages.
  drm/vmwgfx: Print warnings in kernel log about bo pinning that fails.
  drm/vmwgfx: Unpause overlay on update.
  drm/vmwgfx: Some modesetting cleanups and fixes.
  drm/vmwgfx: Don't use SVGA_REG_ENABLE in modesetting code.
  drm/vmwgfx: Remove duplicate member from struct vmw_legacy_display_unit.
  drm/vmwgfx: Reserve first part of VRAM for framebuffer.
  drm/vmwgfx: Support older hardware.
  drm/vmwgfx: Get connector status from detection function.
  drm/vmwgfx: Add kernel throttling support. Bump minor.
  drm/vmwgfx: Make sure to unpin old and pin new framebuffer.
  drm/vmwgfx: Fix single framebuffer detection.
  drm/vmwgfx: Assume larger framebuffer max size.

14 years agodrm/kms: disable/enable poll around switcheroo on/off
Dave Airlie [Mon, 31 May 2010 23:09:06 +0000 (09:09 +1000)]
drm/kms: disable/enable poll around switcheroo on/off

Because we aren't in a suspend state the poll will still run when we have switcherooed a card off.

Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/nouveau: fixup confusion over which handle the DSM is hanging off.
Dave Airlie [Mon, 31 May 2010 07:10:52 +0000 (17:10 +1000)]
drm/nouveau: fixup confusion over which handle the DSM is hanging off.

This fixes the DSM setup correctly since vga switcheroo.

Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/nouveau: attempt to get bios from ACPI v3
Dave Airlie [Wed, 7 Apr 2010 03:55:09 +0000 (13:55 +1000)]
drm/nouveau: attempt to get bios from ACPI v3

Some of the laptops with the switchable graphics, seem to not post the secondary GPU at all, and we can't find a copy of the BIOS anywhere except in the ACPI rom retrieval.

This adds support for ACPI ROM retrieval to nouveau.

Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/nv50: cast IGP memory location to u64 before shifting
Ben Skeggs [Sun, 30 May 2010 23:04:03 +0000 (09:04 +1000)]
drm/nv50: cast IGP memory location to u64 before shifting

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agodrm/ttm: Fix ttm_page_alloc.c
Thomas Hellstrom [Wed, 26 May 2010 14:21:04 +0000 (16:21 +0200)]
drm/ttm: Fix ttm_page_alloc.c

Fix a number of typos misspellings and checkpatch.pl warnings.
Replace "[ttm] " with TTM_PFX

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/ttm: Fix cached TTM page allocation.
Thomas Hellstrom [Wed, 26 May 2010 14:21:03 +0000 (16:21 +0200)]
drm/ttm: Fix cached TTM page allocation.

This patch fixes a regression introduced with the pool page allocator
in the event that there are no highmem pages (for example x86_64),
in which case cached page allocation would fail.

Tested with the vmwgfx driver on a 64-bit vm.

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/vmwgfx: Remove some leftover debug messages.
Thomas Hellstrom [Fri, 28 May 2010 09:22:06 +0000 (11:22 +0200)]
drm/vmwgfx: Remove some leftover debug messages.

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/vmwgfx: Print warnings in kernel log about bo pinning that fails.
Jakob Bornecrantz [Fri, 28 May 2010 09:22:05 +0000 (11:22 +0200)]
drm/vmwgfx: Print warnings in kernel log about bo pinning that fails.

Signed-off-by: Jakob Bornecrantz <jakob@vmware.com>
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/vmwgfx: Unpause overlay on update.
Jakob Bornecrantz [Fri, 28 May 2010 09:22:04 +0000 (11:22 +0200)]
drm/vmwgfx: Unpause overlay on update.

The unpause codepath uses vmw_overlay_update() so we must
unset the paused status.

Signed-off-by: Jakob Bornecrantz <jakob@vmware.com>
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/vmwgfx: Some modesetting cleanups and fixes.
Jakob Bornecrantz [Fri, 28 May 2010 09:22:03 +0000 (11:22 +0200)]
drm/vmwgfx: Some modesetting cleanups and fixes.

Signed-off-by: Jakob Bornecrantz <jakob@vmware.com>
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/vmwgfx: Don't use SVGA_REG_ENABLE in modesetting code.
Jakob Bornecrantz [Fri, 28 May 2010 09:22:02 +0000 (11:22 +0200)]
drm/vmwgfx: Don't use SVGA_REG_ENABLE in modesetting code.

We should not use SVGA_REG_ENABLE anywhere but in the fifo setup code,
since it controls whether the device is active.

Signed-off-by: Jakob Bornecrantz <jakob@vmware.com>
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/vmwgfx: Remove duplicate member from struct vmw_legacy_display_unit.
Jakob Bornecrantz [Fri, 28 May 2010 09:22:01 +0000 (11:22 +0200)]
drm/vmwgfx: Remove duplicate member from struct vmw_legacy_display_unit.

Signed-off-by: Jakob Bornecrantz <jakob@vmware.com>
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/vmwgfx: Reserve first part of VRAM for framebuffer.
Thomas Hellstrom [Fri, 28 May 2010 09:22:00 +0000 (11:22 +0200)]
drm/vmwgfx: Reserve first part of VRAM for framebuffer.

The host may be touching this part of VRAM at modesetting,
even if we never use it ourselves, since we blit screen updates from 3D
surfaces. Make sure no DMA buffers are placed in this part of VRAM.

V2: Fix an error check in vmw_surface_dmabuf_pin().

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Jakob Bornecrantz <jakob@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/vmwgfx: Support older hardware.
Jakob Bornecrantz [Fri, 28 May 2010 09:21:59 +0000 (11:21 +0200)]
drm/vmwgfx: Support older hardware.

V2: Fix a couple of typos.

Signed-off-by: Jakob Bornecrantz <jakob@vmware.com>
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/vmwgfx: Get connector status from detection function.
Jakob Bornecrantz [Fri, 28 May 2010 09:21:58 +0000 (11:21 +0200)]
drm/vmwgfx: Get connector status from detection function.

Also make sure the ldu::active member is properly initialized.
Part of fix by Michel Daenzer <daenzer@vmware.com>.

Signed-off-by: Jakob Bornecrantz <jakob@vmware.com>
Signed-off-by: Michel Daenzer <daenzer@vmware.com>
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/vmwgfx: Add kernel throttling support. Bump minor.
Thomas Hellstrom [Fri, 28 May 2010 09:21:57 +0000 (11:21 +0200)]
drm/vmwgfx: Add kernel throttling support. Bump minor.

The throttle_us member in the execbuf argument is now honored.
If the member is 0, no waiting for lag will occur, which
guarantees backwards compatibility with well-behaved clients.

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/vmwgfx: Make sure to unpin old and pin new framebuffer.
Jakob Bornecrantz [Fri, 28 May 2010 09:21:56 +0000 (11:21 +0200)]
drm/vmwgfx: Make sure to unpin old and pin new framebuffer.

Signed-off-by: Jakob Bornecrantz <jakob@vmware.com>
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/vmwgfx: Fix single framebuffer detection.
Jakob Bornecrantz [Fri, 28 May 2010 09:21:55 +0000 (11:21 +0200)]
drm/vmwgfx: Fix single framebuffer detection.

V2: Fix a typo.

Signed-off-by: Jakob Bornecrantz <jakob@vmware.com>
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/vmwgfx: Assume larger framebuffer max size.
Jakob Bornecrantz [Fri, 28 May 2010 09:21:54 +0000 (11:21 +0200)]
drm/vmwgfx: Assume larger framebuffer max size.

Signed-off-by: Jakob Bornecrantz <jakob@vmware.com>
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon: fix the r100/r200 ums block 0 page fix
Dave Airlie [Fri, 28 May 2010 20:50:37 +0000 (06:50 +1000)]
drm/radeon: fix the r100/r200 ums block 0 page fix

airlied -> brown paper bag.

I blame Hi-5 or the Wiggles for lowering my IQ, move the fix inside some
brackets instead of breaking everything in site.

Cc: stable@kernel.org
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/nv50: use alternate source of SOR_MODE_CTRL for DP hack
Ben Skeggs [Fri, 28 May 2010 17:06:14 +0000 (03:06 +1000)]
drm/nv50: use alternate source of SOR_MODE_CTRL for DP hack

Fixes module unload+reload on Dell M4500, where the "normal" registers
get reset to 0.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agodrm/nouveau: fix dual-link displays when plugged into single-link outputs
Ben Skeggs [Fri, 28 May 2010 00:13:16 +0000 (10:13 +1000)]
drm/nouveau: fix dual-link displays when plugged into single-link outputs

When selecting the native mode for a display we weren't taking into account
whether or not it was actually supported on that particular output.

This patch modifies our native mode selection to run all modes through
mode_valid() first.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agodrm/nv50: obey dcb->duallink_possible
Ben Skeggs [Fri, 28 May 2010 00:04:05 +0000 (10:04 +1000)]
drm/nv50: obey dcb->duallink_possible

It was once assumed that all G8x had dual-link TMDS everywhere, this isn't
actually the case - especially considering passive DP->DVI converters and
some HDMI connectors only support single-link.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agodrm/nv50: fix duallink_possible calculation for DCB 4.0 cards
Ben Skeggs [Thu, 27 May 2010 23:39:11 +0000 (09:39 +1000)]
drm/nv50: fix duallink_possible calculation for DCB 4.0 cards

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agodrm/nouveau: don't execute INIT_GPIO unless we're really running the table
Ben Skeggs [Wed, 26 May 2010 00:41:45 +0000 (10:41 +1000)]
drm/nouveau: don't execute INIT_GPIO unless we're really running the table

This resulted in accidently switching off the eDP panel on certain laptops
since the default state in the GPIO table was off.

Fixes rh#582621

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agodrm/nv40: allow cold-booting of nv4x chipsets
Ben Skeggs [Tue, 25 May 2010 03:48:07 +0000 (13:48 +1000)]
drm/nv40: allow cold-booting of nv4x chipsets

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agodrm/nouveau: fix POST detection for certain chipsets
Ben Skeggs [Tue, 25 May 2010 03:47:16 +0000 (13:47 +1000)]
drm/nouveau: fix POST detection for certain chipsets

We totally fail at detecting un-POSTed chipsets prior to G80.  This commit
changes the pre-G80 POST detection to read the programmed horizontal total
from CRTC 0, and assume the card isn't POSTed if it's 0.

NVIDIA use some other heuristics more similar to what we do on G80, but I
wasted quite a long time trying to figure out the exact specifics of what
they do so we can try this for a bit instead.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agodrm/nouveau: Add getparam for current PTIMER time.
Marcin Kościelnicki [Sun, 23 May 2010 11:36:04 +0000 (11:36 +0000)]
drm/nouveau: Add getparam for current PTIMER time.

This will be useful for computing GPU-CPU latency, including
GL_ARB_timer_query extension.

Signed-off-by: Marcin Kościelnicki <koriakin@0x04.net>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agodrm/nouveau: allow cursor image and position to survive suspend
Maarten Maathuis [Sun, 9 May 2010 12:49:52 +0000 (14:49 +0200)]
drm/nouveau: allow cursor image and position to survive suspend

- This isn't triggered yet on a normal kernel, because it still does a VT
switch, but it seemed like a good idea to fix this now.

Tested-by: Maxim Levitsky <maximlevitsky@gmail.com>
Signed-off-by: Maarten Maathuis <madman2003@gmail.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agoagp: amd64, fix pci reference leaks
Jiri Slaby [Mon, 24 May 2010 19:14:15 +0000 (12:14 -0700)]
agp: amd64, fix pci reference leaks

Stanse found pci reference leaks in uli_agp_init and nforce3_agp_init
initialization functions.

The PCI devices are bridges, so it's not critical, but still worth fixing.

Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/edid: Allow non-fatal checksum errors in CEA blocks
Adam Jackson [Tue, 25 May 2010 20:33:09 +0000 (16:33 -0400)]
drm/edid: Allow non-fatal checksum errors in CEA blocks

Switches will try to update the topology address and not correctly fix
up the checksum, so just let it slide.

https://bugs.freedesktop.org/28229

Signed-off-by: Adam Jackson <ajax@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: suppress a build warning (unused variable)
Stefan Richter [Wed, 26 May 2010 00:27:44 +0000 (10:27 +1000)]
drm/radeon/kms: suppress a build warning (unused variable)

At least 'make CONFIG_DEBUG_SECTION_MISMATCH=y' causes
drivers/gpu/drm/radeon/atombios_crtc.c: In function 'atombios_crtc_set_pll':
drivers/gpu/drm/radeon/atombios_crtc.c:684: warning: 'pll' may be used uninitialized in this function
which has the looks of a falso positive.

Add a default: case so that gcc rests assured that all possible pll_id's are covered.
Keep the present cases that fall through to the default one for self-documentation.

Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Reviewed-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm: Fixes linux-next & linux-2.6 checkstack warnings:
Prarit Bhargava [Mon, 24 May 2010 00:24:07 +0000 (10:24 +1000)]
drm: Fixes linux-next & linux-2.6 checkstack warnings:

drivers/gpu/drm/nouveau/nv40_graph.c: In function `nv40_graph_init':
drivers/gpu/drm/nouveau/nv40_graph.c:400: warning: the frame size of 1184 bytes is larger than 1024 bytes
drivers/gpu/drm/radeon/radeon_atombios.c: In function `radeon_get_atom_connector_info_from_supported_devices_table':
drivers/gpu/drm/radeon/radeon_atombios.c:857: warning: the frame size of 1872 bytes is larger than 1024 bytes

Signed-off-by: Prarit Bhargava <prarit@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agonouveau: fix acpi_lid_open undefined
Randy Dunlap [Mon, 24 May 2010 00:00:40 +0000 (17:00 -0700)]
nouveau: fix acpi_lid_open undefined

When CONFIG_ACPI_BUTTON=m (and probably when ACPI_BUTTON is not enabled)
and NOUVEAU is built-in (not as a loadable module):

nouveau_connector.c:(.text+0xe17ce): undefined reference to `acpi_lid_open'

Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
Acked-by: Ben Skeggs <bskeggs@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: release AGP bridge at suspend
Jerome Glisse [Fri, 21 May 2010 16:48:54 +0000 (18:48 +0200)]
drm/radeon/kms: release AGP bridge at suspend

I think it's good to release the AGP bridge at suspend
and reacquire it at resume. Also fix :
https://bugzilla.kernel.org/show_bug.cgi?id=15969

Signed-off-by: Jerome Glisse <jglisse@redhat.com>
Cc: stable <stable@kernel.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms/pm/r600: select the mid clock mode for single head low profile
Alex Deucher [Thu, 20 May 2010 22:44:49 +0000 (18:44 -0400)]
drm/radeon/kms/pm/r600: select the mid clock mode for single head low profile

This saves some more power at the expense of performance.

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agoMerge remote branch 'nouveau/for-airlied' into drm-next
Dave Airlie [Fri, 21 May 2010 05:44:32 +0000 (15:44 +1000)]
Merge remote branch 'nouveau/for-airlied' into drm-next

* nouveau/for-airlied:
  drm/nouveau: fix i2c-related init table handlers
  drm/nouveau: support init table i2c device identifier 0x81
  drm/nouveau: ensure we've parsed i2c table entry for INIT_*I2C* handlers
  drm/nouveau: display error message for any failed init table opcode
  drm/nouveau: fix init table handlers to return proper error codes
  drm/nv50: support fractional feedback divider on newer chips
  drm/nv50: fix monitor detection on certain chipsets
  drm/nv50: store full dcb i2c entry from vbios
  drm/nv50: fix suspend/resume with DP outputs
  drm/nv50: output calculated crtc pll when debugging on
  drm/nouveau: dump pll limits entries when debugging is on
  drm/nouveau: bios parser fixes for eDP boards
  drm/nouveau: fix a nouveau_bo dereference after it's been destroyed
  drm/nv40: remove some completed ctxprog TODOs
  drm/nv04: Implement missing nv04 PGRAPH methods in software.
  drm/nouveau: Use 0x5f instead of 0x9f as imageblit on original NV10.

14 years agodrm/radeon: fix power supply kconfig interaction.
Dave Airlie [Fri, 21 May 2010 05:41:20 +0000 (15:41 +1000)]
drm/radeon: fix power supply kconfig interaction.

radeon needs power supply to get correct PM info so select it at the radeon
level not at the kms option.

Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: record object that have been list reserved
Jerome Glisse [Wed, 19 May 2010 14:05:50 +0000 (16:05 +0200)]
drm/radeon/kms: record object that have been list reserved

list reservation was too optimistic about ttm object reservation
and could think that an object reserved by some other process
as reserved by the list reservation which was false. Thus when
unreserving the list it might unreserve object that it didn't
reserved in the list. Sorry if it's hard to follow but this
kind of things are just causing headheck.

Signed-off-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon: AGP memory is only I/O if the aperture can be mapped by the CPU.
Michel Dänzer [Wed, 19 May 2010 10:46:22 +0000 (12:46 +0200)]
drm/radeon: AGP memory is only I/O if the aperture can be mapped by the CPU.

Fixes AGP initialization failure with Apple UniNorth bridges due to trying to
ioremap() normal RAM.

Signed-off-by: Michel Dänzer <daenzer@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: don't default display priority to high on rs4xx
Alex Deucher [Thu, 20 May 2010 15:26:11 +0000 (11:26 -0400)]
drm/radeon/kms: don't default display priority to high on rs4xx

Seems to cause issues with the sound hardware.  Fixes kernel
bug 15982:
https://bugzilla.kernel.org/show_bug.cgi?id=15982

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Cc: stable@kernel.org
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/edid: fix typo in 1600x1200@75 mode
Alex Deucher [Wed, 19 May 2010 15:43:40 +0000 (11:43 -0400)]
drm/edid: fix typo in 1600x1200@75 mode

Spotted by Scott Bertilson.
Fixes fdo bug 28146.

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Reviewed-by: Mark Marshall <mark.marshall@csr.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/nouveau: fix i2c-related init table handlers
Ben Skeggs [Wed, 12 May 2010 06:30:50 +0000 (16:30 +1000)]
drm/nouveau: fix i2c-related init table handlers

Mutliple issues.  INIT_ZM_I2C_BYTE/INIT_I2C_BYTE didn't even try and
use the register value, and all the handlers were using the wrong
slave address.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agodrm/nouveau: support init table i2c device identifier 0x81
Ben Skeggs [Wed, 12 May 2010 04:45:04 +0000 (14:45 +1000)]
drm/nouveau: support init table i2c device identifier 0x81

It appears to be meant to reference the second "default index".

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agodrm/nouveau: ensure we've parsed i2c table entry for INIT_*I2C* handlers
Ben Skeggs [Wed, 12 May 2010 04:38:25 +0000 (14:38 +1000)]
drm/nouveau: ensure we've parsed i2c table entry for INIT_*I2C* handlers

We may not have parsed the entry yet if the i2c_index is for an i2c bus
that's not referenced by a DCB encoder.

This could be done oh so much more nicely, except we have to care about
prehistoric DCB tables too, and they make life painful.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agodrm/nouveau: display error message for any failed init table opcode
Ben Skeggs [Mon, 10 May 2010 06:59:42 +0000 (16:59 +1000)]
drm/nouveau: display error message for any failed init table opcode

Some handlers don't report specific errors, but we still *really* want to
know if we failed to parse a complete init table.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agodrm/nouveau: fix init table handlers to return proper error codes
Ben Skeggs [Mon, 10 May 2010 06:54:23 +0000 (16:54 +1000)]
drm/nouveau: fix init table handlers to return proper error codes

We really want to be able to distinguish between INIT_DONE and an actual
error sometimes.  This commit fixes up several lazy "return 0;" to be
actual error codes, and explicitly reserves "0" as "success, but stop
parsing this table".

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agodrm/nv50: support fractional feedback divider on newer chips
Ben Skeggs [Wed, 28 Apr 2010 04:07:06 +0000 (14:07 +1000)]
drm/nv50: support fractional feedback divider on newer chips

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agodrm/nv50: fix monitor detection on certain chipsets
Ben Skeggs [Fri, 23 Apr 2010 17:53:14 +0000 (03:53 +1000)]
drm/nv50: fix monitor detection on certain chipsets

There appears to be some kind of switch on certain chips to control whether
the DP auxch or traditional i2c bus will be operational on a connector,
this commit hopefully fixes nouveau to do the right thing.

Likely only relevent on chips with DP outputs.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agodrm/nv50: store full dcb i2c entry from vbios
Ben Skeggs [Fri, 23 Apr 2010 17:05:56 +0000 (03:05 +1000)]
drm/nv50: store full dcb i2c entry from vbios

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agodrm/nv50: fix suspend/resume with DP outputs
Ben Skeggs [Thu, 22 Apr 2010 22:21:48 +0000 (08:21 +1000)]
drm/nv50: fix suspend/resume with DP outputs

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agodrm/nv50: output calculated crtc pll when debugging on
Ben Skeggs [Thu, 22 Apr 2010 17:53:42 +0000 (03:53 +1000)]
drm/nv50: output calculated crtc pll when debugging on

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agodrm/nouveau: dump pll limits entries when debugging is on
Ben Skeggs [Thu, 22 Apr 2010 17:08:02 +0000 (03:08 +1000)]
drm/nouveau: dump pll limits entries when debugging is on

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agodrm/nouveau: bios parser fixes for eDP boards
Ben Skeggs [Mon, 19 Apr 2010 16:28:37 +0000 (02:28 +1000)]
drm/nouveau: bios parser fixes for eDP boards

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agodrm/nouveau: fix a nouveau_bo dereference after it's been destroyed
Ben Skeggs [Thu, 15 Apr 2010 04:42:34 +0000 (14:42 +1000)]
drm/nouveau: fix a nouveau_bo dereference after it's been destroyed

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agodrm/nv40: remove some completed ctxprog TODOs
Ben Skeggs [Mon, 12 Apr 2010 03:35:10 +0000 (13:35 +1000)]
drm/nv40: remove some completed ctxprog TODOs

I actually thought these were gone already when the initial commit was
done.. I guess not!

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agodrm/nv04: Implement missing nv04 PGRAPH methods in software.
Marcin Kościelnicki [Sun, 11 Apr 2010 18:41:38 +0000 (18:41 +0000)]
drm/nv04: Implement missing nv04 PGRAPH methods in software.

Signed-off-by: Marcin Kościelnicki <koriakin@0x04.net>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agodrm/nouveau: Use 0x5f instead of 0x9f as imageblit on original NV10.
Marcin Kościelnicki [Sun, 11 Apr 2010 18:16:21 +0000 (18:16 +0000)]
drm/nouveau: Use 0x5f instead of 0x9f as imageblit on original NV10.

Signed-off-by: Marcin Kościelnicki <koriakin@0x04.net>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
14 years agodrm/radeon: fix hdmi offset bug reported by smatch.
Dave Airlie [Wed, 19 May 2010 00:35:02 +0000 (10:35 +1000)]
drm/radeon: fix hdmi offset bug reported by smatch.

Reported-by: Dan Carpenter
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: hpd cleanup
Alex Deucher [Tue, 18 May 2010 23:26:47 +0000 (19:26 -0400)]
drm/radeon/kms: hpd cleanup

- Use radeon hpd enum consistently (in both hotplug and dp)
- Legacy r100 with DVI should be HPD_1 not NONE

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: reset ddc_bus in object header parsing
Alex Deucher [Tue, 18 May 2010 23:26:46 +0000 (19:26 -0400)]
drm/radeon/kms: reset ddc_bus in object header parsing

Some LVDS connectors don't have a ddc bus, so reset the
ddc bus to invalid before parsing the next connector
to avoid using stale ddc bus data.  Should fix
fdo bug 28164.

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Cc: stable@kernel.org
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agoamd64-agp: Probe unknown AGP devices the right way
Ben Hutchings [Wed, 24 Mar 2010 03:36:31 +0000 (03:36 +0000)]
amd64-agp: Probe unknown AGP devices the right way

The current initialisation code probes 'unsupported' AGP devices
simply by calling its own probe function.  It does not lock these
devices or even check whether another driver is already bound to
them.

We must use the device core to manage this.  So if the specific
device id table didn't match anything and agp_try_unsupported=1,
switch the device id table and call driver_attach() again.

Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agosis-agp: Remove SIS 760, handled by amd64-agp
Ben Hutchings [Wed, 24 Mar 2010 03:33:48 +0000 (03:33 +0000)]
sis-agp: Remove SIS 760, handled by amd64-agp

SIS 760 is listed in the device tables for both amd64-agp and sis-agp.
amd64-agp is apparently preferable since it has workarounds for some
BIOS misconfigurations that sis-agp doesn't handle.

Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agoMerge remote branch 'anholt/drm-intel-next' into drm-next
Dave Airlie [Tue, 18 May 2010 23:35:51 +0000 (09:35 +1000)]
Merge remote branch 'anholt/drm-intel-next' into drm-next

* anholt/drm-intel-next: (515 commits)
  drm/i915: Fix out of tree builds
  drm/i915: move fence lru to struct drm_i915_fence_reg
  drm/i915: don't allow tiling changes on pinned buffers v2
  drm/i915: Be extra careful about A/D matching for multifunction SDVO
  drm/i915: Fix DDC bus selection for multifunction SDVO
  drm/i915: cleanup mode setting before unmapping registers
  drm/i915: Make fbc control wrapper functions
  drm/i915: Wait for the GPU whilst shrinking, if truly desperate.
  drm/i915: Use spatio-temporal dithering on PCH
  [MTD] Remove zero-length files mtdbdi.c and internal.ho
  pata_pcmcia / ide-cs: Fix bad hashes for Transcend and kingston IDs
  libata: Fix several inaccuracies in developer's guide
  slub: Fix bad boundary check in init_kmem_cache_nodes()
  raid6: fix recovery performance regression
  KEYS: call_sbin_request_key() must write lock keyrings before modifying them
  KEYS: Use RCU dereference wrappers in keyring key type code
  KEYS: find_keyring_by_name() can gain access to a freed keyring
  ALSA: hda: Fix 0 dB for Packard Bell models using Conexant CX20549 (Venice)
  ALSA: hda - Add quirk for Dell Inspiron 19T using a Conexant CX20582
  ALSA: take tu->qlock with irqs disabled
  ...

14 years agodrm/radeon/pm: fix device_create_file return value checks.
Dave Airlie [Tue, 18 May 2010 09:00:14 +0000 (19:00 +1000)]
drm/radeon/pm: fix device_create_file return value checks.

print an error if these fail.

Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms/pm: fix r6xx+ profile setup
Alex Deucher [Mon, 17 May 2010 23:41:26 +0000 (19:41 -0400)]
drm/radeon/kms/pm: fix r6xx+ profile setup

This patch is a combination of the previous two profile
patches, but without the index bugs.  It cleans up and
fixes some issues with pm profile setup on r6xx chips.
Some tables have different orderings for the power states,
also, r600 only has 1 clock mode per power state. On
desktop cards there are no battery modes, so the low and high
power states are the same.  For the low profile case, choose
the lower clock mode.

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms/pm: make pm spam debug only
Alex Deucher [Fri, 7 May 2010 20:58:27 +0000 (16:58 -0400)]
drm/radeon/kms/pm: make pm spam debug only

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms/pm: rework power management
Alex Deucher [Fri, 7 May 2010 19:10:16 +0000 (15:10 -0400)]
drm/radeon/kms/pm: rework power management

- Separate dynpm and profile based power management methods.  You can select the pm method
  by echoing the selected method ("dynpm" or "profile") to power_method in sysfs.
- Expose basic 4 profile in profile method
  "default" - default clocks
  "auto" - select between low and high based on ac/dc state
  "low" - DC, low power mode
  "high" - AC, performance mode
  The current base profile is "default", but it should switched to "auto" once we've tested
  on more systems.  Switching the state is a matter of echoing the requested profile to
  power_profile in sysfs.  The lowest power states are selected automatically when dpms turns
  the monitors off in all states but default.
- Remove dynamic fence-based reclocking for the moment.  We can revisit this later once we
  have basic pm in.
- Move pm init/fini to modesetting path.  pm is tightly coupled with display state.  Make sure
  display side is initialized before pm.
- Add pm suspend/resume functions to make sure pm state is properly reinitialized on resume.
- Remove dynpm module option.  It's now selectable via sysfs.

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms/pm: add support for no display power states
Alex Deucher [Mon, 3 May 2010 05:13:14 +0000 (01:13 -0400)]
drm/radeon/kms/pm: add support for no display power states

The lowest power states often cause display problems, so only enable
them when all displays are off.

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: fix lock ordering in ring, ib handling
Alex Deucher [Thu, 6 May 2010 15:02:24 +0000 (11:02 -0400)]
drm/radeon/kms: fix lock ordering in ring, ib handling

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agoradeon: Use fences to gate entry to reclocking on <r600
Matthew Garrett [Fri, 30 Apr 2010 19:48:23 +0000 (15:48 -0400)]
radeon: Use fences to gate entry to reclocking on <r600

GUI idle interrupts don't seem to work terribly well on r500 and earlier,
so let's use a fence instead.

Signed-off-by: Matthew Garrett <mjg@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agoradeon: Split out ring locking and allocation
Matthew Garrett [Fri, 30 Apr 2010 19:24:17 +0000 (15:24 -0400)]
radeon: Split out ring locking and allocation

We need to handle the ring while we've already locked it, so split out
the allocation and commit functions in order to allow them to be used.

Signed-off-by: Matthew Garrett <mjg@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: enable misc pm power state features on r1xx-r4xx
Alex Deucher [Fri, 30 Apr 2010 19:34:12 +0000 (15:34 -0400)]
drm/radeon/kms: enable misc pm power state features on r1xx-r4xx

voltage drop, dynamic voltage, dynamic sclk, pcie lane adjust, etc,

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: enable misc pm power state features on r5xx, rs6xx
Alex Deucher [Thu, 29 Apr 2010 20:33:38 +0000 (16:33 -0400)]
drm/radeon/kms: enable misc pm power state features on r5xx, rs6xx

voltage drop, dynamic voltage, dynamic sclk, pcie lane adjust, etc,

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: re-enable gui idle interrupts on r6xx+
Alex Deucher [Thu, 29 Apr 2010 20:14:02 +0000 (16:14 -0400)]
drm/radeon/kms: re-enable gui idle interrupts on r6xx+

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: take vram mutex pointer before derefing object.
Dave Airlie [Thu, 29 Apr 2010 08:37:59 +0000 (18:37 +1000)]
drm/radeon/kms: take vram mutex pointer before derefing object.

since derefing the object might free it.

Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms: more pm fixes
Alex Deucher [Thu, 29 Apr 2010 04:22:43 +0000 (00:22 -0400)]
drm/radeon/kms: more pm fixes

- disable gui idle interrupt use
  Seems to hang some r5xx chips
- move vbl range check into
  existing vbl check function in
  radeon_pm.c
- disable crtc mc acccess for the
  whole reclocking process

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm: move radeon_fixed.h to shared drm_fixed.h header
Ben Skeggs [Wed, 28 Apr 2010 01:46:42 +0000 (11:46 +1000)]
drm: move radeon_fixed.h to shared drm_fixed.h header

Will be used by nouveau driver also in the near future.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agoradeon: Enable memory reclocking on r100-500
Matthew Garrett [Wed, 28 Apr 2010 18:45:05 +0000 (14:45 -0400)]
radeon: Enable memory reclocking on r100-500

This seems to be relatively stable now, so enable it for these chipsets
too.

Signed-off-by: Matthew Garrett <mjg@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agoradeon: Try harder to ensure we reclock in vblank
Matthew Garrett [Wed, 28 Apr 2010 16:13:06 +0000 (12:13 -0400)]
radeon: Try harder to ensure we reclock in vblank

The vblank interrupt on r600 doesn't seem to be especially reliable, so
perform some sanity checks before the actual reclock.

Signed-off-by: Matthew Garrett <mjg@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agoradeon: Fix locking in power management paths
Matthew Garrett [Tue, 27 Apr 2010 21:16:58 +0000 (17:16 -0400)]
radeon: Fix locking in power management paths

The ttm code could take vram_mutex followed by cp_mutex, while the
reclocking code would do the reverse. Hilarity could ensue.

Signed-off-by: Matthew Garrett <mjg@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agoradeon: Make sure that we determine the correct PM state before transition
Matthew Garrett [Tue, 27 Apr 2010 17:58:46 +0000 (13:58 -0400)]
radeon: Make sure that we determine the correct PM state before transition

We need to choose the correct PM state to transition into before starting
the actual change. Call radeon_get_power_state() at the top of the clock
setting to do so.

Signed-off-by: Matthew Garrett <mjg@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agoradeon: Enable memory reclockong on r600
Matthew Garrett [Mon, 26 Apr 2010 21:01:16 +0000 (17:01 -0400)]
radeon: Enable memory reclockong on r600

With luck, dynamic memory reclocking on r600 should be stable with
the previous patches. Enable it.

Signed-off-by: Matthew Garrett <mjg@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agoradeon: Stop the ttm workqueue while reclocking
Matthew Garrett [Mon, 26 Apr 2010 20:02:26 +0000 (16:02 -0400)]
radeon: Stop the ttm workqueue while reclocking

The ttm bo workqueue may touch objects while we're reclocking, so make
sure it's blocked until we're done.

Signed-off-by: Matthew Garrett <mjg@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agottm: Provide an API for starting and stopping the delayed workqueue
Matthew Garrett [Mon, 26 Apr 2010 20:00:09 +0000 (16:00 -0400)]
ttm: Provide an API for starting and stopping the delayed workqueue

We want to be able to prevent the delayed workqueue from changing state
while we're reclocking, so add an API to block and unblock it.

Signed-off-by: Matthew Garrett <mjg@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agoradeon: Take drm struct_mutex over reclocking
Matthew Garrett [Mon, 26 Apr 2010 19:57:01 +0000 (15:57 -0400)]
radeon: Take drm struct_mutex over reclocking

We need to block the drm core from doing anything that may touch our vram
during reclock, so take the drm mutex for the duration.

Signed-off-by: Matthew Garrett <mjg@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agoradeon: Unmap vram pages when reclocking
Matthew Garrett [Mon, 26 Apr 2010 19:52:20 +0000 (15:52 -0400)]
radeon: Unmap vram pages when reclocking

Touching vram while the card is reclocking can lead to lockups. Unmap
any pages that could be touched by the CPU and block any accesses to
vram until the reclocking is complete.

Signed-off-by: Matthew Garrett <mjg@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agoradeon: Unify PM entry paths
Matthew Garrett [Mon, 26 Apr 2010 19:45:23 +0000 (15:45 -0400)]
radeon: Unify PM entry paths

There's a moderate amount of effort involved in setting the card up for
clock transitions, so unify the codepaths to make it easier to implement.

Signed-off-by: Matthew Garrett <mjg@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms/pm: rework power management
Alex Deucher [Sat, 24 Apr 2010 18:50:23 +0000 (14:50 -0400)]
drm/radeon/kms/pm: rework power management

Add two new sysfs attributes:
- dynpm
- power_state

Echoing 0/1 to dynpm disables/enables dynamic power management.
The driver scales the sclk dynamically based on the number of
queued fences.  dynpm only scales sclk dynamically in single head
mode.

Echoing x.y to power_state selects a static power state (x) and clock
mode (y).  This allows you to statically select a power state and clock
mode.  Selecting a static clock mode will disable dynpm.

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms/pm: add additional asic callbacks
Alex Deucher [Fri, 23 Apr 2010 21:57:27 +0000 (17:57 -0400)]
drm/radeon/kms/pm: add additional asic callbacks

- pm_misc() - handles voltage, pcie lanes, and other non
clock related power mode settings.  Currently disabled.
Needs further debugging

- pm_prepare() - disables crtc mem requests right now.
All memory clients need to be disabled when changing
memory clocks.  This function can be expanded to include
disabling fb access as well.

- pm_finish() - enable active memory clients.

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
14 years agodrm/radeon/kms/pm: restore default power state on exit
Alex Deucher [Mon, 22 Mar 2010 17:31:08 +0000 (13:31 -0400)]
drm/radeon/kms/pm: restore default power state on exit

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