//DM_PARTITION_INFO_PACKET dm; //for test void get_part_tab_from_complier(void) { #ifdef MTK_EMMC_SUPPORT int index = 0; part_t *part = cust_part_tbl(); MSG(INIT, "get_pt_from_complier \n"); while (part->flags != PART_FLAG_END) { memcpy(lastest_part[index].name, part->name, MAX_PARTITION_NAME_LEN); lastest_part[index].size = (u64) part->blks * 512; lastest_part[index].offset = (u64) part->startblk * 512; lastest_part[index].mask_flags = PART_FLAG_NONE; //this flag in kernel should be fufilled even though in flash is 0. print("get_ptr %s %llx \n", lastest_part[index].name, lastest_part[index].offset); index++; part++; } #else int index = 0; part_t *part = cust_part_tbl(); MSG(INIT, "get_pt_from_complier \n"); while (part->flags != PART_FLAG_END) { memcpy(lastest_part[index].name, part->name, MAX_PARTITION_NAME_LEN); lastest_part[index].size = part->blks * PAGE_SIZE; lastest_part[index].offset = part->startblk * PAGE_SIZE; lastest_part[index].mask_flags = PART_FLAG_NONE; //this flag in kernel should be fufilled even though in flash is 0. MSG (INIT, "get_ptr %s %x \n",lastest_part[index].name,lastest_part[index].offset); index++; part++; } #endif }
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; }
part_t *part_get(char *name) { int index = 0; part_t *part = cust_part_tbl(); while (part->name && index < PART_MAX_COUNT) { if (!strcmp(name, part->name)) { #if CFG_PMT_SUPPORT return pmt_get_part(part, index); #else return part; #endif } part++; index++; } return NULL; }
void part_dump(void) { blkdev_t *bdev; part_t *part; u32 blksz; u64 start, end; bdev = blkdev_get(CFG_BOOT_DEV); part = cust_part_tbl(); blksz = bdev->blksz; print("\n[%s] blksz: %dB\n", MOD, blksz); while (part->name) { start = (u64)part->startblk * blksz; end = (u64)(part->startblk + part->blks) * blksz - 1; print("[%s] [0x%llx-0x%llx] \"%s\" (%d blocks) \n", MOD, start, end, part->name, part->blks); part++; } }
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; }