User`s guide

3 Porting a BSP to Custom Hardware
3.3 Finalizing Your BSP
91
3
pciAutoCfgCtl(pCookie, PCI_FBB_ENABLE, (void *)NULL);
return;
}
/************************************************************
* sysPciMemCfg - BSP support routine to specify PCI MEM/IO
*
* This routine calls pciAutoCfgCtl() to specify the memory
* and I/O addresses and ranges for the four PCI address
* spaces.
*
* RETURNS: N/A
*/
void sysPciMemCfg(void *pCookie)
{
/* 32-bit NON-Prefetchable Memory Space */
#if ( 0 == PCI_MEMIO32_ADDR && 0 != PCI_MEMIO32_SIZE )
pciAutoCfgCtl(pCookie, PCI_MEMIO32_LOC_SET, (void *)PCI_MEMIO32_ADDR+1);
pciAutoCfgCtl(pCookie, PCI_MEMIO32_SIZE_SET, (void *)PCI_MEMIO32_SIZE-1);
#else /* PCI_MEMIO32_ADDR is non-zero */
pciAutoCfgCtl(pCookie, PCI_MEMIO32_LOC_SET,
(void *)(PCI_MEMIO32_ADDR));
pciAutoCfgCtl(pCookie, PCI_MEMIO32_SIZE_SET,
(void *)(PCI_MEMIO32_SIZE));
#endif /* PCI_MEMIO32_ADDR */
/* 32-bit Prefetchable Memory Space */
#if ( 0 == PCI_MEM32_ADDR && 0 != PCI_MEM32_SIZE )
pciAutoCfgCtl(pCookie, PCI_MEM32_LOC_SET, (void *)PCI_MEM32_ADDR+1);
pciAutoCfgCtl(pCookie, PCI_MEM32_SIZE_SET, (void *)PCI_MEM32_SIZE-1);
#else /* PCI_MEM32_ADDR is non-zero */
pciAutoCfgCtl(pCookie, PCI_MEM32_LOC_SET, (void *)(PCI_MEM32_ADDR));
pciAutoCfgCtl(pCookie, PCI_MEM32_SIZE_SET, (void *)(PCI_MEM32_SIZE));
#endif
/* 16-bit ISA I/O Space - start after legacy devices, kbd, com1, ... */
#if ( 0 == PCI_IO_ADDR && 0 != PCI_IO_SIZE )
pciAutoCfgCtl(pCookie, PCI_IO16_LOC_SET, (void *)PCI_IO_ADDR+1);
pciAutoCfgCtl(pCookie, PCI_IO16_SIZE_SET, (void *)PCI_IO_SIZE-1);
#else /* PCI_IO_ADDR is non-zero */
pciAutoCfgCtl(pCookie, PCI_IO16_LOC_SET, (void *)(PCI_IO_ADDR));
pciAutoCfgCtl(pCookie, PCI_IO16_SIZE_SET, (void *)(PCI_IO_SIZE));
#endif
/* 32-bit PCI I/O Space */
#if ( 0 == PCI_IO32_ADDR && 0 != PCI_IO32_SIZE )
pciAutoCfgCtl(pCookie, PCI_IO32_LOC_SET, (void *)PCI_IO32_ADDR+1);
pciAutoCfgCtl(pCookie, PCI_IO32_SIZE_SET, (void *)PCI_IO32_SIZE-1);
#else /* PCI_IO32_ADDR is non-zero */
pciAutoCfgCtl(pCookie, PCI_IO32_LOC_SET, (void *)(PCI_IO32_ADDR));
pciAutoCfgCtl(pCookie, PCI_IO32_SIZE_SET, (void *)(PCI_IO32_SIZE));
#endif
}