User`s guide
Appendix B • 63
}
B.3.5 Syncing with Setting and Exchange Base address
if (pDE->ThisInterface == PRIMARY_INTERFACE)
{
writel(pDE->RemoteUserBufferLogicalAddr,
DB_ADDR(pDE->BAR0VirtualWindowAddress,BAR_UP_BAR2_XLAT_BASE));
value = sync_wait;
done = false;
PDEBUG("R2D2FindInitDevice: Waiting for signal from Secondary
Interface.BAR_UP_BAR2_XLAT_BASE set to
%08lX\n",pDE->RemoteUserBufferLogicalAddr);
while (value-- && (!done))
{
if ((pDE->LocalDiskLogicalAddr =
readl(DB_ADDR(pDE->BAR0VirtualWindowAddress,BAR_DOWN_BAR2_XLAT_B
ASE))) != 0)
{
pDE->fullDuplex = true;
done=true;
}
}
if (!pDE->fullDuplex)
{
PWARN("R2D2FindInitDevice: Timed out Waiting for signal from
Secondary Interface.\n");
//add by scott
deviceUnMapMem(pDE);
return ERR_DEVICE_CONFIGURATION;
} else {
PDEBUG("R2D2FindInitDevice: Received signal from Secondary
Interface.BAR_DOWN_BAR2_XLAT_BASE at
%08lX\n",pDE->LocalDiskLogicalAddr);
return 0;
}
} else /* we are the secondary interface*/ {
writel(pDE->RemoteUserBufferLogicalAddr,