diff --git a/firmware/target/arm/imx233/clkctrl-imx233.c b/firmware/target/arm/imx233/clkctrl-imx233.c index 976a9f9d3b..31fccd3e3b 100644 --- a/firmware/target/arm/imx233/clkctrl-imx233.c +++ b/firmware/target/arm/imx233/clkctrl-imx233.c @@ -23,12 +23,12 @@ #define __CLK_CLKGATE (1 << 31) #define __CLK_BUSY (1 << 29) -void imx233_enable_timrot_xtal_clk32k(bool enable) +void imx233_enable_xtal_clock(enum imx233_xtal_clkt_t xtal_clk, bool enable) { if(enable) - __REG_CLR(HW_CLKCTRL_XTAL) = HW_CLKCTRL_XTAL__TIMROT_CLK32K_GATE; + __REG_CLR(HW_CLKCTRL_XTAL) = xtal_clk; else - __REG_SET(HW_CLKCTRL_XTAL) = HW_CLKCTRL_XTAL__TIMROT_CLK32K_GATE; + __REG_SET(HW_CLKCTRL_XTAL) = xtal_clk; } void imx233_enable_clock(enum imx233_clock_t clk, bool enable) diff --git a/firmware/target/arm/imx233/clkctrl-imx233.h b/firmware/target/arm/imx233/clkctrl-imx233.h index 7aa4f716e8..e59f954071 100644 --- a/firmware/target/arm/imx233/clkctrl-imx233.h +++ b/firmware/target/arm/imx233/clkctrl-imx233.h @@ -50,6 +50,8 @@ #define HW_CLKCTRL_XTAL (*(volatile uint32_t *)(HW_CLKCTRL_BASE + 0x50)) #define HW_CLKCTRL_XTAL__TIMROT_CLK32K_GATE (1 << 26) +#define HW_CLKCTRL_XTAL__DRI_CLK24M_GATE (1 << 28) +#define HW_CLKCTRL_XTAL__FILT_CLK24M_GATE (1 << 30) #define HW_CLKCTRL_PIX (*(volatile uint32_t *)(HW_CLKCTRL_BASE + 0x60)) #define HW_CLKCTRL_PIX__DIV_BM 0xfff @@ -84,7 +86,15 @@ enum imx233_clock_t CLK_AHB /* div */ }; -void imx233_enable_timrot_xtal_clk32k(bool enable); +enum imx233_xtal_clkt_t +{ + XTAL_FILT = 1 << 30, + XTAL_DRI = 1 << 28, + XTAL_TIMROT = 1 << 26, +}; + +/* can use a mask of clocks */ +void imx233_enable_xtal_clock(enum imx233_xtal_clkt_t xtal_clk, bool enable); /* only use it for non-fractional clocks (ie not for IO) */ void imx233_enable_clock(enum imx233_clock_t clk, bool enable); void imx233_set_clock_divisor(enum imx233_clock_t clk, int div); diff --git a/firmware/target/arm/imx233/timrot-imx233.c b/firmware/target/arm/imx233/timrot-imx233.c index 0790d6255b..b7cf588cf3 100644 --- a/firmware/target/arm/imx233/timrot-imx233.c +++ b/firmware/target/arm/imx233/timrot-imx233.c @@ -75,5 +75,5 @@ void imx233_timrot_init(void) { imx233_reset_block(&HW_TIMROT_ROTCTRL); /* enable xtal path to timrot */ - imx233_enable_timrot_xtal_clk32k(true); + imx233_enable_xtal_clock(XTAL_TIMROT, true); }