platform/upstream/libdrm.git
16 years agoradeon_ms: add rom parsing & adapt code
Jerome Glisse [Tue, 15 Jan 2008 13:05:25 +0000 (14:05 +0100)]
radeon_ms: add rom parsing & adapt code

Add rom (only combios for now) parsing and use informations
retrieve instead of hardcoded table. Shuffle code around a
bit.

16 years agoFix for X axis panning problem
Jakob Bornecrantz [Fri, 11 Jan 2008 16:33:00 +0000 (17:33 +0100)]
Fix for X axis panning problem

16 years agoPanning now works without modeset
Jakob Bornecrantz [Fri, 11 Jan 2008 16:13:48 +0000 (17:13 +0100)]
Panning now works without modeset

16 years agoUpdated the modedemo test
Jakob Bornecrantz [Fri, 11 Jan 2008 03:23:32 +0000 (04:23 +0100)]
Updated the modedemo test

16 years agoAdded fixed misc framebuffer problems
Jakob Bornecrantz [Fri, 11 Jan 2008 01:55:00 +0000 (02:55 +0100)]
Added fixed misc framebuffer problems

16 years agoUpdated test mode and added modedemo
Jakob Bornecrantz [Thu, 10 Jan 2008 04:03:13 +0000 (05:03 +0100)]
Updated test mode and added modedemo

16 years agofixup crtcinfo on modes from userspace
Dave Airlie [Wed, 9 Jan 2008 07:11:17 +0000 (18:11 +1100)]
fixup crtcinfo on modes from userspace

16 years agoadd control node open
Dave Airlie [Wed, 9 Jan 2008 07:11:04 +0000 (18:11 +1100)]
add control node open

16 years agoadd internals for opening a control node
Dave Airlie [Wed, 9 Jan 2008 05:44:31 +0000 (16:44 +1100)]
add internals for opening a control node

16 years agoallow control getversion
Dave Airlie [Wed, 9 Jan 2008 05:43:51 +0000 (16:43 +1100)]
allow control getversion

16 years agoadd control ioctls
Dave Airlie [Wed, 9 Jan 2008 05:31:37 +0000 (16:31 +1100)]
add control ioctls

16 years agodrm: only call suspend/resume on control node
Dave Airlie [Wed, 9 Jan 2008 05:21:56 +0000 (16:21 +1100)]
drm: only call suspend/resume on control node

16 years agodrm: add initial support for a drm control device node
Dave Airlie [Fri, 4 Jan 2008 06:49:40 +0000 (17:49 +1100)]
drm: add initial support for a drm control device node

16 years agocrtc: fixup allocation size
Dave Airlie [Fri, 4 Jan 2008 06:48:42 +0000 (17:48 +1100)]
crtc: fixup allocation size

16 years agodrm: move drm_head to drm_minor and fix up users
Dave Airlie [Fri, 4 Jan 2008 05:12:24 +0000 (16:12 +1100)]
drm: move drm_head to drm_minor and fix up users

16 years agos/TRUE/true
Dave Airlie [Fri, 21 Dec 2007 08:38:55 +0000 (18:38 +1000)]
s/TRUE/true

16 years agoradeon_ms: update to follow lastest modesetting change
Jerome Glisse [Thu, 20 Dec 2007 11:35:54 +0000 (12:35 +0100)]
radeon_ms: update to follow lastest modesetting change

16 years agoradeon_ms: add sarea & install header
Jerome Glisse [Wed, 19 Dec 2007 17:27:38 +0000 (18:27 +0100)]
radeon_ms: add sarea & install header

16 years agoMerge branch 'modesetting-airlied' into modesetting-101
Dave Airlie [Tue, 18 Dec 2007 08:18:21 +0000 (19:18 +1100)]
Merge branch 'modesetting-airlied' into modesetting-101

16 years agoHERE BEZ HACKZ.. magic variable to make shit work
Dave Airlie [Tue, 18 Dec 2007 08:18:05 +0000 (19:18 +1100)]
HERE BEZ HACKZ.. magic variable to make shit work

16 years agolockdep warned about a possible locking dependency
Dave Airlie [Tue, 18 Dec 2007 08:17:11 +0000 (19:17 +1100)]
lockdep warned about a possible locking dependency

16 years agowe should not be unlocking this here
Dave Airlie [Tue, 18 Dec 2007 08:16:51 +0000 (19:16 +1100)]
we should not be unlocking this here

