diff options
author | anholt <anholt@FreeBSD.org> | 2005-04-16 03:44:47 +0000 |
---|---|---|
committer | anholt <anholt@FreeBSD.org> | 2005-04-16 03:44:47 +0000 |
commit | ed881e3d943468fbc6be48896b366e62289da086 (patch) | |
tree | a78e79aa5b7b85f67ae2b321bc1be28f19b499b2 /sys/dev/drm/tdfx_drv.c | |
parent | 9de8e0daf94d3598eba43ca102b8629938c52342 (diff) | |
download | FreeBSD-src-ed881e3d943468fbc6be48896b366e62289da086.zip FreeBSD-src-ed881e3d943468fbc6be48896b366e62289da086.tar.gz |
Update to DRM CVS as of 2005-04-12, bringing many changes:
- Split core DRM routines back into their own module, rather than using the
nasty templated system like before.
- Development-class R300 support in radeon driver (requires userland pieces, of
course).
- Mach64 driver (haven't tested in a while -- my mach64s no longer fit in the
testbox). Covers Rage Pros, Rage Mobility P/M, Rage XL, and some others.
- i915 driver files, which just need to get drm_drv.c fixed to allow attachment
to the drmsub device. Covers i830 through i915 integrated graphics.
- savage driver files, which should require minimal changes to work. Covers the
Savage3D, Savage IX/MX, Savage 4, ProSavage.
- Support for color and texture tiling and HyperZ features of Radeon.
Thanks to: scottl (much p4 handholding)
Jung-uk Kim (helpful prodding)
PR: [1] kern/76879, [2] kern/72548
Submitted by: [1] Alex, lesha at intercaf dot ru
[2] Shaun Jurrens, shaun at shamz dot net
Diffstat (limited to 'sys/dev/drm/tdfx_drv.c')
-rw-r--r-- | sys/dev/drm/tdfx_drv.c | 81 |
1 files changed, 64 insertions, 17 deletions
diff --git a/sys/dev/drm/tdfx_drv.c b/sys/dev/drm/tdfx_drv.c index 4985ee0..e99bb32 100644 --- a/sys/dev/drm/tdfx_drv.c +++ b/sys/dev/drm/tdfx_drv.c @@ -1,5 +1,6 @@ /* tdfx_drv.c -- tdfx driver -*- linux-c -*- - * Created: Thu Oct 7 10:38:32 1999 by faith@precisioninsight.com */ + * Created: Thu Oct 7 10:38:32 1999 by faith@precisioninsight.com + */ /*- * Copyright 1999 Precision Insight, Inc., Cedar Park, Texas. * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California. @@ -32,24 +33,70 @@ * $FreeBSD$ */ -#include "dev/drm/tdfx.h" +#include "dev/drm/tdfx_drv.h" #include "dev/drm/drmP.h" +#include "dev/drm/drm_pciids.h" + +/* drv_PCI_IDs comes from drm_pciids.h, generated from drm_pciids.txt. */ +static drm_pci_id_list_t tdfx_pciidlist[] = { + tdfx_PCI_IDS +}; + +extern drm_ioctl_desc_t tdfx_ioctls[]; +extern int tdfx_max_ioctl; + +static void tdfx_configure(drm_device_t *dev) +{ + dev->dev_priv_size = 1; /* No dev_priv */ -#include "dev/drm/drm_auth.h" -#include "dev/drm/drm_bufs.h" -#include "dev/drm/drm_context.h" -#include "dev/drm/drm_dma.h" -#include "dev/drm/drm_drawable.h" -#include "dev/drm/drm_drv.h" -#include "dev/drm/drm_fops.h" -#include "dev/drm/drm_ioctl.h" -#include "dev/drm/drm_lock.h" -#include "dev/drm/drm_memory.h" -#include "dev/drm/drm_vm.h" -#include "dev/drm/drm_sysctl.h" + dev->max_driver_ioctl = 0; + + dev->driver_name = DRIVER_NAME; + dev->driver_desc = DRIVER_DESC; + dev->driver_date = DRIVER_DATE; + dev->driver_major = DRIVER_MAJOR; + dev->driver_minor = DRIVER_MINOR; + dev->driver_patchlevel = DRIVER_PATCHLEVEL; + + dev->use_mtrr = 1; +} #ifdef __FreeBSD__ -DRIVER_MODULE(tdfx, pci, tdfx_driver, tdfx_devclass, 0, 0); -#elif defined(__NetBSD__) +static int +tdfx_probe(device_t dev) +{ + return drm_probe(dev, tdfx_pciidlist); +} + +static int +tdfx_attach(device_t nbdev) +{ + drm_device_t *dev = device_get_softc(nbdev); + + bzero(dev, sizeof(drm_device_t)); + tdfx_configure(dev); + return drm_attach(nbdev, tdfx_pciidlist); +} + +static device_method_t tdfx_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, tdfx_probe), + DEVMETHOD(device_attach, tdfx_attach), + DEVMETHOD(device_detach, drm_detach), + + { 0, 0 } +}; + +static driver_t tdfx_driver = { + "drm", + tdfx_methods, + sizeof(drm_device_t) +}; + +extern devclass_t drm_devclass; +DRIVER_MODULE(tdfx, pci, tdfx_driver, drm_devclass, 0, 0); +MODULE_DEPEND(tdfx, drm, 1, 1, 1); + +#elif defined(__NetBSD__) || defined(__OpenBSD__) CFDRIVER_DECL(tdfx, DV_TTY, NULL); -#endif /* __FreeBSD__ */ +#endif |