summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichal Simek <[email protected]>2025-08-28 15:42:20 +0200
committerMichal Simek <[email protected]>2025-10-09 09:07:03 +0200
commitf791695685f0d11bcd52cdce12d5d13243fbdd39 (patch)
tree759b07db75ea2fb9ba402f4746c04c8219f0bacb
parent038580206d44007dc105a80458cb582d1e9adabc (diff)
clk: xilinx: Call generic smc_call_handler()
There is no reason to call SMC from clock driver directly when clock driver is a child of firmware driver which is providing it. Signed-off-by: Michal Simek <[email protected]> Link: https://lore.kernel.org/r/d383d5fea680b33d2eddbca108c452cee97e98ea.1756388537.git.michal.simek@amd.com
-rw-r--r--drivers/clk/clk_versal.c19
1 files changed, 4 insertions, 15 deletions
diff --git a/drivers/clk/clk_versal.c b/drivers/clk/clk_versal.c
index cb98f34b5ec..116dfc98f41 100644
--- a/drivers/clk/clk_versal.c
+++ b/drivers/clk/clk_versal.c
@@ -123,23 +123,12 @@ static unsigned int clock_max_idx __section(".data");
static int versal_pm_query(struct versal_pm_query_data qdata, u32 *ret_payload)
{
- struct pt_regs regs;
-
- regs.regs[0] = PM_SIP_SVC | PM_QUERY_DATA;
- regs.regs[1] = ((u64)qdata.arg1 << 32) | qdata.qid;
- regs.regs[2] = ((u64)qdata.arg3 << 32) | qdata.arg2;
-
- smc_call(&regs);
+ int ret;
- if (ret_payload) {
- ret_payload[0] = (u32)regs.regs[0];
- ret_payload[1] = upper_32_bits(regs.regs[0]);
- ret_payload[2] = (u32)regs.regs[1];
- ret_payload[3] = upper_32_bits(regs.regs[1]);
- ret_payload[4] = (u32)regs.regs[2];
- }
+ ret = smc_call_handler(PM_QUERY_DATA, qdata.qid, qdata.arg1, qdata.arg2,
+ qdata.arg3, ret_payload);
- return qdata.qid == PM_QID_CLOCK_GET_NAME ? 0 : regs.regs[0];
+ return qdata.qid == PM_QID_CLOCK_GET_NAME ? 0 : ret;
}
static inline int versal_is_valid_clock(u32 clk_id)