Fixed severly broken calls to pci_device_find_by_slot. I mis-read the

tag bits when I originally coded it.  I mistakenly thought that the
original code masked off the PCI function bits, so I just always
passed 0 as the function.  That was a mistake.
This commit is contained in:
Ian Romanick 2006-06-07 17:46:05 -07:00
parent f9e7128d94
commit 50112dfcc8

View File

@ -28,6 +28,7 @@
#define _INT10_PRIVATE
#include "int10Defines.h"
#include "xf86int10.h"
#include "Pci.h"
static int pciCfg1in(CARD16 addr, CARD32 *val);
static int pciCfg1out(CARD16 addr, CARD32 val);
@ -472,8 +473,11 @@ static CARD32 PciCfg1Addr = 0;
#define TAG(Cfg1Addr) (Cfg1Addr & 0xffff00)
#define OFFSET(Cfg1Addr) (Cfg1Addr & 0xff)
#define _BUS(x) (((x) >> 16) & 0x0ff)
#define _DEV(x) (((x) >> 8) & 0x0ff)
#define _BUS(x) PCI_BUS_FROM_TAG( TAG(PciCfg1Addr) )
#define _DEV(x) PCI_DEV_FROM_TAG( TAG(PciCfg1Addr) )
#define _FUNC(x) PCI_FUNC_FROM_TAG( TAG(PciCfg1Addr) )
#define GET_DEVICE(_addr) \
pci_device_find_by_slot(0, _BUS(_addr), _DEV(_addr), _FUNC(_addr))
static int
pciCfg1in(CARD16 addr, CARD32 *val)
@ -483,10 +487,7 @@ pciCfg1in(CARD16 addr, CARD32 *val)
return 1;
}
if (addr == 0xCFC) {
struct pci_device * dev = pci_device_find_by_slot(0,
_BUS(PciCfg1Addr),
_DEV(PciCfg1Addr),
0);
struct pci_device *dev = GET_DEVICE(PciCfg1Addr);
pci_device_cfg_read_u32(dev, val, OFFSET(PciCfg1Addr));
return 1;
@ -502,10 +503,7 @@ pciCfg1out(CARD16 addr, CARD32 val)
return 1;
}
if (addr == 0xCFC) {
struct pci_device * dev = pci_device_find_by_slot(0,
_BUS(PciCfg1Addr),
_DEV(PciCfg1Addr),
0);
struct pci_device *dev = GET_DEVICE(PciCfg1Addr);
pci_device_cfg_write_u32(dev, & val, OFFSET(PciCfg1Addr));
return 1;
@ -525,10 +523,7 @@ pciCfg1inw(CARD16 addr, CARD16 *val)
}
if ((addr >= 0xCFC) && (addr <= 0xCFF)) {
const unsigned offset = addr - 0xCFC;
struct pci_device * dev = pci_device_find_by_slot(0,
_BUS(PciCfg1Addr),
_DEV(PciCfg1Addr),
0);
struct pci_device *dev = GET_DEVICE(PciCfg1Addr);
pci_device_cfg_read_u16(dev, val, OFFSET(PciCfg1Addr) + offset);
return 1;
@ -549,10 +544,7 @@ pciCfg1outw(CARD16 addr, CARD16 val)
}
if ((addr >= 0xCFC) && (addr <= 0xCFF)) {
const unsigned offset = addr - 0xCFC;
struct pci_device * dev = pci_device_find_by_slot(0,
_BUS(PciCfg1Addr),
_DEV(PciCfg1Addr),
0);
struct pci_device *dev = GET_DEVICE(PciCfg1Addr);
pci_device_cfg_write_u16(dev, & val, OFFSET(PciCfg1Addr) + offset);
return 1;
@ -572,10 +564,7 @@ pciCfg1inb(CARD16 addr, CARD8 *val)
}
if ((addr >= 0xCFC) && (addr <= 0xCFF)) {
const unsigned offset = addr - 0xCFC;
struct pci_device * dev = pci_device_find_by_slot(0,
_BUS(PciCfg1Addr),
_DEV(PciCfg1Addr),
0);
struct pci_device *dev = GET_DEVICE(PciCfg1Addr);
pci_device_cfg_read_u8(dev, val, OFFSET(PciCfg1Addr) + offset);
return 1;
@ -596,10 +585,7 @@ pciCfg1outb(CARD16 addr, CARD8 val)
}
if ((addr >= 0xCFC) && (addr <= 0xCFF)) {
const unsigned offset = addr - 0xCFC;
struct pci_device * dev = pci_device_find_by_slot(0,
_BUS(PciCfg1Addr),
_DEV(PciCfg1Addr),
0);
struct pci_device *dev = GET_DEVICE(PciCfg1Addr);
pci_device_cfg_write_u8(dev, & val, OFFSET(PciCfg1Addr) + offset);
return 1;