summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJuergen Beisert <j.beisert@pengutronix.de>2007-11-05 15:20:31 +0100
committerJuergen Beisert <j.beisert@pengutronix.de>2007-11-05 15:20:31 +0100
commit0a13be8de25ea2ba37f156fbfac0555125f651f3 (patch)
tree80f9d57e07a9dfe637576d907414896fd26a3b26
parentc0f66e1ca41e1cecb547dd95404181861496ecf6 (diff)
parent4cd877a840026c10fcce9586cdf14e6c8d306078 (diff)
downloadbarebox-0a13be8de25ea2ba37f156fbfac0555125f651f3.tar.gz
barebox-0a13be8de25ea2ba37f156fbfac0555125f651f3.tar.xz
various docu added
-rw-r--r--Documentation/developers_manual.dox2
-rw-r--r--Documentation/users_manual.dox5
-rw-r--r--Doxyfile2
-rw-r--r--arch/architecture.dox29
-rw-r--r--arch/arm/cpu/cpu.c112
-rw-r--r--arch/arm/cpu/interrupts.c81
-rw-r--r--arch/arm/cpu/start-arm920t.S19
-rw-r--r--arch/sandbox/lib/common.c84
-rw-r--r--arch/sandbox/lib/tap.c5
-rw-r--r--board/board.dox80
-rw-r--r--commands/bootm.c17
-rw-r--r--common/env.c2
-rw-r--r--drivers/cfi_flash.c46
13 files changed, 407 insertions, 77 deletions
diff --git a/Documentation/developers_manual.dox b/Documentation/developers_manual.dox
index 3163c9447f..59723efbc0 100644
--- a/Documentation/developers_manual.dox
+++ b/Documentation/developers_manual.dox
@@ -16,5 +16,7 @@ Hints and tips for simply adapting U-Boot v2
Various themes:
- @subpage how_mount_works
+ - @subpage boot_preparation
+ - @subpage uboot_simul
*/ \ No newline at end of file
diff --git a/Documentation/users_manual.dox b/Documentation/users_manual.dox
index 1decdc06a1..e346a12ee7 100644
--- a/Documentation/users_manual.dox
+++ b/Documentation/users_manual.dox
@@ -1,7 +1,10 @@
/** @page users_manual User's Manual
-FIXME: Hints and tips for simply using U-Boot v2
+Who should read this part?
+Mostly everyone. The user needs it to find help for his daily work to manage
+his targets. The developer to find out all the new features that make his
+work easier.
- @subpage shell_notes
- @subpage readline_parser
diff --git a/Doxyfile b/Doxyfile
index 5d68f78d3f..38b4011ae3 100644
--- a/Doxyfile
+++ b/Doxyfile
@@ -418,7 +418,7 @@ WARNINGS = YES
# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
# automatically be disabled.
-WARN_IF_UNDOCUMENTED = YES
+WARN_IF_UNDOCUMENTED = NO
# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
# potential errors in the documentation, such as not documenting some
diff --git a/arch/architecture.dox b/arch/architecture.dox
index 85cff53ed7..3f94b3c321 100644
--- a/arch/architecture.dox
+++ b/arch/architecture.dox
@@ -1,6 +1,33 @@
/** @page dev_architecture Integrate a new architecture (ARCH)
-Friesel
+@section linker_scripts Rules for the generic Linker Script File
+
+Never include an object file by name directly! Linker Script Files defines the
+layout, not the content. Content is defined in objecfiles instead.
+
+Don't rely on the given object file order to create your binary U-Boot v2! This
+may work, but is not relyable in all cases (and its a very bad style)!
+
+For the special case some layout contraints exists, use specific section
+naming instead. Refer @ref reset_code how to define this specific section.
+
+@section reset_code Bring it up: The Reset Code
+
+The way a CPU wakes up after reset is very specific to its architecture.
+
+For example the ARM architecture starts its reset code at address 0x0000000,
+the x86 architecture at 0x000FFFF0, PowerPC at 0x00000100 or 0xFFFFF100.
+
+So for the special reset code on all architectures it must be located at
+architecture specific locations within the binary U-Boot image.
+
+All reset code uses section ".text_entry" for its localisation within the
+binary U-Boot image. Its up to the linker script file to use this section name
+to find the right place in whatever environment and U-Boot sizes.
+
+@code
+ .section ".text_entry","ax"
+@endcode
*/
diff --git a/arch/arm/cpu/cpu.c b/arch/arm/cpu/cpu.c
index e2b31edec5..d79d4ce539 100644
--- a/arch/arm/cpu/cpu.c
+++ b/arch/arm/cpu/cpu.c
@@ -1,7 +1,37 @@
+/*
+ * cpu.c - A few helper functions for ARM
+ *
+ * Copyright (c) 2007 Sascha Hauer <s.hauer@pengutronix.de>, Pengutronix
+ *
+ * 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 version 2
+ * as published by the Free Software Foundation.
+ *
+ * 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
+ */
+
+/**
+ * @file
+ * @brief A few helper functions for ARM
+ */
+
#include <common.h>
#include <command.h>
-/* read co-processor 15, register #1 (control register) */
+/**
+ * Read special processor register
+ * @return co-processor 15, register #1 (control register)
+ */
static unsigned long read_p15_c1 (void)
{
unsigned long value;
@@ -18,7 +48,12 @@ static unsigned long read_p15_c1 (void)
return value;
}
-/* write to co-processor 15, register #1 (control register) */
+/**
+ *
+ * Write special processor register
+ * @param[in] value to write
+ * @return to co-processor 15, register #1 (control register)
+ */
static void write_p15_c1 (unsigned long value)
{
#ifdef MMU_DEBUG
@@ -33,23 +68,38 @@ static void write_p15_c1 (unsigned long value)
read_p15_c1 ();
}
+/**
+ * Wait for co prozessor (waste time)
+ * Co processor seems to need some delay between accesses
+ */
static void cp_delay (void)
{
volatile int i;
- /* copro seems to need some delay between reading and writing */
- for (i = 0; i < 100; i++);
+ for (i = 0; i < 100; i++) /* FIXME does it work as expected?? */
+ ;
}
-#define C1_MMU (1<<0) /* mmu off/on */
-#define C1_ALIGN (1<<1) /* alignment faults off/on */
-#define C1_DC (1<<2) /* dcache off/on */
-#define C1_BIG_ENDIAN (1<<7) /* big endian off/on */
-#define C1_SYS_PROT (1<<8) /* system protection */
-#define C1_ROM_PROT (1<<9) /* ROM protection */
-#define C1_IC (1<<12) /* icache off/on */
-#define C1_HIGH_VECTORS (1<<13) /* location of vectors: low/high addresses */
-
+/** mmu off/on */
+#define C1_MMU (1<<0)
+/** alignment faults off/on */
+#define C1_ALIGN (1<<1)
+/** dcache off/on */
+#define C1_DC (1<<2)
+/** big endian off/on */
+#define C1_BIG_ENDIAN (1<<7)
+/** system protection */
+#define C1_SYS_PROT (1<<8)
+/** ROM protection */
+#define C1_ROM_PROT (1<<9)
+/** icache off/on */
+#define C1_IC (1<<12)
+/** location of vectors: low/high addresses */
+#define C1_HIGH_VECTORS (1<<13)
+
+/**
+ * Enable processor's instruction cache
+ */
void icache_enable (void)
{
ulong reg;
@@ -59,6 +109,9 @@ void icache_enable (void)
write_p15_c1 (reg | C1_IC);
}
+/**
+ * Disable processor's instruction cache
+ */
void icache_disable (void)
{
ulong reg;
@@ -68,30 +121,39 @@ void icache_disable (void)
write_p15_c1 (reg & ~C1_IC);
}
+/**
+ * Detect processor's current instruction cache status
+ * @return 0=disabled, 1=enabled
+ */
int icache_status (void)
{
return (read_p15_c1 () & C1_IC) != 0;
}
-/*
- * this function is called just before we call linux
- * it prepares the processor for linux
+/**
+ * Prepare a "clean" CPU for Linux to run
+ * @return 0 (always)
+ *
+ * This function is called by the generic U-Boot part just before we call
+ * Linux. It prepares the processor for Linux.
*/
int cleanup_before_linux (void)
{
int i;
- /*
- * we never enable dcache so we do not need to disable
- * it. Linux can be called with icache enabled, so just
- * do nothing here
- */
-
/* flush I/D-cache */
i = 0;
asm ("mcr p15, 0, %0, c7, c7, 0": :"r" (i));
return (0);
}
+/**
+ * @page arm_boot_preparation Linux Preparation on ARM
+ *
+ * For ARM we never enable data cache so we do not need to disable it again.
+ * Linux can be called with instruction cache enabled. As this is the
+ * default setting we are running in U-Boot, there's no special preparation
+ * required.
+ */
#ifdef CONFIG_USE_IRQ
static int cpu_init (void)
@@ -106,3 +168,9 @@ static int cpu_init (void)
core_initcall(cpu_init);
#endif
+
+/**
+ * @page arm_for_linux Preparing for Linux to run
+ *
+ * What's to do on ARM to run Linux after U-Boot did its job?
+ */ \ No newline at end of file
diff --git a/arch/arm/cpu/interrupts.c b/arch/arm/cpu/interrupts.c
index 23f8b3f029..418da18b44 100644
--- a/arch/arm/cpu/interrupts.c
+++ b/arch/arm/cpu/interrupts.c
@@ -1,3 +1,30 @@
+/*
+ * interrupts.c - Interrupt Support Routines
+ *
+ * Copyright (c) 2007 Sascha Hauer <s.hauer@pengutronix.de>, Pengutronix
+ *
+ * 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 version 2
+ * as published by the Free Software Foundation.
+ *
+ * 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
+ */
+
+/**
+ * @file
+ * @brief Interrupt Support Routines
+ */
+
#include <common.h>
#include <asm/ptrace.h>
@@ -32,12 +59,19 @@ int disable_interrupts (void)
}
#endif
+/**
+ * FIXME
+ */
void bad_mode (void)
{
panic ("Resetting CPU ...\n");
reset_cpu (0);
}
+/**
+ * Display current register set content
+ * @param[in] regs Guess what
+ */
void show_regs (struct pt_regs *regs)
{
unsigned long flags;
@@ -75,6 +109,10 @@ void show_regs (struct pt_regs *regs)
thumb_mode (regs) ? " (T)" : "");
}
+/**
+ * The CPU runs into an undefined instruction. That really should not happen!
+ * @param[in] pt_regs Register set content when the accident happens
+ */
void do_undefined_instruction (struct pt_regs *pt_regs)
{
printf ("undefined instruction\n");
@@ -82,6 +120,13 @@ void do_undefined_instruction (struct pt_regs *pt_regs)
bad_mode ();
}
+/**
+ * The CPU catches a software interrupt
+ * @param[in] pt_regs Register set content when the interrupt happens
+ *
+ * There is not functione behind this feature. So what to do else than
+ * a reset?
+ */
void do_software_interrupt (struct pt_regs *pt_regs)
{
printf ("software interrupt\n");
@@ -89,6 +134,12 @@ void do_software_interrupt (struct pt_regs *pt_regs)
bad_mode ();
}
+/**
+ * The CPU catches a prefetch abort. That really should not happen!
+ * @param[in] pt_regs Register set content when the accident happens
+ *
+ * FIXME: What does it mean, why is reset the only solution?
+ */
void do_prefetch_abort (struct pt_regs *pt_regs)
{
printf ("prefetch abort\n");
@@ -96,6 +147,12 @@ void do_prefetch_abort (struct pt_regs *pt_regs)
bad_mode ();
}
+/**
+ * The CPU catches a data abort. That really should not happen!
+ * @param[in] pt_regs Register set content when the accident happens
+ *
+ * FIXME: What does it mean, why is reset the only solution?
+ */
void do_data_abort (struct pt_regs *pt_regs)
{
printf ("data abort\n");
@@ -103,6 +160,12 @@ void do_data_abort (struct pt_regs *pt_regs)
bad_mode ();
}
+/**
+ * The CPU catches a not-used(?) abort.
+ * @param[in] pt_regs Register set content when the accident happens
+ *
+ * FIXME: What does it mean, why is reset the only solution?
+ */
void do_not_used (struct pt_regs *pt_regs)
{
printf ("not used\n");
@@ -110,6 +173,12 @@ void do_not_used (struct pt_regs *pt_regs)
bad_mode ();
}
+/**
+ * The CPU catches a fast interrupt request.
+ * @param[in] pt_regs Register set content when the interrupt happens
+ *
+ * FIXME: What does it mean, why is reset the only solution?
+ */
void do_fiq (struct pt_regs *pt_regs)
{
printf ("fast interrupt request\n");
@@ -117,9 +186,21 @@ void do_fiq (struct pt_regs *pt_regs)
bad_mode ();
}
+/**
+ * The CPU catches a regular interrupt.
+ * @param[in] pt_regs Register set content when the interrupt happens
+ *
+ * FIXME: What does it mean, why is reset the only solution?
+ */
void do_irq (struct pt_regs *pt_regs)
{
printf ("interrupt request\n");
show_regs (pt_regs);
bad_mode ();
}
+
+/**
+ * @page arm_interrupts Interrupt handling on ARM
+ *
+ * Why U-boot doesn't use interrupts?
+ */
diff --git a/arch/arm/cpu/start-arm920t.S b/arch/arm/cpu/start-arm920t.S
index eed1364e3a..db52ad9ed8 100644
--- a/arch/arm/cpu/start-arm920t.S
+++ b/arch/arm/cpu/start-arm920t.S
@@ -24,13 +24,18 @@
* MA 02111-1307 USA
*/
-/*
- * Note:
- * This file can be used for at least:
- * - ARM920T
- * - i.MX1
- * - i.MX27
- * - i.MX31
+/**
+ * @file
+ * @brief The very basic beginning of each CPU after reset
+ *
+ * @note
+ * This reset code can be used at least for:
+ * - ARM920T
+ * - i.MX1
+ * - i.MX27
+ * - i.MX31
+ *
+ * FIXME: Stop doxygen from parsing the text below
*/
.section ".text_entry","ax"
diff --git a/arch/sandbox/lib/common.c b/arch/sandbox/lib/common.c
index 6416a54381..0db4403219 100644
--- a/arch/sandbox/lib/common.c
+++ b/arch/sandbox/lib/common.c
@@ -20,6 +20,10 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+/**
+ * @file
+ * @brief Common wrapper functions between U-Boot and the host
+ */
/*
* These are host includes. Never include any U-Boot header
* files here...
@@ -249,26 +253,7 @@ err_out:
return -1;
}
-static void print_usage(const char *prgname)
-{
- printf(
-"Usage: %s [OPTIONS]\n"
-"Start U-Boot.\n"
-"Options:\n"
-" -i <file> Map a file to U-Boot. This option can be given multiple\n"
-" times. The files will show up as /dev/fd0 ... /dev/fdx\n"
-" under U-Boot.\n"
-" -e <file> Map a file to U-Boot. With this option files are mapped as\n"
-" /dev/env0 ... /dev/envx and thus are used as default\n"
-" environment. An empty file generated with dd will do to get\n"
-" started wth an empty environment\n"
-" -O <file> Register file as a console capable of doing stdout. File can\n"
-" be a regular file or a fifo.\n"
-" -I <file> Register file as a console capable of doing stdin. File can\n"
-" be a regular file or a fifo.\n",
- prgname
- );
-}
+static void print_usage(const char*);
int main(int argc, char *argv[])
{
@@ -337,3 +322,62 @@ int main(int argc, char *argv[])
return 0;
}
+static void print_usage(const char *prgname)
+{
+ printf(
+"Usage: %s [OPTIONS]\n"
+"Start U-Boot.\n"
+"Options:\n"
+" -i <file> Map a file to U-Boot. This option can be given multiple\n"
+" times. The files will show up as /dev/fd0 ... /dev/fdx\n"
+" under U-Boot.\n"
+" -e <file> Map a file to U-Boot. With this option files are mapped as\n"
+" /dev/env0 ... /dev/envx and thus are used as default\n"
+" environment. An empty file generated with dd will do to get\n"
+" started wth an empty environment\n"
+" -O <file> Register file as a console capable of doing stdout. File can\n"
+" be a regular file or a fifo.\n"
+" -I <file> Register file as a console capable of doing stdin. File can\n"
+" be a regular file or a fifo.\n",
+ prgname
+ );
+}
+
+/**
+ * @page uboot_simul U-Boot Simulator
+ *
+ * U-Boot can be run as a simulator on your host to check and debug new non
+ * hardware related features.
+ *
+ * @section simu_build How to build U-Boot for simulation
+ *
+ * @section simu_run How to run U-Boot simulator
+ *
+ * $ uboot [<OPTIONS>]
+ *
+ * Options can be:
+ *
+ * -i <file>
+ *
+ * Map a <file> to U-Boot. This option can be given multiple times. The <file>s
+ * will show up as /dev/fd0 ... /dev/fdx in the U-Boot simulator.
+ *
+ * -e <file>
+ *
+ * Map <file> to U-Boot. With this option <file>s are mapped as /dev/env0 ...
+ * /dev/envx and thus are used as default environment. A clean file generated
+ * with dd will do to get started with an empty environment
+ *
+ * -O <file>
+ *
+ * Register <file> as a console capable of doing stdout. <file> can be a
+ * regular file or a fifo.
+ *
+ * -I <file>
+ *
+ * Register <file> as a console capable of doing stdin. <file> can be a regular
+ * file or a fifo.
+ *
+ * @section simu_dbg How to debug U-Boot simulator
+ *
+ */ \ No newline at end of file
diff --git a/arch/sandbox/lib/tap.c b/arch/sandbox/lib/tap.c
index b620612626..ebd828b2b2 100644
--- a/arch/sandbox/lib/tap.c
+++ b/arch/sandbox/lib/tap.c
@@ -61,3 +61,8 @@ int tap_alloc(char *dev)
strcpy(dev, ifr.ifr_name);
return fd;
}
+
+/**
+ * @file
+ * @brief Host side functions for tap driver
+ */
diff --git a/board/board.dox b/board/board.dox
index 390a6c2f8c..4bc308d1e5 100644
--- a/board/board.dox
+++ b/board/board.dox
@@ -1,5 +1,81 @@
-/** @page dev_board Integrating a new Board
+/** @page dev_board Adapting a new Board
-Blablubb
+To add a new board to U-Boot a few steps must be done, to extend and modify
+the U-Boot source tree.
+
+@section board_add_files Files/Directories to be added
+
+ - board/<boardname>
+ - board/<boardname>/<boardname>.c
+ - board/<boardname>/<boardname>.dox
+ - board/<boardname>/Makefile
+ - include/configs/<boardname>.h
+ - arch/<architecture>/configs/<boardname>_defconfig
+
+Makefile
+
+ obj-y += all files that builds the BSP (Assembler and/or C files)
+
+@subsection board_doxygen board/<boardname>/<boardname>.dox
+
+This file should describe in short words your new board, what CPU
+it uses, what resources are provided and features it supports.
+
+Use the doxygen style for this kind of documentation. Below you find a
+template for this kind of file
+
+@code
+</>** <@>page <boardname> <Manufacturer> <Board's Name>
+
+This board uses an <architecture> based CPU. The board is shipped with:
+
+- many MiB NOR type Flash Memory
+- many MiB SDRAM
+- a very special network controller
+
+and so on.
+
+*</>
+@endcode
+
+To make your new shiny file visible in the automatically generated
+documentation you must sort in the used page lable ("<boardname>" in the
+template above) into Documentation/boards.dox as
+
+@code
+ ...
+ <@>subpage <boardname>
+ ...
+@endcode
+
+at the right architecture.
+
+@note Consider to use an unique page lable.
+
+@subsection board_lscript board/<boardname>/u-boot.ld.S
+
+If your board needs a special binary U-Boot layout, you can provide a local
+board linker script file. This will replace the generic one provided by your
+architecture or CPU support.
+
+Add this file with
+
+@code
+ extra-y += <board_linker_script>
+@endcode
+
+in your local Makefile to the list of files, forwarded to the last linking step.
+
+@section board_mod_files These files needs to be modified:
+
+ - modify board/board.doc
+ - modify arch/<architecture>/Kconfig
+ - add your board (MACH_*) to the list
+ - add your default text base address for this architecture (ARCH_TEXT_BASE)
+ - add BOARDINFO with valueable info for your board
+ - modify arch/<architecture>/Makefile:
+ - add board-$(MACH_*) = <your board_dir>
+
+First, the new board should be visible in the menu.
*/
diff --git a/commands/bootm.c b/commands/bootm.c
index e943934a45..755d3a962b 100644
--- a/commands/bootm.c
+++ b/commands/bootm.c
@@ -853,3 +853,20 @@ do_bootm_lynxkdi (cmd_tbl_t *cmdtp,
}
#endif /* CONFIG_LYNXKDI */
+
+/**
+ * @file
+ * @brief Boot support for Linux
+ */
+
+/**
+ * @page boot_preparation Preparing for Boot
+ *
+ * This chapter describes what's to be done to forward the control from
+ * U-Boot to Linux. This part describes the generic part, below you can find
+ * the architecture specific part.
+ *
+ * - @subpage arm_boot_preparation
+ * - @subpage ppc_boot_preparation
+ * - @subpage x86_boot_preparation
+ */ \ No newline at end of file
diff --git a/common/env.c b/common/env.c
index c8cb29a7a3..98789e0206 100644
--- a/common/env.c
+++ b/common/env.c
@@ -61,7 +61,7 @@ static struct env_context *context;
/**
* Remove a list of environment variables
- * @param[inout] v Variable anchor to remove
+ * @param[in] v Variable anchor to remove
*/
static void free_variables(struct variable_d *v)
{
diff --git a/drivers/cfi_flash.c b/drivers/cfi_flash.c
index 773ee2bc2d..a859741c84 100644
--- a/drivers/cfi_flash.c
+++ b/drivers/cfi_flash.c
@@ -31,8 +31,9 @@
*
*/
-/* The DEBUG define must be before common to enable debugging */
-/* #define DEBUG */
+#ifdef CONFIG_ENABLE_FLASH_NOISE
+# define DEBUG
+#endif
#include <common.h>
#include <asm/byteorder.h>
@@ -42,22 +43,6 @@
#include <malloc.h>
#include <cfi_flash.h>
-/*
- * This file implements a Common Flash Interface (CFI) driver for U-Boot.
- * The width of the port and the width of the chips are determined at initialization.
- * These widths are used to calculate the address for access CFI data structures.
- *
- * References
- * JEDEC Standard JESD68 - Common Flash Interface (CFI)
- * JEDEC Standard JEP137-A Common Flash Interface (CFI) ID Codes
- * Intel Application Note 646 Common Flash Interface (CFI) and Command Sets
- * Intel 290667-008 3 Volt Intel StrataFlash Memory datasheet
- * AMD CFI Specification, Release 2.0 December 1, 2001
- * AMD/Spansion Application Note: Migration from Single-byte to Three-byte
- * Device IDs, Publication Number 25538 Revision A, November 8, 2001
- *
- */
-
#define FLASH_CMD_CFI 0x98
#define FLASH_CMD_READ_ID 0x90
#define FLASH_CMD_RESET 0xff
@@ -326,16 +311,14 @@ static int cfi_probe (struct device_d *dev)
dev->priv = (void *)info;
- printf("cfi_probe: %s base: 0x%08x size: 0x%08x\n", dev->name, dev->map_base, dev->size);
+ debug ("cfi_probe: %s base: 0x%08x size: 0x%08x\n", dev->name, dev->map_base, dev->size);
/* Init: no FLASHes known */
info->flash_id = FLASH_UNKNOWN;
size += info->size = flash_get_size(info, dev->map_base);
if (info->flash_id == FLASH_UNKNOWN) {
-#ifndef CFG_FLASH_QUIET_TEST
- printf ("## Unknown FLASH on Bank at 0x%08x - Size = 0x%08lx = %ld MB\n",
+ debug ("## Unknown FLASH on Bank at 0x%08x - Size = 0x%08lx = %ld MB\n",
dev->map_base, info->size, info->size << 20);
-#endif /* CFG_FLASH_QUIET_TEST */
}
return 0;
@@ -1495,3 +1478,22 @@ static int flash_write_cfibuffer (flash_info_t * info, ulong dest, const uchar *
}
#endif /* CONFIG_CFI_BUFFER_WRITE */
+/**
+ * @file
+ * @brief This file implements a Common Flash Interface (CFI) driver for U-Boot.
+ *
+ * This file implements a Common Flash Interface (CFI) driver for U-Boot.
+ * The width of the port and the width of the chips are determined at initialization.
+ * These widths are used to calculate the address for access CFI data structures.
+ *
+ * References
+ *
+ * - JEDEC Standard JESD68 - Common Flash Interface (CFI)
+ * - JEDEC Standard JEP137-A Common Flash Interface (CFI) ID Codes
+ * - Intel Application Note 646 Common Flash Interface (CFI) and Command Sets
+ * - Intel 290667-008 3 Volt Intel StrataFlash Memory datasheet
+ * - AMD CFI Specification, Release 2.0 December 1, 2001
+ * - AMD/Spansion Application Note: Migration from Single-byte to Three-byte
+ * Device IDs, Publication Number 25538 Revision A, November 8, 2001
+ *
+ */