46 lines
1.3 KiB
C
46 lines
1.3 KiB
C
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
#ifndef CTS_SPI_FLASH_H
|
|
#define CTS_SPI_FLASH_H
|
|
|
|
struct cts_flash {
|
|
const char *name;
|
|
u32 jedec_id; /* Device ID by command 0x9F */
|
|
size_t page_size; /* Page size by command 0x02 */
|
|
size_t sector_size; /* Sector size by command 0x20 */
|
|
|
|
/* Block size by command 0x52,
|
|
* if 0 means block erase NOT supported
|
|
*/
|
|
size_t block_size;
|
|
size_t total_size;
|
|
|
|
};
|
|
|
|
#define CTS_FLASH_READ_DEFAULT_RETRY (3)
|
|
#define CTS_FLASH_ERASE_DEFAULT_RETRY (3)
|
|
|
|
struct cts_device;
|
|
|
|
extern int cts_prepare_flash_operation(struct cts_device *cts_dev);
|
|
extern int cts_post_flash_operation(struct cts_device *cts_dev);
|
|
|
|
extern int cts_read_flash_retry(struct cts_device *cts_dev,
|
|
u32 flash_addr, void *dst, size_t size, int retry);
|
|
static inline int cts_read_flash(struct cts_device *cts_dev,
|
|
u32 flash_addr, void *dst, size_t size)
|
|
{
|
|
return cts_read_flash_retry(cts_dev, flash_addr, dst, size,
|
|
CTS_FLASH_READ_DEFAULT_RETRY);
|
|
}
|
|
|
|
extern int cts_erase_flash(struct cts_device *cts_dev, u32 addr,
|
|
size_t size);
|
|
|
|
extern int cts_program_flash(struct cts_device *cts_dev,
|
|
u32 flash_addr, const void *src, size_t size);
|
|
extern int cts_program_flash_from_sram(struct cts_device *cts_dev,
|
|
u32 flash_addr, u32 sram_addr, size_t size);
|
|
|
|
#endif /* CTS_SPI_FLASH_H */
|