From 681e8c744a7902d5584905ba4486574fdc78a172 Mon Sep 17 00:00:00 2001 From: jzlv Date: Tue, 17 Jan 2023 16:15:49 +0800 Subject: [PATCH] [fix][flash] revert bl808 flash config --- drivers/soc/bl808/std/port/bl808_flash.c | 133 ++--------------------- 1 file changed, 11 insertions(+), 122 deletions(-) diff --git a/drivers/soc/bl808/std/port/bl808_flash.c b/drivers/soc/bl808/std/port/bl808_flash.c index 7cca9340..3f8be629 100644 --- a/drivers/soc/bl808/std/port/bl808_flash.c +++ b/drivers/soc/bl808/std/port/bl808_flash.c @@ -4,103 +4,7 @@ #include "bflb_flash.h" static uint32_t g_jedec_id = 0; -static SPI_Flash_Cfg_Type g_flash_cfg = { - .resetCreadCmd = 0xff, - .resetCreadCmdSize = 3, - .mid = 0xc8, - - .deBurstWrapCmd = 0x77, - .deBurstWrapCmdDmyClk = 0x3, - .deBurstWrapDataMode = SF_CTRL_DATA_4_LINES, - .deBurstWrapData = 0xF0, - - /* reg */ - .writeEnableCmd = 0x06, - .wrEnableIndex = 0x00, - .wrEnableBit = 0x01, - .wrEnableReadRegLen = 0x01, - - .qeIndex = 1, - .qeBit = 0x01, - .qeWriteRegLen = 0x02, - .qeReadRegLen = 0x1, - - .busyIndex = 0, - .busyBit = 0x00, - .busyReadRegLen = 0x1, - .releasePowerDown = 0xab, - - .readRegCmd[0] = 0x05, - .readRegCmd[1] = 0x35, - .writeRegCmd[0] = 0x01, - .writeRegCmd[1] = 0x01, - - .fastReadQioCmd = 0xeb, - .frQioDmyClk = 16 / 8, - .cReadSupport = 0, - .cReadMode = 0xa0, - - .burstWrapCmd = 0x77, - .burstWrapCmdDmyClk = 0x3, - .burstWrapDataMode = SF_CTRL_DATA_4_LINES, - .burstWrapData = 0x40, - /* erase */ - .chipEraseCmd = 0xc7, - .sectorEraseCmd = 0x20, - .blk32EraseCmd = 0x52, - .blk64EraseCmd = 0xd8, - /* write */ - .pageProgramCmd = 0x02, - .qpageProgramCmd = 0x32, - .qppAddrMode = SF_CTRL_ADDR_1_LINE, - - .ioMode = 0x10, - .clkDelay = 0, - .clkInvert = 0x03, - - .resetEnCmd = 0x66, - .resetCmd = 0x99, - .cRExit = 0xff, - .wrEnableWriteRegLen = 0x00, - - /* id */ - .jedecIdCmd = 0x9f, - .jedecIdCmdDmyClk = 0, - .enter32BitsAddrCmd = 0xb7, - .exit32BitsAddrCmd = 0xe9, - .sectorSize = 4, - .pageSize = 256, - - /* read */ - .fastReadCmd = 0x0b, - .frDmyClk = 8 / 8, - .qpiFastReadCmd = 0x0b, - .qpiFrDmyClk = 8 / 8, - .fastReadDoCmd = 0x3b, - .frDoDmyClk = 8 / 8, - .fastReadDioCmd = 0xbb, - .frDioDmyClk = 0, - .fastReadQoCmd = 0x6b, - .frQoDmyClk = 8 / 8, - - .qpiFastReadQioCmd = 0xeb, - .qpiFrQioDmyClk = 16 / 8, - .qpiPageProgramCmd = 0x02, - .writeVregEnableCmd = 0x50, - - /* qpi mode */ - .enterQpi = 0x38, - .exitQpi = 0xff, - - /* AC */ - .timeEsector = 500, - .timeE32k = 2000, - .timeE64k = 2000, - .timePagePgm = 5, - .timeCe = 33 * 1000, - .pdDelay = 20, - .qeData = 0, -}; +static SPI_Flash_Cfg_Type g_flash_cfg; /** * @brief flash_get_clock_delay @@ -135,30 +39,6 @@ static int flash_get_clock_delay(SPI_Flash_Cfg_Type *cfg) return 0; } -/** - * @brief flash_set_cmds - * - * @return int - */ -static int ATTR_TCM_SECTION flash_set_cmds(SPI_Flash_Cfg_Type *p_flash_cfg) -{ - SF_Ctrl_Cmds_Cfg cmds_cfg = { - .ackLatency = 1, - .cmdsCoreEn = 1, - .cmdsEn = 1, - .cmdsWrapMode = 1, - .cmdsWrapLen = 9, - }; - - if ((p_flash_cfg->ioMode & 0x0f) == SF_CTRL_QO_MODE || (p_flash_cfg->ioMode & 0x0f) == SF_CTRL_QIO_MODE) { - cmds_cfg.cmdsWrapMode = 2; - cmds_cfg.cmdsWrapLen = 2; - } - SF_Ctrl_Cmds_Set(&cmds_cfg, 0); - - return 0; -} - /** * @brief flash_set_qspi_enable * @@ -218,7 +98,6 @@ static int ATTR_TCM_SECTION flash_config_init(SPI_Flash_Cfg_Type *p_flash_cfg, u } /* Set flash controler from p_flash_cfg */ - flash_set_cmds(p_flash_cfg); flash_set_qspi_enable(p_flash_cfg); flash_set_l1c_wrap(p_flash_cfg); XIP_SFlash_State_Restore(p_flash_cfg, offset, 0, 0); @@ -237,6 +116,7 @@ int ATTR_TCM_SECTION bflb_flash_init(void) { int ret = -1; uint32_t jedec_id = 0; + uintptr_t flag; jedec_id = GLB_Get_Flash_Id_Value(); if (jedec_id != 0) { @@ -248,6 +128,15 @@ int ATTR_TCM_SECTION bflb_flash_init(void) } } + flag = bflb_irq_save(); + L1C_ICache_Invalid_All(); + SF_Cfg_Get_Flash_Cfg_Need_Lock_Ext(0, &g_flash_cfg, 0, 0); + L1C_ICache_Invalid_All(); + bflb_irq_restore(flag); + if (g_flash_cfg.mid != 0xff) { + flash_get_clock_delay(&g_flash_cfg); + return 0; + } ret = flash_config_init(&g_flash_cfg, (uint8_t *)&jedec_id);