From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: (from localhost user: 'ladis' uid#1021 fake: STDIN (ladis@eddie.linux-mips.org)) by eddie.linux-mips.org id S23992652AbfLFRZpUDe7A (ORCPT + 1 other); Fri, 6 Dec 2019 18:25:45 +0100 Date: Fri, 6 Dec 2019 18:25:39 +0100 From: Ladislav Michl Message-ID: <20191206172539.GA3594635@lenoch> References: <20191206144357.GA3580578@lenoch> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: Subject: Re: [RAUC] [PATCH] Add suport for bare flash List-Id: RAUC Project - Discussion List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="iso-8859-2" Content-Transfer-Encoding: quoted-printable Errors-To: rauc-bounces@pengutronix.de Sender: "RAUC" To: Enrico Joerns Cc: rauc@pengutronix.de On Fri, Dec 06, 2019 at 04:01:40PM +0100, Enrico Joerns wrote: > Hi ladis, > = > Mind if I play the GitHub bridge? > = > On 12/6/19 3:43 PM, Ladislav Michl wrote: > > Add handler to write images using flashcp. Used to update barebox on at= 91 > > based board with dataflash. > > = > > Signed-off-by: Ladislav Michl > = > There we have all the checking and testing infrastructure. Patches via > mailing list are not officially supported as you know. Oh... That's why only this one was sent. There are few more in my queue, but as I know I need to use GitHub :) > Or did you take the chance of creating an account already? Hmm, unlike other services from previous century this one claims my username is already taken. So as soon as I found any unclaimed username not being completely radom I put all the patches to the GitHub ;-) > Regards, Enrico > = > > --- > > src/update_handler.c | 72 ++++++++++++++++++++++++++++++++++++++++++++ > > 1 file changed, 72 insertions(+) > > = > > diff --git a/src/update_handler.c b/src/update_handler.c > > index 0415c92..8385096 100644 > > --- a/src/update_handler.c > > +++ b/src/update_handler.c > > @@ -497,6 +497,42 @@ out: > > return res; > > } > > +static gboolean flash_write_slot(const gchar *image, const gchar *devi= ce, GError **error) > > +{ > > + g_autoptr(GSubprocess) sproc =3D NULL; > > + GError *ierror =3D NULL; > > + gboolean res =3D FALSE; > > + g_autoptr(GPtrArray) args =3D g_ptr_array_new_full(5, g_free); > > + > > + g_ptr_array_add(args, g_strdup("flashcp")); > > + g_ptr_array_add(args, g_strdup(image)); > > + g_ptr_array_add(args, g_strdup(device)); > > + g_ptr_array_add(args, NULL); > > + > > + r_debug_subprocess(args); > > + sproc =3D g_subprocess_newv((const gchar * const *)args->pdata, > > + G_SUBPROCESS_FLAGS_NONE, &ierror); > > + if (sproc =3D=3D NULL) { > > + g_propagate_prefixed_error( > > + error, > > + ierror, > > + "failed to start flashcp: "); > > + goto out; > > + } > > + > > + res =3D g_subprocess_wait_check(sproc, NULL, &ierror); > > + if (!res) { > > + g_propagate_prefixed_error( > > + error, > > + ierror, > > + "failed to run flashcp: "); > > + goto out; > > + } > > + > > +out: > > + return res; > > +} > > + > > static gboolean nand_format_slot(const gchar *device, GError **error) > > { > > g_autoptr(GSubprocess) sproc =3D NULL; > > @@ -1046,6 +1082,41 @@ out: > > return res; > > } > > +static gboolean img_to_flash_handler(RaucImage *image, RaucSlot *dest_= slot, const gchar *hook_name, GError **error) > > +{ > > + GError *ierror =3D NULL; > > + gboolean res =3D FALSE; > > + > > + /* run slot pre install hook if enabled */ > > + if (hook_name && image->hooks.pre_install) { > > + res =3D run_slot_hook(hook_name, R_SLOT_HOOK_PRE_INSTALL, NULL, dest= _slot, &ierror); > > + if (!res) { > > + g_propagate_error(error, ierror); > > + goto out; > > + } > > + } > > + > > + /* write */ > > + g_message("writing slot device %s", dest_slot->device); > > + res =3D flash_write_slot(image->filename, dest_slot->device, &ierror); > > + if (!res) { > > + g_propagate_error(error, ierror); > > + goto out; > > + } > > + > > + /* run slot post install hook if enabled */ > > + if (hook_name && image->hooks.post_install) { > > + res =3D run_slot_hook(hook_name, R_SLOT_HOOK_POST_INSTALL, NULL, des= t_slot, &ierror); > > + if (!res) { > > + g_propagate_error(error, ierror); > > + goto out; > > + } > > + } > > + > > +out: > > + return res; > > +} > > + > > static gboolean img_to_nand_handler(RaucImage *image, RaucSlot *dest_= slot, const gchar *hook_name, GError **error) > > { > > GError *ierror =3D NULL; > > @@ -1496,6 +1567,7 @@ RaucUpdatePair updatepairs[] =3D { > > {"*.ubifs", "ubivol", img_to_ubivol_handler}, > > {"*.ubifs", "ubifs", img_to_ubifs_handler}, > > {"*.img", "ext4", img_to_fs_handler}, > > + {"*.img", "flash", img_to_flash_handler}, > > {"*.img", "nand", img_to_nand_handler}, > > {"*.img", "ubifs", img_to_ubifs_handler}, > > {"*.img", "ubivol", img_to_ubivol_handler}, > > = > = > -- = > Pengutronix e.K. | Enrico J=F6rns | > Embedded Linux Consulting & Support | Teamleiter Integration | > Steuerwalder Str. 21 | http://www.pengutronix.de/ | > 31137 Hildesheim, Germany | Phone: +49-5121-206917-5080 | > Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ RAUC mailing list