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
0b778621
Commit
0b778621
authored
Mar 29, 2004
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://linux-dj.bkbits.net/agpgart
into ppc970.osdl.org:/home/torvalds/v2.6/linux
parents
49838689
d9654a8c
Changes
16
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
947 additions
and
159 deletions
+947
-159
MAINTAINERS
MAINTAINERS
+1
-1
drivers/char/agp/Kconfig
drivers/char/agp/Kconfig
+11
-1
drivers/char/agp/Makefile
drivers/char/agp/Makefile
+1
-0
drivers/char/agp/agp.h
drivers/char/agp/agp.h
+29
-139
drivers/char/agp/ali-agp.c
drivers/char/agp/ali-agp.c
+8
-0
drivers/char/agp/amd-k7-agp.c
drivers/char/agp/amd-k7-agp.c
+9
-0
drivers/char/agp/amd64-agp.c
drivers/char/agp/amd64-agp.c
+9
-1
drivers/char/agp/ati-agp.c
drivers/char/agp/ati-agp.c
+12
-0
drivers/char/agp/generic.c
drivers/char/agp/generic.c
+83
-1
drivers/char/agp/i460-agp.c
drivers/char/agp/i460-agp.c
+7
-0
drivers/char/agp/intel-agp.c
drivers/char/agp/intel-agp.c
+36
-13
drivers/char/agp/intel-mch-agp.c
drivers/char/agp/intel-mch-agp.c
+631
-0
drivers/char/agp/nvidia-agp.c
drivers/char/agp/nvidia-agp.c
+11
-0
drivers/char/agp/sis-agp.c
drivers/char/agp/sis-agp.c
+66
-3
drivers/char/agp/sworks-agp.c
drivers/char/agp/sworks-agp.c
+24
-0
drivers/char/agp/via-agp.c
drivers/char/agp/via-agp.c
+9
-0
No files found.
MAINTAINERS
View file @
0b778621
...
...
@@ -201,7 +201,7 @@ S: Maintained
AGPGART DRIVER
P: Dave Jones
M: davej@codemonkey.org.uk
W: http://www.codemonkey.org.uk/agp/
W: http://www.codemonkey.org.uk/
projects/
agp/
S: Maintained
AHA152X SCSI DRIVER
...
...
drivers/char/agp/Kconfig
View file @
0b778621
...
...
@@ -77,7 +77,7 @@ config AGP_AMD64
config AGP_INTEL
tristate "Intel 440LX/BX/GX, I8xx and E7x05 chipset support"
depends on AGP && X86
depends on AGP && X86
&& !X86_64
help
This option gives you AGP support for the GLX component of XFree86 4.x
on Intel 440LX/BX/GX, 815, 820, 830, 840, 845, 850, 860, 875,
...
...
@@ -88,6 +88,16 @@ config AGP_INTEL
use GLX or DRI, or if you have any Intel integrated graphics
chipsets. If unsure, say Y.
config AGP_INTEL_MCH
tristate "Intel i865 chipset support"
depends on AGP && X86
help
This option gives you AGP support for the GLX component of XFree86 4.x
on Intel chipsets that support Intel EM64T processors.
You should say Y here if you use XFree86 3.3.6 or 4.x and want to
use GLX or DRI. If unsure, say Y.
config AGP_NVIDIA
tristate "NVIDIA nForce/nForce2 chipset support"
depends on AGP && X86 && !X86_64
...
...
drivers/char/agp/Makefile
View file @
0b778621
...
...
@@ -9,6 +9,7 @@ obj-$(CONFIG_AGP_ALPHA_CORE) += alpha-agp.o
obj-$(CONFIG_AGP_EFFICEON)
+=
efficeon-agp.o
obj-$(CONFIG_AGP_HP_ZX1)
+=
hp-agp.o
obj-$(CONFIG_AGP_I460)
+=
i460-agp.o
obj-$(CONFIG_AGP_INTEL_MCH)
+=
intel-mch-agp.o
obj-$(CONFIG_AGP_INTEL)
+=
intel-agp.o
obj-$(CONFIG_AGP_NVIDIA)
+=
nvidia-agp.o
obj-$(CONFIG_AGP_SIS)
+=
sis-agp.o
...
...
drivers/char/agp/agp.h
View file @
0b778621
/*
* AGPGART
* Copyright (C) 2002-200
3
Dave Jones
* Copyright (C) 2002-200
4
Dave Jones
* Copyright (C) 1999 Jeff Hartmann
* Copyright (C) 1999 Precision Insight, Inc.
* Copyright (C) 1999 Xi Graphics, Inc.
...
...
@@ -167,8 +167,6 @@ struct agp_bridge_data {
#define PGE_EMPTY(b, p) (!(p) || (p) == (unsigned long) (b)->scratch_page)
/* Chipset independant registers (from AGP Spec) */
#define AGP_APBASE 0x10
/* Intel registers */
#define INTEL_APSIZE 0xb4
...
...
@@ -177,14 +175,6 @@ struct agp_bridge_data {
#define INTEL_NBXCFG 0x50
#define INTEL_ERRSTS 0x91
/* Intel 460GX Registers */
#define INTEL_I460_BAPBASE 0x98
#define INTEL_I460_GXBCTL 0xa0
#define INTEL_I460_AGPSIZ 0xa2
#define INTEL_I460_ATTBASE 0xfe200000
#define INTEL_I460_GATT_VALID (1UL << 24)
#define INTEL_I460_GATT_COHERENT (1UL << 25)
/* Intel i830 registers */
#define I830_GMCH_CTRL 0x52
#define I830_GMCH_ENABLED 0x4
...
...
@@ -219,26 +209,10 @@ struct agp_bridge_data {
#define I852_GME 0x2
#define I852_GM 0x5
/* Intel 815 register */
#define INTEL_815_APCONT 0x51
#define INTEL_815_ATTBASE_MASK ~0x1FFFFFFF
/* Intel i820 registers */
#define INTEL_I820_RDCR 0x51
#define INTEL_I820_ERRSTS 0xc8
/* Intel i840 registers */
#define INTEL_I840_MCHCFG 0x50
#define INTEL_I840_ERRSTS 0xc8
/* Intel i845 registers */
#define INTEL_I845_AGPM 0x51
#define INTEL_I845_ERRSTS 0xc8
/* Intel i850 registers */
#define INTEL_I850_MCHCFG 0x50
#define INTEL_I850_ERRSTS 0xc8
/* Intel i860 registers */
#define INTEL_I860_MCHCFG 0x50
#define INTEL_I860_ERRSTS 0xc8
...
...
@@ -261,110 +235,6 @@ struct agp_bridge_data {
#define I810_DRAM_ROW_0 0x00000001
#define I810_DRAM_ROW_0_SDRAM 0x00000001
/* Intel 7505 registers */
#define INTEL_I7505_APSIZE 0x74
#define INTEL_I7505_NCAPID 0x60
#define INTEL_I7505_NISTAT 0x6c
#define INTEL_I7505_ATTBASE 0x78
#define INTEL_I7505_ERRSTS 0x42
#define INTEL_I7505_AGPCTRL 0x70
#define INTEL_I7505_MCHCFG 0x50
/* VIA register */
#define VIA_GARTCTRL 0x80
#define VIA_APSIZE 0x84
#define VIA_ATTBASE 0x88
/* VIA KT400 */
#define VIA_AGP3_GARTCTRL 0x90
#define VIA_AGP3_APSIZE 0x94
#define VIA_AGP3_ATTBASE 0x98
#define VIA_AGPSEL 0xfd
/* SiS registers */
#define SIS_ATTBASE 0x90
#define SIS_APSIZE 0x94
#define SIS_TLBCNTRL 0x97
#define SIS_TLBFLUSH 0x98
/* AMD registers */
#define AMD_MMBASE 0x14
#define AMD_APSIZE 0xac
#define AMD_MODECNTL 0xb0
#define AMD_MODECNTL2 0xb2
#define AMD_GARTENABLE 0x02
/* In mmio region (16-bit register) */
#define AMD_ATTBASE 0x04
/* In mmio region (32-bit register) */
#define AMD_TLBFLUSH 0x0c
/* In mmio region (32-bit register) */
#define AMD_CACHEENTRY 0x10
/* In mmio region (32-bit register) */
/* AMD64 registers */
#define AMD64_GARTAPERTURECTL 0x90
#define AMD64_GARTAPERTUREBASE 0x94
#define AMD64_GARTTABLEBASE 0x98
#define AMD64_GARTCACHECTL 0x9c
#define AMD64_GARTEN (1<<0)
/* ALi registers */
#define ALI_AGPCTRL 0xb8
#define ALI_ATTBASE 0xbc
#define ALI_TLBCTRL 0xc0
#define ALI_TAGCTRL 0xc4
#define ALI_CACHE_FLUSH_CTRL 0xD0
#define ALI_CACHE_FLUSH_ADDR_MASK 0xFFFFF000
#define ALI_CACHE_FLUSH_EN 0x100
/* ATI register */
#define ATI_GART_MMBASE_ADDR 0x14
#define ATI_RS100_APSIZE 0xac
#define ATI_RS300_APSIZE 0xf8
#define ATI_RS100_IG_AGPMODE 0xb0
#define ATI_RS300_IG_AGPMODE 0xfc
#define ATI_GART_FEATURE_ID 0x00
#define ATI_GART_BASE 0x04
#define ATI_GART_CACHE_SZBASE 0x08
#define ATI_GART_CACHE_CNTRL 0x0c
#define ATI_GART_CACHE_ENTRY_CNTRL 0x10
/* Serverworks Registers */
#define SVWRKS_APSIZE 0x10
#define SVWRKS_SIZE_MASK 0xfe000000
#define SVWRKS_MMBASE 0x14
#define SVWRKS_CACHING 0x4b
#define SVWRKS_FEATURE 0x68
/* func 1 registers */
#define SVWRKS_AGP_ENABLE 0x60
#define SVWRKS_COMMAND 0x04
/* Memory mapped registers */
#define SVWRKS_GART_CACHE 0x02
#define SVWRKS_GATTBASE 0x04
#define SVWRKS_TLBFLUSH 0x10
#define SVWRKS_POSTFLUSH 0x14
#define SVWRKS_DIRFLUSH 0x0c
/* HP ZX1 SBA registers */
#define HP_ZX1_CTRL 0x200
#define HP_ZX1_IBASE 0x300
#define HP_ZX1_IMASK 0x308
#define HP_ZX1_PCOM 0x310
#define HP_ZX1_TCNFG 0x318
#define HP_ZX1_PDIR_BASE 0x320
#define HP_ZX1_CACHE_FLUSH 0x428
/* NVIDIA registers */
#define NVIDIA_0_APSIZE 0x80
#define NVIDIA_1_WBC 0xf0
#define NVIDIA_2_GARTCTRL 0xd0
#define NVIDIA_2_APBASE 0xd8
#define NVIDIA_2_APLIMIT 0xdc
#define NVIDIA_2_ATTBASE(i) (0xe0 + (i) * 4)
#define NVIDIA_3_APBASE 0x50
#define NVIDIA_3_APLIMIT 0x54
struct
agp_device_ids
{
unsigned
short
device_id
;
/* first, to make table easier to read */
enum
chipset_type
chipset
;
...
...
@@ -402,21 +272,38 @@ void global_cache_flush(void);
void
get_agp_version
(
struct
agp_bridge_data
*
bridge
);
unsigned
long
agp_generic_mask_memory
(
unsigned
long
addr
,
int
type
);
/* generic routines for agp>=3 */
int
agp3_generic_fetch_size
(
void
);
void
agp3_generic_tlbflush
(
struct
agp_memory
*
mem
);
int
agp3_generic_configure
(
void
);
void
agp3_generic_cleanup
(
void
);
/* aperture sizes have been standardised since v3 */
#define AGP_GENERIC_SIZES_ENTRIES 11
extern
struct
aper_size_info_16
agp3_generic_sizes
[];
extern
int
agp_off
;
extern
int
agp_try_unsupported_boot
;
/* Standard agp registers */
/* Chipset independant registers (from AGP Spec) */
#define AGP_APBASE 0x10
#define AGPSTAT 0x4
#define AGPCMD 0x8
#define AGPNISTAT 0xc
#define AGPCTRL 0x10
#define AGPAPSIZE 0x14
#define AGPNEPG 0x16
#define AGPGARTLO 0x18
#define AGPGARTHI 0x1c
#define AGPNICMD 0x20
#define AGP_MAJOR_VERSION_SHIFT (20)
#define AGP_MINOR_VERSION_SHIFT (16)
#define AGPSTAT_RQ_DEPTH (0xff000000)
#define AGPSTAT_RQ_DEPTH_SHIFT 24
#define AGPSTAT_CAL_MASK (1<<12|1<<11|1<<10)
#define AGPSTAT_ARQSZ (1<<15|1<<14|1<<13)
...
...
@@ -435,4 +322,7 @@ extern int agp_try_unsupported_boot;
#define AGPSTAT3_8X (1<<1)
#define AGPSTAT3_4X (1)
#define AGPCTRL_APERENB (1<<8)
#define AGPCTRL_GTLBEN (1<<7)
#endif
/* _AGP_BACKEND_PRIV_H */
drivers/char/agp/ali-agp.c
View file @
0b778621
...
...
@@ -9,6 +9,14 @@
#include <linux/agp_backend.h>
#include "agp.h"
#define ALI_AGPCTRL 0xb8
#define ALI_ATTBASE 0xbc
#define ALI_TLBCTRL 0xc0
#define ALI_TAGCTRL 0xc4
#define ALI_CACHE_FLUSH_CTRL 0xD0
#define ALI_CACHE_FLUSH_ADDR_MASK 0xFFFFF000
#define ALI_CACHE_FLUSH_EN 0x100
static
int
ali_fetch_size
(
void
)
{
int
i
;
...
...
drivers/char/agp/amd-k7-agp.c
View file @
0b778621
...
...
@@ -11,6 +11,15 @@
#include <linux/mm.h>
#include "agp.h"
#define AMD_MMBASE 0x14
#define AMD_APSIZE 0xac
#define AMD_MODECNTL 0xb0
#define AMD_MODECNTL2 0xb2
#define AMD_GARTENABLE 0x02
/* In mmio region (16-bit register) */
#define AMD_ATTBASE 0x04
/* In mmio region (32-bit register) */
#define AMD_TLBFLUSH 0x0c
/* In mmio region (32-bit register) */
#define AMD_CACHEENTRY 0x10
/* In mmio region (32-bit register) */
struct
amd_page_map
{
unsigned
long
*
real
;
unsigned
long
*
remapped
;
...
...
drivers/char/agp/amd64-agp.c
View file @
0b778621
...
...
@@ -31,6 +31,13 @@
#define INVGART (1<<0)
#define GARTPTEERR (1<<1)
/* K8 On-cpu GART registers */
#define AMD64_GARTAPERTURECTL 0x90
#define AMD64_GARTAPERTUREBASE 0x94
#define AMD64_GARTTABLEBASE 0x98
#define AMD64_GARTCACHECTL 0x9c
#define AMD64_GARTEN (1<<0)
/* NVIDIA K8 registers */
#define NVIDIA_X86_64_0_APBASE 0x10
#define NVIDIA_X86_64_1_APBASE1 0x50
...
...
@@ -382,6 +389,7 @@ static void __devinit amd8151_init(struct pci_dev *pdev, struct agp_bridge_data
case
0x11
:
revstring
=
"B0"
;
break
;
case
0x12
:
revstring
=
"B1"
;
break
;
case
0x13
:
revstring
=
"B2"
;
break
;
case
0x14
:
revstring
=
"B3"
;
break
;
default:
revstring
=
"??"
;
break
;
}
...
...
drivers/char/agp/ati-agp.c
View file @
0b778621
...
...
@@ -10,6 +10,18 @@
#include <asm/agp.h>
#include "agp.h"
#define ATI_GART_MMBASE_ADDR 0x14
#define ATI_RS100_APSIZE 0xac
#define ATI_RS100_IG_AGPMODE 0xb0
#define ATI_RS300_APSIZE 0xf8
#define ATI_RS300_IG_AGPMODE 0xfc
#define ATI_GART_FEATURE_ID 0x00
#define ATI_GART_BASE 0x04
#define ATI_GART_CACHE_SZBASE 0x08
#define ATI_GART_CACHE_CNTRL 0x0c
#define ATI_GART_CACHE_ENTRY_CNTRL 0x10
static
struct
aper_size_info_lvl2
ati_generic_sizes
[
7
]
=
{
{
2048
,
524288
,
0x0000000c
},
...
...
drivers/char/agp/generic.c
View file @
0b778621
...
...
@@ -956,3 +956,85 @@ unsigned long agp_generic_mask_memory(unsigned long addr, int type)
}
EXPORT_SYMBOL
(
agp_generic_mask_memory
);
/*
* These functions are implemented according to the AGPv3 spec,
* which covers implementation details that had previously been
* left open.
*/
int
agp3_generic_fetch_size
(
void
)
{
u16
temp_size
;
int
i
;
struct
aper_size_info_16
*
values
;
pci_read_config_word
(
agp_bridge
->
dev
,
agp_bridge
->
capndx
+
AGPAPSIZE
,
&
temp_size
);
values
=
A_SIZE_16
(
agp_bridge
->
driver
->
aperture_sizes
);
for
(
i
=
0
;
i
<
agp_bridge
->
driver
->
num_aperture_sizes
;
i
++
)
{
if
(
temp_size
==
values
[
i
].
size_value
)
{
agp_bridge
->
previous_size
=
agp_bridge
->
current_size
=
(
void
*
)
(
values
+
i
);
agp_bridge
->
aperture_size_idx
=
i
;
return
values
[
i
].
size
;
}
}
return
0
;
}
EXPORT_SYMBOL
(
agp3_generic_fetch_size
);
void
agp3_generic_tlbflush
(
struct
agp_memory
*
mem
)
{
u32
ctrl
;
pci_read_config_dword
(
agp_bridge
->
dev
,
agp_bridge
->
capndx
+
AGPCTRL
,
&
ctrl
);
pci_write_config_dword
(
agp_bridge
->
dev
,
agp_bridge
->
capndx
+
AGPCTRL
,
ctrl
&
~
AGPCTRL_GTLBEN
);
pci_write_config_dword
(
agp_bridge
->
dev
,
agp_bridge
->
capndx
+
AGPCTRL
,
ctrl
);
}
EXPORT_SYMBOL
(
agp3_generic_tlbflush
);
int
agp3_generic_configure
(
void
)
{
u32
temp
;
struct
aper_size_info_16
*
current_size
;
current_size
=
A_SIZE_16
(
agp_bridge
->
current_size
);
pci_read_config_dword
(
agp_bridge
->
dev
,
AGP_APBASE
,
&
temp
);
agp_bridge
->
gart_bus_addr
=
(
temp
&
PCI_BASE_ADDRESS_MEM_MASK
);
/* set aperture size */
pci_write_config_word
(
agp_bridge
->
dev
,
agp_bridge
->
capndx
+
AGPAPSIZE
,
current_size
->
size_value
);
/* set gart pointer */
pci_write_config_dword
(
agp_bridge
->
dev
,
agp_bridge
->
capndx
+
AGPGARTLO
,
agp_bridge
->
gatt_bus_addr
);
/* enable aperture and GTLB */
pci_read_config_dword
(
agp_bridge
->
dev
,
agp_bridge
->
capndx
+
AGPCTRL
,
&
temp
);
pci_write_config_dword
(
agp_bridge
->
dev
,
agp_bridge
->
capndx
+
AGPCTRL
,
temp
|
AGPCTRL_APERENB
|
AGPCTRL_GTLBEN
);
return
0
;
}
EXPORT_SYMBOL
(
agp3_generic_configure
);
void
agp3_generic_cleanup
(
void
)
{
u32
ctrl
;
pci_read_config_dword
(
agp_bridge
->
dev
,
agp_bridge
->
capndx
+
AGPCTRL
,
&
ctrl
);
pci_write_config_dword
(
agp_bridge
->
dev
,
agp_bridge
->
capndx
+
AGPCTRL
,
ctrl
&
~
AGPCTRL_APERENB
);
}
EXPORT_SYMBOL
(
agp3_generic_cleanup
);
struct
aper_size_info_16
agp3_generic_sizes
[
AGP_GENERIC_SIZES_ENTRIES
]
=
{
{
4096
,
1048576
,
10
,
0x000
},
{
2048
,
524288
,
9
,
0x800
},
{
1024
,
262144
,
8
,
0xc00
},
{
512
,
131072
,
7
,
0xe00
},
{
256
,
65536
,
6
,
0xf00
},
{
128
,
32768
,
5
,
0xf20
},
{
64
,
16384
,
4
,
0xf30
},
{
32
,
8192
,
3
,
0xf38
},
{
16
,
4096
,
2
,
0xf3c
},
{
8
,
2048
,
1
,
0xf3e
},
{
4
,
1024
,
0
,
0xf3f
}
};
EXPORT_SYMBOL
(
agp3_generic_sizes
);
drivers/char/agp/i460-agp.c
View file @
0b778621
...
...
@@ -14,6 +14,13 @@
#include "agp.h"
#define INTEL_I460_BAPBASE 0x98
#define INTEL_I460_GXBCTL 0xa0
#define INTEL_I460_AGPSIZ 0xa2
#define INTEL_I460_ATTBASE 0xfe200000
#define INTEL_I460_GATT_VALID (1UL << 24)
#define INTEL_I460_GATT_COHERENT (1UL << 25)
/*
* The i460 can operate with large (4MB) pages, but there is no sane way to support this
* within the current kernel/DRM environment, so we disable the relevant code for now.
...
...
drivers/char/agp/intel-agp.c
View file @
0b778621
...
...
@@ -13,6 +13,31 @@
#include <linux/agp_backend.h>
#include "agp.h"
/* Intel 815 register */
#define INTEL_815_APCONT 0x51
#define INTEL_815_ATTBASE_MASK ~0x1FFFFFFF
/* Intel i820 registers */
#define INTEL_I820_RDCR 0x51
#define INTEL_I820_ERRSTS 0xc8
/* Intel i840 registers */
#define INTEL_I840_MCHCFG 0x50
#define INTEL_I840_ERRSTS 0xc8
/* Intel i850 registers */
#define INTEL_I850_MCHCFG 0x50
#define INTEL_I850_ERRSTS 0xc8
/* Intel 7505 registers */
#define INTEL_I7505_APSIZE 0x74
#define INTEL_I7505_NCAPID 0x60
#define INTEL_I7505_NISTAT 0x6c
#define INTEL_I7505_ATTBASE 0x78
#define INTEL_I7505_ERRSTS 0x42
#define INTEL_I7505_AGPCTRL 0x70
#define INTEL_I7505_MCHCFG 0x50
static
struct
aper_size_info_fixed
intel_i810_sizes
[]
=
{
{
64
,
16384
,
4
},
...
...
@@ -942,7 +967,7 @@ static struct aper_size_info_8 intel_830mp_sizes[4] =
{
32
,
8192
,
3
,
56
}
};
struct
agp_bridge_driver
intel_generic_driver
=
{
st
atic
st
ruct
agp_bridge_driver
intel_generic_driver
=
{
.
owner
=
THIS_MODULE
,
.
aperture_sizes
=
intel_generic_sizes
,
.
size_type
=
U16_APER_SIZE
,
...
...
@@ -965,7 +990,7 @@ struct agp_bridge_driver intel_generic_driver = {
.
agp_destroy_page
=
agp_generic_destroy_page
,
};
struct
agp_bridge_driver
intel_810_driver
=
{
st
atic
st
ruct
agp_bridge_driver
intel_810_driver
=
{
.
owner
=
THIS_MODULE
,
.
aperture_sizes
=
intel_i810_sizes
,
.
size_type
=
FIXED_APER_SIZE
,
...
...
@@ -989,8 +1014,7 @@ struct agp_bridge_driver intel_810_driver = {
.
agp_destroy_page
=
agp_generic_destroy_page
,
};
struct
agp_bridge_driver
intel_815_driver
=
{
static
struct
agp_bridge_driver
intel_815_driver
=
{
.
owner
=
THIS_MODULE
,
.
aperture_sizes
=
intel_815_sizes
,
.
size_type
=
U8_APER_SIZE
,
...
...
@@ -1013,7 +1037,7 @@ struct agp_bridge_driver intel_815_driver = {
.
agp_destroy_page
=
agp_generic_destroy_page
,
};
struct
agp_bridge_driver
intel_830_driver
=
{
st
atic
st
ruct
agp_bridge_driver
intel_830_driver
=
{
.
owner
=
THIS_MODULE
,
.
aperture_sizes
=
intel_i830_sizes
,
.
size_type
=
FIXED_APER_SIZE
,
...
...
@@ -1037,8 +1061,7 @@ struct agp_bridge_driver intel_830_driver = {
.
agp_destroy_page
=
agp_generic_destroy_page
,
};
struct
agp_bridge_driver
intel_820_driver
=
{
static
struct
agp_bridge_driver
intel_820_driver
=
{
.
owner
=
THIS_MODULE
,
.
aperture_sizes
=
intel_8xx_sizes
,
.
size_type
=
U8_APER_SIZE
,
...
...
@@ -1061,7 +1084,7 @@ struct agp_bridge_driver intel_820_driver = {
.
agp_destroy_page
=
agp_generic_destroy_page
,
};
struct
agp_bridge_driver
intel_830mp_driver
=
{
st
atic
st
ruct
agp_bridge_driver
intel_830mp_driver
=
{
.
owner
=
THIS_MODULE
,
.
aperture_sizes
=
intel_830mp_sizes
,
.
size_type
=
U8_APER_SIZE
,
...
...
@@ -1084,7 +1107,7 @@ struct agp_bridge_driver intel_830mp_driver = {
.
agp_destroy_page
=
agp_generic_destroy_page
,
};
struct
agp_bridge_driver
intel_840_driver
=
{
st
atic
st
ruct
agp_bridge_driver
intel_840_driver
=
{
.
owner
=
THIS_MODULE
,
.
aperture_sizes
=
intel_8xx_sizes
,
.
size_type
=
U8_APER_SIZE
,
...
...
@@ -1107,7 +1130,7 @@ struct agp_bridge_driver intel_840_driver = {
.
agp_destroy_page
=
agp_generic_destroy_page
,
};
struct
agp_bridge_driver
intel_845_driver
=
{
st
atic
st
ruct
agp_bridge_driver
intel_845_driver
=
{
.
owner
=
THIS_MODULE
,
.
aperture_sizes
=
intel_8xx_sizes
,
.
size_type
=
U8_APER_SIZE
,
...
...
@@ -1130,7 +1153,7 @@ struct agp_bridge_driver intel_845_driver = {
.
agp_destroy_page
=
agp_generic_destroy_page
,
};
struct
agp_bridge_driver
intel_850_driver
=
{
st
atic
st
ruct
agp_bridge_driver
intel_850_driver
=
{
.
owner
=
THIS_MODULE
,
.
aperture_sizes
=
intel_8xx_sizes
,
.
size_type
=
U8_APER_SIZE
,
...
...
@@ -1153,7 +1176,7 @@ struct agp_bridge_driver intel_850_driver = {
.
agp_destroy_page
=
agp_generic_destroy_page
,
};
struct
agp_bridge_driver
intel_860_driver
=
{
st
atic
st
ruct
agp_bridge_driver
intel_860_driver
=
{
.
owner
=
THIS_MODULE
,
.
aperture_sizes
=
intel_8xx_sizes
,
.
size_type
=
U8_APER_SIZE
,
...
...
@@ -1176,7 +1199,7 @@ struct agp_bridge_driver intel_860_driver = {
.
agp_destroy_page
=
agp_generic_destroy_page
,
};
struct
agp_bridge_driver
intel_7505_driver
=
{
st
atic
st
ruct
agp_bridge_driver
intel_7505_driver
=
{
.
owner
=
THIS_MODULE
,
.
aperture_sizes
=
intel_8xx_sizes
,
.
size_type
=
U8_APER_SIZE
,
...
...
drivers/char/agp/intel-mch-agp.c
0 → 100644
View file @
0b778621
This diff is collapsed.
Click to expand it.
drivers/char/agp/nvidia-agp.c
View file @
0b778621
...
...
@@ -13,6 +13,17 @@
#include <linux/mm.h>
#include "agp.h"
/* NVIDIA registers */
#define NVIDIA_0_APSIZE 0x80
#define NVIDIA_1_WBC 0xf0
#define NVIDIA_2_GARTCTRL 0xd0
#define NVIDIA_2_APBASE 0xd8
#define NVIDIA_2_APLIMIT 0xdc
#define NVIDIA_2_ATTBASE(i) (0xe0 + (i) * 4)
#define NVIDIA_3_APBASE 0x50
#define NVIDIA_3_APLIMIT 0x54
static
struct
_nvidia_private
{
struct
pci_dev
*
dev_1
;
struct
pci_dev
*
dev_2
;
...
...
drivers/char/agp/sis-agp.c
View file @
0b778621
...
...
@@ -8,6 +8,12 @@
#include <linux/agp_backend.h>
#include "agp.h"
#define SIS_ATTBASE 0x90
#define SIS_APSIZE 0x94
#define SIS_TLBCNTRL 0x97
#define SIS_TLBFLUSH 0x98
static
int
sis_fetch_size
(
void
)
{
u8
temp_size
;
...
...
@@ -61,6 +67,42 @@ static void sis_cleanup(void)
(
previous_size
->
size_value
&
~
(
0x03
)));
}
static
void
sis_648_enable
(
u32
mode
)
{
struct
pci_dev
*
device
=
NULL
;
u32
command
;
int
rate
;
printk
(
KERN_INFO
PFX
"Found an AGP %d.%d compliant device at %s.
\n
"
,
agp_bridge
->
major_version
,
agp_bridge
->
minor_version
,
agp_bridge
->
dev
->
slot_name
);
pci_read_config_dword
(
agp_bridge
->
dev
,
agp_bridge
->
capndx
+
PCI_AGP_STATUS
,
&
command
);
command
=
agp_collect_device_status
(
mode
,
command
);
command
|=
AGPSTAT_AGP_ENABLE
;
rate
=
(
command
&
0x7
)
<<
2
;
while
((
device
=
pci_find_device
(
PCI_ANY_ID
,
PCI_ANY_ID
,
device
))
!=
NULL
)
{
u8
agp
=
pci_find_capability
(
device
,
PCI_CAP_ID_AGP
);
if
(
!
agp
)
continue
;
printk
(
KERN_INFO
PFX
"Putting AGP V3 device at %s into %dx mode
\n
"
,
pci_name
(
device
),
rate
);
pci_write_config_dword
(
device
,
agp
+
PCI_AGP_COMMAND
,
command
);
if
(
device
->
device
==
PCI_DEVICE_ID_SI_648
)
{
// weird: on 648 and 648fx chipsets any rate change in the target command register
// triggers a 5ms screwup during which the master cannot be configured
printk
(
KERN_INFO
PFX
"sis 648 agp fix - giving bridge time to recover
\n
"
);
set_current_state
(
TASK_UNINTERRUPTIBLE
);
schedule_timeout
(
1
+
(
HZ
*
10
)
/
1000
);
}
}
}
static
struct
aper_size_info_8
sis_generic_sizes
[
7
]
=
{
{
256
,
65536
,
6
,
99
},
...
...
@@ -176,6 +218,26 @@ static struct agp_device_ids sis_agp_device_ids[] __devinitdata =
{
},
/* dummy final entry, always present */
};
static
void
__devinit
sis_get_driver
(
struct
agp_bridge_data
*
bridge
)
{
if
(
bridge
->
dev
->
device
==
PCI_DEVICE_ID_SI_648
)
{
if
(
agp_bridge
->
major_version
==
3
&&
agp_bridge
->
minor_version
<
5
)
{
sis_driver
.
agp_enable
=
sis_648_enable
;
}
else
{
sis_driver
.
agp_enable
=
sis_648_enable
;
sis_driver
.
aperture_sizes
=
agp3_generic_sizes
;
sis_driver
.
size_type
=
U16_APER_SIZE
;
sis_driver
.
num_aperture_sizes
=
AGP_GENERIC_SIZES_ENTRIES
;
sis_driver
.
configure
=
agp3_generic_configure
;
sis_driver
.
fetch_size
=
agp3_generic_fetch_size
;
sis_driver
.
cleanup
=
agp3_generic_cleanup
;
sis_driver
.
tlb_flush
=
agp3_generic_tlbflush
;
}
}
}
static
int
__devinit
agp_sis_probe
(
struct
pci_dev
*
pdev
,
const
struct
pci_device_id
*
ent
)
{
...
...
@@ -210,10 +272,11 @@ static int __devinit agp_sis_probe(struct pci_dev *pdev,
bridge
->
dev
=
pdev
;
bridge
->
capndx
=
cap_ptr
;
get_agp_version
(
bridge
);
/* Fill in the mode register */
pci_read_config_dword
(
pdev
,
bridge
->
capndx
+
PCI_AGP_STATUS
,
&
bridge
->
mode
);
pci_read_config_dword
(
pdev
,
bridge
->
capndx
+
PCI_AGP_STATUS
,
&
bridge
->
mode
);
sis_get_driver
(
bridge
);
pci_set_drvdata
(
pdev
,
bridge
);
return
agp_add_bridge
(
bridge
);
...
...
drivers/char/agp/sworks-agp.c
View file @
0b778621
...
...
@@ -8,6 +8,23 @@
#include <linux/agp_backend.h>
#include "agp.h"
#define SVWRKS_COMMAND 0x04
#define SVWRKS_APSIZE 0x10
#define SVWRKS_MMBASE 0x14
#define SVWRKS_CACHING 0x4b
#define SVWRKS_AGP_ENABLE 0x60
#define SVWRKS_FEATURE 0x68
#define SVWRKS_SIZE_MASK 0xfe000000
/* Memory mapped registers */
#define SVWRKS_GART_CACHE 0x02
#define SVWRKS_GATTBASE 0x04
#define SVWRKS_TLBFLUSH 0x10
#define SVWRKS_POSTFLUSH 0x14
#define SVWRKS_DIRFLUSH 0x0c
struct
serverworks_page_map
{
unsigned
long
*
real
;
unsigned
long
*
remapped
;
...
...
@@ -454,10 +471,17 @@ static int __devinit agp_serverworks_probe(struct pci_dev *pdev,
}
switch
(
pdev
->
device
)
{
case
0x0006
:
/* ServerWorks CNB20HE
Fail silently.*/
printk
(
KERN_ERR
PFX
"Detected ServerWorks CNB20HE chipset: No AGP present.
\n
"
);
return
-
ENODEV
;
case
PCI_DEVICE_ID_SERVERWORKS_HE
:
case
PCI_DEVICE_ID_SERVERWORKS_LE
:
case
0x0007
:
break
;
default:
printk
(
KERN_ERR
PFX
"Unsupported Serverworks chipset "
"(device id: %04x)
\n
"
,
pdev
->
device
);
...
...
drivers/char/agp/via-agp.c
View file @
0b778621
...
...
@@ -9,6 +9,15 @@
#include <linux/agp_backend.h>
#include "agp.h"
#define VIA_GARTCTRL 0x80
#define VIA_APSIZE 0x84
#define VIA_ATTBASE 0x88
#define VIA_AGP3_GARTCTRL 0x90
#define VIA_AGP3_APSIZE 0x94
#define VIA_AGP3_ATTBASE 0x98
#define VIA_AGPSEL 0xfd
static
int
via_fetch_size
(
void
)
{
int
i
;
...
...
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