void platform_init(void) { u32 ret, tmp; boot_reason_t reason; /* init watch dog, will enable AP watch dog */ mtk_wdt_init(); /*init kpd PMIC mode support*/ set_kpd_pmic_mode(); #if CFG_MDWDT_DISABLE /* no need to disable MD WDT, the code here is for backup reason */ /* disable MD0 watch dog. */ DRV_WriteReg32(0x20050000, 0x2200); /* disable MD1 watch dog. */ DRV_WriteReg32(0x30050020, 0x2200); #endif //ALPS00427972, implement the analog register formula //Set the calibration after power on //Add here for eFuse, chip version checking -> analog register calibration mt_usb_calibraion(); //ALPS00427972, implement the analog register formula /* make usb11 phy enter savecurrent mode */ mt_usb11_phy_savecurrent(); #if 1 /* FIXME */ g_boot_reason = reason = platform_boot_status(); if (reason == BR_RTC || reason == BR_POWER_KEY || reason == BR_USB || reason == BR_WDT || reason == BR_WDT_BY_PASS_PWK) rtc_bbpu_power_on(); #else g_boot_reason = BR_POWER_KEY; #endif enable_PMIC_kpd_clock(); #if CFG_EMERGENCY_DL_SUPPORT /* check if to enter emergency download mode */ if (mtk_detect_dl_keys()) { platform_emergency_download(CFG_EMERGENCY_DL_TIMEOUT_MS); } #endif /* init memory */ mt_mem_init(); #ifdef MTK_MT8193_SUPPORT mt8193_init(); #endif /* init device storeage */ ret = boot_device_init(); print("%s Init Boot Device: %s(%d)\n", MOD, ret ? "FAIL" : "OK", ret); #if CFG_REBOOT_TEST mtk_wdt_sw_reset(); while(1); #endif }
void platform_init(void) { u32 ret, tmp; boot_reason_t reason; #ifdef PL_PROFILING u32 profiling_time; profiling_time = 0; #endif #if !defined(CFG_MEM_PRESERVED_MODE) #ifdef PL_PROFILING profiling_time = get_timer(0); #endif /* init watch dog, will enable AP watch dog */ mtk_wdt_init(); #ifdef PL_PROFILING printf("#T#wdt_init=%d\n", get_timer(profiling_time)); profiling_time = get_timer(0); //for next #endif /*init kpd PMIC mode support*/ set_kpd_pmic_mode(); #ifdef PL_PROFILING printf("#T#kpd_pmic=%d\n", get_timer(profiling_time)); #endif #else //Memory Preserved mode, disable WDT DRV_WriteReg32(0x10007000, 0x22000000); #endif #if CFG_MDWDT_DISABLE /* no need to disable MD WDT, the code here is for backup reason */ /* disable MD0 watch dog. */ DRV_WriteReg32(0x20050000, 0x2200); #endif #if !defined(CFG_MEM_PRESERVED_MODE) #ifdef PL_PROFILING profiling_time = get_timer(0); #endif //ALPS00427972, implement the analog register formula //Set the calibration after power on //Add here for eFuse, chip version checking -> analog register calibration mt_usb_calibraion(); //ALPS00427972, implement the analog register formula /* make usb11 phy enter savecurrent mode */ // USB11, USB host need it, 72 with host ip, but not list in feature list, // USB20, USB target for target, // access with UM (throught CPU) will mett all '?', means protect // access with PM (BUS, not CPU) will mett all '0', means clock or Power is gating //mt_usb11_phy_savecurrent(); #ifdef PL_PROFILING printf("#T#usb calib=%d\n", get_timer(profiling_time)); profiling_time = get_timer(0); //for next #endif g_boot_reason = reason = platform_boot_status(); if (reason == BR_RTC || reason == BR_POWER_KEY || reason == BR_USB || reason == BR_WDT || reason == BR_WDT_BY_PASS_PWK #ifdef RTC_2SEC_REBOOT_ENABLE || reason == BR_2SEC_REBOOT #endif //#ifdef RTC_2SEC_REBOOT_ENABLE ) rtc_bbpu_power_on(); #ifdef PL_PROFILING printf("#T#BR&bbpu on=%d\n", get_timer(profiling_time)); profiling_time = get_timer(0); //for next #endif enable_PMIC_kpd_clock(); #ifdef PL_PROFILING printf("#T#enable PMIC kpd clk=%d\n", get_timer(profiling_time)); #endif #else rtc_bbpu_power_on(); #endif #if !defined(CFG_MEM_PRESERVED_MODE) #if CFG_EMERGENCY_DL_SUPPORT #ifdef PL_PROFILING profiling_time = get_timer(0); #endif /* check if to enter emergency download mode */ if (mtk_detect_dl_keys()) { platform_emergency_download(CFG_EMERGENCY_DL_TIMEOUT_MS); } #ifdef PL_PROFILING printf("#T#chk_emgdwl=%d\n", get_timer(profiling_time)); #endif #endif #ifdef PL_PROFILING profiling_time = get_timer(0); #endif /* init memory */ mt_mem_init(); #ifdef PL_PROFILING printf("#T#mem_init&tst=%d\n", get_timer(profiling_time)); #endif #endif #ifdef MTK_MT8193_SUPPORT mt8193_init(); #endif #ifdef PL_PROFILING profiling_time = get_timer(0); #endif /* init device storeage */ ret = boot_device_init(); print("%s Init Boot Device: %s(%d)\n", MOD, ret ? "FAIL" : "OK", ret); #ifdef PL_PROFILING printf("#T#bootdev_init=%d\n", get_timer(profiling_time)); #endif #if CFG_REBOOT_TEST mtk_wdt_sw_reset(); while(1); #endif }