| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- /**
- * @file wm_flash.h
- *
- * @brief flash Driver module
- *
- * @author dave
- *
- * Copyright (c) 2015 Winner Microelectronics Co., Ltd.
- */
- #ifndef WM_FLASH_H
- #define WM_FLASH_H
- #include "wm_type_def.h"
- #include "wm_osal.h"
- #define TLS_FLS_STATUS_OK (0)
- #define TLS_FLS_STATUS_EINVAL (1)
- #define TLS_FLS_STATUS_EBUSY (2)
- #define TLS_FLS_STATUS_EPERM (3)
- #define TLS_FLS_STATUS_ENOSUPPORT (4)
- #define TLS_FLS_STATUS_EEXIST (5)
- #define TLS_FLS_STATUS_ENOMEM (6)
- #define TLS_FLS_STATUS_EOVERFLOW (7)
- #define TLS_FLS_STATUS_ENODEV (8)
- #define TLS_FLS_STATUS_EDEV (9)
- #define TLS_FLS_STATUS_EIO (10)
- #define TLS_FLS_STATUS_ENODRV (11)
- #define TLS_FLS_PARAM_TYPE_ID (0)
- #define TLS_FLS_PARAM_TYPE_SIZE (1)
- #define TLS_FLS_PARAM_TYPE_PAGE_SIZE (2)
- #define TLS_FLS_PARAM_TYPE_PROG_SIZE (3)
- #define TLS_FLS_PARAM_TYPE_SECTOR_SIZE (4)
- #define TLS_FLS_FLAG_UNDER_PROTECT (1<<0)
- #define TLS_FLS_FLAG_FAST_READ (1<<1)
- #define TLS_FLS_FLAG_AAAI (1<<2)
- #define FLS_CMD_READ_DEV_ID (0x9F) // read device id //(0x9f)
- /**
- * @struct fls_list list
- */
- struct fls_list
- {
- struct fls_list *next;
- struct fls_list *prev;
- };
- /**
- * @struct tls_fls_drv flash driver
- */
- struct tls_fls_drv
- {
- struct fls_list drv_list;
- u32 id;
- u32 total_size;
- u32 page_size;
- u32 program_size;
- u32 sector_size;
- u32 clock;
- u8 mode;
- u8 cs_active;
- u8 flags;
- int (*read) (u32, u8 *, u32);
- int (*fast_read) (u32, u8 *, u32);
- int (*page_write) (u32, u8 *);
- int (*erase) (u32);
- int (*chip_erase) (void);
- int (*probe)(u32 id);
- void (*remove) (void);
- };
- /**
- * @struct tls_fls flash
- */
- struct tls_fls
- {
- struct fls_list fls_drvs;
- struct tls_fls_drv *current_drv;
- tls_os_sem_t *fls_lock;
- };
- /**
- * @defgroup Driver_APIs Driver APIs
- * @brief Driver APIs
- */
- /**
- * @addtogroup Driver_APIs
- * @{
- */
- /**
- * @defgroup SPIFLASH_Driver_APIs SPI FLASH Driver APIs
- * @brief SPI FLASH driver APIs
- */
- /**
- * @addtogroup SPIFLASH_Driver_APIs
- * @{
- */
- /**
- * @brief This function is used to initial flash module structer.
- *
- * @param[in] None
- *
- * @retval TLS_FLS_STATUS_OK if init sucsess
- * @retval TLS_FLS_STATUS_EBUSY already inited
- * @retval TLS_FLS_STATUS_ENOMEM memory error
- *
- * @note None
- */
- int tls_spifls_init(void);
- /**
- * @brief This function is used to read data from the flash.
- *
- * @param[in] addr Specifies the starting address to read from
- * @param[in] buf Pointer to a byte array that is to be written.
- * @param[in] len length to read.
- *
- * @retval TLS_FLS_STATUS_OK if read sucsess
- * @retval TLS_FLS_STATUS_EIO if read fail
- *
- * @note None
- */
- int tls_spifls_read(u32 addr, u8 * buf, u32 len);
- /**
- * @brief This function is used to write data into the flash.
- *
- * @param[in] addr Specifies the starting address to write to.
- * @param[in] buf Pointer to a byte array that holds the data to be written.
- * @param[in] len length to write.
- *
- * @retval TLS_FLS_STATUS_OK if write flash success
- * @retval TLS_FLS_STATUS_EPERM if flash struct point is null
- * @retval TLS_FLS_STATUS_ENODRV if flash driver is not installed
- * @retval TLS_FLS_STATUS_EINVAL if argument is invalid
- * @retval TLS_FLS_STATUS_EIO if io error
- *
- * @note None
- */
- int tls_spifls_write(u32 addr, u8 * buf, u32 len);
- /**
- * @}
- */
- /**
- * @}
- */
- #endif /* WM_FLASH_H */
|