u-boot/board/freescale/t102xrdb
Tom Rini efb5dab7ba nxp: Migrate CONFIG_DDR_CLK_FREQ to Kconfig
As this symbol can either be a fixed value or the function
get_board_ddr_clk, migration is tricky.  Introduce a choice of DYNAMIC
or STATIC_DDR_CLK_FREQ.  If DYNAMIC, we continue to use the board
defined get_board_ddr_clk function.  If STATIC, set CONFIG_DDR_CLK_FREQ
to that value and now include/clock_legacy.h contains the function
prototype or defines get_board_ddr_clk() to that static value.  Update
callers to test for DYNAMIC or STATIC.

Signed-off-by: Tom Rini <trini@konsulko.com>
2021-08-31 17:46:37 -04:00
..
cpld.c command: Remove the cmd_tbl_t typedef 2020-05-18 18:36:55 -04:00
cpld.h freescale: Drop unnecessary cpld_data_t non-typedef 2021-07-07 10:17:54 -04:00
ddr.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
eth_t102xrdb.c board: freescale: powerpc: add support for all RGMII modes 2020-12-10 13:56:39 +05:30
Kconfig NXP: Introduce board/freescale/common/Kconfig and migrate CHAIN_OF_TRUST 2017-01-24 10:33:59 -05:00
law.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
MAINTAINERS ppc: Remove T1023RBD boards and T1024RDB_SECURE_BOOT 2021-07-07 19:52:23 -04:00
Makefile pci: freescale: Drop old code 2021-08-05 16:14:36 -04:00
README powerpc: Enable device tree support for T1024RDB 2019-08-26 21:21:02 +05:30
spl.c nxp: Migrate CONFIG_DDR_CLK_FREQ to Kconfig 2021-08-31 17:46:37 -04:00
t102xrdb.c nxp: Migrate CONFIG_DDR_CLK_FREQ to Kconfig 2021-08-31 17:46:37 -04:00
t102xrdb.h treewide: convert bd_t to struct bd_info by coccinelle 2020-07-17 09:30:13 -04:00
t1023_nand_rcw.cfg Txxx/RCW: Split unified RCW to RCWs for sd, spi and nand. 2016-10-14 10:21:03 -07:00
t1023_sd_rcw.cfg Txxx/RCW: Split unified RCW to RCWs for sd, spi and nand. 2016-10-14 10:21:03 -07:00
t1023_spi_rcw.cfg Txxx/RCW: Split unified RCW to RCWs for sd, spi and nand. 2016-10-14 10:21:03 -07:00
t1024_nand_rcw.cfg Txxx/RCW: Split unified RCW to RCWs for sd, spi and nand. 2016-10-14 10:21:03 -07:00
t1024_pbi.cfg powerpc/t104x, t102x: Update CPC debug register value in PBI commands 2015-07-28 14:41:15 -07:00
t1024_sd_rcw.cfg Txxx/RCW: Split unified RCW to RCWs for sd, spi and nand. 2016-10-14 10:21:03 -07:00
t1024_spi_rcw.cfg Txxx/RCW: Split unified RCW to RCWs for sd, spi and nand. 2016-10-14 10:21:03 -07:00
tlb.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00

T1024 SoC Overview
------------------
The T1024/T1023 dual core and T1014/T1013 single core QorIQ communication processor
combines two or one 64-bit Power Architecture e5500 core respectively with high
performance datapath acceleration logic, and network peripheral bus interfaces
required for networking and telecommunications. This processor can be used in
applications such as enterprise WLAN access points, routers, switches, firewall
and other packet processing intensive small enterprise and branch office appliances,
and general-purpose embedded computing. Its high level of integration offers
significant performance benefits and greatly helps to simplify board design.


The T1024 SoC includes the following function and features:
- two e5500 cores, each with a private 256 KB L2 cache
  - Up to 1.4 GHz with 64-bit ISA support (Power Architecture v2.06-compliant)
  - Three levels of instructions: User, supervisor, and hypervisor
  - Independent boot and reset
  - Secure boot capability
