static int __register_handler(struct imx_internal_bbu_handler *imx_handler) { int ret; ret = bbu_register_handler(&imx_handler->handler); if (ret) free(imx_handler); return ret; }
/* * Register a am33xx MLO update handler for SPI NOR */ int am33xx_bbu_spi_nor_mlo_register_handler(const char *name, char *devicefile) { struct bbu_handler *handler; int ret; handler = xzalloc(sizeof(*handler)); handler->devicefile = devicefile; handler->name = name; handler->handler = spi_nor_mlo_handler; ret = bbu_register_handler(handler); if (ret) free(handler); return ret; }
int tegra_bbu_register_emmc_handler(const char *name, char *devicefile, unsigned long flags) { struct bbu_handler *handler; int ret = 0; handler = xzalloc(sizeof(*handler)); handler->name = name; handler->devicefile = devicefile; handler->flags = flags; handler->handler = tegra_bbu_emmc_handler; ret = bbu_register_handler(handler); if (ret) free(handler); return ret; }
/* * Register a i.MX external nand boot update handler. * * For 512b page NANDs this handler simply writes the image to NAND skipping * bad blocks. * * For 2K page NANDs this handler embeds a bad block table in the flashed image. * This is necessary since we rely on an on-flash BBT for these flashes, but the * regular mtd BBT is too complex to be handled in the 2k the i.MX is able to * initially load from NAND. The BBT consists of a single 32bit value in which * each bit represents a single block. With 2k NAND flashes this is enough for * 4MiB size including bad blocks. */ int imx_bbu_external_nand_register_handler(const char *name, const char *devicefile, unsigned long flags) { struct bbu_handler *handler; int ret; handler = xzalloc(sizeof(*handler)); handler->devicefile = devicefile; handler->name = name; handler->flags = flags; handler->handler = imx_bbu_external_nand_update; ret = bbu_register_handler(handler); if (ret) free(handler); return ret; }
int imx6_bbu_nand_register_handler(const char *name, unsigned long flags) { struct imx_nand_fcb_bbu_handler *imx_handler; struct bbu_handler *handler; int ret; imx_handler = xzalloc(sizeof(*imx_handler)); imx_handler->fcb_create = imx6_fcb_create; imx_handler->filetype = filetype_arm_barebox; handler = &imx_handler->handler; handler->devicefile = "nand0.barebox"; handler->name = name; handler->flags = flags | BBU_HANDLER_CAN_REFRESH; handler->handler = imx_bbu_nand_update; ret = bbu_register_handler(handler); if (ret) free(handler); return ret; }