Commit 34826924 authored by Andrew Morton's avatar Andrew Morton Committed by Linus Torvalds

[PATCH] cciss: avoid reading PCI config space

From: mikem@beardog.cca.cpqcorp.net

This patch replaces reading directly form PCI config space where possible.
Most of what we need is in the pdev struct.  This is in 2.4.
parent c5c158f5
...@@ -2121,9 +2121,8 @@ static int find_PCI_BAR_index(struct pci_dev *pdev, ...@@ -2121,9 +2121,8 @@ static int find_PCI_BAR_index(struct pci_dev *pdev,
static int cciss_pci_init(ctlr_info_t *c, struct pci_dev *pdev) static int cciss_pci_init(ctlr_info_t *c, struct pci_dev *pdev)
{ {
ushort vendor_id, device_id, command; ushort subsystem_vendor_id, subsystem_device_id, command;
unchar cache_line_size, latency_timer; unchar irq = pdev->irq;
unchar irq, revision;
__u32 board_id, scratchpad = 0; __u32 board_id, scratchpad = 0;
__u64 cfg_offset; __u64 cfg_offset;
__u32 cfg_base_addr; __u32 cfg_base_addr;
...@@ -2150,17 +2149,10 @@ static int cciss_pci_init(ctlr_info_t *c, struct pci_dev *pdev) ...@@ -2150,17 +2149,10 @@ static int cciss_pci_init(ctlr_info_t *c, struct pci_dev *pdev)
return(-1); return(-1);
} }
vendor_id = pdev->vendor; subsystem_vendor_id = pdev->subsystem_vendor;
device_id = pdev->device; subsystem_device_id = pdev->subsystem_device;
irq = pdev->irq; board_id = (((__u32) (subsystem_device_id << 16) & 0xffff0000) |
subsystem_vendor_id);
(void) pci_read_config_byte(pdev, PCI_CLASS_REVISION, &revision);
(void) pci_read_config_byte(pdev, PCI_CACHE_LINE_SIZE,
&cache_line_size);
(void) pci_read_config_byte(pdev, PCI_LATENCY_TIMER,
&latency_timer);
(void) pci_read_config_dword(pdev, PCI_SUBSYSTEM_VENDOR_ID,
&board_id);
/* search for our IO range so we can protect it */ /* search for our IO range so we can protect it */
for(i=0; i<DEVICE_COUNT_RESOURCE; i++) for(i=0; i<DEVICE_COUNT_RESOURCE; i++)
...@@ -2188,15 +2180,8 @@ static int cciss_pci_init(ctlr_info_t *c, struct pci_dev *pdev) ...@@ -2188,15 +2180,8 @@ static int cciss_pci_init(ctlr_info_t *c, struct pci_dev *pdev)
} }
#ifdef CCISS_DEBUG #ifdef CCISS_DEBUG
printk("vendor_id = %x\n", vendor_id);
printk("device_id = %x\n", device_id);
printk("command = %x\n", command); printk("command = %x\n", command);
for(i=0; i<6; i++)
printk("addr[%d] = %x\n", i, pci_resource_start(pdev, i);
printk("revision = %x\n", revision);
printk("irq = %x\n", irq); printk("irq = %x\n", irq);
printk("cache_line_size = %x\n", cache_line_size);
printk("latency_timer = %x\n", latency_timer);
printk("board_id = %x\n", board_id); printk("board_id = %x\n", board_id);
#endif /* CCISS_DEBUG */ #endif /* CCISS_DEBUG */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment