diff options
author | Tom Rini <trini@konsulko.com> | 2017-12-18 18:39:18 -0500 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2017-12-18 18:39:18 -0500 |
commit | eeab579aa8d76b96afbd0862029d4452943bafbe (patch) | |
tree | 446ba45437bfa80ab191c4137ad3c5a7c86c720c /board | |
parent | 1a3fc354b50b2a86361964b6d695ce26058248f5 (diff) | |
parent | cbe503793aba03c19b8d21e0a6e344afe624e2d6 (diff) | |
download | u-boot-eeab579aa8d76b96afbd0862029d4452943bafbe.tar.gz |
Merge git://git.denx.de/u-boot-rockchip
Diffstat (limited to 'board')
-rw-r--r-- | board/rockchip/evb_rk3399/README | 83 | ||||
-rw-r--r-- | board/theobroma-systems/puma_rk3399/Kconfig | 6 | ||||
-rw-r--r-- | board/theobroma-systems/puma_rk3399/puma-rk3399.c | 19 |
3 files changed, 90 insertions, 18 deletions
diff --git a/board/rockchip/evb_rk3399/README b/board/rockchip/evb_rk3399/README index fb8bb19763..ada8ca7f3c 100644 --- a/board/rockchip/evb_rk3399/README +++ b/board/rockchip/evb_rk3399/README @@ -18,8 +18,8 @@ evb key features: * PMIC: rk808 * debug console: UART2 -In order to support Arm Trust Firmware(ATF), we need to use the -miniloader from rockchip which: +In order to support Arm Trust Firmware(ATF), we can use either SPL or +miniloader from rockchip to do: * do DRAM init * load and verify ATF image * load and verify U-Boot image @@ -32,8 +32,8 @@ Get the Source and prebuild binary > mkdir ~/evb_rk3399 > cd ~/evb_rk3399 > git clone https://github.com/ARM-software/arm-trusted-firmware.git - > git clone https://github.com/rockchip-linux/rkbin - > git clone https://github.com/rockchip-linux/rkflashtool + > git clone https://github.com/rockchip-linux/rkbin.git + > git clone https://github.com/rockchip-linux/rkdeveloptool.git Compile the ATF =============== @@ -42,32 +42,79 @@ Compile the ATF > make realclean > make CROSS_COMPILE=aarch64-linux-gnu- PLAT=rk3399 bl31 + Or you can get the bl31.elf directly from Rockchip: + cp rkbin/rk33/rk3399_bl31_v1.00.elf ../u-boot/bl31.elf + + Get bl31.elf in this step, copy it to U-Boot root dir: + > cp bl31.elf ../u-boot/ + Compile the U-Boot ================== > cd ../u-boot - > make CROSS_COMPILE=aarch64-linux-gnu- evb-rk3399_defconfig all + > export ARCH=arm64 + > export CROSS_COMPILE=aarch64-linux-gnu- + > make evb-rk3399_defconfig + for firefly-rk3399, use below instead: + > make firefly-rk3399_defconfig + > make + > make u-boot.itb -Compile the rkflashtool -======================= + Get spl/u-boot-spl.bin and u-boot.itb in this step. +Compile the rkdeveloptool +======================= + Follow instructions in latest README > cd ../rkflashtool + > autoreconf -i + > ./configure > make + > sudo make install -Package the image for miniloader -================================ + Get rkdeveloptool in you Host in this step. + +Both origin binaries and Tool are ready now, choose either option 1 or +option 2 to deploy U-Boot. + +Package the image +================= + +Package the image for U-Boot SPL(option 1) +-------------------------------- > cd .. - > cp arm-trusted-firmware/build/rk3399/release/bl31.bin rkbin/rk33 + > tools/mkimage -n rk3399 -T rksd -d spl/u-boot-spl.bin idbspl.img + + Get idbspl.img in this step. + +Package the image for Rockchip miniloader(option 2) +------------------------------------------ + > cd .. + > cp arm-trusted-firmware/build/rk3399/release/bl31.elf rkbin/rk33 > ./rkbin/tools/trust_merger rkbin/tools/RK3399TRUST.ini > ./rkbin/tools/loaderimage --pack --uboot u-boot/u-boot-dtb.bin uboot.img - > mkdir image - > mv trust.img ./image/ - > mv uboot.img ./image/rk3399evb-uboot.bin -Flash the image -=============== -Power on(or reset with RESET KEY) with MASKROM KEY preesed, and then: + Get trust.img and uboot.img in this step. - > ./rkflashtool/rkflashloader rk3399evb +Flash the image to eMMC +======================= + +Flash the image with U-Boot SPL(option 1) +------------------------------- +Power on(or reset with RESET KEY) with MASKROM KEY preesed, and then: + > rkdeveloptool db rkbin/rk33/rk3399_loader_v1.08.106.bin + > rkdeveloptool wl 64 u-boot/idbspl.img + > rkdeveloptool wl 0x4000 u-boot/u-boot.itb + > rkdeveloptool rd -You should be able to get U-Boot log message in console/UART2 now. +Flash the image with Rockchip miniloader(option 2) +---------------------------------------- +Power on(or reset with RESET KEY) with MASKROM KEY preesed, and then: + > rkdeveloptool db rkbin/rk33/rk3399_loader_v1.08.106.bin + > rkdeveloptool ul rkbin/rk33/rk3399_loader_v1.08.106.bin + > rkdeveloptool wl 0x4000 u-boot/uboot.img + > rkdeveloptool wl 0x6000 u-boot/trust.img + > rkdeveloptool rd + +You should be able to get U-Boot log in console/UART2(baurdrate 1500000) +For more detail, please reference to: +http://opensource.rock-chips.com/wiki_Boot_option diff --git a/board/theobroma-systems/puma_rk3399/Kconfig b/board/theobroma-systems/puma_rk3399/Kconfig index a645590d78..80b3460d4c 100644 --- a/board/theobroma-systems/puma_rk3399/Kconfig +++ b/board/theobroma-systems/puma_rk3399/Kconfig @@ -12,4 +12,10 @@ config SYS_CONFIG_NAME config BOARD_SPECIFIC_OPTIONS # dummy def_bool y +config ENV_SIZE + default 0x2000 if ENV_IS_IN_SPI_FLASH + +config ENV_OFFSET + default 0x3c000 if ENV_IS_IN_SPI_FLASH + endif diff --git a/board/theobroma-systems/puma_rk3399/puma-rk3399.c b/board/theobroma-systems/puma_rk3399/puma-rk3399.c index 27e3823d52..c6690fa069 100644 --- a/board/theobroma-systems/puma_rk3399/puma-rk3399.c +++ b/board/theobroma-systems/puma_rk3399/puma-rk3399.c @@ -8,13 +8,17 @@ #include <dm.h> #include <misc.h> #include <spl.h> +#include <syscon.h> #include <usb.h> #include <dm/pinctrl.h> #include <dm/uclass-internal.h> +#include <asm/io.h> #include <asm/gpio.h> #include <asm/setup.h> #include <asm/arch/clock.h> #include <asm/arch/cru_rk3399.h> +#include <asm/arch/hardware.h> +#include <asm/arch/grf_rk3399.h> #include <asm/arch/periph.h> #include <power/regulator.h> #include <u-boot/sha256.h> @@ -180,10 +184,25 @@ static void setup_serial(void) #endif } +static void setup_iodomain(void) +{ + const u32 GRF_IO_VSEL_GPIO4CD_SHIFT = 3; + struct rk3399_grf_regs *grf = + syscon_get_first_range(ROCKCHIP_SYSCON_GRF); + + /* + * Set bit 3 in GRF_IO_VSEL so PCIE_RST# works (pin GPIO4_C6). + * Linux assumes that PCIE_RST# works out of the box as it probes + * PCIe before loading the iodomain driver. + */ + rk_setreg(&grf->io_vsel, 1 << GRF_IO_VSEL_GPIO4CD_SHIFT); +} + int misc_init_r(void) { setup_serial(); setup_macaddr(); + setup_iodomain(); return 0; } |