forked from Mirrors/opensbi
lib: utils: reset: Add T-HEAD sample platform reset driver
This driver is for T-HEAD test chip, fpga. It could work with all T-HEAD riscv processors: C9xx series. example1: (Using io-regs for reset) reset: reset-sample { compatible = "thead,reset-sample"; plic-delegate = <0xff 0xd81ffffc>; entry-reg = <0xff 0xff019050>; entry-cnt = <4>; control-reg = <0xff 0xff015004>; control-val = <0x1c>; csr-copy = <0x7f3 0x7c0 0x7c1 0x7c2 0x7c3 0x7c5 0x7cc>; }; example2: (Using csr-regs for reset) reset: reset-sample { compatible = "thead,reset-sample"; plic-delegate = <0xff 0xd81ffffc>; using-csr-reset; csr-copy = <0x7c0 0x7c1 0x7c2 0x7c3 0x7c5 0x7cc 0x3b0 0x3b1 0x3b2 0x3b3 0x3b4 0x3b5 0x3b6 0x3b7 0x3a0>; }; example3: (Only delegate plic enable to S-mode) reset: reset-sample { compatible = "thead,reset-sample"; plic-delegate = <0xff 0xd81ffffc>; }; After this patch, all T-HEAD c9xx would use platform/generic with fw_dynamic as default: CROSS_COMPILE=riscv64-linux-gnu- PLATFORM=generic FW_PIC=y /usr/bin/make The platform/thead will be deprecated. Signed-off-by: Guo Ren <guoren@linux.alibaba.com> Reviewed-by: Anup Patel <anup.patel@wdc.com>
This commit is contained in:
47
lib/utils/reset/fdt_reset_thead_asm.S
Normal file
47
lib/utils/reset/fdt_reset_thead_asm.S
Normal file
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include <sbi/riscv_asm.h>
|
||||
#include "fdt_reset_thead.h"
|
||||
|
||||
/*
|
||||
* csrrs rd, csr, rs1
|
||||
* |31 20|19 15|14 12|11 7|6 0|
|
||||
* csr rs1 010 rd 1110011
|
||||
*/
|
||||
#define CSR_STUB addi x0, x0, 0
|
||||
|
||||
.option norvc
|
||||
.align 3
|
||||
.global __fdt_reset_thead_csrr
|
||||
__fdt_reset_thead_csrr:
|
||||
csrrs a0, 0, x0
|
||||
ret
|
||||
|
||||
.align 3
|
||||
.global __thead_pre_start_warm
|
||||
__thead_pre_start_warm:
|
||||
/*
|
||||
* Clear L1 cache & BTB & BHT ...
|
||||
*/
|
||||
li t1, 0x70013
|
||||
csrw 0x7c2, t1
|
||||
fence rw,rw
|
||||
|
||||
lla t1, custom_csr
|
||||
|
||||
.global __reset_thead_csr_stub
|
||||
__reset_thead_csr_stub:
|
||||
.rept MAX_CUSTOM_CSR
|
||||
REG_L t2, 8(t1)
|
||||
CSR_STUB
|
||||
addi t1, t1, 16
|
||||
.endr
|
||||
/*
|
||||
* Clear L1 cache & BTB & BHT ...
|
||||
*/
|
||||
li t1, 0x70013
|
||||
csrw 0x7c2, t1
|
||||
fence rw,rw
|
||||
j _start_warm
|
Reference in New Issue
Block a user