diff --git a/drivers/char/drm/Makefile b/drivers/char/drm/Makefile index 9d180c4..a212175 100644 --- a/drivers/char/drm/Makefile +++ b/drivers/char/drm/Makefile @@ -8,6 +8,7 @@ drm-objs := drm_auth.o drm_bufs.o drm drm_agpsupport.o drm_scatter.o ati_pcigart.o drm_pci.o \ drm_sysfs.o +blade-objs := blade_drv.o tdfx-objs := tdfx_drv.o r128-objs := r128_drv.o r128_cce.o r128_state.o r128_irq.o mga-objs := mga_drv.o mga_dma.o mga_state.o mga_warp.o mga_irq.o @@ -30,6 +31,7 @@ endif obj-$(CONFIG_DRM) += drm.o obj-$(CONFIG_DRM_TDFX) += tdfx.o +obj-$(CONFIG_DRM_BLADE) += blade.o obj-$(CONFIG_DRM_R128) += r128.o obj-$(CONFIG_DRM_RADEON)+= radeon.o obj-$(CONFIG_DRM_MGA) += mga.o --- /dev/null 2006-03-02 18:11:38.777108750 -0800 +++ drivers/char/drm/blade_drv.c 2006-03-05 20:24:53.000000000 -0800 @@ -0,0 +1,117 @@ +/* + * Copyright 2006 Jesse Barnes + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Jesse Barnes + */ + +#include +#include "drm_pciids.h" +#include "drmP.h" + +#define DRIVER_AUTHOR "Jesse Barnes" + +#define DRIVER_NAME "blade_drm" +#define DRIVER_DESC "Trident CyberBlade" +#define DRIVER_DATE "20060303" + +#define DRIVER_MAJOR 1 +#define DRIVER_MINOR 0 +#define DRIVER_PATCHLEVEL 0 + +static struct pci_device_id blade_pciids[] = { + blade_PCI_IDS +}; + +static struct drm_driver blade_driver = { + .driver_features = (DRIVER_USE_AGP | DRIVER_USE_MTRR | + DRIVER_PCI_DMA | DRIVER_SG | DRIVER_HAVE_DMA | + DRIVER_HAVE_IRQ | DRIVER_FB_DMA), /* IRQ_VBL? */ + .reclaim_buffers = drm_core_reclaim_buffers, + .get_map_ofs = drm_core_get_map_ofs, + .get_reg_ofs = drm_core_get_reg_ofs, + .fops = { + .owner = THIS_MODULE, + .open = drm_open, + .release = drm_release, + .ioctl = drm_ioctl, + .mmap = drm_mmap, + .poll = drm_poll, + .fasync = drm_fasync, + }, + .pci_driver = { + .name = DRIVER_NAME, + .id_table = blade_pciids, + }, + + .name = DRIVER_NAME, + .desc = DRIVER_DESC, + .date = DRIVER_DATE, + .major = DRIVER_MAJOR, + .minor = DRIVER_MINOR, + .patchlevel = DRIVER_PATCHLEVEL, +}; + +static int vblank_wait(struct drm_device * dev, unsigned int *sequence) +{ + /* Use next vblank interrupt or pending register */ +} + +static irqreturn_t irq_handler(DRM_IRQ_ARGS) +{ +} + +static void irq_preinstall(struct drm_device * dev) +{ +} + +static void irq_postinstall(struct drm_device * dev) +{ +} + +static void irq_uninstall(struct drm_device * dev) +{ +} + +static int __init blade_init(void) +{ + /* + * TODO: + * ioremap device resources + * Setup IRQ for vblank + * Lots of other stuff (e.g. host<->fb dma stuff) + */ + return drm_init(&blade_driver); +} + +static void __exit blade_exit(void) +{ + drm_exit(&blade_driver); +} + +module_init(blade_init); +module_exit(blade_exit); + +MODULE_AUTHOR(DRIVER_AUTHOR); +MODULE_DESCRIPTION(DRIVER_DESC); +MODULE_LICENSE("GPL and additional rights"); diff --git a/drivers/char/drm/Kconfig b/drivers/char/drm/Kconfig index 56ace9d..10c42b7 100644 --- a/drivers/char/drm/Kconfig +++ b/drivers/char/drm/Kconfig @@ -16,6 +16,13 @@ config DRM details. You should also select and configure AGP (/dev/agpgart) support. +config DRM_BLADE + tristate "Trident CyberBlade/i1" + depends on DRM && PCI + help + Choose this option if you have a Trident CyberBlade/i1 device. If M + is selected, the module will be called blade. + config DRM_TDFX tristate "3dfx Banshee/Voodoo3+" depends on DRM && PCI