static int nand_oob_access(struct nand_chip *chip, uint32_t page, uint32_t offset, uint32_t len, uint8_t *data, uint8_t write) { struct chip_geom *cg; uint8_t *buf = NULL; int ret = 0; cg = &chip->chip_geom; buf = malloc(cg->oob_size, M_NAND, M_WAITOK); if (!buf) return (ENOMEM); memset(buf, 0xff, cg->oob_size); if (!write) { ret = nand_read_oob(chip, page, buf, cg->oob_size); copyout(buf, data, len); } else { copyin(data, buf, len); ret = nand_prog_oob(chip, page, buf, cg->oob_size); } free(buf, M_NAND); return (ret); }
static int nand_oob_access(struct nand_chip *chip, uint32_t page, uint32_t offset, uint32_t len, uint8_t *data, uint8_t write) { struct chip_geom *cg; int ret = 0; cg = &chip->chip_geom; if (!write) ret = nand_read_oob(chip, page, data, cg->oob_size); else ret = nand_prog_oob(chip, page, data, cg->oob_size); return (ret); }