mirror of
https://github.com/riscv-software-src/opensbi.git
synced 2025-08-25 07:41:42 +01:00

To implement the SBI SRST extension, we need two platform operations for system reset: 1) system_reset_check() - This operation will check whether given reset type and reason are supported by the platform 2) system_reset() - This operation will do the actual platform system reset and it will not return if reset type and reason are supported by the platform This patch updates system reset related code everywhere as-per above. Signed-off-by: Anup Patel <anup.patel@wdc.com> Reviewed-by: Atish Patra <atish.patra@wdc.com>
39 lines
879 B
C
39 lines
879 B
C
/*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*
|
|
* Copyright (c) 2020 Western Digital Corporation or its affiliates.
|
|
*
|
|
* Authors:
|
|
* Anup Patel <anup.patel@wdc.com>
|
|
*/
|
|
|
|
#include <sbi/sbi_scratch.h>
|
|
#include <sbi_utils/fdt/fdt_helper.h>
|
|
#include <sbi_utils/reset/fdt_reset.h>
|
|
#include <sbi_utils/sys/sifive_test.h>
|
|
|
|
static int sifive_test_reset_init(void *fdt, int nodeoff,
|
|
const struct fdt_match *match)
|
|
{
|
|
int rc;
|
|
unsigned long addr;
|
|
|
|
rc = fdt_get_node_addr_size(fdt, nodeoff, &addr, NULL);
|
|
if (rc)
|
|
return rc;
|
|
|
|
return sifive_test_init(addr);
|
|
}
|
|
|
|
static const struct fdt_match sifive_test_reset_match[] = {
|
|
{ .compatible = "sifive,test1" },
|
|
{ },
|
|
};
|
|
|
|
struct fdt_reset fdt_reset_sifive = {
|
|
.match_table = sifive_test_reset_match,
|
|
.init = sifive_test_reset_init,
|
|
.system_reset_check = sifive_test_system_reset_check,
|
|
.system_reset = sifive_test_system_reset
|
|
};
|