- 256 KB shared L3 CoreNet platform cache (CPC)
- Interconnect CoreNet platform
  - CoreNet coherency manager supporting coherent and noncoherent transactions
    with prioritization and bandwidth allocation amongst CoreNet endpoints
  - 150 Gbps coherent read bandwidth
- 32-/64-bit DDR3L/DDR4 SDRAM memory controller with ECC and interleaving support
- Data Path Acceleration Architecture (DPAA) incorporating acceleration for the following functions:
  - Packet parsing, classification, and distribution
  - Queue management for scheduling, packet sequencing, and congestion management
  - Cryptography Acceleration (SEC 5.x)
  - IEEE 1588 support
  - Hardware buffer management for buffer allocation and deallocation
  - MACSEC on DPAA-based Ethernet ports
- Ethernet interfaces
  - Four 1 Gbps Ethernet controllers
- Parallel Ethernet interfaces
  - Two RGMII interfaces
- High speed peripheral interfaces
  - Three PCI Express 2.0 controllers/ports running at up to 5 GHz
  - One SATA controller supporting 1.5 and 3.0 Gb/s operation
  - One QSGMII interface
  - Four SGMII interface supporting 1000 Mbps
  - Three SGMII interfaces supporting up to 2500 Mbps
  - 10GbE XFI or 10Base-KR interface
- Additional peripheral interfaces
  - Two USB 2.0 controllers with integrated PHY
  - SD/eSDHC/eMMC
  - eSPI controller
  - Four I2C controllers
  - Four UARTs
  - Four GPIO controllers
  - Integrated flash controller (IFC)
  - LCD interface (DIU) with 12 bit dual data rate
- Multicore programmable interrupt controller (PIC)
- Two 8-channel DMA engines
- Single source clocking implementation
- Deep Sleep power implementaion (wakeup from GPIO/Timer/Ethernet/USB)
- QUICC Engine block
  - 32-bit RISC controller for flexible support of the communications peripherals
  - Serial DMA channel for receive and transmit on all serial channels
  - Two universal communication controllers, supporting TDM, HDLC, and UART

T1023 Personality
------------------
T1023 is a reduced personality of T1024 without QUICC Engine, DIU, and
unavailable deep sleep. Rest of the blocks are almost same as T1024.
Differences between T1024 and T1023
Feature		T1024  T1023
QUICC Engine:	yes    no
DIU:		yes    no
Deep Sleep:	yes    no
I2C controller: 4      3
DDR:		64-bit 32-bit
IFC:		32-bit 28-bit
Package:	23x23  19x19


T1024RDB board Overview
-----------------------
 - Ethernet
     - Two on-board 10M/100M/1G bps RGMII ethernet ports
     - One on-board 10G bps Base-T port.
 - DDR Memory
     - Supports 64-bit 4GB DDR3L DIMM
 - PCIe
     - One on-board PCIe slot.
     - Two on-board PCIe Mini-PCIe connectors.
 - IFC/Local Bus
     - NOR:  128MB 16-bit NOR Flash
     - NAND: 1GB 8-bit NAND flash
     - CPLD: for system controlling with programable header on-board
 - USB
     - Supports two USB 2.0 ports with integrated PHYs
     - Two type A ports with 5V@1.5A per port.
 - SDHC
     - one SD connector supporting 1.8V/3.3V via J53.
 - SPI
     -  On-board 64MB SPI flash
 - Other
     - Two Serial ports
     - Four I2C ports


T1023RDB board Overview
-----------------------
- T1023 SoC integrating two 64-bit e5500 cores up to 1.4GHz
- CoreNet fabric supporting coherent and noncoherent transactions with
  prioritization and bandwidth allocation