16 years agoremove output names
Dave Airlie [Tue, 18 Dec 2007 06:41:20 +0000 (17:41 +1100)]
remove output names

16 years agoFixed build
Jakob Bornecrantz [Tue, 18 Dec 2007 01:52:09 +0000 (02:52 +0100)]
Fixed build

16 years agoFix and cleanup of Hotplug
Jakob Bornecrantz [Tue, 18 Dec 2007 01:09:48 +0000 (02:09 +0100)]
Fix and cleanup of Hotplug

16 years agoModesetting Hotplug
Jakob Bornecrantz [Tue, 4 Dec 2007 14:36:36 +0000 (15:36 +0100)]
Modesetting Hotplug

16 years agoMerge branch 'master' of git+ssh://git.freedesktop.org/git/mesa/drm into modesetting-101
Alan Hourihane [Thu, 13 Dec 2007 10:41:23 +0000 (10:41 +0000)]
Merge branch 'master' of git+ssh://git.freedesktop.org/git/mesa/drm into modesetting-101

16 years agocatch an out of memory condition
Alan Hourihane [Thu, 13 Dec 2007 10:40:36 +0000 (10:40 +0000)]
catch an out of memory condition

16 years agoMake relocation validate client computed values when debugging
Keith Packard [Wed, 12 Dec 2007 04:21:23 +0000 (20:21 -0800)]
Make relocation validate client computed values when debugging

16 years agoi915: wait for buffer idle before writing relocations
Keith Packard [Thu, 6 Dec 2007 23:12:21 +0000 (15:12 -0800)]
i915: wait for buffer idle before writing relocations

When writing a relocation entry, make sure the target buffer is idle,
otherwise the GPU may see inconsistent data.

16 years agoBump driver minor for relocation optimzations
Keith Packard [Wed, 5 Dec 2007 04:54:53 +0000 (20:54 -0800)]
Bump driver minor for relocation optimzations

16 years agoAllow relocation to be skipped when buffers don't move.
Keith Packard [Tue, 4 Dec 2007 20:22:30 +0000 (12:22 -0800)]
Allow relocation to be skipped when buffers don't move.

One of the costs of superioctl has been the need to perform relocations
inside the kernel. The cost of mapping the buffers to the CPU and writing
data is fairly high, especially if those buffers have been mapped and read
by the GPU.

If we assume that buffers don't move around very often, we can have the
client compute the relocations itself using the previous GPU address. When
that object doesn't move, the kernel can skip computing and writing the
updated data.

Here's a patch which adds a new field to struct drm_bo_info_req called
'presumed_offset', and a new DRM_BO_HINT_PRESUMED_OFFSET that is set when
this field has been filled in by the client.

There are two separate optimizations performed when the presumed_offset is
correct:

 1. i915_exec_reloc checks to see if all previous buffer offsets were guessed
    correctly. If so, there's no need for it to look at *any* of the
    relocations for a buffer. When this happens, it skips the whole
    relocation process, simply returning success.

 2. i915_apply_reloc checks to see if the target buffer offset was guessed
    correctly. If so, it skips mapping the relocatee, computing the
    relocation and writing the value. If no relocations are needed, the
    relocatee should never be mapped to the CPU, and so the kernel shouldn't
    need to wait for any fences to pass.

16 years agoMerge branch 'master' of ssh://git.freedesktop.org/git/mesa/drm into modesetting-101
Dave Airlie [Tue, 11 Dec 2007 06:58:00 +0000 (16:58 +1000)]
Merge branch 'master' of ssh://git.freedesktop.org/git/mesa/drm into modesetting-101

Conflicts:

linux-core/drm_drv.c
shared-core/drm.h
shared-core/i915_dma.c

16 years agomodesetting: fixup property setting and add connector property
Dave Airlie [Tue, 11 Dec 2007 05:56:48 +0000 (15:56 +1000)]
modesetting: fixup property setting and add connector property

16 years agomodesetting: add dpms property and initial settable property ioctl
Dave Airlie [Tue, 11 Dec 2007 04:46:51 +0000 (14:46 +1000)]
modesetting: add dpms property and initial settable property ioctl

16 years agodrm: move agp include outside CONFIG_AGP as it isn't dependant on agp in kernel
Dave Airlie [Mon, 10 Dec 2007 00:13:52 +0000 (10:13 +1000)]
drm: move agp include outside CONFIG_AGP as it isn't dependant on agp in kernel

16 years agomach64: comment bus master / ring buffer behavior and security
José Fonseca [Sat, 8 Dec 2007 19:21:27 +0000 (19:21 +0000)]
mach64: comment bus master / ring buffer behavior and security

16 years agoradeon_ms: fix pll computation to follow hw constraint
Jerome Glisse [Fri, 7 Dec 2007 23:45:33 +0000 (00:45 +0100)]
radeon_ms: fix pll computation to follow hw constraint

16 years agoFix pipe<->plane mapping vs. vblank handling (again)
Jesse Barnes [Fri, 7 Dec 2007 22:24:45 +0000 (14:24 -0800)]
Fix pipe<->plane mapping vs. vblank handling (again)

If drmMinor >= 6, the intel DDX driver will enable vblank events on both
pipes.  If drmMinor >= 10 on pre-965 chipsets, the intel DDX driver will
swap the pipe<->plane mapping to allow for framebuffer compression on
laptop screens.  This means the secondary vblank counter (corresponding
to pipe B) will be incremented when vblank interrupts occur.

Now Mesa waits for vblank events on whichever plane has a greater
portion of the displayed window.  So it will happly ask to wait for the
primary counter even though that one won't increment.

So we can fix this in either the DDX driver, Mesa or the kernel (though
I thought we already had several times).

Since current (and previous) userspace assumes it's talking about a pipe
== plane situation and now uses planes when talking to the kernel, we
should probably just hide the mapping details there (indeed they already
are hidden there for vblank swaps), which this patch does.

So as far as userland is concerned, whether we call things planes or
pipes is irrelevant, as long as kernel developers understand that
userland hands them planes and they have to figure out which pipe that
corresponds to (which will typically be the same on 965+ hardware and
reversed on pre-965 mobile chips).

16 years agoradeon_ms: fix fbcon by fixing palette
Jerome Glisse [Thu, 6 Dec 2007 22:36:58 +0000 (23:36 +0100)]
radeon_ms: fix fbcon by fixing palette

16 years agoradeon_ms: update to lastest fb change
Jerome Glisse [Thu, 6 Dec 2007 22:19:52 +0000 (23:19 +0100)]
radeon_ms: update to lastest fb change

16 years agoMerge commit 'origin/modesetting-101' into modesetting-radeon
Jerome Glisse [Thu, 6 Dec 2007 21:42:17 +0000 (22:42 +0100)]
Merge commit 'origin/modesetting-101' into modesetting-radeon

16 years agoradeon_ms: avoid to unintialize things which haven't been initialized
Jerome Glisse [Thu, 6 Dec 2007 21:38:44 +0000 (22:38 +0100)]
radeon_ms: avoid to unintialize things which haven't been initialized

16 years agotake down stuff after asking driver to unload
Dave Airlie [Thu, 6 Dec 2007 06:03:28 +0000 (16:03 +1000)]
take down stuff after asking driver to unload

16 years agoretab intelfb code
Dave Airlie [Thu, 6 Dec 2007 01:47:29 +0000 (11:47 +1000)]
retab intelfb code

16 years agocheck previous mode first
Dave Airlie [Thu, 6 Dec 2007 01:46:54 +0000 (11:46 +1000)]
check previous mode first

16 years agooops initialise variable to false
Dave Airlie [Thu, 6 Dec 2007 01:35:37 +0000 (11:35 +1000)]
oops initialise variable to false

16 years agoadd property blobs and edid reporting support
Dave Airlie [Thu, 6 Dec 2007 00:44:51 +0000 (10:44 +1000)]
add property blobs and edid reporting support

16 years agomach64: make buffer emission macros normal functions
José Fonseca [Wed, 5 Dec 2007 22:53:02 +0000 (22:53 +0000)]
mach64: make buffer emission macros normal functions

16 years agomach64: use utf-8
José Fonseca [Wed, 5 Dec 2007 00:10:39 +0000 (00:10 +0000)]
mach64: use utf-8

16 years agoRemove references to the sarea_priv perf_boxes field.
Kristian Høgsberg [Wed, 5 Dec 2007 19:43:22 +0000 (14:43 -0500)]
Remove references to the sarea_priv perf_boxes field.

