]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
mtd: rawnand: sunxi: introduce sram_size in sunxi_nfc_caps
authorRichard Genoud <richard.genoud@bootlin.com>
Tue, 28 Oct 2025 07:35:07 +0000 (08:35 +0100)
committerMiquel Raynal <miquel.raynal@bootlin.com>
Tue, 28 Oct 2025 16:18:13 +0000 (17:18 +0100)
The H6/H616 the SRAM is bigger than the A10/A23 one, so move its size
into sunxi_nfc_caps.

No functional change

Signed-off-by: Richard Genoud <richard.genoud@bootlin.com>
Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
drivers/mtd/nand/raw/sunxi_nand.c

index 0a9ac75bb229fd185bdf195e71a7529f1be6b51a..5e030fc2fde5c17c87b4f4f8aefe0922d2e5aa42 100644 (file)
 
 #define NFC_DEFAULT_TIMEOUT_MS 1000
 
-#define NFC_SRAM_SIZE          1024
-
 #define NFC_MAX_CS             7
 
 /*
@@ -251,6 +249,7 @@ static inline struct sunxi_nand_chip *to_sunxi_nand(struct nand_chip *nand)
  * @dma_maxburst:      DMA maxburst
  * @ecc_strengths:     Available ECC strengths array
  * @nstrengths:                Size of @ecc_strengths
+ * @sram_size:         Size of the NAND controller SRAM
  */
 struct sunxi_nfc_caps {
        bool has_mdma;
@@ -269,6 +268,7 @@ struct sunxi_nfc_caps {
        unsigned int dma_maxburst;
        const u8 *ecc_strengths;
        unsigned int nstrengths;
+       int sram_size;
 };
 
 /**
@@ -506,7 +506,7 @@ static void sunxi_nfc_read_buf(struct nand_chip *nand, uint8_t *buf, int len)
        while (len > offs) {
                bool poll = false;
 
-               cnt = min(len - offs, NFC_SRAM_SIZE);
+               cnt = min(len - offs, nfc->caps->sram_size);
 
                ret = sunxi_nfc_wait_cmd_fifo_empty(nfc);
                if (ret)
@@ -544,7 +544,7 @@ static void sunxi_nfc_write_buf(struct nand_chip *nand, const uint8_t *buf,
        while (len > offs) {
                bool poll = false;
 
-               cnt = min(len - offs, NFC_SRAM_SIZE);
+               cnt = min(len - offs, nfc->caps->sram_size);
 
                ret = sunxi_nfc_wait_cmd_fifo_empty(nfc);
                if (ret)
@@ -1871,7 +1871,7 @@ static int sunxi_nfc_exec_subop(struct nand_chip *nand,
                case NAND_OP_DATA_OUT_INSTR:
                        start = nand_subop_get_data_start_off(subop, i);
                        remaining = nand_subop_get_data_len(subop, i);
-                       cnt = min_t(u32, remaining, NFC_SRAM_SIZE);
+                       cnt = min_t(u32, remaining, nfc->caps->sram_size);
                        cmd |= NFC_DATA_TRANS | NFC_DATA_SWAP_METHOD;
 
                        if (instr->type == NAND_OP_DATA_OUT_INSTR) {
@@ -2252,6 +2252,7 @@ static const struct sunxi_nfc_caps sunxi_nfc_a10_caps = {
        .dma_maxburst = 4,
        .ecc_strengths = sunxi_ecc_strengths_a10,
        .nstrengths = ARRAY_SIZE(sunxi_ecc_strengths_a10),
+       .sram_size = 1024,
 };
 
 static const struct sunxi_nfc_caps sunxi_nfc_a23_caps = {
@@ -2271,6 +2272,7 @@ static const struct sunxi_nfc_caps sunxi_nfc_a23_caps = {
        .dma_maxburst = 8,
        .ecc_strengths = sunxi_ecc_strengths_a10,
        .nstrengths = ARRAY_SIZE(sunxi_ecc_strengths_a10),
+       .sram_size = 1024,
 };
 
 static const struct of_device_id sunxi_nfc_ids[] = {