]>
Commit | Line | Data |
---|---|---|
6b96a20d | 1 | /* |
d34efc76 SS |
2 | * (C) Copyright 2010 |
3 | * Texas Instruments, <www.ti.com> | |
6b96a20d MK |
4 | * |
5 | * This program is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU General Public License as | |
7 | * published by the Free Software Foundation; either version 2 of | |
8 | * the License, or (at your option) any later version. | |
9 | * | |
10 | * This program is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
13 | * GNU General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU General Public License | |
16 | * along with this program; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, | |
18 | * MA 02111-1307 USA | |
19 | */ | |
20 | ||
d34efc76 SS |
21 | #ifndef _SYS_PROTO_H_ |
22 | #define _SYS_PROTO_H_ | |
23 | ||
24 | #include <asm/arch/omap4.h> | |
3776801d | 25 | #include <asm/arch/clocks.h> |
d34efc76 | 26 | #include <asm/io.h> |
d2f18c27 | 27 | #include <asm/omap_common.h> |
469ec1e3 | 28 | #include <asm/arch/mux_omap4.h> |
d34efc76 SS |
29 | |
30 | struct omap_sysinfo { | |
31 | char *board_string; | |
32 | }; | |
d2f18c27 | 33 | extern const struct omap_sysinfo sysinfo; |
d34efc76 | 34 | |
3776801d A |
35 | extern struct omap4_prcm_regs *const prcm; |
36 | ||
27952014 | 37 | void gpmc_init(void); |
d34efc76 SS |
38 | void watchdog_init(void); |
39 | u32 get_device_type(void); | |
469ec1e3 A |
40 | void do_set_mux(u32 base, struct pad_conf_entry const *array, int size); |
41 | void set_muxconf_regs_non_essential(void); | |
0e7b6217 SS |
42 | void sr32(void *, u32, u32, u32); |
43 | u32 wait_on_value(u32, u32, void *, u32); | |
44 | void sdelay(unsigned long); | |
8b457fa8 | 45 | void set_pl310_ctrl_reg(u32 val); |
ad577c8a | 46 | void omap_rev_string(char *omap4_rev_string); |
bcae7211 | 47 | void setup_clocks_for_console(void); |
3776801d A |
48 | void prcm_init(void); |
49 | void bypass_dpll(u32 *const base); | |
50 | void freq_update_core(void); | |
51 | u32 get_sys_clk_freq(void); | |
52 | u32 omap4_ddr_clk(void); | |
095aea29 | 53 | void cancel_out(u32 *num, u32 *den, u32 den_limit); |
2ae610f0 A |
54 | void sdram_init(void); |
55 | u32 omap4_sdram_size(void); | |
d34efc76 | 56 | |
d2f18c27 A |
57 | static inline u32 running_from_sdram(void) |
58 | { | |
59 | u32 pc; | |
60 | asm volatile ("mov %0, pc" : "=r" (pc)); | |
61 | return ((pc >= OMAP44XX_DRAM_ADDR_SPACE_START) && | |
62 | (pc < OMAP44XX_DRAM_ADDR_SPACE_END)); | |
63 | } | |
64 | ||
65 | static inline u8 uboot_loaded_by_spl(void) | |
66 | { | |
67 | /* | |
68 | * Configuration Header is not supported yet, so u-boot init running | |
69 | * from SDRAM implies that it was loaded by SPL. When this situation | |
70 | * changes one of these approaches could be taken: | |
71 | * i. Pass a magic from SPL to U-Boot and U-Boot save it at a known | |
72 | * location. | |
73 | * ii. Check the OPP. CH can support only 50% OPP while SPL initializes | |
74 | * the DPLLs at 100% OPP. | |
75 | */ | |
76 | return running_from_sdram(); | |
77 | } | |
78 | /* | |
79 | * The basic hardware init of OMAP(s_init()) can happen in 4 | |
80 | * different contexts: | |
81 | * 1. SPL running from SRAM | |
82 | * 2. U-Boot running from FLASH | |
83 | * 3. Non-XIP U-Boot loaded to SDRAM by SPL | |
84 | * 4. Non-XIP U-Boot loaded to SDRAM by ROM code using the | |
85 | * Configuration Header feature | |
86 | * | |
87 | * This function finds this context. | |
88 | * Defining as inline may help in compiling out unused functions in SPL | |
89 | */ | |
90 | static inline u32 omap4_hw_init_context(void) | |
91 | { | |
92 | #ifdef CONFIG_SPL_BUILD | |
93 | return OMAP_INIT_CONTEXT_SPL; | |
94 | #else | |
95 | if (uboot_loaded_by_spl()) | |
96 | return OMAP_INIT_CONTEXT_UBOOT_AFTER_SPL; | |
97 | else if (running_from_sdram()) | |
98 | return OMAP_INIT_CONTEXT_UBOOT_AFTER_CH; | |
99 | else | |
100 | return OMAP_INIT_CONTEXT_UBOOT_FROM_NOR; | |
101 | #endif | |
102 | } | |
6b96a20d | 103 | |
ad577c8a A |
104 | static inline u32 omap_revision(void) |
105 | { | |
106 | extern u32 *const omap4_revision; | |
107 | return *omap4_revision; | |
108 | } | |
109 | ||
d34efc76 | 110 | #endif |