]>
Commit | Line | Data |
---|---|---|
cae39ae3 MS |
1 | // SPDX-License-Identifier: GPL-2.0 |
2 | /* | |
3 | * Copyright (C) 2018 Xilinx, Inc. - Michal Simek | |
4 | */ | |
5 | ||
d678a59d | 6 | #include <common.h> |
cae39ae3 MS |
7 | #include <dm.h> |
8 | #include <errno.h> | |
9 | #include <sysreset.h> | |
10 | #include <linux/err.h> | |
fc7220f0 | 11 | #include <linux/stringify.h> |
cae39ae3 MS |
12 | |
13 | static int microblaze_sysreset_request(struct udevice *dev, | |
14 | enum sysreset_t type) | |
15 | { | |
16 | puts("Microblaze soft reset sysreset\n"); | |
fc7220f0 OP |
17 | __asm__ __volatile__ ( |
18 | "mts rmsr, r0;" \ | |
19 | "brai " __stringify(CONFIG_XILINX_MICROBLAZE0_VECTOR_BASE_ADDR)); | |
cae39ae3 MS |
20 | |
21 | return -EINPROGRESS; | |
22 | } | |
23 | ||
24 | static struct sysreset_ops microblaze_sysreset = { | |
25 | .request = microblaze_sysreset_request, | |
26 | }; | |
27 | ||
28 | U_BOOT_DRIVER(sysreset_microblaze) = { | |
29 | .id = UCLASS_SYSRESET, | |
30 | .name = "mb_soft_reset", | |
31 | .ops = µblaze_sysreset, | |
32 | }; |