mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-08-28 21:09:00 +09:00
![]() 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> |
||
---|---|---|
.. | ||
Kconfig | ||
ls102xa_pbi.cfg | ||
ls102xa_rcw_sd.cfg | ||
ls1021atsn.c | ||
MAINTAINERS | ||
Makefile | ||
README.rst |
.. SPDX-License-Identifier: GPL-2.0 LS1021A-TSN Board Overview ========================== - 1GB DDR3 at 800 MHz - Spansion/Cypress 64 MB (Rev. A) / 32 MB (Rev. B and C) QSPI NOR flash - Ethernet - 2 SGMII 10/100/1G Ethernet ports (Atheros AR8031) - One SJA1105T switch with 4 Ethernet ports (Broadcom BCM5464R) - One internal RGMII port connected to the switch - SDHC - microSDHC/SDXC connector - Other I/O - One Serial port - Arduino and expansion headers - mPCIE slot - SATA port - USB3.0 port LS1021A Memory map ================== The addresses in brackets are physical addresses. ============== ============== ============================== ======= Start Address End Address Description Size ============== ============== ============================== ======= 0x00_0000_0000 0x00_000F_FFFF Secure Boot ROM 1MB 0x00_0100_0000 0x00_0FFF_FFFF CCSRBAR 240MB 0x00_1000_0000 0x00_1000_FFFF OCRAM0 64KB 0x00_1001_0000 0x00_1001_FFFF OCRAM1 64KB 0x00_2000_0000 0x00_20FF_FFFF DCSR 16MB 0x00_4000_0000 0x00_5FFF_FFFF QSPI 512MB 0x00_6000_0000 0x00_67FF_FFFF IFC - NOR Flash 128MB 0x00_8000_0000 0x00_FFFF_FFFF DRAM1 2GB ============== ============== ============================== ======= Compiling and flashing ====================== The LS1021A-TSN board comes along with a microSD card with OpenIL U-Boot that can be used to update its internal QSPI flash (which is empty out of the factory). To compile and flash an SD card image:: make ls1021atsn_sdcard_defconfig && make -j 8 && sudo cp u-boot-with-spl-pbl.bin /srv/tftpboot/ => tftp 0x82000000 u-boot-with-spl-pbl.bin && mmc rescan && mmc erase 8 0x1100 && mmc write 0x82000000 8 0x1100 For the QSPI flash, first obtain the Reset Configuration Word binary for bootimg from the QSPI flash from the rcw project (https://source.codeaurora.org/external/qoriq/qoriq-components/rcw):: make -j 8 && sudo cp ls1021atsn/SSR_PNS_30/rcw_1200_qspiboot.bin.swapped /srv/tftpboot/ The above RCW binary takes care of swapping the QSPI AMBA memory, so that the U-Boot binary does not need to be swapped when flashing it. To compile and flash a U-Boot image for QSPI:: make ls1021atsn_qspi_defconfig && make -j 8 && sudo cp u-boot.bin /srv/tftpboot/ Then optionally create a custom uboot-env.txt file (although the default environment already supports distro boot) and convert it to binary format:: mkenvimage -s 2M -o /srv/tftpboot/uboot-env.bin uboot-env.txt To program the QSPI flash with the images:: => tftp 0x82000000 rcw_1200_qspiboot.bin.swapped && sf probe && sf erase 0x0 +${filesize} && sf write 0x82000000 0x0 ${filesize} => tftp 0x82000000 u-boot.bin && sf probe && sf erase 0x100000 +${filesize} && sf write 0x82000000 0x100000 ${filesize} => tftp 0x82000000 uboot-env.bin && sf probe && sf erase 0x400000 +${filesize} && sf write 0x82000000 0x400000 ${filesize} The boards contain an AT24 I2C EEPROM that is supposed to hold the MAC addresses of the Ethernet interfaces, however the EEPROM comes blank out of the factory, and the MAC addresses are printed on a label on the bottom of the boards. To write the MAC addresses to the EEPROM, the following needs to be done once:: => mac id => mac 0 00:1F:7B:xx:xx:xx => mac 1 00:1F:7B:xx:xx:xx => mac 2 00:1F:7B:xx:xx:xx => mac save The switch ports do not have their own MAC address - they inherit it from the master enet2 port. Known issues and limitations ============================ - The 4 SJA1105 switch ports are not functional in U-Boot for now. - Since the IFC pins are multiplexed with QSPI on LS1021A, currently there is no way to talk to the CPLD for e.g. running the "qixis_reset" command, or turning the fan on, etc.