Rockmtd creates a virtual block device to transfer Rockchip boot block data to and from NAND with block orientated tools like "ums" and "rockusb".
It uses the Rockchip MTD driver to scan for boot blocks and copies data from the first block in a GPT formatted virtual disk. Data must be written in U-boot "idbloader.img" format and start at partition "loader1" offset 64. The data header is parsed for length and offset. When the last sector is received it erases up to 5 erase blocks on NAND and writes boot blocks in a pattern depending on the NAND ID. Data is then verified. When a block turns out bad the block header is discarded. Limitations: Support for Rockchip boot block header type 1 only. Pattern for listed NAND IDs only. (Logic still not disclosed by Rockchip) The MTD framework driver data and NAND ID must be extracted at a lower level. Only tested with rk3066 NFC v6.0. Available rockmtd commands: rockmtd bind <label> - bind ROCKMTD device rockmtd unbind <label> - unbind ROCKMTD device rockmtd info [<label>] - show all available ROCKMTD devices rockmtd dev [<label>] - show or set current ROCKMTD device U-boot settings: Config to enable Rockchip MTD support: CONFIG_MTD=y CONFIG_MTD_RAW_NAND=y CONFIG_SYS_NAND_DRIVER_ECC_LAYOUT=y CONFIG_SYS_NAND_USE_FLASH_BBT=y CONFIG_ROCKCHIP_NAND=y Option to keep existing NAND data unchanged: CONFIG_ROCKCHIP_NAND_SKIP_BBTSCAN=y Commands to enable: CONFIG_CMD_USB=y CONFIG_CMD_ROCKMTD=y CONFIG_CMD_ROCKUSB=y CONFIG_CMD_USB_MASS_STORAGE=y Linux Host (PC) tool commands combinations that work: U-boot Linux rockmtd bind 0 # rockusb rockusb 0 rkmtd 0 upgrade_tool pl upgrade_tool wl 64 idbloader.img upgrade_tool rl 64 512 upgrade_tool_rl_64_512.img upgrade_tool rd rkdeveloptool ppt rkdeveloptool wlx loader1 idbloader.img rkdeveloptool wl 64 idbloader.img rkdeveloptool rl 64 512 rkdeveloptool_rl_64_512.img rkdeveloptool rd rkflashtool w 64 512 < idbloader.img rkflashtool r 64 512 > rkflashtool_r_64_512.img # ums ums 0 rkmtd 0 dd if=idbloader.img of=/dev/sda1 dd if=/dev/sda1 of=ums_0_idb_0_rd.img Johan Jonker (3): mtd: nand: raw: rockchip_nfc: add NAND_SKIP_BBTSCAN option dm: prepare rkmtd UCLASS rockchip: cmd: add rockmtd command cmd/Kconfig | 7 + cmd/Makefile | 1 + cmd/rockmtd.c | 1429 +++++++++++++++++++++++++++ disk/part.c | 4 + drivers/block/blk-uclass.c | 1 + drivers/mtd/nand/raw/Kconfig | 9 + drivers/mtd/nand/raw/rockchip_nfc.c | 3 + include/dm/uclass-id.h | 1 + 8 files changed, 1455 insertions(+) create mode 100644 cmd/rockmtd.c -- 2.30.2