1 /*
2  * (C) Copyright 2002
3  * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
4  *
5  * (C) Copyright 2007
6  * Daniel Hellstrom, Gaisler Research, daniel@gaisler.com.
7  *
8  * See file CREDITS for list of people who contributed to this
9  * project.
10  *
11  * This program is free software; you can redistribute it and/or
12  * modify it under the terms of the GNU General Public License as
13  * published by the Free Software Foundation; either version 2 of
14  * the License, or (at your option) any later version.
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19  * GNU General Public License for more details.
20  *
21  * You should have received a copy of the GNU General Public License
22  * along with this program; if not, write to the Free Software
23  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
24  * MA 02111-1307 USA
25  */
26 
27 #ifndef	__ASM_GBL_DATA_H
28 #define __ASM_GBL_DATA_H
29 
30 #include "asm/types.h"
31 
32 /*
33  * The following data structure is placed in some memory wich is
34  * available very early after boot (like DPRAM on MPC8xx/MPC82xx, or
35  * some locked parts of the data cache) to allow for a minimum set of
36  * global variables during system initialization (until we have set
37  * up the memory controller so that we can use RAM).
38  *
39  * Keep it *SMALL* and remember to set CONFIG_SYS_GBL_DATA_SIZE > sizeof(gd_t)
40  */
41 
42 typedef struct global_data {
43 	bd_t *bd;
44 	unsigned long flags;
45 	unsigned long baudrate;
46 	unsigned long cpu_clk;	/* CPU clock in Hz!             */
47 	unsigned long bus_clk;
48 
49 	phys_size_t ram_size;		/* RAM size */
50 	unsigned long reloc_off;	/* Relocation Offset */
51 	unsigned long reset_status;	/* reset status register at boot        */
52 	unsigned long env_addr;	/* Address  of Environment struct       */
53 	unsigned long env_valid;	/* Checksum of Environment valid?       */
54 	unsigned long have_console;	/* serial_init() was called */
55 
56 #if defined(CONFIG_LCD) || defined(CONFIG_VIDEO)
57 	unsigned long fb_base;	/* Base address of framebuffer memory   */
58 #endif
59 #if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER)
60 	unsigned long post_log_word;	/* Record POST activities */
61 	unsigned long post_init_f_time;	/* When post_init_f started */
62 #endif
63 #ifdef CONFIG_BOARD_TYPES
64 	unsigned long board_type;
65 #endif
66 #ifdef CONFIG_MODEM_SUPPORT
67 	unsigned long do_mdm_init;
68 	unsigned long be_quiet;
69 #endif
70 #ifdef CONFIG_LWMON
71 	unsigned long kbd_status;
72 #endif
73 	void **jt;		/* jump table */
74 } gd_t;
75 
76 /*
77  * Global Data Flags
78  */
79 #define	GD_FLG_RELOC	0x00001	/* Code was relocated to RAM            */
80 #define	GD_FLG_DEVINIT	0x00002	/* Devices have been initialized        */
81 #define	GD_FLG_SILENT	0x00004	/* Silent mode                          */
82 #define	GD_FLG_POSTFAIL	0x00008	/* Critical POST test failed		*/
83 #define	GD_FLG_POSTSTOP	0x00010	/* POST seqeunce aborted		*/
84 #define	GD_FLG_LOGINIT	0x00020	/* Log Buffer has been initialized	*/
85 #define GD_FLG_DISABLE_CONSOLE	0x00040		/* Disable console (in & out)	 */
86 
87 #define DECLARE_GLOBAL_DATA_PTR     register volatile gd_t *gd asm ("%g7")
88 
89 #endif				/* __ASM_GBL_DATA_H */
90