Пример #1
0
static int install_flash_image(struct img_type *img,
	void *data)
{
	char filename[64];
	int mtdnum;
	size_t n;
	bool hamming = false;

	/*
	 * data is used as boolean here. If set,
	 * hamming code is computed and stored into OOB
	 */
	if (data)
		hamming = true;

	n = snprintf(filename, sizeof(filename), "%s%s", TMPDIR, img->fname);
	if (n < 0 || n >= sizeof(filename)) {
		ERROR("Filename too long: %s", img->fname);
		return -1;
	}

	mtdnum= get_mtd_from_device(img->device);
	if (mtdnum < 0) {
		ERROR("Wrong MTD device in description: %s",
			img->device);
		return -1;
	}

	if(flash_erase(mtdnum)) {
		ERROR("I cannot erasing %s",
			img->device);
		return -1;
	}
	TRACE("Copying %s into /dev/mtd%d", img->fname, mtdnum);
	if (flash_write_image(mtdnum, img, hamming)) {
		ERROR("I cannot copy %s into %s partition",
			img->fname,
			img->device);
		return -1;
	}

	return 0;
}
Пример #2
0
	struct flash_description *flash = get_flash_info();

	if (!isNand(flash, mtdnum))
		return flash_write_nor(mtdnum, img);

	return flash_write_nand(mtdnum, img);
}

static int install_flash_image(struct img_type *img,
	void __attribute__ ((__unused__)) *data)
{
	char filename[64];
	int mtdnum;

	snprintf(filename, sizeof(filename), "%s%s", TMPDIR, img->fname);
	mtdnum= get_mtd_from_device(img->device);

	if (mtdnum < 0) {
		ERROR("Wrong MTD device in description: %s",
			img->device);
		return -1;
	}

	if(flash_erase(mtdnum)) {
		ERROR("I cannot erasing %s",
			img->device);
		return -1;
	}
	TRACE("Copying %s", img->fname);
	if (flash_write_image(mtdnum, img)) {
		ERROR("I cannot copy %s into %s partition",