Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
8ae6a2d2
Commit
8ae6a2d2
authored
Sep 04, 2004
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://drm.bkbits.net/drm-fntbl
into ppc970.osdl.org:/home/torvalds/v2.6/linux
parents
f9677ef9
e4279631
Changes
38
Hide whitespace changes
Inline
Side-by-side
Showing
38 changed files
with
247 additions
and
235 deletions
+247
-235
drivers/char/drm/drmP.h
drivers/char/drm/drmP.h
+37
-34
drivers/char/drm/drm_agpsupport.h
drivers/char/drm/drm_agpsupport.h
+2
-3
drivers/char/drm/drm_bufs.h
drivers/char/drm/drm_bufs.h
+27
-42
drivers/char/drm/drm_context.h
drivers/char/drm/drm_context.h
+1
-5
drivers/char/drm/drm_drv.h
drivers/char/drm/drm_drv.h
+41
-63
drivers/char/drm/drm_fops.h
drivers/char/drm/drm_fops.h
+10
-2
drivers/char/drm/drm_memory.h
drivers/char/drm/drm_memory.h
+23
-14
drivers/char/drm/drm_memory_debug.h
drivers/char/drm/drm_memory_debug.h
+1
-1
drivers/char/drm/drm_os_linux.h
drivers/char/drm/drm_os_linux.h
+26
-0
drivers/char/drm/drm_scatter.h
drivers/char/drm/drm_scatter.h
+6
-0
drivers/char/drm/drm_vm.h
drivers/char/drm/drm_vm.h
+13
-10
drivers/char/drm/gamma.h
drivers/char/drm/gamma.h
+0
-5
drivers/char/drm/gamma_dma.c
drivers/char/drm/gamma_dma.c
+1
-0
drivers/char/drm/gamma_drv.c
drivers/char/drm/gamma_drv.c
+1
-0
drivers/char/drm/i810.h
drivers/char/drm/i810.h
+0
-4
drivers/char/drm/i810_dma.c
drivers/char/drm/i810_dma.c
+1
-0
drivers/char/drm/i810_drv.c
drivers/char/drm/i810_drv.c
+1
-0
drivers/char/drm/i830.h
drivers/char/drm/i830.h
+0
-4
drivers/char/drm/i830_dma.c
drivers/char/drm/i830_dma.c
+1
-0
drivers/char/drm/i830_drv.c
drivers/char/drm/i830_drv.c
+1
-0
drivers/char/drm/i915.h
drivers/char/drm/i915.h
+0
-4
drivers/char/drm/i915_dma.c
drivers/char/drm/i915_dma.c
+1
-0
drivers/char/drm/i915_drv.c
drivers/char/drm/i915_drv.c
+1
-0
drivers/char/drm/mga.h
drivers/char/drm/mga.h
+0
-4
drivers/char/drm/mga_dma.c
drivers/char/drm/mga_dma.c
+1
-0
drivers/char/drm/mga_drv.c
drivers/char/drm/mga_drv.c
+1
-0
drivers/char/drm/r128.h
drivers/char/drm/r128.h
+0
-7
drivers/char/drm/r128_cce.c
drivers/char/drm/r128_cce.c
+6
-6
drivers/char/drm/r128_state.c
drivers/char/drm/r128_state.c
+1
-0
drivers/char/drm/radeon.h
drivers/char/drm/radeon.h
+0
-9
drivers/char/drm/radeon_cp.c
drivers/char/drm/radeon_cp.c
+7
-7
drivers/char/drm/radeon_drv.h
drivers/char/drm/radeon_drv.h
+3
-0
drivers/char/drm/radeon_state.c
drivers/char/drm/radeon_state.c
+28
-5
drivers/char/drm/sis.h
drivers/char/drm/sis.h
+0
-4
drivers/char/drm/sis_drv.c
drivers/char/drm/sis_drv.c
+1
-0
drivers/char/drm/sis_mm.c
drivers/char/drm/sis_mm.c
+1
-0
drivers/char/drm/tdfx.h
drivers/char/drm/tdfx.h
+0
-2
drivers/char/drm/tdfx_drv.c
drivers/char/drm/tdfx_drv.c
+3
-0
No files found.
drivers/char/drm/drmP.h
View file @
8ae6a2d2
...
...
@@ -73,22 +73,22 @@
#include <asm/pgalloc.h>
#include "drm.h"
#include "drm_os_linux.h"
#define __OS_HAS_AGP (defined(CONFIG_AGP) || (defined(CONFIG_AGP_MODULE) && defined(MODULE)))
#define __OS_HAS_MTRR (defined(CONFIG_MTRR))
#include "drm_os_linux.h"
/***********************************************************************/
/** \name DRM template customization defaults */
/*@{*/
#ifndef __HAVE_AGP
#define __HAVE_AGP 0
#endif
#ifndef __HAVE_MTRR
#define __HAVE_MTRR 0
#endif
#ifndef __HAVE_CTX_BITMAP
#define __HAVE_CTX_BITMAP 0
#endif
/* driver capabilities and requirements mask */
#define DRIVER_USE_AGP 0x1
#define DRIVER_REQUIRE_AGP 0x2
#define DRIVER_USE_MTRR 0x4
#define DRIVER_PCI_DMA 0x8
#define DRIVER_SG 0x10
#ifndef __HAVE_DMA
#define __HAVE_DMA 0
#endif
...
...
@@ -96,14 +96,6 @@
#define __HAVE_IRQ 0
#endif
#define __REALLY_HAVE_AGP (__HAVE_AGP && (defined(CONFIG_AGP) || \
defined(CONFIG_AGP_MODULE)))
#define __REALLY_HAVE_MTRR (__HAVE_MTRR && defined(CONFIG_MTRR))
#define __REALLY_HAVE_SG (__HAVE_SG)
/*@}*/
/***********************************************************************/
/** \name Begin the DRM... */
/*@{*/
...
...
@@ -419,9 +411,7 @@ typedef struct drm_file {
struct
drm_device
*
dev
;
int
remove_auth_on_close
;
unsigned
long
lock_count
;
#ifdef DRIVER_FILE_FIELDS
DRIVER_FILE_FIELDS
;
#endif
void
*
driver_priv
;
}
drm_file_t
;
/** Wait queue */
...
...
@@ -479,7 +469,6 @@ typedef struct drm_device_dma {
/*@}*/
}
drm_device_dma_t
;
#if __REALLY_HAVE_AGP
/**
* AGP memory entry. Stored as a doubly linked list.
*/
...
...
@@ -508,7 +497,6 @@ typedef struct drm_agp_head {
int
cant_use_aperture
;
unsigned
long
page_mask
;
}
drm_agp_head_t
;
#endif
/**
* Scatter-gather memory.
...
...
@@ -569,7 +557,8 @@ struct drm_driver_fn {
int
(
*
postcleanup
)(
struct
drm_device
*
);
int
(
*
presetup
)(
struct
drm_device
*
);
int
(
*
postsetup
)(
struct
drm_device
*
);
void
(
*
open_helper
)(
struct
drm_device
*
,
drm_file_t
*
);
int
(
*
open_helper
)(
struct
drm_device
*
,
drm_file_t
*
);
void
(
*
free_filp_priv
)(
struct
drm_device
*
,
drm_file_t
*
);
void
(
*
release
)(
struct
drm_device
*
,
struct
file
*
filp
);
void
(
*
dma_ready
)(
struct
drm_device
*
);
int
(
*
dma_quiescent
)(
struct
drm_device
*
);
...
...
@@ -685,9 +674,7 @@ typedef struct drm_device {
wait_queue_head_t
buf_readers
;
/**< Processes waiting to read */
wait_queue_head_t
buf_writers
;
/**< Processes waiting to ctx switch */
#if __REALLY_HAVE_AGP
drm_agp_head_t
*
agp
;
/**< AGP data */
#endif
struct
pci_dev
*
pdev
;
/**< PCI device structure */
int
pci_domain
;
/**< PCI bus domain number */
...
...
@@ -710,8 +697,32 @@ typedef struct drm_device {
struct
drm_driver_fn
fn_tbl
;
drm_local_map_t
*
agp_buffer_map
;
int
dev_priv_size
;
u32
driver_features
;
}
drm_device_t
;
static
__inline__
int
drm_core_check_feature
(
struct
drm_device
*
dev
,
int
feature
)
{
return
((
dev
->
driver_features
&
feature
)
?
1
:
0
);
}
#if __OS_HAS_AGP
static
inline
int
drm_core_has_AGP
(
struct
drm_device
*
dev
)
{
return
drm_core_check_feature
(
dev
,
DRIVER_USE_AGP
);
}
#else
#define drm_core_has_AGP(dev) (0)
#endif
#if __OS_HAS_MTRR
static
inline
int
drm_core_has_MTRR
(
struct
drm_device
*
dev
)
{
return
drm_core_check_feature
(
dev
,
DRIVER_USE_MTRR
);
}
#else
#define drm_core_has_MTRR(dev) (0)
#endif
extern
void
DRM
(
driver_register_fns
)(
struct
drm_device
*
dev
);
/******************************************************************/
...
...
@@ -768,12 +779,10 @@ extern void *DRM(ioremap_nocache)(unsigned long offset, unsigned long size,
drm_device_t
*
dev
);
extern
void
DRM
(
ioremapfree
)(
void
*
pt
,
unsigned
long
size
,
drm_device_t
*
dev
);
#if __REALLY_HAVE_AGP
extern
DRM_AGP_MEM
*
DRM
(
alloc_agp
)(
int
pages
,
u32
type
);
extern
int
DRM
(
free_agp
)(
DRM_AGP_MEM
*
handle
,
int
pages
);
extern
int
DRM
(
bind_agp
)(
DRM_AGP_MEM
*
handle
,
unsigned
int
start
);
extern
int
DRM
(
unbind_agp
)(
DRM_AGP_MEM
*
handle
);
#endif
/* Misc. IOCTL support (drm_ioctl.h) */
extern
int
DRM
(
irq_by_busid
)(
struct
inode
*
inode
,
struct
file
*
filp
,
...
...
@@ -810,10 +819,8 @@ extern int DRM(rmctx)( struct inode *inode, struct file *filp,
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
);
#if __HAVE_CTX_BITMAP
extern
int
DRM
(
ctxbitmap_init
)(
drm_device_t
*
dev
);
extern
void
DRM
(
ctxbitmap_cleanup
)(
drm_device_t
*
dev
);
#endif
extern
int
DRM
(
setsareactx
)(
struct
inode
*
inode
,
struct
file
*
filp
,
unsigned
int
cmd
,
unsigned
long
arg
);
...
...
@@ -900,7 +907,6 @@ extern void DRM(irq_immediate_bh)( void *dev );
#endif
#if __REALLY_HAVE_AGP
/* AGP/GART support (drm_agpsupport.h) */
extern
drm_agp_head_t
*
DRM
(
agp_init
)(
void
);
extern
void
DRM
(
agp_uninit
)(
void
);
...
...
@@ -925,7 +931,6 @@ extern DRM_AGP_MEM *DRM(agp_allocate_memory)(size_t pages, u32 type);
extern
int
DRM
(
agp_free_memory
)(
DRM_AGP_MEM
*
handle
);
extern
int
DRM
(
agp_bind_memory
)(
DRM_AGP_MEM
*
handle
,
off_t
start
);
extern
int
DRM
(
agp_unbind_memory
)(
DRM_AGP_MEM
*
handle
);
#endif
/* Stub support (drm_stub.h) */
int
DRM
(
stub_register
)(
const
char
*
name
,
...
...
@@ -942,14 +947,12 @@ extern int DRM(proc_cleanup)(int minor,
struct
proc_dir_entry
*
root
,
struct
proc_dir_entry
*
dev_root
);
#ifdef __HAVE_SG
/* Scatter Gather Support (drm_scatter.h) */
extern
void
DRM
(
sg_cleanup
)(
drm_sg_mem_t
*
entry
);
extern
int
DRM
(
sg_alloc
)(
struct
inode
*
inode
,
struct
file
*
filp
,
unsigned
int
cmd
,
unsigned
long
arg
);
extern
int
DRM
(
sg_free
)(
struct
inode
*
inode
,
struct
file
*
filp
,
unsigned
int
cmd
,
unsigned
long
arg
);
#endif
/* ATI PCIGART support (ati_pcigart.h) */
extern
int
DRM
(
ati_pcigart_init
)(
drm_device_t
*
dev
,
...
...
drivers/char/drm/drm_agpsupport.h
View file @
8ae6a2d2
...
...
@@ -34,8 +34,7 @@
#include "drmP.h"
#include <linux/module.h>
#if __REALLY_HAVE_AGP
#if __OS_HAS_AGP
#define DRM_AGP_GET (drm_agp_t *)inter_module_get("drm_agp")
#define DRM_AGP_PUT inter_module_put("drm_agp")
...
...
@@ -466,4 +465,4 @@ int DRM(agp_unbind_memory)(DRM_AGP_MEM *handle)
return
drm_agp
->
unbind_memory
(
handle
);
}
#endif
/* __
REALLY_HAVE
_AGP */
#endif
/* __
OS_HAS
_AGP */
drivers/char/drm/drm_bufs.h
View file @
8ae6a2d2
...
...
@@ -36,14 +36,6 @@
#include <linux/vmalloc.h>
#include "drmP.h"
#ifndef __HAVE_PCI_DMA
#define __HAVE_PCI_DMA 0
#endif
#ifndef __HAVE_SG
#define __HAVE_SG 0
#endif
/**
* Compute size order. Returns the exponent of the smaller power of two which
* is greater or equal to given number.
...
...
@@ -130,13 +122,13 @@ int DRM(addmap)( struct inode *inode, struct file *filp,
#ifdef __alpha__
map
->
offset
+=
dev
->
hose
->
mem_space
->
start
;
#endif
#if __REALLY_HAVE_MTRR
if
(
map
->
type
==
_DRM_FRAME_BUFFER
||
(
map
->
flags
&
_DRM_WRITE_COMBINING
)
)
{
map
->
mtrr
=
mtrr_add
(
map
->
offset
,
map
->
size
,
MTRR_TYPE_WRCOMB
,
1
);
if
(
drm_core_has_MTRR
(
dev
))
{
if
(
map
->
type
==
_DRM_FRAME_BUFFER
||
(
map
->
flags
&
_DRM_WRITE_COMBINING
)
)
{
map
->
mtrr
=
mtrr_add
(
map
->
offset
,
map
->
size
,
MTRR_TYPE_WRCOMB
,
1
);
}
}
#endif
if
(
map
->
type
==
_DRM_REGISTERS
)
map
->
handle
=
DRM
(
ioremap
)(
map
->
offset
,
map
->
size
,
dev
);
...
...
@@ -162,15 +154,15 @@ int DRM(addmap)( struct inode *inode, struct file *filp,
dev
->
lock
.
hw_lock
=
map
->
handle
;
/* Pointer to lock */
}
break
;
#if __REALLY_HAVE_AGP
case
_DRM_AGP
:
if
(
drm_core_has_AGP
(
dev
))
{
#ifdef __alpha__
map
->
offset
+=
dev
->
hose
->
mem_space
->
start
;
map
->
offset
+=
dev
->
hose
->
mem_space
->
start
;
#endif
map
->
offset
+=
dev
->
agp
->
base
;
map
->
mtrr
=
dev
->
agp
->
agp_mtrr
;
/* for getmap */
map
->
offset
+=
dev
->
agp
->
base
;
map
->
mtrr
=
dev
->
agp
->
agp_mtrr
;
/* for getmap */
}
break
;
#endif
case
_DRM_SCATTER_GATHER
:
if
(
!
dev
->
sg
)
{
DRM
(
free
)(
map
,
sizeof
(
*
map
),
DRM_MEM_MAPS
);
...
...
@@ -270,15 +262,15 @@ int DRM(rmmap)(struct inode *inode, struct file *filp,
switch
(
map
->
type
)
{
case
_DRM_REGISTERS
:
case
_DRM_FRAME_BUFFER
:
#if __REALLY_HAVE_MTRR
if
(
map
->
mtrr
>=
0
)
{
int
retcode
;
retcode
=
mtrr_del
(
map
->
mtrr
,
map
->
offset
,
map
->
size
);
DRM_DEBUG
(
"mtrr_del = %d
\n
"
,
retcode
);
if
(
drm_core_has_MTRR
(
dev
))
{
if
(
map
->
mtrr
>=
0
)
{
int
retcode
;
retcode
=
mtrr_del
(
map
->
mtrr
,
map
->
offset
,
map
->
size
);
DRM_DEBUG
(
"mtrr_del = %d
\n
"
,
retcode
);
}
}
#endif
DRM
(
ioremapfree
)(
map
->
handle
,
map
->
size
,
dev
);
break
;
case
_DRM_SHM
:
...
...
@@ -340,7 +332,7 @@ static void DRM(cleanup_buf_error)(drm_buf_entry_t *entry)
}
}
#if __
REALLY_HAVE
_AGP
#if __
OS_HAS
_AGP
/**
* Add AGP buffers for DMA transfers (ioctl).
*
...
...
@@ -517,9 +509,8 @@ int DRM(addbufs_agp)( struct inode *inode, struct file *filp,
atomic_dec
(
&
dev
->
buf_alloc
);
return
0
;
}
#endif
/* __
REALLY_HAVE
_AGP */
#endif
/* __
OS_HAS
_AGP */
#if __HAVE_PCI_DMA
int
DRM
(
addbufs_pci
)(
struct
inode
*
inode
,
struct
file
*
filp
,
unsigned
int
cmd
,
unsigned
long
arg
)
{
...
...
@@ -544,6 +535,7 @@ int DRM(addbufs_pci)( struct inode *inode, struct file *filp,
drm_buf_t
**
temp_buflist
;
drm_buf_desc_t
__user
*
argp
=
(
void
__user
*
)
arg
;
if
(
!
drm_core_check_feature
(
dev
,
DRIVER_PCI_DMA
))
return
-
EINVAL
;
if
(
!
dma
)
return
-
EINVAL
;
if
(
copy_from_user
(
&
request
,
argp
,
sizeof
(
request
)
)
)
...
...
@@ -749,9 +741,7 @@ int DRM(addbufs_pci)( struct inode *inode, struct file *filp,
return
0
;
}
#endif
/* __HAVE_PCI_DMA */
#if __HAVE_SG
int
DRM
(
addbufs_sg
)(
struct
inode
*
inode
,
struct
file
*
filp
,
unsigned
int
cmd
,
unsigned
long
arg
)
{
...
...
@@ -774,6 +764,8 @@ int DRM(addbufs_sg)( struct inode *inode, struct file *filp,
int
i
;
drm_buf_t
**
temp_buflist
;
if
(
!
drm_core_check_feature
(
dev
,
DRIVER_SG
))
return
-
EINVAL
;
if
(
!
dma
)
return
-
EINVAL
;
if
(
copy_from_user
(
&
request
,
argp
,
sizeof
(
request
)
)
)
...
...
@@ -915,7 +907,6 @@ int DRM(addbufs_sg)( struct inode *inode, struct file *filp,
atomic_dec
(
&
dev
->
buf_alloc
);
return
0
;
}
#endif
/* __HAVE_SG */
/**
* Add buffers for DMA transfers (ioctl).
...
...
@@ -940,21 +931,15 @@ int DRM(addbufs)( struct inode *inode, struct file *filp,
sizeof
(
request
)
)
)
return
-
EFAULT
;
#if __
REALLY_HAVE
_AGP
#if __
OS_HAS
_AGP
if
(
request
.
flags
&
_DRM_AGP_BUFFER
)
return
DRM
(
addbufs_agp
)(
inode
,
filp
,
cmd
,
arg
);
else
#endif
#if __HAVE_SG
if
(
request
.
flags
&
_DRM_SG_BUFFER
)
return
DRM
(
addbufs_sg
)(
inode
,
filp
,
cmd
,
arg
);
else
#endif
#if __HAVE_PCI_DMA
return
DRM
(
addbufs_pci
)(
inode
,
filp
,
cmd
,
arg
);
#else
return
-
EINVAL
;
#endif
}
...
...
@@ -1185,8 +1170,8 @@ int DRM(mapbufs)( struct inode *inode, struct file *filp,
return
-
EFAULT
;
if
(
request
.
count
>=
dma
->
buf_count
)
{
if
(
(
__HAVE_AGP
&&
(
dma
->
flags
&
_DRM_DMA_USE_AGP
))
||
(
__HAVE_SG
&&
(
dma
->
flags
&
_DRM_DMA_USE_SG
))
)
{
if
(
(
drm_core_has_AGP
(
dev
)
&&
(
dma
->
flags
&
_DRM_DMA_USE_AGP
))
||
(
drm_core_check_feature
(
dev
,
DRIVER_SG
)
&&
(
dma
->
flags
&
_DRM_DMA_USE_SG
))
)
{
drm_map_t
*
map
=
dev
->
agp_buffer_map
;
if
(
!
map
)
{
...
...
drivers/char/drm/drm_context.h
View file @
8ae6a2d2
...
...
@@ -42,11 +42,6 @@
#include "drmP.h"
#if !__HAVE_CTX_BITMAP
#error "__HAVE_CTX_BITMAP must be defined"
#endif
/******************************************************************/
/** \name Context bitmap support */
/*@{*/
...
...
@@ -580,3 +575,4 @@ int DRM(rmctx)( struct inode *inode, struct file *filp,
}
/*@}*/
drivers/char/drm/drm_drv.h
View file @
8ae6a2d2
...
...
@@ -52,12 +52,7 @@
* OTHER DEALINGS IN THE SOFTWARE.
*/
#ifndef __MUST_HAVE_AGP
#define __MUST_HAVE_AGP 0
#endif
#ifndef __HAVE_CTX_BITMAP
#define __HAVE_CTX_BITMAP 0
#endif
#ifndef __HAVE_IRQ
#define __HAVE_IRQ 0
#endif
...
...
@@ -70,9 +65,6 @@
#ifndef __HAVE_COUNTERS
#define __HAVE_COUNTERS 0
#endif
#ifndef __HAVE_SG
#define __HAVE_SG 0
#endif
#ifndef DRIVER_IOCTLS
#define DRIVER_IOCTLS
...
...
@@ -133,10 +125,8 @@ drm_ioctl_desc_t DRM(ioctls)[] = {
[
DRM_IOCTL_NR
(
DRM_IOCTL_ADD_MAP
)]
=
{
DRM
(
addmap
),
1
,
1
},
[
DRM_IOCTL_NR
(
DRM_IOCTL_RM_MAP
)]
=
{
DRM
(
rmmap
),
1
,
0
},
#if __HAVE_CTX_BITMAP
[
DRM_IOCTL_NR
(
DRM_IOCTL_SET_SAREA_CTX
)]
=
{
DRM
(
setsareactx
),
1
,
1
},
[
DRM_IOCTL_NR
(
DRM_IOCTL_GET_SAREA_CTX
)]
=
{
DRM
(
getsareactx
),
1
,
0
},
#endif
[
DRM_IOCTL_NR
(
DRM_IOCTL_ADD_CTX
)]
=
{
DRM
(
addctx
),
1
,
1
},
[
DRM_IOCTL_NR
(
DRM_IOCTL_RM_CTX
)]
=
{
DRM
(
rmctx
),
1
,
1
},
...
...
@@ -166,7 +156,7 @@ drm_ioctl_desc_t DRM(ioctls)[] = {
[
DRM_IOCTL_NR
(
DRM_IOCTL_CONTROL
)]
=
{
DRM
(
control
),
1
,
1
},
#endif
#if __
REALLY_HAVE
_AGP
#if __
OS_HAS
_AGP
[
DRM_IOCTL_NR
(
DRM_IOCTL_AGP_ACQUIRE
)]
=
{
DRM
(
agp_acquire
),
1
,
1
},
[
DRM_IOCTL_NR
(
DRM_IOCTL_AGP_RELEASE
)]
=
{
DRM
(
agp_release
),
1
,
1
},
[
DRM_IOCTL_NR
(
DRM_IOCTL_AGP_ENABLE
)]
=
{
DRM
(
agp_enable
),
1
,
1
},
...
...
@@ -177,10 +167,8 @@ drm_ioctl_desc_t DRM(ioctls)[] = {
[
DRM_IOCTL_NR
(
DRM_IOCTL_AGP_UNBIND
)]
=
{
DRM
(
agp_unbind
),
1
,
1
},
#endif
#if __HAVE_SG
[
DRM_IOCTL_NR
(
DRM_IOCTL_SG_ALLOC
)]
=
{
DRM
(
sg_alloc
),
1
,
1
},
[
DRM_IOCTL_NR
(
DRM_IOCTL_SG_FREE
)]
=
{
DRM
(
sg_free
),
1
,
1
},
#endif
#ifdef __HAVE_VBL_IRQ
[
DRM_IOCTL_NR
(
DRM_IOCTL_WAIT_VBLANK
)]
=
{
DRM
(
wait_vblank
),
0
,
0
},
...
...
@@ -367,9 +355,8 @@ static int DRM(takedown)( drm_device_t *dev )
dev
->
magiclist
[
i
].
head
=
dev
->
magiclist
[
i
].
tail
=
NULL
;
}
#if __REALLY_HAVE_AGP
/* Clear AGP information */
if
(
dev
->
agp
)
{
if
(
drm_core_has_AGP
(
dev
)
&&
dev
->
agp
)
{
drm_agp_mem_t
*
entry
;
drm_agp_mem_t
*
nexte
;
...
...
@@ -388,7 +375,6 @@ static int DRM(takedown)( drm_device_t *dev )
dev
->
agp
->
acquired
=
0
;
dev
->
agp
->
enabled
=
0
;
}
#endif
/* Clear vma list (only built for debugging) */
if
(
dev
->
vmalist
)
{
...
...
@@ -407,15 +393,15 @@ static int DRM(takedown)( drm_device_t *dev )
switch
(
map
->
type
)
{
case
_DRM_REGISTERS
:
case
_DRM_FRAME_BUFFER
:
#if __REALLY_HAVE_MTRR
if
(
map
->
mtrr
>=
0
)
{
int
retcode
;
retcode
=
mtrr_del
(
map
->
mtrr
,
map
->
offset
,
map
->
size
);
DRM_DEBUG
(
"mtrr_del=%d
\n
"
,
retcode
);
if
(
drm_core_has_MTRR
(
dev
))
{
if
(
map
->
mtrr
>=
0
)
{
int
retcode
;
retcode
=
mtrr_del
(
map
->
mtrr
,
map
->
offset
,
map
->
size
);
DRM_DEBUG
(
"mtrr_del=%d
\n
"
,
retcode
);
}
}
#endif
DRM
(
ioremapfree
)(
map
->
handle
,
map
->
size
,
dev
);
break
;
case
_DRM_SHM
:
...
...
@@ -428,15 +414,11 @@ static int DRM(takedown)( drm_device_t *dev )
*/
break
;
case
_DRM_SCATTER_GATHER
:
/* Handle it, but do nothing, if HAVE_SG
* isn't defined.
*/
#if __HAVE_SG
if
(
dev
->
sg
)
{
/* Handle it */
if
(
drm_core_check_feature
(
dev
,
DRIVER_SG
)
&&
dev
->
sg
)
{
DRM
(
sg_cleanup
)(
dev
->
sg
);
dev
->
sg
=
NULL
;
}
#endif
break
;
}
DRM
(
free
)(
map
,
sizeof
(
*
map
),
DRM_MEM_MAPS
);
...
...
@@ -488,9 +470,7 @@ static struct pci_device_id DRM(pciidlist)[] = {
static
int
DRM
(
probe
)(
struct
pci_dev
*
pdev
)
{
drm_device_t
*
dev
;
#if __HAVE_CTX_BITMAP
int
retcode
;
#endif
int
i
;
int
is_compat
=
0
;
...
...
@@ -540,34 +520,32 @@ static int DRM(probe)(struct pci_dev *pdev)
if
(
dev
->
fn_tbl
.
preinit
)
dev
->
fn_tbl
.
preinit
(
dev
);
#if __REALLY_HAVE_AGP
dev
->
agp
=
DRM
(
agp_init
)();
#if __MUST_HAVE_AGP
if
(
dev
->
agp
==
NULL
)
{
DRM_ERROR
(
"Cannot initialize the agpgart module.
\n
"
);
DRM
(
stub_unregister
)(
dev
->
minor
);
DRM
(
takedown
)(
dev
);
return
-
EINVAL
;
if
(
drm_core_has_AGP
(
dev
))
{
dev
->
agp
=
DRM
(
agp_init
)();
if
(
drm_core_check_feature
(
dev
,
DRIVER_REQUIRE_AGP
)
&&
(
dev
->
agp
==
NULL
))
{
DRM_ERROR
(
"Cannot initialize the agpgart module.
\n
"
);
DRM
(
stub_unregister
)(
dev
->
minor
);
DRM
(
takedown
)(
dev
);
return
-
EINVAL
;
}
if
(
drm_core_has_MTRR
(
dev
))
{
if
(
dev
->
agp
)
dev
->
agp
->
agp_mtrr
=
mtrr_add
(
dev
->
agp
->
agp_info
.
aper_base
,
dev
->
agp
->
agp_info
.
aper_size
*
1024
*
1024
,
MTRR_TYPE_WRCOMB
,
1
);
}
}
#endif
#if __REALLY_HAVE_MTRR
if
(
dev
->
agp
)
dev
->
agp
->
agp_mtrr
=
mtrr_add
(
dev
->
agp
->
agp_info
.
aper_base
,
dev
->
agp
->
agp_info
.
aper_size
*
1024
*
1024
,
MTRR_TYPE_WRCOMB
,
1
);
#endif
#endif
#if __HAVE_CTX_BITMAP
retcode
=
DRM
(
ctxbitmap_init
)(
dev
);
if
(
retcode
)
{
DRM_ERROR
(
"Cannot allocate memory for context bitmap.
\n
"
);
DRM
(
stub_unregister
)(
dev
->
minor
);
DRM
(
takedown
)(
dev
);
return
retcode
;
}
#endif
}
DRM
(
numdevs
)
++
;
/* no errors, mark it reserved */
DRM_INFO
(
"Initialized %s %d.%d.%d %s on minor %d: %s
\n
"
,
...
...
@@ -640,29 +618,26 @@ static void __exit drm_cleanup( void )
DRM_INFO
(
"Module unloaded
\n
"
);
}
}
#if __HAVE_CTX_BITMAP
DRM
(
ctxbitmap_cleanup
)(
dev
);
#endif
#if __REALLY_HAVE_AGP && __REALLY_HAVE_MTRR
if
(
dev
->
agp
&&
dev
->
agp
->
agp_mtrr
>=
0
)
{
if
(
drm_core_has_MTRR
(
dev
)
&&
drm_core_has_AGP
(
dev
)
&&
dev
->
agp
&&
dev
->
agp
->
agp_mtrr
>=
0
)
{
int
retval
;
retval
=
mtrr_del
(
dev
->
agp
->
agp_mtrr
,
dev
->
agp
->
agp_info
.
aper_base
,
dev
->
agp
->
agp_info
.
aper_size
*
1024
*
1024
);
DRM_DEBUG
(
"mtrr_del=%d
\n
"
,
retval
);
}
#endif
DRM
(
takedown
)(
dev
);
#if __REALLY_HAVE_AGP
if
(
dev
->
agp
)
{
if
(
drm_core_has_AGP
(
dev
)
&&
dev
->
agp
)
{
DRM
(
agp_uninit
)();
DRM
(
free
)(
dev
->
agp
,
sizeof
(
*
dev
->
agp
),
DRM_MEM_AGPLISTS
);
dev
->
agp
=
NULL
;
}
#endif
if
(
dev
->
fn_tbl
.
postcleanup
)
dev
->
fn_tbl
.
postcleanup
(
dev
);
...
...
@@ -860,9 +835,9 @@ int DRM(release)( struct inode *inode, struct file *filp )
pos
->
handle
!=
DRM_KERNEL_CONTEXT
)
{
if
(
dev
->
fn_tbl
.
context_dtor
)
dev
->
fn_tbl
.
context_dtor
(
dev
,
pos
->
handle
);
#if __HAVE_CTX_BITMAP
DRM
(
ctxbitmap_free
)(
dev
,
pos
->
handle
);
#endif
list_del
(
&
pos
->
head
);
DRM
(
free
)(
pos
,
sizeof
(
*
pos
),
DRM_MEM_CTXLIST
);
}
...
...
@@ -890,6 +865,9 @@ int DRM(release)( struct inode *inode, struct file *filp )
}
up
(
&
dev
->
struct_sem
);
if
(
dev
->
fn_tbl
.
free_filp_priv
)
dev
->
fn_tbl
.
free_filp_priv
(
dev
,
priv
);
DRM
(
free
)(
priv
,
sizeof
(
*
priv
),
DRM_MEM_FILES
);
/* ========================================================
...
...
drivers/char/drm/drm_fops.h
View file @
8ae6a2d2
...
...
@@ -53,6 +53,7 @@ int DRM(open_helper)(struct inode *inode, struct file *filp, drm_device_t *dev)
{
int
minor
=
iminor
(
inode
);
drm_file_t
*
priv
;
int
ret
;
if
(
filp
->
f_flags
&
O_EXCL
)
return
-
EBUSY
;
/* No exclusive opens */
if
(
!
DRM
(
cpu_valid
)())
return
-
EINVAL
;
...
...
@@ -72,8 +73,11 @@ int DRM(open_helper)(struct inode *inode, struct file *filp, drm_device_t *dev)
priv
->
authenticated
=
capable
(
CAP_SYS_ADMIN
);
priv
->
lock_count
=
0
;
if
(
dev
->
fn_tbl
.
open_helper
)
dev
->
fn_tbl
.
open_helper
(
dev
,
priv
);
if
(
dev
->
fn_tbl
.
open_helper
)
{
ret
=
dev
->
fn_tbl
.
open_helper
(
dev
,
priv
);
if
(
ret
<
0
)
goto
out_free
;
}
down
(
&
dev
->
struct_sem
);
if
(
!
dev
->
file_last
)
{
...
...
@@ -105,6 +109,10 @@ int DRM(open_helper)(struct inode *inode, struct file *filp, drm_device_t *dev)
#endif
return
0
;
out_free:
DRM
(
free
)(
priv
,
sizeof
(
*
priv
),
DRM_MEM_FILES
);
filp
->
private_data
=
NULL
;
return
ret
;
}
/** No-op. */
...
...
drivers/char/drm/drm_memory.h
View file @
8ae6a2d2
...
...
@@ -44,7 +44,7 @@
*/
#define DEBUG_MEMORY 0
#if __
REALLY_HAVE
_AGP
#if __
OS_HAS
_AGP
#include <linux/vmalloc.h>
...
...
@@ -130,46 +130,56 @@ drm_follow_page (void *vaddr)
return
pte_pfn
(
*
ptep
)
<<
PAGE_SHIFT
;
}
#endif
/* __REALLY_HAVE_AGP */
#else
/* __OS_HAS_AGP */
static
inline
drm_map_t
*
drm_lookup_map
(
unsigned
long
offset
,
unsigned
long
size
,
drm_device_t
*
dev
)
{
return
NULL
;
}
static
inline
void
*
agp_remap
(
unsigned
long
offset
,
unsigned
long
size
,
drm_device_t
*
dev
)
{
return
NULL
;
}
static
inline
unsigned
long
drm_follow_page
(
void
*
vaddr
)
{
return
0
;
}
#endif
static
inline
void
*
drm_ioremap
(
unsigned
long
offset
,
unsigned
long
size
,
drm_device_t
*
dev
)
{
#if __REALLY_HAVE_AGP
if
(
dev
->
agp
&&
dev
->
agp
->
cant_use_aperture
)
{
if
(
drm_core_has_AGP
(
dev
)
&&
dev
->
agp
&&
dev
->
agp
->
cant_use_aperture
)
{
drm_map_t
*
map
=
drm_lookup_map
(
offset
,
size
,
dev
);
if
(
map
&&
map
->
type
==
_DRM_AGP
)
return
agp_remap
(
offset
,
size
,
dev
);
}
#endif
return
ioremap
(
offset
,
size
);
}
static
inline
void
*
drm_ioremap_nocache
(
unsigned
long
offset
,
unsigned
long
size
,
drm_device_t
*
dev
)
{
#if __REALLY_HAVE_AGP
if
(
dev
->
agp
&&
dev
->
agp
->
cant_use_aperture
)
{
if
(
drm_core_has_AGP
(
dev
)
&&
dev
->
agp
&&
dev
->
agp
->
cant_use_aperture
)
{
drm_map_t
*
map
=
drm_lookup_map
(
offset
,
size
,
dev
);
if
(
map
&&
map
->
type
==
_DRM_AGP
)
return
agp_remap
(
offset
,
size
,
dev
);
}
#endif
return
ioremap_nocache
(
offset
,
size
);
}
static
inline
void
drm_ioremapfree
(
void
*
pt
,
unsigned
long
size
,
drm_device_t
*
dev
)
{
#if __REALLY_HAVE_AGP
/*
* This is a bit ugly. It would be much cleaner if the DRM API would use separate
* routines for handling mappings in the AGP space. Hopefully this can be done in
* a future revision of the interface...
*/
if
(
dev
->
agp
&&
dev
->
agp
->
cant_use_aperture
if
(
d
rm_core_has_AGP
(
dev
)
&&
d
ev
->
agp
&&
dev
->
agp
->
cant_use_aperture
&&
((
unsigned
long
)
pt
>=
VMALLOC_START
&&
(
unsigned
long
)
pt
<
VMALLOC_END
))
{
unsigned
long
offset
;
...
...
@@ -182,7 +192,6 @@ static inline void drm_ioremapfree(void *pt, unsigned long size, drm_device_t *d
return
;
}
}
#endif
iounmap
(
pt
);
}
...
...
@@ -332,7 +341,7 @@ void DRM(ioremapfree)(void *pt, unsigned long size, drm_device_t *dev)
drm_ioremapfree
(
pt
,
size
,
dev
);
}
#if __
REALLY_HAVE
_AGP
#if __
OS_HAS
_AGP
/** Wrapper around agp_allocate_memory() */
DRM_AGP_MEM
*
DRM
(
alloc_agp
)(
int
pages
,
u32
type
)
{
...
...
drivers/char/drm/drm_memory_debug.h
View file @
8ae6a2d2
...
...
@@ -352,7 +352,7 @@ void DRM(ioremapfree)(void *pt, unsigned long size, drm_device_t *dev)
}
}
#if __
REALLY_HAVE
_AGP
#if __
OS_HAS
_AGP
DRM_AGP_MEM
*
DRM
(
alloc_agp
)(
int
pages
,
u32
type
)
{
...
...
drivers/char/drm/drm_os_linux.h
View file @
8ae6a2d2
...
...
@@ -41,8 +41,34 @@
#define DRM_IRQ_ARGS int irq, void *arg, struct pt_regs *regs
/** AGP types */
#if __OS_HAS_AGP
#define DRM_AGP_MEM struct agp_memory
#define DRM_AGP_KERN struct agp_kern_info
#else
/* define some dummy types for non AGP supporting kernels */
struct
no_agp_kern
{
unsigned
long
aper_base
;
unsigned
long
aper_size
;
};
#define DRM_AGP_MEM int
#define DRM_AGP_KERN struct no_agp_kern
#endif
#if !(__OS_HAS_MTRR)
static
__inline__
int
mtrr_add
(
unsigned
long
base
,
unsigned
long
size
,
unsigned
int
type
,
char
increment
)
{
return
-
ENODEV
;
}
static
__inline__
int
mtrr_del
(
int
reg
,
unsigned
long
base
,
unsigned
long
size
)
{
return
-
ENODEV
;
}
#define MTRR_TYPE_WRCOMB 1
#endif
/** Task queue handler arguments */
#define DRM_TASKQUEUE_ARGS void *arg
...
...
drivers/char/drm/drm_scatter.h
View file @
8ae6a2d2
...
...
@@ -73,6 +73,9 @@ int DRM(sg_alloc)( struct inode *inode, struct file *filp,
DRM_DEBUG
(
"%s
\n
"
,
__FUNCTION__
);
if
(
drm_core_check_feature
(
dev
,
DRIVER_SG
))
return
-
EINVAL
;
if
(
dev
->
sg
)
return
-
EINVAL
;
...
...
@@ -206,6 +209,9 @@ int DRM(sg_free)( struct inode *inode, struct file *filp,
drm_scatter_gather_t
request
;
drm_sg_mem_t
*
entry
;
if
(
drm_core_check_feature
(
dev
,
DRIVER_SG
))
return
-
EINVAL
;
if
(
copy_from_user
(
&
request
,
(
drm_scatter_gather_t
__user
*
)
arg
,
sizeof
(
request
)
)
)
...
...
drivers/char/drm/drm_vm.h
View file @
8ae6a2d2
...
...
@@ -46,10 +46,10 @@
* Find the right map and if it's AGP memory find the real physical page to
* map, get the page, increment the use count and return it.
*/
#if __OS_HAS_AGP
static
__inline__
struct
page
*
DRM
(
do_vm_nopage
)(
struct
vm_area_struct
*
vma
,
unsigned
long
address
)
{
#if __REALLY_HAVE_AGP
drm_file_t
*
priv
=
vma
->
vm_file
->
private_data
;
drm_device_t
*
dev
=
priv
->
dev
;
drm_map_t
*
map
=
NULL
;
...
...
@@ -59,6 +59,8 @@ static __inline__ struct page *DRM(do_vm_nopage)(struct vm_area_struct *vma,
/*
* Find the right map
*/
if
(
!
drm_core_has_AGP
(
dev
))
goto
vm_nopage_error
;
if
(
!
dev
->
agp
||
!
dev
->
agp
->
cant_use_aperture
)
goto
vm_nopage_error
;
...
...
@@ -107,10 +109,15 @@ static __inline__ struct page *DRM(do_vm_nopage)(struct vm_area_struct *vma,
return
page
;
}
vm_nopage_error:
#endif
/* __REALLY_HAVE_AGP */
return
NOPAGE_SIGBUS
;
/* Disallow mremap */
}
#else
/* __OS_HAS_AGP */
static
__inline__
struct
page
*
DRM
(
do_vm_nopage
)(
struct
vm_area_struct
*
vma
,
unsigned
long
address
)
{
return
NOPAGE_SIGBUS
;
}
#endif
/* __OS_HAS_AGP */
/**
* \c nopage method for shared virtual memory.
...
...
@@ -201,15 +208,13 @@ void DRM(vm_shm_close)(struct vm_area_struct *vma)
switch
(
map
->
type
)
{
case
_DRM_REGISTERS
:
case
_DRM_FRAME_BUFFER
:
#if __REALLY_HAVE_MTRR
if
(
map
->
mtrr
>=
0
)
{
if
(
drm_core_has_MTRR
(
dev
)
&&
map
->
mtrr
>=
0
)
{
int
retcode
;
retcode
=
mtrr_del
(
map
->
mtrr
,
map
->
offset
,
map
->
size
);
DRM_DEBUG
(
"mtrr_del = %d
\n
"
,
retcode
);
}
#endif
DRM
(
ioremapfree
)(
map
->
handle
,
map
->
size
,
dev
);
break
;
case
_DRM_SHM
:
...
...
@@ -533,7 +538,7 @@ int DRM(mmap)(struct file *filp, struct vm_area_struct *vma)
* --BenH.
*/
if
(
!
VM_OFFSET
(
vma
)
#if __
REALLY_HAVE
_AGP
#if __
OS_HAS
_AGP
&&
(
!
dev
->
agp
||
dev
->
agp
->
agp_info
.
device
->
vendor
!=
PCI_VENDOR_ID_APPLE
)
#endif
)
...
...
@@ -577,8 +582,7 @@ int DRM(mmap)(struct file *filp, struct vm_area_struct *vma)
switch
(
map
->
type
)
{
case
_DRM_AGP
:
#if __REALLY_HAVE_AGP
if
(
dev
->
agp
->
cant_use_aperture
)
{
if
(
drm_core_has_AGP
(
dev
)
&&
dev
->
agp
->
cant_use_aperture
)
{
/*
* On some platforms we can't talk to bus dma address from the CPU, so for
* memory of type DRM_AGP, we'll deal with sorting out the real physical
...
...
@@ -590,7 +594,6 @@ int DRM(mmap)(struct file *filp, struct vm_area_struct *vma)
vma
->
vm_ops
=
&
DRM
(
vm_ops
);
break
;
}
#endif
/* fall through to _DRM_FRAME_BUFFER... */
case
_DRM_FRAME_BUFFER
:
case
_DRM_REGISTERS
:
...
...
drivers/char/drm/gamma.h
View file @
8ae6a2d2
...
...
@@ -36,8 +36,6 @@
/* General customization:
*/
#define __HAVE_MTRR 1
#define DRIVER_AUTHOR "VA Linux Systems Inc."
#define DRIVER_NAME "gamma"
...
...
@@ -72,10 +70,7 @@
/* DMA customization:
*/
#define __HAVE_DMA 1
#define __HAVE_AGP 1
#define __MUST_HAVE_AGP 0
#define __HAVE_OLD_DMA 1
#define __HAVE_PCI_DMA 1
#define __HAVE_MULTIPLE_DMA_QUEUES 1
#define __HAVE_DMA_WAITQUEUE 1
...
...
drivers/char/drm/gamma_dma.c
View file @
8ae6a2d2
...
...
@@ -934,6 +934,7 @@ static int gamma_driver_dma_quiescent(drm_device_t *dev)
void
gamma_driver_register_fns
(
drm_device_t
*
dev
)
{
dev
->
driver_features
=
DRIVER_USE_AGP
|
DRIVER_USE_MTRR
|
DRIVER_PCI_DMA
;
DRM
(
fops
).
read
=
gamma_fops_read
;
DRM
(
fops
).
poll
=
gamma_fops_poll
;
dev
->
fn_tbl
.
preinit
=
gamma_driver_preinit
;
...
...
drivers/char/drm/gamma_drv.c
View file @
8ae6a2d2
...
...
@@ -56,3 +56,4 @@
#include "drm_proc.h"
#include "drm_vm.h"
#include "drm_stub.h"
#include "drm_scatter.h"
drivers/char/drm/i810.h
View file @
8ae6a2d2
...
...
@@ -36,10 +36,6 @@
/* General customization:
*/
#define __HAVE_AGP 1
#define __MUST_HAVE_AGP 1
#define __HAVE_MTRR 1
#define __HAVE_CTX_BITMAP 1
#define DRIVER_AUTHOR "VA Linux Systems Inc."
...
...
drivers/char/drm/i810_dma.c
View file @
8ae6a2d2
...
...
@@ -1407,6 +1407,7 @@ static int i810_driver_dma_quiescent(drm_device_t *dev)
void
i810_driver_register_fns
(
drm_device_t
*
dev
)
{
dev
->
driver_features
=
DRIVER_USE_AGP
|
DRIVER_REQUIRE_AGP
|
DRIVER_USE_MTRR
;
dev
->
dev_priv_size
=
sizeof
(
drm_i810_buf_priv_t
);
dev
->
fn_tbl
.
pretakedown
=
i810_driver_pretakedown
;
dev
->
fn_tbl
.
release
=
i810_driver_release
;
...
...
drivers/char/drm/i810_drv.c
View file @
8ae6a2d2
...
...
@@ -53,3 +53,4 @@
#include "drm_proc.h"
#include "drm_vm.h"
#include "drm_stub.h"
#include "drm_scatter.h"
drivers/char/drm/i830.h
View file @
8ae6a2d2
...
...
@@ -36,10 +36,6 @@
/* General customization:
*/
#define __HAVE_AGP 1
#define __MUST_HAVE_AGP 1
#define __HAVE_MTRR 1
#define __HAVE_CTX_BITMAP 1
#define DRIVER_AUTHOR "VA Linux Systems Inc."
...
...
drivers/char/drm/i830_dma.c
View file @
8ae6a2d2
...
...
@@ -1602,6 +1602,7 @@ static int i830_driver_dma_quiescent(drm_device_t *dev)
void
i830_driver_register_fns
(
drm_device_t
*
dev
)
{
dev
->
driver_features
=
DRIVER_USE_AGP
|
DRIVER_REQUIRE_AGP
|
DRIVER_USE_MTRR
;
dev
->
dev_priv_size
=
sizeof
(
drm_i830_buf_priv_t
);
dev
->
fn_tbl
.
pretakedown
=
i830_driver_pretakedown
;
dev
->
fn_tbl
.
release
=
i830_driver_release
;
...
...
drivers/char/drm/i830_drv.c
View file @
8ae6a2d2
...
...
@@ -56,3 +56,4 @@
#include "drm_proc.h"
#include "drm_vm.h"
#include "drm_stub.h"
#include "drm_scatter.h"
drivers/char/drm/i915.h
View file @
8ae6a2d2
...
...
@@ -16,10 +16,6 @@
/* General customization:
*/
#define __HAVE_AGP 1
#define __MUST_HAVE_AGP 1
#define __HAVE_MTRR 1
#define __HAVE_CTX_BITMAP 1
#define DRIVER_AUTHOR "Tungsten Graphics, Inc."
...
...
drivers/char/drm/i915_dma.c
View file @
8ae6a2d2
...
...
@@ -732,6 +732,7 @@ static void i915_driver_prerelease(drm_device_t *dev, DRMFILE filp)
void
i915_driver_register_fns
(
drm_device_t
*
dev
)
{
dev
->
driver_features
=
DRIVER_USE_AGP
|
DRIVER_REQUIRE_AGP
|
DRIVER_USE_MTRR
;
dev
->
fn_tbl
.
pretakedown
=
i915_driver_pretakedown
;
dev
->
fn_tbl
.
prerelease
=
i915_driver_prerelease
;
}
drivers/char/drm/i915_drv.c
View file @
8ae6a2d2
...
...
@@ -29,3 +29,4 @@
#include "drm_proc.h"
#include "drm_vm.h"
#include "drm_stub.h"
#include "drm_scatter.h"
drivers/char/drm/mga.h
View file @
8ae6a2d2
...
...
@@ -36,10 +36,6 @@
/* General customization:
*/
#define __HAVE_AGP 1
#define __MUST_HAVE_AGP 1
#define __HAVE_MTRR 1
#define __HAVE_CTX_BITMAP 1
#define DRIVER_AUTHOR "Gareth Hughes, VA Linux Systems Inc."
...
...
drivers/char/drm/mga_dma.c
View file @
8ae6a2d2
...
...
@@ -813,6 +813,7 @@ static int mga_driver_dma_quiescent(drm_device_t *dev)
void
mga_driver_register_fns
(
drm_device_t
*
dev
)
{
dev
->
driver_features
=
DRIVER_USE_AGP
|
DRIVER_REQUIRE_AGP
|
DRIVER_USE_MTRR
;
dev
->
fn_tbl
.
pretakedown
=
mga_driver_pretakedown
;
dev
->
fn_tbl
.
dma_quiescent
=
mga_driver_dma_quiescent
;
}
drivers/char/drm/mga_drv.c
View file @
8ae6a2d2
...
...
@@ -51,3 +51,4 @@
#include "drm_proc.h"
#include "drm_vm.h"
#include "drm_stub.h"
#include "drm_scatter.h"
drivers/char/drm/r128.h
View file @
8ae6a2d2
...
...
@@ -36,13 +36,6 @@
/* General customization:
*/
#define __HAVE_AGP 1
#define __MUST_HAVE_AGP 0
#define __HAVE_MTRR 1
#define __HAVE_CTX_BITMAP 1
#define __HAVE_SG 1
#define __HAVE_PCI_DMA 1
#define DRIVER_AUTHOR "Gareth Hughes, VA Linux Systems Inc."
#define DRIVER_NAME "r128"
...
...
drivers/char/drm/r128_cce.c
View file @
8ae6a2d2
...
...
@@ -322,7 +322,7 @@ static void r128_cce_init_ring_buffer( drm_device_t *dev,
/* The manual (p. 2) says this address is in "VM space". This
* means it's an offset from the start of AGP space.
*/
#if __
REALLY_HAVE
_AGP
#if __
OS_HAS
_AGP
if
(
!
dev_priv
->
is_pci
)
ring_start
=
dev_priv
->
cce_ring
->
offset
-
dev
->
agp
->
base
;
else
...
...
@@ -510,7 +510,7 @@ static int r128_do_init_cce( drm_device_t *dev, drm_r128_init_t *init )
(
drm_r128_sarea_t
*
)((
u8
*
)
dev_priv
->
sarea
->
handle
+
init
->
sarea_priv_offset
);
#if __
REALLY_HAVE
_AGP
#if __
OS_HAS
_AGP
if
(
!
dev_priv
->
is_pci
)
{
drm_core_ioremap
(
dev_priv
->
cce_ring
,
dev
);
drm_core_ioremap
(
dev_priv
->
ring_rptr
,
dev
);
...
...
@@ -533,7 +533,7 @@ static int r128_do_init_cce( drm_device_t *dev, drm_r128_init_t *init )
dev
->
agp_buffer_map
->
handle
=
(
void
*
)
dev
->
agp_buffer_map
->
offset
;
}
#if __
REALLY_HAVE
_AGP
#if __
OS_HAS
_AGP
if
(
!
dev_priv
->
is_pci
)
dev_priv
->
cce_buffers_offset
=
dev
->
agp
->
base
;
else
...
...
@@ -558,7 +558,7 @@ static int r128_do_init_cce( drm_device_t *dev, drm_r128_init_t *init )
R128_WRITE
(
R128_LAST_DISPATCH_REG
,
dev_priv
->
sarea_priv
->
last_dispatch
);
#if __
REALLY_HAVE
_AGP
#if __
OS_HAS
_AGP
if
(
dev_priv
->
is_pci
)
{
#endif
if
(
!
DRM
(
ati_pcigart_init
)(
dev
,
&
dev_priv
->
phys_pci_gart
,
...
...
@@ -569,7 +569,7 @@ static int r128_do_init_cce( drm_device_t *dev, drm_r128_init_t *init )
return
DRM_ERR
(
ENOMEM
);
}
R128_WRITE
(
R128_PCI_GART_PAGE
,
dev_priv
->
bus_pci_gart
);
#if __
REALLY_HAVE
_AGP
#if __
OS_HAS
_AGP
}
#endif
...
...
@@ -597,7 +597,7 @@ int r128_do_cleanup_cce( drm_device_t *dev )
if
(
dev
->
dev_private
)
{
drm_r128_private_t
*
dev_priv
=
dev
->
dev_private
;
#if __
REALLY_HAVE
_AGP
#if __
OS_HAS
_AGP
if
(
!
dev_priv
->
is_pci
)
{
if
(
dev_priv
->
cce_ring
!=
NULL
)
drm_core_ioremapfree
(
dev_priv
->
cce_ring
,
dev
);
...
...
drivers/char/drm/r128_state.c
View file @
8ae6a2d2
...
...
@@ -1712,6 +1712,7 @@ static void r128_driver_pretakedown(drm_device_t *dev)
void
r128_driver_register_fns
(
drm_device_t
*
dev
)
{
dev
->
driver_features
=
DRIVER_USE_AGP
|
DRIVER_USE_MTRR
|
DRIVER_PCI_DMA
|
DRIVER_SG
;
dev
->
dev_priv_size
=
sizeof
(
drm_r128_buf_priv_t
);
dev
->
fn_tbl
.
prerelease
=
r128_driver_prerelease
;
dev
->
fn_tbl
.
pretakedown
=
r128_driver_pretakedown
;
...
...
drivers/char/drm/radeon.h
View file @
8ae6a2d2
...
...
@@ -37,12 +37,6 @@
/* General customization:
*/
#define __HAVE_AGP 1
#define __MUST_HAVE_AGP 0
#define __HAVE_MTRR 1
#define __HAVE_CTX_BITMAP 1
#define __HAVE_SG 1
#define __HAVE_PCI_DMA 1
#define DRIVER_AUTHOR "Gareth Hughes, Keith Whitwell, others."
...
...
@@ -115,9 +109,6 @@
[DRM_IOCTL_NR(DRM_IOCTL_RADEON_IRQ_WAIT)] = { radeon_irq_wait, 1, 0 }, \
[DRM_IOCTL_NR(DRM_IOCTL_RADEON_SETPARAM)] = { radeon_cp_setparam, 1, 0 }, \
#define DRIVER_FILE_FIELDS \
int64_t radeon_fb_delta; \
/* DMA customization:
*/
#define __HAVE_DMA 1
...
...
drivers/char/drm/radeon_cp.c
View file @
8ae6a2d2
...
...
@@ -858,7 +858,7 @@ static void radeon_cp_init_ring_buffer( drm_device_t *dev,
(
(
dev_priv
->
gart_vm_start
-
1
)
&
0xffff0000
)
|
(
dev_priv
->
fb_location
>>
16
)
);
#if __
REALLY_HAVE
_AGP
#if __
OS_HAS
_AGP
if
(
!
dev_priv
->
is_pci
)
{
RADEON_WRITE
(
RADEON_MC_AGP_LOCATION
,
(((
dev_priv
->
gart_vm_start
-
1
+
...
...
@@ -885,7 +885,7 @@ static void radeon_cp_init_ring_buffer( drm_device_t *dev,
SET_RING_HEAD
(
dev_priv
,
cur_read_ptr
);
dev_priv
->
ring
.
tail
=
cur_read_ptr
;
#if __
REALLY_HAVE
_AGP
#if __
OS_HAS
_AGP
if
(
!
dev_priv
->
is_pci
)
{
RADEON_WRITE
(
RADEON_CP_RB_RPTR_ADDR
,
dev_priv
->
ring_rptr
->
offset
...
...
@@ -1161,7 +1161,7 @@ static int radeon_do_init_cp( drm_device_t *dev, drm_radeon_init_t *init )
(
drm_radeon_sarea_t
*
)((
u8
*
)
dev_priv
->
sarea
->
handle
+
init
->
sarea_priv_offset
);
#if __
REALLY_HAVE
_AGP
#if __
OS_HAS
_AGP
if
(
!
dev_priv
->
is_pci
)
{
drm_core_ioremap
(
dev_priv
->
cp_ring
,
dev
);
drm_core_ioremap
(
dev_priv
->
ring_rptr
,
dev
);
...
...
@@ -1211,7 +1211,7 @@ static int radeon_do_init_cp( drm_device_t *dev, drm_radeon_init_t *init )
dev_priv
->
gart_vm_start
=
dev_priv
->
fb_location
+
RADEON_READ
(
RADEON_CONFIG_APER_SIZE
);
#if __
REALLY_HAVE
_AGP
#if __
OS_HAS
_AGP
if
(
!
dev_priv
->
is_pci
)
dev_priv
->
gart_buffers_offset
=
(
dev
->
agp_buffer_map
->
offset
-
dev
->
agp
->
base
...
...
@@ -1240,7 +1240,7 @@ static int radeon_do_init_cp( drm_device_t *dev, drm_radeon_init_t *init )
dev_priv
->
ring
.
high_mark
=
RADEON_RING_HIGH_MARK
;
#if __
REALLY_HAVE
_AGP
#if __
OS_HAS
_AGP
if
(
!
dev_priv
->
is_pci
)
{
/* Turn off PCI GART */
radeon_set_pcigart
(
dev_priv
,
0
);
...
...
@@ -1286,7 +1286,7 @@ int radeon_do_cleanup_cp( drm_device_t *dev )
if
(
dev
->
dev_private
)
{
drm_radeon_private_t
*
dev_priv
=
dev
->
dev_private
;
#if __
REALLY_HAVE
_AGP
#if __
OS_HAS
_AGP
if
(
!
dev_priv
->
is_pci
)
{
if
(
dev_priv
->
cp_ring
!=
NULL
)
drm_core_ioremapfree
(
dev_priv
->
cp_ring
,
dev
);
...
...
@@ -1329,7 +1329,7 @@ static int radeon_do_resume_cp( drm_device_t *dev )
DRM_DEBUG
(
"Starting radeon_do_resume_cp()
\n
"
);
#if __
REALLY_HAVE
_AGP
#if __
OS_HAS
_AGP
if
(
!
dev_priv
->
is_pci
)
{
/* Turn off PCI GART */
radeon_set_pcigart
(
dev_priv
,
0
);
...
...
drivers/char/drm/radeon_drv.h
View file @
8ae6a2d2
...
...
@@ -60,6 +60,9 @@ typedef struct drm_radeon_depth_clear_t {
u32
se_cntl
;
}
drm_radeon_depth_clear_t
;
struct
drm_radeon_driver_file_fields
{
int64_t
radeon_fb_delta
;
};
struct
mem_block
{
struct
mem_block
*
next
;
...
...
drivers/char/drm/radeon_state.c
View file @
8ae6a2d2
...
...
@@ -43,12 +43,14 @@ static __inline__ int radeon_check_and_fixup_offset( drm_radeon_private_t *dev_p
drm_file_t
*
filp_priv
,
u32
*
offset
)
{
u32
off
=
*
offset
;
struct
drm_radeon_driver_file_fields
*
radeon_priv
;
if
(
off
>=
dev_priv
->
fb_location
&&
off
<
(
dev_priv
->
gart_vm_start
+
dev_priv
->
gart_size
)
)
return
0
;
off
+=
filp_priv
->
radeon_fb_delta
;
radeon_priv
=
filp_priv
->
driver_priv
;
off
+=
radeon_priv
->
radeon_fb_delta
;
DRM_DEBUG
(
"offset fixed up to 0x%x
\n
"
,
off
);
...
...
@@ -2525,6 +2527,7 @@ int radeon_cp_setparam( DRM_IOCTL_ARGS ) {
drm_radeon_private_t
*
dev_priv
=
dev
->
dev_private
;
drm_file_t
*
filp_priv
;
drm_radeon_setparam_t
sp
;
struct
drm_radeon_driver_file_fields
*
radeon_priv
;
if
(
!
dev_priv
)
{
DRM_ERROR
(
"%s called with no initialization
\n
"
,
__FUNCTION__
);
...
...
@@ -2538,7 +2541,8 @@ int radeon_cp_setparam( DRM_IOCTL_ARGS ) {
switch
(
sp
.
param
)
{
case
RADEON_SETPARAM_FB_LOCATION
:
filp_priv
->
radeon_fb_delta
=
dev_priv
->
fb_location
-
sp
.
value
;
radeon_priv
=
filp_priv
->
driver_priv
;
radeon_priv
->
radeon_fb_delta
=
dev_priv
->
fb_location
-
sp
.
value
;
break
;
default:
DRM_DEBUG
(
"Invalid parameter %d
\n
"
,
sp
.
param
);
...
...
@@ -2571,19 +2575,38 @@ static void radeon_driver_pretakedown(drm_device_t *dev)
radeon_do_release
(
dev
);
}
static
void
radeon_driver_open_helper
(
drm_device_t
*
dev
,
drm_file_t
*
filp_priv
)
static
int
radeon_driver_open_helper
(
drm_device_t
*
dev
,
drm_file_t
*
filp_priv
)
{
drm_radeon_private_t
*
dev_priv
=
dev
->
dev_private
;
struct
drm_radeon_driver_file_fields
*
radeon_priv
;
radeon_priv
=
(
struct
drm_radeon_driver_file_fields
*
)
DRM
(
alloc
)(
sizeof
(
*
radeon_priv
),
DRM_MEM_FILES
);
if
(
!
radeon_priv
)
return
-
ENOMEM
;
filp_priv
->
driver_priv
=
radeon_priv
;
if
(
dev_priv
)
filp
_priv
->
radeon_fb_delta
=
dev_priv
->
fb_location
;
radeon
_priv
->
radeon_fb_delta
=
dev_priv
->
fb_location
;
else
filp_priv
->
radeon_fb_delta
=
0
;
radeon_priv
->
radeon_fb_delta
=
0
;
return
0
;
}
static
void
radeon_driver_free_filp_priv
(
drm_device_t
*
dev
,
drm_file_t
*
filp_priv
)
{
struct
drm_radeon_driver_file_fields
*
radeon_priv
=
filp_priv
->
driver_priv
;
DRM
(
free
)(
radeon_priv
,
sizeof
(
*
radeon_priv
),
DRM_MEM_FILES
);
}
void
radeon_driver_register_fns
(
struct
drm_device
*
dev
)
{
dev
->
driver_features
=
DRIVER_USE_AGP
|
DRIVER_USE_MTRR
|
DRIVER_PCI_DMA
|
DRIVER_SG
;
dev
->
dev_priv_size
=
sizeof
(
drm_radeon_buf_priv_t
);
dev
->
fn_tbl
.
prerelease
=
radeon_driver_prerelease
;
dev
->
fn_tbl
.
pretakedown
=
radeon_driver_pretakedown
;
dev
->
fn_tbl
.
open_helper
=
radeon_driver_open_helper
;
dev
->
fn_tbl
.
free_filp_priv
=
radeon_driver_free_filp_priv
;
}
drivers/char/drm/sis.h
View file @
8ae6a2d2
...
...
@@ -41,10 +41,6 @@
/* General customization:
*/
#define __HAVE_AGP 1
#define __MUST_HAVE_AGP 0
#define __HAVE_MTRR 1
#define __HAVE_CTX_BITMAP 1
#define DRIVER_AUTHOR "SIS"
#define DRIVER_NAME "sis"
...
...
drivers/char/drm/sis_drv.c
View file @
8ae6a2d2
...
...
@@ -46,4 +46,5 @@
#include "drm_proc.h"
#include "drm_vm.h"
#include "drm_stub.h"
#include "drm_scatter.h"
drivers/char/drm/sis_mm.c
View file @
8ae6a2d2
...
...
@@ -407,6 +407,7 @@ int sis_final_context(struct drm_device *dev, int context)
void
DRM
(
driver_register_fns
)(
drm_device_t
*
dev
)
{
dev
->
driver_features
=
DRIVER_USE_AGP
|
DRIVER_USE_MTRR
;
dev
->
fn_tbl
.
context_ctor
=
sis_init_context
;
dev
->
fn_tbl
.
context_dtor
=
sis_final_context
;
}
drivers/char/drm/tdfx.h
View file @
8ae6a2d2
...
...
@@ -36,8 +36,6 @@
/* General customization:
*/
#define __HAVE_MTRR 1
#define __HAVE_CTX_BITMAP 1
#define DRIVER_AUTHOR "VA Linux Systems Inc."
...
...
drivers/char/drm/tdfx_drv.c
View file @
8ae6a2d2
...
...
@@ -34,6 +34,7 @@
#include "tdfx.h"
#include "drmP.h"
#include "drm_agpsupport.h"
#include "drm_auth.h"
#include "drm_bufs.h"
#include "drm_context.h"
...
...
@@ -49,8 +50,10 @@
#include "drm_proc.h"
#include "drm_vm.h"
#include "drm_stub.h"
#include "drm_scatter.h"
void
DRM
(
driver_register_fns
)(
drm_device_t
*
dev
)
{
dev
->
driver_features
=
DRIVER_USE_MTRR
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment