Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
0109fd37
cloud-kernel
项目概览
openanolis
/
cloud-kernel
大约 1 年 前同步成功
通知
158
Star
36
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
cloud-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
0109fd37
编写于
7月 09, 2005
作者:
L
Linus Torvalds
浏览文件
操作
浏览文件
下载
差异文件
Merge head 'drm-fixes' of master.kernel.org:/pub/scm/linux/kernel/git/airlied/drm-2.6
上级
cc14cf46
850eb83a
变更
25
隐藏空白更改
内联
并排
Showing
25 changed file
with
146 addition
and
194 deletion
+146
-194
drivers/char/drm/ati_pcigart.c
drivers/char/drm/ati_pcigart.c
+1
-1
drivers/char/drm/drm.h
drivers/char/drm/drm.h
+2
-0
drivers/char/drm/drmP.h
drivers/char/drm/drmP.h
+7
-23
drivers/char/drm/drm_auth.c
drivers/char/drm/drm_auth.c
+2
-2
drivers/char/drm/drm_bufs.c
drivers/char/drm/drm_bufs.c
+6
-6
drivers/char/drm/drm_context.c
drivers/char/drm/drm_context.c
+2
-2
drivers/char/drm/drm_drv.c
drivers/char/drm/drm_drv.c
+6
-3
drivers/char/drm/drm_fops.c
drivers/char/drm/drm_fops.c
+5
-9
drivers/char/drm/drm_irq.c
drivers/char/drm/drm_irq.c
+1
-1
drivers/char/drm/drm_lock.c
drivers/char/drm/drm_lock.c
+9
-3
drivers/char/drm/drm_memory.c
drivers/char/drm/drm_memory.c
+0
-13
drivers/char/drm/drm_proc.c
drivers/char/drm/drm_proc.c
+1
-1
drivers/char/drm/drm_stub.c
drivers/char/drm/drm_stub.c
+45
-47
drivers/char/drm/drm_vm.c
drivers/char/drm/drm_vm.c
+6
-4
drivers/char/drm/i810_dma.c
drivers/char/drm/i810_dma.c
+12
-12
drivers/char/drm/i810_drv.h
drivers/char/drm/i810_drv.h
+0
-1
drivers/char/drm/i830_dma.c
drivers/char/drm/i830_dma.c
+10
-10
drivers/char/drm/i830_drv.c
drivers/char/drm/i830_drv.c
+1
-1
drivers/char/drm/i830_drv.h
drivers/char/drm/i830_drv.h
+0
-2
drivers/char/drm/i830_irq.c
drivers/char/drm/i830_irq.c
+2
-3
drivers/char/drm/i915_dma.c
drivers/char/drm/i915_dma.c
+24
-36
drivers/char/drm/i915_drv.c
drivers/char/drm/i915_drv.c
+1
-1
drivers/char/drm/i915_drv.h
drivers/char/drm/i915_drv.h
+0
-10
drivers/char/drm/i915_irq.c
drivers/char/drm/i915_irq.c
+2
-2
drivers/char/drm/r128_state.c
drivers/char/drm/r128_state.c
+1
-1
未找到文件。
drivers/char/drm/ati_pcigart.c
浏览文件 @
0109fd37
...
...
@@ -52,7 +52,7 @@
# define ATI_MAX_PCIGART_PAGES 8192
/**< 32 MB aperture, 4K pages */
# define ATI_PCIGART_PAGE_SIZE 4096
/**< PCI GART page size */
unsigned
long
drm_ati_alloc_pcigart_table
(
void
)
static
unsigned
long
drm_ati_alloc_pcigart_table
(
void
)
{
unsigned
long
address
;
struct
page
*
page
;
...
...
drivers/char/drm/drm.h
浏览文件 @
0109fd37
...
...
@@ -38,7 +38,9 @@
#define _DRM_H_
#if defined(__linux__)
#if defined(__KERNEL__)
#include <linux/config.h>
#endif
#include <asm/ioctl.h>
/* For _IO* macros */
#define DRM_IOCTL_NR(n) _IOC_NR(n)
#define DRM_IOC_VOID _IOC_NONE
...
...
drivers/char/drm/drmP.h
浏览文件 @
0109fd37
...
...
@@ -774,8 +774,6 @@ extern int drm_cpu_valid( void );
/* Driver support (drm_drv.h) */
extern
int
drm_init
(
struct
drm_driver
*
driver
);
extern
void
drm_exit
(
struct
drm_driver
*
driver
);
extern
int
drm_version
(
struct
inode
*
inode
,
struct
file
*
filp
,
unsigned
int
cmd
,
unsigned
long
arg
);
extern
int
drm_ioctl
(
struct
inode
*
inode
,
struct
file
*
filp
,
unsigned
int
cmd
,
unsigned
long
arg
);
extern
long
drm_compat_ioctl
(
struct
file
*
filp
,
...
...
@@ -785,28 +783,19 @@ extern int drm_takedown(drm_device_t * dev);
/* Device support (drm_fops.h) */
extern
int
drm_open
(
struct
inode
*
inode
,
struct
file
*
filp
);
extern
int
drm_stub_open
(
struct
inode
*
inode
,
struct
file
*
filp
);
extern
int
drm_open_helper
(
struct
inode
*
inode
,
struct
file
*
filp
,
drm_device_t
*
dev
);
extern
int
drm_flush
(
struct
file
*
filp
);
extern
int
drm_fasync
(
int
fd
,
struct
file
*
filp
,
int
on
);
extern
int
drm_release
(
struct
inode
*
inode
,
struct
file
*
filp
);
/* Mapping support (drm_vm.h) */
extern
void
drm_vm_open
(
struct
vm_area_struct
*
vma
);
extern
void
drm_vm_close
(
struct
vm_area_struct
*
vma
);
extern
void
drm_vm_shm_close
(
struct
vm_area_struct
*
vma
);
extern
int
drm_mmap_dma
(
struct
file
*
filp
,
struct
vm_area_struct
*
vma
);
extern
int
drm_mmap
(
struct
file
*
filp
,
struct
vm_area_struct
*
vma
);
extern
unsigned
int
drm_poll
(
struct
file
*
filp
,
struct
poll_table_struct
*
wait
);
extern
ssize_t
drm_read
(
struct
file
*
filp
,
char
__user
*
buf
,
size_t
count
,
loff_t
*
off
);
/* Memory management support (drm_memory.h) */
#include "drm_memory.h"
extern
void
drm_mem_init
(
void
);
extern
int
drm_mem_info
(
char
*
buf
,
char
**
start
,
off_t
offset
,
int
request
,
int
*
eof
,
void
*
data
);
extern
void
*
drm_calloc
(
size_t
nmemb
,
size_t
size
,
int
area
);
extern
void
*
drm_realloc
(
void
*
oldpt
,
size_t
oldsize
,
size_t
size
,
int
area
);
extern
unsigned
long
drm_alloc_pages
(
int
order
,
int
area
);
...
...
@@ -854,9 +843,6 @@ extern int drm_newctx( struct inode *inode, struct file *filp,
extern
int
drm_rmctx
(
struct
inode
*
inode
,
struct
file
*
filp
,
unsigned
int
cmd
,
unsigned
long
arg
);
extern
int
drm_context_switch
(
drm_device_t
*
dev
,
int
old
,
int
new
);
extern
int
drm_context_switch_complete
(
drm_device_t
*
dev
,
int
new
);
extern
int
drm_ctxbitmap_init
(
drm_device_t
*
dev
);
extern
void
drm_ctxbitmap_cleanup
(
drm_device_t
*
dev
);
extern
void
drm_ctxbitmap_free
(
drm_device_t
*
dev
,
int
ctx_handle
);
...
...
@@ -874,9 +860,6 @@ extern int drm_rmdraw(struct inode *inode, struct file *filp,
/* Authentication IOCTL support (drm_auth.h) */
extern
int
drm_add_magic
(
drm_device_t
*
dev
,
drm_file_t
*
priv
,
drm_magic_t
magic
);
extern
int
drm_remove_magic
(
drm_device_t
*
dev
,
drm_magic_t
magic
);
extern
int
drm_getmagic
(
struct
inode
*
inode
,
struct
file
*
filp
,
unsigned
int
cmd
,
unsigned
long
arg
);
extern
int
drm_authmagic
(
struct
inode
*
inode
,
struct
file
*
filp
,
...
...
@@ -893,13 +876,9 @@ extern int drm_unlock(struct inode *inode, struct file *filp,
unsigned
int
cmd
,
unsigned
long
arg
);
extern
int
drm_lock_take
(
__volatile__
unsigned
int
*
lock
,
unsigned
int
context
);
extern
int
drm_lock_transfer
(
drm_device_t
*
dev
,
__volatile__
unsigned
int
*
lock
,
unsigned
int
context
);
extern
int
drm_lock_free
(
drm_device_t
*
dev
,
__volatile__
unsigned
int
*
lock
,
unsigned
int
context
);
extern
int
drm_notifier
(
void
*
priv
);
/* Buffer management support (drm_bufs.h) */
extern
int
drm_order
(
unsigned
long
size
);
...
...
@@ -927,7 +906,6 @@ extern void drm_core_reclaim_buffers(drm_device_t *dev, struct file *filp);
/* IRQ support (drm_irq.h) */
extern
int
drm_control
(
struct
inode
*
inode
,
struct
file
*
filp
,
unsigned
int
cmd
,
unsigned
long
arg
);
extern
int
drm_irq_install
(
drm_device_t
*
dev
);
extern
int
drm_irq_uninstall
(
drm_device_t
*
dev
);
extern
irqreturn_t
drm_irq_handler
(
DRM_IRQ_ARGS
);
extern
void
drm_driver_irq_preinstall
(
drm_device_t
*
dev
);
...
...
@@ -967,7 +945,6 @@ extern int drm_agp_unbind_memory(DRM_AGP_MEM *handle);
extern
int
drm_get_dev
(
struct
pci_dev
*
pdev
,
const
struct
pci_device_id
*
ent
,
struct
drm_driver
*
driver
);
extern
int
drm_put_dev
(
drm_device_t
*
dev
);
extern
int
drm_get_head
(
drm_device_t
*
dev
,
drm_head_t
*
head
);
extern
int
drm_put_head
(
drm_head_t
*
head
);
extern
unsigned
int
drm_debug
;
extern
unsigned
int
drm_cards_limit
;
...
...
@@ -1064,9 +1041,16 @@ static __inline__ void drm_free(void *pt, size_t size, int area)
{
kfree
(
pt
);
}
/** Wrapper around kcalloc() */
static
__inline__
void
*
drm_calloc
(
size_t
nmemb
,
size_t
size
,
int
area
)
{
return
kcalloc
(
nmemb
,
size
,
GFP_KERNEL
);
}
#else
extern
void
*
drm_alloc
(
size_t
size
,
int
area
);
extern
void
drm_free
(
void
*
pt
,
size_t
size
,
int
area
);
extern
void
*
drm_calloc
(
size_t
nmemb
,
size_t
size
,
int
area
);
#endif
/*@}*/
...
...
drivers/char/drm/drm_auth.c
浏览文件 @
0109fd37
...
...
@@ -87,7 +87,7 @@ static drm_file_t *drm_find_file(drm_device_t *dev, drm_magic_t magic)
* associated the magic number hash key in drm_device::magiclist, while holding
* the drm_device::struct_sem lock.
*/
int
drm_add_magic
(
drm_device_t
*
dev
,
drm_file_t
*
priv
,
drm_magic_t
magic
)
static
int
drm_add_magic
(
drm_device_t
*
dev
,
drm_file_t
*
priv
,
drm_magic_t
magic
)
{
int
hash
;
drm_magic_entry_t
*
entry
;
...
...
@@ -124,7 +124,7 @@ int drm_add_magic(drm_device_t *dev, drm_file_t *priv, drm_magic_t magic)
* Searches and unlinks the entry in drm_device::magiclist with the magic
* number hash key, while holding the drm_device::struct_sem lock.
*/
int
drm_remove_magic
(
drm_device_t
*
dev
,
drm_magic_t
magic
)
static
int
drm_remove_magic
(
drm_device_t
*
dev
,
drm_magic_t
magic
)
{
drm_magic_entry_t
*
prev
=
NULL
;
drm_magic_entry_t
*
pt
;
...
...
drivers/char/drm/drm_bufs.c
浏览文件 @
0109fd37
...
...
@@ -356,8 +356,8 @@ static void drm_cleanup_buf_error(drm_device_t *dev, drm_buf_entry_t *entry)
* reallocates the buffer list of the same size order to accommodate the new
* buffers.
*/
int
drm_addbufs_agp
(
struct
inode
*
inode
,
struct
file
*
filp
,
unsigned
int
cmd
,
unsigned
long
arg
)
static
int
drm_addbufs_agp
(
struct
inode
*
inode
,
struct
file
*
filp
,
unsigned
int
cmd
,
unsigned
long
arg
)
{
drm_file_t
*
priv
=
filp
->
private_data
;
drm_device_t
*
dev
=
priv
->
head
->
dev
;
...
...
@@ -521,8 +521,8 @@ int drm_addbufs_agp( struct inode *inode, struct file *filp,
}
#endif
/* __OS_HAS_AGP */
int
drm_addbufs_pci
(
struct
inode
*
inode
,
struct
file
*
filp
,
unsigned
int
cmd
,
unsigned
long
arg
)
static
int
drm_addbufs_pci
(
struct
inode
*
inode
,
struct
file
*
filp
,
unsigned
int
cmd
,
unsigned
long
arg
)
{
drm_file_t
*
priv
=
filp
->
private_data
;
drm_device_t
*
dev
=
priv
->
head
->
dev
;
...
...
@@ -751,8 +751,8 @@ int drm_addbufs_pci( struct inode *inode, struct file *filp,
}
int
drm_addbufs_sg
(
struct
inode
*
inode
,
struct
file
*
filp
,
unsigned
int
cmd
,
unsigned
long
arg
)
static
int
drm_addbufs_sg
(
struct
inode
*
inode
,
struct
file
*
filp
,
unsigned
int
cmd
,
unsigned
long
arg
)
{
drm_file_t
*
priv
=
filp
->
private_data
;
drm_device_t
*
dev
=
priv
->
head
->
dev
;
...
...
drivers/char/drm/drm_context.c
浏览文件 @
0109fd37
...
...
@@ -84,7 +84,7 @@ void drm_ctxbitmap_free( drm_device_t *dev, int ctx_handle )
* drm_device::context_sareas to accommodate the new entry while holding the
* drm_device::struct_sem lock.
*/
int
drm_ctxbitmap_next
(
drm_device_t
*
dev
)
static
int
drm_ctxbitmap_next
(
drm_device_t
*
dev
)
{
int
bit
;
...
...
@@ -326,7 +326,7 @@ int drm_context_switch( drm_device_t *dev, int old, int new )
* hardware lock is held, clears the drm_device::context_flag and wakes up
* drm_device::context_wait.
*/
int
drm_context_switch_complete
(
drm_device_t
*
dev
,
int
new
)
static
int
drm_context_switch_complete
(
drm_device_t
*
dev
,
int
new
)
{
dev
->
last_context
=
new
;
/* PRE/POST: This is the _only_ writer. */
dev
->
last_switch
=
jiffies
;
...
...
drivers/char/drm/drm_drv.c
浏览文件 @
0109fd37
...
...
@@ -51,8 +51,11 @@
#include "drmP.h"
#include "drm_core.h"
static
int
drm_version
(
struct
inode
*
inode
,
struct
file
*
filp
,
unsigned
int
cmd
,
unsigned
long
arg
);
/** Ioctl table */
drm_ioctl_desc_t
drm_ioctls
[]
=
{
static
drm_ioctl_desc_t
drm_ioctls
[]
=
{
[
DRM_IOCTL_NR
(
DRM_IOCTL_VERSION
)]
=
{
drm_version
,
0
,
0
},
[
DRM_IOCTL_NR
(
DRM_IOCTL_GET_UNIQUE
)]
=
{
drm_getunique
,
0
,
0
},
[
DRM_IOCTL_NR
(
DRM_IOCTL_GET_MAGIC
)]
=
{
drm_getmagic
,
0
,
0
},
...
...
@@ -447,8 +450,8 @@ module_exit( drm_core_exit );
*
* Fills in the version information in \p arg.
*/
int
drm_version
(
struct
inode
*
inode
,
struct
file
*
filp
,
unsigned
int
cmd
,
unsigned
long
arg
)
static
int
drm_version
(
struct
inode
*
inode
,
struct
file
*
filp
,
unsigned
int
cmd
,
unsigned
long
arg
)
{
drm_file_t
*
priv
=
filp
->
private_data
;
drm_device_t
*
dev
=
priv
->
head
->
dev
;
...
...
drivers/char/drm/drm_fops.c
浏览文件 @
0109fd37
...
...
@@ -37,6 +37,8 @@
#include "drmP.h"
#include <linux/poll.h>
static
int
drm_open_helper
(
struct
inode
*
inode
,
struct
file
*
filp
,
drm_device_t
*
dev
);
static
int
drm_setup
(
drm_device_t
*
dev
)
{
int
i
;
...
...
@@ -251,7 +253,7 @@ int drm_release( struct inode *inode, struct file *filp )
}
}
if
(
drm_core_check_feature
(
dev
,
DRIVER_HAVE_DMA
))
if
(
drm_core_check_feature
(
dev
,
DRIVER_HAVE_DMA
)
&&
!
dev
->
driver
->
release
)
{
dev
->
driver
->
reclaim_buffers
(
dev
,
filp
);
}
...
...
@@ -259,7 +261,7 @@ int drm_release( struct inode *inode, struct file *filp )
drm_fasync
(
-
1
,
filp
,
0
);
down
(
&
dev
->
ctxlist_sem
);
if
(
!
list_empty
(
&
dev
->
ctxlist
->
head
)
)
{
if
(
dev
->
ctxlist
&&
(
!
list_empty
(
&
dev
->
ctxlist
->
head
))
)
{
drm_ctx_list_t
*
pos
,
*
n
;
list_for_each_entry_safe
(
pos
,
n
,
&
dev
->
ctxlist
->
head
,
head
)
{
...
...
@@ -341,7 +343,7 @@ EXPORT_SYMBOL(drm_release);
* Creates and initializes a drm_file structure for the file private data in \p
* filp and add it into the double linked list in \p dev.
*/
int
drm_open_helper
(
struct
inode
*
inode
,
struct
file
*
filp
,
drm_device_t
*
dev
)
static
int
drm_open_helper
(
struct
inode
*
inode
,
struct
file
*
filp
,
drm_device_t
*
dev
)
{
int
minor
=
iminor
(
inode
);
drm_file_t
*
priv
;
...
...
@@ -443,9 +445,3 @@ unsigned int drm_poll(struct file *filp, struct poll_table_struct *wait)
}
EXPORT_SYMBOL
(
drm_poll
);
/** No-op. */
ssize_t
drm_read
(
struct
file
*
filp
,
char
__user
*
buf
,
size_t
count
,
loff_t
*
off
)
{
return
0
;
}
drivers/char/drm/drm_irq.c
浏览文件 @
0109fd37
...
...
@@ -89,7 +89,7 @@ int drm_irq_by_busid(struct inode *inode, struct file *filp,
* \c drm_driver_irq_preinstall() and \c drm_driver_irq_postinstall() functions
* before and after the installation.
*/
int
drm_irq_install
(
drm_device_t
*
dev
)
static
int
drm_irq_install
(
drm_device_t
*
dev
)
{
int
ret
;
unsigned
long
sh_flags
=
0
;
...
...
drivers/char/drm/drm_lock.c
浏览文件 @
0109fd37
...
...
@@ -35,6 +35,11 @@
#include "drmP.h"
static
int
drm_lock_transfer
(
drm_device_t
*
dev
,
__volatile__
unsigned
int
*
lock
,
unsigned
int
context
);
static
int
drm_notifier
(
void
*
priv
);
/**
* Lock ioctl.
*
...
...
@@ -225,8 +230,9 @@ int drm_lock_take(__volatile__ unsigned int *lock, unsigned int context)
* Resets the lock file pointer.
* Marks the lock as held by the given context, via the \p cmpxchg instruction.
*/
int
drm_lock_transfer
(
drm_device_t
*
dev
,
__volatile__
unsigned
int
*
lock
,
unsigned
int
context
)
static
int
drm_lock_transfer
(
drm_device_t
*
dev
,
__volatile__
unsigned
int
*
lock
,
unsigned
int
context
)
{
unsigned
int
old
,
new
,
prev
;
...
...
@@ -282,7 +288,7 @@ int drm_lock_free(drm_device_t *dev,
* \return one if the signal should be delivered normally, or zero if the
* signal should be blocked.
*/
int
drm_notifier
(
void
*
priv
)
static
int
drm_notifier
(
void
*
priv
)
{
drm_sigdata_t
*
s
=
(
drm_sigdata_t
*
)
priv
;
unsigned
int
old
,
new
,
prev
;
...
...
drivers/char/drm/drm_memory.c
浏览文件 @
0109fd37
...
...
@@ -65,19 +65,6 @@ int drm_mem_info(char *buf, char **start, off_t offset,
return
0
;
}
/** Wrapper around kmalloc() */
void
*
drm_calloc
(
size_t
nmemb
,
size_t
size
,
int
area
)
{
void
*
addr
;
addr
=
kmalloc
(
size
*
nmemb
,
GFP_KERNEL
);
if
(
addr
!=
NULL
)
memset
((
void
*
)
addr
,
0
,
size
*
nmemb
);
return
addr
;
}
EXPORT_SYMBOL
(
drm_calloc
);
/** Wrapper around kmalloc() and kfree() */
void
*
drm_realloc
(
void
*
oldpt
,
size_t
oldsize
,
size_t
size
,
int
area
)
{
...
...
drivers/char/drm/drm_proc.c
浏览文件 @
0109fd37
...
...
@@ -57,7 +57,7 @@ static int drm_vma_info(char *buf, char **start, off_t offset,
/**
* Proc file list.
*/
struct
drm_proc_list
{
st
atic
st
ruct
drm_proc_list
{
const
char
*
name
;
/**< file name */
int
(
*
f
)(
char
*
,
char
**
,
off_t
,
int
,
int
*
,
void
*
);
/**< proc callback*/
}
drm_proc_list
[]
=
{
...
...
drivers/char/drm/drm_stub.c
浏览文件 @
0109fd37
...
...
@@ -157,52 +157,6 @@ int drm_stub_open(struct inode *inode, struct file *filp)
return
err
;
}
/**
* Register.
*
* \param pdev - PCI device structure
* \param ent entry from the PCI ID table with device type flags
* \return zero on success or a negative number on failure.
*
* Attempt to gets inter module "drm" information. If we are first
* then register the character device and inter module information.
* Try and register, if we fail to register, backout previous work.
*/
int
drm_get_dev
(
struct
pci_dev
*
pdev
,
const
struct
pci_device_id
*
ent
,
struct
drm_driver
*
driver
)
{
drm_device_t
*
dev
;
int
ret
;
DRM_DEBUG
(
"
\n
"
);
dev
=
drm_calloc
(
1
,
sizeof
(
*
dev
),
DRM_MEM_STUB
);
if
(
!
dev
)
return
-
ENOMEM
;
pci_enable_device
(
pdev
);
if
((
ret
=
drm_fill_in_dev
(
dev
,
pdev
,
ent
,
driver
)))
{
printk
(
KERN_ERR
"DRM: Fill_in_dev failed.
\n
"
);
goto
err_g1
;
}
if
((
ret
=
drm_get_head
(
dev
,
&
dev
->
primary
)))
goto
err_g1
;
/* postinit is a required function to display the signon banner */
/* drivers add secondary heads here if needed */
if
((
ret
=
dev
->
driver
->
postinit
(
dev
,
ent
->
driver_data
)))
goto
err_g1
;
return
0
;
err_g1:
drm_free
(
dev
,
sizeof
(
*
dev
),
DRM_MEM_STUB
);
return
ret
;
}
EXPORT_SYMBOL
(
drm_get_dev
);
/**
* Get a secondary minor number.
*
...
...
@@ -214,7 +168,7 @@ EXPORT_SYMBOL(drm_get_dev);
* create the proc init entry via proc_init(). This routines assigns
* minor numbers to secondary heads of multi-headed cards
*/
int
drm_get_head
(
drm_device_t
*
dev
,
drm_head_t
*
head
)
static
int
drm_get_head
(
drm_device_t
*
dev
,
drm_head_t
*
head
)
{
drm_head_t
**
heads
=
drm_heads
;
int
ret
;
...
...
@@ -262,6 +216,50 @@ int drm_get_head(drm_device_t *dev, drm_head_t *head)
return
ret
;
}
/**
* Register.
*
* \param pdev - PCI device structure
* \param ent entry from the PCI ID table with device type flags
* \return zero on success or a negative number on failure.
*
* Attempt to gets inter module "drm" information. If we are first
* then register the character device and inter module information.
* Try and register, if we fail to register, backout previous work.
*/
int
drm_get_dev
(
struct
pci_dev
*
pdev
,
const
struct
pci_device_id
*
ent
,
struct
drm_driver
*
driver
)
{
drm_device_t
*
dev
;
int
ret
;
DRM_DEBUG
(
"
\n
"
);
dev
=
drm_calloc
(
1
,
sizeof
(
*
dev
),
DRM_MEM_STUB
);
if
(
!
dev
)
return
-
ENOMEM
;
pci_enable_device
(
pdev
);
if
((
ret
=
drm_fill_in_dev
(
dev
,
pdev
,
ent
,
driver
)))
{
printk
(
KERN_ERR
"DRM: Fill_in_dev failed.
\n
"
);
goto
err_g1
;
}
if
((
ret
=
drm_get_head
(
dev
,
&
dev
->
primary
)))
goto
err_g1
;
/* postinit is a required function to display the signon banner */
/* drivers add secondary heads here if needed */
if
((
ret
=
dev
->
driver
->
postinit
(
dev
,
ent
->
driver_data
)))
goto
err_g1
;
return
0
;
err_g1:
drm_free
(
dev
,
sizeof
(
*
dev
),
DRM_MEM_STUB
);
return
ret
;
}
EXPORT_SYMBOL
(
drm_get_dev
);
/**
* Put a device minor number.
...
...
drivers/char/drm/drm_vm.c
浏览文件 @
0109fd37
...
...
@@ -38,6 +38,8 @@
#include <linux/efi.h>
#endif
static
void
drm_vm_open
(
struct
vm_area_struct
*
vma
);
static
void
drm_vm_close
(
struct
vm_area_struct
*
vma
);
/**
* \c nopage method for AGP virtual memory.
...
...
@@ -163,7 +165,7 @@ static __inline__ struct page *drm_do_vm_shm_nopage(struct vm_area_struct *vma,
* Deletes map information if we are the last
* person to close a mapping and it's not in the global maplist.
*/
void
drm_vm_shm_close
(
struct
vm_area_struct
*
vma
)
static
void
drm_vm_shm_close
(
struct
vm_area_struct
*
vma
)
{
drm_file_t
*
priv
=
vma
->
vm_file
->
private_data
;
drm_device_t
*
dev
=
priv
->
head
->
dev
;
...
...
@@ -399,7 +401,7 @@ static struct vm_operations_struct drm_vm_sg_ops = {
* Create a new drm_vma_entry structure as the \p vma private data entry and
* add it to drm_device::vmalist.
*/
void
drm_vm_open
(
struct
vm_area_struct
*
vma
)
static
void
drm_vm_open
(
struct
vm_area_struct
*
vma
)
{
drm_file_t
*
priv
=
vma
->
vm_file
->
private_data
;
drm_device_t
*
dev
=
priv
->
head
->
dev
;
...
...
@@ -428,7 +430,7 @@ void drm_vm_open(struct vm_area_struct *vma)
* Search the \p vma private data entry in drm_device::vmalist, unlink it, and
* free it.
*/
void
drm_vm_close
(
struct
vm_area_struct
*
vma
)
static
void
drm_vm_close
(
struct
vm_area_struct
*
vma
)
{
drm_file_t
*
priv
=
vma
->
vm_file
->
private_data
;
drm_device_t
*
dev
=
priv
->
head
->
dev
;
...
...
@@ -463,7 +465,7 @@ void drm_vm_close(struct vm_area_struct *vma)
* Sets the virtual memory area operations structure to vm_dma_ops, the file
* pointer, and calls vm_open().
*/
int
drm_mmap_dma
(
struct
file
*
filp
,
struct
vm_area_struct
*
vma
)
static
int
drm_mmap_dma
(
struct
file
*
filp
,
struct
vm_area_struct
*
vma
)
{
drm_file_t
*
priv
=
filp
->
private_data
;
drm_device_t
*
dev
;
...
...
drivers/char/drm/i810_dma.c
浏览文件 @
0109fd37
...
...
@@ -90,16 +90,7 @@ static int i810_freelist_put(drm_device_t *dev, drm_buf_t *buf)
return
0
;
}
static
struct
file_operations
i810_buffer_fops
=
{
.
open
=
drm_open
,
.
flush
=
drm_flush
,
.
release
=
drm_release
,
.
ioctl
=
drm_ioctl
,
.
mmap
=
i810_mmap_buffers
,
.
fasync
=
drm_fasync
,
};
int
i810_mmap_buffers
(
struct
file
*
filp
,
struct
vm_area_struct
*
vma
)
static
int
i810_mmap_buffers
(
struct
file
*
filp
,
struct
vm_area_struct
*
vma
)
{
drm_file_t
*
priv
=
filp
->
private_data
;
drm_device_t
*
dev
;
...
...
@@ -126,6 +117,15 @@ int i810_mmap_buffers(struct file *filp, struct vm_area_struct *vma)
return
0
;
}
static
struct
file_operations
i810_buffer_fops
=
{
.
open
=
drm_open
,
.
flush
=
drm_flush
,
.
release
=
drm_release
,
.
ioctl
=
drm_ioctl
,
.
mmap
=
i810_mmap_buffers
,
.
fasync
=
drm_fasync
,
};
static
int
i810_map_buffer
(
drm_buf_t
*
buf
,
struct
file
*
filp
)
{
drm_file_t
*
priv
=
filp
->
private_data
;
...
...
@@ -1003,8 +1003,8 @@ void i810_reclaim_buffers(drm_device_t *dev, struct file *filp)
}
}
int
i810_flush_ioctl
(
struct
inode
*
inode
,
struct
file
*
filp
,
unsigned
int
cmd
,
unsigned
long
arg
)
static
int
i810_flush_ioctl
(
struct
inode
*
inode
,
struct
file
*
filp
,
unsigned
int
cmd
,
unsigned
long
arg
)
{
drm_file_t
*
priv
=
filp
->
private_data
;
drm_device_t
*
dev
=
priv
->
head
->
dev
;
...
...
drivers/char/drm/i810_drv.h
浏览文件 @
0109fd37
...
...
@@ -115,7 +115,6 @@ typedef struct drm_i810_private {
/* i810_dma.c */
extern
void
i810_reclaim_buffers
(
drm_device_t
*
dev
,
struct
file
*
filp
);
extern
int
i810_mmap_buffers
(
struct
file
*
filp
,
struct
vm_area_struct
*
vma
);
extern
int
i810_driver_dma_quiescent
(
drm_device_t
*
dev
);
extern
void
i810_driver_release
(
drm_device_t
*
dev
,
struct
file
*
filp
);
...
...
drivers/char/drm/i830_dma.c
浏览文件 @
0109fd37
...
...
@@ -92,16 +92,7 @@ static int i830_freelist_put(drm_device_t *dev, drm_buf_t *buf)
return
0
;
}
static
struct
file_operations
i830_buffer_fops
=
{
.
open
=
drm_open
,
.
flush
=
drm_flush
,
.
release
=
drm_release
,
.
ioctl
=
drm_ioctl
,
.
mmap
=
i830_mmap_buffers
,
.
fasync
=
drm_fasync
,
};
int
i830_mmap_buffers
(
struct
file
*
filp
,
struct
vm_area_struct
*
vma
)
static
int
i830_mmap_buffers
(
struct
file
*
filp
,
struct
vm_area_struct
*
vma
)
{
drm_file_t
*
priv
=
filp
->
private_data
;
drm_device_t
*
dev
;
...
...
@@ -128,6 +119,15 @@ int i830_mmap_buffers(struct file *filp, struct vm_area_struct *vma)
return
0
;
}
static
struct
file_operations
i830_buffer_fops
=
{
.
open
=
drm_open
,
.
flush
=
drm_flush
,
.
release
=
drm_release
,
.
ioctl
=
drm_ioctl
,
.
mmap
=
i830_mmap_buffers
,
.
fasync
=
drm_fasync
,
};
static
int
i830_map_buffer
(
drm_buf_t
*
buf
,
struct
file
*
filp
)
{
drm_file_t
*
priv
=
filp
->
private_data
;
...
...
drivers/char/drm/i830_drv.c
浏览文件 @
0109fd37
...
...
@@ -40,7 +40,7 @@
#include "drm_pciids.h"
int
postinit
(
struct
drm_device
*
dev
,
unsigned
long
flags
)
static
int
postinit
(
struct
drm_device
*
dev
,
unsigned
long
flags
)
{
dev
->
counters
+=
4
;
dev
->
types
[
6
]
=
_DRM_STAT_IRQ
;
...
...
drivers/char/drm/i830_drv.h
浏览文件 @
0109fd37
...
...
@@ -123,8 +123,6 @@ typedef struct drm_i830_private {
/* i830_dma.c */
extern
void
i830_reclaim_buffers
(
drm_device_t
*
dev
,
struct
file
*
filp
);
extern
int
i830_mmap_buffers
(
struct
file
*
filp
,
struct
vm_area_struct
*
vma
);
/* i830_irq.c */
extern
int
i830_irq_emit
(
struct
inode
*
inode
,
struct
file
*
filp
,
unsigned
int
cmd
,
unsigned
long
arg
);
...
...
drivers/char/drm/i830_irq.c
浏览文件 @
0109fd37
...
...
@@ -54,8 +54,7 @@ irqreturn_t i830_driver_irq_handler( DRM_IRQ_ARGS )
return
IRQ_HANDLED
;
}
int
i830_emit_irq
(
drm_device_t
*
dev
)
static
int
i830_emit_irq
(
drm_device_t
*
dev
)
{
drm_i830_private_t
*
dev_priv
=
dev
->
dev_private
;
RING_LOCALS
;
...
...
@@ -73,7 +72,7 @@ int i830_emit_irq(drm_device_t *dev)
}
int
i830_wait_irq
(
drm_device_t
*
dev
,
int
irq_nr
)
static
int
i830_wait_irq
(
drm_device_t
*
dev
,
int
irq_nr
)
{
drm_i830_private_t
*
dev_priv
=
(
drm_i830_private_t
*
)
dev
->
dev_private
;
...
...
drivers/char/drm/i915_dma.c
浏览文件 @
0109fd37
...
...
@@ -32,23 +32,6 @@
#include "i915_drm.h"
#include "i915_drv.h"
drm_ioctl_desc_t
i915_ioctls
[]
=
{
[
DRM_IOCTL_NR
(
DRM_I915_INIT
)]
=
{
i915_dma_init
,
1
,
1
},
[
DRM_IOCTL_NR
(
DRM_I915_FLUSH
)]
=
{
i915_flush_ioctl
,
1
,
0
},
[
DRM_IOCTL_NR
(
DRM_I915_FLIP
)]
=
{
i915_flip_bufs
,
1
,
0
},
[
DRM_IOCTL_NR
(
DRM_I915_BATCHBUFFER
)]
=
{
i915_batchbuffer
,
1
,
0
},
[
DRM_IOCTL_NR
(
DRM_I915_IRQ_EMIT
)]
=
{
i915_irq_emit
,
1
,
0
},
[
DRM_IOCTL_NR
(
DRM_I915_IRQ_WAIT
)]
=
{
i915_irq_wait
,
1
,
0
},
[
DRM_IOCTL_NR
(
DRM_I915_GETPARAM
)]
=
{
i915_getparam
,
1
,
0
},
[
DRM_IOCTL_NR
(
DRM_I915_SETPARAM
)]
=
{
i915_setparam
,
1
,
1
},
[
DRM_IOCTL_NR
(
DRM_I915_ALLOC
)]
=
{
i915_mem_alloc
,
1
,
0
},
[
DRM_IOCTL_NR
(
DRM_I915_FREE
)]
=
{
i915_mem_free
,
1
,
0
},
[
DRM_IOCTL_NR
(
DRM_I915_INIT_HEAP
)]
=
{
i915_mem_init_heap
,
1
,
1
},
[
DRM_IOCTL_NR
(
DRM_I915_CMDBUFFER
)]
=
{
i915_cmdbuffer
,
1
,
0
}
};
int
i915_max_ioctl
=
DRM_ARRAY_SIZE
(
i915_ioctls
);
/* Really want an OS-independent resettable timer. Would like to have
* this loop run for (eg) 3 sec, but have the timer reset every time
* the head pointer changes, so that EBUSY only happens if the ring
...
...
@@ -95,7 +78,7 @@ void i915_kernel_lost_context(drm_device_t * dev)
dev_priv
->
sarea_priv
->
perf_boxes
|=
I915_BOX_RING_EMPTY
;
}
int
i915_dma_cleanup
(
drm_device_t
*
dev
)
static
int
i915_dma_cleanup
(
drm_device_t
*
dev
)
{
/* Make sure interrupts are disabled here because the uninstall ioctl
* may not have been called from userspace and after dev_private
...
...
@@ -247,7 +230,7 @@ static int i915_resume(drm_device_t * dev)
return
0
;
}
int
i915_dma_init
(
DRM_IOCTL_ARGS
)
static
int
i915_dma_init
(
DRM_IOCTL_ARGS
)
{
DRM_DEVICE
;
drm_i915_private_t
*
dev_priv
;
...
...
@@ -558,7 +541,7 @@ static int i915_quiescent(drm_device_t * dev)
return
i915_wait_ring
(
dev
,
dev_priv
->
ring
.
Size
-
8
,
__FUNCTION__
);
}
int
i915_flush_ioctl
(
DRM_IOCTL_ARGS
)
static
int
i915_flush_ioctl
(
DRM_IOCTL_ARGS
)
{
DRM_DEVICE
;
...
...
@@ -567,7 +550,7 @@ int i915_flush_ioctl(DRM_IOCTL_ARGS)
return
i915_quiescent
(
dev
);
}
int
i915_batchbuffer
(
DRM_IOCTL_ARGS
)
static
int
i915_batchbuffer
(
DRM_IOCTL_ARGS
)
{
DRM_DEVICE
;
drm_i915_private_t
*
dev_priv
=
(
drm_i915_private_t
*
)
dev
->
dev_private
;
...
...
@@ -601,7 +584,7 @@ int i915_batchbuffer(DRM_IOCTL_ARGS)
return
ret
;
}
int
i915_cmdbuffer
(
DRM_IOCTL_ARGS
)
static
int
i915_cmdbuffer
(
DRM_IOCTL_ARGS
)
{
DRM_DEVICE
;
drm_i915_private_t
*
dev_priv
=
(
drm_i915_private_t
*
)
dev
->
dev_private
;
...
...
@@ -637,18 +620,7 @@ int i915_cmdbuffer(DRM_IOCTL_ARGS)
return
0
;
}
int
i915_do_cleanup_pageflip
(
drm_device_t
*
dev
)
{
drm_i915_private_t
*
dev_priv
=
dev
->
dev_private
;
DRM_DEBUG
(
"%s
\n
"
,
__FUNCTION__
);
if
(
dev_priv
->
current_page
!=
0
)
i915_dispatch_flip
(
dev
);
return
0
;
}
int
i915_flip_bufs
(
DRM_IOCTL_ARGS
)
static
int
i915_flip_bufs
(
DRM_IOCTL_ARGS
)
{
DRM_DEVICE
;
...
...
@@ -659,7 +631,7 @@ int i915_flip_bufs(DRM_IOCTL_ARGS)
return
i915_dispatch_flip
(
dev
);
}
int
i915_getparam
(
DRM_IOCTL_ARGS
)
static
int
i915_getparam
(
DRM_IOCTL_ARGS
)
{
DRM_DEVICE
;
drm_i915_private_t
*
dev_priv
=
dev
->
dev_private
;
...
...
@@ -694,7 +666,7 @@ int i915_getparam(DRM_IOCTL_ARGS)
return
0
;
}
int
i915_setparam
(
DRM_IOCTL_ARGS
)
static
int
i915_setparam
(
DRM_IOCTL_ARGS
)
{
DRM_DEVICE
;
drm_i915_private_t
*
dev_priv
=
dev
->
dev_private
;
...
...
@@ -743,3 +715,19 @@ void i915_driver_prerelease(drm_device_t *dev, DRMFILE filp)
}
}
drm_ioctl_desc_t
i915_ioctls
[]
=
{
[
DRM_IOCTL_NR
(
DRM_I915_INIT
)]
=
{
i915_dma_init
,
1
,
1
},
[
DRM_IOCTL_NR
(
DRM_I915_FLUSH
)]
=
{
i915_flush_ioctl
,
1
,
0
},
[
DRM_IOCTL_NR
(
DRM_I915_FLIP
)]
=
{
i915_flip_bufs
,
1
,
0
},
[
DRM_IOCTL_NR
(
DRM_I915_BATCHBUFFER
)]
=
{
i915_batchbuffer
,
1
,
0
},
[
DRM_IOCTL_NR
(
DRM_I915_IRQ_EMIT
)]
=
{
i915_irq_emit
,
1
,
0
},
[
DRM_IOCTL_NR
(
DRM_I915_IRQ_WAIT
)]
=
{
i915_irq_wait
,
1
,
0
},
[
DRM_IOCTL_NR
(
DRM_I915_GETPARAM
)]
=
{
i915_getparam
,
1
,
0
},
[
DRM_IOCTL_NR
(
DRM_I915_SETPARAM
)]
=
{
i915_setparam
,
1
,
1
},
[
DRM_IOCTL_NR
(
DRM_I915_ALLOC
)]
=
{
i915_mem_alloc
,
1
,
0
},
[
DRM_IOCTL_NR
(
DRM_I915_FREE
)]
=
{
i915_mem_free
,
1
,
0
},
[
DRM_IOCTL_NR
(
DRM_I915_INIT_HEAP
)]
=
{
i915_mem_init_heap
,
1
,
1
},
[
DRM_IOCTL_NR
(
DRM_I915_CMDBUFFER
)]
=
{
i915_cmdbuffer
,
1
,
0
}
};
int
i915_max_ioctl
=
DRM_ARRAY_SIZE
(
i915_ioctls
);
drivers/char/drm/i915_drv.c
浏览文件 @
0109fd37
...
...
@@ -34,7 +34,7 @@
#include "drm_pciids.h"
int
postinit
(
struct
drm_device
*
dev
,
unsigned
long
flags
)
static
int
postinit
(
struct
drm_device
*
dev
,
unsigned
long
flags
)
{
dev
->
counters
+=
4
;
dev
->
types
[
6
]
=
_DRM_STAT_IRQ
;
...
...
drivers/char/drm/i915_drv.h
浏览文件 @
0109fd37
...
...
@@ -99,14 +99,6 @@ typedef struct drm_i915_private {
}
drm_i915_private_t
;
/* i915_dma.c */
extern
int
i915_dma_init
(
DRM_IOCTL_ARGS
);
extern
int
i915_dma_cleanup
(
drm_device_t
*
dev
);
extern
int
i915_flush_ioctl
(
DRM_IOCTL_ARGS
);
extern
int
i915_batchbuffer
(
DRM_IOCTL_ARGS
);
extern
int
i915_flip_bufs
(
DRM_IOCTL_ARGS
);
extern
int
i915_getparam
(
DRM_IOCTL_ARGS
);
extern
int
i915_setparam
(
DRM_IOCTL_ARGS
);
extern
int
i915_cmdbuffer
(
DRM_IOCTL_ARGS
);
extern
void
i915_kernel_lost_context
(
drm_device_t
*
dev
);
extern
void
i915_driver_pretakedown
(
drm_device_t
*
dev
);
extern
void
i915_driver_prerelease
(
drm_device_t
*
dev
,
DRMFILE
filp
);
...
...
@@ -114,8 +106,6 @@ extern void i915_driver_prerelease(drm_device_t *dev, DRMFILE filp);
/* i915_irq.c */
extern
int
i915_irq_emit
(
DRM_IOCTL_ARGS
);
extern
int
i915_irq_wait
(
DRM_IOCTL_ARGS
);
extern
int
i915_wait_irq
(
drm_device_t
*
dev
,
int
irq_nr
);
extern
int
i915_emit_irq
(
drm_device_t
*
dev
);
extern
irqreturn_t
i915_driver_irq_handler
(
DRM_IRQ_ARGS
);
extern
void
i915_driver_irq_preinstall
(
drm_device_t
*
dev
);
...
...
drivers/char/drm/i915_irq.c
浏览文件 @
0109fd37
...
...
@@ -56,7 +56,7 @@ irqreturn_t i915_driver_irq_handler(DRM_IRQ_ARGS)
return
IRQ_HANDLED
;
}
int
i915_emit_irq
(
drm_device_t
*
dev
)
static
int
i915_emit_irq
(
drm_device_t
*
dev
)
{
drm_i915_private_t
*
dev_priv
=
dev
->
dev_private
;
u32
ret
;
...
...
@@ -76,7 +76,7 @@ int i915_emit_irq(drm_device_t * dev)
return
ret
;
}
int
i915_wait_irq
(
drm_device_t
*
dev
,
int
irq_nr
)
static
int
i915_wait_irq
(
drm_device_t
*
dev
,
int
irq_nr
)
{
drm_i915_private_t
*
dev_priv
=
(
drm_i915_private_t
*
)
dev
->
dev_private
;
int
ret
=
0
;
...
...
drivers/char/drm/r128_state.c
浏览文件 @
0109fd37
...
...
@@ -1307,7 +1307,7 @@ static int r128_do_init_pageflip( drm_device_t *dev )
return
0
;
}
int
r128_do_cleanup_pageflip
(
drm_device_t
*
dev
)
static
int
r128_do_cleanup_pageflip
(
drm_device_t
*
dev
)
{
drm_r128_private_t
*
dev_priv
=
dev
->
dev_private
;
DRM_DEBUG
(
"
\n
"
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录