On 21/08/2012 23:07, Benoît Thébaudeau wrote: > Define default SoC input clock frequencies for i.MX35 in order to get rid of > duplicated definitions. > > Signed-off-by: Benoît Thébaudeau <benoit.thebaud...@advansee.com> > Cc: Stefano Babic <sba...@denx.de> > --- > This patch depends on http://patchwork.ozlabs.org/patch/177437/ . > > Changes for v2: > - New patch. > > .../arch/arm/cpu/arm1136/mx35/generic.c | 43 > ++++++++------------ > .../arch/arm/cpu/arm1136/mx35/timer.c | 2 +- > .../arch/arm/include/asm/arch-mx35/clock.h | 14 +++++++ > .../include/configs/flea3.h | 1 - > .../include/configs/mx35pdk.h | 1 - > 5 files changed, 31 insertions(+), 30 deletions(-) > > diff --git u-boot-imx-88e73dd.orig/arch/arm/cpu/arm1136/mx35/generic.c > u-boot-imx-88e73dd/arch/arm/cpu/arm1136/mx35/generic.c > index 8f61069..04c8341 100644 > --- u-boot-imx-88e73dd.orig/arch/arm/cpu/arm1136/mx35/generic.c > +++ u-boot-imx-88e73dd/arch/arm/cpu/arm1136/mx35/generic.c > @@ -149,9 +149,7 @@ static u32 get_mcu_main_clk(void) > struct ccm_regs *ccm = > (struct ccm_regs *)IMX_CCM_BASE; > arm_div = get_arm_div(readl(&ccm->pdr0), &fi, &fd); > - fi *= > - decode_pll(readl(&ccm->mpctl), > - CONFIG_MX35_HCLK_FREQ); > + fi *= decode_pll(readl(&ccm->mpctl), MXC_HCLK); > return fi / (arm_div * fd); > } > > @@ -193,12 +191,10 @@ u32 imx_get_uartclk(void) > (struct ccm_regs *)IMX_CCM_BASE; > u32 pdr4 = readl(&ccm->pdr4); > > - if (readl(&ccm->pdr3) & MXC_CCM_PDR3_UART_M_U) { > + if (readl(&ccm->pdr3) & MXC_CCM_PDR3_UART_M_U) > freq = get_mcu_main_clk(); > - } else { > - freq = decode_pll(readl(&ccm->ppctl), > - CONFIG_MX35_HCLK_FREQ); > - } > + else > + freq = decode_pll(readl(&ccm->ppctl), MXC_HCLK); > freq /= CCM_GET_DIVIDER(pdr4, > MXC_CCM_PDR4_UART_PODF_MASK, > MXC_CCM_PDR4_UART_PODF_OFFSET) + 1; > @@ -253,12 +249,10 @@ unsigned int mxc_get_main_clock(enum mxc_main_clock clk) > break; > case USB_CLK: > usb_podf = (reg4 >> 22) & 0x3F; > - if (reg4 & 0x200) { > + if (reg4 & 0x200) > pll = get_mcu_main_clk(); > - } else { > - pll = decode_pll(readl(&ccm->ppctl), > - CONFIG_MX35_HCLK_FREQ); > - } > + else > + pll = decode_pll(readl(&ccm->ppctl), MXC_HCLK); > > ret_val = pll / (usb_podf + 1); > break; > @@ -285,15 +279,14 @@ unsigned int mxc_get_peri_clock(enum mxc_peri_clock clk) > clk_sel = mpdr3 & (1 << 14); > pdf = (mpdr4 >> 10) & 0x3F; > ret_val = ((clk_sel != 0) ? mxc_get_main_clock(CPU_CLK) : > - decode_pll(readl(&ccm->ppctl), CONFIG_MX35_HCLK_FREQ)) / > - (pdf + 1); > + decode_pll(readl(&ccm->ppctl), MXC_HCLK)) / (pdf + 1); > break; > case SSI1_BAUD: > pre_pdf = (mpdr2 >> 24) & 0x7; > pdf = mpdr2 & 0x3F; > clk_sel = mpdr2 & (1 << 6); > ret_val = ((clk_sel != 0) ? mxc_get_main_clock(CPU_CLK) : > - decode_pll(readl(&ccm->ppctl), CONFIG_MX35_HCLK_FREQ)) / > + decode_pll(readl(&ccm->ppctl), MXC_HCLK)) / > ((pre_pdf + 1) * (pdf + 1)); > break; > case SSI2_BAUD: > @@ -301,15 +294,14 @@ unsigned int mxc_get_peri_clock(enum mxc_peri_clock clk) > pdf = (mpdr2 >> 8) & 0x3F; > clk_sel = mpdr2 & (1 << 6); > ret_val = ((clk_sel != 0) ? mxc_get_main_clock(CPU_CLK) : > - decode_pll(readl(&ccm->ppctl), CONFIG_MX35_HCLK_FREQ)) / > + decode_pll(readl(&ccm->ppctl), MXC_HCLK)) / > ((pre_pdf + 1) * (pdf + 1)); > break; > case CSI_BAUD: > clk_sel = mpdr2 & (1 << 7); > pdf = (mpdr2 >> 16) & 0x3F; > ret_val = ((clk_sel != 0) ? mxc_get_main_clock(CPU_CLK) : > - decode_pll(readl(&ccm->ppctl), CONFIG_MX35_HCLK_FREQ)) / > - (pdf + 1); > + decode_pll(readl(&ccm->ppctl), MXC_HCLK)) / (pdf + 1); > break; > case MSHC_CLK: > pre_pdf = readl(&ccm->pdr1); > @@ -317,36 +309,33 @@ unsigned int mxc_get_peri_clock(enum mxc_peri_clock clk) > pdf = (pre_pdf >> 22) & 0x3F; > pre_pdf = (pre_pdf >> 28) & 0x7; > ret_val = ((clk_sel != 0) ? mxc_get_main_clock(CPU_CLK) : > - decode_pll(readl(&ccm->ppctl), CONFIG_MX35_HCLK_FREQ)) / > + decode_pll(readl(&ccm->ppctl), MXC_HCLK)) / > ((pre_pdf + 1) * (pdf + 1)); > break; > case ESDHC1_CLK: > clk_sel = mpdr3 & 0x40; > pdf = mpdr3 & 0x3F; > ret_val = ((clk_sel != 0) ? mxc_get_main_clock(CPU_CLK) : > - decode_pll(readl(&ccm->ppctl), CONFIG_MX35_HCLK_FREQ)) / > - (pdf + 1); > + decode_pll(readl(&ccm->ppctl), MXC_HCLK)) / (pdf + 1); > break; > case ESDHC2_CLK: > clk_sel = mpdr3 & 0x40; > pdf = (mpdr3 >> 8) & 0x3F; > ret_val = ((clk_sel != 0) ? mxc_get_main_clock(CPU_CLK) : > - decode_pll(readl(&ccm->ppctl), CONFIG_MX35_HCLK_FREQ)) / > - (pdf + 1); > + decode_pll(readl(&ccm->ppctl), MXC_HCLK)) / (pdf + 1); > break; > case ESDHC3_CLK: > clk_sel = mpdr3 & 0x40; > pdf = (mpdr3 >> 16) & 0x3F; > ret_val = ((clk_sel != 0) ? mxc_get_main_clock(CPU_CLK) : > - decode_pll(readl(&ccm->ppctl), CONFIG_MX35_HCLK_FREQ)) / > - (pdf + 1); > + decode_pll(readl(&ccm->ppctl), MXC_HCLK)) / (pdf + 1); > break; > case SPDIF_CLK: > clk_sel = mpdr3 & 0x400000; > pre_pdf = (mpdr3 >> 29) & 0x7; > pdf = (mpdr3 >> 23) & 0x3F; > ret_val = ((clk_sel != 0) ? mxc_get_main_clock(CPU_CLK) : > - decode_pll(readl(&ccm->ppctl), CONFIG_MX35_HCLK_FREQ)) / > + decode_pll(readl(&ccm->ppctl), MXC_HCLK)) / > ((pre_pdf + 1) * (pdf + 1)); > break; > default: > diff --git u-boot-imx-88e73dd.orig/arch/arm/cpu/arm1136/mx35/timer.c > u-boot-imx-88e73dd/arch/arm/cpu/arm1136/mx35/timer.c > index 04937a1..6000042 100644 > --- u-boot-imx-88e73dd.orig/arch/arm/cpu/arm1136/mx35/timer.c > +++ u-boot-imx-88e73dd/arch/arm/cpu/arm1136/mx35/timer.c > @@ -101,7 +101,7 @@ ulong get_timer_masked(void) > { > /* > * get_ticks() returns a long long (64 bit), it wraps in > - * 2^64 / CONFIG_MX25_CLK32 = 2^64 / 2^15 = 2^49 ~ 5 * 10^14 (s) ~ > + * 2^64 / MXC_CLK32 = 2^64 / 2^15 = 2^49 ~ 5 * 10^14 (s) ~ > * 5 * 10^9 days... and get_ticks() * CONFIG_SYS_HZ wraps in > * 5 * 10^6 days - long enough. > */ > diff --git u-boot-imx-88e73dd.orig/arch/arm/include/asm/arch-mx35/clock.h > u-boot-imx-88e73dd/arch/arm/include/asm/arch-mx35/clock.h > index 0575dad..60285df 100644 > --- u-boot-imx-88e73dd.orig/arch/arm/include/asm/arch-mx35/clock.h > +++ u-boot-imx-88e73dd/arch/arm/include/asm/arch-mx35/clock.h > @@ -24,6 +24,20 @@ > #ifndef __ASM_ARCH_CLOCK_H > #define __ASM_ARCH_CLOCK_H > > +#include <common.h> > + > +#ifdef CONFIG_MX35_HCLK_FREQ > +#define MXC_HCLK CONFIG_MX35_HCLK_FREQ > +#else > +#define MXC_HCLK 24000000 > +#endif > + > +#ifdef CONFIG_MX35_CLK32 > +#define MXC_CLK32 CONFIG_MX35_CLK32 > +#else > +#define MXC_CLK32 32768 > +#endif > + > enum mxc_clock { > MXC_ARM_CLK, > MXC_AHB_CLK, > diff --git u-boot-imx-88e73dd.orig/include/configs/flea3.h > u-boot-imx-88e73dd/include/configs/flea3.h > index e8e3c6a..815e2c5 100644 > --- u-boot-imx-88e73dd.orig/include/configs/flea3.h > +++ u-boot-imx-88e73dd/include/configs/flea3.h > @@ -31,7 +31,6 @@ > /* High Level Configuration Options */ > #define CONFIG_ARM1136 /* This is an arm1136 CPU core */ > #define CONFIG_MX35 > -#define CONFIG_MX35_HCLK_FREQ 24000000 > > #define CONFIG_SYS_DCACHE_OFF > #define CONFIG_SYS_CACHELINE_SIZE 32 > diff --git u-boot-imx-88e73dd.orig/include/configs/mx35pdk.h > u-boot-imx-88e73dd/include/configs/mx35pdk.h > index f930ed0..751a1e3 100644 > --- u-boot-imx-88e73dd.orig/include/configs/mx35pdk.h > +++ u-boot-imx-88e73dd/include/configs/mx35pdk.h > @@ -31,7 +31,6 @@ > /* High Level Configuration Options */ > #define CONFIG_ARM1136 /* This is an arm1136 CPU core */ > #define CONFIG_MX35 > -#define CONFIG_MX35_HCLK_FREQ 24000000 > > #define CONFIG_DISPLAY_CPUINFO > >
Nice clean-up Acked-by: Stefano Babic <sba...@denx.de> Best regards, Stefano Babic -- ===================================================================== DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sba...@denx.de ===================================================================== _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot