mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-23 04:34:11 +08:00
mtd: rawnand: qcom: Update code word value for raw read
From QPIC V2 onwards there is a separate register to read
last code word "QPIC_NAND_READ_LOCATION_LAST_CW_n".
qcom_nandc_read_cw_raw() is used to read only one code word
at a time. If we will configure number of code words to 1 in
in QPIC_NAND_DEV0_CFG0 register then QPIC controller thinks
its reading the last code word, since from QPIC V2 onwards
we are having separate register to read the last code word,
we have to configure "QPIC_NAND_READ_LOCATION_LAST_CW_n"
register to fetch data from controller buffer to system
memory.
Fixes: 503ee5aad4
("mtd: rawnand: qcom: update last code word register")
Cc: stable@kernel.org
Signed-off-by: Md Sadre Alam <mdalam@codeaurora.org>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/linux-mtd/1630998357-1359-1-git-send-email-mdalam@codeaurora.org
This commit is contained in:
parent
6880fa6c56
commit
f60f574100
@ -1676,13 +1676,17 @@ qcom_nandc_read_cw_raw(struct mtd_info *mtd, struct nand_chip *chip,
|
||||
struct nand_ecc_ctrl *ecc = &chip->ecc;
|
||||
int data_size1, data_size2, oob_size1, oob_size2;
|
||||
int ret, reg_off = FLASH_BUF_ACC, read_loc = 0;
|
||||
int raw_cw = cw;
|
||||
|
||||
nand_read_page_op(chip, page, 0, NULL, 0);
|
||||
host->use_ecc = false;
|
||||
|
||||
if (nandc->props->qpic_v2)
|
||||
raw_cw = ecc->steps - 1;
|
||||
|
||||
clear_bam_transaction(nandc);
|
||||
set_address(host, host->cw_size * cw, page);
|
||||
update_rw_regs(host, 1, true, cw);
|
||||
update_rw_regs(host, 1, true, raw_cw);
|
||||
config_nand_page_read(chip);
|
||||
|
||||
data_size1 = mtd->writesize - host->cw_size * (ecc->steps - 1);
|
||||
@ -1711,7 +1715,7 @@ qcom_nandc_read_cw_raw(struct mtd_info *mtd, struct nand_chip *chip,
|
||||
nandc_set_read_loc(chip, cw, 3, read_loc, oob_size2, 1);
|
||||
}
|
||||
|
||||
config_nand_cw_read(chip, false, cw);
|
||||
config_nand_cw_read(chip, false, raw_cw);
|
||||
|
||||
read_data_dma(nandc, reg_off, data_buf, data_size1, 0);
|
||||
reg_off += data_size1;
|
||||
|
Loading…
Reference in New Issue
Block a user