U-Boot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Simon Glass <sjg@chromium.org>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v3 08/28] Introduce generic global_data
Date: Thu, 16 Feb 2012 06:48:55 -0800	[thread overview]
Message-ID: <1329403755-6396-9-git-send-email-sjg@chromium.org> (raw)
In-Reply-To: <1329403755-6396-1-git-send-email-sjg@chromium.org>

We want to unify the global_data structure. Most fields are common across
architectures, but there are a fair number of SOC-specific additions. It
isn't clear how best to deal with these, but for now we just use #ifdef.

Checkpatch warnings here might be unavoidable:

warning: include/asm-generic/global_data.h,43: do not add new typedefs
warning: include/asm-generic/global_data.h,117: Use of volatile is usually wrong: see Documentation/volatile-considered-harmful.txt
warning: include/asm-generic/global_data.h,121: storage class should be at the beginning of the declaration

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 include/asm-generic/global_data.h |  115 +++++++++++++++++++++++++++++++++++++
 1 files changed, 115 insertions(+), 0 deletions(-)
 create mode 100644 include/asm-generic/global_data.h

diff --git a/include/asm-generic/global_data.h b/include/asm-generic/global_data.h
new file mode 100644
index 0000000..6199926
--- /dev/null
+++ b/include/asm-generic/global_data.h
@@ -0,0 +1,115 @@
+/*
+ * (C) Copyright 2002-2010
+ * Wolfgang Denk, DENX Software Engineering, wd at denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef	__ASM_GENERIC_GBL_DATA_H
+#define __ASM_GENERIC_GBL_DATA_H
+/*
+ * 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)
+ *
+ * sjg at chromium.org: Well it would be nice to have a generic one of these
+ * since so many fields are similar. But it means that everyone architecture
+ * will want to add its own nutty fields. Perhaps that is no bad thing since
+ * it shows up inconsistences and might produce downward pressure on the
+ * number of fields.
+ */
+
+#ifndef __ASSEMBLY__
+typedef struct global_data {
+	bd_t		*bd;
+	unsigned long	flags;
+	unsigned long	baudrate;
+#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
+	unsigned long	have_console;	/* serial_init() was called */
+#ifdef CONFIG_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? */
+	/* Here begins ARM-specific things. Needs discussion */
+#ifdef CONFIG_AT91FAMILY
+	/* "static data" needed by at91's clock.c */
+	unsigned long	cpu_clk_rate_hz;
+	unsigned long	main_clk_rate_hz;
+	unsigned long	mck_rate_hz;
+	unsigned long	plla_rate_hz;
+	unsigned long	pllb_rate_hz;
+	unsigned long	at91_pllb_usb_init;
+#endif
+#ifdef CONFIG_ARM
+	/* "static data" needed by most of timer.c on ARM platforms */
+	unsigned long	timer_rate_hz;
+	unsigned long	tbl;
+	unsigned long	tbu;
+	unsigned long long	timer_reset_value;
+	unsigned long	lastinc;
+#endif
+#ifdef CONFIG_IXP425
+	unsigned long	timestamp;
+#endif
+	/* TODO: is this the same as relocaddr, or something else? */
+	unsigned long	dest_addr;	/* Post-relocation address of U-Boot */
+	unsigned long	dest_addr_sp;
+	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;
+#if !(defined(CONFIG_SYS_ICACHE_OFF) && defined(CONFIG_SYS_DCACHE_OFF))
+	unsigned long	tlb_addr;
+#endif
+	struct global_data *new_gd;	/* relocated global data */
+	const void	*fdt_blob;	/* Our device tree, NULL if none */
+	void		**jt;		/* jump table */
+	char		env_buf[32];	/* buffer for getenv() before reloc. */
+} gd_t;
+#endif
+
+/*
+ * Global Data Flags
+ */
+#define	GD_FLG_RELOC		0x00001	/* Code was relocated to RAM	   */
+#define	GD_FLG_DEVINIT		0x00002	/* Devices have been initialized   */
+#define	GD_FLG_SILENT		0x00004	/* Silent mode			   */
+#define	GD_FLG_POSTFAIL		0x00008	/* Critical POST test failed	   */
+#define	GD_FLG_POSTSTOP		0x00010	/* POST seqeunce aborted	   */
+#define	GD_FLG_LOGINIT		0x00020	/* Log Buffer has been initialized */
+#define GD_FLG_DISABLE_CONSOLE	0x00040	/* Disable console (in & out)	   */
+#define GD_FLG_ENV_READY	0x00080	/* Env. imported into hash table   */
+
+#endif /* __ASM_GENERIC_GBL_DATA_H */
-- 
1.7.7.3

  parent reply	other threads:[~2012-02-16 14:48 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-02-16 14:48 [U-Boot] [PATCH v3 0/28] Create generic board init for ARM, x86, PPC Simon Glass
2012-02-16 14:48 ` [U-Boot] [PATCH v3 01/28] arm: Change board baud_rate to ulong Simon Glass
2012-02-16 14:48 ` [U-Boot] [PATCH v3 02/28] x86: " Simon Glass
2012-02-16 14:48 ` [U-Boot] [PATCH v3 03/28] arm: Only display frame buffer info if there is LCD/video support Simon Glass
2012-02-16 14:48 ` [U-Boot] [PATCH v3 04/28] x86: Remove compiler warning in sc520_timer.c Simon Glass
2012-02-16 14:48 ` [U-Boot] [PATCH v3 05/28] x86: Remove dead code in eNET Simon Glass
2012-02-16 14:48 ` [U-Boot] [PATCH v3 06/28] x86: Add initial memory barrier macros Simon Glass
2012-02-16 14:48 ` [U-Boot] [PATCH v3 07/28] ppc: " Simon Glass
2012-02-16 14:48 ` Simon Glass [this message]
2012-03-06  5:01   ` [U-Boot] [PATCH v3 08/28] Introduce generic global_data Mike Frysinger
2012-03-06  6:22     ` Simon Glass
2012-03-06  6:36     ` Simon Glass
2012-02-16 14:48 ` [U-Boot] [PATCH v3 09/28] Introduce generic u-boot.h file Simon Glass
2012-02-16 14:48 ` [U-Boot] [PATCH v3 10/28] Introduce generic link symbol file Simon Glass
2012-02-16 14:48 ` [U-Boot] [PATCH v3 11/28] arm: Use sections header to obtain link symbols Simon Glass
2012-03-06  5:03   ` Mike Frysinger
2012-03-06  6:24     ` Simon Glass
2012-03-06 16:17       ` Mike Frysinger
2012-03-08  6:39         ` Simon Glass
2012-03-11  1:54           ` Mike Frysinger
2012-03-15  3:05             ` Simon Glass
2012-02-16 14:48 ` [U-Boot] [PATCH v3 12/28] x86: Change stub example to use asm-generic/sections.h Simon Glass
2012-02-16 14:49 ` [U-Boot] [PATCH v3 13/28] Introduce a basic initcall implementation Simon Glass
2012-02-16 14:49 ` [U-Boot] [PATCH v3 14/28] Define CONFIG_SYS_LEGACY_BOARD everywhere Simon Glass
2012-02-16 14:49 ` [U-Boot] [PATCH v3 15/28] Introduce generic pre-relocation board_f.c Simon Glass
2012-02-16 14:49 ` [U-Boot] [PATCH v3 16/28] Introduce generic post-relocation board_r.c Simon Glass
2012-02-16 14:49 ` [U-Boot] [PATCH v3 17/28] Add spl load feature Simon Glass
2012-02-16 14:49 ` [U-Boot] [PATCH v3 18/28] arm: Enable generic board support Simon Glass
2012-02-16 14:49 ` [U-Boot] [PATCH v3 19/28] Add CONFIG_SYS_SYM_OFFSETS to support offset symbols Simon Glass
2012-02-16 14:49 ` [U-Boot] [PATCH v3 20/28] x86: Use sections header to obtain link symbols Simon Glass
2012-02-16 14:49 ` [U-Boot] [PATCH v3 21/28] Add x86 fields to generic global_data Simon Glass
2012-02-16 14:49 ` [U-Boot] [PATCH v3 22/28] x86: Enable generic board support Simon Glass
2012-02-16 14:49 ` [U-Boot] [PATCH v3 23/28] Add ppc fields to generic global data Simon Glass
2012-02-16 14:49 ` [U-Boot] [PATCH v3 24/28] Adjust board_f for ppc Simon Glass
2012-02-16 14:49 ` [U-Boot] [PATCH v3 25/28] Adjust board_r.c for PowerPC Simon Glass
2012-02-16 14:49 ` [U-Boot] [PATCH v3 26/28] ppc: Enable generic board board Simon Glass
2012-02-16 14:49 ` [U-Boot] [PATCH v3 27/28] tegra: Mark board init files for ARMv4t Simon Glass
2012-02-16 14:49 ` [U-Boot] [PATCH v3 28/28] tegra: Enable generic board for Seaboard Simon Glass

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1329403755-6396-9-git-send-email-sjg@chromium.org \
    --to=sjg@chromium.org \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox