[U-Boot] [PATCH v4] dfu, nand, ubi: add partubi alt settings for updating ubi partition

Scott Wood scottwood at freescale.com
Wed Jul 24 21:08:54 CEST 2013


On 07/23/2013 11:30:55 PM, Heiko Schocher wrote:
> Hello Scott,
> 
> Am 24.07.2013 01:22, schrieb Scott Wood:
>> On 07/18/2013 11:32:14 PM, Heiko Schocher wrote:
>>> +static int dfu_flush_medium_nand(struct dfu_entity *dfu)
>>> +{
>>> + int ret = 0;
>>> +
>>> + /* in case of ubi partition, erase rest of the partition */
>>> + if (dfu->data.nand.ubi) {
>>> + nand_info_t *nand;
>>> + nand_erase_options_t opts;
>>> +
>>> + if (nand_curr_device < 0 ||
>>> + nand_curr_device >= CONFIG_SYS_MAX_NAND_DEVICE ||
>>> + !nand_info[nand_curr_device].name) {
>>> + printf("%s: invalid nand device\n", __func__);
>>> + return -1;
>>> + }
>>> +
>>> + nand = &nand_info[nand_curr_device];
>>> +
>>> + memset(&opts, 0, sizeof(opts));
>>> + opts.offset = dfu->data.nand.start + dfu->offset +
>>> + dfu->bad_skip;
>>> + opts.length = dfu->data.nand.start +
>>> + dfu->data.nand.size - opts.offset;
>> 
>> opts.length is equivalent to dfu->data.nand.size - dfu->offset -  
>> dfu->bad_skip. Is this correct? dfu->data.nand.size includes  
>> dfu->offset, but dfu->data.nand.start doesn't?
> 
> Yes, it is correct!

No need to shout...

> I could not parse "dfu->data.nand.size includes dfu->offset, but
> dfu->data.nand.start doesn't" ... What do you mean?

I think my confusion was over what dfu->offset and nand.start  
represent.  If nand.start/nand.size describe the raw partition, and  
dfu->offset is the offset into that partition that the image starts at,  
then this looks OK.

-Scott


More information about the U-Boot mailing list