Sheep board is designed by Rockchip as a EVB for rk3368. Currently it is able to boot a linux kernel and system to console with the miniloader run as fist level loader. Reviewed-by: Simon Glass <sjg@chromium.org> Signed-off-by: Andy Yan <andy.yan@rock-chips.com>master
parent
fe9d4e77ea
commit
e2901ab8f6
@ -0,0 +1,283 @@ |
||||
/* |
||||
* (C) Copyright 2017 Rockchip Electronics Co., Ltd |
||||
* |
||||
* SPDX-License-Identifier: GPL-2.0+ |
||||
*/ |
||||
|
||||
/dts-v1/; |
||||
#include "rk3368.dtsi" |
||||
#include <dt-bindings/input/input.h> |
||||
|
||||
/ { |
||||
model = "Rockchip sheep board"; |
||||
compatible = "rockchip,sheep", "rockchip,rk3368"; |
||||
|
||||
chosen { |
||||
stdout-path = "serial2:115200n8"; |
||||
}; |
||||
|
||||
memory@0 { |
||||
device_type = "memory"; |
||||
reg = <0x0 0x0 0x0 0x80000000>; |
||||
}; |
||||
|
||||
ext_gmac: gmac-clk { |
||||
compatible = "fixed-clock"; |
||||
clock-frequency = <125000000>; |
||||
clock-output-names = "ext_gmac"; |
||||
#clock-cells = <0>; |
||||
}; |
||||
|
||||
ir: ir-receiver { |
||||
compatible = "gpio-ir-receiver"; |
||||
gpios = <&gpio3 30 GPIO_ACTIVE_LOW>; |
||||
pinctrl-names = "default"; |
||||
pinctrl-0 = <&ir_int>; |
||||
}; |
||||
|
||||
keys: gpio-keys { |
||||
compatible = "gpio-keys"; |
||||
pinctrl-names = "default"; |
||||
pinctrl-0 = <&pwr_key>; |
||||
|
||||
power { |
||||
gpios = <&gpio0 2 GPIO_ACTIVE_LOW>; |
||||
label = "GPIO Power"; |
||||
linux,code = <KEY_POWER>; |
||||
wakeup-source; |
||||
}; |
||||
}; |
||||
|
||||
leds: gpio-leds { |
||||
compatible = "gpio-leds"; |
||||
|
||||
blue { |
||||
gpios = <&gpio2 2 GPIO_ACTIVE_HIGH>; |
||||
label = "geekbox:blue:led"; |
||||
default-state = "on"; |
||||
}; |
||||
|
||||
red { |
||||
gpios = <&gpio2 3 GPIO_ACTIVE_HIGH>; |
||||
label = "geekbox:red:led"; |
||||
default-state = "off"; |
||||
}; |
||||
}; |
||||
|
||||
vcc_sys: vcc-sys-regulator { |
||||
compatible = "regulator-fixed"; |
||||
regulator-name = "vcc_sys"; |
||||
regulator-min-microvolt = <5000000>; |
||||
regulator-max-microvolt = <5000000>; |
||||
regulator-always-on; |
||||
regulator-boot-on; |
||||
}; |
||||
}; |
||||
|
||||
&emmc { |
||||
status = "okay"; |
||||
bus-width = <8>; |
||||
cap-mmc-highspeed; |
||||
clock-frequency = <150000000>; |
||||
disable-wp; |
||||
keep-power-in-suspend; |
||||
non-removable; |
||||
num-slots = <1>; |
||||
vmmc-supply = <&vcc_io>; |
||||
vqmmc-supply = <&vcc18_flash>; |
||||
pinctrl-names = "default"; |
||||
pinctrl-0 = <&emmc_clk>, <&emmc_cmd>, <&emmc_bus8>; |
||||
}; |
||||
|
||||
&gmac { |
||||
status = "okay"; |
||||
phy-supply = <&vcc_lan>; |
||||
phy-mode = "rgmii"; |
||||
clock_in_out = "input"; |
||||
assigned-clocks = <&cru SCLK_MAC>; |
||||
assigned-clock-parents = <&ext_gmac>; |
||||
pinctrl-names = "default"; |
||||
pinctrl-0 = <&rgmii_pins>; |
||||
tx_delay = <0x30>; |
||||
rx_delay = <0x10>; |
||||
}; |
||||
|
||||
&i2c0 { |
||||
status = "okay"; |
||||
|
||||
rk808: pmic@1b { |
||||
compatible = "rockchip,rk808"; |
||||
reg = <0x1b>; |
||||
pinctrl-names = "default"; |
||||
pinctrl-0 = <&pmic_int>, <&pmic_sleep>; |
||||
interrupt-parent = <&gpio0>; |
||||
interrupts = <5 IRQ_TYPE_LEVEL_LOW>; |
||||
rockchip,system-power-controller; |
||||
vcc1-supply = <&vcc_sys>; |
||||
vcc2-supply = <&vcc_sys>; |
||||
vcc3-supply = <&vcc_sys>; |
||||
vcc4-supply = <&vcc_sys>; |
||||
vcc6-supply = <&vcc_sys>; |
||||
vcc7-supply = <&vcc_sys>; |
||||
vcc8-supply = <&vcc_io>; |
||||
vcc9-supply = <&vcc_sys>; |
||||
vcc10-supply = <&vcc_sys>; |
||||
vcc11-supply = <&vcc_sys>; |
||||
vcc12-supply = <&vcc_io>; |
||||
clock-output-names = "xin32k", "rk808-clkout2"; |
||||
#clock-cells = <1>; |
||||
|
||||
regulators { |
||||
vdd_cpu: DCDC_REG1 { |
||||
regulator-always-on; |
||||
regulator-boot-on; |
||||
regulator-min-microvolt = <700000>; |
||||
regulator-max-microvolt = <1500000>; |
||||
regulator-name = "vdd_cpu"; |
||||
}; |
||||
|
||||
vdd_log: DCDC_REG2 { |
||||
regulator-always-on; |
||||
regulator-boot-on; |
||||
regulator-min-microvolt = <700000>; |
||||
regulator-max-microvolt = <1500000>; |
||||
regulator-name = "vdd_log"; |
||||
}; |
||||
|
||||
vcc_ddr: DCDC_REG3 { |
||||
regulator-always-on; |
||||
regulator-boot-on; |
||||
regulator-name = "vcc_ddr"; |
||||
}; |
||||
|
||||
vcc_io: DCDC_REG4 { |
||||
regulator-always-on; |
||||
regulator-boot-on; |
||||
regulator-min-microvolt = <3300000>; |
||||
regulator-max-microvolt = <3300000>; |
||||
regulator-name = "vcc_io"; |
||||
}; |
||||
|
||||
vcc18_flash: LDO_REG1 { |
||||
regulator-always-on; |
||||
regulator-boot-on; |
||||
regulator-min-microvolt = <1800000>; |
||||
regulator-max-microvolt = <1800000>; |
||||
regulator-name = "vcc18_flash"; |
||||
}; |
||||
|
||||
vcc33_lcd: LDO_REG2 { |
||||
regulator-always-on; |
||||
regulator-boot-on; |
||||
regulator-min-microvolt = <3300000>; |
||||
regulator-max-microvolt = <3300000>; |
||||
regulator-name = "vcc33_lcd"; |
||||
}; |
||||
|
||||
vdd_10: LDO_REG3 { |
||||
regulator-always-on; |
||||
regulator-boot-on; |
||||
regulator-min-microvolt = <1000000>; |
||||
regulator-max-microvolt = <1000000>; |
||||
regulator-name = "vdd_10"; |
||||
}; |
||||
|
||||
vcca_18: LDO_REG4 { |
||||
regulator-boot-on; |
||||
regulator-min-microvolt = <1800000>; |
||||
regulator-max-microvolt = <1800000>; |
||||
regulator-name = "vcca_18"; |
||||
}; |
||||
|
||||
vccio_sd: LDO_REG5 { |
||||
regulator-always-on; |
||||
regulator-boot-on; |
||||
regulator-min-microvolt = <1800000>; |
||||
regulator-max-microvolt = <3300000>; |
||||
regulator-name = "vccio_sd"; |
||||
}; |
||||
|
||||
vdd10_lcd: LDO_REG6 { |
||||
regulator-always-on; |
||||
regulator-boot-on; |
||||
regulator-min-microvolt = <1000000>; |
||||
regulator-max-microvolt = <1000000>; |
||||
regulator-name = "vdd10_lcd"; |
||||
}; |
||||
|
||||
vcc_18: LDO_REG7 { |
||||
regulator-always-on; |
||||
regulator-boot-on; |
||||
regulator-min-microvolt = <1800000>; |
||||
regulator-max-microvolt = <1800000>; |
||||
regulator-name = "vcc_18"; |
||||
}; |
||||
|
||||
vcc18_lcd: LDO_REG8 { |
||||
regulator-always-on; |
||||
regulator-boot-on; |
||||
regulator-min-microvolt = <1800000>; |
||||
regulator-max-microvolt = <1800000>; |
||||
regulator-name = "vcc18_lcd"; |
||||
}; |
||||
|
||||
vcc_sd: SWITCH_REG1 { |
||||
regulator-always-on; |
||||
regulator-boot-on; |
||||
regulator-name = "vcc_sd"; |
||||
}; |
||||
|
||||
vcc_lan: SWITCH_REG2 { |
||||
regulator-always-on; |
||||
regulator-boot-on; |
||||
regulator-name = "vcc_lan"; |
||||
}; |
||||
}; |
||||
}; |
||||
}; |
||||
|
||||
&pinctrl { |
||||
ir { |
||||
ir_int: ir-int { |
||||
rockchip,pins = <3 30 RK_FUNC_GPIO &pcfg_pull_none>; |
||||
}; |
||||
}; |
||||
|
||||
keys { |
||||
pwr_key: pwr-key { |
||||
rockchip,pins = <0 2 RK_FUNC_GPIO &pcfg_pull_none>; |
||||
}; |
||||
}; |
||||
|
||||
pmic { |
||||
pmic_sleep: pmic-sleep { |
||||
rockchip,pins = <0 0 RK_FUNC_2 &pcfg_pull_none>; |
||||
}; |
||||
|
||||
pmic_int: pmic-int { |
||||
rockchip,pins = <0 5 RK_FUNC_GPIO &pcfg_pull_up>; |
||||
}; |
||||
}; |
||||
}; |
||||
|
||||
&tsadc { |
||||
status = "okay"; |
||||
rockchip,hw-tshut-mode = <0>; /* CRU */ |
||||
rockchip,hw-tshut-polarity = <1>; /* high */ |
||||
}; |
||||
|
||||
&uart4 { |
||||
status = "okay"; |
||||
}; |
||||
|
||||
&usb_host0_ehci { |
||||
status = "okay"; |
||||
}; |
||||
|
||||
&usb_otg { |
||||
status = "okay"; |
||||
}; |
||||
|
||||
&wdt { |
||||
status = "okay"; |
||||
}; |
@ -1,6 +1,17 @@ |
||||
if ROCKCHIP_RK3368 |
||||
|
||||
choice |
||||
prompt "RK3368 board" |
||||
|
||||
config TARGET_SHEEP |
||||
bool "Sheep board" |
||||
help |
||||
Sheep board is designed by Rockchip as a EVB board |
||||
for rk3368. |
||||
endchoice |
||||
|
||||
config SYS_SOC |
||||
default "rockchip" |
||||
|
||||
source "board/rockchip/sheep_rk3368/Kconfig" |
||||
endif |
||||
|
@ -0,0 +1,15 @@ |
||||
if TARGET_SHEEP |
||||
|
||||
config SYS_BOARD |
||||
default "sheep_rk3368" |
||||
|
||||
config SYS_VENDOR |
||||
default "rockchip" |
||||
|
||||
config SYS_CONFIG_NAME |
||||
default "sheep_rk3368" |
||||
|
||||
config BOARD_SPECIFIC_OPTIONS # dummy |
||||
def_bool y |
||||
|
||||
endif |
@ -0,0 +1,6 @@ |
||||
RK3368 Sheep Board |
||||
M: Andy Yan <andy.yan@rock-chips.com> |
||||
S: Maintained |
||||
F: board/rockchip/sheep_rk3368 |
||||
F: include/configs/sheep_rk3368.h |
||||
F: configs/sheep-rk3368_defconfig |
@ -0,0 +1,7 @@ |
||||
#
|
||||
# Copyright (c) 2017 Rockchip Electronics Co., Ltd
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
#
|
||||
|
||||
obj-y += sheep_rk3368.o
|
@ -0,0 +1,44 @@ |
||||
Here is the step-by-step to boot to U-Boot on rk3368. |
||||
|
||||
Get miniloader and trust.img form rockchip vendor u-boot source code |
||||
============================================================================== |
||||
> git clone https://github.com/rockchip-linux/u-boot.git rockchip-uboot |
||||
> cd rockchip-uboot |
||||
> make rk3368_defconfig /*chose px5_defconfig if you run a px5 platform here*/ |
||||
> ./mkv8.sh |
||||
|
||||
Compile the upstream U-Boot |
||||
=========================== |
||||
> cd u-boot |
||||
> make CROSS_COMPILE=aarch64-linux-gnu- sheep-rk3368_defconfig all |
||||
|
||||
Package u-boot for miniloader |
||||
================================ |
||||
> ../rockchip-uboot/tools/loaderimage --pack --uboot u-boot.bin u-boot.img |
||||
|
||||
Flash the image by rkdeveloptool |
||||
================================ |
||||
rkdeveloptool can get from https://github.com/rockchip-linux/rkdeveloptool.git |
||||
|
||||
Power on(or reset with RESET KEY) with MASKROM KEY preesed, and then: |
||||
> rkdeveloptool db ./rockchip-uboot/rk3368_loader_v2.00.256.bin |
||||
> rkdeveloptool wl 0x6000 ./rockchip-uboot/trust.img |
||||
> rkdeveloptool wl 0x4000 ./u-boot/u-boot.img |
||||
> rkdeveloptool RD |
||||
|
||||
You should be able to get U-Boot log message from boot console: |
||||
|
||||
U-Boot 2017.05-rc3-01094-g9ddd1e8-dirty (May 15 2017 - 15:57:23 +0800) |
||||
|
||||
Model: Rockchip sheep board |
||||
DRAM: 2 GiB |
||||
MMC: dwmmc@ff0f0000: 0 |
||||
Using default environment |
||||
|
||||
In: serial@ff690000 |
||||
Out: serial@ff690000 |
||||
Err: serial@ff690000 |
||||
Net: Net Initialization Skipped |
||||
No ethernet found. |
||||
Hit any key to stop autoboot: 0 |
||||
=> |
@ -0,0 +1,37 @@ |
||||
/*
|
||||
* Copyright (c) 2017 Andy Yan |
||||
* |
||||
* SPDX-License-Identifier: GPL-2.0+ |
||||
*/ |
||||
#include <common.h> |
||||
#include <asm/io.h> |
||||
#include <asm/arch/clock.h> |
||||
#include <asm/arch/grf_rk3368.h> |
||||
#include <syscon.h> |
||||
|
||||
DECLARE_GLOBAL_DATA_PTR; |
||||
|
||||
int mach_cpu_init(void) |
||||
{ |
||||
return 0; |
||||
} |
||||
|
||||
int board_init(void) |
||||
{ |
||||
return 0; |
||||
} |
||||
|
||||
int dram_init(void) |
||||
{ |
||||
gd->ram_size = 0x80000000; |
||||
|
||||
return 0; |
||||
} |
||||
|
||||
int dram_init_banksize(void) |
||||
{ |
||||
gd->bd->bi_dram[0].start = 0x200000; |
||||
gd->bd->bi_dram[0].size = 0x7fe00000; |
||||
|
||||
return 0; |
||||
} |
@ -0,0 +1,28 @@ |
||||
CONFIG_ARM=y |
||||
CONFIG_ARCH_ROCKCHIP=y |
||||
CONFIG_ROCKCHIP_RK3368=y |
||||
CONFIG_TARGET_SHEEP=y |
||||
CONFIG_DEFAULT_DEVICE_TREE="rk3368-sheep" |
||||
CONFIG_HUSH_PARSER=y |
||||
# CONFIG_DISPLAY_CPUINFO is not set |
||||
CONFIG_FASTBOOT=y |
||||
CONFIG_ANDROID_BOOT_IMAGE=y |
||||
# CONFIG_CMD_IMLS is not set |
||||
CONFIG_REGMAP=y |
||||
CONFIG_SYSCON=y |
||||
CONFIG_CLK=y |
||||
CONFIG_CMD_MMC=y |
||||
CONFIG_CMD_BOOTRK=y |
||||
CONFIG_MMC_DW=y |
||||
CONFIG_MMC_DW_ROCKCHIP=y |
||||
CONFIG_SYSRESET=y |
||||
CONFIG_PINCTRL=y |
||||
CONFIG_ROCKCHIP_RK3368_PINCTRL=y |
||||
CONFIG_RAM=y |
||||
CONFIG_DEBUG_UART=y |
||||
CONFIG_DEBUG_UART_BASE=0xFF1b0000 |
||||
CONFIG_DEBUG_UART_CLOCK=24000000 |
||||
CONFIG_DEBUG_UART_SHIFT=2 |
||||
CONFIG_DEBUG_UART_ANNOUNCE=y |
||||
CONFIG_DEBUG_UART_SKIP_INIT=y |
||||
CONFIG_ERRNO_STR=y |
@ -0,0 +1,21 @@ |
||||
/*
|
||||
* Copyright (c) 2017 Rockchip Electronics Co., Ltd |
||||
* |
||||
* SPDX-License-Identifier: GPL-2.0+ |
||||
*/ |
||||
|
||||
#ifndef __CONFIGS_PX5_EVB_H |
||||
#define __CONFIGS_PX5_EVB_H |
||||
|
||||
#include <configs/rk3368_common.h> |
||||
|
||||
#define CONFIG_SYS_MMC_ENV_DEV 0 |
||||
#define KERNEL_LOAD_ADDR 0x280000 |
||||
#define DTB_LOAD_ADDR 0x5600000 |
||||
#define INITRD_LOAD_ADDR 0x5bf0000 |
||||
#define CONFIG_ENV_IS_NOWHERE |
||||
#define CONFIG_ENV_SIZE 0x2000 |
||||
|
||||
#define CONFIG_CONSOLE_SCROLL_LINES 10 |
||||
|
||||
#endif |
Loading…
Reference in new issue