EZ-USB FX3 Technical Reference Manual, Document Number: 001-76074 Rev. *F 75
FX3 DMA Subsystem
(CY_U3P_LPP_EN_CONS_EVENT|CY_U3P_LPP_EN_CONS_INT) | (CY_U3P_LP-
P_EN_PROD_EVENT|CY_U3P_LPP_EN_PROD_INT)
);
dscr->size = ((size & (cTX_EN-1)) << CY_U3P_LPP_BYTE_COUNT_POS) | sc | CY_U3P_LP-
P_BUFFER_OCCUPIED;
}
else /* 0=RX: Device to SYSMEM */
{
dscr->sync = ( (CPU_SCK_NUM << CY_U3P_LPP_CONS_SCK_POS) | (CPU_IP_NUM << CY_U3P_LP-
P_CONS_IP_POS) |
(ch << CY_U3P_LPP_PROD_SCK_POS) | (id << CY_U3P_LPP_PROD_IP_POS) |
(CY_U3P_LPP_EN_CONS_EVENT|CY_U3P_LPP_EN_CONS_INT) | (CY_U3P_LP-
P_EN_PROD_EVENT|CY_U3P_LPP_EN_PROD_INT)
);
dscr->size = sc;
}
dscr->chain = (0xFFFFFFFF);
s->status |= CY_U3P_LPP_GO_ENABLE;
status = CY_FX3_BOOT_ERROR_TIMEOUT;
do
{
if (s->intr & CY_U3P_LPP_ERROR)
{
status = CY_FX3_BOOT_ERROR_XFER_FAILURE;
break;
}
UsbDelayFunction (100);
if (direction)
{
if (s->intr & CY_U3P_LPP_CONSUME_EVENT)
{
status = CY_FX3_BOOT_SUCCESS;
break;
}
}
else
{
if (s->intr & CY_U3P_LPP_PRODUCE_EVENT)
{
status = CY_FX3_BOOT_SUCCESS;
break;
}
}
if ((timeout != CY_FX3_BOOT_NO_WAIT) && (timeout != CY_FX3_BOOT_WAIT_FOREVER))
{
timeout --;
}
if (((epNum & 0x0F) == 0) && (IsNewCtrlRqtReceived ()))
{
/* This request has been aborted due to a new control request. Just reset
the USB socket and return an error. */