]> code.ossystems Code Review - meta-freescale.git/blob
4ebbc1b8e6145eab01cd084cbbca1275c1b82908
[meta-freescale.git] /
1 From b5e9dc88dbb9636129d3a600d9874477d2059716 Mon Sep 17 00:00:00 2001
2 From: Timo Ketola <timo@exertus.fi>
3 Date: Wed, 18 Apr 2012 22:55:28 +0000
4 Subject: [PATCH 28/56] i.MX25: esdhc: Add mxc_get_clock infrastructure
5
6 Defining CONFIG_FSL_ESDHC brings in a call to get_clocks, so let's
7 implement get_clocks function. This is how it seems to be implemented
8 elsewhere.
9
10 Signed-off-by: Timo Ketola <timo@exertus.fi>
11 Acked-by: Stefano Babic <sbabic@denx.de>
12 ---
13  arch/arm/cpu/arm926ejs/mx25/generic.c  |   27 +++++++++++++++++++++++++++
14  arch/arm/include/asm/arch-mx25/clock.h |   23 +++++++++++++++++++++++
15  2 files changed, 50 insertions(+)
16
17 diff --git a/arch/arm/cpu/arm926ejs/mx25/generic.c b/arch/arm/cpu/arm926ejs/mx25/generic.c
18 index 9cadb7c..8b07dae 100644
19 --- a/arch/arm/cpu/arm926ejs/mx25/generic.c
20 +++ b/arch/arm/cpu/arm926ejs/mx25/generic.c
21 @@ -28,10 +28,15 @@
22  #include <asm/io.h>
23  #include <asm/arch/imx-regs.h>
24  #include <asm/arch/imx25-pinmux.h>
25 +#include <asm/arch/clock.h>
26  #ifdef CONFIG_MXC_MMC
27  #include <asm/arch/mxcmmc.h>
28  #endif
29  
30 +#ifdef CONFIG_FSL_ESDHC
31 +DECLARE_GLOBAL_DATA_PTR;
32 +#endif
33 +
34  /*
35   *  get the system pll clock in Hz
36   *
37 @@ -105,6 +110,20 @@ ulong imx_get_perclk(int clk)
38         return lldiv(fref, div);
39  }
40  
41 +unsigned int mxc_get_clock(enum mxc_clock clk)
42 +{
43 +       if (clk >= MXC_CLK_NUM)
44 +               return -1;
45 +       switch (clk) {
46 +       case MXC_ARM_CLK:
47 +               return imx_get_armclk();
48 +       case MXC_FEC_CLK:
49 +               return imx_get_ahbclk();
50 +       default:
51 +               return imx_get_perclk(clk);
52 +       }
53 +}
54 +
55  u32 get_cpu_rev(void)
56  {
57         u32 srev;
58 @@ -182,6 +201,14 @@ int cpu_eth_init(bd_t *bis)
59  #endif
60  }
61  
62 +int get_clocks(void)
63 +{
64 +#ifdef CONFIG_FSL_ESDHC
65 +       gd->sdhc_clk = mxc_get_clock(MXC_ESDHC_CLK);
66 +#endif
67 +       return 0;
68 +}
69 +
70  /*
71   * Initializes on-chip MMC controllers.
72   * to override, implement board_mmc_init()
73 diff --git a/arch/arm/include/asm/arch-mx25/clock.h b/arch/arm/include/asm/arch-mx25/clock.h
74 index c59f588..0f47eaf 100644
75 --- a/arch/arm/include/asm/arch-mx25/clock.h
76 +++ b/arch/arm/include/asm/arch-mx25/clock.h
77 @@ -26,11 +26,34 @@
78  #ifndef __ASM_ARCH_CLOCK_H
79  #define __ASM_ARCH_CLOCK_H
80  
81 +enum mxc_clock {
82 +       MXC_CSI_CLK,
83 +       MXC_EPIT_CLK,
84 +       MXC_ESAI_CLK,
85 +       MXC_ESDHC1_CLK,
86 +       MXC_ESDHC2_CLK,
87 +       MXC_GPT_CLK,
88 +       MXC_I2C_CLK,
89 +       MXC_LCDC_CLK,
90 +       MXC_NFC_CLK,
91 +       MXC_OWIRE_CLK,
92 +       MXC_PWM_CLK,
93 +       MXC_SIM1_CLK,
94 +       MXC_SIM2_CLK,
95 +       MXC_SSI1_CLK,
96 +       MXC_SSI2_CLK,
97 +       MXC_UART_CLK,
98 +       MXC_ARM_CLK,
99 +       MXC_FEC_CLK,
100 +       MXC_CLK_NUM
101 +};
102 +
103  ulong imx_get_perclk(int clk);
104  ulong imx_get_ahbclk(void);
105  
106  #define imx_get_uartclk() imx_get_perclk(15)
107  #define imx_get_fecclk() (imx_get_ahbclk()/2)
108  
109 +unsigned int mxc_get_clock(enum mxc_clock clk);
110  
111  #endif /* __ASM_ARCH_CLOCK_H */
112 -- 
113 1.7.10
114