uboot/include/asm-generic/global_data.h
<<
>>
Prefs
   1/*
   2 * Copyright (c) 2012 The Chromium OS Authors.
   3 * (C) Copyright 2002-2010
   4 * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
   5 *
   6 * SPDX-License-Identifier:     GPL-2.0+
   7 */
   8
   9#ifndef __ASM_GENERIC_GBL_DATA_H
  10#define __ASM_GENERIC_GBL_DATA_H
  11/*
  12 * The following data structure is placed in some memory which is
  13 * available very early after boot (like DPRAM on MPC8xx/MPC82xx, or
  14 * some locked parts of the data cache) to allow for a minimum set of
  15 * global variables during system initialization (until we have set
  16 * up the memory controller so that we can use RAM).
  17 *
  18 * Keep it *SMALL* and remember to set GENERATED_GBL_DATA_SIZE > sizeof(gd_t)
  19 *
  20 * Each architecture has its own private fields. For now all are private
  21 */
  22
  23#ifndef __ASSEMBLY__
  24#include <linux/list.h>
  25
  26typedef struct global_data {
  27        bd_t *bd;
  28        unsigned long flags;
  29        unsigned int baudrate;
  30        unsigned long cpu_clk;  /* CPU clock in Hz!             */
  31        unsigned long bus_clk;
  32        /* We cannot bracket this with CONFIG_PCI due to mpc5xxx */
  33        unsigned long pci_clk;
  34        unsigned long mem_clk;
  35#if defined(CONFIG_LCD) || defined(CONFIG_VIDEO)
  36        unsigned long fb_base;  /* Base address of framebuffer mem */
  37#endif
  38#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER)
  39        unsigned long post_log_word;  /* Record POST activities */
  40        unsigned long post_log_res; /* success of POST test */
  41        unsigned long post_init_f_time;  /* When post_init_f started */
  42#endif
  43#ifdef CONFIG_BOARD_TYPES
  44        unsigned long board_type;
  45#endif
  46        unsigned long have_console;     /* serial_init() was called */
  47#ifdef CONFIG_PRE_CONSOLE_BUFFER
  48        unsigned long precon_buf_idx;   /* Pre-Console buffer index */
  49#endif
  50#ifdef CONFIG_MODEM_SUPPORT
  51        unsigned long do_mdm_init;
  52        unsigned long be_quiet;
  53#endif
  54        unsigned long env_addr; /* Address  of Environment struct */
  55        unsigned long env_valid;        /* Checksum of Environment valid? */
  56
  57        unsigned long ram_top;  /* Top address of RAM used by U-Boot */
  58
  59        unsigned long relocaddr;        /* Start address of U-Boot in RAM */
  60        phys_size_t ram_size;   /* RAM size */
  61        unsigned long mon_len;  /* monitor len */
  62        unsigned long irq_sp;           /* irq stack pointer */
  63        unsigned long start_addr_sp;    /* start_addr_stackpointer */
  64        unsigned long reloc_off;
  65        struct global_data *new_gd;     /* relocated global data */
  66
  67#ifdef CONFIG_DM
  68        struct udevice  *dm_root;       /* Root instance for Driver Model */
  69        struct udevice  *dm_root_f;     /* Pre-relocation root instance */
  70        struct list_head uclass_root;   /* Head of core tree */
  71#endif
  72
  73        const void *fdt_blob;   /* Our device tree, NULL if none */
  74        void *new_fdt;          /* Relocated FDT */
  75        unsigned long fdt_size; /* Space reserved for relocated FDT */
  76        void **jt;              /* jump table */
  77        char env_buf[32];       /* buffer for getenv() before reloc. */
  78#ifdef CONFIG_TRACE
  79        void            *trace_buff;    /* The trace buffer */
  80#endif
  81#if defined(CONFIG_SYS_I2C)
  82        int             cur_i2c_bus;    /* current used i2c bus */
  83#endif
  84#ifdef CONFIG_SYS_I2C_MXC
  85        void *srdata[10];
  86#endif
  87        unsigned long timebase_h;
  88        unsigned long timebase_l;
  89#ifdef CONFIG_SYS_MALLOC_F_LEN
  90        unsigned long malloc_base;      /* base address of early malloc() */
  91        unsigned long malloc_limit;     /* limit address */
  92        unsigned long malloc_ptr;       /* current address */
  93#endif
  94        struct udevice *cur_serial_dev; /* current serial device */
  95        struct arch_global_data arch;   /* architecture-specific data */
  96} gd_t;
  97#endif
  98
  99/*
 100 * Global Data Flags
 101 */
 102#define GD_FLG_RELOC            0x00001 /* Code was relocated to RAM       */
 103#define GD_FLG_DEVINIT          0x00002 /* Devices have been initialized   */
 104#define GD_FLG_SILENT           0x00004 /* Silent mode                     */
 105#define GD_FLG_POSTFAIL         0x00008 /* Critical POST test failed       */
 106#define GD_FLG_POSTSTOP         0x00010 /* POST seqeunce aborted           */
 107#define GD_FLG_LOGINIT          0x00020 /* Log Buffer has been initialized */
 108#define GD_FLG_DISABLE_CONSOLE  0x00040 /* Disable console (in & out)      */
 109#define GD_FLG_ENV_READY        0x00080 /* Env. imported into hash table   */
 110#define GD_FLG_SERIAL_READY     0x00100 /* Pre-reloc serial console ready  */
 111#define GD_FLG_FULL_MALLOC_INIT 0x00200 /* Full malloc() is ready          */
 112
 113#endif /* __ASM_GENERIC_GBL_DATA_H */
 114