コード例 #1
0
ファイル: nand_cdev.c プロジェクト: hmatyschok/MeshBSD
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);
}
コード例 #2
0
ファイル: nand_geom.c プロジェクト: FreeBSDFoundation/freebsd
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);
}