- SDRAM memory: 2GB Micron MT40A512M8HX unbuffered 32-bit DDR4 w/o ECC
- Accelerator: DPAA components consist of FMan, BMan, QMan, DCE and SEC
- Ethernet interfaces:
  - one 1G RGMII port on-board(RTL8211FS PHY)
  - one 1G SGMII port on-board(RTL8211FS PHY)
  - one 2.5G SGMII port on-board(AQR105 PHY)
- PCIe: Two Mini-PCIe connectors on-board.
- SerDes: 4 lanes up to 10.3125GHz
- NOR:  128MB S29GL01GS110TFIV10 Spansion NOR Flash
- NAND: 512MB S34MS04G200BFI000 Spansion NAND Flash
- eSPI: 64MB S25FL512SAGMFI010 Spansion SPI flash.
- USB: one Type-A USB 2.0 port with internal PHY
- eSDHC: support SD/MMC and eMMC card
- 256Kbit M24256 I2C EEPROM
- RTC: Real-time clock DS1339U on I2C bus
- UART: one serial port on-board with RJ45 connector
- Debugging: JTAG/COP for T1023 debugging


Memory map on T1024RDB
----------------------
Start Address  End Address      Description			Size
0xF_FFDF_0000  0xF_FFDF_0FFF    IFC - CPLD			4KB
0xF_FF80_0000  0xF_FF80_FFFF    IFC - NAND Flash		64KB
0xF_FE00_0000  0xF_FEFF_FFFF    CCSRBAR				16MB
0xF_F802_0000  0xF_F802_FFFF    PCI Express 3 I/O Space		64KB
0xF_F801_0000  0xF_F801_FFFF    PCI Express 2 I/O Space		64KB
0xF_F800_0000  0xF_F800_FFFF    PCI Express 1 I/O Space		64KB
0xF_F600_0000  0xF_F7FF_FFFF    Queue manager software portal   32MB
0xF_F400_0000  0xF_F5FF_FFFF    Buffer manager software portal  32MB
0xF_E800_0000  0xF_EFFF_FFFF    IFC - NOR Flash			128MB
0xF_0000_0000  0xF_003F_FFFF    DCSR				4MB
0xC_2000_0000  0xC_2FFF_FFFF    PCI Express 3 Mem Space		256MB
0xC_1000_0000  0xC_1FFF_FFFF    PCI Express 2 Mem Space		256MB
0xC_0000_0000  0xC_0FFF_FFFF    PCI Express 1 Mem Space		256MB
0x0_0000_0000  0x0_ffff_ffff    DDR				4GB


128MB NOR Flash Memory Layout
-----------------------------
Start Address   End Address     Definition			Max size
0xEFF40000      0xEFFFFFFF      U-Boot (current bank)		768KB
0xEFF20000      0xEFF3FFFF      U-Boot env (current bank)	128KB
0xEFF00000      0xEFF1FFFF      FMAN Ucode (current bank)	128KB
0xEFE00000      0xEFE3FFFF      QE firmware (current bank)	256KB
0xED300000      0xEFDFFFFF      rootfs (alt bank)		44MB
0xED000000      0xED2FFFFF      Guest image #3 (alternate bank) 3MB
0xECD00000      0xECFFFFFF      Guest image #2 (alternate bank) 3MB
0xECA00000	0xECCFFFFF	Guest image #1 (alternate bank) 3MB
0xEC900000	0xEC9FFFFF	HV config device tree(alt bank)	1MB
0xEC800000      0xEC8FFFFF      Hardware device tree (alt bank) 1MB
0xEC700000	0xEC7FFFFF	HV.uImage (alternate bank)	1MB
0xEC020000      0xEC6FFFFF      Linux.uImage (alt bank)		~7MB
0xEC000000      0xEC01FFFF      RCW (alt bank)			128KB
0xEBF40000      0xEBFFFFFF      U-Boot (alt bank)		768KB
0xEBF20000      0xEBF3FFFF      U-Boot env (alt bank)		128KB
0xEBF00000      0xEBF1FFFF      FMAN ucode (alt bank)		128KB
0xEBE00000      0xEBE3FFFF      QE firmware (alt bank)		256KB
0xE9300000      0xEBDFFFFF      rootfs (current bank)		44MB
0xE9000000      0xE92FFFFF      Guest image #3 (current bank)   3MB
0xE8D00000      0xE8FFFFFF      Guest image #2 (current bank)   3MB
0xE8A00000	0xE8CFFFFF	Guest image #1 (current bank)	3MB
0xE8900000	0xE89FFFFF	HV config device tree(cur bank) 1MB
0xE8800000      0xE88FFFFF      Hardware device tree (cur bank) 1MB
0xE8700000	0xE87FFFFF	HV.uImage (current bank)	1MB
0xE8020000      0xE86FFFFF      Linux.uImage (current bank)	~7MB
0xE8000000      0xE801FFFF      RCW (current bank)		128KB


