int part_init(void) { blkdev_t *bdev; part_t *part; u32 erasesz; unsigned long lastblk; part_num = 0; memset(part_info, 0x00, sizeof(part_info)); #ifdef PL_PROFILING u32 profiling_time; profiling_time = 0; #endif cust_part_init(); bdev = blkdev_get(CFG_BOOT_DEV); part = cust_part_tbl(); if (!bdev || !part) return -1; erasesz = bdev->blksz; part->blks = TO_BLKS_ALIGN(part->size, erasesz); #ifndef MTK_EMMC_SUPPORT if(part->type == TYPE_LOW) lastblk = part->startblk + part->blks*2; else lastblk = part->startblk + part->blks; #endif while (1) { part++; if (!part->name) break; if (part->startblk == 0) part->startblk = lastblk; part->blks = TO_BLKS_ALIGN(part->size, erasesz); #ifndef MTK_EMMC_SUPPORT if(part->type == TYPE_LOW) lastblk = part->startblk + part->blks*2; else lastblk = part->startblk + part->blks; #endif } #if CFG_PMT_SUPPORT #ifdef PL_PROFILING profiling_time = get_timer(0); #endif pmt_init(); #ifdef PL_PROFILING printf("#T#pmt_init=%d\n", get_timer(profiling_time)); #endif #endif return 0; }
int part_init(void) { blkdev_t *bdev; part_t *part; u32 erasesz; unsigned long lastblk; unsigned int last_part_id; part_num = 0; memset(part_info, 0x00, sizeof(part_info)); cust_part_init(); bdev = blkdev_get(CFG_BOOT_DEV); part = cust_part_tbl(); if (!bdev || !part) return -1; erasesz = bdev->blksz; part->blks = TO_BLKS_ALIGN(part->size, erasesz); lastblk = part->startblk + part->blks; last_part_id = part->part_id; while (1) { part++; if (!part->name) break; if (part->startblk == 0 && part->part_id == last_part_id) { part->startblk = lastblk; } part->blks = TO_BLKS_ALIGN(part->size, erasesz); lastblk = part->startblk + part->blks; last_part_id = part->part_id; } #if CFG_PMT_SUPPORT pmt_init(); #endif return 0; }