2003-01-07 20:27:05

by Bjorn Helgaas

[permalink] [raw]
Subject: [PATCH] AGP 1/7: factor device command updates

Here's a series of minor AGP cleanups for 2.5. The point of
doing these is to reduce all the code duplication in the agp_enable
functions. The next step will be to wean hp-agp from its dependence
on "fake PCI devices," which requires a new agp_enable function, and
I didn't have the stomach to copy-n-paste all the stuff in there again.

Summary:
1: factor device command updates
2: fix old pci_find_capability merge botch
3: remove unused var in amd-k8-agp.c
4: add generic print of AGP version & mode when programming devices
5: factor device capability collection
6: use PCI_AGP_* constants
7: use pci_find_capability in sworks-agp.c

# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
# ChangeSet 1.971 -> 1.972
# drivers/char/agp/generic.c 1.10 -> 1.11
# drivers/char/agp/sworks-agp.c 1.12 -> 1.13
# drivers/char/agp/amd-k8-agp.c 1.15 -> 1.16
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 03/01/07 [email protected] 1.972
# Factor out updating AGP device command registers.
# --------------------------------------------
#
diff -Nru a/drivers/char/agp/amd-k8-agp.c b/drivers/char/agp/amd-k8-agp.c
--- a/drivers/char/agp/amd-k8-agp.c Tue Jan 7 12:51:49 2003
+++ b/drivers/char/agp/amd-k8-agp.c Tue Jan 7 12:51:49 2003
@@ -435,11 +435,7 @@
* command registers.
*/

- pci_for_each_dev(device) {
- cap_ptr = pci_find_capability(device, PCI_CAP_ID_AGP);
- if (cap_ptr != 0x00)
- pci_write_config_dword(device, cap_ptr + 8, command);
- }
+ agp_device_command(command);
}


diff -Nru a/drivers/char/agp/generic.c b/drivers/char/agp/generic.c
--- a/drivers/char/agp/generic.c Tue Jan 7 12:51:49 2003
+++ b/drivers/char/agp/generic.c Tue Jan 7 12:51:49 2003
@@ -313,6 +313,20 @@


/* Generic Agp routines - Start */
+
+void agp_device_command(u32 command)
+{
+ struct pci_dev *device;
+
+ pci_for_each_dev(device) {
+ u8 agp = pci_find_capability(device, PCI_CAP_ID_AGP);
+ if (!agp)
+ continue;
+
+ pci_write_config_dword(device, agp + 8, command);
+ }
+}
+
void agp_generic_agp_enable(u32 mode)
{
struct pci_dev *device = NULL;
@@ -395,11 +409,7 @@
* command registers.
*/

- pci_for_each_dev(device) {
- cap_ptr = pci_find_capability(device, PCI_CAP_ID_AGP);
- if (cap_ptr != 0x00)
- pci_write_config_dword(device, cap_ptr + 8, command);
- }
+ agp_device_command(command);
}

int agp_generic_create_gatt_table(void)
diff -Nru a/drivers/char/agp/sworks-agp.c b/drivers/char/agp/sworks-agp.c
--- a/drivers/char/agp/sworks-agp.c Tue Jan 7 12:51:49 2003
+++ b/drivers/char/agp/sworks-agp.c Tue Jan 7 12:51:49 2003
@@ -506,11 +506,7 @@
* command registers.
*/

- pci_for_each_dev(device) {
- cap_ptr = pci_find_capability(device, PCI_CAP_ID_AGP);
- if (cap_ptr != 0x00)
- pci_write_config_dword(device, cap_ptr + 8, command);
- }
+ agp_device_command(command);
}

static int __init serverworks_setup (struct pci_dev *pdev)