blob: e762ee1b81ce7784abfcb08f44fccc23c39ee19b [file] [log] [blame]
Bin Meng4c99ccf2018-07-19 03:07:30 -07001// SPDX-License-Identifier: GPL-2.0+
2/*
3 * Copyright (C) 2018, Bin Meng <bmeng.cn@gmail.com>
4 *
5 * Reset driver for tangier processor
6 */
7
8#include <common.h>
9#include <dm.h>
10#include <sysreset.h>
11#include <asm/scu.h>
12
13static int tangier_sysreset_request(struct udevice *dev, enum sysreset_t type)
14{
15 int value;
16
17 switch (type) {
18 case SYSRESET_WARM:
19 value = IPCMSG_WARM_RESET;
20 break;
21 case SYSRESET_COLD:
22 value = IPCMSG_COLD_RESET;
23 break;
24 default:
25 return -ENOSYS;
26 }
27
28 scu_ipc_simple_command(value, 0);
29
30 return -EINPROGRESS;
31}
32
33static const struct udevice_id tangier_sysreset_ids[] = {
34 { .compatible = "intel,reset-tangier" },
35 { }
36};
37
38static struct sysreset_ops tangier_sysreset_ops = {
39 .request = tangier_sysreset_request,
40};
41
42U_BOOT_DRIVER(tangier_sysreset) = {
43 .name = "tangier-sysreset",
44 .id = UCLASS_SYSRESET,
45 .of_match = tangier_sysreset_ids,
46 .ops = &tangier_sysreset_ops,
47 .flags = DM_FLAG_PRE_RELOC,
48};