]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
firmware: arm_scmi: Stash version in protocol init functions
authorSudeep Holla <sudeep.holla@arm.com>
Fri, 22 Nov 2019 14:48:40 +0000 (14:48 +0000)
committerSudeep Holla <sudeep.holla@arm.com>
Tue, 24 Dec 2019 11:35:49 +0000 (11:35 +0000)
In order to avoid querying the individual protocol versions multiple
time with more that one device created for each protocol, we can simple
store the copy in the protocol specific private data and use them whenever
required.

Reviewed-by: Cristian Marussi <cristian.marussi@arm.com>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
drivers/firmware/arm_scmi/clock.c
drivers/firmware/arm_scmi/perf.c
drivers/firmware/arm_scmi/power.c
drivers/firmware/arm_scmi/reset.c
drivers/firmware/arm_scmi/sensors.c

index 32526a793f3ace11cb5835cf336aea22aae53325..4c2227662b261fb2415bf7419925fafcd63e468c 100644 (file)
@@ -65,6 +65,7 @@ struct scmi_clock_set_rate {
 };
 
 struct clock_info {
+       u32 version;
        int num_clocks;
        int max_async_req;
        atomic_t cur_async_req;
@@ -340,6 +341,7 @@ static int scmi_clock_protocol_init(struct scmi_handle *handle)
                        scmi_clock_describe_rates_get(handle, clkid, clk);
        }
 
+       cinfo->version = version;
        handle->clk_ops = &clk_ops;
        handle->clk_priv = cinfo;
 
index 601af4edad5e6de4597a1637d34d8f8f4fcafb4c..ec81e6f7e7a4142a0a62ddab5cad05c3911dd137 100644 (file)
@@ -145,6 +145,7 @@ struct perf_dom_info {
 };
 
 struct scmi_perf_info {
+       u32 version;
        int num_domains;
        bool power_scale_mw;
        u64 stats_addr;
@@ -736,6 +737,7 @@ static int scmi_perf_protocol_init(struct scmi_handle *handle)
                        scmi_perf_domain_init_fc(handle, domain, &dom->fc_info);
        }
 
+       pinfo->version = version;
        handle->perf_ops = &perf_ops;
        handle->perf_priv = pinfo;
 
index 5abef7079c0a31a84e7290209ff01f4bf0559e99..214886ce84f1ee1323ca7f9571ade7203e2a0a7e 100644 (file)
@@ -50,6 +50,7 @@ struct power_dom_info {
 };
 
 struct scmi_power_info {
+       u32 version;
        int num_domains;
        u64 stats_addr;
        u32 stats_size;
@@ -207,6 +208,7 @@ static int scmi_power_protocol_init(struct scmi_handle *handle)
                scmi_power_domain_attributes_get(handle, domain, dom);
        }
 
+       pinfo->version = version;
        handle->power_ops = &power_ops;
        handle->power_priv = pinfo;
 
index ab42c21c55175ddd81503a99af8a28fc06d3ca47..de73054554f32d3c595a79d6abe88ceb65a42e5a 100644 (file)
@@ -48,6 +48,7 @@ struct reset_dom_info {
 };
 
 struct scmi_reset_info {
+       u32 version;
        int num_domains;
        struct reset_dom_info *dom_info;
 };
@@ -217,6 +218,7 @@ static int scmi_reset_protocol_init(struct scmi_handle *handle)
                scmi_reset_domain_attributes_get(handle, domain, dom);
        }
 
+       pinfo->version = version;
        handle->reset_ops = &reset_ops;
        handle->reset_priv = pinfo;
 
index a400ea805fc236738047efc3dc351cfa79aed895..eba61b9c1f53e4b4b142b233366161eca4de440e 100644 (file)
@@ -68,6 +68,7 @@ struct scmi_msg_sensor_reading_get {
 };
 
 struct sensors_info {
+       u32 version;
        int num_sensors;
        int max_requests;
        u64 reg_addr;
@@ -294,6 +295,7 @@ static int scmi_sensors_protocol_init(struct scmi_handle *handle)
 
        scmi_sensor_description_get(handle, sinfo);
 
+       sinfo->version = version;
        handle->sensor_ops = &sensor_ops;
        handle->sensor_priv = sinfo;