Commit d0aba116 authored by Sudeep Holla's avatar Sudeep Holla

firmware: arm_scmi: Drop config flag in clk_ops->rate_set

CLOCK_PROTOCOL_ATTRIBUTES provides attributes to indicate the maximum
number of pending asynchronous clock rate changes supported by the
platform. If it's non-zero, then we should be able to use asynchronous
clock rate set for any clocks until the maximum limit is reached.

In order to add that support, let's drop the config flag passed to
clk_ops->rate_set and handle the asynchronous requests dynamically.

Cc: Stephen Boyd <sboyd@kernel.org>
Cc: linux-clk@vger.kernel.org
Acked-by: default avatarStephen Boyd <sboyd@kernel.org>
Signed-off-by: default avatarSudeep Holla <sudeep.holla@arm.com>
parent d09aac0e
...@@ -69,7 +69,7 @@ static int scmi_clk_set_rate(struct clk_hw *hw, unsigned long rate, ...@@ -69,7 +69,7 @@ static int scmi_clk_set_rate(struct clk_hw *hw, unsigned long rate,
{ {
struct scmi_clk *clk = to_scmi_clk(hw); struct scmi_clk *clk = to_scmi_clk(hw);
return clk->handle->clk_ops->rate_set(clk->handle, clk->id, 0, rate); return clk->handle->clk_ops->rate_set(clk->handle, clk->id, rate);
} }
static int scmi_clk_enable(struct clk_hw *hw) static int scmi_clk_enable(struct clk_hw *hw)
......
...@@ -218,7 +218,7 @@ scmi_clock_rate_get(const struct scmi_handle *handle, u32 clk_id, u64 *value) ...@@ -218,7 +218,7 @@ scmi_clock_rate_get(const struct scmi_handle *handle, u32 clk_id, u64 *value)
} }
static int scmi_clock_rate_set(const struct scmi_handle *handle, u32 clk_id, static int scmi_clock_rate_set(const struct scmi_handle *handle, u32 clk_id,
u32 config, u64 rate) u64 rate)
{ {
int ret; int ret;
struct scmi_xfer *t; struct scmi_xfer *t;
...@@ -230,7 +230,7 @@ static int scmi_clock_rate_set(const struct scmi_handle *handle, u32 clk_id, ...@@ -230,7 +230,7 @@ static int scmi_clock_rate_set(const struct scmi_handle *handle, u32 clk_id,
return ret; return ret;
cfg = t->tx.buf; cfg = t->tx.buf;
cfg->flags = cpu_to_le32(config); cfg->flags = cpu_to_le32(0);
cfg->id = cpu_to_le32(clk_id); cfg->id = cpu_to_le32(clk_id);
cfg->value_low = cpu_to_le32(rate & 0xffffffff); cfg->value_low = cpu_to_le32(rate & 0xffffffff);
cfg->value_high = cpu_to_le32(rate >> 32); cfg->value_high = cpu_to_le32(rate >> 32);
......
...@@ -71,7 +71,7 @@ struct scmi_clk_ops { ...@@ -71,7 +71,7 @@ struct scmi_clk_ops {
int (*rate_get)(const struct scmi_handle *handle, u32 clk_id, int (*rate_get)(const struct scmi_handle *handle, u32 clk_id,
u64 *rate); u64 *rate);
int (*rate_set)(const struct scmi_handle *handle, u32 clk_id, int (*rate_set)(const struct scmi_handle *handle, u32 clk_id,
u32 config, u64 rate); u64 rate);
int (*enable)(const struct scmi_handle *handle, u32 clk_id); int (*enable)(const struct scmi_handle *handle, u32 clk_id);
int (*disable)(const struct scmi_handle *handle, u32 clk_id); int (*disable)(const struct scmi_handle *handle, u32 clk_id);
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment