Commit graph

331 commits

Author SHA1 Message Date
Dave Airlie
6795c985a6 Add support for PCI MGA cards to MGA DRM.
This patch adds serveral new ioctls and a new query to get_param query to
support PCI MGA cards.

Two ioctls were added to implement interrupt based waiting.  With this change,
the client-side driver no longer needs to map the primary DMA region or the
MMIO region.  Previously, end-of-frame waiting was done by busy waiting in the
client-side driver until one of the MMIO registers (the current DMA pointer)
matched a pointer to the end of primary DMA space.  By using interrupts, the
busy waiting and the extra mappings are removed.

A third ioctl was added to bootstrap DMA.  This ioctl, which is used by the
X-server, moves a *LOT* of code from the X-server into the kernel.  This allows
the kernel to do whatever needs to be done to setup DMA buffers.  The entire
process and the locations of the buffers are hidden from user-mode.

Additionally, a get_param query was added to differentiate between G4x0 cards
and G550 cards.  A gap was left in the numbering sequence so that, if needed,
G450 cards could be distinguished from G400 cards.  According to Ville
Syrjälä, the G4x0 cards and the G550 cards handle anisotropic filtering
differently.  This seems the most compatible way to let the client-side driver
know which card it's own.  Doing this very small change now eliminates the
need to bump the DRM minor version twice.

http://marc.theaimsgroup.com/?l=dri-devel&m=106625815319773&w=2

(airlied - this may not work at this point, I think the follow on buffer
 cleanup patches will be needed)

From: Ian Romanick <idr@us.ibm.com>
Signed-off-by: Dave Airlie <airlied@linux.ie>
2005-07-10 18:20:09 +10:00
Dave Airlie
b5d499cfde drm: make drm_alloc_agp take a dev arg.
Signed-off-by: Dave Airlie <airlied@linux.ie>
2005-07-10 18:17:42 +10:00
Dave Airlie
93f453f3ff drm: add new mga ids and types
From: Ian Romanick <idr@us.ibm.com>
Signed-off-by: Dave Airlie <airlied@linux.ie>
2005-07-10 17:45:34 +10:00
Dave Airlie
cda1738066 drm: add test for AGP devices and driver override for it.
Added device_is_agp callback to drm_driver.  This function is called by the
platform-specific drm_device_is_agp function.  Added implementation of this
function the the Linux-specific portion of the MGA driver to detect PCI G450
cards.  Added code to the Linux-specific portion of the generic DRM layer to
not initialize AGP infrastructure if the card is not AGP (this matches what
already existed in BSD).

Fix up i810/i830 and i915 drivers to always return AGP as they don't always
report the capability.

Fix the MGA to not report AGP for a card that has an AGP chip behind a PCI
bridge.

From: Ian Romanick, Dave Airlie, Alan Hourihane
Signed-off-by: Dave Airlie <airlied@linux.ie>
2005-07-10 17:31:26 +10:00
Dave Airlie
ceb9c27aa7 drm: destatic exported function.
Signed-off-by: Dave Airlie <airlied@linux.ie>
2005-07-10 17:07:23 +10:00
Dave Airlie
d84f76d37c drm: export symbols for use by drivers
This just exports symbols for use in drivers.

From: Ian Romanick <idr@us.ibm.com>
Signed-off-by: Dave Airlie <airlied@linux.ie>
2005-07-10 17:04:22 +10:00
Dave Airlie
aff138ab8e drm: fix minor function header issue
From: Ian Romanick <idr@us.ibm.com>
Signed-off-by: Dave Airlie <airlied@linux.ie>
2005-07-10 16:58:40 +10:00
Dave Airlie
7ab984012a drm: update some function so a driver can call them
This patch splits some ioctl functions so that they can be called
in-kernel by a DRM driver. The driver will use them later.

From: Ian Romanick <idr@us.ibm.com>
Signed-off-by: Dave Airlie <airlied@linux.ie>
2005-07-10 16:56:52 +10:00
Dave Airlie
9c8da5ebbf drm: update support for drm pci buffers
The DRM needs to change the drm_pci interface for FreeBSD compatiblity,
this patch introduces the drm_dma_handle_t and uses it in the Linux code.

