@ -36,6 +36,10 @@ static int \
indirect_ # # rw # # _config_ # # size ( struct pci_controller * hose , \
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 ) ; \
sync ( ) ; \
cfg_ # # rw ( val , hose - > cfg_data + ( offset & mask ) , type , op ) ; \
@ -47,6 +51,10 @@ static int \
indirect_ # # rw # # _config_ # # size ( struct pci_controller * hose , \
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 ; \
sync ( ) ; \
cfg_ # # rw ( val , hose - > cfg_data + ( offset & mask ) , type , op ) ; \
@ -58,6 +66,10 @@ static int \
indirect_ # # rw # # _config_ # # size ( struct pci_controller * hose , \
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 ) \
out_le32 ( hose - > cfg_addr , dev | ( offset & 0xfc ) | 0x80000001 ) ; \
else \
@ -71,6 +83,10 @@ static int \
indirect_ # # rw # # _config_ # # size ( struct pci_controller * hose , \
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 ) ; \
cfg_ # # rw ( val , hose - > cfg_data + ( offset & mask ) , type , op ) ; \
return 0 ; \