blob: ad1781e6c0f89800c83eba3c91f7aa98abb400ae [file] [log] [blame]
Tom Rini10e47792018-05-06 17:58:06 -04001// SPDX-License-Identifier: GPL-2.0+
Chris Zankel05d0c5d2016-08-10 18:36:48 +03002/*
3 * Cadence Tensilica xtfpga system reset driver.
4 *
5 * (C) Copyright 2016 Cadence Design Systems Inc.
Chris Zankel05d0c5d2016-08-10 18:36:48 +03006 */
7
8#include <common.h>
9#include <dm.h>
10#include <errno.h>
11#include <sysreset.h>
12#include <asm/io.h>
13
14static 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
28static struct sysreset_ops xtfpga_sysreset_ops = {
29 .request = xtfpga_reset_request,
30};
31
32U_BOOT_DRIVER(xtfpga_sysreset) = {
33 .name = "xtfpga_sysreset",
34 .id = UCLASS_SYSRESET,
35 .ops = &xtfpga_sysreset_ops,
36};