@@ -162,11 +162,104 @@ void BSP_LCD_PowerUp(void)
162162
163163
164164
165+ uint32_t BSP_GetOtpBase (void )
166+ {
167+ return MPI2_MEM_BASE ;
168+ }
169+
170+ void HAL_PreInit (void )
171+ {
172+ // __asm("B .");
173+ /* not switch back to XT48 if other clock source has been selected already */
174+ if (RCC_SYSCLK_HRC48 == HAL_RCC_HCPU_GetClockSrc (RCC_CLK_MOD_SYS ))
175+ {
176+ // To avoid somebody cancel request.
177+ HAL_HPAON_EnableXT48 ();
178+ HAL_RCC_HCPU_ClockSelect (RCC_CLK_MOD_SYS , RCC_SYSCLK_HXT48 );
179+ }
180+
181+ HAL_RCC_HCPU_ClockSelect (RCC_CLK_MOD_HP_PERI , RCC_CLK_PERI_HXT48 );
182+
183+ if (PM_STANDBY_BOOT != SystemPowerOnModeGet ())
184+ {
185+ // Halt LCPU first to avoid LCPU in running state
186+ HAL_HPAON_WakeCore (CORE_ID_LCPU );
187+ HAL_RCC_Reset_and_Halt_LCPU (1 );
188+ // get system configure from EFUSE
189+ BSP_System_Config ();
190+ HAL_HPAON_StartGTimer ();
191+ HAL_PMU_EnableRC32K (1 );
192+ HAL_PMU_LpCLockSelect (PMU_LPCLK_RC32 );
193+
194+ HAL_PMU_EnableDLL (1 );
195+
196+ HAL_PMU_EnableXTAL32 ();
197+ if (HAL_PMU_LXTReady () != HAL_OK )
198+ HAL_ASSERT (0 );
199+ // RTC/GTIME/LPTIME Using same low power clock source
200+ HAL_RTC_ENABLE_LXT ();
201+
202+ {
203+ uint8_t is_enable_lxt = 1 ;
204+ uint32_t wdt_staus = 0xFF ;
205+ uint32_t wdt_time = 0 ;
206+ uint16_t wdt_clk = 32768 ;
207+ uint8_t is_lcpu_rccal = 1 ;
208+ HAL_LCPU_CONFIG_set (HAL_LCPU_CONFIG_XTAL_ENABLED , & is_enable_lxt , 1 );
209+ HAL_LCPU_CONFIG_set (HAL_LCPU_CONFIG_WDT_STATUS , & wdt_staus , 4 );
210+ HAL_LCPU_CONFIG_set (HAL_LCPU_CONFIG_WDT_TIME , & wdt_time , 4 );
211+ HAL_LCPU_CONFIG_set (HAL_LCPU_CONFIG_WDT_CLK_FEQ , & wdt_clk , 2 );
212+ HAL_LCPU_CONFIG_set (HAL_LCPU_CONFIG_BT_RC_CAL_IN_L , & is_lcpu_rccal , 1 );
213+ HAL_PMU_SetWdt ((uint32_t )hwp_wdt2 ); // Add reboot cause for watchdog2
214+ }
215+
216+
217+ HAL_RCC_LCPU_ClockSelect (RCC_CLK_MOD_LP_PERI , RCC_CLK_PERI_HXT48 );
218+
219+ HAL_HPAON_CANCEL_LP_ACTIVE_REQUEST ();
220+ }
221+
222+ HAL_RCC_HCPU_ConfigHCLK (240 );
223+
224+ // Reset sysclk used by HAL_Delay_us
225+ HAL_Delay_us (0 );
226+ //HAL_sw_breakpoint();
227+
228+ }
165229
166230void board_early_init (void ) {
167231
232+ HAL_StatusTypeDef status ;
168233
234+ #if defined(HAL_V2D_GPU_MODULE_ENABLED )
235+ HAL_RCC_ResetModule (RCC_MOD_GPU );
236+ #endif
169237
238+ HAL_PreInit ();
239+
240+ #ifdef SOC_BF0_HCPU
241+ if (PM_STANDBY_BOOT != SystemPowerOnModeGet ())
242+ {
243+ // Except Standby mode, all other boot mode need to re-calibrate RC48
244+ status = HAL_RCC_CalibrateRC48 ();
245+ HAL_ASSERT (HAL_OK == status );
246+ }
247+ #endif /* SOC_BF0_HCPU */
248+
249+ HAL_RCC_Init ();
250+
251+ #ifdef SOC_BF0_HCPU
252+ if (PM_STANDBY_BOOT != SystemPowerOnModeGet ())
253+ {
254+ HAL_PMU_Init ();
255+ }
256+ #endif /* SOC_BF0_HCPU */
257+
258+ #ifdef SOC_BF0_HCPU
259+ /* init AES_ACC as normal mode */
260+ __HAL_SYSCFG_CLEAR_SECURITY ();
261+ HAL_EFUSE_Init ();
262+ #endif
170263
171264}
172265
0 commit comments