cleanly finish PCI configuration access in pci_read_config_longword
This commit is contained in:
@@ -125,6 +125,9 @@ uint32_t pci_read_config_longword(int32_t handle, int offset)
|
|||||||
|
|
||||||
value = * (volatile uint32_t *) PCI_IO_OFFSET; /* access device */
|
value = * (volatile uint32_t *) PCI_IO_OFFSET; /* access device */
|
||||||
|
|
||||||
|
/* finish PCI configuration access special cycle (allow regular PCI accesses) */
|
||||||
|
MCF_PCI_PCICAR &= ~MCF_PCI_PCICAR_E;
|
||||||
|
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -520,6 +523,42 @@ void init_pci(void)
|
|||||||
/* initialize handles array */
|
/* initialize handles array */
|
||||||
memset(handles, 0, NUM_CARDS * sizeof(uint16_t));
|
memset(handles, 0, NUM_CARDS * sizeof(uint16_t));
|
||||||
|
|
||||||
|
#if MACHINE_FIREBEE
|
||||||
|
/*
|
||||||
|
* experimental: leave "old" USB initialization in place for the FireBee USB controller
|
||||||
|
* which seems to be found on second access only with the new PCI scan routines
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* PCI config space access for UPD720101 on AD17 */
|
||||||
|
MCF_PCI_PCICAR = MCF_PCI_PCICAR_E +
|
||||||
|
MCF_PCI_PCICAR_DEVNUM(17) +
|
||||||
|
MCF_PCI_PCICAR_FUNCNUM(0) +
|
||||||
|
MCF_PCI_PCICAR_DWORD(0);
|
||||||
|
|
||||||
|
if (* (uint32_t *) PCI_IO_OFFSET == 0x33103500)
|
||||||
|
{
|
||||||
|
/* device found */
|
||||||
|
|
||||||
|
MCF_PCI_PCICAR = MCF_PCI_PCICAR_E +
|
||||||
|
MCF_PCI_PCICAR_DEVNUM(17) +
|
||||||
|
MCF_PCI_PCICAR_FUNCNUM(0) +
|
||||||
|
MCF_PCI_PCICAR_DWORD(57); /* FIXME: PCI configuration access to reserved register? */
|
||||||
|
|
||||||
|
* (uint8_t *) PCI_IO_OFFSET = 0x20; // commented out (hangs currently)
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xprintf("FireBee USB controller not found - disable");
|
||||||
|
|
||||||
|
MCF_PCI_PCICAR = MCF_PCI_PCICAR_DEVNUM(17) +
|
||||||
|
MCF_PCI_PCICAR_FUNCNUM(0) +
|
||||||
|
MCF_PCI_PCICAR_DWORD(57);
|
||||||
|
}
|
||||||
|
#endif /* MACHINE_FIREBEE */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* do normal initialization
|
||||||
|
*/
|
||||||
pci_scan();
|
pci_scan();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user