|
@@ -36,6 +36,10 @@ static int \
|
|
indirect_##rw##_config_##size(struct pci_controller *hose, \
|
|
indirect_##rw##_config_##size(struct pci_controller *hose, \
|
|
pci_dev_t dev, int offset, type val) \
|
|
pci_dev_t dev, int offset, type val) \
|
|
{ \
|
|
{ \
|
|
|
|
+ u32 b, d,f; \
|
|
|
|
+ b = PCI_BUS(dev); d = PCI_DEV(dev); f = PCI_FUNC(dev); \
|
|
|
|
+ b = b - hose->first_busno; \
|
|
|
|
+ dev = PCI_BDF(b, d, f); \
|
|
out_le32(hose->cfg_addr, dev | (offset & 0xfc) | 0x80000000); \
|
|
out_le32(hose->cfg_addr, dev | (offset & 0xfc) | 0x80000000); \
|
|
sync(); \
|
|
sync(); \
|
|
cfg_##rw(val, hose->cfg_data + (offset & mask), type, op); \
|
|
cfg_##rw(val, hose->cfg_data + (offset & mask), type, op); \
|
|
@@ -47,6 +51,10 @@ static int \
|
|
indirect_##rw##_config_##size(struct pci_controller *hose, \
|
|
indirect_##rw##_config_##size(struct pci_controller *hose, \
|
|
pci_dev_t dev, int offset, type val) \
|
|
pci_dev_t dev, int offset, type val) \
|
|
{ \
|
|
{ \
|
|
|
|
+ u32 b, d,f; \
|
|
|
|
+ b = PCI_BUS(dev); d = PCI_DEV(dev); f = PCI_FUNC(dev); \
|
|
|
|
+ b = b - hose->first_busno; \
|
|
|
|
+ dev = PCI_BDF(b, d, f); \
|
|
*(hose->cfg_addr) = dev | (offset & 0xfc) | 0x80000000; \
|
|
*(hose->cfg_addr) = dev | (offset & 0xfc) | 0x80000000; \
|
|
sync(); \
|
|
sync(); \
|
|
cfg_##rw(val, hose->cfg_data + (offset & mask), type, op); \
|
|
cfg_##rw(val, hose->cfg_data + (offset & mask), type, op); \
|
|
@@ -58,6 +66,10 @@ static int \
|
|
indirect_##rw##_config_##size(struct pci_controller *hose, \
|
|
indirect_##rw##_config_##size(struct pci_controller *hose, \
|
|
pci_dev_t dev, int offset, type val) \
|
|
pci_dev_t dev, int offset, type val) \
|
|
{ \
|
|
{ \
|
|
|
|
+ u32 b, d,f; \
|
|
|
|
+ b = PCI_BUS(dev); d = PCI_DEV(dev); f = PCI_FUNC(dev); \
|
|
|
|
+ b = b - hose->first_busno; \
|
|
|
|
+ dev = PCI_BDF(b, d, f); \
|
|
if (PCI_BUS(dev) > 0) \
|
|
if (PCI_BUS(dev) > 0) \
|
|
out_le32(hose->cfg_addr, dev | (offset & 0xfc) | 0x80000001); \
|
|
out_le32(hose->cfg_addr, dev | (offset & 0xfc) | 0x80000001); \
|
|
else \
|
|
else \
|
|
@@ -71,6 +83,10 @@ static int \
|
|
indirect_##rw##_config_##size(struct pci_controller *hose, \
|
|
indirect_##rw##_config_##size(struct pci_controller *hose, \
|
|
pci_dev_t dev, int offset, type val) \
|
|
pci_dev_t dev, int offset, type val) \
|
|
{ \
|
|
{ \
|
|
|
|
+ u32 b, d,f; \
|
|
|
|
+ b = PCI_BUS(dev); d = PCI_DEV(dev); f = PCI_FUNC(dev); \
|
|
|
|
+ b = b - hose->first_busno; \
|
|
|
|
+ dev = PCI_BDF(b, d, f); \
|
|
out_le32(hose->cfg_addr, dev | (offset & 0xfc) | 0x80000000); \
|
|
out_le32(hose->cfg_addr, dev | (offset & 0xfc) | 0x80000000); \
|
|
cfg_##rw(val, hose->cfg_data + (offset & mask), type, op); \
|
|
cfg_##rw(val, hose->cfg_data + (offset & mask), type, op); \
|
|
return 0; \
|
|
return 0; \
|