Files
6CAR/middleware/disk/disk_mmc.h
2026-04-18 09:16:58 +08:00

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_ */