mtd: nand: raw: rockchip_nfc: fix oobfree offset and description

The MTD framework reserves 1 or 2 bytes for the bad block marker
depending on the bus size. The rockchip_nfc driver currently only
supports a 8 bit bus, but reserves standard 2 bytes for the BBM.
The first free OOB byte is therefore OOB2 at offset 2.
Page address(PA) bytes are moved to the last 4 positions before
ECC. Update the description for U-boot.

Signed-off-by: Johan Jonker <jbx6244@gmail.com>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
This commit is contained in:
Johan Jonker 2023-03-13 01:29:05 +01:00 committed by Kever Yang
parent 14eb61aa25
commit df08f74774

View file

@ -487,10 +487,10 @@ static int rk_nfc_write_page_raw(struct mtd_info *mtd,
* *
* BBM OOB1 OOB2 OOB3 |......| PA0 PA1 PA2 PA3 * BBM OOB1 OOB2 OOB3 |......| PA0 PA1 PA2 PA3
* *
* The rk_nfc_ooblayout_free() function already has reserved * The oobfree structure already has reserved these 4 bytes
* these 4 bytes with: * together with 2 bytes for BBM by reducing it's length:
* *
* oob_region->offset = NFC_SYS_DATA_SIZE + 2; * oobfree[0].length = rknand->metadata_size - NFC_SYS_DATA_SIZE - 2;
*/ */
if (!i) if (!i)
memcpy(rk_nfc_oob_ptr(chip, i), memcpy(rk_nfc_oob_ptr(chip, i),
@ -867,7 +867,7 @@ static int rk_nfc_ecc_init(struct rk_nfc *nfc, struct nand_chip *chip)
ecc->layout->eccpos[i] = rknand->metadata_size + i; ecc->layout->eccpos[i] = rknand->metadata_size + i;
ecc->layout->oobfree[0].length = rknand->metadata_size - NFC_SYS_DATA_SIZE - 2; ecc->layout->oobfree[0].length = rknand->metadata_size - NFC_SYS_DATA_SIZE - 2;
ecc->layout->oobfree[0].offset = NFC_SYS_DATA_SIZE + 2; ecc->layout->oobfree[0].offset = 2;
return 0; return 0;
} }