diff options
Diffstat (limited to 'board')
-rw-r--r-- | board/qualcomm/dragonboard410c/MAINTAINERS | 1 | ||||
-rw-r--r-- | board/qualcomm/dragonboard410c/Makefile | 2 | ||||
-rw-r--r-- | board/qualcomm/dragonboard410c/dragonboard410c.c | 13 | ||||
-rw-r--r-- | board/qualcomm/dragonboard410c/head.S | 33 | ||||
-rw-r--r-- | board/qualcomm/dragonboard410c/lowlevel_init.S | 27 | ||||
-rw-r--r-- | board/qualcomm/dragonboard410c/readme.txt | 73 | ||||
-rw-r--r-- | board/qualcomm/dragonboard410c/u-boot.lds | 118 |
7 files changed, 6 insertions, 261 deletions
diff --git a/board/qualcomm/dragonboard410c/MAINTAINERS b/board/qualcomm/dragonboard410c/MAINTAINERS index 83448f5c132..e78f5b2d642 100644 --- a/board/qualcomm/dragonboard410c/MAINTAINERS +++ b/board/qualcomm/dragonboard410c/MAINTAINERS @@ -4,3 +4,4 @@ S: Maintained F: board/qualcomm/dragonboard410c/ F: include/configs/dragonboard410c.h F: configs/dragonboard410c_defconfig +F: doc/board/qualcomm/dragonboard410c.rst diff --git a/board/qualcomm/dragonboard410c/Makefile b/board/qualcomm/dragonboard410c/Makefile index 9b452041f47..1b99c8b0efe 100644 --- a/board/qualcomm/dragonboard410c/Makefile +++ b/board/qualcomm/dragonboard410c/Makefile @@ -3,5 +3,3 @@ # (C) Copyright 2015 Mateusz Kulikowski <mateusz.kulikowski@gmail.com> obj-y := dragonboard410c.o -obj-y += lowlevel_init.o -extra-y += head.o diff --git a/board/qualcomm/dragonboard410c/dragonboard410c.c b/board/qualcomm/dragonboard410c/dragonboard410c.c index 0d282de9580..3b71881cac1 100644 --- a/board/qualcomm/dragonboard410c/dragonboard410c.c +++ b/board/qualcomm/dragonboard410c/dragonboard410c.c @@ -22,19 +22,6 @@ DECLARE_GLOBAL_DATA_PTR; -/* pointer to the device tree ammended by the firmware */ -extern void *fw_dtb; - -void *board_fdt_blob_setup(void) -{ - if (fdt_magic(fw_dtb) != FDT_MAGIC) { - printf("Firmware provided invalid dtb!\n"); - return NULL; - } - - return fw_dtb; -} - int dram_init(void) { gd->ram_size = PHYS_SDRAM_1_SIZE; diff --git a/board/qualcomm/dragonboard410c/head.S b/board/qualcomm/dragonboard410c/head.S deleted file mode 100644 index 33e9d305f93..00000000000 --- a/board/qualcomm/dragonboard410c/head.S +++ /dev/null @@ -1,33 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0+ */ -/* - * ARM64 header for proper chain-loading with Little Kernel. - * - * Little Kernel shipped with Dragonboard410C boots standard Linux images for - * ARM64. This file adds header that is required to boot U-Boot properly. - * - * For details see: - * https://www.kernel.org/doc/Documentation/arm64/booting.txt - * - * (C) Copyright 2015 Mateusz Kulikowski <mateusz.kulikowski@gmail.com> - */ - -#include <config.h> - -.global _arm64_header -_arm64_header: - b _start - .word 0 - /* Image load offset from start of RAM, little-endian */ - .quad CONFIG_SYS_TEXT_BASE-PHYS_SDRAM_1 - /* Effective size of kernel image, little-endian */ - .quad 0 /* 0x60000 - ignored */ - /* Informative flags, little-endian */ - .quad 0 - .quad 0 /* reserved */ - .quad 0 /* reserved */ - .quad 0 /* reserved */ - .byte 0x41 /* Magic number, "ARM\x64" */ - .byte 0x52 - .byte 0x4d - .byte 0x64 - .word 0 /* reserved */ diff --git a/board/qualcomm/dragonboard410c/lowlevel_init.S b/board/qualcomm/dragonboard410c/lowlevel_init.S deleted file mode 100644 index 762fed56170..00000000000 --- a/board/qualcomm/dragonboard410c/lowlevel_init.S +++ /dev/null @@ -1,27 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0+ */ -/* - * (C) Copyright 2016 - * Cédric Schieli <cschieli@gmail.com> - */ - -#include <config.h> - -.align 8 -.global fw_dtb -fw_dtb: - .dword 0x0 - -/* - * Routine: save_boot_params (called after reset from start.S) - * Description: save ATAG/FDT address provided by the firmware at boot time - */ - -.global save_boot_params -save_boot_params: - - /* The firmware provided ATAG/FDT address can be found in r2/x0 */ - adr x8, fw_dtb - str x0, [x8] - - /* Returns */ - b save_boot_params_ret diff --git a/board/qualcomm/dragonboard410c/readme.txt b/board/qualcomm/dragonboard410c/readme.txt index a90d0f52e7f..dfdb299fb77 100644 --- a/board/qualcomm/dragonboard410c/readme.txt +++ b/board/qualcomm/dragonboard410c/readme.txt @@ -1,69 +1,6 @@ -# SPDX-License-Identifier: GPL-2.0+ -# -# (C) Copyright 2015 Mateusz Kulikowski <mateusz.kulikowski@gmail.com> +Documentation for DragonBoard 410c is now located at: + doc/board/qualcomm/dragonboard410c.rst -Build & Run instructions: - -1) Install mkbootimg and dtbTool from - git://codeaurora.org/quic/kernel/skales (15ece94f09 worked for me) -2) Setup CROSS_COMPILE to aarch64 compiler -3) make dragonboard410c_config -4) make -5) generate fake, empty ramdisk (can have 0 bytes) -$ touch rd - -6) Generate qualcomm device tree table with dtbTool [1] -$ dtbTool -o dt.img arch/arm/dts - -7) Generate Android boot image with mkbootimg [2]: -$ mkbootimg --kernel=u-boot-dtb.bin --output=u-boot.img --dt=dt.img \ - --pagesize 2048 --base 0x80000000 --ramdisk=rd --cmdline="" - -8) Enter fastboot (reboot board with vol- button pressed) - -9) Boot it: -$ fastboot boot u-boot.img -or flash as kernel: -$ fastboot flash boot u-boot.img -$ fastboot reboot - - -What is working: -- UART -- GPIO (SoC) -- SD -- eMMC -- Reset -- USB in EHCI mode (usb starts does switch device->host, usb stop does the opposite) -- PMIC GPIOS (but not in generic subsystem) -- PMIC "special" buttons (power, vol-) - -What is not working / known bugs: -- SDHCI is slow (~2.5MiB/s for SD and eMMC) - -[1] To boot any kernel image, Little Kernel requires valid device tree for the -platform it runs on. dtbTool creates device tree table that Little Kernel scans. -Later on proper device tree is passed to next boot stage. -Full device tree is not required to boot u-boot. Enough would be: -/dts-v1/; - -/ { - model = "Qualcomm Technologies, Inc. Dragonboard 410c"; - compatible = "qcom,dragonboard", "qcom,apq8016-sbc"; - qcom,msm-id = <0xce 0x0 0xf8 0x0 0xf9 0x0 0xfa 0x0 0xf7 0x0>; - qcom,board-id = <0x10018 0x0>; - #address-cells = <0x2>; - #size-cells = <0x2>; - chosen { }; - aliases { }; - - memory { - device_type = "memory"; - reg = <0 0x80000000 0 0x3da00000>; - }; -}; - -but for simplicity (and because size of image is not that critical) we use -existing Qualcomm device trees. - -[2] Note that ramdisk is required, even if it is unused. +Note that the installation method has changed: U-Boot is now installed into the +"aboot" partition (replacing Little Kernel/LK). It is no longer packaged into +an Android boot image and loaded through Qualcomm's LK bootloader. diff --git a/board/qualcomm/dragonboard410c/u-boot.lds b/board/qualcomm/dragonboard410c/u-boot.lds deleted file mode 100644 index fc1bba8cf08..00000000000 --- a/board/qualcomm/dragonboard410c/u-boot.lds +++ /dev/null @@ -1,118 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0+ */ -/* - * Override linker script for fastboot-readable images - * - * (C) Copyright 2015 Mateusz Kulikowski <mateusz.kulikowski@gmail.com> - * - * Based on arch/arm/cpu/armv8/u-boot.lds (Just add header) - */ - -OUTPUT_FORMAT("elf64-littleaarch64", "elf64-littleaarch64", "elf64-littleaarch64") -OUTPUT_ARCH(aarch64) -ENTRY(_arm64_header) -SECTIONS -{ - . = 0x00000000; - - . = ALIGN(8); - .text : - { - *(.__image_copy_start) - board/qualcomm/dragonboard410c/head.o (.text*) - CPUDIR/start.o (.text*) - } - - /* This needs to come before *(.text*) */ - .efi_runtime : { - __efi_runtime_start = .; - *(.text.efi_runtime*) - *(.rodata.efi_runtime*) - *(.data.efi_runtime*) - __efi_runtime_stop = .; - } - - .text_rest : - { - *(.text*) - } - - . = ALIGN(8); - .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } - - . = ALIGN(8); - .data : { - *(.data*) - } - - . = ALIGN(8); - - . = .; - - . = ALIGN(8); - .u_boot_list : { - KEEP(*(SORT(.u_boot_list*))); - } - - . = ALIGN(8); - - .efi_runtime : { - __efi_runtime_start = .; - *(efi_runtime_text) - *(efi_runtime_data) - __efi_runtime_stop = .; - } - - .efi_runtime_rel : { - __efi_runtime_rel_start = .; - *(.rel*.efi_runtime) - *(.rel*.efi_runtime.*) - __efi_runtime_rel_stop = .; - } - - . = ALIGN(8); - - .image_copy_end : - { - *(.__image_copy_end) - } - - . = ALIGN(8); - - .rel_dyn_start : - { - *(.__rel_dyn_start) - } - - .rela.dyn : { - *(.rela*) - } - - .rel_dyn_end : - { - *(.__rel_dyn_end) - } - - _end = .; - - . = ALIGN(8); - - .bss_start : { - KEEP(*(.__bss_start)); - } - - .bss : { - *(.bss*) - . = ALIGN(8); - } - - .bss_end : { - KEEP(*(.__bss_end)); - } - - /DISCARD/ : { *(.dynsym) } - /DISCARD/ : { *(.dynstr*) } - /DISCARD/ : { *(.dynamic*) } - /DISCARD/ : { *(.plt*) } - /DISCARD/ : { *(.interp*) } - /DISCARD/ : { *(.gnu*) } -} |