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:
parent
f9e7128d94
commit
50112dfcc8
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue
Block a user