blob: 8a42663ed9643c98715bc772cf6464c8d1fb9178 [file] [log] [blame]
Tejas Patel354fe572018-12-14 00:55:37 -08001/*
2 * Copyright (c) 2019, Xilinx, Inc. All rights reserved.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7/* Versal power management enums and defines */
8
9#ifndef PM_DEFS_H
10#define PM_DEFS_H
11
12#include "pm_node.h"
13
14/*********************************************************************
15 * Macro definitions
16 ********************************************************************/
17
18/* Processor core device IDs */
19#define APU_DEVID(IDX) NODEID(XPM_NODECLASS_DEVICE, XPM_NODESUBCL_DEV_CORE, \
20 XPM_NODETYPE_DEV_CORE_APU, (IDX))
21
22#define XPM_DEVID_ACPU_0 APU_DEVID(XPM_NODEIDX_DEV_ACPU_0)
23#define XPM_DEVID_ACPU_1 APU_DEVID(XPM_NODEIDX_DEV_ACPU_1)
24
Tejas Patel9d09ff92019-01-08 01:46:35 -080025/* PM API ids */
26#define PM_GET_API_VERSION 1U
Tejas Patel41f3e0b2019-01-08 01:46:37 -080027#define PM_GET_DEVICE_STATUS 3U
Tejas Patelfe0e10a2019-12-08 23:29:44 -080028#define PM_REQ_SUSPEND 6U
29#define PM_SELF_SUSPEND 7U
30#define PM_ABORT_SUSPEND 9U
Tejas Patel41f3e0b2019-01-08 01:46:37 -080031#define PM_REQUEST_DEVICE 13U
32#define PM_RELEASE_DEVICE 14U
33#define PM_SET_REQUIREMENT 15U
Tejas Patel87c4f3a2019-01-08 01:46:38 -080034#define PM_RESET_ASSERT 17U
35#define PM_RESET_GET_STATUS 18U
Tejas Patel20e92022019-01-08 01:46:39 -080036#define PM_PINCTRL_REQUEST 28U
37#define PM_PINCTRL_RELEASE 29U
38#define PM_PINCTRL_GET_FUNCTION 30U
39#define PM_PINCTRL_SET_FUNCTION 31U
40#define PM_PINCTRL_CONFIG_PARAM_GET 32U
41#define PM_PINCTRL_CONFIG_PARAM_SET 33U
Tejas Patel9d09ff92019-01-08 01:46:35 -080042
Tejas Patel354fe572018-12-14 00:55:37 -080043/*********************************************************************
44 * Enum definitions
45 ********************************************************************/
46
Tejas Patelfe0e10a2019-12-08 23:29:44 -080047enum pm_abort_reason {
48 ABORT_REASON_WKUP_EVENT = 100,
49 ABORT_REASON_PU_BUSY,
50 ABORT_REASON_NO_PWRDN,
51 ABORT_REASON_UNKNOWN,
52};
53
Tejas Patel354fe572018-12-14 00:55:37 -080054/**
Tejas Patel41f3e0b2019-01-08 01:46:37 -080055 * Subsystem IDs
56 */
57typedef enum {
58 XPM_SUBSYSID_PMC,
59 XPM_SUBSYSID_PSM,
60 XPM_SUBSYSID_APU,
61 XPM_SUBSYSID_RPU0_LOCK,
62 XPM_SUBSYSID_RPU0_0,
63 XPM_SUBSYSID_RPU0_1,
64 XPM_SUBSYSID_DDR0,
65 XPM_SUBSYSID_ME,
66 XPM_SUBSYSID_PL,
67 XPM_SUBSYSID_MAX,
68} XPm_SubsystemId;
69
70/**
Tejas Patel354fe572018-12-14 00:55:37 -080071 * @PM_RET_SUCCESS: success
72 * @PM_RET_ERROR_ARGS: illegal arguments provided (deprecated)
73 * @PM_RET_ERROR_NOTSUPPORTED: feature not supported (deprecated)
74 * @PM_RET_ERROR_INTERNAL: internal error
75 * @PM_RET_ERROR_CONFLICT: conflict
76 * @PM_RET_ERROR_ACCESS: access rights violation
77 * @PM_RET_ERROR_INVALID_NODE: invalid node
78 * @PM_RET_ERROR_DOUBLE_REQ: duplicate request for same node
79 * @PM_RET_ERROR_ABORT_SUSPEND: suspend procedure has been aborted
80 * @PM_RET_ERROR_TIMEOUT: timeout in communication with PMU
81 * @PM_RET_ERROR_NODE_USED: node is already in use
82 */
83enum pm_ret_status {
84 PM_RET_SUCCESS,
85 PM_RET_ERROR_ARGS = 1,
86 PM_RET_ERROR_NOTSUPPORTED = 4,
87 PM_RET_ERROR_INTERNAL = 2000,
88 PM_RET_ERROR_CONFLICT = 2001,
89 PM_RET_ERROR_ACCESS = 2002,
90 PM_RET_ERROR_INVALID_NODE = 2003,
91 PM_RET_ERROR_DOUBLE_REQ = 2004,
92 PM_RET_ERROR_ABORT_SUSPEND = 2005,
93 PM_RET_ERROR_TIMEOUT = 2006,
94 PM_RET_ERROR_NODE_USED = 2007
95};
96#endif /* PM_DEFS_H */