public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Johan Jonker <jbx6244@gmail.com>
To: kever.yang@rock-chips.com
Cc: sjg@chromium.org, philipp.tomsich@vrull.eu, lukma@denx.de,
	seanga2@gmail.com, u-boot@lists.denx.de
Subject: [PATCH v8 00/15] Add Rikomagic MK808 board
Date: Tue, 18 Jan 2022 01:36:48 +0100	[thread overview]
Message-ID: <20220118003703.10678-1-jbx6244@gmail.com> (raw)

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.

===

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
	Attributes
	Type GUID
	Partition GUID
  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 not used by

===

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 (11):
  rockchip: rk3066-power: sync power domain dt-binding header from Linux
  arm: dts: rockchip: fix rk3xxx-u-boot.dtsi
  arm: dts: rockchip: add rk3066a.dtsi
  arm: dts: rockchip: add rk3066a-mk808.dts
  rockchip: rk3066: add include
  rockchip: rk3066: add rk3066_common.h include
  rockchip: rk3066: add core support
  rockchip: rk3066: add Rikomagic MK808 board
  rockchip: rk3066: add mk808_defconfig
  rockchip: tools: add rk3066 support to rkcommon.c
  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        |  42 +
 arch/arm/dts/rk3066a-mk808.dts                | 216 +++++
 arch/arm/dts/rk3066a-u-boot.dtsi              |   3 +
 arch/arm/dts/rk3066a.dtsi                     | 880 +++++++++++++++++
 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                       |  99 ++
 doc/board/rockchip/rockchip.rst               |   2 +
 drivers/clk/rockchip/Makefile                 |   1 +
 drivers/clk/rockchip/clk_rk3066.c             | 717 ++++++++++++++
 drivers/pinctrl/rockchip/Makefile             |   1 +
 drivers/pinctrl/rockchip/pinctrl-rk3066.c     | 113 +++
 drivers/ram/rockchip/Makefile                 |   1 +
 drivers/ram/rockchip/sdram_rk3066.c           | 892 ++++++++++++++++++
 include/configs/mk808.h                       |   9 +
 include/configs/rk3066_common.h               |  56 ++
 include/dt-bindings/power/rk3066-power.h      |  22 +
 tools/rkcommon.c                              |   1 +
 34 files changed, 3683 insertions(+), 4 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

-- 
2.20.1


             reply	other threads:[~2022-01-18  0:37 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-18  0:36 Johan Jonker [this message]
2022-01-18  0:36 ` [PATCH v8 01/15] rockchip: rk3066-power: sync power domain dt-binding header from Linux Johan Jonker
2022-01-18  0:36 ` [PATCH v8 02/15] rockchip: rk3066: add grf header file Johan Jonker
2022-01-18  0:36 ` [PATCH v8 03/15] rockchip: rk3066: add clock driver for rk3066 soc Johan Jonker
2022-01-20  0:31   ` Sean Anderson
2022-01-18  0:36 ` [PATCH v8 04/15] rockchip: rk3066: add rk3066 pinctrl driver Johan Jonker
2022-01-18  0:36 ` [PATCH v8 05/15] rockchip: rk3066: add sdram driver Johan Jonker
2022-01-18  0:36 ` [PATCH v8 06/15] arm: dts: rockchip: fix rk3xxx-u-boot.dtsi Johan Jonker
2022-01-18  0:36 ` [PATCH v8 07/15] arm: dts: rockchip: add rk3066a.dtsi Johan Jonker
2022-01-18  0:36 ` [PATCH v8 08/15] arm: dts: rockchip: add rk3066a-mk808.dts Johan Jonker
2022-01-18  0:36 ` [PATCH v8 09/15] rockchip: rk3066: add include Johan Jonker
2022-01-18  0:36 ` [PATCH v8 10/15] rockchip: rk3066: add rk3066_common.h include Johan Jonker
2022-01-18  0:36 ` [PATCH v8 11/15] rockchip: rk3066: add core support Johan Jonker
2022-01-18  0:37 ` [PATCH v8 12/15] rockchip: rk3066: add Rikomagic MK808 board Johan Jonker
2022-01-18  0:37 ` [PATCH v8 13/15] rockchip: rk3066: add mk808_defconfig Johan Jonker
2022-01-18  0:37 ` [PATCH v8 14/15] rockchip: tools: add rk3066 support to rkcommon.c Johan Jonker
2022-01-18  0:37 ` [PATCH v8 15/15] doc: rockchip: add rk3066 Rikomagic MK808 Johan Jonker

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220118003703.10678-1-jbx6244@gmail.com \
    --to=jbx6244@gmail.com \
    --cc=kever.yang@rock-chips.com \
    --cc=lukma@denx.de \
    --cc=philipp.tomsich@vrull.eu \
    --cc=seanga2@gmail.com \
    --cc=sjg@chromium.org \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox