1 /*
2  * Copyright (c) 2020-2021 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 #ifndef __CFIFLASH_H__
16 #define __CFIFLASH_H__
17 
18 #include "stdint.h"
19 
20 #define CFIFLASH_MAX_NUM            2
21 #define CFIFLASH_CAPACITY           (32 * 1024 * 1024)
22 #define CFIFLASH_ERASEBLK_SIZE      (128 * 1024 * 2)    /* fit QEMU of 2 banks  */
23 #define CFIFLASH_ERASEBLK_WORDS     (CFIFLASH_ERASEBLK_SIZE / sizeof(uint32_t))
24 #define CFIFLASH_ERASEBLK_WORDMASK  (~(CFIFLASH_ERASEBLK_WORDS - 1))
25 
26 /* Results of Flash Functions */
27 typedef enum {
28     FLASH_OK = 0,     /* 0: Successful */
29     FLASH_ERROR       /* 1: R/W Error */
30 } FLASH_DRESULT;
31 
32 unsigned CfiFlashSec2Bytes(unsigned sector);
33 
34 int CfiFlashQuery(uint32_t pdrv);
35 int32_t CfiFlashRead(uint32_t pdrv, uint32_t *buffer, uint32_t offset, uint32_t nbytes);
36 int32_t CfiFlashWrite(uint32_t pdrv, const uint32_t *buffer, uint32_t offset, uint32_t nbytes);
37 int32_t CfiFlashErase(uint32_t pdrv, uint32_t offset);
38 
39 #if (LOSCFG_SUPPORT_FATFS == 1)
40 #include "fatfs.h"
41 #include "ff_gen_drv.h"
42 
43 DiskioDrvTypeDef *GetCfiBlkOps(void);
44 #endif /* LOSCFG_SUPPORT_FATFS == 1 */
45 
46 #if (LOSCFG_SUPPORT_LITTLEFS == 1)
47 #include "lfs.h"
48 
49 int LittlefsDriverInit(void);
50 struct lfs_config* GetCfiLfsCfg(void);
51 #endif /* LOSCFG_SUPPORT_LITTLEFS == 1 */
52 
53 #endif /* __CFIFLASH_H__ */
54