diff options
author | Vijayakumar <vsubbu@nvidia.com> | 2016-10-31 10:49:07 -0400 |
---|---|---|
committer | Deepak Nibade <dnibade@nvidia.com> | 2016-12-27 04:56:52 -0500 |
commit | 30bf630bded30376a929345247b134b60db1c9f5 (patch) | |
tree | d548277588aed7635e3b0d9253527147f6e0d11f /drivers/gpu/nvgpu/volt/volt_pmu.c | |
parent | 2f258670e40be1c92ab57b6fe77908add768ad9d (diff) |
gpu: nvgpu: fn to send noise-unaware vmin to pmu
JIRA DNVGPU-184
implement a function which takes noise unaware vmin for
logic and sram rails as input and sends them to pmu via RPC
Change-Id: Ic0d72daf99870477d4dbd17e1c609dd0c39f8197
Signed-off-by: Vijayakumar <vsubbu@nvidia.com>
Reviewed-on: http://git-master/r/1248210
(cherry picked from commit 2ad833c1edf65ada6c72b56ecd3551e7c4d396f6)
Reviewed-on: http://git-master/r/1270885
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Diffstat (limited to 'drivers/gpu/nvgpu/volt/volt_pmu.c')
-rw-r--r-- | drivers/gpu/nvgpu/volt/volt_pmu.c | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/volt/volt_pmu.c b/drivers/gpu/nvgpu/volt/volt_pmu.c index a92eb777..4e7f73c9 100644 --- a/drivers/gpu/nvgpu/volt/volt_pmu.c +++ b/drivers/gpu/nvgpu/volt/volt_pmu.c | |||
@@ -231,3 +231,46 @@ u32 volt_get_voltage(struct gk20a *g, u32 volt_domain, u32 *voltage_uv) | |||
231 | { | 231 | { |
232 | return volt_rail_get_voltage(g, volt_domain, voltage_uv); | 232 | return volt_rail_get_voltage(g, volt_domain, voltage_uv); |
233 | } | 233 | } |
234 | |||
235 | static int volt_policy_set_noiseaware_vmin(struct gk20a *g, | ||
236 | struct ctrl_volt_volt_rail_list *prail_list) | ||
237 | { | ||
238 | struct nv_pmu_volt_rpc rpc_call = { 0 }; | ||
239 | u32 status = 0; | ||
240 | |||
241 | /* Set RPC parameters. */ | ||
242 | rpc_call.function = NV_PMU_VOLT_RPC_ID_VOLT_RAIL_SET_NOISE_UNAWARE_VMIN; | ||
243 | rpc_call.params.volt_rail_set_noise_unaware_vmin.num_rails = | ||
244 | prail_list->num_rails; | ||
245 | memcpy(&rpc_call.params.volt_rail_set_noise_unaware_vmin.rail_list, | ||
246 | prail_list, (sizeof(struct ctrl_volt_volt_rail_list))); | ||
247 | |||
248 | /* Execute the voltage change request via PMU RPC. */ | ||
249 | status = volt_pmu_rpc_execute(g, &rpc_call); | ||
250 | if (status) { | ||
251 | gk20a_err(dev_from_gk20a(g), | ||
252 | "Error while executing VOLT_POLICY_SET_VOLTAGE RPC"); | ||
253 | return -EINVAL; | ||
254 | } | ||
255 | |||
256 | return 0; | ||
257 | } | ||
258 | |||
259 | int volt_set_noiseaware_vmin(struct gk20a *g, u32 logic_voltage_uv, | ||
260 | u32 sram_voltage_uv) | ||
261 | { | ||
262 | int status = 0; | ||
263 | struct ctrl_volt_volt_rail_list rail_list = { 0 }; | ||
264 | |||
265 | rail_list.num_rails = RAIL_COUNT; | ||
266 | rail_list.rails[0].rail_idx = 0; | ||
267 | rail_list.rails[0].voltage_uv = logic_voltage_uv; | ||
268 | rail_list.rails[1].rail_idx = 1; | ||
269 | rail_list.rails[1].voltage_uv = sram_voltage_uv; | ||
270 | |||
271 | status = volt_policy_set_noiseaware_vmin(g, &rail_list); | ||
272 | |||
273 | return status; | ||
274 | |||
275 | } | ||
276 | |||