diff options
| author | Rajan Vaja <rajan.vaja@xilinx.com> | 2019-02-01 17:08:49 -0500 |
|---|---|---|
| committer | Michal Simek <michal.simek@xilinx.com> | 2019-02-12 07:37:48 -0500 |
| commit | c1986ac3d483b051fc237aea3e9812fd1bb4d239 (patch) | |
| tree | 3d1cd2a720fb1f965c1526bd9c5603b056cbda1c /include/linux/firmware | |
| parent | 8fd27fb4cf76a64d4ea4814b358541477dc7a31e (diff) | |
firmware: xilinx: Add APIs to control node status/power
Add Xilinx ZynqMP firmware APIs to control node status
and power. These APIs allows turning on/off power domain
and setting capabilities of devices present in power domain.
Signed-off-by: Rajan Vaja <rajan.vaja@xilinx.com>
Signed-off-by: Jolly Shah <jolly.shah@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Diffstat (limited to 'include/linux/firmware')
| -rw-r--r-- | include/linux/firmware/xlnx-zynqmp.h | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/include/linux/firmware/xlnx-zynqmp.h b/include/linux/firmware/xlnx-zynqmp.h index 56b2108a2148..642dab10f65d 100644 --- a/include/linux/firmware/xlnx-zynqmp.h +++ b/include/linux/firmware/xlnx-zynqmp.h | |||
| @@ -40,8 +40,19 @@ | |||
| 40 | /* Payload size (consists of callback API ID + arguments) */ | 40 | /* Payload size (consists of callback API ID + arguments) */ |
| 41 | #define CB_PAYLOAD_SIZE (CB_ARG_CNT + 1) | 41 | #define CB_PAYLOAD_SIZE (CB_ARG_CNT + 1) |
| 42 | 42 | ||
| 43 | #define ZYNQMP_PM_MAX_QOS 100U | ||
| 44 | |||
| 45 | /* Node capabilities */ | ||
| 46 | #define ZYNQMP_PM_CAPABILITY_ACCESS 0x1U | ||
| 47 | #define ZYNQMP_PM_CAPABILITY_CONTEXT 0x2U | ||
| 48 | #define ZYNQMP_PM_CAPABILITY_WAKEUP 0x4U | ||
| 49 | #define ZYNQMP_PM_CAPABILITY_POWER 0x8U | ||
| 50 | |||
| 43 | enum pm_api_id { | 51 | enum pm_api_id { |
| 44 | PM_GET_API_VERSION = 1, | 52 | PM_GET_API_VERSION = 1, |
| 53 | PM_REQUEST_NODE = 13, | ||
| 54 | PM_RELEASE_NODE, | ||
| 55 | PM_SET_REQUIREMENT, | ||
| 45 | PM_RESET_ASSERT = 17, | 56 | PM_RESET_ASSERT = 17, |
| 46 | PM_RESET_GET_STATUS, | 57 | PM_RESET_GET_STATUS, |
| 47 | PM_PM_INIT_FINALIZE = 21, | 58 | PM_PM_INIT_FINALIZE = 21, |
| @@ -224,6 +235,12 @@ enum zynqmp_pm_suspend_reason { | |||
| 224 | SUSPEND_SYSTEM_SHUTDOWN, | 235 | SUSPEND_SYSTEM_SHUTDOWN, |
| 225 | }; | 236 | }; |
| 226 | 237 | ||
| 238 | enum zynqmp_pm_request_ack { | ||
| 239 | ZYNQMP_PM_REQUEST_ACK_NO = 1, | ||
| 240 | ZYNQMP_PM_REQUEST_ACK_BLOCKING, | ||
| 241 | ZYNQMP_PM_REQUEST_ACK_NON_BLOCKING, | ||
| 242 | }; | ||
| 243 | |||
| 227 | /** | 244 | /** |
| 228 | * struct zynqmp_pm_query_data - PM query data | 245 | * struct zynqmp_pm_query_data - PM query data |
| 229 | * @qid: query ID | 246 | * @qid: query ID |
| @@ -257,6 +274,15 @@ struct zynqmp_eemi_ops { | |||
| 257 | int (*reset_get_status)(const enum zynqmp_pm_reset reset, u32 *status); | 274 | int (*reset_get_status)(const enum zynqmp_pm_reset reset, u32 *status); |
| 258 | int (*init_finalize)(void); | 275 | int (*init_finalize)(void); |
| 259 | int (*set_suspend_mode)(u32 mode); | 276 | int (*set_suspend_mode)(u32 mode); |
| 277 | int (*request_node)(const u32 node, | ||
| 278 | const u32 capabilities, | ||
| 279 | const u32 qos, | ||
| 280 | const enum zynqmp_pm_request_ack ack); | ||
| 281 | int (*release_node)(const u32 node); | ||
| 282 | int (*set_requirement)(const u32 node, | ||
| 283 | const u32 capabilities, | ||
| 284 | const u32 qos, | ||
| 285 | const enum zynqmp_pm_request_ack ack); | ||
| 260 | }; | 286 | }; |
| 261 | 287 | ||
| 262 | int zynqmp_pm_invoke_fn(u32 pm_api_id, u32 arg0, u32 arg1, | 288 | int zynqmp_pm_invoke_fn(u32 pm_api_id, u32 arg0, u32 arg1, |
