include/asm-generic/global_data.h


global_data:


/*
 * The following data structure is placed in some memory which is
 * available very early after boot (like DPRAM on MPC8xx/MPC82xx, or
 * some locked parts of the data cache) to allow for a minimum set of
 * global variables during system initialization (until we have set
 * up the memory controller so that we can use RAM).
 *
 * Keep it *SMALL* and remember to set GENERATED_GBL_DATA_SIZE > sizeof(gd_t)
 *
 * Each architecture has its own private fields. For now all are private
 */
#ifndef __ASSEMBLY__
#include <membuff.h>
#include <linux/list.h>
typedef struct global_data {
 bd_t *bd;
 unsigned long flags;
 unsigned int baudrate;
 unsigned long cpu_clk;  /* CPU clock in Hz!  */
 unsigned long bus_clk;
 /* We cannot bracket this with CONFIG_PCI due to mpc5xxx */
 unsigned long pci_clk;
 unsigned long mem_clk;
#if defined(CONFIG_LCD) || defined(CONFIG_VIDEO)
 unsigned long fb_base;  /* Base address of framebuffer mem */
#endif
#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER)
 unsigned long post_log_word; /* Record POST activities */
 unsigned long post_log_res; /* success of POST test */
 unsigned long post_init_f_time; /* When post_init_f started */
#endif
#ifdef CONFIG_BOARD_TYPES
 unsigned long board_type;
#endif
 unsigned long have_console; /* serial_init() was called */
#if CONFIG_IS_ENABLED(PRE_CONSOLE_BUFFER)
 unsigned long precon_buf_idx; /* Pre-Console buffer index */
#endif
 unsigned long env_addr;  /* Address  of Environment struct */
 unsigned long env_valid; /* Checksum of Environment valid? */
 unsigned long ram_top;  /* Top address of RAM used by U-Boot */
 unsigned long relocaddr; /* Start address of U-Boot in RAM */
 phys_size_t ram_size;  /* RAM size */
 unsigned long mon_len;  /* monitor len */
 unsigned long irq_sp;  /* irq stack pointer */
 unsigned long start_addr_sp; /* start_addr_stackpointer */
 unsigned long reloc_off;
 struct global_data *new_gd; /* relocated global data */
#ifdef CONFIG_DM
 struct udevice *dm_root; /* Root instance for Driver Model */
 struct udevice *dm_root_f; /* Pre-relocation root instance */
 struct list_head uclass_root; /* Head of core tree */
#endif
#ifdef CONFIG_TIMER
 struct udevice *timer;  /* Timer instance for Driver Model */
#endif
 const void *fdt_blob;  /* Our device tree, NULL if none */
 void *new_fdt;   /* Relocated FDT */
 unsigned long fdt_size;  /* Space reserved for relocated FDT */
 struct jt_funcs *jt;  /* jump table */
 char env_buf[32];  /* buffer for getenv() before reloc. */
#ifdef CONFIG_TRACE
 void  *trace_buff; /* The trace buffer */
#endif
#if defined(CONFIG_SYS_I2C)
 int  cur_i2c_bus; /* current used i2c bus */
#endif
#ifdef CONFIG_SYS_I2C_MXC
 void *srdata[10];
#endif
 unsigned long timebase_h;
 unsigned long timebase_l;
#ifdef CONFIG_SYS_MALLOC_F_LEN
 unsigned long malloc_base; /* base address of early malloc() */
 unsigned long malloc_limit; /* limit address */
 unsigned long malloc_ptr; /* current address */
#endif
#ifdef CONFIG_PCI
 struct pci_controller *hose; /* PCI hose for early use */
 phys_addr_t pci_ram_top; /* top of region accessible to PCI */
#endif
#ifdef CONFIG_PCI_BOOTDELAY
 int pcidelay_done;
#endif
 struct udevice *cur_serial_dev; /* current serial device */
 struct arch_global_data arch; /* architecture-specific data */
#ifdef CONFIG_CONSOLE_RECORD
 struct membuff console_out; /* console output */
 struct membuff console_in; /* console input */
#endif
#ifdef CONFIG_DM_VIDEO
 ulong video_top;  /* Top of video frame buffer area */
 ulong video_bottom;  /* Bottom of video frame buffer area */
#endif
} gd_t;
#endif