applied to u-boot-rockchip.

Thanks,
- Kever
On 2022/4/16 23:09, Johan Jonker wrote:
MK808 is a RK3066-based board with 1 USB host and 1 USB OTG port,
HDMI and a micro-SD card slot. It also includes on-board NAND
and 1GB of SDRAM.

Changed V11:
   remove defines
   update defconfig
   align doc examples

Changed V10:
   add u-boot,spl-fifo-mode property
   combine patches core support
   restyle doc rockchip.rst
   add more px30 doc info
   add more rk3066 doc info

Changed V9:
   fix TABs and spaces
   add led config
   enable led gpio
   change pinctrl regmap source
   disable STIMER
   move include

Changed V8:
   update clock driver
   update grf header file

Changed V7:
   add board files
   enable boot from SD card
   restyle pinctrl driver
   restyle sdram driver

===

Boot procedure flow for a Rockchip rk3066 SoC:

1.Read 2K SDRAM initialization image code to internal SRAM
2.Run image code to do SDRAM initialization
3.Transfer boot image code to SDRAM
4.Run boot image code

Supported system boot from the following devices:
Nand Flash
SPI nor Flash
eMMC device
UART interface

If all boot options fail then enter into BootROM mode on the USB OTG port.
Unlike later SoC models the rk3066 BootROM doesn't have SDMMC support.

The size of a full U-boot binary is too large for the internal SDRAM memory.
Of that 64k size only 32kb sram - 2kb bootrom is available for the first stage.

Similar to the already supported rk3188, the BootROM will attempt to load up 
the first stage
image in two steps: first 1KB to offset 0x800 in the SRAM and
then the remainder to offset 0xc00 in the SRAM.
It always enters at offset 0x804 after a 4 ASCII character "RK30" header.

With CONFIG_TPL_ROCKCHIP_EARLYRETURN_TO_BROM=y this first stage is combined with
the U-boot TPL binary (u-boot-tpl.bin).

For rk3066 with NAND flash and U-boot this gives the following stages:

- TPL: init external SDRAM
- SPL: init SDMMC and read U-boot from SD CARD.
- U-boot: read Linux kernel from SD CARD.
- Kernel

Additionally the rk3066 requires everything the BootROM loads to be
RC4-encrypted.

===

Boot solution with full U-boot stored on SD CARD:

Compile commands(U-boot):

ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make mk808_defconfig
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make menuconfig
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make all

===

Size of SPL and TPL must be aligned to 2kb.
If bricked and no BootROM mode shows up then connect pin 8 and 9 of the NAND 
flash
with a needle while reconnecting to the USB OTG port to a PC.

===

Show connected devices with:

lsusb

Bus 001 Device 004: ID 2207:300a Fuzhou Rockchip Electronics Company RK3066 in 
Mask ROM mode

===

Program commands with ./flash.sh:

#!/bin/sh

printf "RK30" > tplspl.bin
dd if=u-boot-tpl.bin >> tplspl.bin
truncate -s %2048 tplspl.bin
truncate -s %2048 u-boot-spl.bin
../tools/boot_merger --verbose config-flash.ini
../tools/upgrade_tool ul ./RK30xxLoader_uboot.bin

===

config-flash.ini:

[CHIP_NAME]
NAME=RK30
[VERSION]
MAJOR=2
MINOR=21
[CODE471_OPTION]
NUM=1
Path1=30_LPDDR2_300MHz_DD.bin
[CODE472_OPTION]
NUM=1
Path1=rk30usbplug.bin
[LOADER_OPTION]
NUM=2
LOADER1=FlashData
LOADER2=FlashBoot
FlashData=tplspl.bin
FlashBoot=u-boot-spl.bin
[OUTPUT]
PATH=RK30xxLoader_uboot.bin

===

Partition Map for MMC device 0  --   Partition Type: EFI
Part    Start LBA       End LBA         Name
   1    0x00000040      0x00001f7f      "loader1"
   2    0x00004000      0x00005fff      "loader2"
   3    0x00006000      0x00007fff      "trust"
   4    0x00008000      0x0003ffff      "boot"
   5    0x00040000      0x00ed7fde      "rootfs"

Make sure boot and esp flag are set for boot partition.
Loader1 partition is not used by RK3066.

===

Boot partition:

extlinux -- extlinux.conf
zImage
rk3066a-mk808.dtb

===

extlinux.conf:

label kernel
     kernel /zImage
     fdt /rk3066a-mk808.dtb
     append root=LABEL=linuxroot init=/sbin/init rootfstype=ext4 rootwait

===

Program commands (SD CARD with GPT partition):

sudo dd if=u-boot-dtb.img of=/dev/sda seek=16384

===

TODO:
   Better program flow/tools
   USB
   NAND
   etc etc

===

Johan Jonker (12):
   rockchip: rk3066-power: sync power domain dt-binding header from Linux
   arm: dts: rockchip: fix rk3xxx-u-boot.dtsi
   arm: dts: rockchip: fix include rk3xxx-u-boot.dtsi
   arm: dts: rockchip: add rk3066a.dtsi
   arm: dts: rockchip: add rk3066a-mk808.dts
   rockchip: tools: add rk3066 support to rkcommon.c
   rockchip: rk3066: add core support
   rockchip: rk3066: add Rikomagic MK808 board
   rockchip: rk3066: add mk808_defconfig
   doc: rockchip: restyle rockchip.rst
   doc: rockchip: add px30/rk3326 boards and examples
   doc: rockchip: add rk3066 Rikomagic MK808

Paweł Jarosz (4):
   rockchip: rk3066: add grf header file
   rockchip: rk3066: add clock driver for rk3066 soc
   rockchip: rk3066: add rk3066 pinctrl driver
   rockchip: rk3066: add sdram driver

  arch/arm/dts/Makefile                         |   3 +
  arch/arm/dts/rk3066a-mk808-u-boot.dtsi        |  49 +
  arch/arm/dts/rk3066a-mk808.dts                | 216 +++++
  arch/arm/dts/rk3066a-u-boot.dtsi              |   4 +
  arch/arm/dts/rk3066a.dtsi                     | 879 +++++++++++++++++
  arch/arm/dts/rk3188-u-boot.dtsi               |   1 +
  arch/arm/dts/rk3188.dtsi                      |   1 -
  arch/arm/dts/rk3xxx-u-boot.dtsi               |   8 +-
  arch/arm/include/asm/arch-rk3066/boot0.h      |   8 +
  arch/arm/include/asm/arch-rk3066/gpio.h       |   8 +
  arch/arm/include/asm/arch-rk3066/timer.h      |   6 +
  .../include/asm/arch-rockchip/cru_rk3066.h    | 157 +++
  .../include/asm/arch-rockchip/grf_rk3066.h    | 210 +++++
  arch/arm/mach-rockchip/Kconfig                |  23 +
  arch/arm/mach-rockchip/Makefile               |   1 +
  arch/arm/mach-rockchip/rk3066/Kconfig         |  39 +
  arch/arm/mach-rockchip/rk3066/Makefile        |   5 +
  arch/arm/mach-rockchip/rk3066/clk_rk3066.c    |  33 +
  arch/arm/mach-rockchip/rk3066/rk3066.c        |  49 +
  arch/arm/mach-rockchip/rk3066/syscon_rk3066.c |  55 ++
  board/rikomagic/mk808/Kconfig                 |  15 +
  board/rikomagic/mk808/MAINTAINERS             |   6 +
  board/rikomagic/mk808/Makefile                |   3 +
  board/rikomagic/mk808/mk808.c                 |   3 +
  configs/mk808_defconfig                       | 102 ++
  doc/board/rockchip/rockchip.rst               | 262 ++++-
  drivers/clk/rockchip/Makefile                 |   1 +
  drivers/clk/rockchip/clk_rk3066.c             | 717 ++++++++++++++
  drivers/pinctrl/rockchip/Makefile             |   1 +
  drivers/pinctrl/rockchip/pinctrl-rk3066.c     | 112 +++
  drivers/ram/rockchip/Makefile                 |   1 +
  drivers/ram/rockchip/sdram_rk3066.c           | 892 ++++++++++++++++++
  include/configs/mk808.h                       |   9 +
  include/configs/rk3066_common.h               |  47 +
  include/dt-bindings/power/rk3066-power.h      |  22 +
  tools/rkcommon.c                              |   1 +
  36 files changed, 3894 insertions(+), 55 deletions(-)
  create mode 100644 arch/arm/dts/rk3066a-mk808-u-boot.dtsi
  create mode 100644 arch/arm/dts/rk3066a-mk808.dts
  create mode 100644 arch/arm/dts/rk3066a-u-boot.dtsi
  create mode 100644 arch/arm/dts/rk3066a.dtsi
  create mode 100644 arch/arm/include/asm/arch-rk3066/boot0.h
  create mode 100644 arch/arm/include/asm/arch-rk3066/gpio.h
  create mode 100644 arch/arm/include/asm/arch-rk3066/timer.h
  create mode 100644 arch/arm/include/asm/arch-rockchip/cru_rk3066.h
  create mode 100644 arch/arm/include/asm/arch-rockchip/grf_rk3066.h
  create mode 100644 arch/arm/mach-rockchip/rk3066/Kconfig
  create mode 100644 arch/arm/mach-rockchip/rk3066/Makefile
  create mode 100644 arch/arm/mach-rockchip/rk3066/clk_rk3066.c
  create mode 100644 arch/arm/mach-rockchip/rk3066/rk3066.c
  create mode 100644 arch/arm/mach-rockchip/rk3066/syscon_rk3066.c
  create mode 100644 board/rikomagic/mk808/Kconfig
  create mode 100644 board/rikomagic/mk808/MAINTAINERS
  create mode 100644 board/rikomagic/mk808/Makefile
  create mode 100644 board/rikomagic/mk808/mk808.c
  create mode 100644 configs/mk808_defconfig
  create mode 100644 drivers/clk/rockchip/clk_rk3066.c
  create mode 100644 drivers/pinctrl/rockchip/pinctrl-rk3066.c
  create mode 100644 drivers/ram/rockchip/sdram_rk3066.c
  create mode 100644 include/configs/mk808.h
  create mode 100644 include/configs/rk3066_common.h
  create mode 100644 include/dt-bindings/power/rk3066-power.h

Reply via email to