Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 59ecdd77 authored by Rajan Vaja's avatar Rajan Vaja Committed by Michal Simek
Browse files

firmware: xilinx: Add query data API



Add ZynqMP firmware query data API to query platform
specific information(clocks, pins) from firmware.

Signed-off-by: default avatarRajan Vaja <rajanv@xilinx.com>
Signed-off-by: default avatarJolly Shah <jollys@xilinx.com>
Signed-off-by: default avatarMichal Simek <michal.simek@xilinx.com>
parent 76582671
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -241,8 +241,22 @@ static int get_set_conduit_method(struct device_node *np)
	return 0;
}

/**
 * zynqmp_pm_query_data() - Get query data from firmware
 * @qdata:	Variable to the zynqmp_pm_query_data structure
 * @out:	Returned output value
 *
 * Return: Returns status, either success or error+reason
 */
static int zynqmp_pm_query_data(struct zynqmp_pm_query_data qdata, u32 *out)
{
	return zynqmp_pm_invoke_fn(PM_QUERY_DATA, qdata.qid, qdata.arg1,
				   qdata.arg2, qdata.arg3, out);
}

static const struct zynqmp_eemi_ops eemi_ops = {
	.get_api_version = zynqmp_pm_get_api_version,
	.query_data = zynqmp_pm_query_data,
};

/**
+20 −0
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@

enum pm_api_id {
	PM_GET_API_VERSION = 1,
	PM_QUERY_DATA = 35,
};

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

enum pm_query_id {
	PM_QID_INVALID,
};

/**
 * struct zynqmp_pm_query_data - PM query data
 * @qid:	query ID
 * @arg1:	Argument 1 of query data
 * @arg2:	Argument 2 of query data
 * @arg3:	Argument 3 of query data
 */
struct zynqmp_pm_query_data {
	u32 qid;
	u32 arg1;
	u32 arg2;
	u32 arg3;
};

struct zynqmp_eemi_ops {
	int (*get_api_version)(u32 *version);
	int (*query_data)(struct zynqmp_pm_query_data qdata, u32 *out);
};

#if IS_REACHABLE(CONFIG_ARCH_ZYNQMP)