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