Exemplo n.º 1
0
static int
imx_bbu_internal_mmc_register_handler(const char *name, const char *devicefile,
				      unsigned long flags)
{
	struct imx_internal_bbu_handler *imx_handler;

	imx_handler = __init_handler(name, devicefile, flags |
				     IMX_BBU_FLAG_KEEP_HEAD);
	imx_handler->flash_header_offset = imx_bbu_flash_header_offset_mmc();

	return __register_handler(imx_handler);
}
Exemplo n.º 2
0
int imx_bbu_external_nor_register_handler(const char *name,
					  const char *devicefile,
					  unsigned long flags)
{
	struct imx_internal_bbu_handler *imx_handler;

	imx_handler = __init_handler(name, devicefile, flags |
				     IMX_INTERNAL_FLAG_ERASE);

	imx_handler->expected_type = filetype_unknown;

	return __register_handler(imx_handler);
}
Exemplo n.º 3
0
/*
 * Register a handler that writes to the non-active boot partition of an mmc
 * medium and on success activates the written-to partition. So the machine can
 * still boot even after a failed try to write a boot image.
 *
 * Pass "devicefile" without partition name and /dev/ prefix. e.g. just "mmc2".
 * Note that no further partitioning of the boot partition is supported up to
 * now.
 */
static int imx_bbu_internal_mmcboot_register_handler(const char *name,
						     const char *devicefile,
						     unsigned long flags)
{
	struct imx_internal_bbu_handler *imx_handler;

	imx_handler = __init_handler(name, devicefile, flags);
	imx_handler->flash_header_offset = imx_bbu_flash_header_offset_mmc();

	imx_handler->handler.handler = imx_bbu_internal_mmcboot_update;

	return __register_handler(imx_handler);
}
Exemplo n.º 4
0
/*
 * Register an i.MX53 internal boot update handler for NAND
 */
int imx53_bbu_internal_nand_register_handler(const char *name,
		unsigned long flags, int partition_size)
{
	struct imx_internal_bbu_handler *imx_handler;

	imx_handler = __init_handler(name, "/dev/nand0", flags);
	imx_handler->flash_header_offset = imx_bbu_flash_header_offset_mmc();

	imx_handler->device_size = partition_size;
	imx_handler->write_device = imx_bbu_internal_v2_write_nand_dbbt;

	return __register_handler(imx_handler);
}
Exemplo n.º 5
0
/*
 * Register a i.MX53 internal boot update handler for i2c/spi
 * EEPROMs / flashes. Nearly the same as MMC/SD, but we do not need to
 * keep a partition table. We have to erase the device beforehand though.
 */
int imx53_bbu_internal_spi_i2c_register_handler(const char *name, char *devicefile,
		unsigned long flags, struct imx_dcd_v2_entry *dcd, int dcdsize,
		unsigned long app_dest)
{
	struct imx_internal_bbu_handler *imx_handler;

	imx_handler = __init_handler(name, devicefile, flags);
	imx53_bbu_internal_init_dcd(imx_handler, dcd, dcdsize);
	imx_handler->flash_header_offset = FLASH_HEADER_OFFSET_MMC;

	if (app_dest)
		imx_handler->app_dest = app_dest;
	else
		imx_handler->app_dest = 0x70000000;

	imx_handler->flags = IMX_INTERNAL_FLAG_ERASE;
	imx_handler->handler.handler = imx_bbu_internal_v2_update;

	return __register_handler(imx_handler);
}
Exemplo n.º 6
0
/*
 * Register a i.MX51 internal boot update handler for MMC/SD
 */
int imx51_bbu_internal_mmc_register_handler(const char *name, char *devicefile,
		unsigned long flags, struct imx_dcd_entry *dcd, int dcdsize,
		unsigned long app_dest)
{
	struct imx_internal_bbu_handler *imx_handler;

	imx_handler = __init_handler(name, devicefile, flags);
	imx_handler->dcd = dcd;
	imx_handler->dcdsize = dcdsize;
	imx_handler->flash_header_offset = FLASH_HEADER_OFFSET_MMC;

	if (app_dest)
		imx_handler->app_dest = app_dest;
	else
		imx_handler->app_dest = 0x90000000;

	imx_handler->flags = IMX_INTERNAL_FLAG_KEEP_DOSPART;
	imx_handler->handler.handler = imx_bbu_internal_v1_update;

	return __register_handler(imx_handler);
}
Exemplo n.º 7
0
/*
 * Register a i.MX53 internal boot update handler for NAND
 */
int imx53_bbu_internal_nand_register_handler(const char *name,
		unsigned long flags, struct imx_dcd_v2_entry *dcd, int dcdsize,
		int partition_size, unsigned long app_dest)
{
	struct imx_internal_bbu_handler *imx_handler;

	imx_handler = __init_handler(name, NULL, flags);
	imx53_bbu_internal_init_dcd(imx_handler, dcd, dcdsize);
	imx_handler->flash_header_offset = 0x400;

	if (app_dest)
		imx_handler->app_dest = app_dest;
	else
		imx_handler->app_dest = 0x70000000;

	imx_handler->handler.handler = imx_bbu_internal_v2_update;
	imx_handler->flags = IMX_INTERNAL_FLAG_NAND;
	imx_handler->handler.devicefile = "/dev/nand0";
	imx_handler->device_size = partition_size;

	return __register_handler(imx_handler);
}