Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

firmware: arm_scmi: Stash version in protocol init functions

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>

+10
+2
drivers/firmware/arm_scmi/clock.c
··· 65 65 }; 66 66 67 67 struct clock_info { 68 + u32 version; 68 69 int num_clocks; 69 70 int max_async_req; 70 71 atomic_t cur_async_req; ··· 341 340 scmi_clock_describe_rates_get(handle, clkid, clk); 342 341 } 343 342 343 + cinfo->version = version; 344 344 handle->clk_ops = &clk_ops; 345 345 handle->clk_priv = cinfo; 346 346
+2
drivers/firmware/arm_scmi/perf.c
··· 145 145 }; 146 146 147 147 struct scmi_perf_info { 148 + u32 version; 148 149 int num_domains; 149 150 bool power_scale_mw; 150 151 u64 stats_addr; ··· 737 736 scmi_perf_domain_init_fc(handle, domain, &dom->fc_info); 738 737 } 739 738 739 + pinfo->version = version; 740 740 handle->perf_ops = &perf_ops; 741 741 handle->perf_priv = pinfo; 742 742
+2
drivers/firmware/arm_scmi/power.c
··· 50 50 }; 51 51 52 52 struct scmi_power_info { 53 + u32 version; 53 54 int num_domains; 54 55 u64 stats_addr; 55 56 u32 stats_size; ··· 208 207 scmi_power_domain_attributes_get(handle, domain, dom); 209 208 } 210 209 210 + pinfo->version = version; 211 211 handle->power_ops = &power_ops; 212 212 handle->power_priv = pinfo; 213 213
+2
drivers/firmware/arm_scmi/reset.c
··· 48 48 }; 49 49 50 50 struct scmi_reset_info { 51 + u32 version; 51 52 int num_domains; 52 53 struct reset_dom_info *dom_info; 53 54 }; ··· 218 217 scmi_reset_domain_attributes_get(handle, domain, dom); 219 218 } 220 219 220 + pinfo->version = version; 221 221 handle->reset_ops = &reset_ops; 222 222 handle->reset_priv = pinfo; 223 223
+2
drivers/firmware/arm_scmi/sensors.c
··· 68 68 }; 69 69 70 70 struct sensors_info { 71 + u32 version; 71 72 int num_sensors; 72 73 int max_requests; 73 74 u64 reg_addr; ··· 295 294 296 295 scmi_sensor_description_get(handle, sinfo); 297 296 297 + sinfo->version = version; 298 298 handle->sensor_ops = &sensor_ops; 299 299 handle->sensor_priv = sinfo; 300 300