Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 1028 → Rev 1029

/drivers/usb/uhci/detect.inc
0,0 → 1,63
 
 
static Bool FindPciDevice()
{
Bool retval = FALSE;
u32_t bus, last_bus;
PCITAG tag;
 
if( (last_bus = PciApi(1))==-1)
return retval;
 
for(bus=0;bus<=last_bus;bus++)
{
u32_t devfn;
 
for(devfn=0;devfn<256;devfn++)
{
hc_t *hc;
 
u32_t id;
u16_t pcicmd;
u16_t devclass;
int i;
 
devclass = PciRead16(bus,devfn, 0x0A);
 
if( devclass != 0x0C03)
continue;
 
pcicmd = PciRead16(bus,devfn, PCI_COMMAND);
if (! pcicmd & PCI_COMMAND_IO)
continue;
 
hc = (hc_t*)malloc(sizeof(hc_t));
memset(hc, 0, sizeof(hc_t));
link_initialize(&hc->link);
 
hc->pciId = PciRead32(bus,devfn, 0);
hc->PciTag = pciTag(bus,(devfn>>3)&0x1F,devfn&0x7);
 
for (i = 0; i < 6; i++)
{
u32_t base;
Bool validSize;
 
base = PciRead32(bus,devfn, PCI_MAP_REG_START + (i << 2));
if(base)
{
if (base & PCI_MAP_IO) {
hc->ioBase[i] = (addr_t)PCIGETIO(base);
hc->memType[i] = base & PCI_MAP_IO_ATTR_MASK;
} else {
hc->memBase[i] = (u32_t)PCIGETMEMORY(base);
hc->memType[i] = base & PCI_MAP_MEMORY_ATTR_MASK;
}
}
};
list_prepend(&hc->link, &hc_list);
retval = TRUE;
};
};
return retval;
};