u-boot/board/armltd/integrator
Masahiro Yamada b75d8dc564 treewide: convert bd_t to struct bd_info by coccinelle
The Linux coding style guide (Documentation/process/coding-style.rst)
clearly says:

  It's a **mistake** to use typedef for structures and pointers.

Besides, using typedef for structures is annoying when you try to make
headers self-contained.

Let's say you have the following function declaration in a header:

  void foo(bd_t *bd);

This is not self-contained since bd_t is not defined.

To tell the compiler what 'bd_t' is, you need to include <asm/u-boot.h>

  #include <asm/u-boot.h>
  void foo(bd_t *bd);

Then, the include direcective pulls in more bloat needlessly.

If you use 'struct bd_info' instead, it is enough to put a forward
declaration as follows:

  struct bd_info;
  void foo(struct bd_info *bd);

Right, typedef'ing bd_t is a mistake.

I used coccinelle to generate this commit.

The semantic patch that makes this change is as follows:

  <smpl>
  @@
  typedef bd_t;
  @@
  -bd_t
  +struct bd_info
  </smpl>

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
2020-07-17 09:30:13 -04:00
..
arm-ebi.h SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
integrator-sc.h SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
integrator.c treewide: convert bd_t to struct bd_info by coccinelle 2020-07-17 09:30:13 -04:00
lowlevel_init.S SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
MAINTAINERS Add board MAINTAINERS files 2014-07-30 08:48:06 -04:00
Makefile SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
pci.c common: Drop linux/delay.h from common header 2020-05-18 21:19:23 -04:00
pci_v3.h SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
README Drop CONFIG_INIT_CRITICAL 2018-11-26 13:57:31 +08:00
timer.c common: Drop linux/delay.h from common header 2020-05-18 21:19:23 -04:00

		U-Boot for ARM Integrator Development Platforms

			Peter Pearse, ARM Ltd.
			peter.pearse@arm.com
			     www.arm.com

Manuals available from :-
http://www.arm.com/products/DevTools/Hardware_Platforms.html

Overview :
--------
There are two Integrator variants - Integrator/AP and Integrator/CP.
Each may be fitted with a variety of core modules (CMs).
Each CM consists of a ARM processor core and associated hardware e.g
	FPGA implementing various controllers and/or register
	SSRAM
	SDRAM
	RAM controllers
	clock generators etc.
CMs may be fitted with varying amounts of SDRAM using a DIMM socket.

Boot Methods :
------------
Integrator platforms can be configured to use U-Boot in at least three ways :-
a) Run ARM boot monitor, manually run U-Boot image from flash
b) Run ARM boot monitor, automatically run U-Boot image from flash
c) Run U-Boot image direct from flash.

In cases a) and b) the ARM boot monitor will have configured the CM and mapped
writeable memory to 0x00000000 in the Integrator address space.
U-Boot has to carry out minimal configration before standard code is run.

In case c) it may be necessary for U-Boot to perform CM dependent initialization.

Configuring U-Boot :
------------------
	The makefile contains targets for Integrator platforms of both types
fitted with all current variants of CM.

	There are also targets independent of CM. These may not be suitable for
boot process c) above. They have been preserved for backward compatibility with
existing build processes.

Code Hierarchy Applied :
----------------------
Code specific to initialization of a particular ARM processor has been placed in
cpu/arm<>/start.S so that it may be used by other boards.

However, to avoid duplicating code through all processor files, a generic core
for ARM Integrator CMs has been added

	arch/arm/cpu/arm_intcm

Otherwise. for example,  the standard CM reset via the CM control register would
need placing in each CM processor file......

Code specific to the initialization of the CM, rather than the cpu, and initialization
of the Integrator board itself, has been placed in

	board/integrator<>/platform.S
	board/integrator<>/integrator<>.c

Targets
=======
The U-Boot make targets map to the available core modules as below.

Integrator/AP is no longer available from ARM.
Core modules marked ** are also no longer available.

ap720t_config		** CM720T
ap920t_config		** CM920T
ap926ejs_config	Integrator Core Module for ARM926EJ-STM
ap946es_config		Integrator Core Module for ARM946E-STM
cp920t_config		** CM920T
cp926ejs_config	Integrator Core Module for ARM926EJ-STM
cp946es_config		Integrator Core Module for ARM946E-STM
cp1136_config		Integrator Core Module ARM1136JF-S  TM

The final groups of targets are for core modules where no explicit cpu
code has yet been added to U-Boot i.e. they all use the same U-Boot binary
using the generic "arm_intcm" core:

ap966_config			Integrator Core Module for ARM966E-S TM
ap922_config			Integrator Core Module for ARM922T TM with ETM
ap922_XA10_config		Integrator Core Module for ARM922T using Altera Excalibur
ap7_config			** CM7TDMI
integratorap_config
ap_config


cp966_config			Integrator Core Module for ARM966E-S TM
cp922_config			Integrator Core Module for ARM922T TM with ETM
cp922_XA10_config		Integrator Core Module for ARM922T using Altera Excalibur
cp1026_config			Integrator Core Module ARM1026EJ-S TM
integratorcp_config
cp_config

The Makefile targets call board/integrator<>/split_by_variant.sh
to configure various defines in include/configs/integrator<>.h
to indicate the core module & core configuration and ensure that
board/integrator<>/u-boot.lds loads the cpu object first in the U-Boot image.

*********************************
Because of this mechanism
> make clean
must be run before each change in configuration
*********************************