This field isn't touched or read by any other code in the stack so it's
time to retire these last few references.

16 years agomore WIP on blobs..
Dave Airlie [Wed, 5 Dec 2007 06:31:35 +0000 (16:31 +1000)]
more WIP on blobs..

I'm going to pass back a list of blob ids and lengths in the getproperty.
will need another ioctl to return the blob data as it is variable length.

16 years agoarrgggh.. make all ioctl structs 32/64-bit compatible hopefully.
Dave Airlie [Wed, 5 Dec 2007 06:03:05 +0000 (16:03 +1000)]
arrgggh.. make all ioctl structs 32/64-bit compatible hopefully.

This also starts to add blob property support.

someone needs to check this work for other things like ppc/x86 alignment diffs

16 years agoDon't free driver mapped locks
Jesse Barnes [Tue, 4 Dec 2007 22:38:00 +0000 (14:38 -0800)]
Don't free driver mapped locks

This fix is actually a bit of a cleanup too--it moves lock freeing to
drm_rmmap_locked and out of drm_lastclose.  This makes it symmetrical with
addmap and also prevents the lock from being incorrectly freed from driver
mappings.

16 years agoradeon_ms: radeon modesetting first commit.
Jerome Glisse [Sun, 2 Dec 2007 22:48:45 +0000 (23:48 +0100)]
radeon_ms: radeon modesetting first commit.

This should work on all radeon but there is still many things todo:
    - add crtc2
    - tmds
    - lvds
    - add bios data table so we don't need to hardcode dac/crtc infos
    - separate clock control to make power saving easier & cleaner
    - tiling (warning tiling shouldn't be enable in double scan or interlace)
    - surface reg manager (this goes along with tiling)
    - suspend/resume hook
    - avivo & r500 family support
    - atom bios support (for posting card mostly)
    - finish superioctl skeleton
    - what else ? :)

16 years agopatch from -mm kernel to use upper_32_bits
Dave Airlie [Tue, 4 Dec 2007 18:54:58 +0000 (04:54 +1000)]
patch from -mm kernel to use upper_32_bits

16 years agohooks up sync and flags and also clocks to get mode matching better
Dave Airlie [Mon, 3 Dec 2007 05:28:26 +0000 (15:28 +1000)]
hooks up sync and flags and also clocks to get mode matching better

16 years agoadd flags to mode debug print
Dave Airlie [Mon, 3 Dec 2007 05:27:57 +0000 (15:27 +1000)]
add flags to mode debug print

16 years agomode: copy back the mode if is valid correctly
Dave Airlie [Mon, 3 Dec 2007 05:27:49 +0000 (15:27 +1000)]
mode: copy back the mode if is valid correctly

16 years agofinish of mode add/remove, just have attach/detach modes
Dave Airlie [Mon, 3 Dec 2007 03:42:32 +0000 (13:42 +1000)]
finish of mode add/remove, just have attach/detach modes

16 years agomodesetting API change for removing mode ids and making modes per output.
Dave Airlie [Wed, 28 Nov 2007 05:18:25 +0000 (15:18 +1000)]
modesetting API change for removing mode ids and making modes per output.

so really want to get a list of modes per output not the global hammer list.
also we remove the mode ids and let the user pass back the full mode description

need to fix up add/remove mode for user modes now

16 years agobsd: Replace other occurrences of msleep with mtx_sleep
Robert Noland [Sun, 2 Dec 2007 06:45:09 +0000 (01:45 -0500)]
bsd: Replace other occurrences of msleep with mtx_sleep

16 years agobsd: Now make secondary vblank work
Robert Noland [Sun, 2 Dec 2007 06:23:11 +0000 (01:23 -0500)]
bsd: Now make secondary vblank work

We needed to specifically check for driver support and test the correct
vbl_received value.  Also pulled over support for _DRM_VBLANK_NEXTONMISS
from the linux code.

16 years agobsd: Hook secondary vblank support.
Robert Noland [Sat, 1 Dec 2007 22:09:49 +0000 (17:09 -0500)]
bsd: Hook secondary vblank support.

16 years agobsd: Fix typo in i915_drv.c
Robert Noland [Sat, 1 Dec 2007 21:35:48 +0000 (16:35 -0500)]
bsd: Fix typo in i915_drv.c