From: Tonnerre Lombard, Eric Anholt, and Sergey Vlasov
Signed-off-by: David Airlie <airlied@linux.ie>
2005-07-10 15:38:56 +10:00
Dave Airlie
d59431bf96 Refactor common, boilerplate ioctl code from drm_addbufs_* functions into
drm_addbufs. This makes the code more like the BSD code, and makes the
drm_addbufs_* functions callable in-kernel.

From: Ian Romanick <idr@us.ibm.com>
Signed-off-by: Dave Airlie <airlied@linux.ie>
2005-07-10 15:00:06 +10:00
Dave Airlie
b84397d639 drm: add framebuffer maps
The patch makes drmAddBufs/drmMapBufs can handle buffers in video memory

The attached patch adds a new buffer type DRM_FB_BUFFER. It works like
AGP memory but uses video memory.

From: Austin Yuan <austinyuan@viatech.com.cn>
Signed-off-by: Dave Airlie <airlied@linux.ie>
2005-07-10 14:46:12 +10:00
Dave Airlie
2d0f9eaff8 drm: add _DRM_CONSISTENT map type
Added a new DRM map type _DRM_CONSISTENT for consistent PCI memory. It
uses drm_pci_alloc/free for allocating/freeing the memory.

From: Felix Kuhling <fxkuehl@gmx.de>
Signed-off-by: David Airlie <airlied@linux.ie>
2005-07-10 14:34:13 +10:00
Dave Airlie
f179bc77d0 drm: fix stupid missing semicolon.
I fixed this in one git tree but that wasn't the one I pushed...

Signed-off-by: Dave Airlie <airlied@linux.ie>
2005-07-10 12:46:19 +10:00
Linus Torvalds
0109fd3704 Merge head 'drm-fixes' of master.kernel.org:/pub/scm/linux/kernel/git/airlied/drm-2.6 2005-07-09 09:59:23 -07:00
Linus Torvalds
cc14cf46da Merge head 'drm-3264' of master.kernel.org:/pub/scm/linux/kernel/git/airlied/drm-2.6 2005-07-09 09:58:47 -07:00
Dave Airlie
8ca7c1df08 drm: add 32/64 support for MGA/R128/i915
This adds compatiblity ioctls for mga/r128 and i915 DRM drivers.

From: Paul Mackerras, David Airlie, Alan Hourihane, Egbert Eich.
Signed-off-by: David Airlie <airlied@linux.ie>
2005-07-07 21:51:26 +10:00
Dave Airlie
850eb83a6a drm: wrap config.h include in a ifdef KERNEL
This file can be included from userspace so wrap the config.h include.

Signed-off-by: David Airlie <airlied@linux.ie>
2005-07-07 21:09:14 +10:00
Dave Airlie
c94f702985 drm: misc cleanup
This patch contains the following cleanups:
- make needlessly global functions static
- remove the following unused global functions:
 - drm_fops.c: drm_read
 - i915_dma.c: i915_do_cleanup_pageflip

Signed-off-by: Adrian Bunk <bunk@stusta.de>
Signed-off-by: Dave Airlie <airlied@linux.ie>
2005-07-07 21:03:38 +10:00
Dave Airlie
b9523249de drm: use kcalloc now that it is available..
Make the DRM drm_calloc call kcalloc now.

Signed-off-by: Dave Airlie <airlied@linux.ie>
2005-07-07 20:33:26 +10:00
Dave Airlie
f650130803 drm: ctx release can happen before dev->ctxlist is allocated
From: Jon Smirl <jonsmirl@gmail.com>
Signed-off-by: Dave Airlie <airlied@linux.ie>
2005-07-07 20:17:42 +10:00
Dave Airlie
0c7b525c34 drm: fix minor issues caused by core conversion
The conversion to core/driver got this check in-correct.

Signed-off-by: Dave Airlie <airlied@linux.ie>
2005-07-07 20:16:08 +10:00
Dave Airlie
22f579c621 drm: Add via unichrome support
Add DRM device driver for VIA Unichrome chipsets

