Skip to content

Commit b61bb5b

Browse files
Ansuelmiquelraynal
authored andcommitted
mtd: rawnand: qcom: Fix broken OP_RESET_DEVICE command in qcom_misc_cmd_type_exec()
While migrating to exec_ops in commit a82990c ("mtd: rawnand: qcom: Add read/read_start ops in exec_op path"), OP_RESET_DEVICE command handling got broken unintentionally. Right now for the OP_RESET_DEVICE command, qcom_misc_cmd_type_exec() will simply return 0 without handling it. Even, if that gets fixed, an unnecessary FLASH_STATUS read descriptor command is being added in the middle and that seems to be causing the command to fail on IPQ806x devices. So let's fix the above two issues to make OP_RESET_DEVICE command working again. Fixes: a82990c ("mtd: rawnand: qcom: Add read/read_start ops in exec_op path") Cc: [email protected] Reviewed-by: Manivannan Sadhasivam <[email protected]> Signed-off-by: Christian Marangi <[email protected]> Signed-off-by: Miquel Raynal <[email protected]> Link: https://lore.kernel.org/linux-mtd/[email protected]
1 parent 4053caf commit b61bb5b

File tree

1 file changed

+3
-4
lines changed

1 file changed

+3
-4
lines changed

drivers/mtd/nand/raw/qcom_nandc.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2815,7 +2815,7 @@ static int qcom_misc_cmd_type_exec(struct nand_chip *chip, const struct nand_sub
28152815
host->cfg0_raw & ~(7 << CW_PER_PAGE));
28162816
nandc_set_reg(chip, NAND_DEV0_CFG1, host->cfg1_raw);
28172817
instrs = 3;
2818-
} else {
2818+
} else if (q_op.cmd_reg != OP_RESET_DEVICE) {
28192819
return 0;
28202820
}
28212821

@@ -2830,9 +2830,8 @@ static int qcom_misc_cmd_type_exec(struct nand_chip *chip, const struct nand_sub
28302830
nandc_set_reg(chip, NAND_EXEC_CMD, 1);
28312831

28322832
write_reg_dma(nandc, NAND_FLASH_CMD, instrs, NAND_BAM_NEXT_SGL);
2833-
(q_op.cmd_reg == OP_BLOCK_ERASE) ? write_reg_dma(nandc, NAND_DEV0_CFG0,
2834-
2, NAND_BAM_NEXT_SGL) : read_reg_dma(nandc,
2835-
NAND_FLASH_STATUS, 1, NAND_BAM_NEXT_SGL);
2833+
if (q_op.cmd_reg == OP_BLOCK_ERASE)
2834+
write_reg_dma(nandc, NAND_DEV0_CFG0, 2, NAND_BAM_NEXT_SGL);
28362835

28372836
write_reg_dma(nandc, NAND_EXEC_CMD, 1, NAND_BAM_NEXT_SGL);
28382837
read_reg_dma(nandc, NAND_FLASH_STATUS, 1, NAND_BAM_NEXT_SGL);

0 commit comments

Comments
 (0)