diff --git a/firmware/drivers/rtc/rtc_imx233.c b/firmware/drivers/rtc/rtc_imx233.c index df139dbf41..72f11a78c8 100644 --- a/firmware/drivers/rtc/rtc_imx233.c +++ b/firmware/drivers/rtc/rtc_imx233.c @@ -28,8 +28,8 @@ #define YEAR1980 315532800 /* 1980/1/1 00:00:00 in UTC */ -#if defined(SANSA_FUZEPLUS) || defined(CREATIVE_ZENXFI3) || defined(SONY_NWZE360) || \ - defined(SONY_NWZE370) +#if defined(SANSA_FUZEPLUS) || defined(SONY_NWZE360) || defined(SONY_NWZE370) || \ + defined(CREATIVE_ZENXFI2) || defined(CREATIVE_ZENXFI3) #define USE_PERSISTENT #endif diff --git a/firmware/target/arm/imx233/rtc-imx233.h b/firmware/target/arm/imx233/rtc-imx233.h index 46fe1cd79a..df4e9d3483 100644 --- a/firmware/target/arm/imx233/rtc-imx233.h +++ b/firmware/target/arm/imx233/rtc-imx233.h @@ -86,10 +86,21 @@ static inline void imx233_rtc_init(void) BF_CLR(RTC_CTRL, SFTRST); udelay(5); /* only need 3 GPMI clocks (1us) */ BF_CLR(RTC_CTRL, CLKGATE); +#if defined(SANSA_FUZEPLUS) #ifdef BM_RTC_PERSISTENT0_DISABLE_XTALOK + while (BF_RD(RTC_STAT, NEW_REGS)!=0) {}; BF_SET(RTC_PERSISTENT0, XTAL24MHZ_PWRUP, DISABLE_XTALOK); #endif + while (BF_RD(RTC_STAT, NEW_REGS)!=0) {}; BF_CLR(RTC_PERSISTENT0, CLOCKSOURCE); +#else + /* confirmed for CREATIVE_ZEN and CREATIVE_ZENXFI2 */ + /* FIXME: test SONY_NWZE360 and SONY_NWZE370 targets */ + while (BF_RD(RTC_STAT, NEW_REGS)!=0) {}; + BF_SET(RTC_PERSISTENT0, XTAL32KHZ_PWRUP, CLOCKSOURCE); + while (BF_RD(RTC_STAT, NEW_REGS)!=0) {}; + BF_CLR(RTC_PERSISTENT0, XTAL24MHZ_PWRUP, DISABLE_XTALOK); +#endif imx233_rtc_enable_watchdog(false); }