1 // SPDX-License-Identifier: GPL-2.0 2 /* 3 * Copyright (C) 2018 Xilinx, Inc. - Michal Simek 4 */ 5 6 #include <common.h> 7 #include <dm.h> 8 #include <errno.h> 9 #include <sysreset.h> 10 #include <linux/err.h> 11 #include <linux/stringify.h> 12 microblaze_sysreset_request(struct udevice * dev,enum sysreset_t type)13static int microblaze_sysreset_request(struct udevice *dev, 14 enum sysreset_t type) 15 { 16 puts("Microblaze soft reset sysreset\n"); 17 __asm__ __volatile__ ( 18 "mts rmsr, r0;" \ 19 "brai " __stringify(CONFIG_XILINX_MICROBLAZE0_VECTOR_BASE_ADDR)); 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 }; 33