aboutsummaryrefslogtreecommitdiffstats
path: root/recipes-bsp/u-boot/u-boot-v2012.04.01/0028-i.MX25-esdhc-Add-mxc_get_clock-infrastructure.patch
diff options
context:
space:
mode:
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.patch114
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
+