Re: [PATCH v7 2/2] mtd: rawnand: meson: add support for Amlogic NAND flash controller

From: Liang Yang
Date: Mon Dec 10 2018 - 07:12:25 EST




On 2018/12/10 19:38, Boris Brezillon wrote:
On Mon, 10 Dec 2018 19:23:46 +0800
Liang Yang <liang.yang@xxxxxxxxxxx> wrote:

+ mtd->ecc_stats.failed++;
+ continue;
+ }
+ mtd->ecc_stats.corrected += ECC_ERR_CNT(*info);
+ bitflips = max_t(u32, bitflips, ECC_ERR_CNT(*info));
+ }

Are you sure you handle correctly empty pages with bf?
if scramble is enable, i would say yes here.
when scramble is disabled, i am considering how to use the helper
nand_check_erased_ecc_chunk, but it seems that i can't get the ecc
bytes which is caculated by ecc engine.by the way, nfc dma doesn't send
out the ecc parity bytes.

Even if the ECC engine is disabled?

No.
When ECC engine is disabled, it can read the ecc parity bytes ; but there is another problem that i need to consider how code struct looks better when reading error with ecc opened and then try to raw read.
Is there a good idea?

so i would suggest using scramble.


No, please don't force people to use the scrambler.

+
+const void *
+meson_nand_op_get_dma_safe_output_buf(const struct nand_op_instr *instr)
+{
+ if (WARN_ON(instr->type != NAND_OP_DATA_OUT_INSTR))
+ return NULL;
+
+ if (virt_addr_valid(instr->ctx.data.buf.out) &&
+ !object_is_on_stack(instr->ctx.data.buf.out))

Can you please create helpers for that? I guess it will help removing
these checks once the core will have a DMA-safe approach.
I will use below definition:
#define BUFFER_IS_DMA_SAFE(x) \
(virt_addr_valid((x)) && (!object_is_on_stack((x))))

Is it ok?

Please define a function, not a macro.
ok
.