This commit is contained in:
刘可亮
2024-01-27 08:47:24 +08:00
parent d3bd993b5f
commit 9f7ba67007
2345 changed files with 74421 additions and 76616 deletions

View File

@@ -14,34 +14,19 @@
#include "aic_osal.h"
#include "sdmc_disk.h"
#include "block_dev.h"
#include "hexdump.h"
#include "mmc.h"
/*******************************************************************************
* Definitons
******************************************************************************/
/*******************************************************************************
* Prototypes
******************************************************************************/
/*******************************************************************************
* Variables
******************************************************************************/
struct aic_sdmc *g_sdmc_host = NULL;
static struct rt_device_blk_geometry info = {0};
/*******************************************************************************
* Code
******************************************************************************/
DRESULT sdmc_disk_write(uint8_t pdrv, const char *device_name, const uint8_t *buf, uint32_t sector, uint8_t cnt)
DRESULT sdmc_disk_write(void *hdisk, const uint8_t *buf, uint32_t sector, uint8_t cnt)
{
struct block_dev *dev = hdisk;
rt_size_t size = 0;
if (!g_sdmc_host)
if (!dev)
return RES_NOTRDY;
size = mmc_bwrite(g_sdmc_host, sector, cnt, buf);
size = block_write(dev, sector, cnt, (u8 *)buf);
if (size != cnt) {
pr_err("write() return %d/%d\n", size, cnt);
return RES_ERROR;
@@ -50,14 +35,15 @@ DRESULT sdmc_disk_write(uint8_t pdrv, const char *device_name, const uint8_t *bu
return RES_OK;
}
DRESULT sdmc_disk_read(uint8_t pdrv, const char *device_name, uint8_t *buf, uint32_t sector, uint8_t cnt)
DRESULT sdmc_disk_read(void *hdisk, uint8_t *buf, uint32_t sector, uint8_t cnt)
{
struct block_dev *dev = hdisk;
rt_size_t size = 0;
if (!g_sdmc_host)
if (!dev)
return RES_NOTRDY;
size = mmc_bread(g_sdmc_host, sector, cnt, buf);
size = block_read(dev, sector, cnt, buf);
if (size != cnt) {
pr_err("read() return %d/%d\n", size, cnt);
return RES_ERROR;
@@ -66,14 +52,18 @@ DRESULT sdmc_disk_read(uint8_t pdrv, const char *device_name, uint8_t *buf, uint
return RES_OK;
}
DRESULT sdmc_disk_ioctl(uint8_t pdrv, const char *device_name, uint8_t command, void *buf)
DRESULT sdmc_disk_ioctl(void *hdisk, uint8_t command, void *buf)
{
struct block_dev *dev = hdisk;
DRESULT result = RES_OK;
if (!dev)
return RES_NOTRDY;
switch (command) {
case GET_SECTOR_COUNT:
if (buf) {
*(uint32_t *)buf = info.sector_count;
*(uint32_t *)buf = dev->blk_cnt;
} else {
result = RES_PARERR;
}
@@ -82,7 +72,7 @@ DRESULT sdmc_disk_ioctl(uint8_t pdrv, const char *device_name, uint8_t command,
case GET_SECTOR_SIZE:
if (buf) {
*(uint32_t *)buf = info.bytes_per_sector;
*(uint32_t *)buf = dev->blk_size;
} else {
result = RES_PARERR;
}
@@ -91,7 +81,7 @@ DRESULT sdmc_disk_ioctl(uint8_t pdrv, const char *device_name, uint8_t command,
case GET_BLOCK_SIZE:
if (buf) {
*(uint32_t *)buf = info.block_size;
*(uint32_t *)buf = dev->blk_size;
} else {
result = RES_PARERR;
}
@@ -110,20 +100,16 @@ DRESULT sdmc_disk_ioctl(uint8_t pdrv, const char *device_name, uint8_t command,
return result;
}
DSTATUS sdmc_disk_status(uint8_t pdrv, const char *device_name)
DSTATUS sdmc_disk_status(void *hdisk)
{
return RES_OK;
}
DSTATUS sdmc_disk_initialize(uint8_t pdrv, const char *device_name)
void *sdmc_disk_initialize(const char *device_name)
{
g_sdmc_host = find_mmc_dev_by_index(pdrv);
if (!g_sdmc_host)
return RES_NOTRDY;
struct block_dev *dev;
info.block_size = g_sdmc_host->dev->max_blk_size;
info.bytes_per_sector = info.block_size;
info.sector_count = g_sdmc_host->dev->card_capacity * 2; /* unit: block */
dev = block_get_device(device_name);
return RES_OK;
return dev;
}