Beispiel #1
0
static int uboot_load_part_meta_check(char *part_name, unsigned long addr)
{
    long len;
	  unsigned long begin;
	  unsigned long start_addr;	
    part_t *part;	
    part_dev_t *dev;
    part_hdr_t *part_hdr;
    int iReadSize=BLOCK_SIZE;
    printf("enter uboot_load_part_meta_check\n");
    dev = mt6573_part_get_device();
    if (!dev)
    {
     printf("mt6573_part_get_device() failed\n");
    return -1;
    }

    part = mt6573_part_get_partition(part_name);
    if (!part)
    {
    printf("mt6573_part_get_partition()failed \n");
    return -1;
    }

    start_addr = part->startblk * BLK_SIZE;   

    part_hdr = (part_hdr_t*)malloc(sizeof(part_hdr_t));

    
    if (!part_hdr)
    {
    printf("malloc failed\n");
    return -1;
    }
    len = mboot_common_load_part_info(dev, part_name, part_hdr);
    if (len < 0) {
        len = -1;        
        goto exit;
    }
	//****************
    //* read image data
	//*
	  printf("read the data of %s\n", part_name);
    len = dev->read(dev, start_addr+END_BLOCK , (uchar*)addr, iReadSize);    
    if (len < 0) {
		    printf("read failed\n");
        len = -1;
        goto exit;
    }
    
   
exit:
    if (part_hdr) 
        free(part_hdr);

    return len;
}
Beispiel #2
0
/**********************************************************
 * Routine: mboot_common_load_part
 *
 * Description: common function for loading image from nand flash
 *				this function is called by
 *					(1) 'mboot_common_load_logo' to display logo
 *
 **********************************************************/
int mboot_common_load_part(char *part_name, unsigned long addr)
{
    long len;
	  unsigned long begin;
#ifdef MTK_EMMC_SUPPORT
	  unsigned long long start_addr;
#else
	  unsigned long start_addr;	
#endif
    part_t *part;	
    part_dev_t *dev;
    part_hdr_t *part_hdr;

    dev = mt6575_part_get_device();
    if (!dev)
    {	return -ENODEV;
    }

    part = mt6575_part_get_partition(part_name);
    if (!part)
    {	return -ENOENT;
    }

#ifdef MTK_EMMC_SUPPORT
	start_addr = (u64)part->startblk * BLK_SIZE; 
#else
    start_addr = part->startblk * BLK_SIZE;    
#endif  

    part_hdr = (part_hdr_t*)malloc(sizeof(part_hdr_t));

    
    if (!part_hdr)
    {	return -ENOMEM;
    }

    len = mboot_common_load_part_info(dev, part_name, part_hdr);
    if (len < 0) {
        len = -EINVAL;        
        goto exit;
    }

	begin = get_timer(0);

	//****************
    //* read image data
	//*
	printf("read the data of %s\n", part_name);

	
    len = dev->read(dev, start_addr + sizeof(part_hdr_t), (uchar*)addr, part_hdr->info.dsize);    
    if (len < 0) {
        len = -EIO;
        goto exit;
    }


exit:
    if (part_hdr) 
        free(part_hdr);

    return len;
}