T1024/T1023 Clock frequency
---------------------------
BIN   Core     DDR       Platform  FMan
Bin1: 1400MHz  1600MT/s  400MHz    700MHz
Bin2: 1200MHz  1600MT/s  400MHz    600MHz
Bin3: 1000MHz  1600MT/s  400MHz    500MHz


Software configurations and board settings
------------------------------------------
1. NOR boot:
   a. build NOR boot image
	$  make T1024RDB_defconfig
	$  make
   b. program u-boot.bin image to NOR flash
	=> tftp 1000000 u-boot.bin
	=> pro off all;era eff40000 efffffff;cp.b 1000000 eff40000 $filesize
	on T1024RDB:
	   set SW1[1:8] = '00010011', SW2[1] = '1', SW3[4] = '0' for NOR boot
	on T1023RDB:
	   set SW1[1:8] = '00010111', SW2[1] = '1', SW3[4] = '0' for NOR boot

   Switching between default bank0 and alternate bank4 on NOR flash
   To change boot source to vbank4:
   on T1024RDB:
	via software:   run command 'cpld reset altbank' in U-Boot.
	via DIP-switch: set SW3[5:7] = '100'
   on T1023RDB:
	via software:   run command 'switch bank4' in U-Boot.
	via DIP-switch: set SW3[5:7] = '100'

   To change boot source to vbank0:
   on T1024RDB:
	via software:   run command 'cpld reset' in U-Boot.
	via DIP-Switch: set SW3[5:7] = '000'
   on T1023RDB:
	via software:   run command 'switch bank0' in U-Boot.
	via DIP-switch: set SW3[5:7] = '000'

2. NAND Boot:
   a. build PBL image for NAND boot
	$ make T1024RDB_NAND_defconfig
	$ make
   b. program u-boot-with-spl-pbl.bin to NAND flash
	=> tftp 1000000 u-boot-with-spl-pbl.bin
	=> nand erase 0 $filesize
	=> nand write 1000000 0 $filesize
	set SW1[1:8] = '10000010', SW2[1] = '1', SW3[4] = '1' for NAND boot

3. SPI Boot:
   a. build PBL image for SPI boot
	$ make T1024RDB_SPIFLASH_defconfig
	$ make
   b. program u-boot-with-spl-pbl.bin to SPI flash
	=> tftp 1000000 u-boot-with-spl-pbl.bin
	=> sf probe 0
	=> sf erase 0 100000
	=> sf write 1000000 0 $filesize
	=> tftp 1000000 fsl_fman_ucode_t1024_xx.bin
	=> sf erase 100000 100000
	=> sf write 1000000 110000 20000
	set SW1[1:8] = '00100010', SW2[1] ='1' for SPI boot

