Merge branch 'master' of git://git.denx.de/u-boot-samsung
[platform/kernel/u-boot.git] / include / asm-generic / global_data.h
index 9c5a1e1..fb90be9 100644 (file)
  */
 
 #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 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 */
+       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 */
+       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 */
-#ifdef CONFIG_PRE_CONSOLE_BUFFER
+#if CONFIG_IS_ENABLED(PRE_CONSOLE_BUFFER)
        unsigned long precon_buf_idx;   /* Pre-Console buffer index */
 #endif
-#ifdef CONFIG_MODEM_SUPPORT
-       unsigned long do_mdm_init;
-       unsigned long be_quiet;
-#endif
-       unsigned long env_addr; /* Address  of Environment struct */
+       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 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 */
+       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;
@@ -69,12 +65,18 @@ typedef struct global_data {
        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 */
-       void **jt;              /* jump table */
-       char env_buf[32];       /* buffer for getenv() before reloc. */
+       const void *fdt_blob;           /* Our device tree, NULL if none */
+       void *new_fdt;                  /* Relocated FDT */
+       unsigned long fdt_size;         /* Space reserved for relocated FDT */
+#ifdef CONFIG_OF_LIVE
+       struct device_node *of_root;
+#endif
+       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
@@ -84,20 +86,45 @@ typedef struct global_data {
 #ifdef CONFIG_SYS_I2C_MXC
        void *srdata[10];
 #endif
-       unsigned long timebase_h;
-       unsigned long timebase_l;
+       unsigned int timebase_h;
+       unsigned int 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
+#ifdef CONFIG_BOOTSTAGE
+       struct bootstage_data *bootstage;       /* Bootstage information */
+       struct bootstage_data *new_bootstage;   /* Relocated bootstage info */
+#endif
 } gd_t;
 #endif
 
+#ifdef CONFIG_BOARD_TYPES
+#define gd_board_type()                gd->board_type
+#else
+#define gd_board_type()                0
+#endif
+
 /*
- * Global Data Flags
+ * Global Data Flags - the top 16 bits are reserved for arch-specific flags
  */
 #define GD_FLG_RELOC           0x00001 /* Code was relocated to RAM       */
 #define GD_FLG_DEVINIT         0x00002 /* Devices have been initialized   */
@@ -109,5 +136,10 @@ typedef struct global_data {
 #define GD_FLG_ENV_READY       0x00080 /* Env. imported into hash table   */
 #define GD_FLG_SERIAL_READY    0x00100 /* Pre-reloc serial console ready  */
 #define GD_FLG_FULL_MALLOC_INIT        0x00200 /* Full malloc() is ready          */
+#define GD_FLG_SPL_INIT                0x00400 /* spl_init() has been called      */
+#define GD_FLG_SKIP_RELOC      0x00800 /* Don't relocate                  */
+#define GD_FLG_RECORD          0x01000 /* Record console                  */
+#define GD_FLG_ENV_DEFAULT     0x02000 /* Default variable flag           */
+#define GD_FLG_SPL_EARLY_INIT  0x04000 /* Early SPL init is done          */
 
 #endif /* __ASM_GENERIC_GBL_DATA_H */