1 // SPDX-License-Identifier: GPL-2.0+
2 /*
3  * Cadence Tensilica xtfpga system reset driver.
4  *
5  * (C) Copyright 2016 Cadence Design Systems Inc.
6  */
7 
8 #include <common.h>
9 #include <dm.h>
10 #include <errno.h>
11 #include <sysreset.h>
12 #include <asm/io.h>
13 
xtfpga_reset_request(struct udevice * dev,enum sysreset_t type)14 static int xtfpga_reset_request(struct udevice *dev, enum sysreset_t type)
15 {
16 	switch (type) {
17 	case SYSRESET_COLD:
18 		writel(CONFIG_SYS_FPGAREG_RESET_CODE,
19 		       CONFIG_SYS_FPGAREG_RESET);
20 		break;
21 	default:
22 		return -EPROTONOSUPPORT;
23 	}
24 
25 	return -EINPROGRESS;
26 }
27 
28 static struct sysreset_ops xtfpga_sysreset_ops = {
29 	.request	= xtfpga_reset_request,
30 };
31 
32 U_BOOT_DRIVER(xtfpga_sysreset) = {
33 	.name	= "xtfpga_sysreset",
34 	.id	= UCLASS_SYSRESET,
35 	.ops	= &xtfpga_sysreset_ops,
36 };
37