2005-06-28 22:48:56 +10:00
/*
* Copyright 1998 - 2003 VIA Technologies , Inc . All Rights Reserved .
* Copyright 2001 - 2003 S3 Graphics , Inc . 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 , sub license ,
* 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 NON - INFRINGEMENT . IN NO EVENT SHALL
* VIA , S3 GRAPHICS , 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 .
*/
2011-08-30 11:04:30 -04:00
# include <linux/module.h>
2019-12-03 11:04:06 +01:00
# include <linux/pci.h>
2011-08-30 11:04:30 -04:00
2019-07-23 22:09:44 +02:00
# include <drm/drm_drv.h>
# include <drm/drm_file.h>
# include <drm/drm_pciids.h>
2012-10-02 18:01:07 +01:00
# include <drm/via_drm.h>
2019-07-23 22:09:44 +02:00
2005-06-28 22:48:56 +10:00
# include "via_drv.h"
2011-10-25 16:32:45 +02:00
static int via_driver_open ( struct drm_device * dev , struct drm_file * file )
{
struct via_file_private * file_priv ;
DRM_DEBUG_DRIVER ( " \n " ) ;
file_priv = kmalloc ( sizeof ( * file_priv ) , GFP_KERNEL ) ;
if ( ! file_priv )
return - ENOMEM ;
file - > driver_priv = file_priv ;
INIT_LIST_HEAD ( & file_priv - > obj_list ) ;
return 0 ;
}
2014-01-06 22:17:01 +05:30
static void via_driver_postclose ( struct drm_device * dev , struct drm_file * file )
2011-10-25 16:32:45 +02:00
{
struct via_file_private * file_priv = file - > driver_priv ;
kfree ( file_priv ) ;
}
2005-06-28 22:48:56 +10:00
static struct pci_device_id pciidlist [ ] = {
viadrv_PCI_IDS
} ;
2011-10-31 07:28:57 -07:00
static const struct file_operations via_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 ,
2012-07-09 15:40:07 -07:00
. compat_ioctl = drm_compat_ioctl ,
2011-10-31 07:28:57 -07:00
. llseek = noop_llseek ,
} ;
2005-06-28 22:48:56 +10:00
static struct drm_driver driver = {
. driver_features =
2019-01-29 11:42:48 +01:00
DRIVER_USE_AGP | DRIVER_HAVE_IRQ | DRIVER_LEGACY ,
2005-11-12 21:52:46 +11:00
. load = via_driver_load ,
. unload = via_driver_unload ,
2011-10-25 16:32:45 +02:00
. open = via_driver_open ,
2011-10-25 23:37:09 +02:00
. preclose = via_reclaim_buffers_locked ,
2011-10-25 16:32:45 +02:00
. postclose = via_driver_postclose ,
2005-06-28 22:48:56 +10:00
. context_dtor = via_final_context ,
2008-09-30 12:14:26 -07:00
. get_vblank_counter = via_get_vblank_counter ,
. enable_vblank = via_enable_vblank ,
. disable_vblank = via_disable_vblank ,
2005-06-28 22:48:56 +10:00
. irq_preinstall = via_driver_irq_preinstall ,
. irq_postinstall = via_driver_irq_postinstall ,
. irq_uninstall = via_driver_irq_uninstall ,
. irq_handler = via_driver_irq_handler ,
. dma_quiescent = via_driver_dma_quiescent ,
2006-08-07 22:03:22 +10:00
. lastclose = via_lastclose ,
2005-11-12 21:52:46 +11:00
. ioctls = via_ioctls ,
2011-10-31 07:28:57 -07:00
. fops = & via_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-06-28 22:48:56 +10:00
} ;
2010-12-15 03:16:38 +10:00
static struct pci_driver via_pci_driver = {
. name = DRIVER_NAME ,
. id_table = pciidlist ,
} ;
2005-06-28 22:48:56 +10:00
static int __init via_init ( void )
{
2005-11-12 21:52:46 +11:00
driver . num_ioctls = via_max_ioctl ;
2005-06-28 22:48:56 +10:00
via_init_command_verifier ( ) ;
2017-05-24 16:51:40 +02:00
return drm_legacy_pci_init ( & driver , & via_pci_driver ) ;
2005-06-28 22:48:56 +10:00
}
static void __exit via_exit ( void )
{
2017-05-24 16:51:40 +02:00
drm_legacy_pci_exit ( & driver , & via_pci_driver ) ;
2005-06-28 22:48:56 +10:00
}
module_init ( via_init ) ;
module_exit ( via_exit ) ;
MODULE_AUTHOR ( DRIVER_AUTHOR ) ;
MODULE_DESCRIPTION ( DRIVER_DESC ) ;
MODULE_LICENSE ( " GPL and additional rights " ) ;