static void initBoardConfig(S2S_BoardConfig* config) {\r
memcpy(\r
config,\r
- (\r
+ (const void*)(\r
CY_FLASH_BASE +\r
(CY_FLASH_SIZEOF_ARRAY * (size_t) SCSI_CONFIG_ARRAY) +\r
(CY_FLASH_SIZEOF_ROW * SCSI_CONFIG_BOARD_ROW)\r
dbgHidBuffer[61] = sdCard.capacity;\r
\r
dbgHidBuffer[62] = FIRMWARE_VERSION >> 8;\r
- dbgHidBuffer[63] = FIRMWARE_VERSION;\r
+ dbgHidBuffer[63] = FIRMWARE_VERSION & 0xFF;\r
\r
USBFS_LoadInEP(USB_EP_DEBUG, (uint8 *)&dbgHidBuffer, sizeof(dbgHidBuffer));\r
usbDebugEpState = USB_DATA_SENT;\r
// Wait for the next DMA interrupt. It's beneficial to halt the\r
// processor to give the DMA controller more memory bandwidth to\r
// work with.\r
- int scsiBusy = 1;\r
- int sdBusy = 1;\r
+ int scsiBusy;\r
+ int sdBusy;\r
+ {\r
+ uint8_t intr = CyEnterCriticalSection();\r
+ scsiBusy = scsiDMABusy();\r
+ sdBusy = isSDDevice && sdDMABusy();\r
+ CyExitCriticalSection(intr);\r
+ }\r
while (scsiBusy && sdBusy && isSDDevice)\r
{\r
uint8_t intr = CyEnterCriticalSection();\r
static void spiFlash_read(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, uint8_t* buffer);
static void spiFlash_readAsync(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, uint8_t* buffer);
static int spiFlash_readAsyncPoll(S2S_Device* dev);
-static void spiFlash_write(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, uint8_t* buffer);
+static void spiFlash_write(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, const uint8_t* buffer);
SpiFlash spiFlash = {
{
nNOR_CS_Write(1); // Deselect
}
-static void spiFlash_write(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, uint8_t* buffer)
+static void spiFlash_write(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, const uint8_t* buffer)
{
// SpiFlash* spiFlash = (SpiFlash*)dev;
#include "time.h"\r
#include "trace.h"\r
\r
-const char* Notice = "Copyright (C) 2015-2018 Michael McMaster <michael@codesrc.com>";\r
+const char* Notice = "Copyright (C) 2015-2021 Michael McMaster <michael@codesrc.com>";\r
\r
int main()\r
{\r
}\r
\r
void\r
-scsiWriteDMA(const uint8* data, uint32 count)\r
+scsiWriteDMA(const uint8_t* data, uint32 count)\r
{\r
dmaSentCount = 0;\r
dmaTotalCount = count;\r
- dmaBuffer = data;\r
+ dmaBuffer = (uint8_t*) data;\r
\r
uint32_t singleCount = (count > MAX_DMA_BYTES) ? MAX_DMA_BYTES : count;\r
doTxSingleDMA(data, singleCount);\r
static void sd_read(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, uint8_t* buffer);\r
static void sd_readAsync(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, uint8_t* buffer);\r
static int sd_readAsyncPoll(S2S_Device* dev);\r
-static void sd_write(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, uint8_t* buffer);\r
+static void sd_write(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, const uint8_t* buffer);\r
\r
\r
// Global\r
}\r
\r
\r
-static void sd_write(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, uint8_t* buffer)\r
+static void sd_write(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, const uint8_t* buffer)\r
{\r
// TODO\r
}\r
void (*read)(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, uint8_t* buffer);
void (*readAsync)(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, uint8_t* buffer);
int (*readAsyncPoll)(S2S_Device* dev);
- void (*write)(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, uint8_t* buffer);
+ void (*write)(S2S_Device* dev, uint32_t sectorNumber, uint32_t count, const uint8_t* buffer);
MEDIA_STATE mediaState;
CONFIG_STOREDEVICE deviceType;