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
Kirill Smelkov
linux
Commits
59470101
Commit
59470101
authored
May 31, 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
a7cf3f04
6cf5f82c
Changes
10
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
257 additions
and
189 deletions
+257
-189
drivers/char/agp/amd-k7-agp.c
drivers/char/agp/amd-k7-agp.c
+30
-21
drivers/char/agp/amd64-agp.c
drivers/char/agp/amd64-agp.c
+76
-69
drivers/char/agp/ati-agp.c
drivers/char/agp/ati-agp.c
+1
-0
drivers/char/agp/backend.c
drivers/char/agp/backend.c
+8
-5
drivers/char/agp/intel-agp.c
drivers/char/agp/intel-agp.c
+40
-18
drivers/char/agp/intel-mch-agp.c
drivers/char/agp/intel-mch-agp.c
+13
-10
drivers/char/agp/nvidia-agp.c
drivers/char/agp/nvidia-agp.c
+9
-1
drivers/char/agp/sis-agp.c
drivers/char/agp/sis-agp.c
+36
-24
drivers/char/agp/sworks-agp.c
drivers/char/agp/sworks-agp.c
+7
-20
drivers/char/agp/via-agp.c
drivers/char/agp/via-agp.c
+37
-21
No files found.
drivers/char/agp/amd-k7-agp.c
View file @
59470101
...
...
@@ -20,6 +20,8 @@
#define AMD_TLBFLUSH 0x0c
/* In mmio region (32-bit register) */
#define AMD_CACHEENTRY 0x10
/* In mmio region (32-bit register) */
static
struct
pci_device_id
agp_amdk7_pci_table
[];
struct
amd_page_map
{
unsigned
long
*
real
;
unsigned
long
*
remapped
;
...
...
@@ -394,7 +396,6 @@ static struct agp_device_ids amd_agp_device_ids[] __devinitdata =
static
int
__devinit
agp_amdk7_probe
(
struct
pci_dev
*
pdev
,
const
struct
pci_device_id
*
ent
)
{
struct
agp_device_ids
*
devs
=
amd_agp_device_ids
;
struct
agp_bridge_data
*
bridge
;
u8
cap_ptr
;
int
j
;
...
...
@@ -403,19 +404,10 @@ static int __devinit agp_amdk7_probe(struct pci_dev *pdev,
if
(
!
cap_ptr
)
return
-
ENODEV
;
for
(
j
=
0
;
devs
[
j
].
chipset_name
;
j
++
)
{
if
(
pdev
->
device
==
devs
[
j
].
device_id
)
{
printk
(
KERN_INFO
PFX
"Detected AMD %s chipset
\n
"
,
devs
[
j
].
chipset_name
);
goto
found
;
}
}
printk
(
KERN_ERR
PFX
"Unsupported AMD chipset (device id: %04x)
\n
"
,
pdev
->
device
);
return
-
ENODEV
;
j
=
ent
-
agp_amdk7_pci_table
;
printk
(
KERN_INFO
PFX
"Detected AMD %s chipset
\n
"
,
amd_agp_device_ids
[
j
].
chipset_name
);
found:
bridge
=
agp_alloc_bridge
();
if
(
!
bridge
)
return
-
ENOMEM
;
...
...
@@ -442,12 +434,29 @@ static void __devexit agp_amdk7_remove(struct pci_dev *pdev)
agp_put_bridge
(
bridge
);
}
/* must be the same order as name table above */
static
struct
pci_device_id
agp_amdk7_pci_table
[]
=
{
{
.
class
=
(
PCI_CLASS_BRIDGE_HOST
<<
8
),
.
class_mask
=
~
0
,
.
vendor
=
PCI_VENDOR_ID_AMD
,
.
device
=
PCI_ANY_ID
,
.
device
=
PCI_DEVICE_ID_AMD_FE_GATE_7006
,
.
subvendor
=
PCI_ANY_ID
,
.
subdevice
=
PCI_ANY_ID
,
},
{
.
class
=
(
PCI_CLASS_BRIDGE_HOST
<<
8
),
.
class_mask
=
~
0
,
.
vendor
=
PCI_VENDOR_ID_AMD
,
.
device
=
PCI_DEVICE_ID_AMD_FE_GATE_700E
,
.
subvendor
=
PCI_ANY_ID
,
.
subdevice
=
PCI_ANY_ID
,
},
{
.
class
=
(
PCI_CLASS_BRIDGE_HOST
<<
8
),
.
class_mask
=
~
0
,
.
vendor
=
PCI_VENDOR_ID_AMD
,
.
device
=
PCI_DEVICE_ID_AMD_FE_GATE_700C
,
.
subvendor
=
PCI_ANY_ID
,
.
subdevice
=
PCI_ANY_ID
,
},
...
...
drivers/char/agp/amd64-agp.c
View file @
59470101
...
...
@@ -288,8 +288,8 @@ static int __devinit aperture_valid(u64 aper, u32 size)
/* Request the Aperture. This catches cases when someone else
already put a mapping in there - happens with some very broken BIOS
Maybe better to use pci_assign_resource/pci_enable_device instead
trusting
the bridges? */
Maybe better to use pci_assign_resource/pci_enable_device instead
t
rusting t
he bridges? */
if
(
!
aperture_resource
&&
!
(
aperture_resource
=
request_mem_region
(
aper
,
size
,
"aperture"
)))
{
printk
(
KERN_ERR
PFX
"Aperture conflicts with PCI mapping.
\n
"
);
...
...
@@ -377,7 +377,6 @@ static __devinit int cache_nbs (struct pci_dev *pdev, u32 cap_ptr)
/* Handle AMD 8151 quirks */
static
void
__devinit
amd8151_init
(
struct
pci_dev
*
pdev
,
struct
agp_bridge_data
*
bridge
)
{
char
*
revstring
;
u8
rev_id
;
...
...
@@ -491,8 +490,7 @@ static int __devinit agp_amd64_probe(struct pci_dev *pdev,
pdev
->
device
==
PCI_DEVICE_ID_AMD_8151_0
)
{
amd8151_init
(
pdev
,
bridge
);
}
else
{
printk
(
KERN_INFO
PFX
"Detected AGP bridge %x
\n
"
,
pdev
->
devfn
);
printk
(
KERN_INFO
PFX
"Detected AGP bridge %x
\n
"
,
pdev
->
devfn
);
}
bridge
->
driver
=
&
amd_8151_driver
;
...
...
@@ -581,6 +579,15 @@ static struct pci_device_id agp_amd64_pci_table[] = {
.
subvendor
=
PCI_ANY_ID
,
.
subdevice
=
PCI_ANY_ID
,
},
/* SIS 755 */
{
.
class
=
(
PCI_CLASS_BRIDGE_HOST
<<
8
),
.
class_mask
=
~
0
,
.
vendor
=
PCI_VENDOR_ID_SI
,
.
device
=
PCI_DEVICE_ID_SI_755
,
.
subvendor
=
PCI_ANY_ID
,
.
subdevice
=
PCI_ANY_ID
,
},
{
}
};
...
...
drivers/char/agp/ati-agp.c
View file @
59470101
...
...
@@ -131,6 +131,7 @@ static int ati_create_gatt_pages(int nr_tables)
i
--
;
}
kfree
(
tables
);
tables
=
NULL
;
retval
=
-
ENOMEM
;
break
;
}
...
...
drivers/char/agp/backend.c
View file @
59470101
...
...
@@ -243,6 +243,9 @@ int agp_add_bridge(struct agp_bridge_data *bridge)
{
int
error
;
if
(
agp_off
)
return
-
ENODEV
;
if
(
!
bridge
->
dev
)
{
printk
(
KERN_DEBUG
PFX
"Erk, registering with no pci_dev!
\n
"
);
return
-
EINVAL
;
...
...
drivers/char/agp/intel-agp.c
View file @
59470101
...
...
@@ -1382,8 +1382,10 @@ static int __devinit agp_intel_probe(struct pci_dev *pdev,
name
=
"E7205"
;
break
;
default:
printk
(
KERN_ERR
PFX
"Unsupported Intel chipset (device id: %04x)
\n
"
,
if
(
cap_ptr
)
printk
(
KERN_WARNING
PFX
"Unsupported Intel chipset (device id: %04x)
\n
"
,
pdev
->
device
);
agp_put_bridge
(
bridge
);
return
-
ENODEV
;
};
...
...
@@ -1406,7 +1408,8 @@ static int __devinit agp_intel_probe(struct pci_dev *pdev,
if
(
!
r
->
start
&&
r
->
end
)
{
if
(
pci_assign_resource
(
pdev
,
0
))
{
printk
(
KERN_ERR
PFX
"could not assign resource 0
\n
"
);
return
(
-
ENODEV
);
agp_put_bridge
(
bridge
);
return
-
ENODEV
;
}
}
...
...
@@ -1417,7 +1420,8 @@ static int __devinit agp_intel_probe(struct pci_dev *pdev,
*/
if
(
pci_enable_device
(
pdev
))
{
printk
(
KERN_ERR
PFX
"Unable to Enable PCI device
\n
"
);
return
(
-
ENODEV
);
agp_put_bridge
(
bridge
);
return
-
ENODEV
;
}
/* Fill in the mode register */
...
...
@@ -1442,15 +1446,12 @@ static void __devexit agp_intel_remove(struct pci_dev *pdev)
agp_put_bridge
(
bridge
);
}
static
int
agp_intel_suspend
(
struct
pci_dev
*
dev
,
u32
state
)
{
return
0
;
}
static
int
agp_intel_resume
(
struct
pci_dev
*
pdev
)
{
struct
agp_bridge_data
*
bridge
=
pci_get_drvdata
(
pdev
);
pci_restore_state
(
pdev
,
pdev
->
saved_config_space
);
if
(
bridge
->
driver
==
&
intel_generic_driver
)
intel_configure
();
else
if
(
bridge
->
driver
==
&
intel_845_driver
)
...
...
@@ -1462,14 +1463,36 @@ static int agp_intel_resume(struct pci_dev *pdev)
}
static
struct
pci_device_id
agp_intel_pci_table
[]
=
{
{
.
class
=
(
PCI_CLASS_BRIDGE_HOST
<<
8
),
.
class_mask
=
~
0
,
.
vendor
=
PCI_VENDOR_ID_INTEL
,
.
device
=
PCI_ANY_ID
,
.
subvendor
=
PCI_ANY_ID
,
.
subdevice
=
PCI_ANY_ID
,
},
#define ID(x) \
{ \
.class = (PCI_CLASS_BRIDGE_HOST << 8), \
.class_mask = ~0, \
.vendor = PCI_VENDOR_ID_INTEL, \
.device = x, \
.subvendor = PCI_ANY_ID, \
.subdevice = PCI_ANY_ID, \
}
ID
(
PCI_DEVICE_ID_INTEL_82443LX_0
),
ID
(
PCI_DEVICE_ID_INTEL_82443BX_0
),
ID
(
PCI_DEVICE_ID_INTEL_82443GX_0
),
ID
(
PCI_DEVICE_ID_INTEL_82810_MC1
),
ID
(
PCI_DEVICE_ID_INTEL_82810_MC3
),
ID
(
PCI_DEVICE_ID_INTEL_82810E_MC
),
ID
(
PCI_DEVICE_ID_INTEL_82815_MC
),
ID
(
PCI_DEVICE_ID_INTEL_82820_HB
),
ID
(
PCI_DEVICE_ID_INTEL_82820_UP_HB
),
ID
(
PCI_DEVICE_ID_INTEL_82830_HB
),
ID
(
PCI_DEVICE_ID_INTEL_82840_HB
),
ID
(
PCI_DEVICE_ID_INTEL_82845_HB
),
ID
(
PCI_DEVICE_ID_INTEL_82845G_HB
),
ID
(
PCI_DEVICE_ID_INTEL_82850_HB
),
ID
(
PCI_DEVICE_ID_INTEL_82855PM_HB
),
ID
(
PCI_DEVICE_ID_INTEL_82855GM_HB
),
ID
(
PCI_DEVICE_ID_INTEL_82860_HB
),
ID
(
PCI_DEVICE_ID_INTEL_82865_HB
),
ID
(
PCI_DEVICE_ID_INTEL_82875_HB
),
ID
(
PCI_DEVICE_ID_INTEL_7505_0
),
ID
(
PCI_DEVICE_ID_INTEL_7205_0
),
{
}
};
...
...
@@ -1480,7 +1503,6 @@ static struct pci_driver agp_intel_pci_driver = {
.
id_table
=
agp_intel_pci_table
,
.
probe
=
agp_intel_probe
,
.
remove
=
agp_intel_remove
,
.
suspend
=
agp_intel_suspend
,
.
resume
=
agp_intel_resume
,
};
...
...
drivers/char/agp/intel-mch-agp.c
View file @
59470101
...
...
@@ -491,10 +491,9 @@ static int __devinit agp_intelmch_probe(struct pci_dev *pdev,
char
*
name
=
"(unknown)"
;
u8
cap_ptr
=
0
;
if
(
!
boot_cpu_has
(
X86_FEATURE_LM
))
return
-
ENODEV
;
cap_ptr
=
pci_find_capability
(
pdev
,
PCI_CAP_ID_AGP
);
if
(
!
cap_ptr
)
return
-
ENODEV
;
bridge
=
agp_alloc_bridge
();
if
(
!
bridge
)
...
...
@@ -570,15 +569,12 @@ static void __devexit agp_intelmch_remove(struct pci_dev *pdev)
agp_put_bridge
(
bridge
);
}
static
int
agp_intelmch_suspend
(
struct
pci_dev
*
dev
,
u32
state
)
{
return
0
;
}
static
int
agp_intelmch_resume
(
struct
pci_dev
*
pdev
)
{
struct
agp_bridge_data
*
bridge
=
pci_get_drvdata
(
pdev
);
pci_restore_state
(
pdev
,
pdev
->
saved_config_space
);
if
(
bridge
->
driver
==
&
intel_845_driver
)
intel_845_configure
();
...
...
@@ -590,7 +586,15 @@ static struct pci_device_id agp_intelmch_pci_table[] = {
.
class
=
(
PCI_CLASS_BRIDGE_HOST
<<
8
),
.
class_mask
=
~
0
,
.
vendor
=
PCI_VENDOR_ID_INTEL
,
.
device
=
PCI_ANY_ID
,
.
device
=
PCI_DEVICE_ID_INTEL_82865_HB
,
.
subvendor
=
PCI_ANY_ID
,
.
subdevice
=
PCI_ANY_ID
,
},
{
.
class
=
(
PCI_CLASS_BRIDGE_HOST
<<
8
),
.
class_mask
=
~
0
,
.
vendor
=
PCI_VENDOR_ID_INTEL
,
.
device
=
PCI_DEVICE_ID_INTEL_82875_HB
,
.
subvendor
=
PCI_ANY_ID
,
.
subdevice
=
PCI_ANY_ID
,
},
...
...
@@ -604,7 +608,6 @@ static struct pci_driver agp_intelmch_pci_driver = {
.
id_table
=
agp_intelmch_pci_table
,
.
probe
=
agp_intelmch_probe
,
.
remove
=
agp_intelmch_remove
,
.
suspend
=
agp_intelmch_suspend
,
.
resume
=
agp_intelmch_resume
,
};
...
...
drivers/char/agp/nvidia-agp.c
View file @
59470101
...
...
@@ -380,7 +380,15 @@ static struct pci_device_id agp_nvidia_pci_table[] = {
.
class
=
(
PCI_CLASS_BRIDGE_HOST
<<
8
),
.
class_mask
=
~
0
,
.
vendor
=
PCI_VENDOR_ID_NVIDIA
,
.
device
=
PCI_ANY_ID
,
.
device
=
PCI_DEVICE_ID_NVIDIA_NFORCE
,
.
subvendor
=
PCI_ANY_ID
,
.
subdevice
=
PCI_ANY_ID
,
},
{
.
class
=
(
PCI_CLASS_BRIDGE_HOST
<<
8
),
.
class_mask
=
~
0
,
.
vendor
=
PCI_VENDOR_ID_NVIDIA
,
.
device
=
PCI_DEVICE_ID_NVIDIA_NFORCE2
,
.
subvendor
=
PCI_ANY_ID
,
.
subdevice
=
PCI_ANY_ID
,
},
...
...
drivers/char/agp/sis-agp.c
View file @
59470101
...
...
@@ -13,6 +13,8 @@
#define SIS_TLBCNTRL 0x97
#define SIS_TLBFLUSH 0x98
static
int
__devinitdata
agp_sis_force_delay
=
0
;
static
int
__devinitdata
agp_sis_agp_spec
=
-
1
;
static
int
sis_fetch_size
(
void
)
{
...
...
@@ -67,7 +69,7 @@ static void sis_cleanup(void)
(
previous_size
->
size_value
&
~
(
0x03
)));
}
static
void
sis_
648
_enable
(
u32
mode
)
static
void
sis_
delayed
_enable
(
u32
mode
)
{
struct
pci_dev
*
device
=
NULL
;
u32
command
;
...
...
@@ -94,13 +96,12 @@ static void sis_648_enable(u32 mode)
pci_write_config_dword
(
device
,
agp
+
PCI_AGP_COMMAND
,
command
);
/*
* Weird: on
648(fx) and 746(fx)
chipsets any rate change in the target
* Weird: on
some sis
chipsets any rate change in the target
* command register triggers a 5ms screwup during which the master
* cannot be configured
*/
if
(
device
->
device
==
PCI_DEVICE_ID_SI_648
||
device
->
device
==
PCI_DEVICE_ID_SI_746
)
{
printk
(
KERN_INFO
PFX
"SiS chipset with AGP problems detected. Giving bridge time to recover.
\n
"
);
if
(
device
->
device
==
agp_bridge
->
dev
->
device
)
{
printk
(
KERN_INFO
PFX
"SiS delay workaround: giving bridge time to recover.
\n
"
);
set_current_state
(
TASK_UNINTERRUPTIBLE
);
schedule_timeout
(
1
+
(
HZ
*
10
)
/
1000
);
}
...
...
@@ -223,11 +224,28 @@ static struct agp_device_ids sis_agp_device_ids[] __devinitdata =
};
// chipsets that require the 'delay hack'
static
int
sis_broken_chipsets
[]
__devinitdata
=
{
PCI_DEVICE_ID_SI_648
,
PCI_DEVICE_ID_SI_746
,
0
// terminator
};
static
void
__devinit
sis_get_driver
(
struct
agp_bridge_data
*
bridge
)
{
if
(
bridge
->
dev
->
device
==
PCI_DEVICE_ID_SI_648
)
{
sis_driver
.
agp_enable
=
sis_648_enable
;
if
(
agp_bridge
->
major_version
==
3
)
{
int
i
;
for
(
i
=
0
;
sis_broken_chipsets
[
i
]
!=
0
;
++
i
)
if
(
bridge
->
dev
->
device
==
sis_broken_chipsets
[
i
])
break
;
if
(
sis_broken_chipsets
[
i
]
||
agp_sis_force_delay
)
sis_driver
.
agp_enable
=
sis_delayed_enable
;
// sis chipsets that indicate less than agp3.5
// are not actually fully agp3 compliant
if
((
agp_bridge
->
major_version
==
3
&&
agp_bridge
->
minor_version
>=
5
&&
agp_sis_agp_spec
!=
0
)
||
agp_sis_agp_spec
==
1
)
{
sis_driver
.
aperture_sizes
=
agp3_generic_sizes
;
sis_driver
.
size_type
=
U16_APER_SIZE
;
sis_driver
.
num_aperture_sizes
=
AGP_GENERIC_SIZES_ENTRIES
;
...
...
@@ -236,16 +254,6 @@ static void __devinit sis_get_driver(struct agp_bridge_data *bridge)
sis_driver
.
cleanup
=
agp3_generic_cleanup
;
sis_driver
.
tlb_flush
=
agp3_generic_tlbflush
;
}
}
if
(
bridge
->
dev
->
device
==
PCI_DEVICE_ID_SI_746
)
{
/*
* We don't know enough about the 746 to enable it properly.
* Though we do know that it needs the 'delay' hack to settle
* after changing modes.
*/
sis_driver
.
agp_enable
=
sis_648_enable
;
}
}
...
...
@@ -335,4 +343,8 @@ static void __exit agp_sis_cleanup(void)
module_init
(
agp_sis_init
);
module_exit
(
agp_sis_cleanup
);
MODULE_PARM
(
agp_sis_force_delay
,
"i"
);
MODULE_PARM_DESC
(
agp_sis_force_delay
,
"forces sis delay hack"
);
MODULE_PARM
(
agp_sis_agp_spec
,
"i"
);
MODULE_PARM_DESC
(
agp_sis_agp_spec
,
"0=force sis init, 1=force generic agp3 init, default: autodetect"
);
MODULE_LICENSE
(
"GPL and additional rights"
);
drivers/char/agp/sworks-agp.c
View file @
59470101
...
...
@@ -248,26 +248,13 @@ static int serverworks_fetch_size(void)
*/
static
void
serverworks_tlbflush
(
struct
agp_memory
*
temp
)
{
unsigned
long
end
;
OUTREG8
(
serverworks_private
.
registers
,
SVWRKS_POSTFLUSH
,
0x01
);
end
=
jiffies
+
3
*
HZ
;
while
(
INREG8
(
serverworks_private
.
registers
,
SVWRKS_POSTFLUSH
)
==
0x01
)
{
if
((
signed
)(
end
-
jiffies
)
<=
0
)
{
printk
(
KERN_ERR
PFX
"Posted write buffer flush took more"
"then 3 seconds
\n
"
);
}
}
OUTREG32
(
serverworks_private
.
registers
,
SVWRKS_DIRFLUSH
,
0x00000001
);
end
=
jiffies
+
3
*
HZ
;
while
(
INREG32
(
serverworks_private
.
registers
,
SVWRKS_DIRFLUSH
)
==
0x00000001
)
{
if
((
signed
)(
end
-
jiffies
)
<=
0
)
{
printk
(
KERN_ERR
PFX
"TLB flush took more"
"then 3 seconds
\n
"
);
}
}
OUTREG8
(
serverworks_private
.
registers
,
SVWRKS_POSTFLUSH
,
1
);
while
(
INREG8
(
serverworks_private
.
registers
,
SVWRKS_POSTFLUSH
)
==
1
)
cpu_relax
();
OUTREG32
(
serverworks_private
.
registers
,
SVWRKS_DIRFLUSH
,
1
);
while
(
INREG32
(
serverworks_private
.
registers
,
SVWRKS_DIRFLUSH
)
==
1
)
cpu_relax
();
}
static
int
serverworks_configure
(
void
)
...
...
drivers/char/agp/via-agp.c
View file @
59470101
...
...
@@ -9,6 +9,8 @@
#include <linux/agp_backend.h>
#include "agp.h"
static
struct
pci_device_id
agp_via_pci_table
[];
#define VIA_GARTCTRL 0x80
#define VIA_APSIZE 0x84
#define VIA_ATTBASE 0x88
...
...
@@ -378,20 +380,9 @@ static int __devinit agp_via_probe(struct pci_dev *pdev,
if
(
!
cap_ptr
)
return
-
ENODEV
;
/* probe for known chipsets */
for
(
j
=
0
;
devs
[
j
].
chipset_name
;
j
++
)
{
if
(
pdev
->
device
==
devs
[
j
].
device_id
)
{
printk
(
KERN_INFO
PFX
"Detected VIA %s chipset
\n
"
,
devs
[
j
].
chipset_name
);
goto
found
;
}
}
printk
(
KERN_ERR
PFX
"Unsupported VIA chipset (device id: %04x)
\n
"
,
pdev
->
device
);
return
-
ENODEV
;
j
=
ent
-
agp_via_pci_table
;
printk
(
KERN_INFO
PFX
"Detected VIA %s chipset
\n
"
,
devs
[
j
].
chipset_name
);
found:
bridge
=
agp_alloc_bridge
();
if
(
!
bridge
)
return
-
ENOMEM
;
...
...
@@ -432,15 +423,40 @@ static void __devexit agp_via_remove(struct pci_dev *pdev)
agp_put_bridge
(
bridge
);
}
/* must be the same order as name table above */
static
struct
pci_device_id
agp_via_pci_table
[]
=
{
{
.
class
=
(
PCI_CLASS_BRIDGE_HOST
<<
8
),
.
class_mask
=
~
0
,
.
vendor
=
PCI_VENDOR_ID_VIA
,
.
device
=
PCI_ANY_ID
,
.
subvendor
=
PCI_ANY_ID
,
.
subdevice
=
PCI_ANY_ID
,
},
#define ID(x) \
{ \
.class = (PCI_CLASS_BRIDGE_HOST << 8), \
.class_mask = ~0, \
.vendor = PCI_VENDOR_ID_VIA, \
.device = x, \
.subvendor = PCI_ANY_ID, \
.subdevice = PCI_ANY_ID, \
}
ID
(
PCI_DEVICE_ID_VIA_82C598_0
),
ID
(
PCI_DEVICE_ID_VIA_8501_0
),
ID
(
PCI_DEVICE_ID_VIA_8601_0
),
ID
(
PCI_DEVICE_ID_VIA_82C691_0
),
ID
(
PCI_DEVICE_ID_VIA_8371_0
),
ID
(
PCI_DEVICE_ID_VIA_8633_0
),
ID
(
PCI_DEVICE_ID_VIA_XN266
),
ID
(
PCI_DEVICE_ID_VIA_8361
),
ID
(
PCI_DEVICE_ID_VIA_8363_0
),
ID
(
PCI_DEVICE_ID_VIA_8753_0
),
ID
(
PCI_DEVICE_ID_VIA_8367_0
),
ID
(
PCI_DEVICE_ID_VIA_8653_0
),
ID
(
PCI_DEVICE_ID_VIA_XM266
),
ID
(
PCI_DEVICE_ID_VIA_862X_0
),
ID
(
PCI_DEVICE_ID_VIA_8377_0
),
ID
(
PCI_DEVICE_ID_VIA_8605_0
),
ID
(
PCI_DEVICE_ID_VIA_8703_51_0
),
ID
(
PCI_DEVICE_ID_VIA_8754C_0
),
ID
(
PCI_DEVICE_ID_VIA_8763_0
),
ID
(
PCI_DEVICE_ID_VIA_8378_0
),
ID
(
PCI_DEVICE_ID_VIA_PT880
),
ID
(
PCI_DEVICE_ID_VIA_8783_0
),
ID
(
PCI_DEVICE_ID_VIA_PX8X0_0
),
{
}
};
...
...
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