All checks were successful
target_linux_generic / Update target_linux_generic (openwrt-25.12) (push) Successful in 8s
75 lines
2.7 KiB
Diff
75 lines
2.7 KiB
Diff
From 0dc7e656ddd54c3267b7cc18c1ac8ec1297ed02f Mon Sep 17 00:00:00 2001
|
|
From: Gabor Juhos <j4g8y7@gmail.com>
|
|
Date: Wed, 2 Jul 2025 14:35:23 +0200
|
|
Subject: mtd: nand: qpic-common: add defines for ECC_MODE values
|
|
|
|
Add defines for the values of the ECC_MODE field of the NAND_DEV0_ECC_CFG
|
|
register and change both the 'qcom-nandc' and 'spi-qpic-snand' drivers to
|
|
use those instead of magic numbers.
|
|
|
|
No functional changes. This is in preparation for adding 8 bit ECC strength
|
|
support for the 'spi-qpic-snand' driver.
|
|
|
|
Reviewed-by: Md Sadre Alam <quic_mdalam@quicinc.com>
|
|
Signed-off-by: Gabor Juhos <j4g8y7@gmail.com>
|
|
Acked-by: Miquel Raynal <miquel.raynal@bootlin.com>
|
|
Link: https://patch.msgid.link/20250702-qpic-snand-8bit-ecc-v2-1-ae2c17a30bb7@gmail.com
|
|
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
---
|
|
drivers/mtd/nand/raw/qcom_nandc.c | 6 +++---
|
|
drivers/spi/spi-qpic-snand.c | 2 +-
|
|
include/linux/mtd/nand-qpic-common.h | 2 ++
|
|
3 files changed, 6 insertions(+), 4 deletions(-)
|
|
|
|
--- a/drivers/mtd/nand/raw/qcom_nandc.c
|
|
+++ b/drivers/mtd/nand/raw/qcom_nandc.c
|
|
@@ -1379,7 +1379,7 @@ static int qcom_nand_attach_chip(struct
|
|
struct qcom_nand_controller *nandc = get_qcom_nand_controller(chip);
|
|
int cwperpage, bad_block_byte, ret;
|
|
bool wide_bus;
|
|
- int ecc_mode = 1;
|
|
+ int ecc_mode = ECC_MODE_8BIT;
|
|
|
|
/* controller only supports 512 bytes data steps */
|
|
ecc->size = NANDC_STEP_SIZE;
|
|
@@ -1400,7 +1400,7 @@ static int qcom_nand_attach_chip(struct
|
|
if (ecc->strength >= 8) {
|
|
/* 8 bit ECC defaults to BCH ECC on all platforms */
|
|
host->bch_enabled = true;
|
|
- ecc_mode = 1;
|
|
+ ecc_mode = ECC_MODE_8BIT;
|
|
|
|
if (wide_bus) {
|
|
host->ecc_bytes_hw = 14;
|
|
@@ -1420,7 +1420,7 @@ static int qcom_nand_attach_chip(struct
|
|
if (nandc->props->ecc_modes & ECC_BCH_4BIT) {
|
|
/* BCH */
|
|
host->bch_enabled = true;
|
|
- ecc_mode = 0;
|
|
+ ecc_mode = ECC_MODE_4BIT;
|
|
|
|
if (wide_bus) {
|
|
host->ecc_bytes_hw = 8;
|
|
--- a/drivers/spi/spi-qpic-snand.c
|
|
+++ b/drivers/spi/spi-qpic-snand.c
|
|
@@ -365,7 +365,7 @@ static int qcom_spi_ecc_init_ctx_pipelin
|
|
FIELD_PREP(ECC_SW_RESET, 0) |
|
|
FIELD_PREP(ECC_NUM_DATA_BYTES_MASK, ecc_cfg->cw_data) |
|
|
FIELD_PREP(ECC_FORCE_CLK_OPEN, 1) |
|
|
- FIELD_PREP(ECC_MODE_MASK, 0) |
|
|
+ FIELD_PREP(ECC_MODE_MASK, ECC_MODE_4BIT) |
|
|
FIELD_PREP(ECC_PARITY_SIZE_BYTES_BCH_MASK, ecc_cfg->ecc_bytes_hw);
|
|
|
|
ecc_cfg->ecc_buf_cfg = 0x203 << NUM_STEPS;
|
|
--- a/include/linux/mtd/nand-qpic-common.h
|
|
+++ b/include/linux/mtd/nand-qpic-common.h
|
|
@@ -101,6 +101,8 @@
|
|
#define ECC_SW_RESET BIT(1)
|
|
#define ECC_MODE 4
|
|
#define ECC_MODE_MASK GENMASK(5, 4)
|
|
+#define ECC_MODE_4BIT 0
|
|
+#define ECC_MODE_8BIT 1
|
|
#define ECC_PARITY_SIZE_BYTES_BCH 8
|
|
#define ECC_PARITY_SIZE_BYTES_BCH_MASK GENMASK(12, 8)
|
|
#define ECC_NUM_DATA_BYTES 16
|