diff options
author | Dean Camera <[email protected]> | 2010-08-18 10:33:21 +0000 |
---|---|---|
committer | Dean Camera <[email protected]> | 2010-08-18 10:33:21 +0000 |
commit | 4f114e576694b6b49931d5f14874df6c361d4267 (patch) | |
tree | cba14b1e3024c7c252b4a1e2cc37c2b200e34042 /Demos/Device/ClassDriver/MassStorageKeyboard/Lib/DataflashManager.c | |
parent | f4de17207ea6a28a6947ed6f3170b6689a2619d0 (diff) | |
download | qmk_firmware-4f114e576694b6b49931d5f14874df6c361d4267.tar.gz qmk_firmware-4f114e576694b6b49931d5f14874df6c361d4267.zip |
Fixed MassStorage based demos and projects resetting the SCSI sense values before the command is executed, leading to missed SCSI sense values when the host retrieves the sense key (thanks to Martin Degelsegger).
Added missing DataflashManager_CheckDataflashOperation() function to the MassStorageKeyboard demo, removed redundant SCSI_Codes.h file as these values are part of the MassStorage Class Driver.
Diffstat (limited to 'Demos/Device/ClassDriver/MassStorageKeyboard/Lib/DataflashManager.c')
-rw-r--r-- | Demos/Device/ClassDriver/MassStorageKeyboard/Lib/DataflashManager.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/Demos/Device/ClassDriver/MassStorageKeyboard/Lib/DataflashManager.c b/Demos/Device/ClassDriver/MassStorageKeyboard/Lib/DataflashManager.c index 445082f247..ce2ac81514 100644 --- a/Demos/Device/ClassDriver/MassStorageKeyboard/Lib/DataflashManager.c +++ b/Demos/Device/ClassDriver/MassStorageKeyboard/Lib/DataflashManager.c @@ -498,3 +498,36 @@ void DataflashManager_ResetDataflashProtections(void) /* Deselect current Dataflash chip */ Dataflash_DeselectChip(); } + +/** Performs a simple test on the attached Dataflash IC(s) to ensure that they are working. + * + * \return Boolean true if all media chips are working, false otherwise + */ +bool DataflashManager_CheckDataflashOperation(void) +{ + uint8_t ReturnByte; + + /* Test first Dataflash IC is present and responding to commands */ + Dataflash_SelectChip(DATAFLASH_CHIP1); + Dataflash_SendByte(DF_CMD_READMANUFACTURERDEVICEINFO); + ReturnByte = Dataflash_ReceiveByte(); + Dataflash_DeselectChip(); + + /* If returned data is invalid, fail the command */ + if (ReturnByte != DF_MANUFACTURER_ATMEL) + return false; + + #if (DATAFLASH_TOTALCHIPS == 2) + /* Test second Dataflash IC is present and responding to commands */ + Dataflash_SelectChip(DATAFLASH_CHIP2); + Dataflash_SendByte(DF_CMD_READMANUFACTURERDEVICEINFO); + ReturnByte = Dataflash_ReceiveByte(); + Dataflash_DeselectChip(); + + /* If returned data is invalid, fail the command */ + if (ReturnByte != DF_MANUFACTURER_ATMEL) + return false; + #endif + + return true; +} |