74 lines
1.8 KiB
C
74 lines
1.8 KiB
C
/**
|
|
* @file disk_mmc.h
|
|
*
|
|
* Copyright (c) 2021 Semidrive Semiconductor.
|
|
* All rights reserved.
|
|
*
|
|
* Description:
|
|
*
|
|
* Revision History:
|
|
* -----------------
|
|
*/
|
|
|
|
#ifndef DISK_MMC_H_
|
|
#define DISK_MMC_H_
|
|
|
|
#include <disk.h>
|
|
#include <lib/list.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <types.h>
|
|
|
|
/**
|
|
* @brief disk mmc ioctl cmds.
|
|
*/
|
|
typedef enum {
|
|
MMC_IOCTL_PON = 0x1, /* mmc ioctl Power Off Notification */
|
|
} disk_mmc_ioctl_cmd;
|
|
|
|
typedef enum {
|
|
MMC_IOCTL_NO_PON = 0x0,
|
|
MMC_IOCTL_PON_ON = 0x1,
|
|
MMC_IOCTL_PON_OFF_SHORT = 0x2,
|
|
MMC_IOCTL_PON_OFF_LONG = 0x3,
|
|
MMC_IOCTL_PON_SLEEP = 0x4,
|
|
} disk_mmc_ioctl_pon_value;
|
|
|
|
struct disk_mmc_config {
|
|
/* disk device name */
|
|
char *disk_name;
|
|
|
|
/* disk attribute */
|
|
disk_size_t disk_size;
|
|
uint32_t erase_size;
|
|
/* write & read sector size */
|
|
uint32_t sector_size;
|
|
uint32_t scr_data_erase;
|
|
|
|
/* mmc device ops API */
|
|
/* write & read:addr is block addr,count is block num */
|
|
/* erase & read:addr is block addr,size is len */
|
|
void *mmc_dev;
|
|
int (*mmc_read)(void *mmc_dev, uint8_t *dst, block_t block,
|
|
block_count_t count);
|
|
int (*mmc_write)(void *mmc_dev, const uint8_t *src, block_t block,
|
|
block_count_t count);
|
|
int (*mmc_erase)(void *mmc_dev, block_t block, block_count_t count);
|
|
int (*mmc_pon)(void *mmc_dev, uint32_t pon_type);
|
|
};
|
|
|
|
struct disk_mmc_info {
|
|
uint8_t *buff_sector;
|
|
uint32_t buff_size;
|
|
QueueHandle_t disk_mmc_mutex;
|
|
uint32_t mmc_max_xfer_size;
|
|
struct disk_mmc_config config;
|
|
struct disk_info info;
|
|
// struct disk_cache_noop cache_noop;
|
|
};
|
|
|
|
int register_mmc_disk(struct disk_mmc_info *mmc_info);
|
|
int unregister_mmc_disk(struct disk_mmc_info *mmc_info);
|
|
|
|
#endif /* DISK_MMC_H_ */
|