@@ -10,12 +10,6 @@
#include <linux/firmware/xlnx-zynqmp.h>
-/* Clock APIs payload parameters */
-#define CLK_GET_NAME_RESP_LEN 16
-#define CLK_GET_TOPOLOGY_RESP_WORDS 3
-#define CLK_GET_PARENTS_RESP_WORDS 3
-#define CLK_GET_ATTR_RESP_WORDS 1
-
enum topology_type {
TYPE_INVALID,
TYPE_MUX,
@@ -23,14 +23,11 @@
#define CLK_TYPE_SHIFT 2
-#define PM_API_PAYLOAD_LEN 3
-
#define NA_PARENT 0xFFFFFFFF
#define DUMMY_PARENT 0xFFFFFFFE
#define CLK_TYPE_FIELD_LEN 4
#define CLK_TOPOLOGY_NODE_OFFSET 16
-#define NODES_PER_RESP 3
#define CLK_TYPE_FIELD_MASK 0xF
#define CLK_FLAG_FIELD_MASK GENMASK(21, 8)
@@ -54,6 +51,11 @@
#define CLK_VALID_MASK 0x1
+#define CLK_GET_NAME_RESP_LEN 16
+#define CLK_GET_TOPOLOGY_RESP_WORDS 3
+#define CLK_GET_PARENTS_RESP_WORDS 3
+#define CLK_GET_ATTR_RESP_WORDS 1
+
enum clk_type {
CLK_TYPE_OUTPUT,
CLK_TYPE_EXTERNAL,
@@ -215,7 +217,8 @@ static int zynqmp_pm_clock_get_name(u32 clock_id, char *name)
qdata.arg1 = clock_id;
eemi_ops->query_data(qdata, ret_payload);
- memcpy(name, ret_payload, CLK_GET_NAME_RESP_LEN);
+ memcpy(name, ret_payload,
+ CLK_GET_NAME_RESP_LEN * sizeof(*name));
return 0;
}
@@ -248,7 +251,8 @@ static int zynqmp_pm_clock_get_topology(u32 clock_id, u32 index, u32 *topology)
qdata.arg2 = index;
ret = eemi_ops->query_data(qdata, ret_payload);
- memcpy(topology, &ret_payload[1], CLK_GET_TOPOLOGY_RESP_WORDS * 4);
+ memcpy(topology, &ret_payload[1],
+ CLK_GET_TOPOLOGY_RESP_WORDS * sizeof(*topology));
return ret;
}
@@ -321,7 +325,8 @@ static int zynqmp_pm_clock_get_parents(u32 clock_id, u32 index, u32 *parents)
qdata.arg2 = index;
ret = eemi_ops->query_data(qdata, ret_payload);
- memcpy(parents, &ret_payload[1], CLK_GET_PARENTS_RESP_WORDS * 4);
+ memcpy(parents, &ret_payload[1],
+ CLK_GET_PARENTS_RESP_WORDS * sizeof(*parents));
return ret;
}
@@ -345,7 +350,8 @@ static int zynqmp_pm_clock_get_attributes(u32 clock_id, u32 *attr)
qdata.arg1 = clock_id;
ret = eemi_ops->query_data(qdata, ret_payload);
- memcpy(attr, &ret_payload[1], CLK_GET_ATTR_RESP_WORDS * 4);
+ memcpy(attr, &ret_payload[1],
+ CLK_GET_ATTR_RESP_WORDS * sizeof(*attr));
return ret;
}
@@ -364,7 +370,7 @@ static int __zynqmp_clock_get_topology(struct clock_topology *topology,
{
int i;
- for (i = 0; i < PM_API_PAYLOAD_LEN; i++) {
+ for (i = 0; i < CLK_GET_TOPOLOGY_RESP_WORDS; i++) {
if (!(data[i] & CLK_TYPE_FIELD_MASK))
return END_OF_TOPOLOGY_NODE;
topology[*nnodes].type = data[i] & CLK_TYPE_FIELD_MASK;
@@ -392,10 +398,10 @@ static int zynqmp_clock_get_topology(u32 clk_id,
u32 *num_nodes)
{
int j, ret;
- u32 pm_resp[PM_API_PAYLOAD_LEN] = {0};
+ u32 pm_resp[CLK_GET_TOPOLOGY_RESP_WORDS] = {0};
*num_nodes = 0;
- for (j = 0; j <= MAX_NODES; j += 3) {
+ for (j = 0; j <= MAX_NODES; j += CLK_GET_TOPOLOGY_RESP_WORDS) {
ret = zynqmp_pm_clock_get_topology(clk_id, j, pm_resp);
if (ret)
return ret;
@@ -422,7 +428,7 @@ static int __zynqmp_clock_get_parents(struct clock_parent *parents, u32 *data,
int i;
struct clock_parent *parent;
- for (i = 0; i < PM_API_PAYLOAD_LEN; i++) {
+ for (i = 0; i < CLK_GET_PARENTS_RESP_WORDS; i++) {
if (data[i] == NA_PARENT)
return END_OF_PARENTS;
@@ -454,7 +460,7 @@ static int zynqmp_clock_get_parents(u32 clk_id, struct clock_parent *parents,
u32 *num_parents)
{
int j = 0, ret;
- u32 pm_resp[PM_API_PAYLOAD_LEN] = {0};
+ u32 pm_resp[CLK_GET_PARENTS_RESP_WORDS] = {0};
*num_parents = 0;
do {
@@ -467,7 +473,7 @@ static int zynqmp_clock_get_parents(u32 clk_id, struct clock_parent *parents,
num_parents);
if (ret == END_OF_PARENTS)
return 0;
- j += PM_API_PAYLOAD_LEN;
+ j += CLK_GET_PARENTS_RESP_WORDS;
} while (*num_parents <= MAX_PARENT);
return 0;
The queries for the clock name, clock topology, clock parents, and clock attributes return a specified count of values, whose type and number depends on the query. Properly separate the number of values per query, make it dependent on the returned type values and get rid of leftover hard coded sizes. Signed-off-by: Michael Tretter <m.tretter@pengutronix.de> --- drivers/clk/zynqmp/clk-zynqmp.h | 6 ------ drivers/clk/zynqmp/clkc.c | 32 +++++++++++++++++++------------- 2 files changed, 19 insertions(+), 19 deletions(-)