Skip to content
Snippets Groups Projects
Commit 42d25327 authored by Timo Ketola's avatar Timo Ketola Committed by Albert ARIBAUD
Browse files

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: default avatarTimo Ketola <timo@exertus.fi>
Acked-by: default avatarStefano Babic <sbabic@denx.de>
parent 3996a96c
No related branches found
No related tags found
No related merge requests found
...@@ -28,10 +28,15 @@ ...@@ -28,10 +28,15 @@
#include <asm/io.h> #include <asm/io.h>
#include <asm/arch/imx-regs.h> #include <asm/arch/imx-regs.h>
#include <asm/arch/imx25-pinmux.h> #include <asm/arch/imx25-pinmux.h>
#include <asm/arch/clock.h>
#ifdef CONFIG_MXC_MMC #ifdef CONFIG_MXC_MMC
#include <asm/arch/mxcmmc.h> #include <asm/arch/mxcmmc.h>
#endif #endif
#ifdef CONFIG_FSL_ESDHC
DECLARE_GLOBAL_DATA_PTR;
#endif
/* /*
* get the system pll clock in Hz * get the system pll clock in Hz
* *
...@@ -105,6 +110,20 @@ ulong imx_get_perclk(int clk) ...@@ -105,6 +110,20 @@ ulong imx_get_perclk(int clk)
return lldiv(fref, div); 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 get_cpu_rev(void)
{ {
u32 srev; u32 srev;
...@@ -182,6 +201,14 @@ int cpu_eth_init(bd_t *bis) ...@@ -182,6 +201,14 @@ int cpu_eth_init(bd_t *bis)
#endif #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. * Initializes on-chip MMC controllers.
* to override, implement board_mmc_init() * to override, implement board_mmc_init()
......
...@@ -26,11 +26,34 @@ ...@@ -26,11 +26,34 @@
#ifndef __ASM_ARCH_CLOCK_H #ifndef __ASM_ARCH_CLOCK_H
#define __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_perclk(int clk);
ulong imx_get_ahbclk(void); ulong imx_get_ahbclk(void);
#define imx_get_uartclk() imx_get_perclk(15) #define imx_get_uartclk() imx_get_perclk(15)
#define imx_get_fecclk() (imx_get_ahbclk()/2) #define imx_get_fecclk() (imx_get_ahbclk()/2)
unsigned int mxc_get_clock(enum mxc_clock clk);
#endif /* __ASM_ARCH_CLOCK_H */ #endif /* __ASM_ARCH_CLOCK_H */
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment