u-boot/board/theobroma-systems/puma_rk3399
Philipp Tomsich 9415b9a7d8 rockchip: board: puma_rk3399: add support for serial# and cpuid# via efuses
With our efuse driver for the RK3399 ready, we can add the
board-specific code that consumes the cpuid from the efuse block and
postprocesses it into the system serial (using the same CRC32 based
derivation as in Linux).

We expose the cpuid via two distinct environment variables:
   serial# - the serial number, as derived in Linux
   cpuid#  - the raw 16 byte CPU id field from the fuse block

Signed-off-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
Acked-by: Simon Glass <sjg@chromium.org>
2017-06-07 07:29:18 -06:00
..
fit_spl_atf.its rockchip: ARM64: split RK3399-Q7 board off the RK3399-EVB board 2017-04-15 10:13:17 -06:00
Kconfig rockchip: ARM64: split RK3399-Q7 board off the RK3399-EVB board 2017-04-15 10:13:17 -06:00
MAINTAINERS rockchip: ARM64: split RK3399-Q7 board off the RK3399-EVB board 2017-04-15 10:13:17 -06:00
Makefile rockchip: ARM64: split RK3399-Q7 board off the RK3399-EVB board 2017-04-15 10:13:17 -06:00
puma-rk3399.c rockchip: board: puma_rk3399: add support for serial# and cpuid# via efuses 2017-06-07 07:29:18 -06:00
README rockchip: ARM64: split RK3399-Q7 board off the RK3399-EVB board 2017-04-15 10:13:17 -06:00

Introduction
============

The RK3399-Q7 (Puma) is a system-on-module featuring the Rockchip
RK3399 in a Qseven-compatible form-factor.

RK3399-Q7 features:
	* CPU: ARMv8 64bit Big-Little architecture,
		* Big: dual-core Cortex-A72
		* Little: quad-core Cortex-A53
		* IRAM: 200KB
	* DRAM: 4GB-128MB dual-channel
	* eMMC: onboard eMMC
	* SD/MMC
	* GbE (onboard Micrel KSZ9031) Gigabit ethernet PHY
	* USB:
		* USB3.0 dual role port
		* 2x USB3.0 host, 1x USB2.0 host via onboard USB3.0 hub
	* Display: HDMI/eDP/MIPI
	* Camera: 2x CSI (one on the edge connector, one on the Q7 specified CSI ZIF)
	* NOR Flash: onboard SPI NOR
	* Companion Controller: onboard additional Cortex-M0 microcontroller
		* RTC
		* fan controller
		* CAN

Here is the step-by-step to boot to U-Boot on rk3399.

Get the Source and build ATF/Cortex-M0 binaries
===============================================

  > git clone git://git.theobroma-systems.com/arm-trusted-firmware.git
  > git clone git://git.theobroma-systems.com/rk3399-cortex-m0.git

Compile the ATF
===============

  > cd arm-trusted-firmware
  > make CROSS_COMPILE=aarch64-linux-gnu- PLAT=rk3399 bl31
  > cp build/rk3399/release/bl31.bin ../u-boot

Compile the M0 firmware
=======================

  > cd ../rk3399-cortex-m0
  > make CROSS_COMPILE=arm-cortex_m0-eabi-
  > cp rk3399m0.bin ../u-boot

Compile the U-Boot
==================

  > cd ../u-boot
  > make CROSS_COMPILE=aarch64-linux-gnu- puma-rk3399_defconfig all

Package the image
=================

	> tools/mkimage -n rk3399 -T rksd -d spl/u-boot-spl.bin spl.img
	> tools/mkimage -f board/theobroma/puma_rk3399/fit_spl_atf.its \
		-E rk3399_bl3x.itb

Flash the image
===============

Copy the SPL to offset 32k and the FIT image containing the payloads
(U-Boot proper, ATF, M0 Firmware, devicetree) to offset 256k on a SD
card.

  > dd if=spl.img of=/dev/sdb seek=64
  > dd if=rk3399_bl3x.itb of=/dev/sdb seek=512

After powering up the board (with the inserted SD card), you should see
a U-Boot console on UART0 (115200n8).