search for ATI Radeon card instead of hardcoding a PCI handle
This commit is contained in:
@@ -143,52 +143,61 @@ void do_tests(struct pci_native_driver_interface *pci)
|
|||||||
struct pci_rd *rd;
|
struct pci_rd *rd;
|
||||||
int flags;
|
int flags;
|
||||||
|
|
||||||
handle = 0xa0;
|
/*
|
||||||
|
* look for an ATI Radeon video card
|
||||||
|
*/
|
||||||
|
|
||||||
rd = (*pci->pci_get_resource)(handle); /* get resource descriptor for ATI graphics card */
|
// handle = 0xd8;
|
||||||
if (rd != NULL)
|
handle = (*pci->pci_find_device)(0x5159, 0x1002, 0);
|
||||||
|
if (handle > 0)
|
||||||
{
|
{
|
||||||
do
|
rd = (*pci->pci_get_resource)(handle); /* get resource descriptor for ATI graphics card */
|
||||||
|
if (rd != NULL)
|
||||||
{
|
{
|
||||||
flags = rd->flags;
|
do
|
||||||
|
|
||||||
printf("Start address: 0x%08lx\r\n", rd->start);
|
|
||||||
printf("Length: 0x%08lx\r\n", rd->length);
|
|
||||||
printf("Offset: 0x%08lx\r\n", rd->offset);
|
|
||||||
printf("DMA offset: 0x%08lx\r\n", rd->dmaoffset);
|
|
||||||
printf("FLAGS: %s%s%s%s%s%s%s\r\n",
|
|
||||||
flags & FLG_IO ? "FLG_IO, " : "",
|
|
||||||
flags & FLG_ROM ? "FLG_ROM, " : "",
|
|
||||||
flags & FLG_8BIT ? "FLG_8BIT, " : "",
|
|
||||||
flags & FLG_16BIT ? "FLG_16BIT, " : "",
|
|
||||||
flags & FLG_32BIT ? "FLG_32BIT, " : "",
|
|
||||||
(flags & FLG_ENDMASK) == ORD_MOTOROLA ? "ORD_MOTOROLA" :
|
|
||||||
(flags & FLG_ENDMASK) == ORD_INTEL_AS ? "ORD_INTEL_AS" :
|
|
||||||
(flags & FLG_ENDMASK) == ORD_INTEL_LS ? "ORD_INTEL_LS" :
|
|
||||||
(flags & FLG_ENDMASK) == ORD_UNKNOWN ? "ORD_UNKNOWN" :
|
|
||||||
"", "");
|
|
||||||
printf("\r\n");
|
|
||||||
|
|
||||||
if (rd->start != 0L && rd->start == 0x80000000)
|
|
||||||
{
|
{
|
||||||
hexdump((uint8_t *) rd->start + rd->offset, 64);
|
flags = rd->flags;
|
||||||
|
|
||||||
memset((uint8_t *) rd-> start + rd->offset, 0, 128 * MB);
|
printf("Start address: 0x%08lx\r\n", rd->start);
|
||||||
|
printf("Length: 0x%08lx\r\n", rd->length);
|
||||||
|
printf("Offset: 0x%08lx\r\n", rd->offset);
|
||||||
|
printf("DMA offset: 0x%08lx\r\n", rd->dmaoffset);
|
||||||
|
printf("FLAGS: %s%s%s%s%s%s%s\r\n",
|
||||||
|
flags & FLG_IO ? "FLG_IO, " : "",
|
||||||
|
flags & FLG_ROM ? "FLG_ROM, " : "",
|
||||||
|
flags & FLG_8BIT ? "FLG_8BIT, " : "",
|
||||||
|
flags & FLG_16BIT ? "FLG_16BIT, " : "",
|
||||||
|
flags & FLG_32BIT ? "FLG_32BIT, " : "",
|
||||||
|
(flags & FLG_ENDMASK) == ORD_MOTOROLA ? "ORD_MOTOROLA" :
|
||||||
|
(flags & FLG_ENDMASK) == ORD_INTEL_AS ? "ORD_INTEL_AS" :
|
||||||
|
(flags & FLG_ENDMASK) == ORD_INTEL_LS ? "ORD_INTEL_LS" :
|
||||||
|
(flags & FLG_ENDMASK) == ORD_UNKNOWN ? "ORD_UNKNOWN" :
|
||||||
|
"", "");
|
||||||
|
printf("\r\n");
|
||||||
|
|
||||||
printf("memory cleared\r\n");
|
if (rd->start != 0L && rd->start == 0x80000000)
|
||||||
hexdump((uint8_t *) rd->start + rd->offset, 64);
|
{
|
||||||
|
hexdump((uint8_t *) rd->start + rd->offset, 64);
|
||||||
|
|
||||||
memset((uint8_t *) rd->start + rd->offset, 0xaa, 128 * MB);
|
memset((uint8_t *) rd-> start + rd->offset, 0, 64 * MB);
|
||||||
hexdump((uint8_t *) rd->start + rd->offset, 64);
|
|
||||||
}
|
|
||||||
|
|
||||||
rd = (struct pci_rd *) (((uintptr_t) rd) + (uintptr_t) rd->next);
|
printf("memory cleared\r\n");
|
||||||
} while (!(flags & FLG_LAST));
|
hexdump((uint8_t *) rd->start + rd->offset, 64);
|
||||||
|
|
||||||
|
memset((uint8_t *) rd->start + rd->offset, 0xaa, 64 * MB);
|
||||||
|
hexdump((uint8_t *) rd->start + rd->offset, 64);
|
||||||
|
}
|
||||||
|
|
||||||
|
rd = (struct pci_rd *) (((uintptr_t) rd) + (uintptr_t) rd->next);
|
||||||
|
} while (!(flags & FLG_LAST));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("resource descriptor for handle 0x%02x not found\r\n", handle);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
fprintf(stderr, "card not found\r\n");
|
||||||
printf("resource descriptor for handle 0x%02x not found\r\n", handle);
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("\r\n...finished\r\n");
|
printf("\r\n...finished\r\n");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user