On Fri, Jun 08, 2018 at 10:42:44AM +0200, Uwe Kleine-König wrote: > Signed-off-by: Uwe Kleine-König <u.kleine-koenig@xxxxxxxxxxxxxx> > --- > Hello, > > together with the fixup for write_file_flash to not use O_TRUNC and > O_CREAT, this was tested on top of next. > > Best regards > Uwe > > arch/arm/boards/solidrun-cubox/board.c | 15 ++++++- > arch/arm/mach-mvebu/Makefile | 1 + > arch/arm/mach-mvebu/include/mach/bbu.h | 3 ++ > arch/arm/mach-mvebu/kwb_bbu.c | 54 ++++++++++++++++++++++++++ > 4 files changed, 72 insertions(+), 1 deletion(-) > create mode 100644 arch/arm/mach-mvebu/include/mach/bbu.h > create mode 100644 arch/arm/mach-mvebu/kwb_bbu.c > > diff --git a/arch/arm/boards/solidrun-cubox/board.c b/arch/arm/boards/solidrun-cubox/board.c > index a28f4197dfd4..aac93afb0c89 100644 > --- a/arch/arm/boards/solidrun-cubox/board.c > +++ b/arch/arm/boards/solidrun-cubox/board.c > @@ -14,4 +14,17 @@ > * > */ > > -/* empty */ > +#include <common.h> > +#include <init.h> > +#include <mach/bbu.h> > + > +static int cubox_devices_init(void) > +{ > + if (!of_machine_is_compatible("solidrun,cubox")) > + return 0; > + > + mvebu_bbu_flash_register_handler("flash", "/dev/m25p0", 0, true); > + > + return 0; > +} > +device_initcall(cubox_devices_init); > diff --git a/arch/arm/mach-mvebu/Makefile b/arch/arm/mach-mvebu/Makefile > index 87a85119193e..cc2b926438e4 100644 > --- a/arch/arm/mach-mvebu/Makefile > +++ b/arch/arm/mach-mvebu/Makefile > @@ -1,4 +1,5 @@ > obj-pbl-y += common.o > +obj-y += kwb_bbu.o > obj-$(CONFIG_ARCH_ARMADA_370) += armada-370-xp.o > obj-$(CONFIG_ARCH_ARMADA_XP) += armada-370-xp.o > obj-$(CONFIG_ARCH_ARMADA_38X) += armada-370-xp.o > diff --git a/arch/arm/mach-mvebu/include/mach/bbu.h b/arch/arm/mach-mvebu/include/mach/bbu.h > new file mode 100644 > index 000000000000..f1021e52ce9f > --- /dev/null > +++ b/arch/arm/mach-mvebu/include/mach/bbu.h > @@ -0,0 +1,3 @@ > +int mvebu_bbu_flash_register_handler(const char *name, > + char *devicefile, int version, > + bool isdefault); > diff --git a/arch/arm/mach-mvebu/kwb_bbu.c b/arch/arm/mach-mvebu/kwb_bbu.c > new file mode 100644 > index 000000000000..f79464fe53e4 > --- /dev/null > +++ b/arch/arm/mach-mvebu/kwb_bbu.c > @@ -0,0 +1,54 @@ > +#include <bbu.h> > +#include <libfile.h> > +#include <printk.h> > + > +#include <mach/bbu.h> > + > +struct mvebu_bbu_handler { > + struct bbu_handler bbuh; > + int version; > +}; > + > +static int mvebu_bbu_flash_update_handler(struct bbu_handler *bbuh, > + struct bbu_data *data) > +{ > + struct mvebu_bbu_handler *mbbuh = > + container_of(bbuh, struct mvebu_bbu_handler, bbuh); > + const void *image = data->image; > + size_t size = data->len; > + enum filetype ft = file_detect_type(image, size); > + > + if ((mbbuh->version == 0 && ft == filetype_kwbimage_v0) || > + (mbbuh->version == 1 && ft == filetype_kwbimage_v1) || > + data->flags & BBU_FLAG_FORCE) { > + int ret = bbu_confirm(data); > + if (ret) > + return ret; > + > + return write_file_flash(bbuh->devicefile, image, size); > + } else { > + pr_err("%s is not a valid kwbimage\n", data->imagefile); > + return -EINVAL; > + } > +} Could this code be shared with other boards? Sascha -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox