void mt_disp_power(BOOL on) { if (on) { disp_path_ddp_clock_on(); DISP_PowerEnable(TRUE); DISP_PanelEnable(TRUE); mt_disp_update(0, 0, CFG_DISPLAY_WIDTH, CFG_DISPLAY_HEIGHT); mt_disp_update(0, 0, CFG_DISPLAY_WIDTH, CFG_DISPLAY_HEIGHT); } else { DISP_PanelEnable(FALSE); DISP_PowerEnable(FALSE); disp_path_ddp_clock_off(); } }
void cust_show_battery_capacity(UINT32 capacity) { #if MTK_QVGA_LANDSCAPE_SUPPORT // DISP_PROG_BAR_DIRECT direct = DISP_HORIZONTAL_PROG_BAR; #else // DISP_PROG_BAR_DIRECT direct = DISP_VERTICAL_PROG_BAR; #endif DISP_PROG_BAR_DIRECT direct = DISP_VERTICAL_PROG_BAR; UINT32 capacity_grids = 0; if (capacity > 100) capacity = 100; capacity_grids = (capacity * VOLTAGE_SCALE) / 100; show_logo(1); // Fill Occupied Color mt_disp_draw_prog_bar(direct, bar_rect.left + 1, bar_rect.top + 1, bar_rect.right, bar_rect.bottom, bar_occupied_color, bar_bg_color, 0, VOLTAGE_SCALE, capacity_grids); // Fill Empty Color mt_disp_draw_prog_bar(direct, bar_rect.left + 1, bar_rect.top + 1, bar_rect.right, bar_rect.bottom, bar_empty_color, bar_bg_color, capacity_grids, VOLTAGE_SCALE, VOLTAGE_SCALE - capacity_grids); mt_disp_update(0, 0, CFG_DISPLAY_WIDTH, CFG_DISPLAY_HEIGHT); }
static int _mtkfb_internal_test(unsigned int va, unsigned int w, unsigned int h) { // this is for debug, used in bring up day unsigned int i = 0; unsigned int color = 0; int _internal_test_block_size =240; for(i=0;i<w*h/_internal_test_block_size/_internal_test_block_size;i++) { color = (i&0x1)*0xff; //color += ((i&0x2)>>1)*0xff00; //color += ((i&0x4)>>2)*0xff0000; color += 0xff000000U; _mtkfb_draw_block(va, i%(w/_internal_test_block_size)*_internal_test_block_size, i/(w/_internal_test_block_size)*_internal_test_block_size, _internal_test_block_size, _internal_test_block_size, color); } mt_disp_update(0, 0, CFG_DISPLAY_WIDTH, CFG_DISPLAY_HEIGHT); mdelay(100); primary_display_diagnose(); return 0; _internal_test_block_size = 20; for(i=0;i<w*h/_internal_test_block_size/_internal_test_block_size;i++) { color = (i&0x1)*0xff; color += ((i&0x2)>>1)*0xff00; color += ((i&0x4)>>2)*0xff0000; color += 0xff000000U; _mtkfb_draw_block(va, i%(w/_internal_test_block_size)*_internal_test_block_size, i/(w/_internal_test_block_size)*_internal_test_block_size, _internal_test_block_size, _internal_test_block_size, color); } mt_disp_update(0, 0, CFG_DISPLAY_WIDTH, CFG_DISPLAY_HEIGHT); mdelay(100); primary_display_diagnose(); return 0; }
static void mt_disp_adjusting_hardware_addr(void) { printf("[wwy] mt_disp_adjusting_hardware_addr fb_offset_logo = %d\n",fb_offset_logo); if(fb_offset_logo == 0) { mt_get_fb_addr(); memcpy(fb_addr,(void *)((UINT32)fb_addr + 3 * fb_size),fb_size); mt_disp_update(0, 0, CFG_DISPLAY_WIDTH, CFG_DISPLAY_HEIGHT); } }
// this is a sample code for how to draw the logo by yourself. void cust_show_boot_logo(void) { void *fb_addr = mt_get_fb_addr(); UINT32 fb_size = mt_get_fb_size(); void *db_addr = mt_get_logo_db_addr(); memcpy(fb_addr, (void *)((UINT32)db_addr + fb_size * 0), fb_size); mt_disp_update(0, 0, CFG_DISPLAY_WIDTH, CFG_DISPLAY_HEIGHT); }
UINT32 mt_disp_get_lcd_time(void) { UINT32 time0, time1, lcd_time; mt_disp_update(0, 0, CFG_DISPLAY_WIDTH, CFG_DISPLAY_HEIGHT); if(lcm_params->type==LCM_TYPE_DPI) DPI_WaitVsync(); else if(lcm_params->type==LCM_TYPE_DBI) LCD_WaitForNotBusy(); else if(lcm_params->type==LCM_TYPE_DSI && lcm_params->dsi.mode!=CMD_MODE) { DSI_WaitVsync(); DSI_WaitVsync(); } time0 = gpt4_tick2time_us(gpt4_get_current_tick()); if(lcm_params->type==LCM_TYPE_DPI) DPI_WaitVsync(); else if(lcm_params->type==LCM_TYPE_DBI){ mt_disp_update(0, 0, CFG_DISPLAY_WIDTH, CFG_DISPLAY_HEIGHT); LCD_WaitForNotBusy(); } else{//DSI if(lcm_params->dsi.mode!=CMD_MODE) DSI_WaitVsync(); else DSI_StartTransfer(TRUE); // DSI_WaitBtaTE(); } time1 = gpt4_tick2time_us(gpt4_get_current_tick()); lcd_time = time1 - time0; printf("Screen Update Costs %d us\n", lcd_time); mt_disp_adjusting_hardware_addr(); if(0 != lcd_time) return (100000000/lcd_time); else return (6000); }
void mt_disp_power(BOOL on) { return; #ifndef CFG_MT6577_FPGA if (on) { // disp_path_ddp_clock_on(); DISP_PowerEnable(TRUE); DISP_PanelEnable(TRUE); mt_disp_update(0, 0, CFG_DISPLAY_WIDTH, CFG_DISPLAY_HEIGHT); } else { DISP_PanelEnable(FALSE); DISP_PowerEnable(FALSE); // disp_path_ddp_clock_off(); } #endif }
void mt_disp_show_low_battery(void) { mt_logo_get_custom_if(); if(logo_cust_if->show_boot_logo) { logo_cust_if->show_boot_logo(); } else { show_logo(2); mt_disp_update(0, 0, CFG_DISPLAY_WIDTH, CFG_DISPLAY_HEIGHT); } return; }
/* * Show charging over logo * */ void mt_disp_show_charger_ov_logo(void) { dprintf(INFO, "[lk logo: %s %d]\n",__FUNCTION__,__LINE__); mt_logo_get_custom_if(); if(logo_cust_if->show_boot_logo) { logo_cust_if->show_boot_logo(); } else { init_fb_screen(); fill_animation_logo(CHARGER_OV_INDEX, mt_get_fb_addr(), mt_get_tempfb_addr(), logo_addr, phical_screen); mt_disp_update(0, 0, CFG_DISPLAY_WIDTH, CFG_DISPLAY_HEIGHT); } return; }
/* * Show animation when poweroff charging * */ void mt_disp_show_battery_capacity(UINT32 capacity) { dprintf(INFO, "[lk logo: %s %d]capacity =%d\n",__FUNCTION__,__LINE__, capacity); mt_logo_get_custom_if(); if(logo_cust_if->show_battery_capacity) { logo_cust_if->show_battery_capacity(capacity); } else { init_fb_screen(); fill_animation_battery_by_ver(capacity, mt_get_fb_addr(), mt_get_tempfb_addr(), logo_addr, phical_screen, show_animationm_ver); mt_disp_update(0, 0, CFG_DISPLAY_WIDTH, CFG_DISPLAY_HEIGHT); } }
void platform_init(void) { dprintf(INFO, "platform_init()\n"); #ifdef LK_PROFILING unsigned int time_nand_emmc; unsigned int time_load_logo; unsigned int time_bat_init; unsigned int time_backlight; unsigned int time_show_logo; unsigned int time_boot_mode; unsigned int time_sw_env; unsigned int time_platform_init; time_platform_init = get_timer(0); time_nand_emmc = get_timer(0); #endif #ifdef MTK_EMMC_SUPPORT mmc_legacy_init(1); #else nand_init(); nand_driver_test(); #endif #ifdef LK_PROFILING printf("[PROFILE] ------- NAND/EMMC init takes %d ms -------- \n", get_timer(time_nand_emmc)); time_load_logo = get_timer(0); #endif mboot_common_load_logo((unsigned long)mt_get_logo_db_addr(), "logo"); dprintf(INFO, "Show BLACK_PICTURE\n"); mt_disp_fill_rect(0, 0, CFG_DISPLAY_WIDTH, CFG_DISPLAY_HEIGHT, 0x0); mt_disp_power(TRUE); //<2012/11/14-Yuting Shih-[BU2SC00137502]Add for LOGO display. #if 1 mt_disp_show_boot_logo(); #else mt_disp_update(0, 0, CFG_DISPLAY_WIDTH, CFG_DISPLAY_HEIGHT); mt_disp_power(1); //power on display related modules #endif //>2012/11/14-Yuting Shih-[BU2SC00137502]. #ifdef LK_PROFILING printf("[PROFILE] ------- load_logo takes %d ms -------- \n", get_timer(time_load_logo)); time_backlight = get_timer(0); #endif mt65xx_backlight_on(); #ifdef LK_PROFILING printf("[PROFILE] ------- backlight takes %d ms -------- \n", get_timer(time_backlight)); time_boot_mode = get_timer(0); #endif boot_mode_select(); #ifdef LK_PROFILING printf("[PROFILE] ------- boot mode select takes %d ms -------- \n", get_timer(time_boot_mode)); #endif /*Show download logo & message on screen */ if (g_boot_arg->boot_mode == DOWNLOAD_BOOT) { mt_disp_show_boot_logo(); video_printf(" => Downloading...\n"); mt65xx_backlight_on(); mtk_wdt_disable();//Disable wdt before jump to DA platform_uninit(); #ifdef HAVE_CACHE_PL310 l2_disable(); #endif arch_disable_cache(UCACHE); arch_disable_mmu(); jump_da(g_boot_arg->da_info.addr, g_boot_arg->da_info.arg1, g_boot_arg->da_info.arg2); } #ifdef LK_PROFILING time_bat_init = get_timer(0); #endif mt65xx_bat_init(); #ifdef LK_PROFILING printf("[PROFILE] ------- battery init takes %d ms -------- \n", get_timer(time_bat_init)); #endif /* NOTE: if define CFG_POWER_CHARGING, will rtc_boot_check() in mt65xx_bat_init() */ #ifndef CFG_POWER_CHARGING rtc_boot_check(false); #endif #ifdef LK_PROFILING time_show_logo = get_timer(0); #endif if ((g_boot_mode != ALARM_BOOT) && (g_boot_mode != FASTBOOT)) { printf("show log disable\n"); mt_disp_show_boot_logo(); printf("show log end\n"); } #ifdef LK_PROFILING printf("[PROFILE] ------- show logo takes %d ms -------- \n", get_timer(time_show_logo)); time_sw_env= get_timer(0); #endif sw_env(); #ifdef LK_PROFILING printf("[PROFILE] ------- sw_env takes %d ms -------- \n", get_timer(time_sw_env)); #endif #ifdef LK_PROFILING printf("[PROFILE] ------- platform_init takes %d ms -------- \n", get_timer(time_platform_init)); #endif }
void platform_init(void) { #ifdef LK_PROFILING unsigned int time_nand_emmc; unsigned int time_load_logo; unsigned int time_bat_init; unsigned int time_backlight; unsigned int time_show_logo; unsigned int time_boot_mode; unsigned int time_sw_env; unsigned int time_platform_init; unsigned int time_env; unsigned int time_disp_init; unsigned int time_security_init; unsigned int time_RTC_boot_Check; time_platform_init = get_timer(0); time_nand_emmc = get_timer(0); #endif dprintf(INFO, "platform_init()\n"); #ifdef DUMMY_AP dummy_ap_entry(); #endif #ifdef MTK_EMMC_SUPPORT mmc_legacy_init(1); #else #ifndef MACH_FPGA nand_init(); nand_driver_test(); #endif #endif #ifdef MTK_KERNEL_POWER_OFF_CHARGING if((g_boot_arg->boot_reason == BR_USB) && (upmu_is_chr_det() == KAL_FALSE)) { printf("[%s] Unplugged Charger/Usb between Pre-loader and Uboot in Kernel Charging Mode, Power Off \n", __func__); mt6575_power_off(); } #endif #ifdef LK_PROFILING printf("[PROFILE] ------- NAND/EMMC init takes %d ms -------- \n", get_timer(time_nand_emmc)); time_env = get_timer(0); #endif env_init(); print_env(); #ifdef LK_PROFILING dprintf(INFO,"[PROFILE] ------- ENV init takes %d ms -------- \n", (int)get_timer(time_env)); #endif #ifdef LK_PROFILING time_disp_init = get_timer(0); #endif //FIXME: Disable for MT6582 FPGA Ealry Porting #ifndef DISABLE_DISPLAY_IN_LK_FOR_82_BRINGUP if(lcm_params->type==LCM_TYPE_DSI && lcm_params->dsi.mode ==CMD_MODE) mt_disp_init((void *)g_fb_base); #endif #ifdef LK_PROFILING dprintf(INFO,"[PROFILE] ------- disp init takes %d ms -------- \n", (int)get_timer(time_disp_init)); #endif #ifdef LK_PROFILING time_load_logo = get_timer(0); #endif #ifdef CONFIG_CFB_CONSOLE //FIXME: Disable for MT6582 FPGA Ealry Porting #ifndef DISABLE_DISPLAY_IN_LK_FOR_82_BRINGUP drv_video_init(); #endif #endif //#endif #ifndef DISABLE_DISPLAY_IN_LK_FOR_82_BRINGUP mboot_common_load_logo((unsigned long)mt_get_logo_db_addr(), "logo"); dprintf(INFO, "Show BLACK_PICTURE\n"); #endif //FIXME: Disable for MT6582 FPGA Ealry Porting #ifndef DISABLE_DISPLAY_IN_LK_FOR_82_BRINGUP #ifdef MTK_BATLOWV_NO_PANEL_ON_EARLY if(!is_low_battery(0)) { #endif mt_disp_fill_rect(0, 0, CFG_DISPLAY_WIDTH, CFG_DISPLAY_HEIGHT, 0x0); mt_disp_power(TRUE); mt_disp_update(0, 0, CFG_DISPLAY_WIDTH, CFG_DISPLAY_HEIGHT); mt_disp_wait_idle(); mt_disp_update(0, 0, CFG_DISPLAY_WIDTH, CFG_DISPLAY_HEIGHT); mt_disp_wait_idle(); mt_disp_power(1); //power on display related modules #ifdef MTK_BATLOWV_NO_PANEL_ON_EARLY } #endif #endif #ifdef LK_PROFILING printf("[PROFILE] ------- load_logo takes %d ms -------- \n", get_timer(time_load_logo)); time_backlight = get_timer(0); #endif /*for kpd pmic mode setting*/ set_kpd_pmic_mode(); //FIXME: Disable for MT6582 FPGA Ealry Porting //#ifndef DISABLE_DISPLAY_IN_LK_FOR_82_BRINGUP #ifdef MTK_BATLOWV_NO_PANEL_ON_EARLY if(!is_low_battery(0)) { #endif /*some lcm panel need more time to start show picture*/ msleep(50); mt65xx_backlight_on(); #ifdef MTK_BATLOWV_NO_PANEL_ON_EARLY } #endif //#endif #ifdef LK_PROFILING printf("[PROFILE] ------- backlight takes %d ms -------- \n", get_timer(time_backlight)); time_boot_mode = get_timer(0); #endif boot_mode_select(); #ifdef LK_PROFILING printf("[PROFILE] ------- boot mode select takes %d ms -------- \n", get_timer(time_boot_mode)); #endif #ifdef MTK_SECURITY_SW_SUPPORT #ifdef LK_PROFILING time_security_init = get_timer(0); #endif /* initialize security library */ #ifdef MTK_EMMC_SUPPORT sec_func_init(1); #else sec_func_init(0); #endif #ifdef LK_PROFILING dprintf(INFO,"[PROFILE] ------- Security init takes %d ms -------- \n", (int)get_timer(time_security_init)); #endif #endif /*Show download logo & message on screen */ if (g_boot_arg->boot_mode == DOWNLOAD_BOOT) { printf("[LK] boot mode is DOWNLOAD_BOOT\n"); #ifdef MTK_SECURITY_SW_SUPPORT /* verify da before jumping to da*/ if (sec_usbdl_enabled()) { u8 *da_addr = (u8 *)g_boot_arg->da_info.addr; u32 da_len = g_boot_arg->da_info.len; u32 sig_len = g_boot_arg->da_info.sig_len; u8 *sig_addr = (unsigned char *)da_addr + (da_len - sig_len); if (da_len == 0 || sig_len == 0) { printf("[LK] da argument is invalid\n"); printf("da_addr = 0x%x\n", da_addr); printf("da_len = 0x%x\n", da_len); printf("sig_len = 0x%x\n", sig_len); } if (sec_usbdl_verify_da(da_addr, (da_len - sig_len), sig_addr, sig_len)) { /* da verify fail */ video_printf(" => Not authenticated tool, download stop...\n"); while(1); /* fix me, should not be infinite loop in lk */ } } else #endif { printf(" DA verification disabled...\n"); } mt_disp_show_boot_logo(); video_printf(" => Downloading...\n"); mt65xx_backlight_on(); mtk_wdt_disable();//Disable wdt before jump to DA platform_uninit(); #ifdef HAVE_CACHE_PL310 l2_disable(); #endif #ifdef ENABLE_L2_SHARING config_shared_SRAM_size(); #endif arch_disable_cache(UCACHE); arch_disable_mmu(); jump_da(g_boot_arg->da_info.addr, g_boot_arg->da_info.arg1, g_boot_arg->da_info.arg2); } #ifdef LK_PROFILING time_bat_init = get_timer(0); #endif mt65xx_bat_init(); #ifdef LK_PROFILING printf("[PROFILE] ------- battery init takes %d ms -------- \n", get_timer(time_bat_init)); #endif #ifndef CFG_POWER_CHARGING #ifdef LK_PROFILING time_RTC_boot_Check = get_timer(0); #endif /* NOTE: if define CFG_POWER_CHARGING, will rtc_boot_check() in mt65xx_bat_init() */ rtc_boot_check(false); #ifdef LK_PROFILING dprintf(INFO,"[PROFILE] ------- RTC boot check Init takes %d ms -------- \n", (int)get_timer(time_RTC_boot_Check)); #endif #endif #ifdef LK_PROFILING time_show_logo = get_timer(0); #endif #ifdef MTK_KERNEL_POWER_OFF_CHARGING if(kernel_charging_boot() == 1) { #ifdef MTK_BATLOWV_NO_PANEL_ON_EARLY CHARGER_TYPE CHR_Type_num = CHARGER_UNKNOWN; charging_get_charger_type(&CHR_Type_num); if ((g_boot_mode != LOW_POWER_OFF_CHARGING_BOOT) || ((CHR_Type_num != STANDARD_HOST) && (CHR_Type_num != NONSTANDARD_CHARGER))) { dprintf(INFO, "[PROFILE] ------- g_boot_mode = %d -------- \n", g_boot_mode); #endif mt_disp_power(TRUE); mt_disp_show_low_battery(); mt_disp_wait_idle(); mt65xx_leds_brightness_set(6, 110); #ifdef MTK_BATLOWV_NO_PANEL_ON_EARLY } #endif } else if(g_boot_mode != KERNEL_POWER_OFF_CHARGING_BOOT && g_boot_mode != LOW_POWER_OFF_CHARGING_BOOT) { #ifndef DISABLE_DISPLAY_IN_LK_FOR_82_BRINGUP if (g_boot_mode != ALARM_BOOT && (g_boot_mode != FASTBOOT)) { mt_disp_show_boot_logo(); } #endif } #else #ifndef DISABLE_DISPLAY_IN_LK_FOR_82_BRINGUP if (g_boot_mode != ALARM_BOOT && (g_boot_mode != FASTBOOT)) { mt_disp_show_boot_logo(); } #endif #endif #ifdef LK_PROFILING printf("[PROFILE] ------- show logo takes %d ms -------- \n", get_timer(time_show_logo)); time_sw_env= get_timer(0); #endif //sw_env(); #ifdef LK_PROFILING printf("[PROFILE] ------- sw_env takes %d ms -------- \n", get_timer(time_sw_env)); printf("[PROFILE] ------- platform_init takes %d ms -------- \n", get_timer(time_platform_init)); #endif }
void platform_init(void) { /* init timer */ //mtk_timer_init(); #ifdef LK_PROFILING unsigned int time_nand_emmc; unsigned int time_load_logo; unsigned int time_bat_init; unsigned int time_backlight; unsigned int time_show_logo; unsigned int time_boot_mode; unsigned int time_sw_env; unsigned int time_platform_init; unsigned int time_env; time_platform_init = get_timer(0); time_nand_emmc = get_timer(0); #endif dprintf(INFO, "platform_init()\n"); #ifdef MTK_MT8193_SUPPORT mt8193_init(); #endif #ifdef MTK_EMMC_SUPPORT mmc_legacy_init(1); #else nand_init(); nand_driver_test(); #endif #ifdef MTK_KERNEL_POWER_OFF_CHARGING if((g_boot_arg->boot_reason == BR_USB) && (upmu_is_chr_det() == KAL_FALSE)) { printf("[%s] Unplugged Charger/Usb between Pre-loader and Uboot in Kernel Charging Mode, Power Off \n", __func__); mt6575_power_off(); } #endif #ifdef LK_PROFILING printf("[PROFILE] ------- NAND/EMMC init takes %d ms -------- \n", get_timer(time_nand_emmc)); time_env = get_timer(0); #endif env_init(); print_env(); #ifdef LK_PROFILING printf("[PROFILE] ------- ENV init takes %d ms -------- \n", get_timer(time_env)); time_load_logo = get_timer(0); #endif mboot_common_load_logo((unsigned long)mt_get_logo_db_addr(), "logo"); #if ((!defined(MTK_NCP1851_SUPPORT)) && (!defined(MTK_BQ24196_SUPPORT))) mt_disp_power(TRUE); //power on display related modules #endif dprintf(INFO, "Show BLACK_PICTURE\n"); mt_disp_fill_rect(0, 0, CFG_DISPLAY_WIDTH, CFG_DISPLAY_HEIGHT, 0x0); mt_disp_update(0, 0, CFG_DISPLAY_WIDTH, CFG_DISPLAY_HEIGHT); mt_disp_update(0, 0, CFG_DISPLAY_WIDTH, CFG_DISPLAY_HEIGHT); #ifdef LK_PROFILING printf("[PROFILE] ------- load_logo takes %d ms -------- \n", get_timer(time_load_logo)); time_backlight = get_timer(0); #endif /*for kpd pmic mode setting*/ set_kpd_pmic_mode(); #if ((!defined(MTK_NCP1851_SUPPORT)) && (!defined(MTK_BQ24196_SUPPORT))) //mt65xx_backlight_on(); #endif #ifdef LK_PROFILING printf("[PROFILE] ------- backlight takes %d ms -------- \n", get_timer(time_backlight)); time_boot_mode = get_timer(0); #endif enable_PMIC_kpd_clock(); boot_mode_select(); #ifdef LK_PROFILING printf("[PROFILE] ------- boot mode select takes %d ms -------- \n", get_timer(time_boot_mode)); #endif /* initialize security library */ #ifdef MTK_EMMC_SUPPORT sec_func_init(1); #else sec_func_init(0); #endif /*Show download logo & message on screen */ if (g_boot_arg->boot_mode == DOWNLOAD_BOOT) { printf("[LK] boot mode is DOWNLOAD_BOOT\n"); /* verify da before jumping to da*/ if (sec_usbdl_enabled()) { u8 *da_addr = g_boot_arg->da_info.addr; u32 da_sig_len = DRV_Reg32(SRAMROM_BASE + 0x54); u32 da_len = da_sig_len >> 10; u32 sig_len = da_sig_len & 0x3ff; u8 *sig_addr = (unsigned char *)da_addr + (da_len - sig_len); if (da_len == 0 || sig_len == 0) { printf("[LK] da argument is invalid\n"); printf("da_addr = 0x%x\n", da_addr); printf("da_len = 0x%x\n", da_len); printf("sig_len = 0x%x\n", sig_len); } if (sec_usbdl_verify_da(da_addr, (da_len - sig_len), sig_addr, sig_len)) { /* da verify fail */ video_printf(" => Not authenticated tool, download stop...\n"); DRV_WriteReg32(SRAMROM_BASE + 0x54, 0x0); while(1); /* fix me, should not be infinite loop in lk */ } } else {
void cust_show_battery_capacity_new(UINT32 capacity) { #if MTK_QVGA_LANDSCAPE_SUPPORT // DISP_PROG_BAR_DIRECT direct = DISP_HORIZONTAL_PROG_BAR; #else // DISP_PROG_BAR_DIRECT direct = DISP_VERTICAL_PROG_BAR; #endif DISP_PROG_BAR_DIRECT direct = DISP_VERTICAL_PROG_BAR; printf("[ChargingAnimation]capacity : %d\n", capacity); if (capacity <= 0) { //show_logo(2); //mt_disp_update(0, 0, CFG_DISPLAY_WIDTH, CFG_DISPLAY_HEIGHT); //return; //capacity_zero ++; // if (capacity_zero > 10) capacity_zero = 2; // if (capacity_zero > 1) // { show_logo(29+capacity_zero_index); show_animation_number(number_pic_start_0,1); show_animation(14, percent_location_rect, percent_pic_addr); if(++capacity_zero_index > 1) capacity_zero_index = 0; mt_disp_update(0, 0, CFG_DISPLAY_WIDTH, CFG_DISPLAY_HEIGHT); return; // } } //else // { // capacity_zero = 0; // } if (capacity < 10 && capacity > 0) { charging_low_index ++ ; show_logo(25 + charging_low_index); if (charging_low_index >= 9) charging_low_index = 0; show_animation_number(number_pic_start_0+capacity,1); show_animation(14, percent_location_rect, percent_pic_addr); mt_disp_update(0, 0, CFG_DISPLAY_WIDTH, CFG_DISPLAY_HEIGHT); return; } if (capacity >= 100) { show_logo(37); // battery 100 mt_disp_update(0, 0, CFG_DISPLAY_WIDTH, CFG_DISPLAY_HEIGHT); return; } UINT32 capacity_grids = 0; //if (capacity > 100) capacity = 100; capacity_grids = battery_rect.bottom - (battery_rect.bottom - battery_rect.top) * (capacity - 10) / 90; printf("[ChargingAnimation]capacity : %d\n", capacity); printf("[ChargingAnimation]capacity_grids : %d\n", capacity_grids); show_logo(35); // show background show_animation_line(36,capacity_grids); // show battery capacity line top_animation_rect.bottom = capacity_grids; top_animation_rect.top = capacity_grids - top_animation_height; if (capacity <= 90) { charging_animation_index++; printf("[ChargingAnimation]top_animation : left = %d, top = %d, right = %d, bottom = %d\n", top_animation_rect.left, top_animation_rect.top, top_animation_rect.right, top_animation_rect.bottom); show_animation(15 + charging_animation_index, top_animation_rect, top_animation_addr); // show top animation if (charging_animation_index >= 9) charging_animation_index = 0; } if ((capacity >= 0)&&(capacity < 10)) { show_animation_number(number_pic_start_0+capacity,1); } if ((capacity >= 10)&&(capacity < 100)) { show_animation_number(number_pic_start_0+(capacity/10),0); show_animation_number(number_pic_start_0+(capacity%10),1); } show_animation(14, percent_location_rect, percent_pic_addr); mt_disp_update(0, 0, CFG_DISPLAY_WIDTH, CFG_DISPLAY_HEIGHT); }