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
61567a39
Commit
61567a39
authored
Dec 19, 2002
by
Dave Jones
Browse files
Options
Browse Files
Download
Plain Diff
Merge tetrachloride.(none):/mnt/stuff/kernel/2.5/bk-linus
into tetrachloride.(none):/mnt/stuff/kernel/2.5/agpgart
parents
75fb58ee
8c386ffd
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
269 additions
and
232 deletions
+269
-232
drivers/char/agp/agp.h
drivers/char/agp/agp.h
+4
-0
drivers/char/agp/ali-agp.c
drivers/char/agp/ali-agp.c
+12
-9
drivers/char/agp/amd-k7-agp.c
drivers/char/agp/amd-k7-agp.c
+12
-14
drivers/char/agp/amd-k8-agp.c
drivers/char/agp/amd-k8-agp.c
+13
-5
drivers/char/agp/backend.c
drivers/char/agp/backend.c
+1
-19
drivers/char/agp/generic-3.0.c
drivers/char/agp/generic-3.0.c
+3
-8
drivers/char/agp/hp-agp.c
drivers/char/agp/hp-agp.c
+9
-9
drivers/char/agp/i460-agp.c
drivers/char/agp/i460-agp.c
+20
-15
drivers/char/agp/i7x05-agp.c
drivers/char/agp/i7x05-agp.c
+18
-14
drivers/char/agp/intel-agp.c
drivers/char/agp/intel-agp.c
+65
-69
drivers/char/agp/sis-agp.c
drivers/char/agp/sis-agp.c
+13
-14
drivers/char/agp/sworks-agp.c
drivers/char/agp/sworks-agp.c
+18
-38
drivers/char/agp/via-agp.c
drivers/char/agp/via-agp.c
+81
-18
No files found.
drivers/char/agp/agp.h
View file @
61567a39
...
...
@@ -33,6 +33,7 @@ extern struct agp_bridge_data agp_bridge;
/* Generic routines. */
void
agp_generic_agp_enable
(
u32
mode
);
int
agp_generic_agp_3_0_enable
(
u32
mode
);
int
agp_generic_create_gatt_table
(
void
);
int
agp_generic_free_gatt_table
(
void
);
agp_memory
*
agp_create_memory
(
int
scratch_pages
);
...
...
@@ -290,6 +291,9 @@ struct agp_bridge_data {
#define VIA_APSIZE 0x84
#define VIA_ATTBASE 0x88
/* VIA KT400 */
#define VIA_AGPSEL 0xfd
/* SiS registers */
#define SIS_APBASE 0x10
#define SIS_ATTBASE 0x90
...
...
drivers/char/agp/ali-agp.c
View file @
61567a39
...
...
@@ -195,7 +195,7 @@ static struct aper_size_info_32 ali_generic_sizes[7] =
{
4
,
1024
,
0
,
3
}
};
int
__init
ali_generic_setup
(
struct
pci_dev
*
pdev
)
static
int
__init
ali_generic_setup
(
struct
pci_dev
*
pdev
)
{
agp_bridge
.
masks
=
ali_generic_masks
;
agp_bridge
.
num_of_masks
=
1
;
...
...
@@ -338,17 +338,20 @@ static int __init agp_lookup_host_bridge (struct pci_dev *pdev)
}
static
int
agp_ali_probe
(
struct
pci_dev
*
dev
,
const
struct
pci_device_id
*
ent
)
static
int
__init
agp_ali_probe
(
struct
pci_dev
*
dev
,
const
struct
pci_device_id
*
ent
)
{
if
(
pci_find_capability
(
dev
,
PCI_CAP_ID_AGP
)
==
0
)
return
-
ENODEV
;
u8
cap_ptr
=
0
;
agp_bridge
.
dev
=
dev
;
cap_ptr
=
pci_find_capability
(
dev
,
PCI_CAP_ID_AGP
);
if
(
cap_ptr
==
0
)
return
-
ENODEV
;
/* probe for known chipsets */
if
(
agp_lookup_host_bridge
(
dev
)
!=
-
ENODEV
)
{
if
(
agp_lookup_host_bridge
(
dev
)
!=
-
ENODEV
)
{
agp_bridge
.
dev
=
dev
;
agp_bridge
.
capndx
=
cap_ptr
;
/* Fill in the mode register */
pci_read_config_dword
(
agp_bridge
.
dev
,
agp_bridge
.
capndx
+
4
,
&
agp_bridge
.
mode
);
agp_register_driver
(
dev
);
return
0
;
}
...
...
@@ -369,7 +372,7 @@ static struct pci_device_id agp_ali_pci_table[] __initdata = {
MODULE_DEVICE_TABLE
(
pci
,
agp_ali_pci_table
);
static
struct
pci_driver
agp_ali_pci_driver
=
{
static
struct
__initdata
pci_driver
agp_ali_pci_driver
=
{
.
name
=
"agpgart-ali"
,
.
id_table
=
agp_ali_pci_table
,
.
probe
=
agp_ali_probe
,
...
...
drivers/char/agp/amd-k7-agp.c
View file @
61567a39
...
...
@@ -351,7 +351,7 @@ static struct gatt_mask amd_irongate_masks[] =
{.
mask
=
0x00000001
,
.
type
=
0
}
};
int
__init
amd_irongate_setup
(
struct
pci_dev
*
pdev
)
static
int
__init
amd_irongate_setup
(
struct
pci_dev
*
pdev
)
{
agp_bridge
.
masks
=
amd_irongate_masks
;
agp_bridge
.
num_of_masks
=
1
;
...
...
@@ -439,25 +439,23 @@ static int __init agp_lookup_host_bridge (struct pci_dev *pdev)
/* Supported Device Scanning routine */
static
int
__init
agp_
find_supported_device
(
struct
pci_dev
*
dev
)
static
int
__init
agp_
amdk7_probe
(
struct
pci_dev
*
dev
,
const
struct
pci_device_id
*
ent
)
{
agp_bridge
.
dev
=
dev
;
u8
cap_ptr
=
0
;
if
(
pci_find_capability
(
dev
,
PCI_CAP_ID_AGP
)
==
0
)
cap_ptr
=
pci_find_capability
(
dev
,
PCI_CAP_ID_AGP
);
if
(
cap_ptr
==
0
)
return
-
ENODEV
;
/* probe for known chipsets */
return
agp_lookup_host_bridge
(
dev
);
}
static
int
agp_amdk7_probe
(
struct
pci_dev
*
dev
,
const
struct
pci_device_id
*
ent
)
{
if
(
agp_find_supported_device
(
dev
)
==
0
)
{
if
(
agp_lookup_host_bridge
(
dev
)
!=
-
ENODEV
)
{
agp_bridge
.
dev
=
dev
;
agp_bridge
.
capndx
=
cap_ptr
;
/* Fill in the mode register */
pci_read_config_dword
(
agp_bridge
.
dev
,
agp_bridge
.
capndx
+
4
,
&
agp_bridge
.
mode
);
agp_register_driver
(
dev
);
return
0
;
}
return
-
ENODEV
;
return
-
ENODEV
;
}
static
struct
pci_device_id
agp_amdk7_pci_table
[]
__initdata
=
{
...
...
@@ -474,7 +472,7 @@ static struct pci_device_id agp_amdk7_pci_table[] __initdata = {
MODULE_DEVICE_TABLE
(
pci
,
agp_amdk7_pci_table
);
static
struct
pci_driver
agp_amdk7_pci_driver
=
{
static
struct
__initdata
pci_driver
agp_amdk7_pci_driver
=
{
.
name
=
"agpgart-amdk7"
,
.
id_table
=
agp_amdk7_pci_table
,
.
probe
=
agp_amdk7_probe
,
...
...
drivers/char/agp/amd-k8-agp.c
View file @
61567a39
...
...
@@ -370,7 +370,7 @@ static void agp_x86_64_agp_enable(u32 mode)
}
pci_read_config_dword
(
agp_bridge
.
dev
,
agp_bridge
.
capndx
+
4
,
&
command
);
pci_read_config_dword
(
agp_bridge
.
dev
,
agp_bridge
.
capndx
+
4
,
&
command
);
/*
* PASS2: go through all devices that claim to be
...
...
@@ -429,7 +429,7 @@ static void agp_x86_64_agp_enable(u32 mode)
command
|=
0x100
;
pci_write_config_dword
(
agp_bridge
.
dev
,
agp_bridge
.
capndx
+
8
,
command
);
pci_write_config_dword
(
agp_bridge
.
dev
,
agp_bridge
.
capndx
+
8
,
command
);
/*
* PASS4: Go through all AGP devices and update the
...
...
@@ -475,11 +475,19 @@ static int __init amd_8151_setup (struct pci_dev *pdev)
}
static
int
agp_amdk8_probe
(
struct
pci_dev
*
dev
,
const
struct
pci_device_id
*
ent
)
static
int
__init
agp_amdk8_probe
(
struct
pci_dev
*
dev
,
const
struct
pci_device_id
*
ent
)
{
if
(
pci_find_capability
(
dev
,
PCI_CAP_ID_AGP
)
==
0
)
u8
cap_ptr
=
0
;
cap_ptr
=
pci_find_capability
(
dev
,
PCI_CAP_ID_AGP
);
if
(
cap_ptr
==
0
)
return
-
ENODEV
;
agp_bridge
.
dev
=
dev
;
agp_bridge
.
capndx
=
cap_ptr
;
/* Fill in the mode register */
pci_read_config_dword
(
agp_bridge
.
dev
,
agp_bridge
.
capndx
+
4
,
&
agp_bridge
.
mode
);
amd_8151_setup
(
dev
);
agp_register_driver
(
dev
);
return
0
;
...
...
@@ -499,7 +507,7 @@ static struct pci_device_id agp_amdk8_pci_table[] __initdata = {
MODULE_DEVICE_TABLE
(
pci
,
agp_amdk8_pci_table
);
static
struct
pci_driver
agp_amdk8_pci_driver
=
{
static
struct
__initdata
pci_driver
agp_amdk8_pci_driver
=
{
.
name
=
"agpgart-amd-k8"
,
.
id_table
=
agp_amdk8_pci_table
,
.
probe
=
agp_amdk8_probe
,
...
...
drivers/char/agp/backend.c
View file @
61567a39
...
...
@@ -112,23 +112,13 @@ static struct agp_version agp_current_version =
.
minor
=
AGPGART_VERSION_MINOR
,
};
static
int
__init
agp_backend_initialize
(
struct
pci_dev
*
dev
)
static
int
agp_backend_initialize
(
struct
pci_dev
*
dev
)
{
int
size_value
,
rc
,
got_gatt
=
0
,
got_keylist
=
0
;
u8
cap_ptr
=
0
;
agp_bridge
.
max_memory_agp
=
agp_find_max
();
agp_bridge
.
version
=
&
agp_current_version
;
cap_ptr
=
pci_find_capability
(
dev
,
PCI_CAP_ID_AGP
);
if
(
cap_ptr
==
0
)
return
-
ENODEV
;
agp_bridge
.
capndx
=
cap_ptr
;
/* Fill in the mode register */
pci_read_config_dword
(
agp_bridge
.
dev
,
agp_bridge
.
capndx
+
4
,
&
agp_bridge
.
mode
);
if
(
agp_bridge
.
needs_scratch_page
==
TRUE
)
{
void
*
addr
;
addr
=
agp_bridge
.
agp_alloc_page
();
...
...
@@ -272,13 +262,6 @@ int agp_unregister_driver(void)
return
0
;
}
int
__exit
agp_exit
(
void
)
{
if
(
agp_count
==
0
)
return
-
EBUSY
;
return
0
;
}
int
__init
agp_init
(
void
)
{
...
...
@@ -299,7 +282,6 @@ int __init agp_init(void)
#ifndef CONFIG_GART_IOMMU
module_init
(
agp_init
);
module_exit
(
agp_exit
);
#endif
EXPORT_SYMBOL
(
agp_backend_acquire
);
...
...
drivers/char/agp/generic-3.0.c
View file @
61567a39
#include <linux/list.h>
#include <linux/pci.h>
//#include <linux/pagemap.h>
//#include <linux/miscdevice.h>
//#include <linux/pm.h>
#include <linux/agp_backend.h>
#include "agp.h"
...
...
@@ -529,7 +524,7 @@ static int agp_3_0_node_enable(u32 mode, u32 minor)
* (AGP 3.0 devices are required to operate as AGP 2.0 devices
* when not using 3.0 electricals.
*/
void
agp_generic_agp_3_0_enable
(
u32
mode
)
int
agp_generic_agp_3_0_enable
(
u32
mode
)
{
u32
ncapid
,
major
,
minor
,
agp_3_0
;
...
...
@@ -548,9 +543,9 @@ void agp_generic_agp_3_0_enable(u32 mode)
*/
if
((
agp_3_0
>>
3
)
&
0x1
)
{
agp_3_0_node_enable
(
mode
,
minor
);
return
;
return
TRUE
;
}
}
agp_generic_agp_enable
(
mode
)
;
return
FALSE
;
}
drivers/char/agp/hp-agp.c
View file @
61567a39
...
...
@@ -216,8 +216,7 @@ static void hp_zx1_tlbflush(agp_memory * mem)
{
struct
_hp_private
*
hp
=
&
hp_private
;
OUTREG64
(
hp
->
registers
,
HP_ZX1_PCOM
,
hp
->
gart_base
|
log2
(
hp
->
gart_size
));
OUTREG64
(
hp
->
registers
,
HP_ZX1_PCOM
,
hp
->
gart_base
|
log2
(
hp
->
gart_size
));
INREG64
(
hp
->
registers
,
HP_ZX1_PCOM
);
}
...
...
@@ -251,7 +250,7 @@ static int hp_zx1_create_gatt_table(void)
static
int
hp_zx1_free_gatt_table
(
void
)
{
struct
_hp_private
*
hp
=
&
hp_private
;
if
(
hp
->
io_pdir_owner
)
free_pages
((
unsigned
long
)
hp
->
io_pdir
,
get_order
(
hp
->
io_pdir_size
));
...
...
@@ -329,7 +328,7 @@ static unsigned long hp_zx1_mask_memory(unsigned long addr, int type)
return
HP_ZX1_PDIR_VALID_BIT
|
addr
;
}
int
__init
hp_zx1_setup
(
struct
pci_dev
*
pdev
__attribute__
((
unused
)))
static
int
__init
hp_zx1_setup
(
struct
pci_dev
*
pdev
__attribute__
((
unused
)))
{
agp_bridge
.
masks
=
hp_zx1_masks
;
agp_bridge
.
num_of_masks
=
1
;
...
...
@@ -368,21 +367,22 @@ static int __init agp_find_supported_device(struct pci_dev *dev)
return
hp_zx1_setup
(
dev
);
}
return
-
ENODEV
;
}
static
int
agp_hp_probe
(
struct
pci_dev
*
dev
,
const
struct
pci_device_id
*
ent
)
static
int
__init
agp_hp_probe
(
struct
pci_dev
*
dev
,
const
struct
pci_device_id
*
ent
)
{
if
(
agp_find_supported_device
(
dev
)
==
0
)
{
agp_register_driver
(
dev
);
return
0
;
}
return
-
ENODEV
;
return
-
ENODEV
;
}
static
struct
pci_device_id
agp_hp_pci_table
[]
__initdata
=
{
{
.
class
=
(
PCI_CLASS_BRIDGE_HOST
<<
8
),
.
class_mask
=
~
0
,
.
vendor
_id
=
PCI_VENDOR_ID_HP
,
.
vendor
=
PCI_VENDOR_ID_HP
,
.
device
=
PCI_DEVICE_ID_HP_ZX1_LBA
,
.
subvendor
=
PCI_ANY_ID
,
.
subdevice
=
PCI_ANY_ID
,
...
...
@@ -392,7 +392,7 @@ static struct pci_device_id agp_hp_pci_table[] __initdata = {
MODULE_DEVICE_TABLE
(
pci
,
agp_pci_table
);
static
struct
pci_driver
agp_hp_pci_driver
=
{
static
struct
__initdata
pci_driver
agp_hp_pci_driver
=
{
.
name
=
"agpgart-hp"
,
.
id_table
=
agp_hp_pci_table
,
.
probe
=
agp_hp_probe
,
...
...
@@ -412,7 +412,7 @@ static int __init agp_hp_init(void)
static
void
__exit
agp_hp_cleanup
(
void
)
{
agp_unregister_driver
();
pci_unregister_driver
(
&
agp_pci_driver
);
pci_unregister_driver
(
&
agp_
hp_
pci_driver
);
}
module_init
(
agp_hp_init
);
...
...
drivers/char/agp/i460-agp.c
View file @
61567a39
...
...
@@ -523,7 +523,7 @@ static unsigned long i460_mask_memory (unsigned long addr, int type)
|
(((
addr
&
~
((
1
<<
I460_IO_PAGE_SHIFT
)
-
1
))
&
0xffffff000
)
>>
12
));
}
int
__init
intel_i460_setup
(
struct
pci_dev
*
pdev
__attribute__
((
unused
)))
static
int
__init
intel_i460_setup
(
struct
pci_dev
*
pdev
__attribute__
((
unused
)))
{
agp_bridge
.
num_of_masks
=
1
;
agp_bridge
.
masks
=
i460_masks
;
...
...
@@ -560,55 +560,60 @@ int __init intel_i460_setup (struct pci_dev *pdev __attribute__((unused)))
return
0
;
}
static
int
agp_intel_i460_probe
(
struct
pci_dev
*
dev
,
const
struct
pci_device_id
*
ent
)
static
int
__init
agp_intel_i460_probe
(
struct
pci_dev
*
dev
,
const
struct
pci_device_id
*
ent
)
{
if
(
pci_find_capability
(
dev
,
PCI_CAP_ID_AGP
)
==
0
)
u8
cap_ptr
=
0
;
cap_ptr
=
pci_find_capability
(
dev
,
PCI_CAP_ID_AGP
);
if
(
cap_ptr
==
0
)
return
-
ENODEV
;
agp_bridge
.
dev
=
dev
;
agp_bridge
.
capndx
=
cap_ptr
;
intel_i460_setup
(
dev
);
agp_register_driver
(
dev
);
return
0
;
}
static
struct
pci_device_id
agp_i460_pci_table
[]
__initdata
=
{
static
struct
pci_device_id
agp_i
ntel_i
460_pci_table
[]
__initdata
=
{
{
.
class
=
(
PCI_CLASS_BRIDGE_HOST
<<
8
),
.
class_mask
=
~
0
,
.
vendor
=
PCI_VENDOR_ID_INTEL
,
.
device
=
PCI_DEVICE_ID_INTEL_460GX
,
.
device
=
PCI_DEVICE_ID_INTEL_
84
460GX
,
.
subvendor
=
PCI_ANY_ID
,
.
subdevice
=
PCI_ANY_ID
,
},
{
}
};
MODULE_DEVICE_TABLE
(
pci
,
agp_i460_pci_table
);
MODULE_DEVICE_TABLE
(
pci
,
agp_i
ntel_i
460_pci_table
);
static
struct
pci_driver
agp
_i460_pci_driver
=
{
static
struct
__initdata
pci_driver
agp_intel
_i460_pci_driver
=
{
.
name
=
"agpgart-intel-i460"
,
.
id_table
=
agp_i460_pci_table
,
.
probe
=
agp_i460_probe
,
.
id_table
=
agp_i
ntel_i
460_pci_table
,
.
probe
=
agp_i
ntel_i
460_probe
,
};
static
int
__init
agp_i460_init
(
void
)
static
int
__init
agp_i
ntel_i
460_init
(
void
)
{
int
ret_val
;
ret_val
=
pci_module_init
(
&
agp_i460_pci_driver
);
ret_val
=
pci_module_init
(
&
agp_i
ntel_i
460_pci_driver
);
if
(
ret_val
)
agp_bridge
.
type
=
NOT_SUPPORTED
;
return
ret_val
;
}
static
void
__exit
agp_i460_cleanup
(
void
)
static
void
__exit
agp_i
ntel_i
460_cleanup
(
void
)
{
agp_unregister_driver
();
pci_unregister_driver
(
&
agp_i460_pci_driver
);
pci_unregister_driver
(
&
agp_i
ntel_i
460_pci_driver
);
}
module_init
(
agp_i460_init
);
module_exit
(
agp_i460_cleanup
);
module_init
(
agp_i
ntel_i
460_init
);
module_exit
(
agp_i
ntel_i
460_cleanup
);
MODULE_AUTHOR
(
"Chris Ahna <Christopher.J.Ahna@intel.com>"
);
MODULE_LICENSE
(
"GPL and additional rights"
);
drivers/char/agp/i7x05-agp.c
View file @
61567a39
...
...
@@ -87,6 +87,11 @@ static aper_size_info_16 intel_7505_sizes[7] =
{
4
,
1024
,
0
,
0xf3f
}
};
static
void
i7505_setup
(
u32
mode
)
{
if
((
agp_generic_agp_3_0_enable
)
==
FALSE
)
agp_generic_agp_enable
(
mode
);
}
static
int
__init
intel_7505_setup
(
struct
pci_dev
*
pdev
)
{
...
...
@@ -102,7 +107,7 @@ static int __init intel_7505_setup (struct pci_dev *pdev)
agp_bridge
.
cleanup
=
intel_7505_cleanup
;
agp_bridge
.
tlb_flush
=
intel_7505_tlbflush
;
agp_bridge
.
mask_memory
=
intel_mask_memory
;
agp_bridge
.
agp_enable
=
agp_generic_agp_3_0
_enable
;
agp_bridge
.
agp_enable
=
i7505
_enable
;
agp_bridge
.
cache_flush
=
global_cache_flush
;
agp_bridge
.
create_gatt_table
=
agp_generic_create_gatt_table
;
agp_bridge
.
free_gatt_table
=
agp_generic_free_gatt_table
;
...
...
@@ -161,27 +166,26 @@ static int __init agp_lookup_host_bridge (struct pci_dev *pdev)
}
static
int
__init
agp_
find_supported_device
(
struct
pci_dev
*
dev
)
static
int
__init
agp_
i7x05_probe
(
struct
pci_dev
*
dev
,
const
struct
pci_device_id
*
ent
)
{
agp_bridge
.
dev
=
dev
;
u8
cap_ptr
=
0
;
if
(
pci_find_capability
(
dev
,
PCI_CAP_ID_AGP
)
==
0
)
cap_ptr
=
pci_find_capability
(
dev
,
PCI_CAP_ID_AGP
);
if
(
cap_ptr
==
0
)
return
-
ENODEV
;
/* probe for known chipsets */
return
agp_lookup_host_bridge
(
dev
);
}
static
int
agp_i7x05_probe
(
struct
pci_dev
*
dev
,
const
struct
pci_device_id
*
ent
)
{
if
(
agp_find_supported_device
(
dev
)
==
0
)
{
if
(
agp_lookup_host_bridge
(
dev
)
!=
-
ENODEV
)
{
agp_bridge
.
dev
=
dev
;
agp_bridge
.
capndx
=
cap_ptr
;
/* Fill in the mode register */
pci_read_config_dword
(
agp_bridge
.
dev
,
agp_bridge
.
capndx
+
4
,
&
agp_bridge
.
mode
)
agp_register_driver
(
dev
);
return
0
;
}
return
-
ENODEV
;
return
-
ENODEV
;
}
static
struct
pci_device_id
agp_i7x05_pci_table
[]
__initdata
=
{
{
.
class
=
(
PCI_CLASS_BRIDGE_HOST
<<
8
),
...
...
@@ -196,7 +200,7 @@ static struct pci_device_id agp_i7x05_pci_table[] __initdata = {
MODULE_DEVICE_TABLE
(
pci
,
agp_i7x05_pci_table
);
static
struct
pci_driver
agp_i7x05_pci_driver
=
{
static
struct
__initdata
pci_driver
agp_i7x05_pci_driver
=
{
.
name
=
"agpgart-i7x05"
,
.
id_table
=
agp_i7x05_pci_table
,
.
probe
=
agp_i7x05_probe
,
...
...
drivers/char/agp/intel-agp.c
View file @
61567a39
...
...
@@ -14,12 +14,12 @@ static int agp_try_unsupported __initdata = 0;
static
struct
aper_size_info_fixed
intel_i810_sizes
[]
=
{
{
64
,
16384
,
4
},
/* The 32M mode still requires a 64k gatt */
/* The 32M mode still requires a 64k gatt */
{
32
,
8192
,
4
}
};
#define AGP_DCACHE_MEMORY
1
#define AGP_PHYS_MEMORY
2
#define AGP_DCACHE_MEMORY
1
#define AGP_PHYS_MEMORY
2
static
struct
gatt_mask
intel_i810_masks
[]
=
{
...
...
@@ -48,12 +48,12 @@ static int intel_i810_fetch_size(void)
}
if
((
smram_miscc
&
I810_GFX_MEM_WIN_SIZE
)
==
I810_GFX_MEM_WIN_32M
)
{
agp_bridge
.
previous_size
=
agp_bridge
.
current_size
=
(
void
*
)
(
values
+
1
);
agp_bridge
.
current_size
=
(
void
*
)
(
values
+
1
);
agp_bridge
.
aperture_size_idx
=
1
;
return
values
[
1
].
size
;
}
else
{
agp_bridge
.
previous_size
=
agp_bridge
.
current_size
=
(
void
*
)
(
values
);
agp_bridge
.
current_size
=
(
void
*
)
(
values
);
agp_bridge
.
aperture_size_idx
=
0
;
return
values
[
0
].
size
;
}
...
...
@@ -72,11 +72,10 @@ static int intel_i810_configure(void)
pci_read_config_dword
(
intel_i810_private
.
i810_dev
,
I810_MMADDR
,
&
temp
);
temp
&=
0xfff80000
;
intel_i810_private
.
registers
=
(
volatile
u8
*
)
ioremap
(
temp
,
128
*
4096
);
intel_i810_private
.
registers
=
(
volatile
u8
*
)
ioremap
(
temp
,
128
*
4096
);
if
((
INREG32
(
intel_i810_private
.
registers
,
I810_DRAM_CTL
)
&
I810_DRAM_ROW_0
)
==
I810_DRAM_ROW_0_SDRAM
)
{
&
I810_DRAM_ROW_0
)
==
I810_DRAM_ROW_0_SDRAM
)
{
/* This will need to be dynamically assigned */
printk
(
KERN_INFO
PFX
"detected 4MB dedicated video ram.
\n
"
);
intel_i810_private
.
num_dcache_entries
=
1024
;
...
...
@@ -114,7 +113,7 @@ static void intel_i810_agp_enable(u32 mode)
}
static
int
intel_i810_insert_entries
(
agp_memory
*
mem
,
off_t
pg_start
,
int
type
)
int
type
)
{
int
i
,
j
,
num_entries
;
void
*
temp
;
...
...
@@ -132,12 +131,10 @@ static int intel_i810_insert_entries(agp_memory * mem, off_t pg_start,
}
if
(
type
!=
0
||
mem
->
type
!=
0
)
{
if
((
type
==
AGP_DCACHE_MEMORY
)
&&
(
mem
->
type
==
AGP_DCACHE_MEMORY
))
{
if
((
type
==
AGP_DCACHE_MEMORY
)
&&
(
mem
->
type
==
AGP_DCACHE_MEMORY
))
{
/* special insert */
CACHE_FLUSH
();
for
(
i
=
pg_start
;
i
<
(
pg_start
+
mem
->
page_count
);
i
++
)
{
for
(
i
=
pg_start
;
i
<
(
pg_start
+
mem
->
page_count
);
i
++
)
{
OUTREG32
(
intel_i810_private
.
registers
,
I810_PTE_BASE
+
(
i
*
4
),
(
i
*
4096
)
|
I810_PTE_LOCAL
|
...
...
@@ -147,15 +144,13 @@ static int intel_i810_insert_entries(agp_memory * mem, off_t pg_start,
agp_bridge
.
tlb_flush
(
mem
);
return
0
;
}
if
((
type
==
AGP_PHYS_MEMORY
)
&&
(
mem
->
type
==
AGP_PHYS_MEMORY
))
{
goto
insert
;
}
if
((
type
==
AGP_PHYS_MEMORY
)
&&
(
mem
->
type
==
AGP_PHYS_MEMORY
))
goto
insert
;
return
-
EINVAL
;
}
insert:
CACHE_FLUSH
();
CACHE_FLUSH
();
for
(
i
=
0
,
j
=
pg_start
;
i
<
mem
->
page_count
;
i
++
,
j
++
)
{
OUTREG32
(
intel_i810_private
.
registers
,
I810_PTE_BASE
+
(
j
*
4
),
mem
->
memory
[
i
]);
...
...
@@ -167,7 +162,7 @@ static int intel_i810_insert_entries(agp_memory * mem, off_t pg_start,
}
static
int
intel_i810_remove_entries
(
agp_memory
*
mem
,
off_t
pg_start
,
int
type
)
int
type
)
{
int
i
;
...
...
@@ -199,7 +194,7 @@ static agp_memory *intel_i810_alloc_by_type(size_t pg_count, int type)
new
->
page_count
=
pg_count
;
new
->
num_scratch_pages
=
0
;
vfree
(
new
->
memory
);
MOD_INC_USE_COUNT
;
MOD_INC_USE_COUNT
;
return
new
;
}
if
(
type
==
AGP_PHYS_MEMORY
)
{
...
...
@@ -209,15 +204,14 @@ static agp_memory *intel_i810_alloc_by_type(size_t pg_count, int type)
* Xserver still writes to it through the agp
* aperture
*/
if
(
pg_count
!=
1
)
{
return
NULL
;
}
new
=
agp_create_memory
(
1
);
if
(
pg_count
!=
1
)
return
NULL
;
if
(
new
==
NULL
)
{
new
=
agp_create_memory
(
1
);
if
(
new
==
NULL
)
return
NULL
;
}
MOD_INC_USE_COUNT
;
MOD_INC_USE_COUNT
;
addr
=
agp_bridge
.
agp_alloc_page
();
if
(
addr
==
NULL
)
{
...
...
@@ -227,25 +221,23 @@ static agp_memory *intel_i810_alloc_by_type(size_t pg_count, int type)
}
new
->
memory
[
0
]
=
agp_bridge
.
mask_memory
(
virt_to_phys
(
addr
),
type
);
new
->
page_count
=
1
;
new
->
num_scratch_pages
=
1
;
new
->
type
=
AGP_PHYS_MEMORY
;
new
->
physical
=
virt_to_phys
((
void
*
)
new
->
memory
[
0
]);
return
new
;
new
->
num_scratch_pages
=
1
;
new
->
type
=
AGP_PHYS_MEMORY
;
new
->
physical
=
virt_to_phys
((
void
*
)
new
->
memory
[
0
]);
return
new
;
}
return
NULL
;
}
static
void
intel_i810_free_by_type
(
agp_memory
*
curr
)
{
agp_free_key
(
curr
->
key
);
if
(
curr
->
type
==
AGP_PHYS_MEMORY
)
{
agp_bridge
.
agp_destroy_page
(
phys_to_virt
(
curr
->
memory
[
0
]));
if
(
curr
->
type
==
AGP_PHYS_MEMORY
)
{
agp_bridge
.
agp_destroy_page
(
phys_to_virt
(
curr
->
memory
[
0
]));
vfree
(
curr
->
memory
);
}
kfree
(
curr
);
MOD_DEC_USE_COUNT
;
MOD_DEC_USE_COUNT
;
}
static
unsigned
long
intel_i810_mask_memory
(
unsigned
long
addr
,
int
type
)
...
...
@@ -254,7 +246,7 @@ static unsigned long intel_i810_mask_memory(unsigned long addr, int type)
return
addr
|
agp_bridge
.
masks
[
type
].
mask
;
}
int
__init
intel_i810_setup
(
struct
pci_dev
*
i810_dev
)
static
int
__init
intel_i810_setup
(
struct
pci_dev
*
i810_dev
)
{
intel_i810_private
.
i810_dev
=
i810_dev
;
...
...
@@ -295,7 +287,7 @@ static struct aper_size_info_fixed intel_i830_sizes[] =
};
static
struct
_intel_i830_private
{
struct
pci_dev
*
i830_dev
;
/* device one */
struct
pci_dev
*
i830_dev
;
/* device one */
volatile
u8
*
registers
;
int
gtt_entries
;
}
intel_i830_private
;
...
...
@@ -533,7 +525,7 @@ static agp_memory *intel_i830_alloc_by_type(size_t pg_count,int type)
return
(
NULL
);
}
int
__init
intel_i830_setup
(
struct
pci_dev
*
i830_dev
)
static
int
__init
intel_i830_setup
(
struct
pci_dev
*
i830_dev
)
{
intel_i830_private
.
i830_dev
=
i830_dev
;
...
...
@@ -581,8 +573,7 @@ static int intel_fetch_size(void)
for
(
i
=
0
;
i
<
agp_bridge
.
num_aperture_sizes
;
i
++
)
{
if
(
temp
==
values
[
i
].
size_value
)
{
agp_bridge
.
previous_size
=
agp_bridge
.
current_size
=
(
void
*
)
(
values
+
i
);
agp_bridge
.
previous_size
=
agp_bridge
.
current_size
=
(
void
*
)
(
values
+
i
);
agp_bridge
.
aperture_size_idx
=
i
;
return
values
[
i
].
size
;
}
...
...
@@ -627,11 +618,11 @@ static void intel_tlbflush(agp_memory * mem)
static
void
intel_8xx_tlbflush
(
agp_memory
*
mem
)
{
u32
temp
;
pci_read_config_dword
(
agp_bridge
.
dev
,
INTEL_AGPCTRL
,
&
temp
);
pci_write_config_dword
(
agp_bridge
.
dev
,
INTEL_AGPCTRL
,
temp
&
~
(
1
<<
7
));
pci_read_config_dword
(
agp_bridge
.
dev
,
INTEL_AGPCTRL
,
&
temp
);
pci_write_config_dword
(
agp_bridge
.
dev
,
INTEL_AGPCTRL
,
temp
|
(
1
<<
7
));
u32
temp
;
pci_read_config_dword
(
agp_bridge
.
dev
,
INTEL_AGPCTRL
,
&
temp
);
pci_write_config_dword
(
agp_bridge
.
dev
,
INTEL_AGPCTRL
,
temp
&
~
(
1
<<
7
));
pci_read_config_dword
(
agp_bridge
.
dev
,
INTEL_AGPCTRL
,
&
temp
);
pci_write_config_dword
(
agp_bridge
.
dev
,
INTEL_AGPCTRL
,
temp
|
(
1
<<
7
));
}
...
...
@@ -683,7 +674,7 @@ static int intel_configure(void)
/* paccfg/nbxcfg */
pci_read_config_word
(
agp_bridge
.
dev
,
INTEL_NBXCFG
,
&
temp2
);
pci_write_config_word
(
agp_bridge
.
dev
,
INTEL_NBXCFG
,
(
temp2
&
~
(
1
<<
10
))
|
(
1
<<
9
));
(
temp2
&
~
(
1
<<
10
))
|
(
1
<<
9
));
/* clear any possible error conditions */
pci_write_config_byte
(
agp_bridge
.
dev
,
INTEL_ERRSTS
+
1
,
7
);
return
0
;
...
...
@@ -708,7 +699,7 @@ static int intel_815_configure(void)
/* attbase - aperture base */
/* the Intel 815 chipset spec. says that bits 29-31 in the
* ATTBASE register are reserved -> try not to write them */
if
(
agp_bridge
.
gatt_bus_addr
&
INTEL_815_ATTBASE_MASK
)
if
(
agp_bridge
.
gatt_bus_addr
&
INTEL_815_ATTBASE_MASK
)
panic
(
"gatt bus addr too high"
);
pci_read_config_dword
(
agp_bridge
.
dev
,
INTEL_ATTBASE
,
&
addr
);
addr
&=
INTEL_815_ATTBASE_MASK
;
...
...
@@ -729,7 +720,7 @@ static int intel_815_configure(void)
static
void
intel_820_tlbflush
(
agp_memory
*
mem
)
{
return
;
return
;
}
static
void
intel_820_cleanup
(
void
)
...
...
@@ -740,9 +731,9 @@ static void intel_820_cleanup(void)
previous_size
=
A_SIZE_8
(
agp_bridge
.
previous_size
);
pci_read_config_byte
(
agp_bridge
.
dev
,
INTEL_I820_RDCR
,
&
temp
);
pci_write_config_byte
(
agp_bridge
.
dev
,
INTEL_I820_RDCR
,
temp
&
~
(
1
<<
1
));
temp
&
~
(
1
<<
1
));
pci_write_config_byte
(
agp_bridge
.
dev
,
INTEL_APSIZE
,
previous_size
->
size_value
);
previous_size
->
size_value
);
}
...
...
@@ -974,10 +965,10 @@ static struct aper_size_info_16 intel_generic_sizes[7] =
static
struct
aper_size_info_8
intel_830mp_sizes
[
4
]
=
{
{
256
,
65536
,
6
,
0
},
{
128
,
32768
,
5
,
32
},
{
64
,
16384
,
4
,
48
},
{
32
,
8192
,
3
,
56
}
{
256
,
65536
,
6
,
0
},
{
128
,
32768
,
5
,
32
},
{
64
,
16384
,
4
,
48
},
{
32
,
8192
,
3
,
56
}
};
static
int
__init
intel_generic_setup
(
struct
pci_dev
*
pdev
)
...
...
@@ -1322,7 +1313,7 @@ static int __init agp_lookup_host_bridge (struct pci_dev *pdev)
/* try init anyway, if user requests it */
if
(
agp_try_unsupported
)
{
printk
(
KERN_WARNING
PFX
"Trying generic Intel routines"
" for device id: %04x
\n
"
,
pdev
->
device
);
" for device id: %04x
\n
"
,
pdev
->
device
);
agp_bridge
.
type
=
INTEL_GENERIC
;
return
intel_generic_setup
(
pdev
);
}
...
...
@@ -1338,6 +1329,7 @@ static int __init agp_lookup_host_bridge (struct pci_dev *pdev)
static
int
__init
agp_find_supported_device
(
struct
pci_dev
*
dev
)
{
struct
pci_dev
*
i810_dev
;
u8
cap_ptr
=
0
;
agp_bridge
.
dev
=
dev
;
...
...
@@ -1347,7 +1339,7 @@ static int __init agp_find_supported_device(struct pci_dev *dev)
i810_dev
=
pci_find_device
(
PCI_VENDOR_ID_INTEL
,
PCI_DEVICE_ID_INTEL_82810_IG1
,
NULL
);
if
(
i810_dev
==
NULL
)
{
printk
(
KERN_ERR
PFX
"Detected an Intel i810,"
" but could not find the secondary device.
\n
"
);
" but could not find the secondary device.
\n
"
);
return
-
ENODEV
;
}
printk
(
KERN_INFO
PFX
"Detected an Intel i810 Chipset.
\n
"
);
...
...
@@ -1358,7 +1350,7 @@ static int __init agp_find_supported_device(struct pci_dev *dev)
i810_dev
=
pci_find_device
(
PCI_VENDOR_ID_INTEL
,
PCI_DEVICE_ID_INTEL_82810_IG3
,
NULL
);
if
(
i810_dev
==
NULL
)
{
printk
(
KERN_ERR
PFX
"Detected an Intel i810 DC100, but could not find the "
"secondary device.
\n
"
);
"secondary device.
\n
"
);
return
-
ENODEV
;
}
printk
(
KERN_INFO
PFX
"Detected an Intel i810 DC100 Chipset.
\n
"
);
...
...
@@ -1369,7 +1361,7 @@ static int __init agp_find_supported_device(struct pci_dev *dev)
i810_dev
=
pci_find_device
(
PCI_VENDOR_ID_INTEL
,
PCI_DEVICE_ID_INTEL_82810E_IG
,
NULL
);
if
(
i810_dev
==
NULL
)
{
printk
(
KERN_ERR
PFX
"Detected an Intel i810 E"
", but could not find the secondary device.
\n
"
);
", but could not find the secondary device.
\n
"
);
return
-
ENODEV
;
}
printk
(
KERN_INFO
PFX
"Detected an Intel i810 E Chipset.
\n
"
);
...
...
@@ -1377,11 +1369,11 @@ static int __init agp_find_supported_device(struct pci_dev *dev)
return
intel_i810_setup
(
i810_dev
);
case
PCI_DEVICE_ID_INTEL_82815_MC
:
/* The i815 can operate either as an i810 style
* integrated device, or as an AGP4X motherboard.
*
* This only addresses the first mode:
*/
/* The i815 can operate either as an i810 style
* integrated device, or as an AGP4X motherboard.
*
* This only addresses the first mode:
*/
i810_dev
=
pci_find_device
(
PCI_VENDOR_ID_INTEL
,
PCI_DEVICE_ID_INTEL_82815_CGC
,
NULL
);
if
(
i810_dev
==
NULL
)
{
printk
(
KERN_ERR
PFX
"agpgart: Detected an "
...
...
@@ -1413,7 +1405,7 @@ static int __init agp_find_supported_device(struct pci_dev *dev)
printk
(
KERN_INFO
PFX
"Detected an Intel 845G Chipset.
\n
"
);
agp_bridge
.
type
=
INTEL_I810
;
return
intel_i830_setup
(
i810_dev
);
case
PCI_DEVICE_ID_INTEL_82830_HB
:
i810_dev
=
pci_find_device
(
PCI_VENDOR_ID_INTEL
,
PCI_DEVICE_ID_INTEL_82830_CGC
,
NULL
);
if
(
i810_dev
&&
PCI_FUNC
(
i810_dev
->
devfn
)
!=
0
)
...
...
@@ -1433,15 +1425,20 @@ static int __init agp_find_supported_device(struct pci_dev *dev)
break
;
}
if
(
pci_find_capability
(
dev
,
PCI_CAP_ID_AGP
)
==
0
)
cap_ptr
=
pci_find_capability
(
dev
,
PCI_CAP_ID_AGP
);
if
(
cap_ptr
==
0
)
return
-
ENODEV
;
agp_bridge
.
capndx
=
cap_ptr
;
/* Fill in the mode register */
pci_read_config_dword
(
agp_bridge
.
dev
,
agp_bridge
.
capndx
+
4
,
&
agp_bridge
.
mode
);
/* probe for known chipsets */
return
agp_lookup_host_bridge
(
dev
);
}
static
int
agp_intel_probe
(
struct
pci_dev
*
dev
,
const
struct
pci_device_id
*
ent
)
static
int
__init
agp_intel_probe
(
struct
pci_dev
*
dev
,
const
struct
pci_device_id
*
ent
)
{
if
(
agp_find_supported_device
(
dev
)
==
0
)
{
agp_register_driver
(
dev
);
...
...
@@ -1464,7 +1461,7 @@ static struct pci_device_id agp_intel_pci_table[] __initdata = {
MODULE_DEVICE_TABLE
(
pci
,
agp_intel_pci_table
);
static
struct
pci_driver
agp_intel_pci_driver
=
{
static
struct
__initdata
pci_driver
agp_intel_pci_driver
=
{
.
name
=
"agpgart-intel"
,
.
id_table
=
agp_intel_pci_table
,
.
probe
=
agp_intel_probe
,
...
...
@@ -1498,4 +1495,3 @@ module_exit(agp_intel_cleanup);
MODULE_PARM
(
agp_try_unsupported
,
"1i"
);
MODULE_AUTHOR
(
"Dave Jones <davej@codemonkey.org.uk>"
);
MODULE_LICENSE
(
"GPL and additional rights"
);
drivers/char/agp/sis-agp.c
View file @
61567a39
...
...
@@ -86,7 +86,7 @@ static struct gatt_mask sis_generic_masks[] =
{.
mask
=
0x00000000
,
.
type
=
0
}
};
int
__init
sis_generic_setup
(
struct
pci_dev
*
pdev
)
static
int
__init
sis_generic_setup
(
struct
pci_dev
*
pdev
)
{
agp_bridge
.
masks
=
sis_generic_masks
;
agp_bridge
.
num_of_masks
=
1
;
...
...
@@ -223,25 +223,24 @@ static int __init agp_lookup_host_bridge (struct pci_dev *pdev)
}
static
int
__init
agp_
find_supported_device
(
struct
pci_dev
*
dev
)
static
int
__init
agp_
sis_probe
(
struct
pci_dev
*
dev
,
const
struct
pci_device_id
*
ent
)
{
agp_bridge
.
dev
=
dev
;
u8
cap_ptr
=
0
;
if
(
pci_find_capability
(
dev
,
PCI_CAP_ID_AGP
)
==
0
)
cap_ptr
=
pci_find_capability
(
dev
,
PCI_CAP_ID_AGP
);
if
(
cap_ptr
==
0
)
return
-
ENODEV
;
/* probe for known chipsets */
return
agp_lookup_host_bridge
(
dev
);
}
static
int
agp_sis_probe
(
struct
pci_dev
*
dev
,
const
struct
pci_device_id
*
ent
)
{
if
(
agp_find_supported_device
(
dev
)
==
0
)
{
if
(
agp_lookup_host_bridge
(
dev
)
!=
-
ENODEV
)
{
agp_bridge
.
dev
=
dev
;
agp_bridge
.
capndx
=
cap_ptr
;
/* Fill in the mode register */
pci_read_config_dword
(
agp_bridge
.
dev
,
agp_bridge
.
capndx
+
4
,
&
agp_bridge
.
mode
);
agp_register_driver
(
dev
);
return
0
;
}
return
-
ENODEV
;
return
-
ENODEV
;
}
static
struct
pci_device_id
agp_sis_pci_table
[]
__initdata
=
{
...
...
@@ -258,13 +257,13 @@ static struct pci_device_id agp_sis_pci_table[] __initdata = {
MODULE_DEVICE_TABLE
(
pci
,
agp_sis_pci_table
);
static
struct
pci_driver
agp_sis_pci_driver
=
{
static
struct
__initdata
pci_driver
agp_sis_pci_driver
=
{
.
name
=
"agpgart-sis"
,
.
id_table
=
agp_sis_pci_table
,
.
probe
=
agp_sis_probe
,
};
int
__init
agp_sis_init
(
void
)
static
int
__init
agp_sis_init
(
void
)
{
int
ret_val
;
...
...
drivers/char/agp/sworks-agp.c
View file @
61567a39
...
...
@@ -169,9 +169,7 @@ static int serverworks_create_gatt_table(void)
* used to program the agp master not the cpu
*/
pci_read_config_dword
(
agp_bridge
.
dev
,
serverworks_private
.
gart_addr_ofs
,
&
temp
);
pci_read_config_dword
(
agp_bridge
.
dev
,
serverworks_private
.
gart_addr_ofs
,
&
temp
);
agp_bridge
.
gart_bus_addr
=
(
temp
&
PCI_BASE_ADDRESS_MEM_MASK
);
/* Calculate the agp offset */
...
...
@@ -206,18 +204,11 @@ static int serverworks_fetch_size(void)
struct
aper_size_info_lvl2
*
values
;
values
=
A_SIZE_LVL2
(
agp_bridge
.
aperture_sizes
);
pci_read_config_dword
(
agp_bridge
.
dev
,
serverworks_private
.
gart_addr_ofs
,
&
temp
);
pci_write_config_dword
(
agp_bridge
.
dev
,
serverworks_private
.
gart_addr_ofs
,
SVWRKS_SIZE_MASK
);
pci_read_config_dword
(
agp_bridge
.
dev
,
serverworks_private
.
gart_addr_ofs
,
&
temp2
);
pci_write_config_dword
(
agp_bridge
.
dev
,
serverworks_private
.
gart_addr_ofs
,
temp
);
pci_read_config_dword
(
agp_bridge
.
dev
,
serverworks_private
.
gart_addr_ofs
,
&
temp
);
pci_write_config_dword
(
agp_bridge
.
dev
,
serverworks_private
.
gart_addr_ofs
,
SVWRKS_SIZE_MASK
);
pci_read_config_dword
(
agp_bridge
.
dev
,
serverworks_private
.
gart_addr_ofs
,
&
temp2
);
pci_write_config_dword
(
agp_bridge
.
dev
,
serverworks_private
.
gart_addr_ofs
,
temp
);
temp2
&=
SVWRKS_SIZE_MASK
;
for
(
i
=
0
;
i
<
agp_bridge
.
num_aperture_sizes
;
i
++
)
{
...
...
@@ -245,9 +236,7 @@ static int serverworks_configure(void)
current_size
=
A_SIZE_LVL2
(
agp_bridge
.
current_size
);
/* Get the memory mapped registers */
pci_read_config_dword
(
agp_bridge
.
dev
,
serverworks_private
.
mm_addr_ofs
,
&
temp
);
pci_read_config_dword
(
agp_bridge
.
dev
,
serverworks_private
.
mm_addr_ofs
,
&
temp
);
temp
=
(
temp
&
PCI_BASE_ADDRESS_MEM_MASK
);
serverworks_private
.
registers
=
(
volatile
u8
*
)
ioremap
(
temp
,
4096
);
...
...
@@ -269,7 +258,7 @@ static int serverworks_configure(void)
agp_bridge
.
tlb_flush
(
NULL
);
pci_read_config_byte
(
serverworks_private
.
svrwrks_dev
,
0x34
,
&
cap_ptr
);
if
(
cap_ptr
!=
0
x00
)
{
if
(
cap_ptr
!=
0
)
{
do
{
pci_read_config_dword
(
serverworks_private
.
svrwrks_dev
,
cap_ptr
,
&
cap_id
);
...
...
@@ -277,30 +266,21 @@ static int serverworks_configure(void)
if
((
cap_id
&
0xff
)
!=
0x02
)
cap_ptr
=
(
cap_id
>>
8
)
&
0xff
;
}
while
(((
cap_id
&
0xff
)
!=
0x02
)
&&
(
cap_ptr
!=
0
x00
));
while
(((
cap_id
&
0xff
)
!=
0x02
)
&&
(
cap_ptr
!=
0
));
}
agp_bridge
.
capndx
=
cap_ptr
;
/* Fill in the mode register */
pci_read_config_dword
(
serverworks_private
.
svrwrks_dev
,
agp_bridge
.
capndx
+
4
,
&
agp_bridge
.
mode
);
agp_bridge
.
capndx
+
4
,
&
agp_bridge
.
mode
);
pci_read_config_byte
(
agp_bridge
.
dev
,
SVWRKS_CACHING
,
&
enable_reg
);
pci_read_config_byte
(
agp_bridge
.
dev
,
SVWRKS_CACHING
,
&
enable_reg
);
enable_reg
&=
~
0x3
;
pci_write_config_byte
(
agp_bridge
.
dev
,
SVWRKS_CACHING
,
enable_reg
);
pci_write_config_byte
(
agp_bridge
.
dev
,
SVWRKS_CACHING
,
enable_reg
);
pci_read_config_byte
(
agp_bridge
.
dev
,
SVWRKS_FEATURE
,
&
enable_reg
);
pci_read_config_byte
(
agp_bridge
.
dev
,
SVWRKS_FEATURE
,
&
enable_reg
);
enable_reg
|=
(
1
<<
6
);
pci_write_config_byte
(
agp_bridge
.
dev
,
SVWRKS_FEATURE
,
enable_reg
);
pci_write_config_byte
(
agp_bridge
.
dev
,
SVWRKS_FEATURE
,
enable_reg
);
return
0
;
}
...
...
@@ -532,7 +512,7 @@ static void serverworks_agp_enable(u32 mode)
}
}
int
__init
serverworks_setup
(
struct
pci_dev
*
pdev
)
static
int
__init
serverworks_setup
(
struct
pci_dev
*
pdev
)
{
u32
temp
;
u32
temp2
;
...
...
@@ -606,7 +586,6 @@ int __init serverworks_setup (struct pci_dev *pdev)
static
int
__init
agp_find_supported_device
(
struct
pci_dev
*
dev
)
{
struct
pci_dev
*
bridge_dev
;
agp_bridge
.
dev
=
dev
;
/* Everything is on func 1 here so we are hardcoding function one */
bridge_dev
=
pci_find_slot
((
unsigned
int
)
dev
->
bus
->
number
,
PCI_DEVFN
(
0
,
1
));
...
...
@@ -638,9 +617,10 @@ static int __init agp_find_supported_device(struct pci_dev *dev)
}
static
int
agp_serverworks_probe
(
struct
pci_dev
*
dev
,
const
struct
pci_device_id
*
ent
)
static
int
__init
agp_serverworks_probe
(
struct
pci_dev
*
dev
,
const
struct
pci_device_id
*
ent
)
{
if
(
agp_find_supported_device
(
dev
)
==
0
)
{
agp_bridge
.
dev
=
dev
;
agp_register_driver
(
dev
);
return
0
;
}
...
...
@@ -661,7 +641,7 @@ static struct pci_device_id agp_serverworks_pci_table[] __initdata = {
MODULE_DEVICE_TABLE
(
pci
,
agp_serverworks_pci_table
);
static
struct
pci_driver
agp_serverworks_pci_driver
=
{
static
struct
__initdata
pci_driver
agp_serverworks_pci_driver
=
{
.
name
=
"agpgart-serverworks"
,
.
id_table
=
agp_serverworks_pci_table
,
.
probe
=
agp_serverworks_probe
,
...
...
drivers/char/agp/via-agp.c
View file @
61567a39
...
...
@@ -94,7 +94,7 @@ static struct gatt_mask via_generic_masks[] =
{.
mask
=
0x00000000
,
.
type
=
0
}
};
int
__init
via_generic_setup
(
struct
pci_dev
*
pdev
)
static
int
__init
via_generic_setup
(
struct
pci_dev
*
pdev
)
{
agp_bridge
.
masks
=
via_generic_masks
;
agp_bridge
.
num_of_masks
=
1
;
...
...
@@ -124,13 +124,64 @@ int __init via_generic_setup (struct pci_dev *pdev)
return
0
;
}
struct
agp_device_ids
via_agp_device_ids
[]
__initdata
=
/*
* The KT400 does magick to put the AGP bridge compliant with the same
* standards version as the graphics card. If we haven't fallen into
* 2.0 compatability mode, we run the normal 3.0 code, and fall back
* if something nasty happens.
*/
static
void
__init
via_kt400_enable
(
u32
mode
)
{
if
((
agp_generic_agp_3_0_enable
(
mode
))
==
FALSE
)
/* Something weird happened, fall back to 2.0 */
agp_generic_agp_enable
(
mode
);
}
static
int
__init
via_kt400_setup
(
struct
pci_dev
*
pdev
)
{
u8
reg
;
agp_bridge
.
masks
=
via_generic_masks
;
agp_bridge
.
num_of_masks
=
1
;
agp_bridge
.
aperture_sizes
=
(
void
*
)
via_generic_sizes
;
agp_bridge
.
size_type
=
U8_APER_SIZE
;
agp_bridge
.
num_aperture_sizes
=
7
;
agp_bridge
.
dev_private_data
=
NULL
;
agp_bridge
.
needs_scratch_page
=
FALSE
;
agp_bridge
.
configure
=
via_configure
;
agp_bridge
.
fetch_size
=
via_fetch_size
;
agp_bridge
.
cleanup
=
via_cleanup
;
agp_bridge
.
tlb_flush
=
via_tlbflush
;
agp_bridge
.
mask_memory
=
via_mask_memory
;
agp_bridge
.
cache_flush
=
global_cache_flush
;
agp_bridge
.
create_gatt_table
=
agp_generic_create_gatt_table
;
agp_bridge
.
free_gatt_table
=
agp_generic_free_gatt_table
;
agp_bridge
.
insert_memory
=
agp_generic_insert_memory
;
agp_bridge
.
remove_memory
=
agp_generic_remove_memory
;
agp_bridge
.
alloc_by_type
=
agp_generic_alloc_by_type
;
agp_bridge
.
free_by_type
=
agp_generic_free_by_type
;
agp_bridge
.
agp_alloc_page
=
agp_generic_alloc_page
;
agp_bridge
.
agp_destroy_page
=
agp_generic_destroy_page
;
agp_bridge
.
suspend
=
agp_generic_suspend
;
agp_bridge
.
resume
=
agp_generic_resume
;
agp_bridge
.
cant_use_aperture
=
0
;
pci_read_config_byte
(
agp_bridge
.
dev
,
VIA_AGPSEL
,
&
reg
);
if
((
reg
&
(
1
<<
1
))
==
1
)
{
/* AGP 2.0 compatability mode. */
agp_bridge
.
agp_enable
=
agp_generic_agp_enable
;
}
else
{
/* AGP 3.0 mode */
agp_bridge
.
agp_enable
=
via_kt400_enable
;
}
return
0
;
}
static
struct
agp_device_ids
via_agp_device_ids
[]
__initdata
=
{
{
.
device_id
=
PCI_DEVICE_ID_VIA_8501_0
,
.
chipset
=
VIA_MVP4
,
.
chipset_name
=
"MVP4"
,
},
{
.
device_id
=
PCI_DEVICE_ID_VIA_82C597_0
,
.
chipset
=
VIA_VP3
,
...
...
@@ -141,6 +192,11 @@ struct agp_device_ids via_agp_device_ids[] __initdata =
.
chipset
=
VIA_MVP3
,
.
chipset_name
=
"MVP3"
,
},
{
.
device_id
=
PCI_DEVICE_ID_VIA_8501_0
,
.
chipset
=
VIA_MVP4
,
.
chipset_name
=
"MVP4"
,
},
{
.
device_id
=
PCI_DEVICE_ID_VIA_82C691
,
.
chipset
=
VIA_APOLLO_PRO
,
...
...
@@ -166,20 +222,22 @@ struct agp_device_ids via_agp_device_ids[] __initdata =
.
chipset
=
VIA_APOLLO_KT133
,
.
chipset_name
=
"Apollo Pro KT266"
,
},
{
.
device_id
=
PCI_DEVICE_ID_VIA_8653_0
,
.
chipset
=
VIA_APOLLO_PRO
,
.
chipset_name
=
"Apollo Pro 266T"
,
},
{
.
device_id
=
PCI_DEVICE_ID_VIA_8377_0
,
.
chipset
=
VIA_APOLLO_KT400
,
.
chipset_name
=
"Apollo Pro KT400"
,
.
chipset_setup
=
via_kt400_setup
,
},
{
.
device_id
=
PCI_DEVICE_ID_VIA_8653_0
,
.
chipset
=
VIA_APOLLO_PRO
,
.
chipset_name
=
"Apollo Pro266T"
,
},
{
/* VIA ProSavage PM133 (Apollo Pro133A chipset with S3 Savage4) */
.
device_id
=
PCI_DEVICE_ID_VIA_82C694X_0
,
.
chipset
=
VIA_VT8605
,
.
chipset_name
=
"PM133"
.
chipset_name
=
"
Apollo ProSavage
PM133"
},
{
},
/* dummy final entry, always present */
};
...
...
@@ -220,15 +278,20 @@ static int __init agp_lookup_host_bridge (struct pci_dev *pdev)
}
static
int
agp_via_probe
(
struct
pci_dev
*
dev
,
const
struct
pci_device_id
*
ent
)
static
int
__init
agp_via_probe
(
struct
pci_dev
*
dev
,
const
struct
pci_device_id
*
ent
)
{
if
(
pci_find_capability
(
dev
,
PCI_CAP_ID_AGP
)
==
0
)
return
-
ENODEV
;
u8
cap_ptr
=
0
;
agp_bridge
.
dev
=
dev
;
cap_ptr
=
pci_find_capability
(
dev
,
PCI_CAP_ID_AGP
);
if
(
cap_ptr
==
0
)
return
-
ENODEV
;
/* probe for known chipsets */
if
(
agp_lookup_host_bridge
(
dev
)
!=
-
ENODEV
)
{
agp_bridge
.
dev
=
dev
;
agp_bridge
.
capndx
=
cap_ptr
;
/* Fill in the mode register */
pci_read_config_dword
(
agp_bridge
.
dev
,
agp_bridge
.
capndx
+
4
,
&
agp_bridge
.
mode
);
agp_register_driver
(
dev
);
return
0
;
}
...
...
@@ -249,7 +312,7 @@ static struct pci_device_id agp_via_pci_table[] __initdata = {
MODULE_DEVICE_TABLE
(
pci
,
agp_via_pci_table
);
static
struct
pci_driver
agp_via_pci_driver
=
{
static
struct
__initdata
pci_driver
agp_via_pci_driver
=
{
.
name
=
"agpgart-via"
,
.
id_table
=
agp_via_pci_table
,
.
probe
=
agp_via_probe
,
...
...
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