16 years agomtx_sleep is preferred to msleep
Robert Noland [Sun, 25 Nov 2007 17:54:31 +0000 (12:54 -0500)]
mtx_sleep is preferred to msleep

Calling semantics are the same and both were introduced in 5.0

16 years agoClarify order of operations
Robert Noland [Sun, 25 Nov 2007 17:50:07 +0000 (12:50 -0500)]
Clarify order of operations

16 years agoDRM_DEBUG already prints the function name.
Robert Noland [Sat, 24 Nov 2007 06:56:05 +0000 (01:56 -0500)]
DRM_DEBUG already prints the function name.

16 years agodrm: Add _DRM_DRIVER map flag.
Robert Noland [Sat, 1 Dec 2007 07:40:13 +0000 (02:40 -0500)]
drm: Add _DRM_DRIVER map flag.

This flag indicates that the driver is responsible for the map.

16 years agobsd: Move counter initialization to load time.
Robert Noland [Sat, 1 Dec 2007 07:32:23 +0000 (02:32 -0500)]
bsd: Move counter initialization to load time.

16 years agonouveau: Properly identify NV40 and NV44 generation.
Maarten Maathuis [Fri, 30 Nov 2007 21:50:34 +0000 (22:50 +0100)]
nouveau: Properly identify NV40 and NV44 generation.

16 years agoBeside the emitted warning, the added cast (u64 -> unsigned) strips out
Jiri Slaby [Wed, 28 Nov 2007 23:55:38 +0000 (09:55 +1000)]
Beside the emitted warning, the added cast (u64 -> unsigned) strips out
part of address on 64 bit. Cast to unsigned long instead.

Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
16 years agodrm: enable udev node creation
Dave Airlie [Wed, 28 Nov 2007 23:47:24 +0000 (09:47 +1000)]
drm: enable udev node creation

16 years agodrm: oops not a cleanup..
Dave Airlie [Wed, 28 Nov 2007 23:46:02 +0000 (09:46 +1000)]
drm: oops not a cleanup..

16 years agoFix up drm_ati_pcigart_info
Robert C. Noland III [Wed, 28 Nov 2007 05:33:42 +0000 (00:33 -0500)]
Fix up drm_ati_pcigart_info

16 years agodrm: more cleanups
Dave Airlie [Wed, 28 Nov 2007 23:37:51 +0000 (09:37 +1000)]
drm: more cleanups

16 years agoi965: oops force mi batchbuffer start
Dave Airlie [Wed, 28 Nov 2007 12:46:06 +0000 (22:46 +1000)]
i965: oops force mi batchbuffer start

16 years agoDon't use panel fitter if we're programming a native mode
Jesse Barnes [Tue, 27 Nov 2007 20:39:09 +0000 (12:39 -0800)]
Don't use panel fitter if we're programming a native mode

Fix from the DDX driver.

16 years agodrm/modesetting: add initial gettable properites code.
Dave Airlie [Tue, 27 Nov 2007 04:31:02 +0000 (14:31 +1000)]
drm/modesetting: add initial gettable properites code.

This allow the user to retrieve a list of properties for an output.
Properties can either be 32-bit values or an enum with an associated name.
Range properties are to be supported.

This API is probably not all correct, I may make properties part of the general
resource get when I think about it some more.

So basically you can create properties and attached them to whatever outputs you want,
so it should be possible to create some generics and just attach them to every output.

16 years agofb: make fb interface use user mode attach/detach for adding modes
Dave Airlie [Mon, 26 Nov 2007 04:06:42 +0000 (15:06 +1100)]
fb: make fb interface use user mode attach/detach for adding modes

16 years agoadd _ioctl to the end of two more ioctls
Dave Airlie [Mon, 26 Nov 2007 03:28:48 +0000 (14:28 +1100)]
add _ioctl to the end of two more ioctls

16 years agodrm: make fb modes use usermode add/remove interface
Dave Airlie [Mon, 26 Nov 2007 03:05:49 +0000 (14:05 +1100)]
drm: make fb modes use usermode add/remove interface

this stops usermode from getting a mode in the crtc it can't make sense off.

16 years agoMerge branch 'origin' into modesetting-101
Dave Airlie [Thu, 22 Nov 2007 06:17:06 +0000 (17:17 +1100)]
Merge branch 'origin' into modesetting-101

Conflicts:

linux-core/drmP.h
shared-core/i915_dma.c
shared-core/i915_drm.h
shared-core/radeon_drv.h

16 years agodrm: major whitespace/coding style realignment with kernel
Dave Airlie [Thu, 22 Nov 2007 06:10:36 +0000 (16:10 +1000)]
drm: major whitespace/coding style realignment with kernel

16 years agodrm: cleanup drm_regman.c coding style
Dave Airlie [Thu, 22 Nov 2007 03:29:17 +0000 (13:29 +1000)]
drm: cleanup drm_regman.c coding style

16 years agoi915: add context handle to superioctl struct
Dave Airlie [Wed, 21 Nov 2007 23:17:34 +0000 (09:17 +1000)]
i915: add context handle to superioctl struct

This will be used later for lockless operation.

16 years agodrm: don't reset to 0 irq_enabled when client open file descriptor
Jerome Glisse [Sun, 18 Nov 2007 18:16:40 +0000 (19:16 +0100)]
drm: don't reset to 0 irq_enabled when client open file descriptor

16 years agodrm: don't reset to 0 irq_enabled when client open file descriptor
Jerome Glisse [Sun, 18 Nov 2007 18:16:40 +0000 (19:16 +0100)]
drm: don't reset to 0 irq_enabled when client open file descriptor

16 years agoFix capitalization of __linux__ define.
Eric Anholt [Mon, 19 Nov 2007 16:41:23 +0000 (08:41 -0800)]
Fix capitalization of __linux__ define.

16 years agodrm: fix dead lock in drm_buffer_object_transfer
Jerome Glisse [Mon, 19 Nov 2007 13:37:21 +0000 (14:37 +0100)]
drm: fix dead lock in drm_buffer_object_transfer

16 years agodrm: fix dead lock in drm_buffer_object_transfer
Jerome Glisse [Mon, 19 Nov 2007 13:37:21 +0000 (14:37 +0100)]
drm: fix dead lock in drm_buffer_object_transfer

16 years agoBug #13233: Fix build on FreeBSD.
Robert Noland [Tue, 13 Nov 2007 22:50:46 +0000 (17:50 -0500)]
Bug #13233: Fix build on FreeBSD.

16 years agoBug #13233: Chase move of agp headers on FreeBSD.
Robert Noland [Mon, 19 Nov 2007 06:40:13 +0000 (22:40 -0800)]
Bug #13233: Chase move of agp headers on FreeBSD.

16 years agoradeon: refactor out the fb/agp location read/write.
Dave Airlie [Sun, 18 Nov 2007 09:25:31 +0000 (19:25 +1000)]
radeon: refactor out the fb/agp location read/write.

Add a new get param to get the fb location into userspace. Mesa currently
hits MMIO to do this, but this isn't always possible.

16 years agoFix connection status ABI
Jesse Barnes [Fri, 16 Nov 2007 21:58:43 +0000 (13:58 -0800)]
Fix connection status ABI

Userspace expects a 1 based enum for connection status so fix up the kernel
definition.

16 years agoFix typo in copy_to_user calls
Jesse Barnes [Fri, 16 Nov 2007 21:57:42 +0000 (13:57 -0800)]
Fix typo in copy_to_user calls

We want to copy to card_res->modes + copied, not &card_res->modes + copied.

16 years agonouveau: also mention the number of succcessfully copied bios bytes.
Stephane Marchesin [Fri, 16 Nov 2007 14:02:25 +0000 (15:02 +0100)]
nouveau: also mention the number of succcessfully copied bios bytes.

16 years agonouveau: rename
Jeremy Kolb [Fri, 16 Nov 2007 03:09:59 +0000 (22:09 -0500)]
nouveau: rename

16 years agonouveau: flip buffer into gart.
Jeremy Kolb [Fri, 16 Nov 2007 01:46:49 +0000 (20:46 -0500)]
nouveau: flip buffer into gart.

16 years agoUse user copy routines for writing modes & ids back to userspace
Jesse Barnes [Fri, 16 Nov 2007 01:14:03 +0000 (17:14 -0800)]
Use user copy routines for writing modes & ids back to userspace

Since the drm_mode_card_res structure contains user pointers, we have to use
put_user and copy_to_user to write stuff out.  The DRM ioctl wrapper will only
take care of copying the base drm_mode_card_res struct, not the included
arrays.