Patchwork [U-Boot,V4,1/8] i.MX25: esdhc: Add mxc_get_clock infrastructure

login
register
mail settings
Submitter Timo Ketola
Date April 19, 2012, 8:55 a.m.
Message ID <1334825735-27992-2-git-send-email-timo@exertus.fi>
Download mbox | patch
Permalink /patch/153692/
State Awaiting Upstream
Headers show

Comments

Timo Ketola - April 19, 2012, 8:55 a.m.
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>
---

Changes in v4:
- Rewrapped commit message

Changes in v2:
- Rebased to u-boot-imx next

 arch/arm/cpu/arm926ejs/mx25/generic.c  |   27 +++++++++++++++++++++++++++
 arch/arm/include/asm/arch-mx25/clock.h |   23 +++++++++++++++++++++++
 2 files changed, 50 insertions(+), 0 deletions(-)
Stefano Babic - April 19, 2012, 4:15 p.m.
On 19/04/2012 10:55, Timo Ketola wrote:
> 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>
> ---
> 
> Changes in v4:
> - Rewrapped commit message
> 
> Changes in v2:
> - Rebased to u-boot-imx next
> 
>  arch/arm/cpu/arm926ejs/mx25/generic.c  |   27 +++++++++++++++++++++++++++
>  arch/arm/include/asm/arch-mx25/clock.h |   23 +++++++++++++++++++++++
>  2 files changed, 50 insertions(+), 0 deletions(-)
> 

Acked-by: Stefano Babic <sbabic@denx.de>

Best regards,
Stefano Babic
Stefano Babic - May 6, 2012, 5:24 p.m.
On 19/04/2012 10:55, Timo Ketola wrote:
> 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>
> ---
> 
> Changes in v4:
> - Rewrapped commit message
> 
> Changes in v2:
> - Rebased to u-boot-imx next
> 
>  arch/arm/cpu/arm926ejs/mx25/generic.c  |   27 +++++++++++++++++++++++++++
>  arch/arm/include/asm/arch-mx25/clock.h |   23 +++++++++++++++++++++++
>  2 files changed, 50 insertions(+), 0 deletions(-)
> 

Applied to u-boot-imx, thanks.

Best regards,
Stefano Babic

Patch

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 */