Patch "mtd: nand: qcom: fix read failure without complete bootchain" has been added to the 4.9-stable tree
This is a note to let you know that I've just added the patch titled
mtd: nand: qcom: fix read failure without complete bootchain
to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
mtd-nand-qcom-fix-read-failure-without-complete-bootchain.patch
and it can be found in the queue-4.9 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
d8a9b320a26c1ea28e51e4f3ecfb593d5aac2910Mon Sep 17 00:00:00 2001
From: Abhishek Sahu <[email protected]>
Date: Fri, 11 Aug 2017 17:09:16 +0530
Subject: mtd: nand: qcom: fix read failure without complete bootchain
From: Abhishek Sahu <[email protected]>
commit d8a9b320a26c1ea28e51e4f3ecfb593d5aac2910 upstream.
The NAND page read fails without complete boot chain since NAND_DEV_CMD_VLD value is not proper. The default power on reset value for this register is
0xe - ERASE_START_VALID | WRITE_START_VALID | READ_STOP_VALID
The READ_START_VALID should be enabled for sending PAGE_READ command. READ_STOP_VALID should be cleared since normal NAND page read does not require READ_STOP command.
--- drivers/mtd/nand/qcom_nandc.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-)
drivers/mtd/nand/qcom_nandc.c +12 -4
@@ -109,7 +109,11 @@#define READ_ADDR 0/* NAND_DEV_CMD_VLD bits */ -#define READ_START_VLD 0 +#define READ_START_VLD BIT(0) +#define READ_STOP_VLD BIT(1) +#define WRITE_START_VLD BIT(2) +#define ERASE_START_VLD BIT(3) +#define SEQ_READ_START_VLD BIT(4)/* NAND_EBI2_ECC_BUF_CFG bits */ #define NUM_STEPS 0
@@ -148,6 +152,10 @@#define FETCH_ID 0xb#define RESET_DEVICE 0xd +/* Default Value for NAND_DEV_CMD_VLD */ +#define NAND_DEV_CMD_VLD_VAL (READ_START_VLD | WRITE_START_VLD | \ + ERASE_START_VLD | SEQ_READ_START_VLD) +/* * the NAND controller performs reads/writes with ECC in 516 byte chunks. * the driver calls the chunks 'step' or 'codeword' interchangeably
@@ -672,8 +680,7 @@ static int nandc_param(struct qcom_nand_/* configure CMD1 and VLD for ONFI param probing */ nandc_set_reg (nandc,NAND_DEV_CMD_VLD , - (nandc->vld & ~(1 <<READ_START_VLD )) - |0 <<READ_START_VLD ); + (nandc->vld & ~READ_START_VLD ));nandc_set_reg (nandc,NAND_DEV_CMD1 , (nandc->cmd1 & ~(0xFF <<READ_ADDR )) |NAND_CMD_PARAM <<READ_ADDR );
@@ -1972,13 +1979,14 @@ static int qcom_nandc_setup(struct qcom_ {/* kill onenand */ nandc_write (nandc,SFLASHC_BURST_CFG ,0 ); +nandc_write (nandc,NAND_DEV_CMD_VLD ,NAND_DEV_CMD_VLD_VAL );/* enable ADM DMA */ nandc_write (nandc,NAND_FLASH_CHIP_SELECT ,DM_EN );/* save the original values of these registers */ nandc->cmd1 =nandc_read (nandc,NAND_DEV_CMD1 ); - nandc->vld =nandc_read (nandc,NAND_DEV_CMD_VLD ); + nandc->vld =NAND_DEV_CMD_VLD_VAL ;return 0 ; }
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/mtd-nand-qcom-fix-config-error-for-bch.patch queue-4.9/mtd-nand-qcom-fix-read-failure-without-complete-bootchain.patch