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