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 Zankel static 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