Dear Dileep Katta, In message <1410417650-16522-2-git-send-email-dileep.ka...@linaro.org> you wrote: > Flash command internally uses DFU, and Fastboot command initialization is > modified to add DFU and partition initialization > Added oem format functionality for GPT table creation > partitioning code is added as disk/part_fastboot.c for better usability > > Fastboot flash command code is enabled and being tested on BeagleBone Black. > OMAP3 Beagle configuration is modified to fix the build errors, but this > configuration needs to be updated as per the flash functionality.
Please fix the line length in the commit message. Also, checkpatch says: WARNING: do not add new typedefs #1073: FILE: include/usb/fastboot.h:98: +typedef struct fastboot_ptentry fastboot_ptentry; > +int handle_flash(char *part_name, char *response, char *transfer_buffer) > +{ > + int status = 0; > + printf("download_bytes: 0x%x\n", download_bytes); > + if (download_bytes) { > + struct fastboot_ptentry *ptn; > + > + /* Next is the partition name */ > + ptn = fastboot_flash_find_ptn(part_name); > + > + if (ptn == 0) { > + printf("Partition:[%s] does not exist\n", part_name); > + sprintf(response, "FAILpartition does not exist"); > + } else if ((download_bytes > ptn->length) && > + !(ptn->flags & FASTBOOT_PTENTRY_FLAGS_WRITE_ENV)) { > + printf("Image too large for the partition\n"); > + sprintf(response, "FAILimage too large for partition"); > + } else if (ptn->flags & FASTBOOT_PTENTRY_FLAGS_WRITE_ENV) { > + /* Check if this is not really a flash write, > + * but instead a saveenv > + */ > + unsigned int i = 0; > + /* Env file is expected with a NULL delimeter between > + * env variables So replace New line Feeds(0x0a) with > + * NULL (0x00) > + */ Incorrect multiline comment style. Please fix globally. Also this sequence of comment - declaration - comment is highly confusing. What is the first comment ("Check if..") actually related to? > + for (i = 0; i < download_bytes; i++) { > + if (transfer_buffer[i] == 0x0a) > + transfer_buffer[i] = 0x00; > + } > + memset(env_ptr->data, 0, ENV_SIZE); > + memcpy(env_ptr->data, transfer_buffer, download_bytes); > + do_env_save(NULL, 0, 1, NULL); > + printf("saveenv to '%s' DONE!\n", ptn->name); I think it is a bad idea to split formatting / reformatting envrionment data alll over the place. This should be done only once, in the environment handling code. Also, I do not like you using do_env_save() here - this should remain a static function. Why do't you simply use saveenv() here? Finally, the "saveenv to '%s' DONE!\n" is IMO too verbose. No news is Good News - we usually do not report abot the success of operations, as this is what we expect. We should only print error messages when such occur - which points out another problem of that code: there is no error checking nor handling there... > +static void end_ptbl(struct ptable *ptbl) > +{ > + struct efi_header *hdr = &ptbl->header; > + u32 n; > + > + n = crc32(0, 0, 0); What exactly is this good for? > + n = crc32(n, (void *)ptbl->entry, sizeof(ptbl->entry)); > + hdr->entries_crc32 = n; > + > + n = crc32(0, 0, 0); What exactly is this good for? > + n = crc32(0, (void *)&ptbl->header, sizeof(ptbl->header)); > + hdr->crc32 = n; > +} > + for (n = 0; n < (128/4); n++) { > + /* read partition */ > + source[0] = '\0'; > + dest[0] = '\0'; > + length[0] = '\0'; You overwrite source, dest, and length by the sprintf()s just a few lines below. So why are you doing this here? > + mmc_read[2] = source; > + mmc_read[3] = dest; > + mmc_read[4] = length; > + > + sprintf(source, "%p", entry); > + sprintf(dest, "0x%x", 0x1+n); > + sprintf(length, "0x%x", 1); > +int board_mmc_fbtptn_init(void) > +{ > + char *mmc_init[2] = {"mmc", "rescan",}; > + char dev[2]; > + char *mmc_dev[3] = {"mmc", "dev", NULL}; > + > + mmc_dev[2] = dev; Why do you initialize mmc_dev[2] with another value just a line above? Why don't you use the correct value right from the beginning? > + if (do_mmcops(NULL, 0, 3, mmc_dev)) { > + printf("MMC DEV: %d selection FAILED!\n", CONFIG_FB_MMCDEV); > + return -1; > + } > + > + if (do_mmcops(NULL, 0, 2, mmc_init)) { > + printf("FAIL:Init of MMC card\n"); > + return 1; > + } What exactly are your return codes? Here you return -1 in case of error, there +1 - what's the logic behind that? > +int do_format(void) > +{ > + struct ptable *ptbl = &the_ptable; > + /* unsigned sector_sz; */ Please remove dead code. > + printf("\ndo_format ..!!"); Is this not overly verbose? > + /* get mmc info */ > + struct mmc *mmc = find_mmc_device(CONFIG_FB_MMCDEV); Please do not mix code and declarations. Also, always add a blank line after declarations. > + if (mmc_init(mmc)) { > + printf("\n mmc init FAILED"); > + return -1; > + } else{ After the return, no else is needed here. > + printf("\nmmc capacity is: %llu", mmc->capacity); > + printf("\nmmc: number of blocks:0x%lx", mmc->block_dev.lba); > + printf("\nmmc: block size:0x%lx", mmc->block_dev.blksz); > + } > + /* 10/11:modified as per PSP release support */ > + char *mmc_write[5] = {"mmc", "write", NULL, NULL, NULL}; > + char source[32], dest[32], length[32]; > + > + char dev[2]; > + char *mmc_dev[3] = {"mmc", "dev", NULL}; > + mmc_dev[2] = dev; See above - please do not mix code and declarations, please use the right initialization right away. > + } else { > + printf("Writing mbr is DONE!\n"); Less verbose, please. Best regards, Wolfgang Denk -- DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: w...@denx.de At the source of every error which is blamed on the computer you will find at least two human errors, including the error of blaming it on the computer. _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot