blob: 71ef9b077f45b3c7b9ea1f1c8e7e0d449cc57ff2 [file] [log] [blame]
Aneesh Vd2f18c22011-07-21 09:09:59 -04001/*
2 * (C) Copyright 2010
3 * Texas Instruments, <www.ti.com>
4 *
5 * Aneesh V <aneesh@ti.com>
6 *
7 * See file CREDITS for list of people who contributed to this
8 * project.
9 *
10 * This program is free software; you can redistribute it and/or
11 * modify it under the terms of the GNU General Public License as
12 * published by the Free Software Foundation; either version 2 of
13 * the License, or (at your option) any later version.
14 *
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
19 *
20 * You should have received a copy of the GNU General Public License
21 * along with this program; if not, write to the Free Software
22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
23 * MA 02111-1307 USA
24 */
25#ifndef _OMAP_COMMON_H_
26#define _OMAP_COMMON_H_
27
Aneesh V37768012011-07-21 09:10:07 -040028/* Max value for DPLL multiplier M */
29#define OMAP_DPLL_MAX_N 127
30
Aneesh Vd2f18c22011-07-21 09:09:59 -040031/* HW Init Context */
32#define OMAP_INIT_CONTEXT_SPL 0
33#define OMAP_INIT_CONTEXT_UBOOT_FROM_NOR 1
34#define OMAP_INIT_CONTEXT_UBOOT_AFTER_SPL 2
35#define OMAP_INIT_CONTEXT_UBOOT_AFTER_CH 3
36
Aneesh Vbcae7212011-07-21 09:10:21 -040037void preloader_console_init(void);
38
Aneesh V8cf686e2011-07-21 09:10:27 -040039/* Boot device */
Sricharan508a58f2011-11-15 09:49:55 -050040#ifdef CONFIG_OMAP54XX
41#define BOOT_DEVICE_NONE 0
42#define BOOT_DEVICE_XIP 1
43#define BOOT_DEVICE_XIPWAIT 2
44#define BOOT_DEVICE_NAND 3
45#define BOOT_DEVICE_ONE_NAND 4
46#define BOOT_DEVICE_MMC1 5
47#define BOOT_DEVICE_MMC2 6
Balaji T Kf75231b2012-03-12 02:25:47 +000048#define BOOT_DEVICE_MMC2_2 7
Sricharan508a58f2011-11-15 09:49:55 -050049#elif defined(CONFIG_OMAP44XX) /* OMAP4 */
Aneesh V8cf686e2011-07-21 09:10:27 -040050#define BOOT_DEVICE_NONE 0
51#define BOOT_DEVICE_XIP 1
52#define BOOT_DEVICE_XIPWAIT 2
53#define BOOT_DEVICE_NAND 3
54#define BOOT_DEVICE_ONE_NAND 4
55#define BOOT_DEVICE_MMC1 5
56#define BOOT_DEVICE_MMC2 6
Balaji T Kf75231b2012-03-12 02:25:47 +000057#define BOOT_DEVICE_MMC2_2 0xFF
Sandeep Paulrajd6cac9c2011-09-16 12:35:00 -040058#elif defined(CONFIG_OMAP34XX) /* OMAP3 */
Simon Schwarzbb085b82011-09-14 15:29:26 -040059#define BOOT_DEVICE_NONE 0
60#define BOOT_DEVICE_XIP 1
61#define BOOT_DEVICE_NAND 2
62#define BOOT_DEVICE_ONE_NAND 3
63#define BOOT_DEVICE_MMC2 5 /*emmc*/
64#define BOOT_DEVICE_MMC1 6
65#define BOOT_DEVICE_XIPWAIT 7
Balaji T Kf75231b2012-03-12 02:25:47 +000066#define BOOT_DEVICE_MMC2_2 0xFF
Chandan Nath8a8f0842012-01-09 20:38:59 +000067#elif defined(CONFIG_AM33XX) /* AM33XX */
68#define BOOT_DEVICE_NAND 5
69#define BOOT_DEVICE_MMC1 8
Tom Rini0689a2e2012-08-08 10:31:08 -070070#define BOOT_DEVICE_MMC2 9 /* eMMC or daughter card */
Chandan Nath8a8f0842012-01-09 20:38:59 +000071#define BOOT_DEVICE_UART 65
Balaji T Kf75231b2012-03-12 02:25:47 +000072#define BOOT_DEVICE_MMC2_2 0xFF
Simon Schwarzbb085b82011-09-14 15:29:26 -040073#endif
Aneesh V8cf686e2011-07-21 09:10:27 -040074
75/* Boot type */
76#define MMCSD_MODE_UNDEFINED 0
77#define MMCSD_MODE_RAW 1
78#define MMCSD_MODE_FAT 2
Simon Schwarzbb085b82011-09-14 15:29:26 -040079#define NAND_MODE_HW_ECC 3
80
81struct spl_image_info {
82 const char *name;
83 u8 os;
84 u32 load_addr;
85 u32 entry_point;
86 u32 size;
87};
88
89extern struct spl_image_info spl_image;
Aneesh V8cf686e2011-07-21 09:10:27 -040090
Sricharan78f455c2011-11-15 09:50:03 -050091extern u32* boot_params_ptr;
Aneesh V8cf686e2011-07-21 09:10:27 -040092u32 omap_boot_device(void);
93u32 omap_boot_mode(void);
94
Simon Schwarzbb085b82011-09-14 15:29:26 -040095/* SPL common function s*/
96void spl_parse_image_header(const struct image_header *header);
Andreas Müller761ca312012-01-04 15:26:24 +000097void omap_rev_string(void);
Simon Schwarz9e70c082012-03-15 04:01:37 +000098void spl_board_prepare_for_linux(void);
Simon Schwarz379c19a2012-03-15 04:01:38 +000099int spl_start_uboot(void);
Simon Schwarzbb085b82011-09-14 15:29:26 -0400100
101/* NAND SPL functions */
102void spl_nand_load_image(void);
103
104/* MMC SPL functions */
105void spl_mmc_load_image(void);
106
Matt Porter24de3572012-01-31 12:03:57 +0000107/* YMODEM SPL functions */
108void spl_ymodem_load_image(void);
109
Tom Riniee08a822011-11-23 05:13:06 +0000110#ifdef CONFIG_SPL_BOARD_INIT
111void spl_board_init(void);
112#endif
113
SRICHARAN R087189f2012-03-12 02:25:40 +0000114static inline u32 omap_revision(void)
115{
116 extern u32 *const omap_si_rev;
117 return *omap_si_rev;
118}
119
Sricharan508a58f2011-11-15 09:49:55 -0500120/*
121 * silicon revisions.
122 * Moving this to common, so that most of code can be moved to common,
123 * directories.
124 */
125
126/* omap4 */
127#define OMAP4430_SILICON_ID_INVALID 0xFFFFFFFF
128#define OMAP4430_ES1_0 0x44300100
129#define OMAP4430_ES2_0 0x44300200
130#define OMAP4430_ES2_1 0x44300210
131#define OMAP4430_ES2_2 0x44300220
132#define OMAP4430_ES2_3 0x44300230
133#define OMAP4460_ES1_0 0x44600100
Aneesh V94047582011-11-21 23:39:03 +0000134#define OMAP4460_ES1_1 0x44600110
Sricharan508a58f2011-11-15 09:49:55 -0500135
136/* omap5 */
137#define OMAP5430_SILICON_ID_INVALID 0
138#define OMAP5430_ES1_0 0x54300100
Lokesh Vutla0a0bf7b2012-05-22 00:03:22 +0000139#define OMAP5432_ES1_0 0x54320100
Aneesh Vd2f18c22011-07-21 09:09:59 -0400140#endif /* _OMAP_COMMON_H_ */