On Mon, Jun 11, 2018 at 08:43:26AM +0200, Sascha Hauer wrote: > 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? Yes it can. I haven't seen this is not in the board file but already in a location which could be used by others. Applied, thanks 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