i915_drv.c revision 152909
1145132Sanholt/* i915_drv.c -- ATI Radeon driver -*- linux-c -*- 2145132Sanholt * Created: Wed Feb 14 17:10:04 2001 by gareth@valinux.com 3145132Sanholt */ 4145132Sanholt/*- 5145132Sanholt * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California. 6145132Sanholt * All Rights Reserved. 7145132Sanholt * 8145132Sanholt * Permission is hereby granted, free of charge, to any person obtaining a 9145132Sanholt * copy of this software and associated documentation files (the "Software"), 10145132Sanholt * to deal in the Software without restriction, including without limitation 11145132Sanholt * the rights to use, copy, modify, merge, publish, distribute, sublicense, 12145132Sanholt * and/or sell copies of the Software, and to permit persons to whom the 13145132Sanholt * Software is furnished to do so, subject to the following conditions: 14145132Sanholt * 15145132Sanholt * The above copyright notice and this permission notice (including the next 16145132Sanholt * paragraph) shall be included in all copies or substantial portions of the 17145132Sanholt * Software. 18145132Sanholt * 19145132Sanholt * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20145132Sanholt * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21145132Sanholt * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 22145132Sanholt * VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR 23145132Sanholt * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 24145132Sanholt * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 25145132Sanholt * OTHER DEALINGS IN THE SOFTWARE. 26145132Sanholt * 27145132Sanholt * Authors: 28145132Sanholt * Gareth Hughes <gareth@valinux.com> 29145132Sanholt * 30145132Sanholt */ 31145132Sanholt 32152909Sanholt#include <sys/cdefs.h> 33152909Sanholt__FBSDID("$FreeBSD: head/sys/dev/drm/i915_drv.c 152909 2005-11-28 23:13:57Z anholt $"); 34145132Sanholt 35152909Sanholt#include "dev/drm/drmP.h" 36152909Sanholt#include "dev/drm/drm.h" 37152909Sanholt#include "dev/drm/i915_drm.h" 38152909Sanholt#include "dev/drm/i915_drv.h" 39152909Sanholt#include "dev/drm/drm_pciids.h" 40152909Sanholt 41145132Sanholt/* drv_PCI_IDs comes from drm_pciids.h, generated from drm_pciids.txt. */ 42145132Sanholtstatic drm_pci_id_list_t i915_pciidlist[] = { 43145132Sanholt i915_PCI_IDS 44145132Sanholt}; 45145132Sanholt 46145132Sanholtstatic void i915_configure(drm_device_t *dev) 47145132Sanholt{ 48152909Sanholt dev->driver.buf_priv_size = 1; /* No dev_priv */ 49152909Sanholt dev->driver.load = i915_driver_load; 50152909Sanholt dev->driver.preclose = i915_driver_preclose; 51152909Sanholt dev->driver.lastclose = i915_driver_lastclose; 52152909Sanholt dev->driver.device_is_agp = i915_driver_device_is_agp, 53152909Sanholt dev->driver.irq_preinstall = i915_driver_irq_preinstall; 54152909Sanholt dev->driver.irq_postinstall = i915_driver_irq_postinstall; 55152909Sanholt dev->driver.irq_uninstall = i915_driver_irq_uninstall; 56152909Sanholt dev->driver.irq_handler = i915_driver_irq_handler; 57145132Sanholt 58152909Sanholt dev->driver.ioctls = i915_ioctls; 59152909Sanholt dev->driver.max_ioctl = i915_max_ioctl; 60145132Sanholt 61152909Sanholt dev->driver.name = DRIVER_NAME; 62152909Sanholt dev->driver.desc = DRIVER_DESC; 63152909Sanholt dev->driver.date = DRIVER_DATE; 64152909Sanholt dev->driver.major = DRIVER_MAJOR; 65152909Sanholt dev->driver.minor = DRIVER_MINOR; 66152909Sanholt dev->driver.patchlevel = DRIVER_PATCHLEVEL; 67145132Sanholt 68152909Sanholt dev->driver.use_agp = 1; 69152909Sanholt dev->driver.require_agp = 1; 70152909Sanholt dev->driver.use_mtrr = 1; 71152909Sanholt dev->driver.use_irq = 1; 72145132Sanholt} 73145132Sanholt 74145132Sanholt#ifdef __FreeBSD__ 75145132Sanholtstatic int 76145132Sanholti915_probe(device_t dev) 77145132Sanholt{ 78145132Sanholt return drm_probe(dev, i915_pciidlist); 79145132Sanholt} 80145132Sanholt 81145132Sanholtstatic int 82145132Sanholti915_attach(device_t nbdev) 83145132Sanholt{ 84145132Sanholt drm_device_t *dev = device_get_softc(nbdev); 85145132Sanholt 86145132Sanholt bzero(dev, sizeof(drm_device_t)); 87145132Sanholt i915_configure(dev); 88145132Sanholt return drm_attach(nbdev, i915_pciidlist); 89145132Sanholt} 90145132Sanholt 91145132Sanholtstatic device_method_t i915_methods[] = { 92145132Sanholt /* Device interface */ 93145132Sanholt DEVMETHOD(device_probe, i915_probe), 94145132Sanholt DEVMETHOD(device_attach, i915_attach), 95145132Sanholt DEVMETHOD(device_detach, drm_detach), 96145132Sanholt 97145132Sanholt { 0, 0 } 98145132Sanholt}; 99145132Sanholt 100145132Sanholtstatic driver_t i915_driver = { 101145132Sanholt "drmsub", 102145132Sanholt i915_methods, 103145132Sanholt sizeof(drm_device_t) 104145132Sanholt}; 105145132Sanholt 106145132Sanholtextern devclass_t drm_devclass; 107145132SanholtDRIVER_MODULE(i915, pci, i915_driver, drm_devclass, 0, 0); 108145132SanholtMODULE_DEPEND(i915, drm, 1, 1, 1); 109145132Sanholt 110145132Sanholt#elif defined(__NetBSD__) || defined(__OpenBSD__) 111145132SanholtCFDRIVER_DECL(i915, DV_TTY, NULL); 112145132Sanholt#endif 113