From f5ac658d160d11880c2affa9c5b669404c4fe207 Mon Sep 17 00:00:00 2001 From: Amaury Pouly Date: Sun, 16 Jun 2013 20:08:49 +0200 Subject: imx233: normalise clkctrl The clkctrl functions were becoming a mess. Normalise the names, get rid of the xtal derived as special case and use the same interface. Change-Id: Ib954a8d30a6bd691914b5e0d97774ec9fc560c50 --- firmware/target/arm/imx233/clkctrl-imx233.h | 76 ++++++++--------------------- 1 file changed, 21 insertions(+), 55 deletions(-) (limited to 'firmware/target/arm/imx233/clkctrl-imx233.h') diff --git a/firmware/target/arm/imx233/clkctrl-imx233.h b/firmware/target/arm/imx233/clkctrl-imx233.h index a15adb367e..ddd8bc9221 100644 --- a/firmware/target/arm/imx233/clkctrl-imx233.h +++ b/firmware/target/arm/imx233/clkctrl-imx233.h @@ -50,67 +50,33 @@ enum imx233_clock_t CLK_XTAL, /* freq */ CLK_EMI, /* freq, div, frac, bypass */ CLK_XBUS, /* freq, div */ + CLK_FILT, /* enable */ + CLK_DRI, /* enable */ + CLK_PWM, /* enable */ + CLK_TIMROT, /* enable */ + CLK_UART, /* enable */ }; -enum imx233_xtal_clk_t -{ - XTAL_FILT = 1 << 30, - XTAL_DRI = 1 << 28, - XTAL_TIMROT = 1 << 26, - XTAM_PWM = 1 << 29, -}; - -/* Auto-Slow monitoring */ -enum imx233_as_monitor_t -{ - AS_NONE = 0, /* Do not monitor any activity */ - AS_CPU_INSTR = 1 << 21, /* Monitor CPU instruction access to AHB */ - AS_CPU_DATA = 1 << 22, /* Monitor CPU data access to AHB */ - AS_TRAFFIC = 1 << 23, /* Monitor AHB master activity */ - AS_TRAFFIC_JAM = 1 << 24, /* Monitor AHB masters (>=3) activity */ - AS_APBXDMA = 1 << 25, /* Monitor APBX DMA activity */ - AS_APBHDMA = 1 << 26, /* Monitor APBH DMA activity */ - AS_PXP = 1 << 27, /* Monitor PXP activity */ - AS_DCP = 1 << 28, /* Monitor DCP activity */ - AS_ALL = 0xff << 21, /* Monitor all activity */ -}; - -enum imx233_as_div_t -{ - AS_DIV_1 = 0, - AS_DIV_2 = 1, - AS_DIV_4 = 2, - AS_DIV_8 = 3, - AS_DIV_16 = 4, - AS_DIV_32 = 5 -}; - -/* can use a mask of clocks */ -void imx233_clkctrl_enable_xtal(enum imx233_xtal_clk_t xtal_clk, bool enable); -void imx233_clkctrl_is_xtal_enabled(enum imx233_xtal_clk_t xtal_clk, bool enable); +void imx233_clkctrl_init(void); /* only use it for non-fractional clocks (ie not for IO) */ -void imx233_clkctrl_enable_clock(enum imx233_clock_t clk, bool enable); -bool imx233_clkctrl_is_clock_enabled(enum imx233_clock_t cl); -void imx233_clkctrl_set_clock_divisor(enum imx233_clock_t clk, int div); -int imx233_clkctrl_get_clock_divisor(enum imx233_clock_t clk); +void imx233_clkctrl_enable(enum imx233_clock_t clk, bool enable); +bool imx233_clkctrl_is_enabled(enum imx233_clock_t cl); +void imx233_clkctrl_set_div(enum imx233_clock_t clk, int div); +int imx233_clkctrl_get_div(enum imx233_clock_t clk); /* call with fracdiv=0 to disable it */ -void imx233_clkctrl_set_fractional_divisor(enum imx233_clock_t clk, int fracdiv); +void imx233_clkctrl_set_frac_div(enum imx233_clock_t clk, int fracdiv); /* 0 means fractional dividor disable */ -int imx233_clkctrl_get_fractional_divisor(enum imx233_clock_t clk); -void imx233_clkctrl_set_bypass_pll(enum imx233_clock_t clk, bool bypass); -bool imx233_clkctrl_get_bypass_pll(enum imx233_clock_t clk); -void imx233_clkctrl_enable_usb_pll(bool enable); -bool imx233_clkctrl_is_usb_pll_enabled(void); -unsigned imx233_clkctrl_get_clock_freq(enum imx233_clock_t clk); - -bool imx233_clkctrl_is_emi_sync_enabled(void); - -void imx233_clkctrl_set_auto_slow_divisor(enum imx233_as_div_t div); -enum imx233_as_div_t imx233_clkctrl_get_auto_slow_divisor(void); +int imx233_clkctrl_get_frac_div(enum imx233_clock_t clk); +void imx233_clkctrl_set_bypass(enum imx233_clock_t clk, bool bypass); +bool imx233_clkctrl_get_bypass(enum imx233_clock_t clk); +void imx233_clkctrl_enable_usb(bool enable); +bool imx233_clkctrl_is_usb_enabled(void); +/* returns frequency in KHz */ +unsigned imx233_clkctrl_get_freq(enum imx233_clock_t clk); +/* auto-slow stuff */ +void imx233_clkctrl_set_auto_slow_div(unsigned div); +unsigned imx233_clkctrl_get_auto_slow_div(void); void imx233_clkctrl_enable_auto_slow(bool enable); bool imx233_clkctrl_is_auto_slow_enabled(void); -/* can use a mask of clocks */ -void imx233_clkctrl_enable_auto_slow_monitor(enum imx233_as_monitor_t monitor, bool enable); -bool imx233_clkctrl_is_auto_slow_monitor_enabled(enum imx233_as_monitor_t monitor); #endif /* CLKCTRL_IMX233_H */ -- cgit