mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-18 13:11:31 +00:00
Merge branch 'master' of git://git.denx.de/u-boot-rockchip
This commit is contained in:
commit
83853366e3
46 changed files with 312 additions and 17 deletions
|
@ -17,6 +17,11 @@
|
|||
#include <asm/gpio.h>
|
||||
#include <dm/pinctrl.h>
|
||||
|
||||
__weak int rk_board_late_init(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int board_late_init(void)
|
||||
{
|
||||
struct rk3188_grf *grf;
|
||||
|
@ -32,7 +37,7 @@ int board_late_init(void)
|
|||
NOC_REMAP_MASK << NOC_REMAP_SHIFT);
|
||||
}
|
||||
|
||||
return 0;
|
||||
return rk_board_late_init();
|
||||
}
|
||||
|
||||
int board_init(void)
|
||||
|
|
|
@ -122,6 +122,22 @@ static int veyron_init(void)
|
|||
if (IS_ERR_VALUE(ret))
|
||||
return ret;
|
||||
|
||||
ret = regulator_get_by_platname("vcc33_sd", &dev);
|
||||
if (ret) {
|
||||
debug("Cannot get regulator name\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = regulator_set_value(dev, 3300000);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = regulators_enable_boot_on(false);
|
||||
if (ret) {
|
||||
debug("%s: Cannot enable boot on regulators\n", __func__);
|
||||
return ret;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
@ -301,10 +317,10 @@ U_BOOT_CMD(
|
|||
""
|
||||
);
|
||||
|
||||
#define GRF_SOC_CON2 0xff77024c
|
||||
|
||||
int board_early_init_f(void)
|
||||
{
|
||||
const uintptr_t GRF_SOC_CON0 = 0xff770244;
|
||||
const uintptr_t GRF_SOC_CON2 = 0xff77024c;
|
||||
struct udevice *pinctrl;
|
||||
struct udevice *dev;
|
||||
int ret;
|
||||
|
@ -333,5 +349,11 @@ int board_early_init_f(void)
|
|||
}
|
||||
rk_setreg(GRF_SOC_CON2, 1 << 0);
|
||||
|
||||
/*
|
||||
* Disable JTAG on sdmmc0 IO. The SDMMC won't work until this bit is
|
||||
* cleared
|
||||
*/
|
||||
rk_clrreg(GRF_SOC_CON0, 1 << 12);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -57,6 +57,54 @@ u32 spl_boot_device(void)
|
|||
return boot_device;
|
||||
}
|
||||
|
||||
const char *spl_decode_boot_device(u32 boot_device)
|
||||
{
|
||||
int i;
|
||||
static const struct {
|
||||
u32 boot_device;
|
||||
const char *ofpath;
|
||||
} spl_boot_devices_tbl[] = {
|
||||
{ BOOT_DEVICE_MMC1, "/dwmmc@fe320000" },
|
||||
{ BOOT_DEVICE_MMC2, "/sdhci@fe330000" },
|
||||
{ BOOT_DEVICE_SPI, "/spi@ff1d0000" },
|
||||
};
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(spl_boot_devices_tbl); ++i)
|
||||
if (spl_boot_devices_tbl[i].boot_device == boot_device)
|
||||
return spl_boot_devices_tbl[i].ofpath;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void spl_perform_fixups(struct spl_image_info *spl_image)
|
||||
{
|
||||
void *blob = spl_image->fdt_addr;
|
||||
const char *boot_ofpath;
|
||||
int chosen;
|
||||
|
||||
/*
|
||||
* Inject the ofpath of the device the full U-Boot (or Linux in
|
||||
* Falcon-mode) was booted from into the FDT, if a FDT has been
|
||||
* loaded at the same time.
|
||||
*/
|
||||
if (!blob)
|
||||
return;
|
||||
|
||||
boot_ofpath = spl_decode_boot_device(spl_image->boot_device);
|
||||
if (!boot_ofpath) {
|
||||
pr_err("%s: could not map boot_device to ofpath\n", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
chosen = fdt_find_or_add_subnode(blob, 0, "chosen");
|
||||
if (chosen < 0) {
|
||||
pr_err("%s: could not find/create '/chosen'\n", __func__);
|
||||
return;
|
||||
}
|
||||
fdt_setprop_string(blob, chosen,
|
||||
"u-boot,spl-boot-device", boot_ofpath);
|
||||
}
|
||||
|
||||
#define TIMER_CHN10_BASE 0xff8680a0
|
||||
#define TIMER_END_COUNT_L 0x00
|
||||
#define TIMER_END_COUNT_H 0x04
|
||||
|
@ -124,7 +172,7 @@ void board_init_f(ulong dummy)
|
|||
* printascii("string");
|
||||
*/
|
||||
debug_uart_init();
|
||||
printascii("U-Boot SPL board init");
|
||||
printascii("U-Boot SPL board init\n");
|
||||
#endif
|
||||
|
||||
ret = spl_early_init();
|
||||
|
|
|
@ -65,7 +65,7 @@ Compile the U-Boot
|
|||
Compile the rkdeveloptool
|
||||
=======================
|
||||
Follow instructions in latest README
|
||||
> cd ../rkflashtool
|
||||
> cd ../rkdeveloptool
|
||||
> autoreconf -i
|
||||
> ./configure
|
||||
> make
|
||||
|
|
|
@ -196,11 +196,85 @@ static void setup_iodomain(void)
|
|||
rk_setreg(&grf->io_vsel, 1 << GRF_IO_VSEL_GPIO4CD_SHIFT);
|
||||
}
|
||||
|
||||
/*
|
||||
* Swap mmc0 and mmc1 in boot_targets if booted from SD-Card.
|
||||
*
|
||||
* If bootsource is uSD-card we can assume that we want to use the
|
||||
* SD-Card instead of the eMMC as first boot_target for distroboot.
|
||||
* We only want to swap the defaults and not any custom environment a
|
||||
* user has set. We exit early if a changed boot_targets environment
|
||||
* is detected.
|
||||
*/
|
||||
static int setup_boottargets(void)
|
||||
{
|
||||
const char *boot_device =
|
||||
ofnode_get_chosen_prop("u-boot,spl-boot-device");
|
||||
char *env_default, *env;
|
||||
|
||||
if (!boot_device) {
|
||||
debug("%s: /chosen/u-boot,spl-boot-device not set\n",
|
||||
__func__);
|
||||
return -1;
|
||||
}
|
||||
debug("%s: booted from %s\n", __func__, boot_device);
|
||||
|
||||
env_default = env_get_default("boot_targets");
|
||||
env = env_get("boot_targets");
|
||||
if (!env) {
|
||||
debug("%s: boot_targets does not exist\n", __func__);
|
||||
return -1;
|
||||
}
|
||||
debug("%s: boot_targets current: %s - default: %s\n",
|
||||
__func__, env, env_default);
|
||||
|
||||
if (strcmp(env_default, env) != 0) {
|
||||
debug("%s: boot_targets not default, don't change it\n",
|
||||
__func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Only run, if booting from mmc1 (i.e. /dwmmc@fe320000) and
|
||||
* only consider cases where the default boot-order first
|
||||
* tries to boot from mmc0 (eMMC) and then from mmc1
|
||||
* (i.e. external SD).
|
||||
*
|
||||
* In other words: the SD card will be moved to earlier in the
|
||||
* order, if U-Boot was also loaded from the SD-card.
|
||||
*/
|
||||
if (!strcmp(boot_device, "/dwmmc@fe320000")) {
|
||||
char *mmc0, *mmc1;
|
||||
|
||||
debug("%s: booted from SD-Card\n", __func__);
|
||||
mmc0 = strstr(env, "mmc0");
|
||||
mmc1 = strstr(env, "mmc1");
|
||||
|
||||
if (!mmc0 || !mmc1) {
|
||||
debug("%s: only one mmc boot_target found\n", __func__);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/*
|
||||
* If mmc0 comes first in the boot order, we need to change
|
||||
* the strings to make mmc1 first.
|
||||
*/
|
||||
if (mmc0 < mmc1) {
|
||||
mmc0[3] = '1';
|
||||
mmc1[3] = '0';
|
||||
debug("%s: set boot_targets to: %s\n", __func__, env);
|
||||
env_set("boot_targets", env);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int misc_init_r(void)
|
||||
{
|
||||
setup_serial();
|
||||
setup_macaddr();
|
||||
setup_iodomain();
|
||||
setup_boottargets();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -80,6 +80,11 @@ int __weak bootz_setup(ulong image, ulong *start, ulong *end)
|
|||
}
|
||||
#endif
|
||||
|
||||
/* Weak default function for arch/board-specific fixups to the spl_image_info */
|
||||
void __weak spl_perform_fixups(struct spl_image_info *spl_image)
|
||||
{
|
||||
}
|
||||
|
||||
void spl_fixup_fdt(void)
|
||||
{
|
||||
#if defined(CONFIG_SPL_OF_LIBFDT) && defined(CONFIG_SYS_SPL_ARGS_ADDR)
|
||||
|
@ -445,8 +450,10 @@ static int boot_from_devices(struct spl_image_info *spl_image,
|
|||
else
|
||||
puts("SPL: Unsupported Boot Device!\n");
|
||||
#endif
|
||||
if (loader && !spl_load_image(spl_image, loader))
|
||||
if (loader && !spl_load_image(spl_image, loader)) {
|
||||
spl_image->boot_device = spl_boot_list[i];
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
return -ENODEV;
|
||||
|
@ -498,6 +505,7 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
|
|||
#ifdef CONFIG_SYS_SPL_ARGS_ADDR
|
||||
spl_image.arg = (void *)CONFIG_SYS_SPL_ARGS_ADDR;
|
||||
#endif
|
||||
spl_image.boot_device = BOOT_DEVICE_NONE;
|
||||
board_boot_order(spl_boot_list);
|
||||
|
||||
if (boot_from_devices(&spl_image, spl_boot_list,
|
||||
|
@ -506,6 +514,8 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
|
|||
hang();
|
||||
}
|
||||
|
||||
spl_perform_fixups(&spl_image);
|
||||
|
||||
#ifdef CONFIG_CPU_V7M
|
||||
spl_image.entry_point |= 0x1;
|
||||
#endif
|
||||
|
|
|
@ -13,6 +13,7 @@ CONFIG_SPL_SPI_SUPPORT=y
|
|||
CONFIG_DEFAULT_DEVICE_TREE="rk3288-veyron-mickey"
|
||||
CONFIG_DEBUG_UART=y
|
||||
# CONFIG_ANDROID_BOOT_IMAGE is not set
|
||||
CONFIG_DEFAULT_FDT_FILE="rk3288-veyron-mickey.dtb"
|
||||
# CONFIG_DISPLAY_CPUINFO is not set
|
||||
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||
CONFIG_SPL_STACK_R=y
|
||||
|
|
|
@ -14,6 +14,7 @@ CONFIG_DEFAULT_DEVICE_TREE="rk3288-veyron-jerry"
|
|||
CONFIG_DEBUG_UART=y
|
||||
# CONFIG_ANDROID_BOOT_IMAGE is not set
|
||||
CONFIG_SILENT_CONSOLE=y
|
||||
CONFIG_DEFAULT_FDT_FILE="rk3288-veyron-jerry.dtb"
|
||||
# CONFIG_DISPLAY_CPUINFO is not set
|
||||
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||
CONFIG_BOARD_EARLY_INIT_F=y
|
||||
|
|
|
@ -14,6 +14,7 @@ CONFIG_DEFAULT_DEVICE_TREE="rk3288-veyron-minnie"
|
|||
CONFIG_DEBUG_UART=y
|
||||
# CONFIG_ANDROID_BOOT_IMAGE is not set
|
||||
CONFIG_SILENT_CONSOLE=y
|
||||
CONFIG_DEFAULT_FDT_FILE="rk3288-veyron-minnie.dtb"
|
||||
# CONFIG_DISPLAY_CPUINFO is not set
|
||||
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||
CONFIG_SPL_STACK_R=y
|
||||
|
|
|
@ -9,6 +9,7 @@ CONFIG_DEBUG_UART_CLOCK=24000000
|
|||
CONFIG_DEFAULT_DEVICE_TREE="rk3368-px5-evb"
|
||||
CONFIG_DEBUG_UART=y
|
||||
CONFIG_ANDROID_BOOT_IMAGE=y
|
||||
CONFIG_DEFAULT_FDT_FILE="rockchip/rk3368-px5-evb.dtb"
|
||||
# CONFIG_DISPLAY_CPUINFO is not set
|
||||
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||
CONFIG_ARCH_EARLY_INIT_R=y
|
||||
|
|
|
@ -13,6 +13,7 @@ CONFIG_SPL_STACK_R_ADDR=0x80000
|
|||
CONFIG_DEFAULT_DEVICE_TREE="rk3036-sdk"
|
||||
CONFIG_DEBUG_UART=y
|
||||
# CONFIG_ANDROID_BOOT_IMAGE is not set
|
||||
CONFIG_DEFAULT_FDT_FILE="rk3036-evb.dtb"
|
||||
# CONFIG_DISPLAY_CPUINFO is not set
|
||||
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||
# CONFIG_SPL_FRAMEWORK is not set
|
||||
|
|
|
@ -7,6 +7,7 @@ CONFIG_DEBUG_UART_CLOCK=24000000
|
|||
CONFIG_DEFAULT_DEVICE_TREE="rk3128-evb"
|
||||
CONFIG_DEBUG_UART=y
|
||||
CONFIG_FIT=y
|
||||
CONFIG_DEFAULT_FDT_FILE="rk3128-evb.dtb"
|
||||
# CONFIG_DISPLAY_CPUINFO is not set
|
||||
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||
CONFIG_CMD_GPT=y
|
||||
|
|
|
@ -12,6 +12,7 @@ CONFIG_DEBUG_UART_CLOCK=24000000
|
|||
CONFIG_SPL_STACK_R_ADDR=0x80000
|
||||
CONFIG_DEFAULT_DEVICE_TREE="rk3229-evb"
|
||||
CONFIG_DEBUG_UART=y
|
||||
CONFIG_DEFAULT_FDT_FILE="rk3229-evb.dtb"
|
||||
# CONFIG_DISPLAY_CPUINFO is not set
|
||||
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||
CONFIG_SPL_STACK_R=y
|
||||
|
|
|
@ -12,6 +12,7 @@ CONFIG_DEFAULT_DEVICE_TREE="rk3288-evb"
|
|||
CONFIG_DEBUG_UART=y
|
||||
# CONFIG_ANDROID_BOOT_IMAGE is not set
|
||||
CONFIG_SILENT_CONSOLE=y
|
||||
CONFIG_DEFAULT_FDT_FILE="rk3288-evb-rk808.dtb"
|
||||
# CONFIG_DISPLAY_CPUINFO is not set
|
||||
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||
CONFIG_SPL_STACK_R=y
|
||||
|
|
|
@ -8,6 +8,7 @@ CONFIG_DEFAULT_DEVICE_TREE="rk3328-evb"
|
|||
CONFIG_DEBUG_UART=y
|
||||
# CONFIG_ANDROID_BOOT_IMAGE is not set
|
||||
CONFIG_FIT=y
|
||||
CONFIG_DEFAULT_FDT_FILE="rockchip/rk3328-evb.dtb"
|
||||
# CONFIG_DISPLAY_CPUINFO is not set
|
||||
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||
CONFIG_CMD_BOOTZ=y
|
||||
|
|
|
@ -14,6 +14,7 @@ CONFIG_DEBUG_UART=y
|
|||
CONFIG_FIT=y
|
||||
CONFIG_SPL_LOAD_FIT=y
|
||||
CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-rockchip/make_fit_atf.py"
|
||||
CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-evb.dtb"
|
||||
# CONFIG_DISPLAY_CPUINFO is not set
|
||||
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||
CONFIG_SPL_STACK_R=y
|
||||
|
|
|
@ -8,6 +8,7 @@ CONFIG_DEBUG_UART_CLOCK=24000000
|
|||
CONFIG_DEFAULT_DEVICE_TREE="rv1108-evb"
|
||||
CONFIG_DEBUG_UART=y
|
||||
# CONFIG_USE_BOOTCOMMAND is not set
|
||||
CONFIG_DEFAULT_FDT_FILE="rv1108-evb.dtb"
|
||||
# CONFIG_DISPLAY_CPUINFO is not set
|
||||
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||
CONFIG_RANDOM_UUID=y
|
||||
|
|
|
@ -13,6 +13,7 @@ CONFIG_DEBUG_UART=y
|
|||
# CONFIG_ANDROID_BOOT_IMAGE is not set
|
||||
CONFIG_SILENT_CONSOLE=y
|
||||
CONFIG_CONSOLE_MUX=y
|
||||
CONFIG_DEFAULT_FDT_FILE="rk3288-fennec.dtb"
|
||||
# CONFIG_DISPLAY_CPUINFO is not set
|
||||
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||
CONFIG_SPL_STACK_R=y
|
||||
|
|
|
@ -12,6 +12,7 @@ CONFIG_DEFAULT_DEVICE_TREE="rk3288-firefly"
|
|||
CONFIG_DEBUG_UART=y
|
||||
# CONFIG_ANDROID_BOOT_IMAGE is not set
|
||||
CONFIG_SILENT_CONSOLE=y
|
||||
CONFIG_DEFAULT_FDT_FILE="rk3288-firefly.dtb"
|
||||
# CONFIG_DISPLAY_CPUINFO is not set
|
||||
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||
CONFIG_SPL_STACK_R=y
|
||||
|
|
|
@ -14,6 +14,7 @@ CONFIG_DEBUG_UART=y
|
|||
CONFIG_FIT=y
|
||||
CONFIG_SPL_LOAD_FIT=y
|
||||
CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-rockchip/make_fit_atf.py"
|
||||
CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-firefly.dtb"
|
||||
# CONFIG_DISPLAY_CPUINFO is not set
|
||||
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||
CONFIG_SPL_STACK_R=y
|
||||
|
|
|
@ -8,6 +8,7 @@ CONFIG_DEBUG_UART_BASE=0xFF690000
|
|||
CONFIG_DEBUG_UART_CLOCK=24000000
|
||||
CONFIG_DEFAULT_DEVICE_TREE="rk3368-geekbox"
|
||||
CONFIG_DEBUG_UART=y
|
||||
CONFIG_DEFAULT_FDT_FILE="rockchip/rk3368-geekbox.dtb"
|
||||
# CONFIG_DISPLAY_CPUINFO is not set
|
||||
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||
CONFIG_REGMAP=y
|
||||
|
|
|
@ -10,6 +10,7 @@ CONFIG_SPL_SYS_MALLOC_F_LEN=0x0
|
|||
CONFIG_SPL_STACK_R_ADDR=0x80000
|
||||
CONFIG_DEFAULT_DEVICE_TREE="rk3036-sdk"
|
||||
# CONFIG_ANDROID_BOOT_IMAGE is not set
|
||||
CONFIG_DEFAULT_FDT_FILE="rk3036-kylin.dtb"
|
||||
# CONFIG_DISPLAY_CPUINFO is not set
|
||||
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||
# CONFIG_SPL_FRAMEWORK is not set
|
||||
|
|
|
@ -27,6 +27,7 @@ CONFIG_BOOTSTAGE=y
|
|||
CONFIG_SPL_BOOTSTAGE=y
|
||||
CONFIG_BOOTSTAGE_REPORT=y
|
||||
CONFIG_BOOTSTAGE_FDT=y
|
||||
CONFIG_DEFAULT_FDT_FILE="rockchip/rk3368-lion-haikou.dtb"
|
||||
# CONFIG_DISPLAY_CPUINFO is not set
|
||||
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||
CONFIG_ARCH_EARLY_INIT_R=y
|
||||
|
|
|
@ -12,6 +12,7 @@ CONFIG_DEFAULT_DEVICE_TREE="rk3288-miqi"
|
|||
CONFIG_DEBUG_UART=y
|
||||
# CONFIG_ANDROID_BOOT_IMAGE is not set
|
||||
CONFIG_SILENT_CONSOLE=y
|
||||
CONFIG_DEFAULT_FDT_FILE="rk3288-miqi.dtb"
|
||||
# CONFIG_DISPLAY_CPUINFO is not set
|
||||
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||
CONFIG_SPL_STACK_R=y
|
||||
|
|
|
@ -13,6 +13,7 @@ CONFIG_DEBUG_UART=y
|
|||
# CONFIG_ANDROID_BOOT_IMAGE is not set
|
||||
CONFIG_SILENT_CONSOLE=y
|
||||
CONFIG_CONSOLE_MUX=y
|
||||
CONFIG_DEFAULT_FDT_FILE="rk3288-phycore-rdk.dtb"
|
||||
# CONFIG_DISPLAY_CPUINFO is not set
|
||||
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||
CONFIG_SPL_STACK_R=y
|
||||
|
|
|
@ -13,6 +13,7 @@ CONFIG_DEBUG_UART=y
|
|||
# CONFIG_ANDROID_BOOT_IMAGE is not set
|
||||
CONFIG_SILENT_CONSOLE=y
|
||||
CONFIG_CONSOLE_MUX=y
|
||||
CONFIG_DEFAULT_FDT_FILE="rk3288-popmetal.dtb"
|
||||
# CONFIG_DISPLAY_CPUINFO is not set
|
||||
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||
CONFIG_SPL_STACK_R=y
|
||||
|
|
|
@ -18,6 +18,7 @@ CONFIG_DEBUG_UART=y
|
|||
CONFIG_FIT=y
|
||||
CONFIG_SPL_LOAD_FIT=y
|
||||
CONFIG_SPL_FIT_SOURCE="board/theobroma-systems/puma_rk3399/fit_spl_atf.its"
|
||||
CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-puma-haikou.dtb"
|
||||
# CONFIG_DISPLAY_CPUINFO is not set
|
||||
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||
CONFIG_SPL_BOARD_INIT=y
|
||||
|
|
|
@ -12,6 +12,7 @@ CONFIG_DEFAULT_DEVICE_TREE="rk3288-rock2-square"
|
|||
CONFIG_DEBUG_UART=y
|
||||
# CONFIG_ANDROID_BOOT_IMAGE is not set
|
||||
CONFIG_SILENT_CONSOLE=y
|
||||
CONFIG_DEFAULT_FDT_FILE="rk3288-rock2-square.dtb"
|
||||
# CONFIG_DISPLAY_CPUINFO is not set
|
||||
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||
CONFIG_SPL_STACK_R=y
|
||||
|
|
|
@ -12,6 +12,7 @@ CONFIG_DEBUG_UART_CLOCK=24000000
|
|||
CONFIG_SPL_STACK_R_ADDR=0x60080000
|
||||
CONFIG_DEFAULT_DEVICE_TREE="rk3188-radxarock"
|
||||
CONFIG_DEBUG_UART=y
|
||||
CONFIG_DEFAULT_FDT_FILE="rk3188-radxarock.dtb"
|
||||
# CONFIG_DISPLAY_CPUINFO is not set
|
||||
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||
CONFIG_SPL_STACK_R=y
|
||||
|
|
|
@ -9,6 +9,7 @@ CONFIG_DEBUG_UART_CLOCK=24000000
|
|||
CONFIG_DEFAULT_DEVICE_TREE="rk3368-sheep"
|
||||
CONFIG_DEBUG_UART=y
|
||||
CONFIG_ANDROID_BOOT_IMAGE=y
|
||||
CONFIG_DEFAULT_FDT_FILE="rockchip/rk3368-sheep.dtb"
|
||||
# CONFIG_DISPLAY_CPUINFO is not set
|
||||
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||
CONFIG_CMD_MMC=y
|
||||
|
|
|
@ -54,4 +54,5 @@ CONFIG_USB_GADGET_DOWNLOAD=y
|
|||
CONFIG_USB_HOST_ETHER=y
|
||||
CONFIG_USB_ETHER_ASIX=y
|
||||
CONFIG_USB_ETHER_MCS7830=y
|
||||
CONFIG_SPL_TINY_MEMSET=y
|
||||
# CONFIG_EFI_LOADER is not set
|
||||
|
|
|
@ -13,6 +13,7 @@ CONFIG_DEBUG_UART=y
|
|||
# CONFIG_ANDROID_BOOT_IMAGE is not set
|
||||
CONFIG_SILENT_CONSOLE=y
|
||||
CONFIG_CONSOLE_MUX=y
|
||||
CONFIG_DEFAULT_FDT_FILE="rk3288-tinker.dtb"
|
||||
# CONFIG_DISPLAY_CPUINFO is not set
|
||||
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||
CONFIG_SPL_STACK_R=y
|
||||
|
|
|
@ -12,6 +12,7 @@ CONFIG_SPL_STACK_R_ADDR=0x80000
|
|||
CONFIG_DEFAULT_DEVICE_TREE="rk3288-vyasa"
|
||||
CONFIG_DEBUG_UART=y
|
||||
CONFIG_SILENT_CONSOLE=y
|
||||
CONFIG_DEFAULT_FDT_FILE="rk3288-vyasa.dtb"
|
||||
# CONFIG_DISPLAY_CPUINFO is not set
|
||||
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||
CONFIG_SPL_STACK_R=y
|
||||
|
|
|
@ -124,11 +124,11 @@ something like:
|
|||
=>
|
||||
|
||||
The rockchip bootrom can load and boot an initial spl, then continue to
|
||||
load a second-level bootloader(ie. U-BOOT) as soon as it returns to bootrom.
|
||||
Therefore RK3288 has another loading sequence like RK3036. The option of
|
||||
U-Boot is controlled with this setting in U-Boot:
|
||||
load a second-stage bootloader (ie. U-Boot) as soon as the control is returned
|
||||
to the bootrom. Both the RK3288 and the RK3036 use this special boot sequence.
|
||||
The configuration option enabling this is:
|
||||
|
||||
#define CONFIG_SPL_ROCKCHIP_BACK_TO_BROM
|
||||
CONFIG_SPL_ROCKCHIP_BACK_TO_BROM=y
|
||||
|
||||
You can create the image via the following operations:
|
||||
|
||||
|
|
|
@ -73,3 +73,13 @@ Example
|
|||
u-boot,spl-boot-order = "same-as-spl", &sdmmc, "/sdhci@fe330000";
|
||||
};
|
||||
};
|
||||
|
||||
u-boot,spl-boot-device property
|
||||
-------------------------------
|
||||
|
||||
This property is a companion-property to the u-boot,spl-boot-order and
|
||||
will be injected automatically by the SPL stage to notify a later stage
|
||||
of where said later stage was booted from.
|
||||
|
||||
You should not define this property yourself in the device-tree, as it
|
||||
may be overwritten without warning.
|
||||
|
|
|
@ -31,6 +31,18 @@ struct rk_i2c {
|
|||
unsigned int speed;
|
||||
};
|
||||
|
||||
enum {
|
||||
RK_I2C_LEGACY,
|
||||
RK_I2C_NEW,
|
||||
};
|
||||
|
||||
/**
|
||||
* @controller_type: i2c controller type
|
||||
*/
|
||||
struct rk_i2c_soc_data {
|
||||
int controller_type;
|
||||
};
|
||||
|
||||
static inline void rk_i2c_get_div(int div, int *divh, int *divl)
|
||||
{
|
||||
*divl = div / 2;
|
||||
|
@ -378,9 +390,38 @@ static int rockchip_i2c_ofdata_to_platdata(struct udevice *bus)
|
|||
static int rockchip_i2c_probe(struct udevice *bus)
|
||||
{
|
||||
struct rk_i2c *priv = dev_get_priv(bus);
|
||||
struct rk_i2c_soc_data *soc_data;
|
||||
struct udevice *pinctrl;
|
||||
int bus_nr;
|
||||
int ret;
|
||||
|
||||
priv->regs = dev_read_addr_ptr(bus);
|
||||
|
||||
soc_data = (struct rk_i2c_soc_data*)dev_get_driver_data(bus);
|
||||
|
||||
if (soc_data->controller_type == RK_I2C_LEGACY) {
|
||||
ret = dev_read_alias_seq(bus, &bus_nr);
|
||||
if (ret < 0) {
|
||||
debug("%s: Could not get alias for %s: %d\n",
|
||||
__func__, bus->name, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = uclass_get_device(UCLASS_PINCTRL, 0, &pinctrl);
|
||||
if (ret) {
|
||||
debug("%s: Cannot find pinctrl device\n", __func__);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* pinctrl will switch I2C to new type */
|
||||
ret = pinctrl_request_noflags(pinctrl, PERIPH_ID_I2C0 + bus_nr);
|
||||
if (ret) {
|
||||
debug("%s: Failed to switch I2C to new type %s: %d\n",
|
||||
__func__, bus->name, ret);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -389,12 +430,55 @@ static const struct dm_i2c_ops rockchip_i2c_ops = {
|
|||
.set_bus_speed = rockchip_i2c_set_bus_speed,
|
||||
};
|
||||
|
||||
static const struct rk_i2c_soc_data rk3066_soc_data = {
|
||||
.controller_type = RK_I2C_LEGACY,
|
||||
};
|
||||
|
||||
static const struct rk_i2c_soc_data rk3188_soc_data = {
|
||||
.controller_type = RK_I2C_LEGACY,
|
||||
};
|
||||
|
||||
static const struct rk_i2c_soc_data rk3228_soc_data = {
|
||||
.controller_type = RK_I2C_NEW,
|
||||
};
|
||||
|
||||
static const struct rk_i2c_soc_data rk3288_soc_data = {
|
||||
.controller_type = RK_I2C_NEW,
|
||||
};
|
||||
|
||||
static const struct rk_i2c_soc_data rk3328_soc_data = {
|
||||
.controller_type = RK_I2C_NEW,
|
||||
};
|
||||
|
||||
static const struct rk_i2c_soc_data rk3399_soc_data = {
|
||||
.controller_type = RK_I2C_NEW,
|
||||
};
|
||||
|
||||
static const struct udevice_id rockchip_i2c_ids[] = {
|
||||
{ .compatible = "rockchip,rk3066-i2c" },
|
||||
{ .compatible = "rockchip,rk3188-i2c" },
|
||||
{ .compatible = "rockchip,rk3288-i2c" },
|
||||
{ .compatible = "rockchip,rk3328-i2c" },
|
||||
{ .compatible = "rockchip,rk3399-i2c" },
|
||||
{
|
||||
.compatible = "rockchip,rk3066-i2c",
|
||||
.data = (ulong)&rk3066_soc_data,
|
||||
},
|
||||
{
|
||||
.compatible = "rockchip,rk3188-i2c",
|
||||
.data = (ulong)&rk3188_soc_data,
|
||||
},
|
||||
{
|
||||
.compatible = "rockchip,rk3228-i2c",
|
||||
.data = (ulong)&rk3228_soc_data,
|
||||
},
|
||||
{
|
||||
.compatible = "rockchip,rk3288-i2c",
|
||||
.data = (ulong)&rk3288_soc_data,
|
||||
},
|
||||
{
|
||||
.compatible = "rockchip,rk3328-i2c",
|
||||
.data = (ulong)&rk3328_soc_data,
|
||||
},
|
||||
{
|
||||
.compatible = "rockchip,rk3399-i2c",
|
||||
.data = (ulong)&rk3399_soc_data,
|
||||
},
|
||||
{ }
|
||||
};
|
||||
|
||||
|
|
|
@ -12,5 +12,7 @@
|
|||
#define KERNEL_LOAD_ADDR 0x280000
|
||||
#define DTB_LOAD_ADDR 0x5600000
|
||||
#define INITRD_LOAD_ADDR 0x5bf0000
|
||||
/* PHY needs longer aneg time at 1G */
|
||||
#define PHY_ANEG_TIMEOUT 8000
|
||||
|
||||
#endif
|
||||
|
|
|
@ -56,6 +56,7 @@
|
|||
/* Linux fails to load the fdt if it's loaded above 512M on a evb-rk3036 board,
|
||||
* so limit the fdt reallocation to that */
|
||||
#define CONFIG_EXTRA_ENV_SETTINGS \
|
||||
"fdt_file=" CONFIG_DEFAULT_FDT_FILE "\0" \
|
||||
"fdt_high=0x7fffffff\0" \
|
||||
"partitions=" PARTS_DEFAULT \
|
||||
ENV_MEM_LAYOUT_SETTINGS \
|
||||
|
|
|
@ -53,6 +53,7 @@
|
|||
#include <config_distro_bootcmd.h>
|
||||
#define CONFIG_EXTRA_ENV_SETTINGS \
|
||||
ENV_MEM_LAYOUT_SETTINGS \
|
||||
"fdt_file=" CONFIG_DEFAULT_FDT_FILE "\0" \
|
||||
"partitions=" PARTS_DEFAULT \
|
||||
BOOTENV
|
||||
|
||||
|
|
|
@ -61,6 +61,7 @@
|
|||
/* Linux fails to load the fdt if it's loaded above 256M on a Rock board,
|
||||
* so limit the fdt reallocation to that */
|
||||
#define CONFIG_EXTRA_ENV_SETTINGS \
|
||||
"fdtfile=" CONFIG_DEFAULT_FDT_FILE "\0" \
|
||||
"fdt_high=0x6fffffff\0" \
|
||||
"initrd_high=0x6fffffff\0" \
|
||||
"partitions=" PARTS_DEFAULT \
|
||||
|
|
|
@ -52,6 +52,7 @@
|
|||
/* Linux fails to load the fdt if it's loaded above 512M on a evb-rk3036 board,
|
||||
* so limit the fdt reallocation to that */
|
||||
#define CONFIG_EXTRA_ENV_SETTINGS \
|
||||
"fdtfile=" CONFIG_DEFAULT_FDT_FILE "\0" \
|
||||
"fdt_high=0x7fffffff\0" \
|
||||
"partitions=" PARTS_DEFAULT \
|
||||
ENV_MEM_LAYOUT_SETTINGS \
|
||||
|
|
|
@ -69,7 +69,7 @@
|
|||
#define CONFIG_EXTRA_ENV_SETTINGS \
|
||||
"fdt_high=0x0fffffff\0" \
|
||||
"initrd_high=0x0fffffff\0" \
|
||||
"fdtfile=" CONFIG_DEFAULT_DEVICE_TREE ".dtb\0" \
|
||||
"fdtfile=" CONFIG_DEFAULT_FDT_FILE "\0" \
|
||||
"partitions=" PARTS_DEFAULT \
|
||||
ENV_MEM_LAYOUT_SETTINGS \
|
||||
ROCKCHIP_DEVICE_SETTINGS \
|
||||
|
|
|
@ -46,6 +46,7 @@
|
|||
#include <config_distro_bootcmd.h>
|
||||
#define CONFIG_EXTRA_ENV_SETTINGS \
|
||||
ENV_MEM_LAYOUT_SETTINGS \
|
||||
"fdtfile=" CONFIG_DEFAULT_FDT_FILE "\0" \
|
||||
"partitions=" PARTS_DEFAULT \
|
||||
BOOTENV
|
||||
|
||||
|
|
|
@ -46,6 +46,7 @@
|
|||
#include <config_distro_bootcmd.h>
|
||||
|
||||
#define CONFIG_EXTRA_ENV_SETTINGS \
|
||||
"fdtfile=" CONFIG_DEFAULT_DEVICE_TREE ".dtb\0" \
|
||||
ENV_MEM_LAYOUT_SETTINGS \
|
||||
BOOTENV
|
||||
|
||||
|
|
|
@ -55,7 +55,7 @@
|
|||
#include <config_distro_bootcmd.h>
|
||||
#define CONFIG_EXTRA_ENV_SETTINGS \
|
||||
ENV_MEM_LAYOUT_SETTINGS \
|
||||
"fdtfile=rockchip/" CONFIG_DEFAULT_DEVICE_TREE ".dtb\0" \
|
||||
"fdtfile=" CONFIG_DEFAULT_FDT_FILE "\0" \
|
||||
"partitions=" PARTS_DEFAULT \
|
||||
BOOTENV
|
||||
|
||||
|
|
|
@ -29,6 +29,7 @@ struct spl_image_info {
|
|||
#if CONFIG_IS_ENABLED(LOAD_FIT)
|
||||
void *fdt_addr;
|
||||
#endif
|
||||
u32 boot_device;
|
||||
u32 size;
|
||||
u32 flags;
|
||||
void *arg;
|
||||
|
@ -296,4 +297,10 @@ void spl_invoke_atf(struct spl_image_info *spl_image);
|
|||
* can implement 'board_return_to_bootrom'.
|
||||
*/
|
||||
void board_return_to_bootrom(void);
|
||||
|
||||
/**
|
||||
* spl_perform_fixups() - arch/board-specific callback before processing
|
||||
* the boot-payload
|
||||
*/
|
||||
void spl_perform_fixups(struct spl_image_info *spl_image);
|
||||
#endif
|
||||
|
|
Loading…
Add table
Reference in a new issue