blob: bd9542110cfa4f8690f3c7d6dede305531aea7e1 [file] [log] [blame]
xf.li6c8fc1e2023-08-12 00:11:09 -07001/*******************************************************************************
2 * 版权所有 (C)2022, 中兴通讯股份有限公司。
3 *
4 * 文件名称: pub_flags.h
5 * 文件标识: pub_flags
6 * 内容摘要: zx298501芯片平台flags分区规划头文件
7 * 使用方法:
8 *
9 * 修改日期 版本号 修改标记 修改人 修改内容
10 * ------------------------------------------------------------------------------
11 * 2022/09/15 V1.0 Create 周国坡 创建
12 *
13 *******************************************************************************/
14
15#ifndef _MTD_API_H
16#define _MTD_API_H
17
18typedef enum
19{
20 DEVICE_MTD = 0,
21 DEVICE_ZFTL = 1,
22 DEVICE_MTD_BLOCK,
23} device_type_t;
24
25/**
26 * @brief 根据分区名查找分区设备文件路径
27 * @param partition_name 入参,分区名
28 * @param type 入参,设备类型
29 * @param out_mtd_path 出参,设备文件路径缓冲区
30 * @param out_mtd_path_len 入参,out_mtd_path数据缓冲区长度
31 * @return 成功返回0,失败返回-1
32 * @retval
33 * @note
34 * @warning
35 */
36extern int mtd_find(const char *i_parti_name, device_type_t type, char *out_mtd_path, unsigned int out_mtd_path_len);
37
38/**
39 * @brief 根据分区名获取mtd分区信息
40 * @param fd 入参,mtd分区文件fd
41 * @param info 出参,包括分区大小和擦除块大小
42 * @return 成功返回0,失败返回-1
43 * @retval
44 * @note fd为打开/dev/mtdN设备句柄
45 * @warning
46 */
47extern int mtd_get_info(int fd, struct mtd_info_user *info);
48
49/**
50 * @brief 判断block是否是坏块
51 * @param fd 入参,mtd分区文件fd
52 * @param offset 入参,mtd分区偏移位置,包含坏块
53 * @return 0表示非坏块,1表示坏块,-1表示失败
54 * @retval
55 * @note fd为打开/dev/mtdN设备句柄
56 * @warning
57 */
58extern int mtd_block_isbad(int fd, off_t offset);
59
60/**
61 * @brief 擦除指定分区
62 * @param partition_name 入参,分区名
63 * @return 成功返回0,失败返回-1
64 * @retval
65 * @note
66 * @warning
67 */
68extern int mtd_erase_partition(const char *partition_name);
69
70/**
71 * @brief 将指定镜像文件写到指定分区
72 * @param partition_name 入参,分区名
73 * @param image_file 入参,指定的镜像文件
74 * @return 成功返回0,失败返回-1
75 * @retval
76 * @note
77 * @warning 先要mtd_erase_partition函数擦除分区
78 */
79extern int mtd_write_partition(const char *partition_name, const char *image_file);
80
81/**
82 * @brief 擦除mtd分区指定位置数据
83 * @param fd 入参,mtd分区文件fd
84 * @param offset 入参,mtd分区偏移位置,包含坏块
85 * @return 成功返回0,失败返回-1
86 * @retval
87 * @note fd为打开/dev/mtdN设备句柄
88 * @warning
89 */
90extern int mtd_erase_offset(int fd, off_t offset);
91
92/**
93 * @brief 将数据写到mtd分区指定偏移位置
94 * @param fd 入参,mtd分区文件fd
95 * @param offset 入参,mtd分区偏移位置
96 * @param buf 入参,数据缓冲区
97 * @param count 入参,buf数据长度,不超过一个擦除块
98 * @return 成功返回写入数据长度,失败返回-1
99 * @retval
100 * @note fd为打开/dev/mtdN设备句柄
101 * @warning 先要mtd_erase_partition函数擦除分区
102 */
103extern ssize_t mtd_write_offset(int fd, off_t offset, const void *buf, size_t count);
104
105/**
106 * @brief 读取mtd分区指定偏移位置的数据
107 * @param fd 入参,mtd分区文件fd
108 * @param offset 入参,mtd分区偏移位置
109 * @param buf 出参,数据缓冲区
110 * @param count 入参,buf数据长度,不超过一个擦除块
111 * @return 成功返回读取数据长度,失败返回-1
112 * @retval
113 * @note fd为打开/dev/mtdN设备句柄
114 * @warning
115 */
116extern ssize_t mtd_read_offset(int fd, off_t offset, void *buf, size_t count);
117
118#endif /* _MTD_API_H */