diff options
Diffstat (limited to 'recipes-bsp/u-boot/u-boot-v2012.04.01/0028-i.MX25-esdhc-Add-mxc_get_clock-infrastructure.patch')
-rw-r--r-- | recipes-bsp/u-boot/u-boot-v2012.04.01/0028-i.MX25-esdhc-Add-mxc_get_clock-infrastructure.patch | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/recipes-bsp/u-boot/u-boot-v2012.04.01/0028-i.MX25-esdhc-Add-mxc_get_clock-infrastructure.patch b/recipes-bsp/u-boot/u-boot-v2012.04.01/0028-i.MX25-esdhc-Add-mxc_get_clock-infrastructure.patch new file mode 100644 index 0000000..4ebbc1b --- /dev/null +++ b/recipes-bsp/u-boot/u-boot-v2012.04.01/0028-i.MX25-esdhc-Add-mxc_get_clock-infrastructure.patch @@ -0,0 +1,114 @@ +From b5e9dc88dbb9636129d3a600d9874477d2059716 Mon Sep 17 00:00:00 2001 +From: Timo Ketola <timo@exertus.fi> +Date: Wed, 18 Apr 2012 22:55:28 +0000 +Subject: [PATCH 28/56] i.MX25: esdhc: Add mxc_get_clock infrastructure + +Defining CONFIG_FSL_ESDHC brings in a call to get_clocks, so let's +implement get_clocks function. This is how it seems to be implemented +elsewhere. + +Signed-off-by: Timo Ketola <timo@exertus.fi> +Acked-by: Stefano Babic <sbabic@denx.de> +--- + arch/arm/cpu/arm926ejs/mx25/generic.c | 27 +++++++++++++++++++++++++++ + arch/arm/include/asm/arch-mx25/clock.h | 23 +++++++++++++++++++++++ + 2 files changed, 50 insertions(+) + +diff --git a/arch/arm/cpu/arm926ejs/mx25/generic.c b/arch/arm/cpu/arm926ejs/mx25/generic.c +index 9cadb7c..8b07dae 100644 +--- a/arch/arm/cpu/arm926ejs/mx25/generic.c ++++ b/arch/arm/cpu/arm926ejs/mx25/generic.c +@@ -28,10 +28,15 @@ + #include <asm/io.h> + #include <asm/arch/imx-regs.h> + #include <asm/arch/imx25-pinmux.h> ++#include <asm/arch/clock.h> + #ifdef CONFIG_MXC_MMC + #include <asm/arch/mxcmmc.h> + #endif + ++#ifdef CONFIG_FSL_ESDHC ++DECLARE_GLOBAL_DATA_PTR; ++#endif ++ + /* + * get the system pll clock in Hz + * +@@ -105,6 +110,20 @@ ulong imx_get_perclk(int clk) + return lldiv(fref, div); + } + ++unsigned int mxc_get_clock(enum mxc_clock clk) ++{ ++ if (clk >= MXC_CLK_NUM) ++ return -1; ++ switch (clk) { ++ case MXC_ARM_CLK: ++ return imx_get_armclk(); ++ case MXC_FEC_CLK: ++ return imx_get_ahbclk(); ++ default: ++ return imx_get_perclk(clk); ++ } ++} ++ + u32 get_cpu_rev(void) + { + u32 srev; +@@ -182,6 +201,14 @@ int cpu_eth_init(bd_t *bis) + #endif + } + ++int get_clocks(void) ++{ ++#ifdef CONFIG_FSL_ESDHC ++ gd->sdhc_clk = mxc_get_clock(MXC_ESDHC_CLK); ++#endif ++ return 0; ++} ++ + /* + * Initializes on-chip MMC controllers. + * to override, implement board_mmc_init() +diff --git a/arch/arm/include/asm/arch-mx25/clock.h b/arch/arm/include/asm/arch-mx25/clock.h +index c59f588..0f47eaf 100644 +--- a/arch/arm/include/asm/arch-mx25/clock.h ++++ b/arch/arm/include/asm/arch-mx25/clock.h +@@ -26,11 +26,34 @@ + #ifndef __ASM_ARCH_CLOCK_H + #define __ASM_ARCH_CLOCK_H + ++enum mxc_clock { ++ MXC_CSI_CLK, ++ MXC_EPIT_CLK, ++ MXC_ESAI_CLK, ++ MXC_ESDHC1_CLK, ++ MXC_ESDHC2_CLK, ++ MXC_GPT_CLK, ++ MXC_I2C_CLK, ++ MXC_LCDC_CLK, ++ MXC_NFC_CLK, ++ MXC_OWIRE_CLK, ++ MXC_PWM_CLK, ++ MXC_SIM1_CLK, ++ MXC_SIM2_CLK, ++ MXC_SSI1_CLK, ++ MXC_SSI2_CLK, ++ MXC_UART_CLK, ++ MXC_ARM_CLK, ++ MXC_FEC_CLK, ++ MXC_CLK_NUM ++}; ++ + ulong imx_get_perclk(int clk); + ulong imx_get_ahbclk(void); + + #define imx_get_uartclk() imx_get_perclk(15) + #define imx_get_fecclk() (imx_get_ahbclk()/2) + ++unsigned int mxc_get_clock(enum mxc_clock clk); + + #endif /* __ASM_ARCH_CLOCK_H */ +-- +1.7.10 + |