fix match_classcode()
This commit is contained in:
@@ -506,7 +506,7 @@ int32_t pci_find_device(uint16_t device_id, uint16_t vendor_id, int index)
|
|||||||
static bool match_classcode(uint32_t handle, uint32_t classcode)
|
static bool match_classcode(uint32_t handle, uint32_t classcode)
|
||||||
{
|
{
|
||||||
uint8_t find_mask = (classcode >> 24) & 0xff;
|
uint8_t find_mask = (classcode >> 24) & 0xff;
|
||||||
uint32_t value = pci_read_config_longword(handle, PCICCR);
|
uint32_t value = swpl(pci_read_config_longword(handle, PCICCR));
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
dbg("classcode=0x%08x, value=0x%08x\r\n", classcode, value);
|
dbg("classcode=0x%08x, value=0x%08x\r\n", classcode, value);
|
||||||
@@ -515,8 +515,8 @@ static bool match_classcode(uint32_t handle, uint32_t classcode)
|
|||||||
{
|
{
|
||||||
if ((find_mask >> i) & 1)
|
if ((find_mask >> i) & 1)
|
||||||
{
|
{
|
||||||
dbg("compare 0x%02x against 0x%02x\r\n", (value >> (i * 8)) & 0xff, (classcode >> (i * 8)) & 0xff);
|
dbg("compare 0x%02x against 0x%02x\r\n", (value >> ((i + 1) * 8)) & 0xff, (classcode >> (i * 8)) & 0xff);
|
||||||
if (! (((value >> (i * 8)) & 0xff) == ((classcode >> (i * 8)) & 0xff)))
|
if (! (((value >> ((i + 1) * 8)) & 0xff) == ((classcode >> (i * 8)) & 0xff)))
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user