openwrt-redmi-ax3000/target/linux/ipq50xx/patches/406-mtd-rawnand-qcom-Update-bits-of-QPIC_NAND_FLASH_SPI_.patch

89 lines
3.1 KiB
Diff

From 47e22e1fc494cd7f11043f80819665d7203effa7 Mon Sep 17 00:00:00 2001
From: Md Sadre Alam <mdalam@codeaurora.org>
Date: Wed, 30 Dec 2020 02:23:30 +0530
Subject: [PATCH 6/7] mtd: rawnand: qcom: Update bits of
QPIC_NAND_FLASH_SPI_CFG reg
This change will update bits of QPIC_NAND_FLASH_SPI_CFG register
to select serial nand functionality in QPIC controller.
Signed-off-by: Md Sadre Alam <mdalam@codeaurora.org>
Change-Id: I643bb47b37cc326783d57d6c0f13618f8e216a37
Pick from https://git.codelinaro.org/clo/qsdk/oss/kernel/linux-ipq-5.4/-/commit/468d4aa56157d9e742a9eb90fe29b1eeb0151b60
Signed-off-by: hzy <hzyitc@outlook.com>
---
drivers/mtd/nand/raw/qcom_nandc.c | 17 +++++++++--------
1 file changed, 9 insertions(+), 8 deletions(-)
diff --git a/drivers/mtd/nand/raw/qcom_nandc.c b/drivers/mtd/nand/raw/qcom_nandc.c
index 0a6b67ddcda2..dc723a7ffa0e 100644
--- a/drivers/mtd/nand/raw/qcom_nandc.c
+++ b/drivers/mtd/nand/raw/qcom_nandc.c
@@ -62,7 +62,6 @@
#define NAND_READ_LOCATION_LAST_CW_3 0xf4c
#define NAND_QSPI_MSTR_CONFIG 0xf60
-
/* dummy register offsets, used by write_reg_dma */
#define NAND_DEV_CMD1_RESTORE 0xdead
#define NAND_DEV_CMD_VLD_RESTORE 0xbeef
@@ -2781,21 +2859,6 @@ static int qcom_nandc_setup(struct qcom_nand_controller *nandc)
return 0;
}
-static void qspi_write_reg_bam(struct qcom_nand_controller *nandc,
- unsigned int val, unsigned int reg)
-{
- int ret;
-
- clear_bam_transaction(nandc);
- nandc_set_reg(chip, reg, val);
- write_reg_dma(nandc, reg, 1, NAND_BAM_NEXT_SGL);
-
- ret = submit_descs(nandc);
- if (ret)
- dev_err(nandc->dev, "Error in submitting descriptor to write config reg\n");
- free_descs(nandc);
-}
-
static void qspi_nand_init(struct qcom_nand_controller *nandc)
{
u32 spi_cfg_val = 0x0;
@@ -2960,13 +2959,14 @@ static void qspi_nand_init(struct qcom_nand_controller *nandc)
u32 spi_cfg_val = 0x0;
u32 reg = 0x0;
- spi_cfg_val |= (LOAD_CLK_CNTR_INIT_EN | CLK_CNTR_INIT_VAL_VEC
- | FEA_STATUS_DEV_ADDR | SPI_CFG);
+ spi_cfg_val |= (LOAD_CLK_CNTR_INIT_EN | (CLK_CNTR_INIT_VAL_VEC << 16)
+ | (FEA_STATUS_DEV_ADDR << 8) | SPI_CFG);
- qspi_write_reg_bam(nandc, 0x0, NAND_FLASH_SPI_CFG);
- qspi_write_reg_bam(nandc, spi_cfg_val, NAND_FLASH_SPI_CFG);
+ reg = dev_cmd_reg_addr(nandc, NAND_FLASH_SPI_CFG);
+ nandc_write(nandc, reg, 0);
+ nandc_write(nandc, reg, spi_cfg_val);
spi_cfg_val &= ~LOAD_CLK_CNTR_INIT_EN;
- qspi_write_reg_bam(nandc, spi_cfg_val, NAND_FLASH_SPI_CFG);
+ nandc_write(nandc, reg, spi_cfg_val);
reg = dev_cmd_reg_addr(nandc, NAND_DEV_CMD0);
nandc_write(nandc, reg, CMD0_VAL);
@@ -2977,8 +2977,9 @@ static void qspi_nand_init(struct qcom_nand_controller *nandc)
reg = dev_cmd_reg_addr(nandc, NAND_DEV_CMD3);
nandc_write(nandc, reg, CMD3_VAL);
- qspi_write_reg_bam(nandc, SPI_NUM_ADDR, NAND_SPI_NUM_ADDR_CYCLES);
- qspi_write_reg_bam(nandc, WAIT_CNT, NAND_SPI_BUSY_CHECK_WAIT_CNT);
+ reg = dev_cmd_reg_addr(nandc, NAND_SPI_NUM_ADDR_CYCLES);
+ nandc_write(nandc, reg, SPI_NUM_ADDR);
+ nandc_write(nandc, reg + 4, WAIT_CNT);
}
static int qcom_nand_host_init_and_register(struct qcom_nand_controller *nandc,
--
2.25.1