2005-04-16 15:20:36 -07:00
/* r128_drv.c -- ATI Rage 128 driver -*- linux-c -*-
* Created : Mon Dec 13 09 : 47 : 27 1999 by faith @ precisioninsight . com
*
* Copyright 1999 Precision Insight , Inc . , Cedar Park , Texas .
* Copyright 2000 VA Linux Systems , Inc . , Sunnyvale , California .
* 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
* VA LINUX SYSTEMS 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 :
* Rickard E . ( Rik ) Faith < faith @ valinux . com >
* Gareth Hughes < gareth @ valinux . com >
*/
2011-08-30 11:04:30 -04:00
# include <linux/module.h>
2019-06-05 16:13:21 +02:00
# include <drm/drm_drv.h>
# include <drm/drm_file.h>
# include <drm/drm_pci.h>
# include <drm/drm_pciids.h>
# include <drm/drm_vblank.h>
2012-10-02 18:01:07 +01:00
# include <drm/r128_drm.h>
2005-04-16 15:20:36 -07:00
2019-06-05 16:13:21 +02:00
# include "r128_drv.h"
2005-04-16 15:20:36 -07:00
static struct pci_device_id pciidlist [ ] = {
r128_PCI_IDS
} ;
2011-10-31 07:28:57 -07:00
static const struct file_operations r128_driver_fops = {
. owner = THIS_MODULE ,
. open = drm_open ,
. release = drm_release ,
. unlocked_ioctl = drm_ioctl ,
2014-09-23 15:46:49 +02:00
. mmap = drm_legacy_mmap ,
2011-10-31 07:28:57 -07:00
. poll = drm_poll ,
# ifdef CONFIG_COMPAT
. compat_ioctl = r128_compat_ioctl ,
# endif
. llseek = noop_llseek ,
} ;
2005-04-16 15:20:36 -07:00
static struct drm_driver driver = {
2005-09-25 14:28:13 +10:00
. driver_features =
2016-08-03 21:11:09 +02:00
DRIVER_USE_AGP | DRIVER_PCI_DMA | DRIVER_SG | DRIVER_LEGACY |
2019-01-29 11:42:48 +01:00
DRIVER_HAVE_DMA | DRIVER_HAVE_IRQ ,
2005-04-16 15:20:36 -07:00
. dev_priv_size = sizeof ( drm_r128_buf_priv_t ) ,
2008-11-18 09:30:25 -08:00
. load = r128_driver_load ,
2005-11-10 22:16:34 +11:00
. preclose = r128_driver_preclose ,
. lastclose = r128_driver_lastclose ,
2008-09-30 12:14:26 -07:00
. get_vblank_counter = r128_get_vblank_counter ,
. enable_vblank = r128_enable_vblank ,
. disable_vblank = r128_disable_vblank ,
2005-04-16 15:20:36 -07:00
. irq_preinstall = r128_driver_irq_preinstall ,
. irq_postinstall = r128_driver_irq_postinstall ,
. irq_uninstall = r128_driver_irq_uninstall ,
. irq_handler = r128_driver_irq_handler ,
. ioctls = r128_ioctls ,
. dma_ioctl = r128_cce_buffers ,
2011-10-31 07:28:57 -07:00
. fops = & r128_driver_fops ,
2005-11-10 22:16:34 +11:00
. name = DRIVER_NAME ,
. desc = DRIVER_DESC ,
. date = DRIVER_DATE ,
. major = DRIVER_MAJOR ,
. minor = DRIVER_MINOR ,
. patchlevel = DRIVER_PATCHLEVEL ,
2005-04-16 15:20:36 -07:00
} ;
2010-07-12 13:44:23 +02:00
int r128_driver_load ( struct drm_device * dev , unsigned long flags )
2008-11-18 09:30:25 -08:00
{
2011-12-19 11:15:29 +00:00
pci_set_master ( dev - > pdev ) ;
2008-11-18 09:30:25 -08:00
return drm_vblank_init ( dev , 1 ) ;
}
2010-12-15 03:16:38 +10:00
static struct pci_driver r128_pci_driver = {
. name = DRIVER_NAME ,
. id_table = pciidlist ,
} ;
2005-04-16 15:20:36 -07:00
static int __init r128_init ( void )
{
driver . num_ioctls = r128_max_ioctl ;
2008-09-30 12:14:26 -07:00
2017-05-24 16:51:40 +02:00
return drm_legacy_pci_init ( & driver , & r128_pci_driver ) ;
2005-04-16 15:20:36 -07:00
}
static void __exit r128_exit ( void )
{
2017-05-24 16:51:40 +02:00
drm_legacy_pci_exit ( & driver , & r128_pci_driver ) ;
2005-04-16 15:20:36 -07:00
}
module_init ( r128_init ) ;
module_exit ( r128_exit ) ;
2005-09-25 14:28:13 +10:00
MODULE_AUTHOR ( DRIVER_AUTHOR ) ;
MODULE_DESCRIPTION ( DRIVER_DESC ) ;
2005-04-16 15:20:36 -07:00
MODULE_LICENSE ( " GPL and additional rights " ) ;