From 20236a8a990cae729bca1f7a4e0d619e92a5e37d Mon Sep 17 00:00:00 2001 From: Damien George Date: Sat, 20 Dec 2014 21:15:16 +0000 Subject: stmhal: Upgrade to latest fatfs driver. --- stmhal/fatfs/src/drivers/sd_diskio.c | 252 ----------------------------------- 1 file changed, 252 deletions(-) delete mode 100644 stmhal/fatfs/src/drivers/sd_diskio.c (limited to 'stmhal/fatfs/src/drivers/sd_diskio.c') diff --git a/stmhal/fatfs/src/drivers/sd_diskio.c b/stmhal/fatfs/src/drivers/sd_diskio.c deleted file mode 100644 index 53461fe65..000000000 --- a/stmhal/fatfs/src/drivers/sd_diskio.c +++ /dev/null @@ -1,252 +0,0 @@ -/** - ****************************************************************************** - * @file sd_diskio.c - * @author MCD Application Team - * @version V1.0.0 - * @date 18-February-2014 - * @brief SD Disk I/O driver - ****************************************************************************** - * @attention - * - *

© COPYRIGHT 2014 STMicroelectronics

- * - * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); - * You may not use this file except in compliance with the License. - * You may obtain a copy of the License at: - * - * http://www.st.com/software_license_agreement_liberty_v2 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ****************************************************************************** - */ - -/* Includes ------------------------------------------------------------------*/ -#include -#include "ff_gen_drv.h" - -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ -/* Block Size in Bytes */ -#define BLOCK_SIZE 512 - -/* Private variables ---------------------------------------------------------*/ -/* Disk status */ -static volatile DSTATUS Stat = STA_NOINIT; - -/* Private function prototypes -----------------------------------------------*/ -DSTATUS SD_initialize (void); -DSTATUS SD_status (void); -DRESULT SD_read (BYTE*, DWORD, BYTE); -#if _USE_WRITE == 1 - DRESULT SD_write (const BYTE*, DWORD, BYTE); -#endif /* _USE_WRITE == 1 */ -#if _USE_IOCTL == 1 - DRESULT SD_ioctl (BYTE, void*); -#endif /* _USE_IOCTL == 1 */ - -Diskio_drvTypeDef SD_Driver = -{ - SD_initialize, - SD_status, - SD_read, -#if _USE_WRITE == 1 - SD_write, -#endif /* _USE_WRITE == 1 */ - -#if _USE_IOCTL == 1 - SD_ioctl, -#endif /* _USE_IOCTL == 1 */ -}; - -/* Private functions ---------------------------------------------------------*/ - -/** - * @brief Initializes a Drive - * @param None - * @retval DSTATUS: Operation status - */ -DSTATUS SD_initialize(void) -{ - Stat = STA_NOINIT; - - /* Configure the uSD device */ - if(BSP_SD_Init() == MSD_OK) - { - Stat &= ~STA_NOINIT; - } - - return Stat; -} - -/** - * @brief Gets Disk Status - * @param None - * @retval DSTATUS: Operation status - */ -DSTATUS SD_status(void) -{ - Stat = STA_NOINIT; - - if(BSP_SD_GetStatus() == 0) - { - Stat &= ~STA_NOINIT; - } - - return Stat; -} - -/** - * @brief Reads Sector(s) - * @param *buff: Data buffer to store read data - * @param sector: Sector address (LBA) - * @param count: Number of sectors to read (1..128) - * @retval DRESULT: Operation result - */ -DRESULT SD_read(BYTE *buff, DWORD sector, BYTE count) -{ - uint32_t timeout = 100000; - DWORD scratch [BLOCK_SIZE / 4]; /* Alignment ensured, need enough stack */ - uint8_t SD_state = MSD_OK; - - if ((DWORD)buff & 3) /* DMA Alignment issue, do single up to aligned buffer */ - { - while (count--) - { - SD_state = BSP_SD_ReadBlocks_DMA((uint32_t*)scratch, (uint64_t) ((sector + count) * BLOCK_SIZE), BLOCK_SIZE, 1); - - while(BSP_SD_GetStatus() != SD_TRANSFER_OK) - { - if (timeout-- == 0) - { - return RES_ERROR; - } - } - memcpy (&buff[count * BLOCK_SIZE] ,scratch, BLOCK_SIZE); - } - } - else - { - SD_state = BSP_SD_ReadBlocks_DMA((uint32_t*)buff, (uint64_t) (sector * BLOCK_SIZE), BLOCK_SIZE, count); - - while(BSP_SD_GetStatus() != SD_TRANSFER_OK) - { - if (timeout-- == 0) - { - return RES_ERROR; - } - } - } - if (SD_state == MSD_OK) - { - return RES_OK; - } - - return RES_ERROR; -} - -/** - * @brief Writes Sector(s) - * @param *buff: Data to be written - * @param sector: Sector address (LBA) - * @param count: Number of sectors to write (1..128) - * @retval DRESULT: Operation result - */ -#if _USE_WRITE == 1 -DRESULT SD_write(const BYTE *buff, DWORD sector, BYTE count) -{ - uint32_t timeout = 100000; - DWORD scratch [BLOCK_SIZE / 4]; /* Alignment ensured, need enough stack */ - uint8_t SD_state = MSD_OK; - - if ((DWORD)buff & 3) /* DMA Alignment issue, do single up to aligned buffer */ - { - while (count--) - { - memcpy (scratch, &buff[count * BLOCK_SIZE], BLOCK_SIZE); - - SD_state = BSP_SD_WriteBlocks_DMA((uint32_t*)scratch, (uint64_t)((sector + count) * BLOCK_SIZE), BLOCK_SIZE, 1); - - while(BSP_SD_GetStatus() != SD_TRANSFER_OK) - { - if (timeout-- == 0) - { - return RES_ERROR; - } - } - } - } - else - { - SD_state = BSP_SD_WriteBlocks_DMA((uint32_t*)buff, (uint64_t)(sector * BLOCK_SIZE), BLOCK_SIZE, count); - - while(BSP_SD_GetStatus() != SD_TRANSFER_OK) - { - if (timeout-- == 0) - { - return RES_ERROR; - } - } - } - if (SD_state == MSD_OK) - { - return RES_OK; - } - - return RES_ERROR; -} -#endif /* _USE_WRITE == 1 */ - -/** - * @brief I/O control operation - * @param cmd: Control code - * @param *buff: Buffer to send/receive control data - * @retval DRESULT: Operation result - */ -#if _USE_IOCTL == 1 -DRESULT SD_ioctl(BYTE cmd, void *buff) -{ - DRESULT res = RES_ERROR; - HAL_SD_CardInfoTypedef CardInfo; - - if (Stat & STA_NOINIT) return RES_NOTRDY; - - switch (cmd) - { - /* Make sure that no pending write process */ - case CTRL_SYNC : - res = RES_OK; - break; - - /* Get number of sectors on the disk (DWORD) */ - case GET_SECTOR_COUNT : - BSP_SD_GetCardInfo(&CardInfo); - *(DWORD*)buff = CardInfo.CardCapacity / BLOCK_SIZE; - res = RES_OK; - break; - - /* Get R/W sector size (WORD) */ - case GET_SECTOR_SIZE : - *(WORD*)buff = BLOCK_SIZE; - res = RES_OK; - break; - - /* Get erase block size in unit of sector (DWORD) */ - case GET_BLOCK_SIZE : - *(DWORD*)buff = BLOCK_SIZE; - break; - - default: - res = RES_PARERR; - } - - return res; -} -#endif /* _USE_IOCTL == 1 */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ - -- cgit v1.2.3