g_puya_p25q32lc_enter_qspi_mode_cmd, NULL, &g_puya_p25q32lc_config },
{ FLASH_MANUFACTURER_MXIC_MX25U256, FLASH_SIZE_32MB, 0xA5, 0xAA, WAIT_CYCLES_4, 0x2B, 0xB0, 0x30,
g_mxic_mx25uxx_enter_qspi_mode_cmd, NULL, &g_mxic_mx25uxx_config },
- // { FLASH_MANUFACTURER_PUYA_PY25Q128LA, FLASH_SIZE_16MB, 0x38, 0xFF, WAIT_CYCLES_6, 0x48, 0x75, 0x7A,
- // g_puya_py25q128la_enter_qspi_mode_cmd, NULL, &g_puya_py25q128la_config },
{ FLASH_MANUFACTURER_PUYA_PY25Q128LA, FLASH_SIZE_16MB, 0x20, 0xFF, WAIT_CYCLES_4, 0x05, 0x75, 0x7A,
g_puya_py25q128la_enter_qspi_mode_cmd, NULL, &g_puya_py25q128la_config },
+ { FLASH_MANUFACTURER_HRT_ZB25LQ128C, FLASH_SIZE_16MB, 0x20, 0x0, WAIT_CYCLES_4, 0x05, 0x75, 0x7A,
+ g_hrt_zb25lq128c_enter_qspi_mode_cmd, NULL, &g_hrt_zb25lq128c_config },
+
};
static const uint32_t g_xip_use_cmd_mode[] = {
FLASH_MANUFACTURER_DOSILICON_DS25M4AB,
FLASH_MANUFACTURER_PUYA_P25Q64SL,
FLASH_MANUFACTURER_PUYA_PY25Q128LA,
+ FLASH_MANUFACTURER_HRT_ZB25LQ128C,
};
static flash_cmd_exe_t g_winbond_w25qxx_set_qe_cmd[] = {
{ FLASH_CMD_TYPE_END, HAL_SPI_FRAME_FORMAT_MAX_NUM, 0, { 0 } }
};
+static flash_cmd_exe_t g_hrt_zb25lq128c_set_qe_cmd[] = {
+ /* Check QE bit. */
+ { FLASH_CMD_TYPE_CHECK, HAL_SPI_FRAME_FORMAT_STANDARD, 3, { FLASH_RDSR2_CMD, 0x1, 0x2 } },
+ /* Write enable. */
+ { FLASH_CMD_TYPE_CMD, HAL_SPI_FRAME_FORMAT_STANDARD, 1, { FLASH_WREN_CMD } },
+ /* Write status register-2 to 0x2, set QE bit. */
+ { FLASH_CMD_TYPE_CMD, HAL_SPI_FRAME_FORMAT_STANDARD, 2, { 0x31, 0x02 } },
+ /* Waite config done. */
+ { FLASH_CMD_TYPE_PROCESSING, HAL_SPI_FRAME_FORMAT_STANDARD, 3, { FLASH_RDSR1_CMD, 0, 0 } },
+ /* Check QE bit. */
+ { FLASH_CMD_TYPE_PROCESSING, HAL_SPI_FRAME_FORMAT_STANDARD, 3, { FLASH_RDSR2_CMD, 0x1, 0x2 } },
+ /* End cmd, will not execute and need return. */
+ { FLASH_CMD_TYPE_END, HAL_SPI_FRAME_FORMAT_MAX_NUM, 0, { 0 } }
+};
static const flash_qe_config_t g_flash_need_set_qe[] = {
{FLASH_MANUFACTURER_WINBOND_W25Q32, g_winbond_w25qxx_set_qe_cmd},
{FLASH_MANUFACTURER_DOSILICON_DS25M4AB, g_winbond_w25qxx_set_qe_cmd},
{FLASH_MANUFACTURER_ELITE_EN25SX128A, g_winbond_en25sx128a_set_qe_cmd},
{FLASH_MANUFACTURER_XTX_XT25Q128D, g_xtx_xt25q128d_set_qe_cmd},
- {FLASH_MANUFACTURER_PUYA_PY25Q128LA, g_puya_py25q128la_set_qe_cmd}
+ {FLASH_MANUFACTURER_PUYA_PY25Q128LA, g_puya_py25q128la_set_qe_cmd},
+ {FLASH_MANUFACTURER_HRT_ZB25LQ128C, g_hrt_zb25lq128c_set_qe_cmd}
};
#define FLASH_WIP (bit(0))
{ FLASH_CMD_TYPE_END, HAL_SPI_FRAME_FORMAT_MAX_NUM, 0, { 0 } }
};
+/* HRT config. */
+/* PY25Q128LA PUYA flash config. */
+static flash_cmd_exe_t g_hrt_zb25lq128c_enter_qspi_mode_cmd[] = {
+ /* Write enable for Volatils status register. */
+ { FLASH_CMD_TYPE_CMD, HAL_SPI_FRAME_FORMAT_STANDARD, 1, { 0x50 } },
+ /* Write volatile configuration register,config XIP disable. */
+ { FLASH_CMD_TYPE_CMD, HAL_SPI_FRAME_FORMAT_STANDARD, 3, { 0x01, 0x00, 0x02 } },
+ /* Enable QPI. */
+ { FLASH_CMD_TYPE_CMD, HAL_SPI_FRAME_FORMAT_STANDARD, 1, { 0x38 } },
+ /* Set dummy 6, maxinum read freq 108MHZ. */
+ { FLASH_CMD_TYPE_CMD, HAL_SPI_FRAME_FORMAT_QUAD, 2, { 0xC0, 0x10} },
+ /* End cmd, will not execute and need return. */
+ { FLASH_CMD_TYPE_END, HAL_SPI_FRAME_FORMAT_MAX_NUM, 0, { 0 } }
+};
+
/* OTHERS enter xip mode config. */
/* Micro config. */
/* MT25QU128 Micro flash config. */
false,
false,
};
+
+/* HRT config. */
+/* ZB25LQ128C HRT flash config. */
+static flash_qspi_xip_config_t g_hrt_zb25lq128c_config = {
+ /* The config that before enter XIP mode. */
+ WAIT_CYCLES_6,
+ HAL_SPI_INST_LEN_8,
+ HAL_SPI_ADDR_LEN_24,
+ HAL_SPI_TRANS_TYPE_INST_Q_ADDR_Q,
+ /* The config that after enter XIP mode. */
+ WAIT_CYCLES_6,
+ HAL_SPI_INST_LEN_8,
+ HAL_SPI_ADDR_LEN_24,
+ HAL_SPI_TRANS_TYPE_INST_Q_ADDR_Q,
+ /* XIP 32bit addr & wrap config. */
+ false,
+ false,
+};
/**
* @}
*/