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 | ||
ddr.h | ||
eth.c | ||
Kconfig | ||
ls2080aqds_qixis.h | ||
ls2080aqds.c | ||
MAINTAINERS | ||
Makefile | ||
README |
Overview -------- The LS2080A Development System (QDS) is a high-performance computing, evaluation, and development platform that supports the QorIQ LS2080A and LS2088A Layerscape Architecture processor. The LS2080AQDS provides validation and SW development platform for the Freescale LS2080A, LS2088A processor series, with a complete debugging environment. LS2080A, LS2088A SoC Overview -------------------- Please refer arch/arm/cpu/armv8/fsl-layerscape/doc/README.soc for LS2080A, LS2088A SoC overview. LS2080AQDS board Overview ----------------------- - SERDES Connections, 16 lanes supporting: - PCI Express - 3.0 - SGMII, SGMII 2.5 - QSGMII - SATA 3.0 - XAUI - XFI - DDR Controller - Two ports of 72-bits (8-bits ECC) DDR4. Each port supports four chip-selects and two DIMM connectors. Support is up to 2133MT/s. - One port of 40-bits (8-bits ECC) DDR4 which supports four chip-selects and two DIMM connectors. Support is up to 1600MT/s. -IFC/Local Bus - IFC rev. 2.0 implementation supporting Little Endian connection scheme. - One in-socket 128 MB NOR flash 16-bit data bus - One 512 MB NAND flash with ECC support - IFC Test Port - PromJet Port - FPGA connection - USB 3.0 - Two high speed USB 3.0 ports - First USB 3.0 port configured as Host with Type-A connector - Second USB 3.0 port configured as OTG with micro-AB connector - SDHC: PCIe x1 Right Angle connector for supporting following cards - 1/4-/8-bit SD/MMC Legacy CARD supporting 3.3V devices only - 1-/4-/8-bit SD/MMC Card supporting 1.8V devices only - 4-bit eMMC Card Rev 4.4 (1.8V only) - 8-bit eMMC Card Rev 4.5 (1.8V only) - SD Card Rev 2.0 and Rev 3.0 - DSPI: 3 high-speed flash Memory for storage - 16 MB high-speed flash Memory for boot code and storage (up to 108MHz) - 8 MB high-speed flash Memory (up to 104 MHz) - 512 MB low-speed flash Memory (up to 40 MHz) - QSPI: via NAND/QSPI Card - 4 I2C controllers - Two SATA onboard connectors - UART - Two 4-pin (HW control) or four 2-pin (SW control) serial ports at up to 115.2 Kbit/s - Two DB9 D-Type connectors supporting one Serial port each - ARM JTAG support Memory map from core's view ---------------------------- 0x00_0000_0000 .. 0x00_000F_FFFF Boot Rom 0x00_0100_0000 .. 0x00_0FFF_FFFF CCSR 0x00_1800_0000 .. 0x00_181F_FFFF OCRAM 0x00_3000_0000 .. 0x00_3FFF_FFFF IFC region #1 0x00_8000_0000 .. 0x00_FFFF_FFFF DDR region #1 0x05_1000_0000 .. 0x05_FFFF_FFFF IFC region #2 0x80_8000_0000 .. 0xFF_FFFF_FFFF DDR region #2 Other addresses are either reserved, or not used directly by U-Boot. This list should be updated when more addresses are used. IFC region map from core's view ------------------------------- During boot i.e. IFC Region #1:- 0x30000000 - 0x37ffffff : 128MB : NOR flash 0x38000000 - 0x3BFFFFFF : 64MB : Promjet 0x3C000000 - 0x40000000 : 64MB : FPGA etc After relocate to DDR i.e. IFC Region #2:- 0x5_1000_0000..0x5_1fff_ffff Memory Hole 0x5_2000_0000..0x5_3fff_ffff IFC CSx (FPGA, NAND and others 512MB) 0x5_4000_0000..0x5_7fff_ffff ASIC or others 1GB 0x5_8000_0000..0x5_bfff_ffff IFC CS0 1GB (NOR/Promjet) 0x5_C000_0000..0x5_ffff_ffff IFC CS1 1GB (NOR/Promjet) Booting Options --------------- a) Promjet Boot b) NOR boot c) NAND boot d) SD boot e) QSPI boot Memory map for NOR boot ------------------------- Image Flash Offset RCW+PBI 0x00000000 Boot firmware (U-Boot) 0x00100000 Boot firmware Environment 0x00300000 PPA firmware 0x00400000 Secure Headers 0x00600000 DPAA2 MC 0x00A00000 DPAA2 DPL 0x00D00000 DPAA2 DPC 0x00E00000 Kernel.itb 0x01000000 Memory map for SD boot ------------------------- Image Flash Offset SD Card Start Block No. RCW+PBI 0x00000000 0x00008 Boot firmware (U-Boot) 0x00100000 0x00800 Boot firmware Environment 0x00300000 0x01800 PPA firmware 0x00400000 0x02000 DPAA2 MC 0x00A00000 0x05000 DPAA2 DPL 0x00D00000 0x06800 DPAA2 DPC 0x00E00000 0x07000 Kernel.itb 0x01000000 0x08000 Environment Variables --------------------- - mcboottimeout: MC boot timeout in milliseconds. If this variable is not defined the value CONFIG_SYS_LS_MC_BOOT_TIMEOUT_MS will be assumed. - mcmemsize: MC DRAM block size. If this variable is not defined the value CONFIG_SYS_LS_MC_DRAM_BLOCK_MIN_SIZE will be assumed. Booting Linux flavors which do not support 48-bit VA (< Linux 3.18) ------------------------------------------------------------------- One needs to use appropriate bootargs to boot Linux flavors which do not support 48-bit VA (for e.g. < Linux 3.18) by appending mem=2048M, as shown below: => setenv bootargs 'console=ttyS1,115200 root=/dev/ram earlycon=uart8250,mmio,0x21c0600,115200 default_hugepagesz=2m hugepagesz=2m hugepages=16 mem=2048M' X-QSGMII-16PORT riser card ---------------------------- The X-QSGMII-16PORT is a 4xQSGMII/8xSGMII riser card with eighth SerDes interfaces implemented in PCIe form factor board. It supports following: - Card can operate with up to 4 QSGMII lane simultaneously - Card can operate with up to 8 SGMII lane simultaneously Supported card configuration - CSEL : ON ON ON ON - MSEL1 : ON ON ON ON OFF OFF OFF OFF - MSEL2 : OFF OFF OFF OFF ON ON ON ON To enable this card: modify hwconfig to add "xqsgmii" variable. Supported PHY addresses during SGMII: #define XQSGMII_CARD_PHY1_PORT0_ADDR 0x0 #define XQSGMII_CARD_PHY1_PORT2_ADDR 0x2 #define XQSGMII_CARD_PHY2_PORT0_ADDR 0x4 #define XQSGMII_CARD_PHY2_PORT2_ADDR 0x6 #define XQSGMII_CARD_PHY3_PORT0_ADDR 0x8 #define XQSGMII_CARD_PHY3_PORT2_ADDR 0xa #define XQSGMII_CARD_PHY4_PORT0_ADDR 0xc #define XQSGMII_CARD_PHY4_PORT2_ADDR 0xe Mapping DPMACx to PHY during SGMII DPMAC1 -> PHY1-P0 DPMAC2 -> PHY2-P0 DPMAC3 -> PHY3-P0 DPMAC4 -> PHY4-P0 DPMAC5 -> PHY3-P2 DPMAC6 -> PHY1-P2 DPMAC7 -> PHY4-P1 DPMAC8 -> PHY2-P2 DPMAC9 -> PHY1-P0 DPMAC10 -> PHY2-P0 DPMAC11 -> PHY3-P0 DPMAC12 -> PHY4-P0 DPMAC13 -> PHY3-P2 DPMAC14 -> PHY1-P2 DPMAC15 -> PHY4-P1 DPMAC16 -> PHY2-P2 Supported PHY address during QSGMII #define XQSGMII_CARD_PHY1_PORT0_ADDR 0x0 #define XQSGMII_CARD_PHY1_PORT1_ADDR 0x1 #define XQSGMII_CARD_PHY1_PORT2_ADDR 0x2 #define XQSGMII_CARD_PHY1_PORT3_ADDR 0x3 #define XQSGMII_CARD_PHY2_PORT0_ADDR 0x4 #define XQSGMII_CARD_PHY2_PORT1_ADDR 0x5 #define XQSGMII_CARD_PHY2_PORT2_ADDR 0x6 #define XQSGMII_CARD_PHY2_PORT3_ADDR 0x7 #define XQSGMII_CARD_PHY3_PORT0_ADDR 0x8 #define XQSGMII_CARD_PHY3_PORT1_ADDR 0x9 #define XQSGMII_CARD_PHY3_PORT2_ADDR 0xa #define XQSGMII_CARD_PHY3_PORT3_ADDR 0xb #define XQSGMII_CARD_PHY4_PORT0_ADDR 0xc #define XQSGMII_CARD_PHY4_PORT1_ADDR 0xd #define XQSGMII_CARD_PHY4_PORT2_ADDR 0xe #define XQSGMII_CARD_PHY4_PORT3_ADDR 0xf Mapping DPMACx to PHY during QSGMII DPMAC1 -> PHY1-P3 DPMAC2 -> PHY1-P2 DPMAC3 -> PHY1-P1 DPMAC4 -> PHY1-P0 DPMAC5 -> PHY2-P3 DPMAC6 -> PHY2-P2 DPMAC7 -> PHY2-P1 DPMAC8 -> PHY2-P0 DPMAC9 -> PHY3-P0 DPMAC10 -> PHY3-P1 DPMAC11 -> PHY3-P2 DPMAC12 -> PHY3-P3 DPMAC13 -> PHY4-P0 DPMAC14 -> PHY4-P1 DPMAC15 -> PHY4-P2 DPMAC16 -> PHY4-P3