123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- #ifndef ZEPHYR_INCLUDE_DRIVERS_DISK_H_
- #define ZEPHYR_INCLUDE_DRIVERS_DISK_H_
- #include <kernel.h>
- #include <zephyr/types.h>
- #include <sys/dlist.h>
- #ifdef __cplusplus
- extern "C" {
- #endif
- #define DISK_IOCTL_GET_SECTOR_COUNT 1
- #define DISK_IOCTL_GET_SECTOR_SIZE 2
- #define DISK_IOCTL_GET_DISK_SIZE 3
- #define DISK_IOCTL_GET_ERASE_BLOCK_SZ 4
- #define DISK_IOCTL_CTRL_SYNC 5
- #define DISK_IOCTL_HW_DETECT 10
- #define DISK_IOCTL_ENTER_HIGH_SPEED 11
- #define DISK_IOCTL_EXIT_HIGH_SPEED 12
- #define DISK_IOCTL_HOTPLUG_PERIOD_DETECT 13
- #define DISK_STATUS_OK 0x00
- #define DISK_STATUS_UNINIT 0x01
- #define DISK_STATUS_NOMEDIA 0x02
- #define DISK_STATUS_WR_PROTECT 0x04
- struct disk_operations;
- struct disk_info {
-
- sys_dnode_t node;
-
- char *name;
- uint16_t sector_size;
- uint32_t sector_offset;
- uint32_t sector_cnt;
-
- const struct disk_operations *ops;
-
- const struct device *dev;
- };
- struct disk_operations {
- int (*init)(struct disk_info *disk);
- int (*status)(struct disk_info *disk);
- int (*read)(struct disk_info *disk, uint8_t *data_buf,
- uint32_t start_sector, uint32_t num_sector);
- int (*write)(struct disk_info *disk, const uint8_t *data_buf,
- uint32_t start_sector, uint32_t num_sector);
- int (*ioctl)(struct disk_info *disk, uint8_t cmd, void *buff);
- };
- int disk_access_register(struct disk_info *disk);
- int disk_access_unregister(struct disk_info *disk);
- struct disk_info *disk_access_get_di(const char *pdrv);
- #ifdef __cplusplus
- }
- #endif
- #endif
|