1*83d290c5STom Rini // SPDX-License-Identifier: GPL-2.0+ 27e270ec3SChris Zankel /* 37e270ec3SChris Zankel * Cadence Tensilica xtfpga system reset driver. 47e270ec3SChris Zankel * 57e270ec3SChris Zankel * (C) Copyright 2016 Cadence Design Systems Inc. 67e270ec3SChris Zankel */ 77e270ec3SChris Zankel 87e270ec3SChris Zankel #include <common.h> 97e270ec3SChris Zankel #include <dm.h> 107e270ec3SChris Zankel #include <errno.h> 117e270ec3SChris Zankel #include <sysreset.h> 127e270ec3SChris Zankel #include <asm/io.h> 137e270ec3SChris Zankel xtfpga_reset_request(struct udevice * dev,enum sysreset_t type)147e270ec3SChris Zankelstatic int xtfpga_reset_request(struct udevice *dev, enum sysreset_t type) 157e270ec3SChris Zankel { 167e270ec3SChris Zankel switch (type) { 177e270ec3SChris Zankel case SYSRESET_COLD: 187e270ec3SChris Zankel writel(CONFIG_SYS_FPGAREG_RESET_CODE, 197e270ec3SChris Zankel CONFIG_SYS_FPGAREG_RESET); 207e270ec3SChris Zankel break; 217e270ec3SChris Zankel default: 227e270ec3SChris Zankel return -EPROTONOSUPPORT; 237e270ec3SChris Zankel } 247e270ec3SChris Zankel 257e270ec3SChris Zankel return -EINPROGRESS; 267e270ec3SChris Zankel } 277e270ec3SChris Zankel 287e270ec3SChris Zankel static struct sysreset_ops xtfpga_sysreset_ops = { 297e270ec3SChris Zankel .request = xtfpga_reset_request, 307e270ec3SChris Zankel }; 317e270ec3SChris Zankel 327e270ec3SChris Zankel U_BOOT_DRIVER(xtfpga_sysreset) = { 337e270ec3SChris Zankel .name = "xtfpga_sysreset", 347e270ec3SChris Zankel .id = UCLASS_SYSRESET, 357e270ec3SChris Zankel .ops = &xtfpga_sysreset_ops, 367e270ec3SChris Zankel }; 37