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