mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-05 20:54:31 +00:00
b75d8dc564
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> |
||
---|---|---|
.. | ||
ddr.c | ||
Kconfig | ||
law.c | ||
MAINTAINERS | ||
Makefile | ||
p1010rdb.c | ||
README.P1010RDB-PA | ||
README.P1010RDB-PB | ||
spl.c | ||
spl_minimal.c | ||
tlb.c |
Overview ========= The P1010RDB-PB is a Freescale Reference Design Board that hosts the P1010 SoC. P1010RDB-PB is a variation of previous P1010RDB-PA board. The P1010 is a cost-effective, low-power, highly integrated host processor based on a Power Architecture e500v2 core (maximum core frequency 1GHz),that addresses the requirements of several routing, gateways, storage, consumer, and industrial applications. Applications of interest include the main CPUs and I/O processors in network attached storage (NAS), the voice over IP (VoIP) router/gateway, and wireless LAN (WLAN) and industrial controllers. The P1010RDB-PB board features are as following: Memory subsystem: - 1G bytes unbuffered DDR3 SDRAM discrete devices (32-bit bus) - 32M bytes NOR flash single-chip memory - 2G bytes NAND flash memory - 16M bytes SPI memory - 256K bit M24256 I2C EEPROM - I2C Board EEPROM 128x8 bit memory - SD/MMC connector to interface with the SD memory card Interfaces: - Three 10/100/1000 BaseT Ethernet ports (One RGMII and two SGMII) - PCIe 2.0: two x1 mini-PCIe slots - SATA 2.0: two SATA interfaces - USB 2.0: one USB interface - FlexCAN: two FlexCAN interfaces (revision 2.0B) - UART: one USB-to-Serial interface - TDM: 2 FXS ports connected via an external SLIC to the TDM interface. 1 FXO port connected via a relay to FXS for switchover to POTS Board connectors: - Mini-ITX power supply connector - JTAG/COP for debugging POR: support critical POR setting changed via switch on board PCB: 6-layer routing (4-layer signals, 2-layer power and ground) Physical Memory Map on P1010RDB =============================== Address Start Address End Memory type Attributes 0x0000_0000 0x3fff_ffff DDR 1G Cacheable 0xa000_0000 0xdfff_ffff PCI Express Mem 1G non-cacheable 0xee00_0000 0xefff_ffff NOR Flash 32M non-cacheable 0xffc2_0000 0xffc5_ffff PCI IO range 256K non-cacheable 0xffa0_0000 0xffaf_ffff NAND Flash 1M cacheable 0xffb0_0000 0xffbf_ffff Board CPLD 1M non-cacheable 0xffd0_0000 0xffd0_3fff L1 for Stack 16K Cacheable TLB0 0xffe0_0000 0xffef_ffff CCSR 1M non-cacheable Serial Port Configuration on P1010RDB ===================================== Configure the serial port of the attached computer with the following values: -Data rate: 115200 bps -Number of data bits: 8 -Parity: None -Number of Stop bits: 1 -Flow Control: Hardware/None P1010RDB-PB default DIP-switch settings ======================================= SW1[1:8]= 10101010 SW2[1:8]= 11011000 SW3[1:8]= 10010000 SW4[1:4]= 1010 SW5[1:8]= 11111010 P1010RDB-PB boot mode settings via DIP-switch ============================================= SW4[1:4]= 1111 and SW3[3:4]= 00 for 16bit NOR boot SW4[1:4]= 1010 and SW3[3:4]= 01 for 8bit NAND boot SW4[1:4]= 0110 and SW3[3:4]= 00 for SPI boot SW4[1:4]= 0111 and SW3[3:4]= 10 for SD boot Note: 1 stands for 'on', 0 stands for 'off' Switch P1010RDB-PB boot mode via software without setting DIP-switch ==================================================================== => run boot_bank0 (boot from NOR bank0) => run boot_bank1 (boot from NOR bank1) => run boot_nand (boot from NAND flash) => run boot_spi (boot from SPI flash) => run boot_sd (boot from SD card) Frequency combination support on P1010RDB-PB ============================================= SW1[4:7] SW5[1] SW5[5:8] SW2[2] Core(MHz) Platform(MHz) DDR(MT/s) 0101 1 1010 0 800 400 800 1001 1 1010 0 800 400 667 1010 1 1100 0 667 333 667 1000 0 1010 0 533 266 667 0101 1 1010 1 1000 400 800 1001 1 1010 1 1000 400 667 Setting of pin mux ================== Since pins multiplexing, TDM and CAN are muxed with SPI flash. SDHC is muxed with IFC. IFC and SPI flash are enabled by default. To enable TDM: => setenv hwconfig fsl_p1010mux:tdm_can=tdm => save;reset To enable FlexCAN: => setenv hwconfig fsl_p1010mux:tdm_can=can => save;reset To enable SDHC in case of NOR/NAND/SPI boot a) For temporary use case in runtime without reboot system run 'mux sdhc' in U-Boot to validate SDHC with invalidating IFC. b) For long-term use case set 'esdhc' in hwconfig and save it. To enable IFC in case of SD boot a) For temporary use case in runtime without reboot system run 'mux ifc' in U-Boot to validate IFC with invalidating SDHC. b) For long-term use case set 'ifc' in hwconfig and save it. Build images for different boot mode ==================================== First setup cross compile environment on build host $ export CROSS_COMPILE=<your-compiler-path>/powerpc-linux-gnu- 1. For NOR boot $ make P1010RDB-PB_NOR 2. For NAND boot $ make P1010RDB-PB_NAND 3. For SPI boot $ make P1010RDB-PB_SPIFLASH 4. For SD boot $ make P1010RDB-PB_SDCARD Steps to program images to flash for different boot mode ======================================================== 1. NOR boot => tftp 1000000 u-boot.bin For bank0 => pro off all;era eff40000 efffffff;cp.b 1000000 eff40000 $filesize set SW1[8]=0, SW4[1:4]= 1111 and SW3[3:4]= 00, then power on the board For bank1 => pro off all;era eef40000 eeffffff;cp.b 1000000 eef40000 $filesize set SW1[8]=1, SW4[1:4]= 1111 and SW3[3:4]= 00, then power on the board 2. NAND boot => tftp 1000000 u-boot-nand.bin => nand erase 0 $filesize; nand write $loadaddr 0 $filesize Set SW4[1:4]= 1010 and SW3[3:4]= 01, then power on the board 3. SPI boot 1) cat p1010rdb-config-header.bin u-boot.bin > u-boot-spi-combined.bin 2) => tftp 1000000 u-boot-spi-combined.bin 3) => sf probe 0; sf erase 0 100000; sf write 1000000 0 100000 set SW4[1:4]= 0110 and SW3[3:4]= 00, then power on the board 4. SD boot 1) cat p1010rdb-config-header.bin u-boot.bin > u-boot-sd-combined.bin 2) => tftp 1000000 u-boot-sd-combined.bin 3) => mux sdhc 4) => mmc write 1000000 0 1050 set SW4[1:4]= 0111 and SW3[3:4]= 10, then power on the board Boot Linux from network using TFTP on P1010RDB-PB ================================================= Place uImage, p1010rdb.dtb and rootfs files in the TFTP download path. => tftp 1000000 uImage => tftp 2000000 p1010rdb.dtb => tftp 3000000 rootfs.ext2.gz.uboot.p1010rdb => bootm 1000000 3000000 2000000 For more details, please refer to P1010RDB-PB User Guide and access website www.freescale.com and Freescale QorIQ SDK Infocenter document.