Skip to content

Commit a1901d2

Browse files
authored
Merge pull request #615 from FrameworkComputer/hx30.LFW_retry
Iris: add wdt for clock stuck
2 parents 2bf3ffd + 2645851 commit a1901d2

1 file changed

Lines changed: 33 additions & 0 deletions

File tree

chip/mchp/lfw/ec_lfw.c

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,37 @@ enum ec_image system_get_image_copy(void)
353353
return MCHP_VBAT_RAM(MCHP_IMAGETYPE_IDX);
354354
}
355355

356+
/**
357+
* lfw wdt
358+
* this function is for RTC power fail are not stable
359+
* when the RTC power domain comes up later than the EC ALW power domain
360+
* will cause PLL lock never stable also make EC stuck in while
361+
* add wdt to reset EC lfw again
362+
* timeout default follow CONFIG_WATCHDOG_PERIOD_MS(1.6s)
363+
*/
364+
void lfw_wdt(void)
365+
{
366+
/* Clear WDT PCR sleep enable */
367+
MCHP_PCR_SLP_DIS_DEV(MCHP_PCR_WDT);
368+
369+
/* Set timeout. It takes 1007us to decrement WDG_CNT by 1. */
370+
MCHP_WDG_LOAD = CONFIG_WATCHDOG_PERIOD_MS * 1000 / 1007;
371+
372+
/* start watchdog */
373+
MCHP_WDG_CTL |= 1;
374+
375+
/* Reload watchdog */
376+
MCHP_WDG_KICK = 1;
377+
}
378+
379+
void lfw_wdt_stop(void)
380+
{
381+
/* Stop watchdog */
382+
MCHP_WDG_CTL &= ~1;
383+
384+
/* Reload watchdog */
385+
MCHP_WDG_KICK = 1;
386+
}
356387

357388
/*
358389
* lfw_main is entered by MEC BootROM or EC_RO/RW calling it directly.
@@ -404,7 +435,9 @@ void lfw_main(void)
404435
trace0(0, LFW, 0, "LFW first trace");
405436

406437
timer_init();
438+
lfw_wdt();
407439
clock_init();
440+
lfw_wdt_stop();
408441
cpu_init();
409442
dma_init();
410443
uart_init();

0 commit comments

Comments
 (0)