[U-Boot] [PATCH v2] dfu, nand, ubi: add partubi alt settings for updating ubi partition
Lukasz Majewski
l.majewski at samsung.com
Tue Jul 16 10:19:07 CEST 2013
Hi Heiko,
> Hello Lukasz,
>
> Am 16.07.2013 09:41, schrieb Lukasz Majewski:
> > Hi Heiko,
> >
> >> updating an ubi partition needs a completely erased mtd partition,
> >> see:
> >> http://lists.infradead.org/pipermail/linux-mtd/2011-May/035416.html
> >>
> >> So, add partubi alt setting for the dfu_alt_info environment
> >> variable to mark this partition as an ubi partition. In case we
> >> update an ubi partition, we erase after flashing the image into the
> >> partition, the remaining sektors.
> >>
> >> Signed-off-by: Heiko Schocher<hs at denx.de>
> >> Cc: Pantelis Antoniou<panto at antoniou-consulting.com>
> >> Cc: Tom Rini<trini at ti.com>
> >> Cc: Lukasz Majewski<l.majewski at samsung.com>
> >> Cc: Kyungmin Park<kyungmin.park at samsung.com>
> >> Cc: Marek Vasut<marex at denx.de>
> >> Cc: Wolfgang Denk<wd at denx.de>
> >>
> >> ---
> >>
> >> - This patch is also a good starting point to fix up updating ubi,
> >> as we currently use "nand erase" for erasing the sektors. This is
> >> not the prefered way for writing an ubi image, see:
> >> http://www.linux-mtd.infradead.org/faq/ubi.html#L_flash_img
> >>
> >> This must be fixed ... we have no "ubiformat" in u-boot, or?
> >>
> >> - changes for v2:
> >> - do not use spread = 1 for nand_erase_opts, to prevent
> >> errormessage if there are bad blocks in the erase range.
> >> ---
> >> drivers/dfu/dfu.c | 30 +++++++++++++++++++++++++++++-
> >> drivers/dfu/dfu_nand.c | 26 ++++++++++++++++++++++++++
> >> include/dfu.h | 2 ++
> >> 3 Dateien geändert, 57 Zeilen hinzugefügt(+), 1 Zeile entfernt(-)
> >>
> >> diff --git a/drivers/dfu/dfu.c b/drivers/dfu/dfu.c
> >> index 0521752..7ba7026 100644
> >> --- a/drivers/dfu/dfu.c
> >> +++ b/drivers/dfu/dfu.c
> >> @@ -23,6 +23,7 @@
> >> #include<errno.h>
> >> #include<malloc.h>
> >> #include<mmc.h>
> >> +#include<nand.h>
> >> #include<fat.h>
> >> #include<dfu.h>
> >> #include<linux/list.h>
> >> @@ -176,6 +177,34 @@ int dfu_write(struct dfu_entity *dfu, void
> >> *buf, int size, int blk_seq_num) ret = dfu->flush_medium(dfu);
> >> printf("\nDFU complete CRC32: 0x%08x\n",
> >> dfu->crc);
> >>
> >> + /* in case of ubi partition, erase rest of the
> >> partition */
> >> + if (dfu->ubi == 1) {
> >> + int ret;
> >> + nand_info_t *nand;
> >> + /* erase complete partition */
> >> + nand_erase_options_t opts;
> >> +
> >> + if (nand_curr_device< 0 ||
> >> + nand_curr_device>=
> >> CONFIG_SYS_MAX_NAND_DEVICE ||
> > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - this config won't be defined at
> > devices, which don't have NAND memory (like Trats).
> > Due to that Trats board is not building.
> >
> > Please remove memory type dependent code from the common dfu
> > code.
>
> Oh... Hmm... maybe I move this code to drivers/dfu/dfu_nand.c
> and make there a dfu_nand_flush() ?
Sounds like a good idea :-). I would prefer to encapsulate NAND (MMC)
code at dfu_nand.c (dfu_mmc.c) file.
>
> bye,
> Heiko
--
Best regards,
Lukasz Majewski
Samsung R&D Institute Poland (SRPOL) | Linux Platform Group
More information about the U-Boot
mailing list