mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-08-26 03:48:58 +09:00
![Michal Simek](/assets/img/avatar_default.png)
Converting GPIO to DM requires to do changes in reset subsystem that's why support for Microblaze soft reset via sysreset and GPIO sysreset support was added. These two patches enables enabling GPIO DM. Microblaze soft reset is bind at last reset method. GPIO reset is handled via sysreset with adding this fragment to DT. gpio-restart { compatible = "gpio-restart"; gpios = <&reset_gpio 0 0 0>; /* 3rd cell ACTIVE_HIGH = 0, ACTIVE_LOW = 1 */ }; hard-reset-gpio property is not documented and also handled. Conversion is required. Unfortunately do_reset is required for SPL that's why use only soft microblaze reset for now. Signed-off-by: Michal Simek <michal.simek@xilinx.com>
58 lines
1.1 KiB
C
58 lines
1.1 KiB
C
// SPDX-License-Identifier: GPL-2.0+
|
|
/*
|
|
* (C) Copyright 2013 - 2014 Xilinx, Inc
|
|
*
|
|
* Michal Simek <michal.simek@xilinx.com>
|
|
*/
|
|
|
|
#include <common.h>
|
|
#include <image.h>
|
|
#include <spl.h>
|
|
#include <asm/io.h>
|
|
#include <asm/u-boot.h>
|
|
|
|
bool boot_linux;
|
|
|
|
u32 spl_boot_device(void)
|
|
{
|
|
return BOOT_DEVICE_NOR;
|
|
}
|
|
|
|
/* Board initialization after bss clearance */
|
|
void spl_board_init(void)
|
|
{
|
|
/* enable console uart printing */
|
|
preloader_console_init();
|
|
}
|
|
|
|
#ifdef CONFIG_SPL_OS_BOOT
|
|
void __noreturn jump_to_image_linux(struct spl_image_info *spl_image)
|
|
{
|
|
debug("Entering kernel arg pointer: 0x%p\n", spl_image->arg);
|
|
typedef void (*image_entry_arg_t)(char *, ulong, ulong)
|
|
__attribute__ ((noreturn));
|
|
image_entry_arg_t image_entry =
|
|
(image_entry_arg_t)spl_image->entry_point;
|
|
|
|
image_entry(NULL, 0, (ulong)spl_image->arg);
|
|
}
|
|
#endif /* CONFIG_SPL_OS_BOOT */
|
|
|
|
int spl_start_uboot(void)
|
|
{
|
|
#ifdef CONFIG_SPL_OS_BOOT
|
|
if (boot_linux)
|
|
return 0;
|
|
#endif
|
|
|
|
return 1;
|
|
}
|
|
|
|
int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
|
{
|
|
__asm__ __volatile__ ("mts rmsr, r0;" \
|
|
"bra r0");
|
|
|
|
return 0;
|
|
}
|