firmware: arm_scmi: Drop config flag in clk_ops->rate_set
authorSudeep Holla <sudeep.holla@arm.com>
Mon, 8 Jul 2019 08:42:22 +0000 (09:42 +0100)
committerSudeep Holla <sudeep.holla@arm.com>
Mon, 12 Aug 2019 11:23:01 +0000 (12:23 +0100)
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: Stephen Boyd <sboyd@kernel.org>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
drivers/clk/clk-scmi.c
drivers/firmware/arm_scmi/clock.c
include/linux/scmi_protocol.h

index a2287c770d5c07408365b89a49450c554f48d55a..886f7c5df51a919cadb74d1161438a7607554105 100644 (file)
@@ -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);
 
-       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)
index 0a194af924385bac2019bf976d7e6e8263db9eeb..dd215bd11a58a9c2db0aad54b6f9f0deef5fbb4a 100644 (file)
@@ -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,
-                              u32 config, u64 rate)
+                              u64 rate)
 {
        int ret;
        struct scmi_xfer *t;
@@ -230,7 +230,7 @@ static int scmi_clock_rate_set(const struct scmi_handle *handle, u32 clk_id,
                return ret;
 
        cfg = t->tx.buf;
-       cfg->flags = cpu_to_le32(config);
+       cfg->flags = cpu_to_le32(0);
        cfg->id = cpu_to_le32(clk_id);
        cfg->value_low = cpu_to_le32(rate & 0xffffffff);
        cfg->value_high = cpu_to_le32(rate >> 32);
index ae7381413f1fb84bbaebb59e756b25ffe09ba9e0..f0f2b53a1dacb2a6a9124888c7f17c65052b89fa 100644 (file)
@@ -71,7 +71,7 @@ struct scmi_clk_ops {
        int (*rate_get)(const struct scmi_handle *handle, u32 clk_id,
                        u64 *rate);
        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 (*disable)(const struct scmi_handle *handle, u32 clk_id);
 };