From: Unichrome Project http://unichrome.sf.net, Erdi Chen, Thomas Hellstrom    Signed-off-by: Dave Airlie <airlied@linux.ie>
2005-06-28 22:48:56 +10:00
Linus Torvalds
8678887e7f Merge 'drm-3264' branch of rsync://rsync.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 2005-06-26 09:55:39 -07:00
Dave Airlie
6921e33104 drm: fix radeon irq properly
After the previous fix in 2.6.12, this patch should properly fix the
radeon IRQ handling code.

From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Dave Airlie <airlied@linux.ie>
2005-06-26 21:05:59 +10:00
Dave Airlie
bc54fd1ad3 Add missing license texts from Tungsten Graphics.
From: Alan Hourihane
Signed-off-by: David Airlie <airlied@linux.ie>
2005-06-23 22:46:46 +10:00
Dave Airlie
cfd9e15f78 Currently DRM depends on PCI this will need to change for ffb on Sparc to
be fixed but at the moment it is true.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Dave Airlie <airlied@linux.ie>
2005-06-23 22:43:00 +10:00
Dave Airlie
9a18664506 drm: 32/64-bit DRM ioctl compatibility patch
The patch is against a 2.6.11 kernel tree.  I am running this with a
32-bit X server (compiled up from X.org CVS as of a couple of weeks
ago) and 32-bit DRI libraries and clients.  All the userland stuff is
identical to what I am using under a 32-bit kernel on my G4 powerbook
(which is a 32-bit machine of course).  I haven't tried compiling up a
64-bit X server or clients yet.

In the compatibility routines I have assumed that the kernel can
safely access user addresses after set_fs(KERNEL_DS).  That is, where
an ioctl argument structure contains pointers to other structures, and
those other structures are already compatible between the 32-bit and
64-bit ABIs (i.e. they only contain things like chars, shorts or
ints), I just check the address with access_ok() and then pass it
through to the 64-bit ioctl code.  I believe this approach may not
work on sparc64, but it does work on ppc64 and x86_64 at least.

One tricky area which may need to be revisited is the question of how
to handle the handles which we pass back to userspace to identify
mappings.  These handles are generated in the ADDMAP ioctl and then
passed in as the offset value to mmap.  However, offset values for
mmap seem to be generated in other ways as well, particularly for AGP
mappings.

The approach I have ended up with is to generate a fake 32-bit handle
only for _DRM_SHM mappings.  The handles for other mappings (AGP, REG,
FB) are physical addresses which are already limited to 32 bits, and
generating fake handles for them created all sorts of problems in the
mmap/nopage code.

This patch has been updated to use the new compatibility ioctls.

From: Paul Mackerras <paulus@samba.org>
Signed-off-by: Dave Airlie <airlied@linux.ie>
2005-06-23 21:29:18 +10:00
Dave Airlie
74e8ebc55d [PATCH] remove bogus hack from radeon IRQ handler
This removes a bogus hack from the radeon IRQ handler.
There is a better fix from myself and benh in DRM CVS but I'll wait
until 2.6.13-rc so it gets more testing.

Signed-off-by: Dave Airlie <airlied@linux.ie>
2005-06-10 19:27:51 +10:00
Dave Airlie
e98ded32f3 [PATCH] drm add i945G pci id
Add pci identifier for i945G chipset

Signed-off-by: Dave Airlie <airlied@linux.ie>
2005-06-10 18:47:38 +10:00
Dave Airlie
41aac24f8f [PATCH] r128_state.c: break missing in switch statement
drm: fix r128_state.c switch statements..  in drivers/char/drm/r128_state.c
(linux-2.6.12-rc2), some breaks are missing in the switch statement.  See
trivial fix below.

Signed-off-by: Hansjoerg Lipp <hjlipp@web.de>
Signed-off-by: Dave Airlie <airlied@linux.ie>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-16 15:24:04 -07:00
Linus Torvalds
1da177e4c3 Linux-2.6.12-rc2
Initial git repository build. I'm not bothering with the full history,
even though we have it. We can create a separate "historical" git
archive of that later if we want to, and in the meantime it's about
3.2GB when imported into git - space that would just make the early
git days unnecessarily complicated, when we don't have a lot of good
infrastructure for it.

Let it rip!
2005-04-16 15:20:36 -07:00