1/* i915_drv.c -- i830,i845,i855,i865,i915 driver -*- linux-c -*- 2 */ 3/* 4 * 5 * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas. 6 * All Rights Reserved. 7 * 8 * Permission is hereby granted, free of charge, to any person obtaining a 9 * copy of this software and associated documentation files (the 10 * "Software"), to deal in the Software without restriction, including 11 * without limitation the rights to use, copy, modify, merge, publish, 12 * distribute, sub license, and/or sell copies of the Software, and to 13 * permit persons to whom the Software is furnished to do so, subject to 14 * the following conditions: 15 * 16 * The above copyright notice and this permission notice (including the 17 * next paragraph) shall be included in all copies or substantial portions 18 * of the Software. 19 * 20 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 21 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 22 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 23 * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR 24 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 25 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 26 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 27 * 28 */ 29 30#include "drmP.h" 31#include "drm.h" 32#include "i915_drm.h" 33#include "i915_drv.h" 34 35#include "drm_pciids.h" 36 37static struct pci_device_id pciidlist[] = { 38 i915_PCI_IDS 39}; 40 41static struct drm_driver driver = { 42 /* don't use mtrr's here, the Xserver or user space app should 43 * deal with them for intel hardware. 44 */ 45 .driver_features = 46 DRIVER_USE_AGP | DRIVER_REQUIRE_AGP | /* DRIVER_USE_MTRR |*/ 47 DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED | DRIVER_IRQ_VBL | 48 DRIVER_IRQ_VBL2, 49 .load = i915_driver_load, 50 .lastclose = i915_driver_lastclose, 51 .preclose = i915_driver_preclose, 52 .device_is_agp = i915_driver_device_is_agp, 53 .vblank_wait = i915_driver_vblank_wait, 54 .vblank_wait2 = i915_driver_vblank_wait2, 55 .irq_preinstall = i915_driver_irq_preinstall, 56 .irq_postinstall = i915_driver_irq_postinstall, 57 .irq_uninstall = i915_driver_irq_uninstall, 58 .irq_handler = i915_driver_irq_handler, 59 .reclaim_buffers = drm_core_reclaim_buffers, 60 .get_map_ofs = drm_core_get_map_ofs, 61 .get_reg_ofs = drm_core_get_reg_ofs, 62 .ioctls = i915_ioctls, 63 .fops = { 64 .owner = THIS_MODULE, 65 .open = drm_open, 66 .release = drm_release, 67 .ioctl = drm_ioctl, 68 .mmap = drm_mmap, 69 .poll = drm_poll, 70 .fasync = drm_fasync, 71#ifdef CONFIG_COMPAT 72 .compat_ioctl = i915_compat_ioctl, 73#endif 74 }, 75 76 .pci_driver = { 77 .name = DRIVER_NAME, 78 .id_table = pciidlist, 79 }, 80 81 .name = DRIVER_NAME, 82 .desc = DRIVER_DESC, 83 .date = DRIVER_DATE, 84 .major = DRIVER_MAJOR, 85 .minor = DRIVER_MINOR, 86 .patchlevel = DRIVER_PATCHLEVEL, 87}; 88 89static int __init i915_init(void) 90{ 91 driver.num_ioctls = i915_max_ioctl; 92 return drm_init(&driver); 93} 94 95static void __exit i915_exit(void) 96{ 97 drm_exit(&driver); 98} 99 100module_init(i915_init); 101module_exit(i915_exit); 102 103MODULE_AUTHOR(DRIVER_AUTHOR); 104MODULE_DESCRIPTION(DRIVER_DESC); 105MODULE_LICENSE("GPL and additional rights"); 106