mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-08-25 19:38:52 +09:00
![Jacob Chen](/assets/img/avatar_default.png)
rockchip platform have a protocol to pass the the kernel reboot mode to bootloader by some special registers when system reboot. In bootloader we should read it and take action. We can only setup boot_mode in board_late_init becasue "setenv" need env setuped. So add CONFIG_BOARD_LATE_INIT to common header and use a entry "rk_board_late_init" to replace "board_late_init" in board file. Signed-off-by: Jacob Chen <jacob2.chen@rock-chips.com> Acked-by: Simon Glass <sjg@chromium.org>
52 lines
943 B
C
52 lines
943 B
C
/*
|
|
* (C) Copyright 2015 Rockchip Electronics Co., Ltd
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0+
|
|
*/
|
|
|
|
#include <common.h>
|
|
#include <dm.h>
|
|
#include <asm/io.h>
|
|
#include <asm/arch/uart.h>
|
|
#include <asm/arch/sdram_rk3036.h>
|
|
#include <asm/gpio.h>
|
|
|
|
DECLARE_GLOBAL_DATA_PTR;
|
|
|
|
void get_ddr_config(struct rk3036_ddr_config *config)
|
|
{
|
|
/* K4B4G1646Q config */
|
|
config->ddr_type = 3;
|
|
config->rank = 1;
|
|
config->cs0_row = 15;
|
|
config->cs1_row = 15;
|
|
|
|
/* 8bank */
|
|
config->bank = 3;
|
|
config->col = 10;
|
|
|
|
/* 16bit bw */
|
|
config->bw = 1;
|
|
}
|
|
|
|
#define FASTBOOT_KEY_GPIO 93
|
|
|
|
int fastboot_key_pressed(void)
|
|
{
|
|
gpio_request(FASTBOOT_KEY_GPIO, "fastboot_key");
|
|
gpio_direction_input(FASTBOOT_KEY_GPIO);
|
|
return !gpio_get_value(FASTBOOT_KEY_GPIO);
|
|
}
|
|
|
|
#define ROCKCHIP_BOOT_MODE_FASTBOOT 0x5242C309
|
|
|
|
int rk_board_late_init(void)
|
|
{
|
|
if (fastboot_key_pressed()) {
|
|
printf("enter fastboot!\n");
|
|
setenv("preboot", "setenv preboot; fastboot usb0");
|
|
}
|
|
|
|
return 0;
|
|
}
|