| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- /*
- * SPDX-FileCopyrightText: 2020-2022 Espressif Systems (Shanghai) CO LTD
- *
- * SPDX-License-Identifier: Apache-2.0
- */
- #include <stdint.h>
- #include "sdkconfig.h"
- #include "esp_err.h"
- #pragma once
- #ifdef __cplusplus
- extern "C" {
- #endif
- /**
- * @brief Structure for flash dummy bits.
- * For some flash chips, dummy bits are configurable under different conditions.
- */
- typedef struct {
- uint8_t dio_dummy;
- uint8_t dout_dummy;
- uint8_t qio_dummy;
- uint8_t qout_dummy;
- uint8_t fastrd_dummy;
- } spi_flash_hpm_dummy_conf_t;
- typedef enum {
- SPI_FLASH_HPM_CMD_NEEDED, // Means that in the certain condition, flash needs to enter the high performance mode by command.
- SPI_FLASH_HPM_DUMMY_NEEDED, // Means that in the certain condition, flash needs to enter the high performance mode by adjusting dummy.
- SPI_FLASH_HPM_WRITE_SR_NEEDED, // Means that in the certain condition, flash needs to enter the high performance mode by writing status register.
- SPI_FLASH_HPM_UNNEEDED, // Means that flash doesn't need to enter the high performance mode.
- SPI_FLASH_HPM_BEYOND_LIMIT, // Means that flash has no capability to meet that condition.
- } spi_flash_requirement_t;
- typedef void (*spi_flash_hpm_enable_fn_t)(void);
- typedef esp_err_t (*spi_flash_hpf_check_fn_t)(void);
- typedef void (*spi_flash_get_chip_dummy_fn_t)(spi_flash_hpm_dummy_conf_t *dummy_conf);
- typedef esp_err_t (*spi_flash_hpm_probe_fn_t)(uint32_t flash_id);
- typedef spi_flash_requirement_t (*spi_flash_hpm_chip_requirement_check_t)(uint32_t flash_id, uint32_t freq_mhz, int voltage_mv, int temperature);
- typedef struct __attribute__((packed))
- {
- const char *method; /* Flash HPM method */
- spi_flash_hpm_probe_fn_t probe;
- spi_flash_hpm_chip_requirement_check_t chip_hpm_requirement_check;
- spi_flash_hpm_enable_fn_t flash_hpm_enable;
- spi_flash_hpf_check_fn_t flash_hpf_check;
- spi_flash_get_chip_dummy_fn_t flash_get_dummy;
- } spi_flash_hpm_info_t;
- /**
- * @brief Enum for user to select valid wrap size.
- */
- typedef enum {
- FLASH_WRAP_SIZE_8B = 8,
- FLASH_WRAP_SIZE_16B = 16,
- FLASH_WRAP_SIZE_32B = 32,
- FLASH_WRAP_SIZE_64B = 64,
- } spi_flash_wrap_size_t;
- /**
- * @brief Probe flash wrap method
- *
- * @param flash_id Flash chip ID
- *
- * @return ESP_OK: If succeed
- */
- typedef esp_err_t (*spi_flash_wrap_probe_fn_t)(uint32_t flash_id);
- /**
- * @brief Set flash wrap
- *
- * @param wrap_size: wrap_size
- *
- * @return ESP_OK: If succeed
- */
- typedef esp_err_t (*spi_flash_wrap_set_fn_t)(spi_flash_wrap_size_t wrap_size);
- /**
- * @brief Clear flash wrap.
- *
- * @return ESP_OK: If succeed
- */
- typedef esp_err_t (*spi_flash_wrap_clr_fn_t)(void);
- typedef struct __attribute__((packed))
- {
- const char *method;
- spi_flash_wrap_probe_fn_t probe;
- spi_flash_wrap_set_fn_t chip_wrap_set;
- spi_flash_wrap_clr_fn_t chip_wrap_clr;
- } spi_flash_wrap_info_t;
- /**
- * Array of known flash chips and method to enable flash high performance mode.
- *
- * Users can override this array.
- */
- extern const spi_flash_hpm_info_t __attribute__((weak)) spi_flash_hpm_enable_list[];
- #ifdef __cplusplus
- }
- #endif
|