Skip to content

Commit 59ecdd7

Browse files
rajanv-xilinxMichal Simek
authored andcommitted
firmware: xilinx: Add query data API
Add ZynqMP firmware query data API to query platform specific information(clocks, pins) from firmware. Signed-off-by: Rajan Vaja <[email protected]> Signed-off-by: Jolly Shah <[email protected]> Signed-off-by: Michal Simek <[email protected]>
1 parent 7658267 commit 59ecdd7

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

drivers/firmware/xilinx/zynqmp.c

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,8 +241,22 @@ static int get_set_conduit_method(struct device_node *np)
241241
return 0;
242242
}
243243

244+
/**
245+
* zynqmp_pm_query_data() - Get query data from firmware
246+
* @qdata: Variable to the zynqmp_pm_query_data structure
247+
* @out: Returned output value
248+
*
249+
* Return: Returns status, either success or error+reason
250+
*/
251+
static int zynqmp_pm_query_data(struct zynqmp_pm_query_data qdata, u32 *out)
252+
{
253+
return zynqmp_pm_invoke_fn(PM_QUERY_DATA, qdata.qid, qdata.arg1,
254+
qdata.arg2, qdata.arg3, out);
255+
}
256+
244257
static const struct zynqmp_eemi_ops eemi_ops = {
245258
.get_api_version = zynqmp_pm_get_api_version,
259+
.query_data = zynqmp_pm_query_data,
246260
};
247261

248262
/**

include/linux/firmware/xlnx-zynqmp.h

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434

3535
enum pm_api_id {
3636
PM_GET_API_VERSION = 1,
37+
PM_QUERY_DATA = 35,
3738
};
3839

3940
/* PMU-FW return status codes */
@@ -47,8 +48,27 @@ enum pm_ret_status {
4748
XST_PM_ABORT_SUSPEND,
4849
};
4950

51+
enum pm_query_id {
52+
PM_QID_INVALID,
53+
};
54+
55+
/**
56+
* struct zynqmp_pm_query_data - PM query data
57+
* @qid: query ID
58+
* @arg1: Argument 1 of query data
59+
* @arg2: Argument 2 of query data
60+
* @arg3: Argument 3 of query data
61+
*/
62+
struct zynqmp_pm_query_data {
63+
u32 qid;
64+
u32 arg1;
65+
u32 arg2;
66+
u32 arg3;
67+
};
68+
5069
struct zynqmp_eemi_ops {
5170
int (*get_api_version)(u32 *version);
71+
int (*query_data)(struct zynqmp_pm_query_data qdata, u32 *out);
5272
};
5373

5474
#if IS_REACHABLE(CONFIG_ARCH_ZYNQMP)

0 commit comments

Comments
 (0)