\r
#include "scsi.h"\r
#include "scsiPhy.h"\r
-#include "trace.h"\r
#include "time.h"\r
#include "fpga.h"\r
#include "led.h"\r
// vector table.\r
void EXTI4_IRQHandler()\r
{\r
- traceIrq(trace_scsiResetISR);\r
-\r
// Make sure that interrupt flag is set\r
if (__HAL_GPIO_EXTI_GET_IT(GPIO_PIN_4) != RESET) {\r
\r
#endif\r
scsiSetDataCount(1);\r
\r
- trace(trace_spinPhyRxFifo);\r
while (!scsiPhyComplete() && likely(!scsiDev.resetFlag))\r
{\r
__WFE(); // Wait for event\r
{\r
// Prepare DMA transfer\r
dmaInProgress = 1;\r
- trace(trace_doRxSingleDMA);\r
\r
scsiTxDMAComplete = 1; // TODO not used much\r
scsiRxDMAComplete = 0; // TODO not used much\r
{\r
scsiReadDMA(data + i, chunk);\r
\r
- trace(trace_spinReadDMAPoll);\r
-\r
while (!scsiReadDMAPoll() && likely(!scsiDev.resetFlag))\r
{\r
};\r
assertFail();\r
}\r
#endif\r
- trace(trace_spinPhyTxFifo);\r
scsiPhyTx(value);\r
scsiPhyFifoFlip();\r
\r
scsiSetDataCount(1);\r
\r
- trace(trace_spinTxComplete);\r
while (!scsiPhyComplete() && likely(!scsiDev.resetFlag))\r
{\r
__WFE(); // Wait for event\r
{\r
// Prepare DMA transfer\r
dmaInProgress = 1;\r
- trace(trace_doTxSingleDMA);\r
\r
scsiTxDMAComplete = 0;\r
scsiRxDMAComplete = 1;\r
chunk = chunk & 0xFFFFFFF8;\r
scsiWriteDMA(data + i, chunk);\r
\r
- trace(trace_spinReadDMAPoll);\r
-\r
while (!scsiWriteDMAPoll() && likely(!scsiDev.resetFlag))\r
{\r
}\r
\r
void scsiPhyReset()\r
{\r
- trace(trace_scsiPhyReset);\r
if (dmaInProgress)\r
{\r
- trace(trace_spinDMAReset);\r
HAL_DMA_Abort(&memToFSMC);\r
HAL_DMA_Abort(&fsmcToMem);\r
\r