aboutsummaryrefslogtreecommitdiffstats
path: root/os/hal/ports/SAMA
diff options
context:
space:
mode:
authorareviu <areviu.info@gmail.com>2018-05-06 14:49:44 +0000
committerareviu <areviu.info@gmail.com>2018-05-06 14:49:44 +0000
commita0c253d44da778e359c507c529a319f3f4d18b25 (patch)
treeb61931799dd63a4c504278b5570405095e0d9e00 /os/hal/ports/SAMA
parent7a53508f76c70cd5152bb66f36dbd39f0c7560b1 (diff)
downloadChibiOS-a0c253d44da778e359c507c529a319f3f4d18b25.tar.gz
ChibiOS-a0c253d44da778e359c507c529a319f3f4d18b25.tar.bz2
ChibiOS-a0c253d44da778e359c507c529a319f3f4d18b25.zip
moved ff and reliance-edge under binding folder
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@12008 110e8d01-0319-4d1e-a829-52ad28d1bb01
Diffstat (limited to 'os/hal/ports/SAMA')
-rw-r--r--os/hal/ports/SAMA/LLD/SDMMCv1/ch_sdmmc_ff.c314
-rw-r--r--os/hal/ports/SAMA/LLD/SDMMCv1/ch_sdmmc_reledge.c64
-rw-r--r--os/hal/ports/SAMA/LLD/SDMMCv1/ch_sdmmc_reledge.h14
-rw-r--r--os/hal/ports/SAMA/LLD/SDMMCv1/driver.mk10
-rw-r--r--os/hal/ports/SAMA/LLD/SDMMCv1/osassert.c62
-rw-r--r--os/hal/ports/SAMA/LLD/SDMMCv1/osbdev.c515
-rw-r--r--os/hal/ports/SAMA/LLD/SDMMCv1/osclock.c85
-rw-r--r--os/hal/ports/SAMA/LLD/SDMMCv1/osmutex.c108
-rw-r--r--os/hal/ports/SAMA/LLD/SDMMCv1/osoutput.c76
-rw-r--r--os/hal/ports/SAMA/LLD/SDMMCv1/ostask.c68
-rw-r--r--os/hal/ports/SAMA/LLD/SDMMCv1/redosdeviations.h245
-rw-r--r--os/hal/ports/SAMA/LLD/SDMMCv1/redostypes.h42
-rw-r--r--os/hal/ports/SAMA/LLD/SDMMCv1/redtypes.h98
-rw-r--r--os/hal/ports/SAMA/LLD/SDMMCv1/sama_sdmmc_conf.h8
14 files changed, 1 insertions, 1708 deletions
diff --git a/os/hal/ports/SAMA/LLD/SDMMCv1/ch_sdmmc_ff.c b/os/hal/ports/SAMA/LLD/SDMMCv1/ch_sdmmc_ff.c
deleted file mode 100644
index d4e98b885..000000000
--- a/os/hal/ports/SAMA/LLD/SDMMCv1/ch_sdmmc_ff.c
+++ /dev/null
@@ -1,314 +0,0 @@
-/* ----------------------------------------------------------------------------
- * SAM Software Package License
- * ----------------------------------------------------------------------------
- * Copyright (c) 2015, Atmel Corporation
- *
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * - Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the disclaimer below.
- *
- * Atmel's name may not be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
- * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
- * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- * ----------------------------------------------------------------------------
- */
-
-/* ----------------------------------------------------------------------------
- * This file is based on the template source file named diskio.c,
- * part of the FatFs Module R0.10b:
- * Low level disk I/O module skeleton for FatFs (C)ChaN, 2014
- * If a working storage control module is available, it should be
- * attached to the FatFs via a glue function rather than modifying it.
- * This is an example of glue functions to attach various existing
- * storage control modules to the FatFs module with a defined API.
- * ----------------------------------------------------------------------------
- */
-
-#include "hal.h"
-
-#if (HAL_USE_SDMMC == TRUE)
-#include "sama_sdmmc_lld.h"
-#if SDMMC_USE_FF_LIB == 1
-#include "ccportab.h"
-#include "ffconf.h"
-#include "diskio.h"
-
-#include <string.h>
-#include "sama_sdmmc_lld.h"
-#include "ch_sdmmc_device.h"
-#include "ch_sdmmc_sd.h"
-#include "ch_sdmmc_sdio.h"
-#include "ch_sdmmc_trace.h"
-/*----------------------------------------------------------------------------
- * Definitions
- *----------------------------------------------------------------------------*/
-
-/**
- * \brief Access the SD/MMC Library instances owned by the application.
- * Used upon calls from the FatFs Module.
- *
- * Shall be implemented by the application.
- */
-extern bool CC_WEAK sdmmcGetInstance(uint8_t index, SdmmcDriver **sdmmcp) ;
-
-/*----------------------------------------------------------------------------
- * Exported functions
- *----------------------------------------------------------------------------*/
-
-/**
- * \brief Initialize a Drive.
- * \param slot Physical drive number (0..).
- * \return Drive status flags; STA_NOINIT if the specified drive does not exist.
- */
-DSTATUS disk_initialize(BYTE slot)
-{
- SdmmcDriver *sdmmcp = NULL;
- uint8_t rc;
-
- if (!sdmmcGetInstance(slot, &sdmmcp))
- return STA_NOINIT;
-
-
- rc = SD_GetStatus(sdmmcp);
-
- if (rc == SDMMC_NOT_SUPPORTED)
- return STA_NODISK | STA_NOINIT;
-#if 0
- if (sdmmcp->state != MCID_IDLE )
- sdmmc_device_deInit(sdmmcp);
-
- /* FIXME a delay with the bus held off may be required by the device */
- rc = sdmmc_device_start(sdmmcp);
-
- if (rc == SDMMC_OK) {
- rc = sdmmc_device_identify(sdmmcp);
- }
-#endif
-
- return rc == SDMMC_OK ? 0 : STA_NOINIT;
-}
-
-/**
- * \brief Get Drive Status.
- * \param slot Physical drive number (0..).
- * \return Drive status flags; STA_NODISK if there is currently no device in
- * the specified slot.
- */
-DSTATUS disk_status(BYTE slot)
-{
- SdmmcDriver *sdmmcp = NULL;
- uint8_t rc;
-
- if (!sdmmcGetInstance(slot, &sdmmcp))
- return STA_NODISK | STA_NOINIT;
-
- rc = SD_GetStatus(sdmmcp);
-
- if (rc == SDMMC_NOT_SUPPORTED)
- return STA_NODISK | STA_NOINIT;
- else if (rc != SDMMC_OK)
- return STA_NOINIT;
- /* Well, no restriction on this drive */
- return 0;
-}
-
-/**
- * \brief Read Sector(s).
- * \param slot Physical drive number (0..).
- * \param buff Data buffer to store read data.
- * \param sector Sector address in LBA.
- * \param count Number of sectors to read.
- * \return Result code; RES_OK if successful.
- */
-DRESULT disk_read(BYTE slot, BYTE* buff, DWORD sector, UINT count)
-{
- SdmmcDriver *sdmmcp = NULL;
- DRESULT res;
- uint32_t blk_size, addr = sector, len = count;
- uint8_t rc;
-
- if (!sdmmcGetInstance(slot, &sdmmcp))
- return RES_PARERR;
-
- blk_size = sdmmcp->card.wBlockSize;
-
- if (blk_size == 0)
- return RES_NOTRDY;
-
- if (blk_size < FF_MIN_SS) {
- if (FF_MIN_SS % blk_size)
- return RES_PARERR;
- addr = sector * (FF_MIN_SS / blk_size);
- len = count * (FF_MIN_SS / blk_size);
- }
-
- if (count <= 1)
- rc = SD_ReadBlocks(sdmmcp, addr, buff, len);
- else
- rc = SD_Read(sdmmcp, addr, buff, len);
-
- if (rc == SDMMC_OK || rc == SDMMC_CHANGED)
- res = RES_OK;
- else if (rc == SDMMC_ERR_IO || rc == SDMMC_ERR_RESP || rc == SDMMC_ERR)
- res = RES_ERROR;
- else if (rc == SDMMC_NO_RESPONSE || rc == SDMMC_BUSY
- || rc == SDMMC_NOT_INITIALIZED || rc == SDMMC_LOCKED
- || rc == SDMMC_STATE || rc == SDMMC_USER_CANCEL)
- res = RES_NOTRDY;
- else if (rc == SDMMC_PARAM || rc == SDMMC_NOT_SUPPORTED)
- res = RES_PARERR;
- else
- res = RES_ERROR;
-
- return res;
-}
-
-#if !FF_FS_READONLY
-/**
- * \brief Write Sector(s).
- *
- * \param slot Physical drive number (0..).
- * \param buff Data to be written.
- * \param sector Sector address in LBA.
- * \param count Number of sectors to write.
- * \return Result code; RES_OK if successful.
- *
- * \note The FatFs module will issue multiple sector transfer request
- * (count > 1) to the disk I/O layer. The disk function should process
- * the multiple sector transfer properly. Do not translate it into
- * multiple single sector transfers to the media, or the data read/write
- * performance may be drastically decreased.
- */
-DRESULT disk_write(BYTE slot, const BYTE* buff, DWORD sector, UINT count)
-{
- SdmmcDriver *sdmmcp = NULL;
- DRESULT res;
- uint32_t blk_size, addr = sector, len = count;
- uint8_t rc;
-
- if (!sdmmcGetInstance(slot, &sdmmcp))
- return RES_PARERR;
-
- blk_size = sdmmcp->card.wBlockSize;
-
- if (blk_size < FF_MIN_SS) {
- if (FF_MIN_SS % blk_size)
- return RES_PARERR;
- addr = sector * (FF_MIN_SS / blk_size);
- len = count * (FF_MIN_SS / blk_size);
- }
- if (count <= 1)
- rc = SD_WriteBlocks(sdmmcp, addr, buff, len);
- else
- rc = SD_Write(sdmmcp, addr, buff, len);
-
- if (rc == SDMMC_OK || rc == SDMMC_CHANGED)
- res = RES_OK;
- else if (rc == SDMMC_ERR_IO || rc == SDMMC_ERR_RESP || rc == SDMMC_ERR)
- res = RES_ERROR;
- else if (rc == SDMMC_NO_RESPONSE || rc == SDMMC_BUSY
- || rc == SDMMC_NOT_INITIALIZED || rc == SDMMC_LOCKED
- || rc == SDMMC_STATE || rc == SDMMC_USER_CANCEL)
- res = RES_NOTRDY;
- else if (rc == SDMMC_PARAM || rc == SDMMC_NOT_SUPPORTED)
- res = RES_PARERR;
- else
- res = RES_ERROR;
- return res;
-}
-#endif /* _FS_READONLY */
-
-/**
- * \brief Miscellaneous Functions.
- * \param slot Physical drive number (0..).
- * \param cmd Control code.
- * \param buff Buffer to send/receive control data.
- * \return Result code; RES_OK if successful.
- */
-DRESULT disk_ioctl(BYTE slot, BYTE cmd, void* buff)
-{
- SdmmcDriver *sdmmcp = NULL;
- DRESULT res;
- DWORD *param_u32 = (DWORD *)buff;
- WORD *param_u16 = (WORD *)buff;
- uint32_t blk_size, blk_count;
-
- if (!sdmmcGetInstance(slot, &sdmmcp))
- return RES_PARERR;
-
- switch (cmd)
- {
- case CTRL_SYNC:
- /* SD/MMC devices do not seem to cache data beyond completion
- * of the write commands. Note that if _FS_READONLY is enabled,
- * this command is not needed. */
- res = RES_OK;
- break;
-
- case GET_SECTOR_COUNT:
- if (!buff)
- return RES_PARERR;
- blk_size = sdmmcp->card.wBlockSize;
- blk_count = sdmmcp->card.dwNbBlocks;
-
- if (blk_size < FF_MIN_SS)
- {
- if (FF_MIN_SS % blk_size)
- return RES_PARERR;
- *param_u32 = blk_count / (FF_MIN_SS / blk_size);
- }
- else
- *param_u32 = blk_count;
- res = RES_OK;
- break;
-
- case GET_SECTOR_SIZE:
- /* Note that if _MAX_SS equals _MIN_SS i.e. the drive does not
- * have to support several sector sizes, this command is not
- * needed. */
- if (!buff)
- return RES_PARERR;
- blk_size = sdmmcp->card.wBlockSize;
- *param_u16 = blk_size >= FF_MIN_SS ? blk_size : FF_MIN_SS;
- res = RES_OK;
- break;
-
- case GET_BLOCK_SIZE:
- if (!buff)
- return RES_PARERR;
- /* On SD/MMC devices, erase block size is the same as write
- * block size.
- * Hence, erasing as little as one sector is allowed. */
- *param_u32 = 1;
- res = RES_OK;
- break;
-
- case CTRL_TRIM:
- /* This TRIM-like command is not implemented.
- * It would be required if _USE_TRIM was enabled. */
- res = RES_PARERR;
- break;
-
- default:
- res = RES_PARERR;
- break;
- }
- return res;
-}
-#endif
-#endif
-
diff --git a/os/hal/ports/SAMA/LLD/SDMMCv1/ch_sdmmc_reledge.c b/os/hal/ports/SAMA/LLD/SDMMCv1/ch_sdmmc_reledge.c
deleted file mode 100644
index 31630c081..000000000
--- a/os/hal/ports/SAMA/LLD/SDMMCv1/ch_sdmmc_reledge.c
+++ /dev/null
@@ -1,64 +0,0 @@
-#include "hal.h"
-
-#if (HAL_USE_SDMMC == TRUE)
-
-#include "sama_sdmmc_lld.h"
-
-#include "ch_sdmmc_device.h"
-#include "ch_sdmmc_cmds.h"
-#include "ch_sdmmc_sdio.h"
-#include "ch_sdmmc_sd.h"
-#include "ch_sdmmc_mmc.h"
-
-#include "ch_sdmmc_reledge.h"
-
-eSDMMC_RC sd_mmc_test_unit_ready( SdmmcDriver *sdmmcp)
-{
-
- uint32_t rc;
-
- if (sdmmc_is_busy(sdmmcp))
- return SDMMC_BUSY;
-
- rc = SD_GetStatus(sdmmcp);
-
- if (rc != SDMMC_OK)
- {
- return rc;
- }
-
-
- if ( !(sdmmcp->card.bCardType == CARD_UNKNOWN) ) {
- return SDMMC_OK;
- }
- // It is not a memory card
- return SDMMC_ERR;
-
-}
-
-bool sd_mmc_is_write_protected(SdmmcDriver *sdmmcp)
-{
- uint32_t rc;
-
- rc = SD_GetWpStatus(sdmmcp);
-
- return (rc == SDMMC_LOCKED);
-}
-
-
-
-eSDMMC_RC sd_mmc_read_capacity(SdmmcDriver *sdmmcp, uint32_t *nb_sector)
-{
- // Return last sector address (-1)
- *nb_sector = sdmmcp->card.dwNbBlocks - 1;
-
- return sd_mmc_test_unit_ready(sdmmcp);
-}
-
-
-
-
-
-#endif
-
-
diff --git a/os/hal/ports/SAMA/LLD/SDMMCv1/ch_sdmmc_reledge.h b/os/hal/ports/SAMA/LLD/SDMMCv1/ch_sdmmc_reledge.h
deleted file mode 100644
index 04ed471cf..000000000
--- a/os/hal/ports/SAMA/LLD/SDMMCv1/ch_sdmmc_reledge.h
+++ /dev/null
@@ -1,14 +0,0 @@
-
-#ifndef CH_SDMMC_RELEDGE_H_
-#define CH_SDMMC_RELEDGE_H_
-
-
-
-
-extern eSDMMC_RC sd_mmc_test_unit_ready( SdmmcDriver *sdmmcp);
-extern bool sd_mmc_is_write_protected(SdmmcDriver *sdmmcp);
-extern eSDMMC_RC sd_mmc_read_capacity(SdmmcDriver *sdmmcp, uint32_t *nb_sector);
-
-
-
-#endif /* CH_SDMMC_RELEDGE_H_ */
diff --git a/os/hal/ports/SAMA/LLD/SDMMCv1/driver.mk b/os/hal/ports/SAMA/LLD/SDMMCv1/driver.mk
index 06bb80865..32695db51 100644
--- a/os/hal/ports/SAMA/LLD/SDMMCv1/driver.mk
+++ b/os/hal/ports/SAMA/LLD/SDMMCv1/driver.mk
@@ -4,15 +4,7 @@ PLATFORMSRC += $(CHIBIOS)/os/hal/ports/SAMA/LLD/SDMMCv1/sama_sdmmc_lld.c \
$(CHIBIOS)/os/hal/ports/SAMA/LLD/SDMMCv1/ch_sdmmc_cmds.c \
$(CHIBIOS)/os/hal/ports/SAMA/LLD/SDMMCv1/ch_sdmmc_mmc.c \
$(CHIBIOS)/os/hal/ports/SAMA/LLD/SDMMCv1/ch_sdmmc_sd.c \
- $(CHIBIOS)/os/hal/ports/SAMA/LLD/SDMMCv1/ch_sdmmc.c \
- $(CHIBIOS)/os/hal/ports/SAMA/LLD/SDMMCv1/osassert.c \
- $(CHIBIOS)/os/hal/ports/SAMA/LLD/SDMMCv1/osoutput.c \
- $(CHIBIOS)/os/hal/ports/SAMA/LLD/SDMMCv1/osclock.c \
- $(CHIBIOS)/os/hal/ports/SAMA/LLD/SDMMCv1/osbdev.c \
- $(CHIBIOS)/os/hal/ports/SAMA/LLD/SDMMCv1/osmutex.c \
- $(CHIBIOS)/os/hal/ports/SAMA/LLD/SDMMCv1/ostask.c \
- $(CHIBIOS)/os/hal/ports/SAMA/LLD/SDMMCv1/ch_sdmmc_reledge.c \
- $(CHIBIOS)/os/hal/ports/SAMA/LLD/SDMMCv1/ch_sdmmc_ff.c
+ $(CHIBIOS)/os/hal/ports/SAMA/LLD/SDMMCv1/ch_sdmmc.c
PLATFORMINC += $(CHIBIOS)/os/hal/ports/SAMA/LLD/SDMMCv1
diff --git a/os/hal/ports/SAMA/LLD/SDMMCv1/osassert.c b/os/hal/ports/SAMA/LLD/SDMMCv1/osassert.c
deleted file mode 100644
index c4cc20497..000000000
--- a/os/hal/ports/SAMA/LLD/SDMMCv1/osassert.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/* ----> DO NOT REMOVE THE FOLLOWING NOTICE <----
-
- Copyright (c) 2014-2017 Datalight, Inc.
- All Rights Reserved Worldwide.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; use version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but "AS-IS," WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-*/
-/* Businesses and individuals that for commercial or other reasons cannot
- comply with the terms of the GPLv2 license may obtain a commercial license
- before incorporating Reliance Edge into proprietary software for
- distribution in any form. Visit http://www.datalight.com/reliance-edge for
- more information.
-*/
-/** @file
- @brief Implements assertion handling.
-*/
-#include "hal.h"
-#if (HAL_USE_SDMMC == TRUE)
-#include "sama_sdmmc_lld.h"
-#if SDMMC_USE_RELEDGE_LIB == 1
-#include <redfs.h>
-
-#if REDCONF_ASSERTS == 1
-
-#include <redosdeviations.h>
-
-
-/** @brief Invoke the native assertion handler.
-
- @param pszFileName Null-terminated string containing the name of the file
- where the assertion fired.
- @param ulLineNum Line number in @p pszFileName where the assertion
- fired.
-*/
-void RedOsAssertFail(
- const char *pszFileName,
- uint32_t ulLineNum)
-{
- #if REDCONF_OUTPUT == 1
- IGNORE_ERRORS(PRINT_ASSERT(pszFileName, ulLineNum));
- #endif
-
- while(true)
- {
- }
-}
-
-#endif
-
-#endif
-#endif
diff --git a/os/hal/ports/SAMA/LLD/SDMMCv1/osbdev.c b/os/hal/ports/SAMA/LLD/SDMMCv1/osbdev.c
deleted file mode 100644
index 645201521..000000000
--- a/os/hal/ports/SAMA/LLD/SDMMCv1/osbdev.c
+++ /dev/null
@@ -1,515 +0,0 @@
-/* ----> DO NOT REMOVE THE FOLLOWING NOTICE <----
-
- Copyright (c) 2014-2017 Datalight, Inc.
- All Rights Reserved Worldwide.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; use version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but "AS-IS," WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-*/
-/* Businesses and individuals that for commercial or other reasons cannot
- comply with the terms of the GPLv2 license may obtain a commercial license
- before incorporating Reliance Edge into proprietary software for
- distribution in any form. Visit http://www.datalight.com/reliance-edge for
- more information.
-*/
-/** @file
- @brief Implements block device I/O.
-*/
-#include "hal.h"
-
-#if (HAL_USE_SDMMC == TRUE)
-#include "sama_sdmmc_lld.h"
-#if SDMMC_USE_RELEDGE_LIB == 1
-
-#include "sama_sdmmc_lld.h"
-#include "ch_sdmmc_device.h"
-#include "ch_sdmmc_cmds.h"
-#include "ch_sdmmc_sdio.h"
-#include "ch_sdmmc_sd.h"
-#include "ch_sdmmc_mmc.h"
-#include "ch_sdmmc_reledge.h"
-
-#include <redfs.h>
-#include <redvolume.h>
-#include <redosdeviations.h>
-
-#if REDCONF_API_POSIX == 0
-#error "REDCONF_API_POSIX should be 1"
-#endif
-
-#if REDCONF_API_FSE == 1
-#error "REDCONF_API_FSE not supported, should be 0"
-#endif
-
-
-/* sd_mmc_mem_2_ram_multi() and sd_mmc_ram_2_mem_multi() use an unsigned
- 16-bit value to specify the sector count, so no transfer can be larger
- than UINT16_MAX sectors.
-*/
-#define MAX_SECTOR_TRANSFER UINT16_MAX
-
-
-/** @brief Initialize a disk.
-
- @param bVolNum The volume number of the volume whose block device is being
- initialized.
- @param mode The open mode, indicating the type of access required.
-
- @return A negated ::REDSTATUS code indicating the operation result.
-
- @retval 0 Operation was successful.
- @retval -RED_EIO A disk I/O error occurred.
- @retval -RED_EROFS The device is read-only media and write access was
- requested.
-*/
-static REDSTATUS DiskOpen(
- uint8_t bVolNum,
- BDEVOPENMODE mode)
-{
- REDSTATUS ret = 0;
- uint32_t ulTries;
-
-
- eSDMMC_RC cs;
-
- SdmmcDriver *sdmmcp = NULL;
-
-
- if (!sdmmcGetInstance(bVolNum, &sdmmcp))
- return RED_EINVAL;
-
- /* Note: Assuming the volume number is the same as the SD card slot. The
- ASF SD/MMC driver supports two SD slots. This implementation will need
- to be modified if multiple volumes share a single SD card.
- */
-
- /* The first time the disk is opened, the SD card can take a while to get
- ready, in which time sd_mmc_test_unit_ready() returns either CTRL_BUSY
- or CTRL_NO_PRESENT. Try numerous times, waiting half a second after
- each failure. Empirically, this has been observed to succeed on the
- second try, so trying 10x more than that provides a margin of error.
- */
- for(ulTries = 0U; ulTries < 20U; ulTries++)
- {
- cs = sd_mmc_test_unit_ready(sdmmcp);
-
- if((cs != SDMMC_OK) && (cs != SDMMC_BUSY))
- {
- break;
- }
-
- // t_msleep(sdmmcp,500);
- }
-
- if(cs == SDMMC_OK)
- {
- #if REDCONF_READ_ONLY == 0
- if(mode != BDEV_O_RDONLY)
- {
- if(sd_mmc_is_write_protected(sdmmcp))
- {
- ret = -RED_EROFS;
- }
- }
-
- if(ret == 0)
- #endif
- {
- uint32_t ulSectorLast;
-
- IGNORE_ERRORS(sd_mmc_read_capacity(sdmmcp, &ulSectorLast));
-
- /* The ASF SD/MMC driver only supports 512-byte sectors.
- */
- if( (gaRedVolConf[bVolNum].ulSectorSize != 512U)
- || (((uint64_t)ulSectorLast + 1U) < gaRedVolConf[bVolNum].ullSectorCount))
- {
- ret = -RED_EINVAL;
- }
- }
- }
- else
- {
- ret = -RED_EIO;
- }
-
- return ret;
-}
-
-
-/** @brief Uninitialize a disk.
-
- @param bVolNum The volume number of the volume whose block device is being
- uninitialized.
-
- @return A negated ::REDSTATUS code indicating the operation result.
-
- @retval 0 Operation was successful.
-*/
-static REDSTATUS DiskClose(
- uint8_t bVolNum)
-{
- (void)bVolNum;
- return 0;
-}
-
-
-/** @brief Read sectors from a disk.
-
- @param bVolNum The volume number of the volume whose block device
- is being read from.
- @param ullSectorStart The starting sector number.
- @param ulSectorCount The number of sectors to read.
- @param pBuffer The buffer into which to read the sector data.
-
- @return A negated ::REDSTATUS code indicating the operation result.
-
- @retval 0 Operation was successful.
-*/
-static REDSTATUS DiskRead(
- uint8_t bVolNum,
- uint64_t ullSectorStart,
- uint32_t ulSectorCount,
- void *pBuffer)
-{
- REDSTATUS ret = 0;
- uint8_t *pbBuffer = CAST_VOID_PTR_TO_UINT8_PTR(pBuffer);
-
- SdmmcDriver *sdmmcp = NULL;
- eSDMMC_RC cs;
-
- if (!sdmmcGetInstance(bVolNum, &sdmmcp))
- return RED_EINVAL;
-
- cs = SD_ReadBlocks(sdmmcp, ullSectorStart, pbBuffer,ulSectorCount);
-
- if(cs != SDMMC_OK)
- {
- ret = -RED_EIO;
- }
-
-
- return ret;
-}
-
-
-#if REDCONF_READ_ONLY == 0
-
-/** @brief Write sectors to a disk.
-
- @param bVolNum The volume number of the volume whose block device
- is being written to.
- @param ullSectorStart The starting sector number.
- @param ulSectorCount The number of sectors to write.
- @param pBuffer The buffer from which to write the sector data.
-
- @return A negated ::REDSTATUS code indicating the operation result.
-
- @retval 0 Operation was successful.
-*/
-static REDSTATUS DiskWrite(
- uint8_t bVolNum,
- uint64_t ullSectorStart,
- uint32_t ulSectorCount,
- const void *pBuffer)
-{
- REDSTATUS ret = 0;
- const uint8_t *pbBuffer = CAST_VOID_PTR_TO_CONST_UINT8_PTR(pBuffer);
-
- SdmmcDriver *sdmmcp = NULL;
- eSDMMC_RC cs;
-
- if (!sdmmcGetInstance(bVolNum, &sdmmcp))
- return RED_EINVAL;
-
-
- cs = SD_WriteBlocks(sdmmcp, ullSectorStart, pbBuffer, ulSectorCount);
- if(cs != SDMMC_OK)
- {
- ret = -RED_EIO;
- }
-
-
- return ret;
-}
-
-
-/** @brief Flush any caches beneath the file system.
-
- @param bVolNum The volume number of the volume whose block device is being
- flushed.
-
- @return A negated ::REDSTATUS code indicating the operation result.
-
- @retval 0 Operation was successful.
-*/
-static REDSTATUS DiskFlush(
- uint8_t bVolNum)
-{
- REDSTATUS ret;
-
- eSDMMC_RC cs;
-
- SdmmcDriver *sdmmcp = NULL;
-
-
- if (!sdmmcGetInstance(bVolNum, &sdmmcp))
- return RED_EINVAL;
-
- /* The ASF SD/MMC driver appears to write sectors synchronously, so it
- should be fine to do nothing and return success. However, Atmel's
- implementation of the FatFs diskio.c file does the equivalent of the
- below when the disk is flushed. Just in case this is important for some
- non-obvious reason, do the same.
- */
- cs = sd_mmc_test_unit_ready(sdmmcp);
- if(cs == SDMMC_OK)
- {
- ret = 0;
- }
- else
- {
- ret = -RED_EIO;
- }
-
- return ret;
-}
-
-
-#if REDCONF_DISCARDS == 1
-/** @brief Discard sectors on a disk.
-
- @param bVolNum The volume number of the volume whose block device
- is being accessed.
- @param ullSectorStart The starting sector number.
- @param ullSectorCount The number of sectors to discard.
-*/
-static void DiskDiscard(
- uint8_t bVolNum,
- uint64_t ullSectorStart,
- uint64_t ullSectorCount)
-{
-#error "this SD/MMC driver does not support discards."
-}
-#endif /* REDCONF_DISCARDS == 1 */
-
-#endif /* REDCONF_READ_ONLY == 0 */
-
-/** @brief Initialize a block device.
-
- This function is called when the file system needs access to a block
- device.
-
- Upon successful return, the block device should be fully initialized and
- ready to service read/write/flush/close requests.
-
- The behavior of calling this function on a block device which is already
- open is undefined.
-
- @param bVolNum The volume number of the volume whose block device is being
- initialized.
- @param mode The open mode, indicating the type of access required.
-
- @return A negated ::REDSTATUS code indicating the operation result.
-
- @retval 0 Operation was successful.
- @retval -RED_EINVAL @p bVolNum is an invalid volume number.
- @retval -RED_EIO A disk I/O error occurred.
-*/
-REDSTATUS RedOsBDevOpen(
- uint8_t bVolNum,
- BDEVOPENMODE mode)
-{
- REDSTATUS ret;
-
- if(bVolNum >= REDCONF_VOLUME_COUNT)
- {
- ret = -RED_EINVAL;
- }
- else
- {
- ret = DiskOpen(bVolNum, mode);
- }
-
- return ret;
-}
-
-
-/** @brief Uninitialize a block device.
-
- This function is called when the file system no longer needs access to a
- block device. If any resource were allocated by RedOsBDevOpen() to service
- block device requests, they should be freed at this time.
-
- Upon successful return, the block device must be in such a state that it
- can be opened again.
-
- The behavior of calling this function on a block device which is already
- closed is undefined.
-
- @param bVolNum The volume number of the volume whose block device is being
- uninitialized.
-
- @return A negated ::REDSTATUS code indicating the operation result.
-
- @retval 0 Operation was successful.
- @retval -RED_EINVAL @p bVolNum is an invalid volume number.
-*/
-REDSTATUS RedOsBDevClose(
- uint8_t bVolNum)
-{
- REDSTATUS ret;
-
- if(bVolNum >= REDCONF_VOLUME_COUNT)
- {
- ret = -RED_EINVAL;
- }
- else
- {
- ret = DiskClose(bVolNum);
- }
-
- return ret;
-}
-
-
-/** @brief Read sectors from a physical block device.
-
- The behavior of calling this function is undefined if the block device is
- closed or if it was opened with ::BDEV_O_WRONLY.
-
- @param bVolNum The volume number of the volume whose block device
- is being read from.
- @param ullSectorStart The starting sector number.
- @param ulSectorCount The number of sectors to read.
- @param pBuffer The buffer into which to read the sector data.
-
- @return A negated ::REDSTATUS code indicating the operation result.
-
- @retval 0 Operation was successful.
- @retval -RED_EINVAL @p bVolNum is an invalid volume number, @p pBuffer is
- `NULL`, or @p ullStartSector and/or @p ulSectorCount
- refer to an invalid range of sectors.
- @retval -RED_EIO A disk I/O error occurred.
-*/
-REDSTATUS RedOsBDevRead(
- uint8_t bVolNum,
- uint64_t ullSectorStart,
- uint32_t ulSectorCount,
- void *pBuffer)
-{
- REDSTATUS ret = 0;
-
- if( (bVolNum >= REDCONF_VOLUME_COUNT)
- || (ullSectorStart >= gaRedVolConf[bVolNum].ullSectorCount)
- || ((gaRedVolConf[bVolNum].ullSectorCount - ullSectorStart) < ulSectorCount)
- || (pBuffer == NULL))
- {
- ret = -RED_EINVAL;
- }
- else
- {
- ret = DiskRead(bVolNum, ullSectorStart, ulSectorCount, pBuffer);
- }
-
- return ret;
-}
-
-
-#if REDCONF_READ_ONLY == 0
-
-/** @brief Write sectors to a physical block device.
-
- The behavior of calling this function is undefined if the block device is
- closed or if it was opened with ::BDEV_O_RDONLY.
-
- @param bVolNum The volume number of the volume whose block device
- is being written to.
- @param ullSectorStart The starting sector number.
- @param ulSectorCount The number of sectors to write.
- @param pBuffer The buffer from which to write the sector data.
-
- @return A negated ::REDSTATUS code indicating the operation result.
-
- @retval 0 Operation was successful.
- @retval -RED_EINVAL @p bVolNum is an invalid volume number, @p pBuffer is
- `NULL`, or @p ullStartSector and/or @p ulSectorCount
- refer to an invalid range of sectors.
- @retval -RED_EIO A disk I/O error occurred.
-*/
-REDSTATUS RedOsBDevWrite(
- uint8_t bVolNum,
- uint64_t ullSectorStart,
- uint32_t ulSectorCount,
- const void *pBuffer)
-{
- REDSTATUS ret = 0;
-
- if( (bVolNum >= REDCONF_VOLUME_COUNT)
- || (ullSectorStart >= gaRedVolConf[bVolNum].ullSectorCount)
- || ((gaRedVolConf[bVolNum].ullSectorCount - ullSectorStart) < ulSectorCount)
- || (pBuffer == NULL))
- {
- ret = -RED_EINVAL;
- }
- else
- {
- ret = DiskWrite(bVolNum, ullSectorStart, ulSectorCount, pBuffer);
- }
-
- return ret;
-}
-
-
-/** @brief Flush any caches beneath the file system.
-
- This function must synchronously flush all software and hardware caches
- beneath the file system, ensuring that all sectors written previously are
- committed to permanent storage.
-
- If the environment has no caching beneath the file system, the
- implementation of this function can do nothing and return success.
-
- The behavior of calling this function is undefined if the block device is
- closed or if it was opened with ::BDEV_O_RDONLY.
-
- @param bVolNum The volume number of the volume whose block device is being
- flushed.
-
- @return A negated ::REDSTATUS code indicating the operation result.
-
- @retval 0 Operation was successful.
- @retval -RED_EINVAL @p bVolNum is an invalid volume number.
- @retval -RED_EIO A disk I/O error occurred.
-*/
-REDSTATUS RedOsBDevFlush(
- uint8_t bVolNum)
-{
- REDSTATUS ret;
-
- if(bVolNum >= REDCONF_VOLUME_COUNT)
- {
- ret = -RED_EINVAL;
- }
- else
- {
- ret = DiskFlush(bVolNum);
- }
-
- return ret;
-}
-
-#endif /* REDCONF_READ_ONLY == 0 */
-#endif
-
-#endif
diff --git a/os/hal/ports/SAMA/LLD/SDMMCv1/osclock.c b/os/hal/ports/SAMA/LLD/SDMMCv1/osclock.c
deleted file mode 100644
index e140e6e28..000000000
--- a/os/hal/ports/SAMA/LLD/SDMMCv1/osclock.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/* ----> DO NOT REMOVE THE FOLLOWING NOTICE <----
-
- Copyright (c) 2014-2017 Datalight, Inc.
- All Rights Reserved Worldwide.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; use version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but "AS-IS," WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-*/
-/* Businesses and individuals that for commercial or other reasons cannot
- comply with the terms of the GPLv2 license may obtain a commercial license
- before incorporating Reliance Edge into proprietary software for
- distribution in any form. Visit http://www.datalight.com/reliance-edge for
- more information.
-*/
-/** @file
- @brief Implements real-time clock functions.
-*/
-#include "hal.h"
-#if (HAL_USE_SDMMC == TRUE)
-#include "sama_sdmmc_lld.h"
-#if SDMMC_USE_RELEDGE_LIB == 1
-#include <redfs.h>
-
-
-/** @brief Initialize the real time clock.
-
- The behavior of calling this function when the RTC is already initialized
- is undefined.
-
- @return A negated ::REDSTATUS code indicating the operation result.
-
- @retval 0 Operation was successful.
-*/
-REDSTATUS RedOsClockInit(void)
-{
- return 0;
-}
-
-
-/** @brief Uninitialize the real time clock.
-
- The behavior of calling this function when the RTC is not initialized is
- undefined.
-
- @return A negated ::REDSTATUS code indicating the operation result.
-
- @retval 0 Operation was successful.
-*/
-REDSTATUS RedOsClockUninit(void)
-{
- return 0;
-}
-
-
-/** @brief Get the date/time.
-
- The behavior of calling this function when the RTC is not initialized is
- undefined.
-
- @return The number of seconds since January 1, 1970 excluding leap seconds
- (in other words, standard Unix time). If the resolution or epoch
- of the RTC is different than this, the implementation must convert
- it to the expected representation.
-*/
-uint32_t RedOsClockGetTime(void)
-{
- /* FreeRTOS does not provide an RTC abstraction since most of the systems
- it targets have no RTC hardware. If your hardware includes an RTC that
- you would like to use, this function must be customized.
- */
- return 0;
-}
-#endif
-#endif
-
diff --git a/os/hal/ports/SAMA/LLD/SDMMCv1/osmutex.c b/os/hal/ports/SAMA/LLD/SDMMCv1/osmutex.c
deleted file mode 100644
index b921a8aa9..000000000
--- a/os/hal/ports/SAMA/LLD/SDMMCv1/osmutex.c
+++ /dev/null
@@ -1,108 +0,0 @@
-/* ----> DO NOT REMOVE THE FOLLOWING NOTICE <----
-
- Copyright (c) 2014-2017 Datalight, Inc.
- All Rights Reserved Worldwide.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; use version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but "AS-IS," WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-*/
-/* Businesses and individuals that for commercial or other reasons cannot
- comply with the terms of the GPLv2 license may obtain a commercial license
- before incorporating Reliance Edge into proprietary software for
- distribution in any form. Visit http://www.datalight.com/reliance-edge for
- more information.
-*/
-/** @file
- @brief Implements a synchronization object to provide mutual exclusion.
-*/
-#include "ch.h"
-#include "hal.h"
-#if (HAL_USE_SDMMC == TRUE)
-#include "sama_sdmmc_lld.h"
-#if SDMMC_USE_RELEDGE_LIB == 1
-#include <redfs.h>
-#include <redosdeviations.h>
-
-#if REDCONF_TASK_COUNT > 1U
-
-
-static semaphore_t red_sem;
-
-
-/** @brief Initialize the mutex.
-
- After initialization, the mutex is in the released state.
-
- The behavior of calling this function when the mutex is still initialized
- is undefined.
-
- @return A negated ::REDSTATUS code indicating the operation result.
-
- @retval 0 Operation was successful.
-*/
-REDSTATUS RedOsMutexInit(void)
-{
- chSemObjectInit(&red_sem, 1);
-
- return 0;
-}
-
-
-/** @brief Uninitialize the mutex.
-
- The behavior of calling this function when the mutex is not initialized is
- undefined; likewise, the behavior of uninitializing the mutex when it is
- in the acquired state is undefined.
-
- @return A negated ::REDSTATUS code indicating the operation result.
-
- @retval 0 Operation was successful.
-*/
-REDSTATUS RedOsMutexUninit(void)
-{
- chSemReset(&red_sem, 0);
-
- return 0;
-}
-
-
-/** @brief Acquire the mutex.
-
- The behavior of calling this function when the mutex is not initialized is
- undefined; likewise, the behavior of recursively acquiring the mutex is
- undefined.
-*/
-void RedOsMutexAcquire(void)
-{
- chSemWaitTimeout(&red_sem, TIME_INFINITE);
-}
-
-
-/** @brief Release the mutex.
-
- The behavior is undefined in the following cases:
-
- - Releasing the mutex when the mutex is not initialized.
- - Releasing the mutex when it is not in the acquired state.
- - Releasing the mutex from a task or thread other than the one which
- acquired the mutex.
-*/
-void RedOsMutexRelease(void)
-{
- chSemSignal(&red_sem);
-}
-
-#endif
-#endif
-#endif
-
diff --git a/os/hal/ports/SAMA/LLD/SDMMCv1/osoutput.c b/os/hal/ports/SAMA/LLD/SDMMCv1/osoutput.c
deleted file mode 100644
index bff230522..000000000
--- a/os/hal/ports/SAMA/LLD/SDMMCv1/osoutput.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/* ----> DO NOT REMOVE THE FOLLOWING NOTICE <----
-
- Copyright (c) 2014-2017 Datalight, Inc.
- All Rights Reserved Worldwide.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; use version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but "AS-IS," WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-*/
-/* Businesses and individuals that for commercial or other reasons cannot
- comply with the terms of the GPLv2 license may obtain a commercial license
- before incorporating Reliance Edge into proprietary software for
- distribution in any form. Visit http://www.datalight.com/reliance-edge for
- more information.
-*/
-/** @file
- @brief Implements outputting a character string.
-*/
-#include "hal.h"
-#if (HAL_USE_SDMMC == TRUE)
-#include "sama_sdmmc_lld.h"
-#if SDMMC_USE_RELEDGE_LIB == 1
-#include <redfs.h>
-
-#if REDCONF_OUTPUT == 1
-
-#include <redosdeviations.h>
-
-
-/** @brief Write a string to a user-visible output location.
-
- Write a null-terminated string to the serial port, console, terminal, or
- other display device, such that the text is visible to the user.
-
- @param pszString A null-terminated string.
-*/
-void RedOsOutputString(
- const char *pszString)
-{
- if(pszString == NULL)
- {
- REDERROR();
- }
- else
- {
- uint32_t ulIdx = 0U;
-
- while(pszString[ulIdx] != '\0')
- {
- OUTPUT_CHARACTER(pszString[ulIdx]);
-
- /* Serial output often requires a \r to print newlines correctly.
- */
- if(pszString[ulIdx] == '\n')
- {
- OUTPUT_CHARACTER('\r');
- }
-
- ulIdx++;
- }
- }
-}
-
-#endif
-
-#endif
-#endif
diff --git a/os/hal/ports/SAMA/LLD/SDMMCv1/ostask.c b/os/hal/ports/SAMA/LLD/SDMMCv1/ostask.c
deleted file mode 100644
index f06f00f22..000000000
--- a/os/hal/ports/SAMA/LLD/SDMMCv1/ostask.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/* ----> DO NOT REMOVE THE FOLLOWING NOTICE <----
-
- Copyright (c) 2014-2017 Datalight, Inc.
- All Rights Reserved Worldwide.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; use version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but "AS-IS," WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-*/
-/* Businesses and individuals that for commercial or other reasons cannot
- comply with the terms of the GPLv2 license may obtain a commercial license
- before incorporating Reliance Edge into proprietary software for
- distribution in any form. Visit http://www.datalight.com/reliance-edge for
- more information.
-*/
-/** @file
- @brief Implements task functions.
-*/
-#include "ch.h"
-#include "hal.h"
-#if (HAL_USE_SDMMC == TRUE)
-#include "sama_sdmmc_lld.h"
-#if SDMMC_USE_RELEDGE_LIB == 1
-#include <redfs.h>
-
-#if (REDCONF_TASK_COUNT > 1U) && (REDCONF_API_POSIX == 1)
-
-#include <redosdeviations.h>
-
-
-/** @brief Get the current task ID.
-
- This task ID must be unique for all tasks using the file system.
-
- @return The task ID. Must not be 0.
-*/
-uint32_t RedOsTaskId(void)
-{
- /* Simply casting the xTaskGetCurrentTaskHandle() return value results in
- warnings from some compilers, so use variables.
- */
- thread_t* t= chThdGetSelfX();
- uintptr_t taskptr = CAST_TASK_PTR_TO_UINTPTR(t);
- uint32_t ulTaskPtr = (uint32_t)taskptr;
-
- /* Assert no information was lost casting from uintptr_t to uint32_t.
- */
- REDASSERT(ulTaskPtr == taskptr);
-
- /* NULL is a valid task handle in FreeRTOS, so add one to all task IDs.
- */
- REDASSERT((ulTaskPtr + 1U) != 0U);
- return ulTaskPtr + 1U;
-}
-
-#endif
-
-#endif
-#endif
diff --git a/os/hal/ports/SAMA/LLD/SDMMCv1/redosdeviations.h b/os/hal/ports/SAMA/LLD/SDMMCv1/redosdeviations.h
deleted file mode 100644
index b00fc4184..000000000
--- a/os/hal/ports/SAMA/LLD/SDMMCv1/redosdeviations.h
+++ /dev/null
@@ -1,245 +0,0 @@
-/* ----> DO NOT REMOVE THE FOLLOWING NOTICE <----
-
- Copyright (c) 2014-2017 Datalight, Inc.
- All Rights Reserved Worldwide.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; use version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but "AS-IS," WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-*/
-/* Businesses and individuals that for commercial or other reasons cannot
- comply with the terms of the GPLv2 license may obtain a commercial license
- before incorporating Reliance Edge into proprietary software for
- distribution in any form. Visit http://www.datalight.com/reliance-edge for
- more information.
-*/
-/** @file
- @brief Macros to encapsulate MISRA C:2012 deviations in OS-specific code.
-*/
-#ifndef REDOSDEVIATIONS_H
-#define REDOSDEVIATIONS_H
-
-
-#if REDCONF_OUTPUT == 1
-/* Needed for PRINT_ASSERT() and OUTPUT_CHARACTER().
-*/
-#include <stdio.h>
-#endif
-
-
-#if (REDCONF_ASSERTS == 1) && (REDCONF_OUTPUT == 1)
-/** @brief Print a formatted message for an assertion.
-
- Usages of this macro deviate from MISRA C:2012 Rule 21.6 (required). Using
- printf() is the most convenient way to output this information; and the risk
- of "unspecified, undefined and implementation-defined" behavior causing
- problems (as cited in the rationale for the rule) is small. The driver does
- not depend on this string being outputted correctly. Furthermore, use of
- printf() disappears when either asserts or output are disabled.
-
- As Rule 21.6 is required, a separate deviation record is required.
-*/
-#define PRINT_ASSERT(file, line) \
- printf("Assertion failed in \"%s\" at line %u\n\r", ((file) == NULL) ? "" : (file), (unsigned)(line))
-#endif
-
-
-/** @brief Cast a value to unsigned long.
-
- Usages of this macro deviate from MISRA C:2012 Directive 4.6. This macro is
- used in two places to cast a uint64_t value (used by the block device
- abstraction for sector numbers) to unsigned long, since third-party code
- which is not under the control of this project uses unsigned long for sector
- numbers. The cast is guaranteed to not lose any information, since when the
- disk is opened the sector count is verified to be less than or equal to an
- unsigned long value. The text of the directive mentions that "it might be
- desirable not to apply this guideline when interfacing with ... code outside
- the project's control", which describes the situation for this deviation.
-
- As Directive 4.6 is advisory, a deviation record is not required. This
- notice is the only record of the deviation.
-*/
-#define CAST_ULONG(ull) ((unsigned long)(ull))
-
-
-/** @brief Cast a const-qualified pointer to a pointer which is *not*
- const-qualified.
-
- Usages of this macro deviate from MISRA C:2012 Rule 11.8. This macro is
- used in exactly one place in order to cope with a poorly designed
- third-party interface. Reliance Edge, at every level of the stack, uses
- const-qualified pointers for buffers used in write operations, since the
- data is read from the buffer, and the buffer does not need to be modified
- (consistent with Rule 8.13). One of the third-party block device interfaces
- that Reliance Edge interfaces with does not follow this convention: it uses
- an unqualified pointer for the buffer parameter of its sector write
- function. This forces the need for the cast to avoid warnings. The
- implementation of the sector write function is provided by the user, so it
- is to be hoped that the buffer is not actually modified.
-
- As Rule 11.8 is required, a separate deviation record is required.
-*/
-#define CAST_AWAY_CONST(type, ptr) ((type *)(ptr))
-
-
-/** @brief Allocate zero-initialized (cleared) memory.
-
- All usages of this macro deviate from MISRA C:2012 Directive 4.12 (required)
- and Rule 21.3 (required). In the context of the single place it is actually
- used, this macro also deviates from Rule 22.1 (required).
-
- This macro is used in the FreeRTOS block device code in order to allocate a
- RAM disk, when that implementation of the block device is selected. The
- primary rationale for all these deviations is that a) the RAM disk cannot be
- allocated statically (since the volume information is stored in a
- structure), and b) the RAM disk is primarily intended as a temporary testing
- tool for users who want to try out Reliance Edge before the real storage
- media is available. In most real systems, Reliance Edge is used with
- non-volatile storage like SD/MMC or eMMC, not with RAM disks.
-
- Rule 22.1 states that all resources which are allocated must also be
- explicitly freed. The RAM disk is allocated and never freed, deviating from
- that rule. This is done because the data in the RAM disk is emulating a
- non-volatile storage medium, and thus needs to persist even after the block
- device is closed, to allow the file system to be ormatted and then mounted,
- or unmounted and remounted in the course of a test. Thus the memory will
- remain allocated until the target device is rebooted. This is assumed to be
- acceptable for the primary purpose of the RAM disk, which is preliminary
- testing.
-
- As Directive 4.12, Rule 21.3, and Rule 22.1 are all required, separate
- deviation records are required.
-*/
-#define ALLOCATE_CLEARED_MEMORY(nelem, elsize) calloc(nelem, elsize)
-
-
-#if REDCONF_OUTPUT == 1
-/** @brief Output a character to a serial port or other display device.
-
- Usages of this macro deviate from MISRA C:2012 Rule 21.6 (required).
- FreeRTOS does not include a standard method of printing characters, so
- putchar() is the most convenient and portable way to accomplish the task.
- The risk of "unspecified, undefined and implementation-defined" behavior
- causing problems (as cited in the rationale for the rule) is small. The
- driver does not depend on the character being outputted correctly.
- Furthermore, use of putchar() disappears when output is disabled.
-
- As Rule 21.6 is required, a separate deviation record is required.
-*/
-#define OUTPUT_CHARACTER(ch) (void)putchar(ch)
-#endif
-
-
-#if (REDCONF_TASK_COUNT > 1U) && (REDCONF_API_POSIX == 1)
-/** @brief Cast a TaskHandle_t (a pointer type) to uintptr_t.
-
- Usage of this macro deivate from MISRA-C:2012 Rule 11.4 (advisory). This
- macro is used for the FreeRTOS version of RedOsTaskId(). Some RTOSes
- natively use an integer for task IDs; others use pointers. RedOsTaskId()
- uses integers, FreeRTOS uses pointers; to reconcile this difference, the
- pointer must be cast to integer. This is fairly safe, since the resulting
- integer is never cast back to a pointer; and although the integer
- representation of a pointer is implementation-defined, the representation is
- irrelevant provided that unique pointers are converted to unique integers.
-
- As Rule 11.4 is advisory, a deviation record is not required. This notice
- is the only record of the deviation.
-*/
-#define CAST_TASK_PTR_TO_UINTPTR(taskptr) ((uintptr_t)(taskptr))
-#endif
-
-
-/** @brief Ignore the return value of a function (cast to void)
-
- Usages of this macro deviate from MISRA C:2012 Directive 4.7, which states
- that error information must be checked immediately after a function returns
- potential error information.
-
- If asserts and output are enabled, then this macro is used to document that
- the return value of printf() is ignored. A failure of printf() does not
- impact the filesystem core, nor is there anything the filesystem can do to
- respond to such an error (especially since it occurs within an assert).
- Thus, the most reasonable action is to ignore the error.
-
- In the STM32 SDIO block device implementation, errors are also ignored in an
- IRQ interrupt handler. This is the most reasonable action to take for two
- reasons: (a) it would be dangerous to spend processor time responding to the
- error inside the IRQ handler; (b) it has been verified that the same error
- is propegated to the DiskRead/Write method, which does return the error to
- the core.
-
- In the Atmel SD/MMC block device implementation, error information from
- sd_mmc_read_capacity() is ignored. This is a reasonable action because all
- of the possible error conditions were eliminated by a previous check.
- sd_mmc_read_capacity() fails under the same conditions as
- sd_mmc_test_unit_ready(), which was checked ealier in the same function.
-
- In the mutex module, error information returned from the mutex release
- function is ignored when asserts are disabled. This is a reasonable action
- because the mutex release function (xSemaphoreGive) is documented only to
- fail if the mutex was not obtained correctly, which can be demonstrably
- avoided.
-
- As Directive 4.7 is required, a separate deviation record is required.
-*/
-#define IGNORE_ERRORS(fn) ((void) (fn))
-
-
-/** @brief Determine whether a pointer is aligned on a 32-bit boundary.
-
- This is used to determine whether a data buffer meets the requirements of
- the underlying block device implementation. When transferring data via
- DMA (Direct Memory Access) on an STM32 device, the data buffer must be cast
- as a uint32 pointer, and unexpected behavior may occur if the buffer is not
- aligned correctly.
-
- There is no way to perform this check without deviating from MISRA C rules
- against casting pointers to integer types. Usage of this macro deviates
- from MISRA C:2012 Rule 11.4 (advisory). The main rationale the rule cites
- against converting pointers to integers is that the chosen integer type may
- not be able to represent the pointer; this is a non-issue here since we use
- uintptr_t. The text says the rule still applies when using uintptr_t due to
- concern about unaligned pointers, but that is not an issue here since the
- integer value of the pointer is not saved and not converted back into a
- pointer and dereferenced. The result of casting a pointer to a sufficiently
- large integer is implementation-defined, but macros similar to this one have
- been used by Datalight for a long time in a wide variety of environments and
- they have always worked as expected.
-
- This deviation only occurs when using the STM32 SDIO block device
- implementation.
-
- As Rule 11.4 is advisory, a deviation record is not required. This notice
- is the only record of deviation.
-*/
-#define IS_UINT32_ALIGNED_PTR(ptr) (((uintptr_t)(ptr) & (sizeof(uint32_t) - 1U)) == 0U)
-
-
-/** @brief Cast a 32-bit aligned void pointer to a uint32 pointer.
-
- Usages of this macro deviate from MISRA C:2012 Rule 11.5 (advisory). A
- cast from a void pointer to an object pointer is discouraged because of
- potential alignment issues. However, this macro is only used to cast
- pointers that have already been tested to be 32-bit aligned, so the
- operation will be safe.
-
- This deviation only occurs when using the STM32 SDIO block device
- implementation.
-
- As rule 11.5 is advisory, a deviation record is not required. This notice
- is the only record of the deviation.
-*/
-#define CAST_UINT32_PTR(ptr) ((uint32_t *) (ptr))
-
-
-#endif
-
diff --git a/os/hal/ports/SAMA/LLD/SDMMCv1/redostypes.h b/os/hal/ports/SAMA/LLD/SDMMCv1/redostypes.h
deleted file mode 100644
index 687b2d167..000000000
--- a/os/hal/ports/SAMA/LLD/SDMMCv1/redostypes.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* ----> DO NOT REMOVE THE FOLLOWING NOTICE <----
-
- Copyright (c) 2014-2017 Datalight, Inc.
- All Rights Reserved Worldwide.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; use version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but "AS-IS," WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-*/
-/* Businesses and individuals that for commercial or other reasons cannot
- comply with the terms of the GPLv2 license may obtain a commercial license
- before incorporating Reliance Edge into proprietary software for
- distribution in any form. Visit http://www.datalight.com/reliance-edge for
- more information.
-*/
-/** @file
- @brief Defines OS-specific types for use in common code.
-*/
-#ifndef REDOSTYPES_H
-#define REDOSTYPES_H
-
-
-/** @brief Implementation-defined timestamp type.
-
- This can be an integer, a structure, or a pointer: anything that is
- convenient for the implementation. Since the underlying type is not fixed,
- common code should treat this as an opaque type.
-*/
-typedef uint32_t REDTIMESTAMP;
-
-
-#endif
-
diff --git a/os/hal/ports/SAMA/LLD/SDMMCv1/redtypes.h b/os/hal/ports/SAMA/LLD/SDMMCv1/redtypes.h
deleted file mode 100644
index bb5606eef..000000000
--- a/os/hal/ports/SAMA/LLD/SDMMCv1/redtypes.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/* ----> DO NOT REMOVE THE FOLLOWING NOTICE <----
-
- Copyright (c) 2014-2017 Datalight, Inc.
- All Rights Reserved Worldwide.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; use version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but "AS-IS," WITHOUT ANY WARRANTY; without even the implied warranty
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-*/
-/* Businesses and individuals that for commercial or other reasons cannot
- comply with the terms of the GPLv2 license may obtain a commercial license
- before incorporating Reliance Edge into proprietary software for
- distribution in any form. Visit http://www.datalight.com/reliance-edge for
- more information.
-*/
-/** @file
- @brief Defines basic types used by Reliance Edge.
-
- The following types *must* be defined by this header, either directly (using
- typedef) or indirectly (by including other headers, such as the C99 headers
- stdint.h and stdbool.h):
-
- - bool: Boolean type, capable of storing true (1) or false (0)
- - uint8_t: Unsigned 8-bit integer
- - int8_t: Signed 8-bit integer
- - uint16_t: Unsigned 16-bit integer
- - int16_t: Signed 16-bit integer
- - uint32_t: Unsigned 32-bit integer
- - int32_t: Signed 32-bit integer
- - uint64_t: Unsigned 64-bit integer
- - int64_t: Signed 64-bit integer
- - uintptr_t: Unsigned integer capable of storing a pointer, preferably the
- same size as pointers themselves.
-
- These types deliberately use the same names as the standard C99 types, so
- that if the C99 headers stdint.h and stdbool.h are available, they may be
- included here.
-
- If the user application defines similar types, those may be reused. For
- example, suppose there is an application header apptypes.h which defines
- types with a similar purpose but different names. That header could be
- reused to define the types Reliance Edge needs:
-
- ~~~{.c}
- #include <apptypes.h>
-
- typedef BOOL bool;
- typedef BYTE uint8_t;
- typedef INT8 int8_t;
- // And so on...
- ~~~
-
- If there are neither C99 headers nor suitable types in application headers,
- this header should be populated with typedefs that define the required types
- in terms of the standard C types. This requires knowledge of the size of
- the C types on the target hardware (e.g., how big is an "int" or a pointer).
- Below is an example which assumes the target has 8-bit chars, 16-bit shorts,
- 32-bit ints, 32-bit pointers, and 64-bit long longs:
-
- ~~~{.c}
- typedef int bool;
- typedef unsigned char uint8_t;
- typedef signed char int8_t;
- typedef unsigned short uint16_t;
- typedef short int16_t;
- typedef unsigned int uint32_t;
- typedef int int32_t;
- typedef unsigned long long uint64_t;
- typedef long long int64_t;
- typedef uint32_t uintptr_t;
- ~~~
-*/
-#ifndef REDTYPES_H
-#define REDTYPES_H
-
-#include "hal.h"
-
-/* Defines bool.
-*/
-//#include <stdbool.h>
-
-/* Defines uint8_t, int8_t, uint16_t, int16_t, uint32_t, int32_t, uint64_t,
- int64_t, and uintptr_t.
-*/
-//#include <stdint.h>
-
-
-#endif
-
diff --git a/os/hal/ports/SAMA/LLD/SDMMCv1/sama_sdmmc_conf.h b/os/hal/ports/SAMA/LLD/SDMMCv1/sama_sdmmc_conf.h
index 74dde4632..9df0b5d9e 100644
--- a/os/hal/ports/SAMA/LLD/SDMMCv1/sama_sdmmc_conf.h
+++ b/os/hal/ports/SAMA/LLD/SDMMCv1/sama_sdmmc_conf.h
@@ -24,13 +24,5 @@
#endif
-#ifndef SDMMC_USE_FF_LIB
-#define SDMMC_USE_FF_LIB 1
-#endif
-
-#ifndef SDMMC_USE_RELEDGE_LIB
-#define SDMMC_USE_RELEDGE_LIB 1
-#endif
-
#endif //SAMA_SDMMC_CONF_H