4. SD Boot:
   a. build PBL image for SD boot
	$ make T1024RDB_SDCARD_defconfig
	$ make
   b. program u-boot-with-spl-pbl.bin to SD/MMC card
	=> tftp 1000000 u-boot-with-spl-pbl.bin
	=> mmc write 1000000 8 0x7f0
	=> tftp 1000000 fsl_fman_ucode_t1024_xx.bin
	=> mmc write 1000000 0x820 80
	set SW1[1:8] = '00100000', SW2[1] = '0' for SD boot

   SW3[3] = '1' for SD card(or 'switch sd' by software)
   SW3[3] = '0' for eMMC (or 'switch emmc' by software)


device tree support and how to enable it for different configs
--------------------------------------------------------------
device tree support is available for t1024rdb for below mentioned boot,
1. nor boot
2. nand boot
3. sd boot
4. spiflash boot

to enable device tree support for other boot, below configs need to be
enabled in relative defconfig file,
1. config_default_device_tree="t1024rdb" (change default device tree name if required)
2. config_of_control
3. config_mpc85xx_have_reset_vector if reset vector is located at
   config_reset_vector_address - 0xffc

if device tree support is enabled in defconfig,
1. use 'u-boot-with-dtb.bin' for nor boot.
2. use 'u-boot-with-spl-pbl.bin' for other boot.

2-stage NAND/SPI/SD boot loader
-------------------------------
PBL initializes the internal CPC-SRAM and copy SPL(160K) to SRAM.
SPL further initializes DDR using SPD and environment variables
and copy U-Boot(768 KB) from NAND/SPI/SD device to DDR.
Finally SPL transers control to U-Boot for futher booting.

SPL has following features:
 - Executes within 256K
 - No relocation required

Run time view of SPL framework
-------------------------------------------------
|Area		   | Address			|
-------------------------------------------------
|SecureBoot header | 0xFFFC0000 (32KB)		|
-------------------------------------------------
|GD, BD		   | 0xFFFC8000 (4KB)		|
-------------------------------------------------
|ENV		   | 0xFFFC9000 (8KB)		|
-------------------------------------------------
|HEAP		   | 0xFFFCB000 (30KB)		|
-------------------------------------------------
|STACK		   | 0xFFFD8000 (22KB)		|
-------------------------------------------------
|U-Boot SPL	   | 0xFFFD8000 (160KB)		|
-------------------------------------------------

NAND Flash memory Map on T1024RDB
-------------------------------------------------------------
Start		End		Definition	Size
0x000000	0x0FFFFF	U-Boot		1MB(2 block)
0x100000	0x17FFFF	U-Boot env	512KB(1 block)
0x180000	0x1FFFFF	FMAN Ucode	512KB(1 block)
0x200000	0x27FFFF	QE Firmware	512KB(1 block)


NAND Flash memory Map on T1023RDB
----------------------------------------------------
Start		End		Definition	Size
0x000000	0x0FFFFF	U-Boot		1MB
0x100000	0x15FFFF	U-Boot env	8KB
0x160000	0x17FFFF	FMAN Ucode	128KB


SD Card memory Map on T102xRDB
----------------------------------------------------
Block		#blocks		Definition	Size
0x008		2048		U-Boot img	1MB
0x800		0016		U-Boot env	8KB
0x820		0256		FMAN Ucode	128KB
0x920		0256		QE Firmware	128KB(only T1024RDB)


64MB SPI Flash memory Map on T102xRDB
----------------------------------------------------
Start		End		Definition	Size
0x000000	0x0FFFFF	U-Boot img	1MB
0x100000	0x101FFF	U-Boot env	8KB
0x110000	0x12FFFF	FMAN Ucode	128KB
0x130000	0x14FFFF	QE Firmware	128KB(only T1024RDB)
0x300000	0x3FFFFF	device tree	128KB
0x400000	0x9FFFFF	Linux kernel    6MB
0xa00000	0x3FFFFFF	rootfs		54MB


For more details, please refer to T1024RDB/T1023RDB User Guide
and Freescale QorIQ SDK Infocenter document.