uboot/include/asm-generic/global_data.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0+ */
   2/*
   3 * Copyright (c) 2012 The Chromium OS Authors.
   4 * (C) Copyright 2002-2010
   5 * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
   6 */
   7
   8#ifndef __ASM_GENERIC_GBL_DATA_H
   9#define __ASM_GENERIC_GBL_DATA_H
  10/*
  11 * The following data structure is placed in some memory which is
  12 * available very early after boot (like DPRAM on MPC8xx/MPC82xx, or
  13 * some locked parts of the data cache) to allow for a minimum set of
  14 * global variables during system initialization (until we have set
  15 * up the memory controller so that we can use RAM).
  16 *
  17 * Keep it *SMALL* and remember to set GENERATED_GBL_DATA_SIZE > sizeof(gd_t)
  18 *
  19 * Each architecture has its own private fields. For now all are private
  20 */
  21
  22#ifndef __ASSEMBLY__
  23#include <fdtdec.h>
  24#include <membuff.h>
  25#include <linux/list.h>
  26
  27typedef struct global_data {
  28        bd_t *bd;
  29        unsigned long flags;
  30        unsigned int baudrate;
  31        unsigned long cpu_clk;          /* CPU clock in Hz!             */
  32        unsigned long bus_clk;
  33        /* We cannot bracket this with CONFIG_PCI due to mpc5xxx */
  34        unsigned long pci_clk;
  35        unsigned long mem_clk;
  36#if defined(CONFIG_LCD) || defined(CONFIG_VIDEO) || defined(CONFIG_DM_VIDEO)
  37        unsigned long fb_base;          /* Base address of framebuffer mem */
  38#endif
  39#if defined(CONFIG_POST)
  40        unsigned long post_log_word;    /* Record POST activities */
  41        unsigned long post_log_res;     /* success of POST test */
  42        unsigned long post_init_f_time; /* When post_init_f started */
  43#endif
  44#ifdef CONFIG_BOARD_TYPES
  45        unsigned long board_type;
  46#endif
  47        unsigned long have_console;     /* serial_init() was called */
  48#if CONFIG_IS_ENABLED(PRE_CONSOLE_BUFFER)
  49        unsigned long precon_buf_idx;   /* Pre-Console buffer index */
  50#endif
  51        unsigned long env_addr;         /* Address  of Environment struct */
  52        unsigned long env_valid;        /* Environment valid? enum env_valid */
  53        unsigned long env_has_init;     /* Bitmask of boolean of struct env_location offsets */
  54        int env_load_prio;              /* Priority of the loaded environment */
  55
  56        unsigned long ram_base;         /* Base address of RAM used by U-Boot */
  57        unsigned long ram_top;          /* Top address of RAM used by U-Boot */
  58        unsigned long relocaddr;        /* Start address of U-Boot in RAM */
  59        phys_size_t ram_size;           /* RAM size */
  60        unsigned long mon_len;          /* monitor len */
  61        unsigned long irq_sp;           /* irq stack pointer */
  62        unsigned long start_addr_sp;    /* start_addr_stackpointer */
  63        unsigned long reloc_off;
  64        struct global_data *new_gd;     /* relocated global data */
  65
  66#ifdef CONFIG_DM
  67        struct udevice  *dm_root;       /* Root instance for Driver Model */
  68        struct udevice  *dm_root_f;     /* Pre-relocation root instance */
  69        struct list_head uclass_root;   /* Head of core tree */
  70#endif
  71#ifdef CONFIG_TIMER
  72        struct udevice  *timer;         /* Timer instance for Driver Model */
  73#endif
  74
  75        const void *fdt_blob;           /* Our device tree, NULL if none */
  76        void *new_fdt;                  /* Relocated FDT */
  77        unsigned long fdt_size;         /* Space reserved for relocated FDT */
  78#ifdef CONFIG_OF_LIVE
  79        struct device_node *of_root;
  80#endif
  81
  82#if CONFIG_IS_ENABLED(MULTI_DTB_FIT)
  83        const void *multi_dtb_fit;      /* uncompressed multi-dtb FIT image */
  84#endif
  85        struct jt_funcs *jt;            /* jump table */
  86        char env_buf[32];               /* buffer for env_get() before reloc. */
  87#ifdef CONFIG_TRACE
  88        void            *trace_buff;    /* The trace buffer */
  89#endif
  90#if defined(CONFIG_SYS_I2C)
  91        int             cur_i2c_bus;    /* current used i2c bus */
  92#endif
  93#ifdef CONFIG_SYS_I2C_MXC
  94        void *srdata[10];
  95#endif
  96        unsigned int timebase_h;
  97        unsigned int timebase_l;
  98#if CONFIG_VAL(SYS_MALLOC_F_LEN)
  99        unsigned long malloc_base;      /* base address of early malloc() */
 100        unsigned long malloc_limit;     /* limit address */
 101        unsigned long malloc_ptr;       /* current address */
 102#endif
 103#ifdef CONFIG_PCI
 104        struct pci_controller *hose;    /* PCI hose for early use */
 105        phys_addr_t pci_ram_top;        /* top of region accessible to PCI */
 106#endif
 107#ifdef CONFIG_PCI_BOOTDELAY
 108        int pcidelay_done;
 109#endif
 110        struct udevice *cur_serial_dev; /* current serial device */
 111        struct arch_global_data arch;   /* architecture-specific data */
 112#ifdef CONFIG_CONSOLE_RECORD
 113        struct membuff console_out;     /* console output */
 114        struct membuff console_in;      /* console input */
 115#endif
 116#ifdef CONFIG_DM_VIDEO
 117        ulong video_top;                /* Top of video frame buffer area */
 118        ulong video_bottom;             /* Bottom of video frame buffer area */
 119#endif
 120#ifdef CONFIG_BOOTSTAGE
 121        struct bootstage_data *bootstage;       /* Bootstage information */
 122        struct bootstage_data *new_bootstage;   /* Relocated bootstage info */
 123#endif
 124#ifdef CONFIG_LOG
 125        int log_drop_count;             /* Number of dropped log messages */
 126        int default_log_level;          /* For devices with no filters */
 127        struct list_head log_head;      /* List of struct log_device */
 128        int log_fmt;                    /* Mask containing log format info */
 129#endif
 130#if CONFIG_IS_ENABLED(BLOBLIST)
 131        struct bloblist_hdr *bloblist;  /* Bloblist information */
 132        struct bloblist_hdr *new_bloblist;      /* Relocated blolist info */
 133# ifdef CONFIG_SPL
 134        struct spl_handoff *spl_handoff;
 135# endif
 136#endif
 137#if defined(CONFIG_TRANSLATION_OFFSET)
 138        fdt_addr_t translation_offset;  /* optional translation offset */
 139#endif
 140#if CONFIG_IS_ENABLED(WDT)
 141        struct udevice *watchdog_dev;
 142#endif
 143} gd_t;
 144#endif
 145
 146#ifdef CONFIG_BOARD_TYPES
 147#define gd_board_type()         gd->board_type
 148#else
 149#define gd_board_type()         0
 150#endif
 151
 152/*
 153 * Global Data Flags
 154 */
 155#define GD_FLG_RELOC            0x00001 /* Code was relocated to RAM       */
 156#define GD_FLG_DEVINIT          0x00002 /* Devices have been initialized   */
 157#define GD_FLG_SILENT           0x00004 /* Silent mode                     */
 158#define GD_FLG_POSTFAIL         0x00008 /* Critical POST test failed       */
 159#define GD_FLG_POSTSTOP         0x00010 /* POST seqeunce aborted           */
 160#define GD_FLG_LOGINIT          0x00020 /* Log Buffer has been initialized */
 161#define GD_FLG_DISABLE_CONSOLE  0x00040 /* Disable console (in & out)      */
 162#define GD_FLG_ENV_READY        0x00080 /* Env. imported into hash table   */
 163#define GD_FLG_SERIAL_READY     0x00100 /* Pre-reloc serial console ready  */
 164#define GD_FLG_FULL_MALLOC_INIT 0x00200 /* Full malloc() is ready          */
 165#define GD_FLG_SPL_INIT         0x00400 /* spl_init() has been called      */
 166#define GD_FLG_SKIP_RELOC       0x00800 /* Don't relocate                  */
 167#define GD_FLG_RECORD           0x01000 /* Record console                  */
 168#define GD_FLG_ENV_DEFAULT      0x02000 /* Default variable flag           */
 169#define GD_FLG_SPL_EARLY_INIT   0x04000 /* Early SPL init is done          */
 170#define GD_FLG_LOG_READY        0x08000 /* Log system is ready for use     */
 171#define GD_FLG_WDT_READY        0x10000 /* Watchdog is ready for use       */
 172
 173#endif /* __ASM_GENERIC_GBL_DATA_H */
 174