@ -974,6 +974,36 @@ ulong pci_conv_size_to_32(ulong old, ulong value, uint offset,
return value ;
}
int pci_get_regions ( struct udevice * dev , struct pci_region * * iop ,
struct pci_region * * memp , struct pci_region * * prefp )
{
struct udevice * bus = pci_get_controller ( dev ) ;
struct pci_controller * hose = dev_get_uclass_priv ( bus ) ;
int i ;
* iop = NULL ;
* memp = NULL ;
* prefp = NULL ;
for ( i = 0 ; i < hose - > region_count ; i + + ) {
switch ( hose - > regions [ i ] . flags ) {
case PCI_REGION_IO :
if ( ! * iop | | ( * iop ) - > size < hose - > regions [ i ] . size )
* iop = hose - > regions + i ;
break ;
case PCI_REGION_MEM :
if ( ! * memp | | ( * memp ) - > size < hose - > regions [ i ] . size )
* memp = hose - > regions + i ;
break ;
case ( PCI_REGION_MEM | PCI_REGION_PREFETCH ) :
if ( ! * prefp | | ( * prefp ) - > size < hose - > regions [ i ] . size )
* prefp = hose - > regions + i ;
break ;
}
}
return ( * iop ! = NULL ) + ( * memp ! = NULL ) + ( * prefp ! = NULL ) ;
}
UCLASS_DRIVER ( pci ) = {
. id = UCLASS_PCI ,
. name = " pci " ,