OLD | NEW |
(Empty) | |
| 1 /* |
| 2 * Copyright (c) 2009 NVIDIA Corporation. |
| 3 * All rights reserved. |
| 4 * |
| 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions are met: |
| 7 * |
| 8 * Redistributions of source code must retain the above copyright notice, |
| 9 * this list of conditions and the following disclaimer. |
| 10 * |
| 11 * Redistributions in binary form must reproduce the above copyright notice, |
| 12 * this list of conditions and the following disclaimer in the documentation |
| 13 * and/or other materials provided with the distribution. |
| 14 * |
| 15 * Neither the name of the NVIDIA Corporation nor the names of its contributors |
| 16 * may be used to endorse or promote products derived from this software |
| 17 * without specific prior written permission. |
| 18 * |
| 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
| 20 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
| 21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
| 22 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE |
| 23 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
| 24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
| 25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
| 26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
| 27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
| 28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
| 29 * POSSIBILITY OF SUCH DAMAGE. |
| 30 * |
| 31 */ |
| 32 |
| 33 #define NV_IDL_IS_DISPATCH |
| 34 |
| 35 #include "nvcommon.h" |
| 36 #include "nvos.h" |
| 37 #include "nvassert.h" |
| 38 #include "nvreftrack.h" |
| 39 #include "nvidlcmd.h" |
| 40 #include "nvrm_power.h" |
| 41 |
| 42 #define OFFSET( s, e ) (NvU32)(void *)(&(((s*)0)->e)) |
| 43 |
| 44 |
| 45 typedef struct NvRmKernelPowerResume_in_t |
| 46 { |
| 47 NvU32 package_; |
| 48 NvU32 function_; |
| 49 NvRmDeviceHandle hRmDeviceHandle; |
| 50 } NV_ALIGN(4) NvRmKernelPowerResume_in; |
| 51 |
| 52 typedef struct NvRmKernelPowerResume_inout_t |
| 53 { |
| 54 NvU32 dummy_; |
| 55 } NV_ALIGN(4) NvRmKernelPowerResume_inout; |
| 56 |
| 57 typedef struct NvRmKernelPowerResume_out_t |
| 58 { |
| 59 NvError ret_; |
| 60 } NV_ALIGN(4) NvRmKernelPowerResume_out; |
| 61 |
| 62 typedef struct NvRmKernelPowerResume_params_t |
| 63 { |
| 64 NvRmKernelPowerResume_in in; |
| 65 NvRmKernelPowerResume_inout inout; |
| 66 NvRmKernelPowerResume_out out; |
| 67 } NvRmKernelPowerResume_params; |
| 68 |
| 69 typedef struct NvRmKernelPowerSuspend_in_t |
| 70 { |
| 71 NvU32 package_; |
| 72 NvU32 function_; |
| 73 NvRmDeviceHandle hRmDeviceHandle; |
| 74 } NV_ALIGN(4) NvRmKernelPowerSuspend_in; |
| 75 |
| 76 typedef struct NvRmKernelPowerSuspend_inout_t |
| 77 { |
| 78 NvU32 dummy_; |
| 79 } NV_ALIGN(4) NvRmKernelPowerSuspend_inout; |
| 80 |
| 81 typedef struct NvRmKernelPowerSuspend_out_t |
| 82 { |
| 83 NvError ret_; |
| 84 } NV_ALIGN(4) NvRmKernelPowerSuspend_out; |
| 85 |
| 86 typedef struct NvRmKernelPowerSuspend_params_t |
| 87 { |
| 88 NvRmKernelPowerSuspend_in in; |
| 89 NvRmKernelPowerSuspend_inout inout; |
| 90 NvRmKernelPowerSuspend_out out; |
| 91 } NvRmKernelPowerSuspend_params; |
| 92 |
| 93 typedef struct NvRmDfsSetLowVoltageThreshold_in_t |
| 94 { |
| 95 NvU32 package_; |
| 96 NvU32 function_; |
| 97 NvRmDeviceHandle hRmDeviceHandle; |
| 98 NvRmDfsVoltageRailId RailId; |
| 99 NvRmMilliVolts LowMv; |
| 100 } NV_ALIGN(4) NvRmDfsSetLowVoltageThreshold_in; |
| 101 |
| 102 typedef struct NvRmDfsSetLowVoltageThreshold_inout_t |
| 103 { |
| 104 NvU32 dummy_; |
| 105 } NV_ALIGN(4) NvRmDfsSetLowVoltageThreshold_inout; |
| 106 |
| 107 typedef struct NvRmDfsSetLowVoltageThreshold_out_t |
| 108 { |
| 109 NvU32 dummy_; |
| 110 } NV_ALIGN(4) NvRmDfsSetLowVoltageThreshold_out; |
| 111 |
| 112 typedef struct NvRmDfsSetLowVoltageThreshold_params_t |
| 113 { |
| 114 NvRmDfsSetLowVoltageThreshold_in in; |
| 115 NvRmDfsSetLowVoltageThreshold_inout inout; |
| 116 NvRmDfsSetLowVoltageThreshold_out out; |
| 117 } NvRmDfsSetLowVoltageThreshold_params; |
| 118 |
| 119 typedef struct NvRmDfsGetLowVoltageThreshold_in_t |
| 120 { |
| 121 NvU32 package_; |
| 122 NvU32 function_; |
| 123 NvRmDeviceHandle hRmDeviceHandle; |
| 124 NvRmDfsVoltageRailId RailId; |
| 125 } NV_ALIGN(4) NvRmDfsGetLowVoltageThreshold_in; |
| 126 |
| 127 typedef struct NvRmDfsGetLowVoltageThreshold_inout_t |
| 128 { |
| 129 NvU32 dummy_; |
| 130 } NV_ALIGN(4) NvRmDfsGetLowVoltageThreshold_inout; |
| 131 |
| 132 typedef struct NvRmDfsGetLowVoltageThreshold_out_t |
| 133 { |
| 134 NvRmMilliVolts pLowMv; |
| 135 NvRmMilliVolts pPresentMv; |
| 136 } NV_ALIGN(4) NvRmDfsGetLowVoltageThreshold_out; |
| 137 |
| 138 typedef struct NvRmDfsGetLowVoltageThreshold_params_t |
| 139 { |
| 140 NvRmDfsGetLowVoltageThreshold_in in; |
| 141 NvRmDfsGetLowVoltageThreshold_inout inout; |
| 142 NvRmDfsGetLowVoltageThreshold_out out; |
| 143 } NvRmDfsGetLowVoltageThreshold_params; |
| 144 |
| 145 typedef struct NvRmDfsLogBusyGetEntry_in_t |
| 146 { |
| 147 NvU32 package_; |
| 148 NvU32 function_; |
| 149 NvRmDeviceHandle hRmDeviceHandle; |
| 150 NvU32 EntryIndex; |
| 151 } NV_ALIGN(4) NvRmDfsLogBusyGetEntry_in; |
| 152 |
| 153 typedef struct NvRmDfsLogBusyGetEntry_inout_t |
| 154 { |
| 155 NvU32 dummy_; |
| 156 } NV_ALIGN(4) NvRmDfsLogBusyGetEntry_inout; |
| 157 |
| 158 typedef struct NvRmDfsLogBusyGetEntry_out_t |
| 159 { |
| 160 NvError ret_; |
| 161 NvU32 pSampleIndex; |
| 162 NvU32 pClientId; |
| 163 NvU32 pClientTag; |
| 164 NvRmDfsBusyHint pBusyHint; |
| 165 } NV_ALIGN(4) NvRmDfsLogBusyGetEntry_out; |
| 166 |
| 167 typedef struct NvRmDfsLogBusyGetEntry_params_t |
| 168 { |
| 169 NvRmDfsLogBusyGetEntry_in in; |
| 170 NvRmDfsLogBusyGetEntry_inout inout; |
| 171 NvRmDfsLogBusyGetEntry_out out; |
| 172 } NvRmDfsLogBusyGetEntry_params; |
| 173 |
| 174 typedef struct NvRmDfsLogStarvationGetEntry_in_t |
| 175 { |
| 176 NvU32 package_; |
| 177 NvU32 function_; |
| 178 NvRmDeviceHandle hRmDeviceHandle; |
| 179 NvU32 EntryIndex; |
| 180 } NV_ALIGN(4) NvRmDfsLogStarvationGetEntry_in; |
| 181 |
| 182 typedef struct NvRmDfsLogStarvationGetEntry_inout_t |
| 183 { |
| 184 NvU32 dummy_; |
| 185 } NV_ALIGN(4) NvRmDfsLogStarvationGetEntry_inout; |
| 186 |
| 187 typedef struct NvRmDfsLogStarvationGetEntry_out_t |
| 188 { |
| 189 NvError ret_; |
| 190 NvU32 pSampleIndex; |
| 191 NvU32 pClientId; |
| 192 NvU32 pClientTag; |
| 193 NvRmDfsStarvationHint pStarvationHint; |
| 194 } NV_ALIGN(4) NvRmDfsLogStarvationGetEntry_out; |
| 195 |
| 196 typedef struct NvRmDfsLogStarvationGetEntry_params_t |
| 197 { |
| 198 NvRmDfsLogStarvationGetEntry_in in; |
| 199 NvRmDfsLogStarvationGetEntry_inout inout; |
| 200 NvRmDfsLogStarvationGetEntry_out out; |
| 201 } NvRmDfsLogStarvationGetEntry_params; |
| 202 |
| 203 typedef struct NvRmDfsLogActivityGetEntry_in_t |
| 204 { |
| 205 NvU32 package_; |
| 206 NvU32 function_; |
| 207 NvRmDeviceHandle hRmDeviceHandle; |
| 208 NvU32 EntryIndex; |
| 209 NvU32 LogDomainsCount; |
| 210 NvU32 * pActiveCyclesList; |
| 211 NvRmFreqKHz * pAveragesList; |
| 212 NvRmFreqKHz * pFrequenciesList; |
| 213 } NV_ALIGN(4) NvRmDfsLogActivityGetEntry_in; |
| 214 |
| 215 typedef struct NvRmDfsLogActivityGetEntry_inout_t |
| 216 { |
| 217 NvU32 dummy_; |
| 218 } NV_ALIGN(4) NvRmDfsLogActivityGetEntry_inout; |
| 219 |
| 220 typedef struct NvRmDfsLogActivityGetEntry_out_t |
| 221 { |
| 222 NvError ret_; |
| 223 NvU32 pIntervalMs; |
| 224 NvU32 pLp2TimeMs; |
| 225 } NV_ALIGN(4) NvRmDfsLogActivityGetEntry_out; |
| 226 |
| 227 typedef struct NvRmDfsLogActivityGetEntry_params_t |
| 228 { |
| 229 NvRmDfsLogActivityGetEntry_in in; |
| 230 NvRmDfsLogActivityGetEntry_inout inout; |
| 231 NvRmDfsLogActivityGetEntry_out out; |
| 232 } NvRmDfsLogActivityGetEntry_params; |
| 233 |
| 234 typedef struct NvRmDfsLogGetMeanFrequencies_in_t |
| 235 { |
| 236 NvU32 package_; |
| 237 NvU32 function_; |
| 238 NvRmDeviceHandle hRmDeviceHandle; |
| 239 NvU32 LogMeanFreqListCount; |
| 240 NvRmFreqKHz * pLogMeanFreqList; |
| 241 } NV_ALIGN(4) NvRmDfsLogGetMeanFrequencies_in; |
| 242 |
| 243 typedef struct NvRmDfsLogGetMeanFrequencies_inout_t |
| 244 { |
| 245 NvU32 dummy_; |
| 246 } NV_ALIGN(4) NvRmDfsLogGetMeanFrequencies_inout; |
| 247 |
| 248 typedef struct NvRmDfsLogGetMeanFrequencies_out_t |
| 249 { |
| 250 NvError ret_; |
| 251 NvU32 pLogLp2TimeMs; |
| 252 NvU32 pLogLp2Entries; |
| 253 } NV_ALIGN(4) NvRmDfsLogGetMeanFrequencies_out; |
| 254 |
| 255 typedef struct NvRmDfsLogGetMeanFrequencies_params_t |
| 256 { |
| 257 NvRmDfsLogGetMeanFrequencies_in in; |
| 258 NvRmDfsLogGetMeanFrequencies_inout inout; |
| 259 NvRmDfsLogGetMeanFrequencies_out out; |
| 260 } NvRmDfsLogGetMeanFrequencies_params; |
| 261 |
| 262 typedef struct NvRmDfsLogStart_in_t |
| 263 { |
| 264 NvU32 package_; |
| 265 NvU32 function_; |
| 266 NvRmDeviceHandle hRmDeviceHandle; |
| 267 } NV_ALIGN(4) NvRmDfsLogStart_in; |
| 268 |
| 269 typedef struct NvRmDfsLogStart_inout_t |
| 270 { |
| 271 NvU32 dummy_; |
| 272 } NV_ALIGN(4) NvRmDfsLogStart_inout; |
| 273 |
| 274 typedef struct NvRmDfsLogStart_out_t |
| 275 { |
| 276 NvU32 dummy_; |
| 277 } NV_ALIGN(4) NvRmDfsLogStart_out; |
| 278 |
| 279 typedef struct NvRmDfsLogStart_params_t |
| 280 { |
| 281 NvRmDfsLogStart_in in; |
| 282 NvRmDfsLogStart_inout inout; |
| 283 NvRmDfsLogStart_out out; |
| 284 } NvRmDfsLogStart_params; |
| 285 |
| 286 typedef struct NvRmDfsGetProfileData_in_t |
| 287 { |
| 288 NvU32 package_; |
| 289 NvU32 function_; |
| 290 NvRmDeviceHandle hRmDeviceHandle; |
| 291 NvU32 DfsProfileCount; |
| 292 NvU32 * pSamplesNoList; |
| 293 NvU32 * pProfileTimeUsList; |
| 294 } NV_ALIGN(4) NvRmDfsGetProfileData_in; |
| 295 |
| 296 typedef struct NvRmDfsGetProfileData_inout_t |
| 297 { |
| 298 NvU32 dummy_; |
| 299 } NV_ALIGN(4) NvRmDfsGetProfileData_inout; |
| 300 |
| 301 typedef struct NvRmDfsGetProfileData_out_t |
| 302 { |
| 303 NvError ret_; |
| 304 NvU32 pDfsPeriodUs; |
| 305 } NV_ALIGN(4) NvRmDfsGetProfileData_out; |
| 306 |
| 307 typedef struct NvRmDfsGetProfileData_params_t |
| 308 { |
| 309 NvRmDfsGetProfileData_in in; |
| 310 NvRmDfsGetProfileData_inout inout; |
| 311 NvRmDfsGetProfileData_out out; |
| 312 } NvRmDfsGetProfileData_params; |
| 313 |
| 314 typedef struct NvRmDfsSetAvHighCorner_in_t |
| 315 { |
| 316 NvU32 package_; |
| 317 NvU32 function_; |
| 318 NvRmDeviceHandle hRmDeviceHandle; |
| 319 NvRmFreqKHz DfsSystemHighKHz; |
| 320 NvRmFreqKHz DfsAvpHighKHz; |
| 321 NvRmFreqKHz DfsVpipeHighKHz; |
| 322 } NV_ALIGN(4) NvRmDfsSetAvHighCorner_in; |
| 323 |
| 324 typedef struct NvRmDfsSetAvHighCorner_inout_t |
| 325 { |
| 326 NvU32 dummy_; |
| 327 } NV_ALIGN(4) NvRmDfsSetAvHighCorner_inout; |
| 328 |
| 329 typedef struct NvRmDfsSetAvHighCorner_out_t |
| 330 { |
| 331 NvError ret_; |
| 332 } NV_ALIGN(4) NvRmDfsSetAvHighCorner_out; |
| 333 |
| 334 typedef struct NvRmDfsSetAvHighCorner_params_t |
| 335 { |
| 336 NvRmDfsSetAvHighCorner_in in; |
| 337 NvRmDfsSetAvHighCorner_inout inout; |
| 338 NvRmDfsSetAvHighCorner_out out; |
| 339 } NvRmDfsSetAvHighCorner_params; |
| 340 |
| 341 typedef struct NvRmDfsSetCpuEmcHighCorner_in_t |
| 342 { |
| 343 NvU32 package_; |
| 344 NvU32 function_; |
| 345 NvRmDeviceHandle hRmDeviceHandle; |
| 346 NvRmFreqKHz DfsCpuHighKHz; |
| 347 NvRmFreqKHz DfsEmcHighKHz; |
| 348 } NV_ALIGN(4) NvRmDfsSetCpuEmcHighCorner_in; |
| 349 |
| 350 typedef struct NvRmDfsSetCpuEmcHighCorner_inout_t |
| 351 { |
| 352 NvU32 dummy_; |
| 353 } NV_ALIGN(4) NvRmDfsSetCpuEmcHighCorner_inout; |
| 354 |
| 355 typedef struct NvRmDfsSetCpuEmcHighCorner_out_t |
| 356 { |
| 357 NvError ret_; |
| 358 } NV_ALIGN(4) NvRmDfsSetCpuEmcHighCorner_out; |
| 359 |
| 360 typedef struct NvRmDfsSetCpuEmcHighCorner_params_t |
| 361 { |
| 362 NvRmDfsSetCpuEmcHighCorner_in in; |
| 363 NvRmDfsSetCpuEmcHighCorner_inout inout; |
| 364 NvRmDfsSetCpuEmcHighCorner_out out; |
| 365 } NvRmDfsSetCpuEmcHighCorner_params; |
| 366 |
| 367 typedef struct NvRmDfsSetEmcEnvelope_in_t |
| 368 { |
| 369 NvU32 package_; |
| 370 NvU32 function_; |
| 371 NvRmDeviceHandle hRmDeviceHandle; |
| 372 NvRmFreqKHz DfsEmcLowCornerKHz; |
| 373 NvRmFreqKHz DfsEmcHighCornerKHz; |
| 374 } NV_ALIGN(4) NvRmDfsSetEmcEnvelope_in; |
| 375 |
| 376 typedef struct NvRmDfsSetEmcEnvelope_inout_t |
| 377 { |
| 378 NvU32 dummy_; |
| 379 } NV_ALIGN(4) NvRmDfsSetEmcEnvelope_inout; |
| 380 |
| 381 typedef struct NvRmDfsSetEmcEnvelope_out_t |
| 382 { |
| 383 NvError ret_; |
| 384 } NV_ALIGN(4) NvRmDfsSetEmcEnvelope_out; |
| 385 |
| 386 typedef struct NvRmDfsSetEmcEnvelope_params_t |
| 387 { |
| 388 NvRmDfsSetEmcEnvelope_in in; |
| 389 NvRmDfsSetEmcEnvelope_inout inout; |
| 390 NvRmDfsSetEmcEnvelope_out out; |
| 391 } NvRmDfsSetEmcEnvelope_params; |
| 392 |
| 393 typedef struct NvRmDfsSetCpuEnvelope_in_t |
| 394 { |
| 395 NvU32 package_; |
| 396 NvU32 function_; |
| 397 NvRmDeviceHandle hRmDeviceHandle; |
| 398 NvRmFreqKHz DfsCpuLowCornerKHz; |
| 399 NvRmFreqKHz DfsCpuHighCornerKHz; |
| 400 } NV_ALIGN(4) NvRmDfsSetCpuEnvelope_in; |
| 401 |
| 402 typedef struct NvRmDfsSetCpuEnvelope_inout_t |
| 403 { |
| 404 NvU32 dummy_; |
| 405 } NV_ALIGN(4) NvRmDfsSetCpuEnvelope_inout; |
| 406 |
| 407 typedef struct NvRmDfsSetCpuEnvelope_out_t |
| 408 { |
| 409 NvError ret_; |
| 410 } NV_ALIGN(4) NvRmDfsSetCpuEnvelope_out; |
| 411 |
| 412 typedef struct NvRmDfsSetCpuEnvelope_params_t |
| 413 { |
| 414 NvRmDfsSetCpuEnvelope_in in; |
| 415 NvRmDfsSetCpuEnvelope_inout inout; |
| 416 NvRmDfsSetCpuEnvelope_out out; |
| 417 } NvRmDfsSetCpuEnvelope_params; |
| 418 |
| 419 typedef struct NvRmDfsSetTarget_in_t |
| 420 { |
| 421 NvU32 package_; |
| 422 NvU32 function_; |
| 423 NvRmDeviceHandle hRmDeviceHandle; |
| 424 NvU32 DfsFreqListCount; |
| 425 NvRmFreqKHz * pDfsTargetFreqList; |
| 426 } NV_ALIGN(4) NvRmDfsSetTarget_in; |
| 427 |
| 428 typedef struct NvRmDfsSetTarget_inout_t |
| 429 { |
| 430 NvU32 dummy_; |
| 431 } NV_ALIGN(4) NvRmDfsSetTarget_inout; |
| 432 |
| 433 typedef struct NvRmDfsSetTarget_out_t |
| 434 { |
| 435 NvError ret_; |
| 436 } NV_ALIGN(4) NvRmDfsSetTarget_out; |
| 437 |
| 438 typedef struct NvRmDfsSetTarget_params_t |
| 439 { |
| 440 NvRmDfsSetTarget_in in; |
| 441 NvRmDfsSetTarget_inout inout; |
| 442 NvRmDfsSetTarget_out out; |
| 443 } NvRmDfsSetTarget_params; |
| 444 |
| 445 typedef struct NvRmDfsSetLowCorner_in_t |
| 446 { |
| 447 NvU32 package_; |
| 448 NvU32 function_; |
| 449 NvRmDeviceHandle hRmDeviceHandle; |
| 450 NvU32 DfsFreqListCount; |
| 451 NvRmFreqKHz * pDfsLowFreqList; |
| 452 } NV_ALIGN(4) NvRmDfsSetLowCorner_in; |
| 453 |
| 454 typedef struct NvRmDfsSetLowCorner_inout_t |
| 455 { |
| 456 NvU32 dummy_; |
| 457 } NV_ALIGN(4) NvRmDfsSetLowCorner_inout; |
| 458 |
| 459 typedef struct NvRmDfsSetLowCorner_out_t |
| 460 { |
| 461 NvError ret_; |
| 462 } NV_ALIGN(4) NvRmDfsSetLowCorner_out; |
| 463 |
| 464 typedef struct NvRmDfsSetLowCorner_params_t |
| 465 { |
| 466 NvRmDfsSetLowCorner_in in; |
| 467 NvRmDfsSetLowCorner_inout inout; |
| 468 NvRmDfsSetLowCorner_out out; |
| 469 } NvRmDfsSetLowCorner_params; |
| 470 |
| 471 typedef struct NvRmDfsSetState_in_t |
| 472 { |
| 473 NvU32 package_; |
| 474 NvU32 function_; |
| 475 NvRmDeviceHandle hRmDeviceHandle; |
| 476 NvRmDfsRunState NewDfsRunState; |
| 477 } NV_ALIGN(4) NvRmDfsSetState_in; |
| 478 |
| 479 typedef struct NvRmDfsSetState_inout_t |
| 480 { |
| 481 NvU32 dummy_; |
| 482 } NV_ALIGN(4) NvRmDfsSetState_inout; |
| 483 |
| 484 typedef struct NvRmDfsSetState_out_t |
| 485 { |
| 486 NvError ret_; |
| 487 } NV_ALIGN(4) NvRmDfsSetState_out; |
| 488 |
| 489 typedef struct NvRmDfsSetState_params_t |
| 490 { |
| 491 NvRmDfsSetState_in in; |
| 492 NvRmDfsSetState_inout inout; |
| 493 NvRmDfsSetState_out out; |
| 494 } NvRmDfsSetState_params; |
| 495 |
| 496 typedef struct NvRmDfsGetClockUtilization_in_t |
| 497 { |
| 498 NvU32 package_; |
| 499 NvU32 function_; |
| 500 NvRmDeviceHandle hRmDeviceHandle; |
| 501 NvRmDfsClockId ClockId; |
| 502 } NV_ALIGN(4) NvRmDfsGetClockUtilization_in; |
| 503 |
| 504 typedef struct NvRmDfsGetClockUtilization_inout_t |
| 505 { |
| 506 NvU32 dummy_; |
| 507 } NV_ALIGN(4) NvRmDfsGetClockUtilization_inout; |
| 508 |
| 509 typedef struct NvRmDfsGetClockUtilization_out_t |
| 510 { |
| 511 NvError ret_; |
| 512 NvRmDfsClockUsage pClockUsage; |
| 513 } NV_ALIGN(4) NvRmDfsGetClockUtilization_out; |
| 514 |
| 515 typedef struct NvRmDfsGetClockUtilization_params_t |
| 516 { |
| 517 NvRmDfsGetClockUtilization_in in; |
| 518 NvRmDfsGetClockUtilization_inout inout; |
| 519 NvRmDfsGetClockUtilization_out out; |
| 520 } NvRmDfsGetClockUtilization_params; |
| 521 |
| 522 typedef struct NvRmDfsGetState_in_t |
| 523 { |
| 524 NvU32 package_; |
| 525 NvU32 function_; |
| 526 NvRmDeviceHandle hRmDeviceHandle; |
| 527 } NV_ALIGN(4) NvRmDfsGetState_in; |
| 528 |
| 529 typedef struct NvRmDfsGetState_inout_t |
| 530 { |
| 531 NvU32 dummy_; |
| 532 } NV_ALIGN(4) NvRmDfsGetState_inout; |
| 533 |
| 534 typedef struct NvRmDfsGetState_out_t |
| 535 { |
| 536 NvRmDfsRunState ret_; |
| 537 } NV_ALIGN(4) NvRmDfsGetState_out; |
| 538 |
| 539 typedef struct NvRmDfsGetState_params_t |
| 540 { |
| 541 NvRmDfsGetState_in in; |
| 542 NvRmDfsGetState_inout inout; |
| 543 NvRmDfsGetState_out out; |
| 544 } NvRmDfsGetState_params; |
| 545 |
| 546 typedef struct NvRmPowerActivityHint_in_t |
| 547 { |
| 548 NvU32 package_; |
| 549 NvU32 function_; |
| 550 NvRmDeviceHandle hRmDeviceHandle; |
| 551 NvRmModuleID ModuleId; |
| 552 NvU32 ClientId; |
| 553 NvU32 ActivityDurationMs; |
| 554 } NV_ALIGN(4) NvRmPowerActivityHint_in; |
| 555 |
| 556 typedef struct NvRmPowerActivityHint_inout_t |
| 557 { |
| 558 NvU32 dummy_; |
| 559 } NV_ALIGN(4) NvRmPowerActivityHint_inout; |
| 560 |
| 561 typedef struct NvRmPowerActivityHint_out_t |
| 562 { |
| 563 NvError ret_; |
| 564 } NV_ALIGN(4) NvRmPowerActivityHint_out; |
| 565 |
| 566 typedef struct NvRmPowerActivityHint_params_t |
| 567 { |
| 568 NvRmPowerActivityHint_in in; |
| 569 NvRmPowerActivityHint_inout inout; |
| 570 NvRmPowerActivityHint_out out; |
| 571 } NvRmPowerActivityHint_params; |
| 572 |
| 573 typedef struct NvRmPowerStarvationHintMulti_in_t |
| 574 { |
| 575 NvU32 package_; |
| 576 NvU32 function_; |
| 577 NvRmDeviceHandle hRmDeviceHandle; |
| 578 NvU32 ClientId; |
| 579 NvRmDfsStarvationHint * pMultiHint; |
| 580 NvU32 NumHints; |
| 581 } NV_ALIGN(4) NvRmPowerStarvationHintMulti_in; |
| 582 |
| 583 typedef struct NvRmPowerStarvationHintMulti_inout_t |
| 584 { |
| 585 NvU32 dummy_; |
| 586 } NV_ALIGN(4) NvRmPowerStarvationHintMulti_inout; |
| 587 |
| 588 typedef struct NvRmPowerStarvationHintMulti_out_t |
| 589 { |
| 590 NvError ret_; |
| 591 } NV_ALIGN(4) NvRmPowerStarvationHintMulti_out; |
| 592 |
| 593 typedef struct NvRmPowerStarvationHintMulti_params_t |
| 594 { |
| 595 NvRmPowerStarvationHintMulti_in in; |
| 596 NvRmPowerStarvationHintMulti_inout inout; |
| 597 NvRmPowerStarvationHintMulti_out out; |
| 598 } NvRmPowerStarvationHintMulti_params; |
| 599 |
| 600 typedef struct NvRmPowerStarvationHint_in_t |
| 601 { |
| 602 NvU32 package_; |
| 603 NvU32 function_; |
| 604 NvRmDeviceHandle hRmDeviceHandle; |
| 605 NvRmDfsClockId ClockId; |
| 606 NvU32 ClientId; |
| 607 NvBool Starving; |
| 608 } NV_ALIGN(4) NvRmPowerStarvationHint_in; |
| 609 |
| 610 typedef struct NvRmPowerStarvationHint_inout_t |
| 611 { |
| 612 NvU32 dummy_; |
| 613 } NV_ALIGN(4) NvRmPowerStarvationHint_inout; |
| 614 |
| 615 typedef struct NvRmPowerStarvationHint_out_t |
| 616 { |
| 617 NvError ret_; |
| 618 } NV_ALIGN(4) NvRmPowerStarvationHint_out; |
| 619 |
| 620 typedef struct NvRmPowerStarvationHint_params_t |
| 621 { |
| 622 NvRmPowerStarvationHint_in in; |
| 623 NvRmPowerStarvationHint_inout inout; |
| 624 NvRmPowerStarvationHint_out out; |
| 625 } NvRmPowerStarvationHint_params; |
| 626 |
| 627 typedef struct NvRmPowerBusyHintMulti_in_t |
| 628 { |
| 629 NvU32 package_; |
| 630 NvU32 function_; |
| 631 NvRmDeviceHandle hRmDeviceHandle; |
| 632 NvU32 ClientId; |
| 633 NvRmDfsBusyHint * pMultiHint; |
| 634 NvU32 NumHints; |
| 635 NvRmDfsBusyHintSyncMode Mode; |
| 636 } NV_ALIGN(4) NvRmPowerBusyHintMulti_in; |
| 637 |
| 638 typedef struct NvRmPowerBusyHintMulti_inout_t |
| 639 { |
| 640 NvU32 dummy_; |
| 641 } NV_ALIGN(4) NvRmPowerBusyHintMulti_inout; |
| 642 |
| 643 typedef struct NvRmPowerBusyHintMulti_out_t |
| 644 { |
| 645 NvError ret_; |
| 646 } NV_ALIGN(4) NvRmPowerBusyHintMulti_out; |
| 647 |
| 648 typedef struct NvRmPowerBusyHintMulti_params_t |
| 649 { |
| 650 NvRmPowerBusyHintMulti_in in; |
| 651 NvRmPowerBusyHintMulti_inout inout; |
| 652 NvRmPowerBusyHintMulti_out out; |
| 653 } NvRmPowerBusyHintMulti_params; |
| 654 |
| 655 typedef struct NvRmPowerBusyHint_in_t |
| 656 { |
| 657 NvU32 package_; |
| 658 NvU32 function_; |
| 659 NvRmDeviceHandle hRmDeviceHandle; |
| 660 NvRmDfsClockId ClockId; |
| 661 NvU32 ClientId; |
| 662 NvU32 BoostDurationMs; |
| 663 NvRmFreqKHz BoostKHz; |
| 664 } NV_ALIGN(4) NvRmPowerBusyHint_in; |
| 665 |
| 666 typedef struct NvRmPowerBusyHint_inout_t |
| 667 { |
| 668 NvU32 dummy_; |
| 669 } NV_ALIGN(4) NvRmPowerBusyHint_inout; |
| 670 |
| 671 typedef struct NvRmPowerBusyHint_out_t |
| 672 { |
| 673 NvError ret_; |
| 674 } NV_ALIGN(4) NvRmPowerBusyHint_out; |
| 675 |
| 676 typedef struct NvRmPowerBusyHint_params_t |
| 677 { |
| 678 NvRmPowerBusyHint_in in; |
| 679 NvRmPowerBusyHint_inout inout; |
| 680 NvRmPowerBusyHint_out out; |
| 681 } NvRmPowerBusyHint_params; |
| 682 |
| 683 typedef struct NvRmListPowerAwareModules_in_t |
| 684 { |
| 685 NvU32 package_; |
| 686 NvU32 function_; |
| 687 NvRmDeviceHandle hRmDeviceHandle; |
| 688 NvRmModuleID * pIdList; |
| 689 NvBool * pActiveList; |
| 690 } NV_ALIGN(4) NvRmListPowerAwareModules_in; |
| 691 |
| 692 typedef struct NvRmListPowerAwareModules_inout_t |
| 693 { |
| 694 NvU32 pListSize; |
| 695 } NV_ALIGN(4) NvRmListPowerAwareModules_inout; |
| 696 |
| 697 typedef struct NvRmListPowerAwareModules_out_t |
| 698 { |
| 699 NvU32 dummy_; |
| 700 } NV_ALIGN(4) NvRmListPowerAwareModules_out; |
| 701 |
| 702 typedef struct NvRmListPowerAwareModules_params_t |
| 703 { |
| 704 NvRmListPowerAwareModules_in in; |
| 705 NvRmListPowerAwareModules_inout inout; |
| 706 NvRmListPowerAwareModules_out out; |
| 707 } NvRmListPowerAwareModules_params; |
| 708 |
| 709 typedef struct NvRmPowerVoltageControl_in_t |
| 710 { |
| 711 NvU32 package_; |
| 712 NvU32 function_; |
| 713 NvRmDeviceHandle hRmDeviceHandle; |
| 714 NvRmModuleID ModuleId; |
| 715 NvU32 ClientId; |
| 716 NvRmMilliVolts MinVolts; |
| 717 NvRmMilliVolts MaxVolts; |
| 718 NvRmMilliVolts * PrefVoltageList; |
| 719 NvU32 PrefVoltageListCount; |
| 720 } NV_ALIGN(4) NvRmPowerVoltageControl_in; |
| 721 |
| 722 typedef struct NvRmPowerVoltageControl_inout_t |
| 723 { |
| 724 NvU32 dummy_; |
| 725 } NV_ALIGN(4) NvRmPowerVoltageControl_inout; |
| 726 |
| 727 typedef struct NvRmPowerVoltageControl_out_t |
| 728 { |
| 729 NvError ret_; |
| 730 NvRmMilliVolts CurrentVolts; |
| 731 } NV_ALIGN(4) NvRmPowerVoltageControl_out; |
| 732 |
| 733 typedef struct NvRmPowerVoltageControl_params_t |
| 734 { |
| 735 NvRmPowerVoltageControl_in in; |
| 736 NvRmPowerVoltageControl_inout inout; |
| 737 NvRmPowerVoltageControl_out out; |
| 738 } NvRmPowerVoltageControl_params; |
| 739 |
| 740 typedef struct NvRmPowerModuleClockControl_in_t |
| 741 { |
| 742 NvU32 package_; |
| 743 NvU32 function_; |
| 744 NvRmDeviceHandle hRmDeviceHandle; |
| 745 NvRmModuleID ModuleId; |
| 746 NvU32 ClientId; |
| 747 NvBool Enable; |
| 748 } NV_ALIGN(4) NvRmPowerModuleClockControl_in; |
| 749 |
| 750 typedef struct NvRmPowerModuleClockControl_inout_t |
| 751 { |
| 752 NvU32 dummy_; |
| 753 } NV_ALIGN(4) NvRmPowerModuleClockControl_inout; |
| 754 |
| 755 typedef struct NvRmPowerModuleClockControl_out_t |
| 756 { |
| 757 NvError ret_; |
| 758 } NV_ALIGN(4) NvRmPowerModuleClockControl_out; |
| 759 |
| 760 typedef struct NvRmPowerModuleClockControl_params_t |
| 761 { |
| 762 NvRmPowerModuleClockControl_in in; |
| 763 NvRmPowerModuleClockControl_inout inout; |
| 764 NvRmPowerModuleClockControl_out out; |
| 765 } NvRmPowerModuleClockControl_params; |
| 766 |
| 767 typedef struct NvRmPowerModuleClockConfig_in_t |
| 768 { |
| 769 NvU32 package_; |
| 770 NvU32 function_; |
| 771 NvRmDeviceHandle hRmDeviceHandle; |
| 772 NvRmModuleID ModuleId; |
| 773 NvU32 ClientId; |
| 774 NvRmFreqKHz MinFreq; |
| 775 NvRmFreqKHz MaxFreq; |
| 776 NvRmFreqKHz * PrefFreqList; |
| 777 NvU32 PrefFreqListCount; |
| 778 NvU32 flags; |
| 779 } NV_ALIGN(4) NvRmPowerModuleClockConfig_in; |
| 780 |
| 781 typedef struct NvRmPowerModuleClockConfig_inout_t |
| 782 { |
| 783 NvU32 dummy_; |
| 784 } NV_ALIGN(4) NvRmPowerModuleClockConfig_inout; |
| 785 |
| 786 typedef struct NvRmPowerModuleClockConfig_out_t |
| 787 { |
| 788 NvError ret_; |
| 789 NvRmFreqKHz CurrentFreq; |
| 790 } NV_ALIGN(4) NvRmPowerModuleClockConfig_out; |
| 791 |
| 792 typedef struct NvRmPowerModuleClockConfig_params_t |
| 793 { |
| 794 NvRmPowerModuleClockConfig_in in; |
| 795 NvRmPowerModuleClockConfig_inout inout; |
| 796 NvRmPowerModuleClockConfig_out out; |
| 797 } NvRmPowerModuleClockConfig_params; |
| 798 |
| 799 typedef struct NvRmPowerModuleGetMaxFrequency_in_t |
| 800 { |
| 801 NvU32 package_; |
| 802 NvU32 function_; |
| 803 NvRmDeviceHandle hRmDeviceHandle; |
| 804 NvRmModuleID ModuleId; |
| 805 } NV_ALIGN(4) NvRmPowerModuleGetMaxFrequency_in; |
| 806 |
| 807 typedef struct NvRmPowerModuleGetMaxFrequency_inout_t |
| 808 { |
| 809 NvU32 dummy_; |
| 810 } NV_ALIGN(4) NvRmPowerModuleGetMaxFrequency_inout; |
| 811 |
| 812 typedef struct NvRmPowerModuleGetMaxFrequency_out_t |
| 813 { |
| 814 NvRmFreqKHz ret_; |
| 815 } NV_ALIGN(4) NvRmPowerModuleGetMaxFrequency_out; |
| 816 |
| 817 typedef struct NvRmPowerModuleGetMaxFrequency_params_t |
| 818 { |
| 819 NvRmPowerModuleGetMaxFrequency_in in; |
| 820 NvRmPowerModuleGetMaxFrequency_inout inout; |
| 821 NvRmPowerModuleGetMaxFrequency_out out; |
| 822 } NvRmPowerModuleGetMaxFrequency_params; |
| 823 |
| 824 typedef struct NvRmPowerGetPrimaryFrequency_in_t |
| 825 { |
| 826 NvU32 package_; |
| 827 NvU32 function_; |
| 828 NvRmDeviceHandle hRmDeviceHandle; |
| 829 } NV_ALIGN(4) NvRmPowerGetPrimaryFrequency_in; |
| 830 |
| 831 typedef struct NvRmPowerGetPrimaryFrequency_inout_t |
| 832 { |
| 833 NvU32 dummy_; |
| 834 } NV_ALIGN(4) NvRmPowerGetPrimaryFrequency_inout; |
| 835 |
| 836 typedef struct NvRmPowerGetPrimaryFrequency_out_t |
| 837 { |
| 838 NvRmFreqKHz ret_; |
| 839 } NV_ALIGN(4) NvRmPowerGetPrimaryFrequency_out; |
| 840 |
| 841 typedef struct NvRmPowerGetPrimaryFrequency_params_t |
| 842 { |
| 843 NvRmPowerGetPrimaryFrequency_in in; |
| 844 NvRmPowerGetPrimaryFrequency_inout inout; |
| 845 NvRmPowerGetPrimaryFrequency_out out; |
| 846 } NvRmPowerGetPrimaryFrequency_params; |
| 847 |
| 848 typedef struct NvRmPowerGetState_in_t |
| 849 { |
| 850 NvU32 package_; |
| 851 NvU32 function_; |
| 852 NvRmDeviceHandle hRmDeviceHandle; |
| 853 } NV_ALIGN(4) NvRmPowerGetState_in; |
| 854 |
| 855 typedef struct NvRmPowerGetState_inout_t |
| 856 { |
| 857 NvU32 dummy_; |
| 858 } NV_ALIGN(4) NvRmPowerGetState_inout; |
| 859 |
| 860 typedef struct NvRmPowerGetState_out_t |
| 861 { |
| 862 NvError ret_; |
| 863 NvRmPowerState pState; |
| 864 } NV_ALIGN(4) NvRmPowerGetState_out; |
| 865 |
| 866 typedef struct NvRmPowerGetState_params_t |
| 867 { |
| 868 NvRmPowerGetState_in in; |
| 869 NvRmPowerGetState_inout inout; |
| 870 NvRmPowerGetState_out out; |
| 871 } NvRmPowerGetState_params; |
| 872 |
| 873 typedef struct NvRmPowerEventNotify_in_t |
| 874 { |
| 875 NvU32 package_; |
| 876 NvU32 function_; |
| 877 NvRmDeviceHandle hRmDeviceHandle; |
| 878 NvRmPowerEvent Event; |
| 879 } NV_ALIGN(4) NvRmPowerEventNotify_in; |
| 880 |
| 881 typedef struct NvRmPowerEventNotify_inout_t |
| 882 { |
| 883 NvU32 dummy_; |
| 884 } NV_ALIGN(4) NvRmPowerEventNotify_inout; |
| 885 |
| 886 typedef struct NvRmPowerEventNotify_out_t |
| 887 { |
| 888 NvU32 dummy_; |
| 889 } NV_ALIGN(4) NvRmPowerEventNotify_out; |
| 890 |
| 891 typedef struct NvRmPowerEventNotify_params_t |
| 892 { |
| 893 NvRmPowerEventNotify_in in; |
| 894 NvRmPowerEventNotify_inout inout; |
| 895 NvRmPowerEventNotify_out out; |
| 896 } NvRmPowerEventNotify_params; |
| 897 |
| 898 typedef struct NvRmPowerGetEvent_in_t |
| 899 { |
| 900 NvU32 package_; |
| 901 NvU32 function_; |
| 902 NvRmDeviceHandle hRmDeviceHandle; |
| 903 NvU32 ClientId; |
| 904 } NV_ALIGN(4) NvRmPowerGetEvent_in; |
| 905 |
| 906 typedef struct NvRmPowerGetEvent_inout_t |
| 907 { |
| 908 NvU32 dummy_; |
| 909 } NV_ALIGN(4) NvRmPowerGetEvent_inout; |
| 910 |
| 911 typedef struct NvRmPowerGetEvent_out_t |
| 912 { |
| 913 NvError ret_; |
| 914 NvRmPowerEvent pEvent; |
| 915 } NV_ALIGN(4) NvRmPowerGetEvent_out; |
| 916 |
| 917 typedef struct NvRmPowerGetEvent_params_t |
| 918 { |
| 919 NvRmPowerGetEvent_in in; |
| 920 NvRmPowerGetEvent_inout inout; |
| 921 NvRmPowerGetEvent_out out; |
| 922 } NvRmPowerGetEvent_params; |
| 923 |
| 924 typedef struct NvRmPowerUnRegister_in_t |
| 925 { |
| 926 NvU32 package_; |
| 927 NvU32 function_; |
| 928 NvRmDeviceHandle hRmDeviceHandle; |
| 929 NvU32 ClientId; |
| 930 } NV_ALIGN(4) NvRmPowerUnRegister_in; |
| 931 |
| 932 typedef struct NvRmPowerUnRegister_inout_t |
| 933 { |
| 934 NvU32 dummy_; |
| 935 } NV_ALIGN(4) NvRmPowerUnRegister_inout; |
| 936 |
| 937 typedef struct NvRmPowerUnRegister_out_t |
| 938 { |
| 939 NvU32 dummy_; |
| 940 } NV_ALIGN(4) NvRmPowerUnRegister_out; |
| 941 |
| 942 typedef struct NvRmPowerUnRegister_params_t |
| 943 { |
| 944 NvRmPowerUnRegister_in in; |
| 945 NvRmPowerUnRegister_inout inout; |
| 946 NvRmPowerUnRegister_out out; |
| 947 } NvRmPowerUnRegister_params; |
| 948 |
| 949 typedef struct NvRmPowerRegister_in_t |
| 950 { |
| 951 NvU32 package_; |
| 952 NvU32 function_; |
| 953 NvRmDeviceHandle hRmDeviceHandle; |
| 954 NvOsSemaphoreHandle hEventSemaphore; |
| 955 } NV_ALIGN(4) NvRmPowerRegister_in; |
| 956 |
| 957 typedef struct NvRmPowerRegister_inout_t |
| 958 { |
| 959 NvU32 pClientId; |
| 960 } NV_ALIGN(4) NvRmPowerRegister_inout; |
| 961 |
| 962 typedef struct NvRmPowerRegister_out_t |
| 963 { |
| 964 NvError ret_; |
| 965 } NV_ALIGN(4) NvRmPowerRegister_out; |
| 966 |
| 967 typedef struct NvRmPowerRegister_params_t |
| 968 { |
| 969 NvRmPowerRegister_in in; |
| 970 NvRmPowerRegister_inout inout; |
| 971 NvRmPowerRegister_out out; |
| 972 } NvRmPowerRegister_params; |
| 973 |
| 974 static NvError NvRmKernelPowerResume_dispatch_( void *InBuffer, NvU32 InSize, vo
id *OutBuffer, NvU32 OutSize, NvDispatchCtx* Ctx ) |
| 975 { |
| 976 NvError err_ = NvSuccess; |
| 977 NvRmKernelPowerResume_in *p_in; |
| 978 NvRmKernelPowerResume_out *p_out; |
| 979 |
| 980 p_in = (NvRmKernelPowerResume_in *)InBuffer; |
| 981 p_out = (NvRmKernelPowerResume_out *)((NvU8 *)OutBuffer + OFFSET(NvRmKernelP
owerResume_params, out) - OFFSET(NvRmKernelPowerResume_params, inout)); |
| 982 |
| 983 |
| 984 p_out->ret_ = NvRmKernelPowerResume( p_in->hRmDeviceHandle ); |
| 985 |
| 986 return err_; |
| 987 } |
| 988 |
| 989 static NvError NvRmKernelPowerSuspend_dispatch_( void *InBuffer, NvU32 InSize, v
oid *OutBuffer, NvU32 OutSize, NvDispatchCtx* Ctx ) |
| 990 { |
| 991 NvError err_ = NvSuccess; |
| 992 NvRmKernelPowerSuspend_in *p_in; |
| 993 NvRmKernelPowerSuspend_out *p_out; |
| 994 |
| 995 p_in = (NvRmKernelPowerSuspend_in *)InBuffer; |
| 996 p_out = (NvRmKernelPowerSuspend_out *)((NvU8 *)OutBuffer + OFFSET(NvRmKernel
PowerSuspend_params, out) - OFFSET(NvRmKernelPowerSuspend_params, inout)); |
| 997 |
| 998 |
| 999 p_out->ret_ = NvRmKernelPowerSuspend( p_in->hRmDeviceHandle ); |
| 1000 |
| 1001 return err_; |
| 1002 } |
| 1003 |
| 1004 static NvError NvRmDfsSetLowVoltageThreshold_dispatch_( void *InBuffer, NvU32 In
Size, void *OutBuffer, NvU32 OutSize, NvDispatchCtx* Ctx ) |
| 1005 { |
| 1006 NvError err_ = NvSuccess; |
| 1007 NvRmDfsSetLowVoltageThreshold_in *p_in; |
| 1008 |
| 1009 p_in = (NvRmDfsSetLowVoltageThreshold_in *)InBuffer; |
| 1010 |
| 1011 |
| 1012 NvRmDfsSetLowVoltageThreshold( p_in->hRmDeviceHandle, p_in->RailId, p_in->Lo
wMv ); |
| 1013 |
| 1014 return err_; |
| 1015 } |
| 1016 |
| 1017 static NvError NvRmDfsGetLowVoltageThreshold_dispatch_( void *InBuffer, NvU32 In
Size, void *OutBuffer, NvU32 OutSize, NvDispatchCtx* Ctx ) |
| 1018 { |
| 1019 NvError err_ = NvSuccess; |
| 1020 NvRmDfsGetLowVoltageThreshold_in *p_in; |
| 1021 NvRmDfsGetLowVoltageThreshold_out *p_out; |
| 1022 |
| 1023 p_in = (NvRmDfsGetLowVoltageThreshold_in *)InBuffer; |
| 1024 p_out = (NvRmDfsGetLowVoltageThreshold_out *)((NvU8 *)OutBuffer + OFFSET(NvR
mDfsGetLowVoltageThreshold_params, out) - OFFSET(NvRmDfsGetLowVoltageThreshold_p
arams, inout)); |
| 1025 |
| 1026 |
| 1027 NvRmDfsGetLowVoltageThreshold( p_in->hRmDeviceHandle, p_in->RailId, &p_out->
pLowMv, &p_out->pPresentMv ); |
| 1028 |
| 1029 return err_; |
| 1030 } |
| 1031 |
| 1032 static NvError NvRmDfsLogBusyGetEntry_dispatch_( void *InBuffer, NvU32 InSize, v
oid *OutBuffer, NvU32 OutSize, NvDispatchCtx* Ctx ) |
| 1033 { |
| 1034 NvError err_ = NvSuccess; |
| 1035 NvRmDfsLogBusyGetEntry_in *p_in; |
| 1036 NvRmDfsLogBusyGetEntry_out *p_out; |
| 1037 |
| 1038 p_in = (NvRmDfsLogBusyGetEntry_in *)InBuffer; |
| 1039 p_out = (NvRmDfsLogBusyGetEntry_out *)((NvU8 *)OutBuffer + OFFSET(NvRmDfsLog
BusyGetEntry_params, out) - OFFSET(NvRmDfsLogBusyGetEntry_params, inout)); |
| 1040 |
| 1041 |
| 1042 p_out->ret_ = NvRmDfsLogBusyGetEntry( p_in->hRmDeviceHandle, p_in->EntryInde
x, &p_out->pSampleIndex, &p_out->pClientId, &p_out->pClientTag, &p_out->pBusyHin
t ); |
| 1043 |
| 1044 return err_; |
| 1045 } |
| 1046 |
| 1047 static NvError NvRmDfsLogStarvationGetEntry_dispatch_( void *InBuffer, NvU32 InS
ize, void *OutBuffer, NvU32 OutSize, NvDispatchCtx* Ctx ) |
| 1048 { |
| 1049 NvError err_ = NvSuccess; |
| 1050 NvRmDfsLogStarvationGetEntry_in *p_in; |
| 1051 NvRmDfsLogStarvationGetEntry_out *p_out; |
| 1052 |
| 1053 p_in = (NvRmDfsLogStarvationGetEntry_in *)InBuffer; |
| 1054 p_out = (NvRmDfsLogStarvationGetEntry_out *)((NvU8 *)OutBuffer + OFFSET(NvRm
DfsLogStarvationGetEntry_params, out) - OFFSET(NvRmDfsLogStarvationGetEntry_para
ms, inout)); |
| 1055 |
| 1056 |
| 1057 p_out->ret_ = NvRmDfsLogStarvationGetEntry( p_in->hRmDeviceHandle, p_in->Ent
ryIndex, &p_out->pSampleIndex, &p_out->pClientId, &p_out->pClientTag, &p_out->pS
tarvationHint ); |
| 1058 |
| 1059 return err_; |
| 1060 } |
| 1061 |
| 1062 static NvError NvRmDfsLogActivityGetEntry_dispatch_( void *InBuffer, NvU32 InSiz
e, void *OutBuffer, NvU32 OutSize, NvDispatchCtx* Ctx ) |
| 1063 { |
| 1064 NvError err_ = NvSuccess; |
| 1065 NvRmDfsLogActivityGetEntry_in *p_in; |
| 1066 NvRmDfsLogActivityGetEntry_out *p_out; |
| 1067 NvU32 *pActiveCyclesList = NULL; |
| 1068 NvRmFreqKHz *pAveragesList = NULL; |
| 1069 NvRmFreqKHz *pFrequenciesList = NULL; |
| 1070 |
| 1071 p_in = (NvRmDfsLogActivityGetEntry_in *)InBuffer; |
| 1072 p_out = (NvRmDfsLogActivityGetEntry_out *)((NvU8 *)OutBuffer + OFFSET(NvRmDf
sLogActivityGetEntry_params, out) - OFFSET(NvRmDfsLogActivityGetEntry_params, in
out)); |
| 1073 |
| 1074 if( p_in->LogDomainsCount && p_in->pActiveCyclesList ) |
| 1075 { |
| 1076 pActiveCyclesList = (NvU32 *)NvOsAlloc( p_in->LogDomainsCount * sizeof(
NvU32 ) ); |
| 1077 if( !pActiveCyclesList ) |
| 1078 { |
| 1079 err_ = NvError_InsufficientMemory; |
| 1080 goto clean; |
| 1081 } |
| 1082 } |
| 1083 if( p_in->LogDomainsCount && p_in->pAveragesList ) |
| 1084 { |
| 1085 pAveragesList = (NvRmFreqKHz *)NvOsAlloc( p_in->LogDomainsCount * sizeo
f( NvRmFreqKHz ) ); |
| 1086 if( !pAveragesList ) |
| 1087 { |
| 1088 err_ = NvError_InsufficientMemory; |
| 1089 goto clean; |
| 1090 } |
| 1091 } |
| 1092 if( p_in->LogDomainsCount && p_in->pFrequenciesList ) |
| 1093 { |
| 1094 pFrequenciesList = (NvRmFreqKHz *)NvOsAlloc( p_in->LogDomainsCount * si
zeof( NvRmFreqKHz ) ); |
| 1095 if( !pFrequenciesList ) |
| 1096 { |
| 1097 err_ = NvError_InsufficientMemory; |
| 1098 goto clean; |
| 1099 } |
| 1100 } |
| 1101 |
| 1102 p_out->ret_ = NvRmDfsLogActivityGetEntry( p_in->hRmDeviceHandle, p_in->Entry
Index, p_in->LogDomainsCount, &p_out->pIntervalMs, &p_out->pLp2TimeMs, pActiveCy
clesList, pAveragesList, pFrequenciesList ); |
| 1103 |
| 1104 if(p_in->pActiveCyclesList && pActiveCyclesList) |
| 1105 { |
| 1106 err_ = NvOsCopyOut( p_in->pActiveCyclesList, pActiveCyclesList, p_in->Lo
gDomainsCount * sizeof( NvU32 ) ); |
| 1107 if( err_ != NvSuccess ) |
| 1108 { |
| 1109 err_ = NvError_BadParameter; |
| 1110 } |
| 1111 } |
| 1112 if(p_in->pAveragesList && pAveragesList) |
| 1113 { |
| 1114 err_ = NvOsCopyOut( p_in->pAveragesList, pAveragesList, p_in->LogDomains
Count * sizeof( NvRmFreqKHz ) ); |
| 1115 if( err_ != NvSuccess ) |
| 1116 { |
| 1117 err_ = NvError_BadParameter; |
| 1118 } |
| 1119 } |
| 1120 if(p_in->pFrequenciesList && pFrequenciesList) |
| 1121 { |
| 1122 err_ = NvOsCopyOut( p_in->pFrequenciesList, pFrequenciesList, p_in->LogD
omainsCount * sizeof( NvRmFreqKHz ) ); |
| 1123 if( err_ != NvSuccess ) |
| 1124 { |
| 1125 err_ = NvError_BadParameter; |
| 1126 } |
| 1127 } |
| 1128 clean: |
| 1129 NvOsFree( pActiveCyclesList ); |
| 1130 NvOsFree( pAveragesList ); |
| 1131 NvOsFree( pFrequenciesList ); |
| 1132 return err_; |
| 1133 } |
| 1134 |
| 1135 static NvError NvRmDfsLogGetMeanFrequencies_dispatch_( void *InBuffer, NvU32 InS
ize, void *OutBuffer, NvU32 OutSize, NvDispatchCtx* Ctx ) |
| 1136 { |
| 1137 NvError err_ = NvSuccess; |
| 1138 NvRmDfsLogGetMeanFrequencies_in *p_in; |
| 1139 NvRmDfsLogGetMeanFrequencies_out *p_out; |
| 1140 NvRmFreqKHz *pLogMeanFreqList = NULL; |
| 1141 |
| 1142 p_in = (NvRmDfsLogGetMeanFrequencies_in *)InBuffer; |
| 1143 p_out = (NvRmDfsLogGetMeanFrequencies_out *)((NvU8 *)OutBuffer + OFFSET(NvRm
DfsLogGetMeanFrequencies_params, out) - OFFSET(NvRmDfsLogGetMeanFrequencies_para
ms, inout)); |
| 1144 |
| 1145 if( p_in->LogMeanFreqListCount && p_in->pLogMeanFreqList ) |
| 1146 { |
| 1147 pLogMeanFreqList = (NvRmFreqKHz *)NvOsAlloc( p_in->LogMeanFreqListCount
* sizeof( NvRmFreqKHz ) ); |
| 1148 if( !pLogMeanFreqList ) |
| 1149 { |
| 1150 err_ = NvError_InsufficientMemory; |
| 1151 goto clean; |
| 1152 } |
| 1153 } |
| 1154 |
| 1155 p_out->ret_ = NvRmDfsLogGetMeanFrequencies( p_in->hRmDeviceHandle, p_in->Log
MeanFreqListCount, pLogMeanFreqList, &p_out->pLogLp2TimeMs, &p_out->pLogLp2Entri
es ); |
| 1156 |
| 1157 if(p_in->pLogMeanFreqList && pLogMeanFreqList) |
| 1158 { |
| 1159 err_ = NvOsCopyOut( p_in->pLogMeanFreqList, pLogMeanFreqList, p_in->LogM
eanFreqListCount * sizeof( NvRmFreqKHz ) ); |
| 1160 if( err_ != NvSuccess ) |
| 1161 { |
| 1162 err_ = NvError_BadParameter; |
| 1163 } |
| 1164 } |
| 1165 clean: |
| 1166 NvOsFree( pLogMeanFreqList ); |
| 1167 return err_; |
| 1168 } |
| 1169 |
| 1170 static NvError NvRmDfsLogStart_dispatch_( void *InBuffer, NvU32 InSize, void *Ou
tBuffer, NvU32 OutSize, NvDispatchCtx* Ctx ) |
| 1171 { |
| 1172 NvError err_ = NvSuccess; |
| 1173 NvRmDfsLogStart_in *p_in; |
| 1174 |
| 1175 p_in = (NvRmDfsLogStart_in *)InBuffer; |
| 1176 |
| 1177 |
| 1178 NvRmDfsLogStart( p_in->hRmDeviceHandle ); |
| 1179 |
| 1180 return err_; |
| 1181 } |
| 1182 |
| 1183 static NvError NvRmDfsGetProfileData_dispatch_( void *InBuffer, NvU32 InSize, vo
id *OutBuffer, NvU32 OutSize, NvDispatchCtx* Ctx ) |
| 1184 { |
| 1185 NvError err_ = NvSuccess; |
| 1186 NvRmDfsGetProfileData_in *p_in; |
| 1187 NvRmDfsGetProfileData_out *p_out; |
| 1188 NvU32 *pSamplesNoList = NULL; |
| 1189 NvU32 *pProfileTimeUsList = NULL; |
| 1190 |
| 1191 p_in = (NvRmDfsGetProfileData_in *)InBuffer; |
| 1192 p_out = (NvRmDfsGetProfileData_out *)((NvU8 *)OutBuffer + OFFSET(NvRmDfsGetP
rofileData_params, out) - OFFSET(NvRmDfsGetProfileData_params, inout)); |
| 1193 |
| 1194 if( p_in->DfsProfileCount && p_in->pSamplesNoList ) |
| 1195 { |
| 1196 pSamplesNoList = (NvU32 *)NvOsAlloc( p_in->DfsProfileCount * sizeof( Nv
U32 ) ); |
| 1197 if( !pSamplesNoList ) |
| 1198 { |
| 1199 err_ = NvError_InsufficientMemory; |
| 1200 goto clean; |
| 1201 } |
| 1202 } |
| 1203 if( p_in->DfsProfileCount && p_in->pProfileTimeUsList ) |
| 1204 { |
| 1205 pProfileTimeUsList = (NvU32 *)NvOsAlloc( p_in->DfsProfileCount * sizeof
( NvU32 ) ); |
| 1206 if( !pProfileTimeUsList ) |
| 1207 { |
| 1208 err_ = NvError_InsufficientMemory; |
| 1209 goto clean; |
| 1210 } |
| 1211 } |
| 1212 |
| 1213 p_out->ret_ = NvRmDfsGetProfileData( p_in->hRmDeviceHandle, p_in->DfsProfile
Count, pSamplesNoList, pProfileTimeUsList, &p_out->pDfsPeriodUs ); |
| 1214 |
| 1215 if(p_in->pSamplesNoList && pSamplesNoList) |
| 1216 { |
| 1217 err_ = NvOsCopyOut( p_in->pSamplesNoList, pSamplesNoList, p_in->DfsProfi
leCount * sizeof( NvU32 ) ); |
| 1218 if( err_ != NvSuccess ) |
| 1219 { |
| 1220 err_ = NvError_BadParameter; |
| 1221 } |
| 1222 } |
| 1223 if(p_in->pProfileTimeUsList && pProfileTimeUsList) |
| 1224 { |
| 1225 err_ = NvOsCopyOut( p_in->pProfileTimeUsList, pProfileTimeUsList, p_in->
DfsProfileCount * sizeof( NvU32 ) ); |
| 1226 if( err_ != NvSuccess ) |
| 1227 { |
| 1228 err_ = NvError_BadParameter; |
| 1229 } |
| 1230 } |
| 1231 clean: |
| 1232 NvOsFree( pSamplesNoList ); |
| 1233 NvOsFree( pProfileTimeUsList ); |
| 1234 return err_; |
| 1235 } |
| 1236 |
| 1237 static NvError NvRmDfsSetAvHighCorner_dispatch_( void *InBuffer, NvU32 InSize, v
oid *OutBuffer, NvU32 OutSize, NvDispatchCtx* Ctx ) |
| 1238 { |
| 1239 NvError err_ = NvSuccess; |
| 1240 NvRmDfsSetAvHighCorner_in *p_in; |
| 1241 NvRmDfsSetAvHighCorner_out *p_out; |
| 1242 |
| 1243 p_in = (NvRmDfsSetAvHighCorner_in *)InBuffer; |
| 1244 p_out = (NvRmDfsSetAvHighCorner_out *)((NvU8 *)OutBuffer + OFFSET(NvRmDfsSet
AvHighCorner_params, out) - OFFSET(NvRmDfsSetAvHighCorner_params, inout)); |
| 1245 |
| 1246 |
| 1247 p_out->ret_ = NvRmDfsSetAvHighCorner( p_in->hRmDeviceHandle, p_in->DfsSystem
HighKHz, p_in->DfsAvpHighKHz, p_in->DfsVpipeHighKHz ); |
| 1248 |
| 1249 return err_; |
| 1250 } |
| 1251 |
| 1252 static NvError NvRmDfsSetCpuEmcHighCorner_dispatch_( void *InBuffer, NvU32 InSiz
e, void *OutBuffer, NvU32 OutSize, NvDispatchCtx* Ctx ) |
| 1253 { |
| 1254 NvError err_ = NvSuccess; |
| 1255 NvRmDfsSetCpuEmcHighCorner_in *p_in; |
| 1256 NvRmDfsSetCpuEmcHighCorner_out *p_out; |
| 1257 |
| 1258 p_in = (NvRmDfsSetCpuEmcHighCorner_in *)InBuffer; |
| 1259 p_out = (NvRmDfsSetCpuEmcHighCorner_out *)((NvU8 *)OutBuffer + OFFSET(NvRmDf
sSetCpuEmcHighCorner_params, out) - OFFSET(NvRmDfsSetCpuEmcHighCorner_params, in
out)); |
| 1260 |
| 1261 |
| 1262 p_out->ret_ = NvRmDfsSetCpuEmcHighCorner( p_in->hRmDeviceHandle, p_in->DfsCp
uHighKHz, p_in->DfsEmcHighKHz ); |
| 1263 |
| 1264 return err_; |
| 1265 } |
| 1266 |
| 1267 static NvError NvRmDfsSetEmcEnvelope_dispatch_( void *InBuffer, NvU32 InSize, vo
id *OutBuffer, NvU32 OutSize, NvDispatchCtx* Ctx ) |
| 1268 { |
| 1269 NvError err_ = NvSuccess; |
| 1270 NvRmDfsSetEmcEnvelope_in *p_in; |
| 1271 NvRmDfsSetEmcEnvelope_out *p_out; |
| 1272 |
| 1273 p_in = (NvRmDfsSetEmcEnvelope_in *)InBuffer; |
| 1274 p_out = (NvRmDfsSetEmcEnvelope_out *)((NvU8 *)OutBuffer + OFFSET(NvRmDfsSetE
mcEnvelope_params, out) - OFFSET(NvRmDfsSetEmcEnvelope_params, inout)); |
| 1275 |
| 1276 |
| 1277 p_out->ret_ = NvRmDfsSetEmcEnvelope( p_in->hRmDeviceHandle, p_in->DfsEmcLowC
ornerKHz, p_in->DfsEmcHighCornerKHz ); |
| 1278 |
| 1279 return err_; |
| 1280 } |
| 1281 |
| 1282 static NvError NvRmDfsSetCpuEnvelope_dispatch_( void *InBuffer, NvU32 InSize, vo
id *OutBuffer, NvU32 OutSize, NvDispatchCtx* Ctx ) |
| 1283 { |
| 1284 NvError err_ = NvSuccess; |
| 1285 NvRmDfsSetCpuEnvelope_in *p_in; |
| 1286 NvRmDfsSetCpuEnvelope_out *p_out; |
| 1287 |
| 1288 p_in = (NvRmDfsSetCpuEnvelope_in *)InBuffer; |
| 1289 p_out = (NvRmDfsSetCpuEnvelope_out *)((NvU8 *)OutBuffer + OFFSET(NvRmDfsSetC
puEnvelope_params, out) - OFFSET(NvRmDfsSetCpuEnvelope_params, inout)); |
| 1290 |
| 1291 |
| 1292 p_out->ret_ = NvRmDfsSetCpuEnvelope( p_in->hRmDeviceHandle, p_in->DfsCpuLowC
ornerKHz, p_in->DfsCpuHighCornerKHz ); |
| 1293 |
| 1294 return err_; |
| 1295 } |
| 1296 |
| 1297 static NvError NvRmDfsSetTarget_dispatch_( void *InBuffer, NvU32 InSize, void *O
utBuffer, NvU32 OutSize, NvDispatchCtx* Ctx ) |
| 1298 { |
| 1299 NvError err_ = NvSuccess; |
| 1300 NvRmDfsSetTarget_in *p_in; |
| 1301 NvRmDfsSetTarget_out *p_out; |
| 1302 NvRmFreqKHz *pDfsTargetFreqList = NULL; |
| 1303 |
| 1304 p_in = (NvRmDfsSetTarget_in *)InBuffer; |
| 1305 p_out = (NvRmDfsSetTarget_out *)((NvU8 *)OutBuffer + OFFSET(NvRmDfsSetTarget
_params, out) - OFFSET(NvRmDfsSetTarget_params, inout)); |
| 1306 |
| 1307 if( p_in->DfsFreqListCount && p_in->pDfsTargetFreqList ) |
| 1308 { |
| 1309 pDfsTargetFreqList = (NvRmFreqKHz *)NvOsAlloc( p_in->DfsFreqListCount *
sizeof( NvRmFreqKHz ) ); |
| 1310 if( !pDfsTargetFreqList ) |
| 1311 { |
| 1312 err_ = NvError_InsufficientMemory; |
| 1313 goto clean; |
| 1314 } |
| 1315 if( p_in->pDfsTargetFreqList ) |
| 1316 { |
| 1317 err_ = NvOsCopyIn( pDfsTargetFreqList, p_in->pDfsTargetFreqList, p_i
n->DfsFreqListCount * sizeof( NvRmFreqKHz ) ); |
| 1318 if( err_ != NvSuccess ) |
| 1319 { |
| 1320 err_ = NvError_BadParameter; |
| 1321 goto clean; |
| 1322 } |
| 1323 } |
| 1324 } |
| 1325 |
| 1326 p_out->ret_ = NvRmDfsSetTarget( p_in->hRmDeviceHandle, p_in->DfsFreqListCoun
t, pDfsTargetFreqList ); |
| 1327 |
| 1328 clean: |
| 1329 NvOsFree( pDfsTargetFreqList ); |
| 1330 return err_; |
| 1331 } |
| 1332 |
| 1333 static NvError NvRmDfsSetLowCorner_dispatch_( void *InBuffer, NvU32 InSize, void
*OutBuffer, NvU32 OutSize, NvDispatchCtx* Ctx ) |
| 1334 { |
| 1335 NvError err_ = NvSuccess; |
| 1336 NvRmDfsSetLowCorner_in *p_in; |
| 1337 NvRmDfsSetLowCorner_out *p_out; |
| 1338 NvRmFreqKHz *pDfsLowFreqList = NULL; |
| 1339 |
| 1340 p_in = (NvRmDfsSetLowCorner_in *)InBuffer; |
| 1341 p_out = (NvRmDfsSetLowCorner_out *)((NvU8 *)OutBuffer + OFFSET(NvRmDfsSetLow
Corner_params, out) - OFFSET(NvRmDfsSetLowCorner_params, inout)); |
| 1342 |
| 1343 if( p_in->DfsFreqListCount && p_in->pDfsLowFreqList ) |
| 1344 { |
| 1345 pDfsLowFreqList = (NvRmFreqKHz *)NvOsAlloc( p_in->DfsFreqListCount * si
zeof( NvRmFreqKHz ) ); |
| 1346 if( !pDfsLowFreqList ) |
| 1347 { |
| 1348 err_ = NvError_InsufficientMemory; |
| 1349 goto clean; |
| 1350 } |
| 1351 if( p_in->pDfsLowFreqList ) |
| 1352 { |
| 1353 err_ = NvOsCopyIn( pDfsLowFreqList, p_in->pDfsLowFreqList, p_in->Dfs
FreqListCount * sizeof( NvRmFreqKHz ) ); |
| 1354 if( err_ != NvSuccess ) |
| 1355 { |
| 1356 err_ = NvError_BadParameter; |
| 1357 goto clean; |
| 1358 } |
| 1359 } |
| 1360 } |
| 1361 |
| 1362 p_out->ret_ = NvRmDfsSetLowCorner( p_in->hRmDeviceHandle, p_in->DfsFreqListC
ount, pDfsLowFreqList ); |
| 1363 |
| 1364 clean: |
| 1365 NvOsFree( pDfsLowFreqList ); |
| 1366 return err_; |
| 1367 } |
| 1368 |
| 1369 static NvError NvRmDfsSetState_dispatch_( void *InBuffer, NvU32 InSize, void *Ou
tBuffer, NvU32 OutSize, NvDispatchCtx* Ctx ) |
| 1370 { |
| 1371 NvError err_ = NvSuccess; |
| 1372 NvRmDfsSetState_in *p_in; |
| 1373 NvRmDfsSetState_out *p_out; |
| 1374 |
| 1375 p_in = (NvRmDfsSetState_in *)InBuffer; |
| 1376 p_out = (NvRmDfsSetState_out *)((NvU8 *)OutBuffer + OFFSET(NvRmDfsSetState_p
arams, out) - OFFSET(NvRmDfsSetState_params, inout)); |
| 1377 |
| 1378 |
| 1379 p_out->ret_ = NvRmDfsSetState( p_in->hRmDeviceHandle, p_in->NewDfsRunState )
; |
| 1380 |
| 1381 return err_; |
| 1382 } |
| 1383 |
| 1384 static NvError NvRmDfsGetClockUtilization_dispatch_( void *InBuffer, NvU32 InSiz
e, void *OutBuffer, NvU32 OutSize, NvDispatchCtx* Ctx ) |
| 1385 { |
| 1386 NvError err_ = NvSuccess; |
| 1387 NvRmDfsGetClockUtilization_in *p_in; |
| 1388 NvRmDfsGetClockUtilization_out *p_out; |
| 1389 |
| 1390 p_in = (NvRmDfsGetClockUtilization_in *)InBuffer; |
| 1391 p_out = (NvRmDfsGetClockUtilization_out *)((NvU8 *)OutBuffer + OFFSET(NvRmDf
sGetClockUtilization_params, out) - OFFSET(NvRmDfsGetClockUtilization_params, in
out)); |
| 1392 |
| 1393 |
| 1394 p_out->ret_ = NvRmDfsGetClockUtilization( p_in->hRmDeviceHandle, p_in->Clock
Id, &p_out->pClockUsage ); |
| 1395 |
| 1396 return err_; |
| 1397 } |
| 1398 |
| 1399 static NvError NvRmDfsGetState_dispatch_( void *InBuffer, NvU32 InSize, void *Ou
tBuffer, NvU32 OutSize, NvDispatchCtx* Ctx ) |
| 1400 { |
| 1401 NvError err_ = NvSuccess; |
| 1402 NvRmDfsGetState_in *p_in; |
| 1403 NvRmDfsGetState_out *p_out; |
| 1404 |
| 1405 p_in = (NvRmDfsGetState_in *)InBuffer; |
| 1406 p_out = (NvRmDfsGetState_out *)((NvU8 *)OutBuffer + OFFSET(NvRmDfsGetState_p
arams, out) - OFFSET(NvRmDfsGetState_params, inout)); |
| 1407 |
| 1408 |
| 1409 p_out->ret_ = NvRmDfsGetState( p_in->hRmDeviceHandle ); |
| 1410 |
| 1411 return err_; |
| 1412 } |
| 1413 |
| 1414 static NvError NvRmPowerActivityHint_dispatch_( void *InBuffer, NvU32 InSize, vo
id *OutBuffer, NvU32 OutSize, NvDispatchCtx* Ctx ) |
| 1415 { |
| 1416 NvError err_ = NvSuccess; |
| 1417 NvRmPowerActivityHint_in *p_in; |
| 1418 NvRmPowerActivityHint_out *p_out; |
| 1419 |
| 1420 p_in = (NvRmPowerActivityHint_in *)InBuffer; |
| 1421 p_out = (NvRmPowerActivityHint_out *)((NvU8 *)OutBuffer + OFFSET(NvRmPowerAc
tivityHint_params, out) - OFFSET(NvRmPowerActivityHint_params, inout)); |
| 1422 |
| 1423 |
| 1424 p_out->ret_ = NvRmPowerActivityHint( p_in->hRmDeviceHandle, p_in->ModuleId,
p_in->ClientId, p_in->ActivityDurationMs ); |
| 1425 |
| 1426 return err_; |
| 1427 } |
| 1428 |
| 1429 static NvError NvRmPowerStarvationHintMulti_dispatch_( void *InBuffer, NvU32 InS
ize, void *OutBuffer, NvU32 OutSize, NvDispatchCtx* Ctx ) |
| 1430 { |
| 1431 NvError err_ = NvSuccess; |
| 1432 NvRmPowerStarvationHintMulti_in *p_in; |
| 1433 NvRmPowerStarvationHintMulti_out *p_out; |
| 1434 NvRmDfsStarvationHint *pMultiHint = NULL; |
| 1435 |
| 1436 p_in = (NvRmPowerStarvationHintMulti_in *)InBuffer; |
| 1437 p_out = (NvRmPowerStarvationHintMulti_out *)((NvU8 *)OutBuffer + OFFSET(NvRm
PowerStarvationHintMulti_params, out) - OFFSET(NvRmPowerStarvationHintMulti_para
ms, inout)); |
| 1438 |
| 1439 if( p_in->NumHints && p_in->pMultiHint ) |
| 1440 { |
| 1441 pMultiHint = (NvRmDfsStarvationHint *)NvOsAlloc( p_in->NumHints * sizeo
f( NvRmDfsStarvationHint ) ); |
| 1442 if( !pMultiHint ) |
| 1443 { |
| 1444 err_ = NvError_InsufficientMemory; |
| 1445 goto clean; |
| 1446 } |
| 1447 if( p_in->pMultiHint ) |
| 1448 { |
| 1449 err_ = NvOsCopyIn( pMultiHint, p_in->pMultiHint, p_in->NumHints * si
zeof( NvRmDfsStarvationHint ) ); |
| 1450 if( err_ != NvSuccess ) |
| 1451 { |
| 1452 err_ = NvError_BadParameter; |
| 1453 goto clean; |
| 1454 } |
| 1455 } |
| 1456 } |
| 1457 |
| 1458 p_out->ret_ = NvRmPowerStarvationHintMulti( p_in->hRmDeviceHandle, p_in->Cli
entId, pMultiHint, p_in->NumHints ); |
| 1459 |
| 1460 clean: |
| 1461 NvOsFree( pMultiHint ); |
| 1462 return err_; |
| 1463 } |
| 1464 |
| 1465 static NvError NvRmPowerStarvationHint_dispatch_( void *InBuffer, NvU32 InSize,
void *OutBuffer, NvU32 OutSize, NvDispatchCtx* Ctx ) |
| 1466 { |
| 1467 NvError err_ = NvSuccess; |
| 1468 NvRmPowerStarvationHint_in *p_in; |
| 1469 NvRmPowerStarvationHint_out *p_out; |
| 1470 |
| 1471 p_in = (NvRmPowerStarvationHint_in *)InBuffer; |
| 1472 p_out = (NvRmPowerStarvationHint_out *)((NvU8 *)OutBuffer + OFFSET(NvRmPower
StarvationHint_params, out) - OFFSET(NvRmPowerStarvationHint_params, inout)); |
| 1473 |
| 1474 |
| 1475 p_out->ret_ = NvRmPowerStarvationHint( p_in->hRmDeviceHandle, p_in->ClockId,
p_in->ClientId, p_in->Starving ); |
| 1476 |
| 1477 return err_; |
| 1478 } |
| 1479 |
| 1480 static NvError NvRmPowerBusyHintMulti_dispatch_( void *InBuffer, NvU32 InSize, v
oid *OutBuffer, NvU32 OutSize, NvDispatchCtx* Ctx ) |
| 1481 { |
| 1482 NvError err_ = NvSuccess; |
| 1483 NvRmPowerBusyHintMulti_in *p_in; |
| 1484 NvRmPowerBusyHintMulti_out *p_out; |
| 1485 NvRmDfsBusyHint *pMultiHint = NULL; |
| 1486 |
| 1487 p_in = (NvRmPowerBusyHintMulti_in *)InBuffer; |
| 1488 p_out = (NvRmPowerBusyHintMulti_out *)((NvU8 *)OutBuffer + OFFSET(NvRmPowerB
usyHintMulti_params, out) - OFFSET(NvRmPowerBusyHintMulti_params, inout)); |
| 1489 |
| 1490 if( p_in->NumHints && p_in->pMultiHint ) |
| 1491 { |
| 1492 pMultiHint = (NvRmDfsBusyHint *)NvOsAlloc( p_in->NumHints * sizeof( NvR
mDfsBusyHint ) ); |
| 1493 if( !pMultiHint ) |
| 1494 { |
| 1495 err_ = NvError_InsufficientMemory; |
| 1496 goto clean; |
| 1497 } |
| 1498 if( p_in->pMultiHint ) |
| 1499 { |
| 1500 err_ = NvOsCopyIn( pMultiHint, p_in->pMultiHint, p_in->NumHints * si
zeof( NvRmDfsBusyHint ) ); |
| 1501 if( err_ != NvSuccess ) |
| 1502 { |
| 1503 err_ = NvError_BadParameter; |
| 1504 goto clean; |
| 1505 } |
| 1506 } |
| 1507 } |
| 1508 |
| 1509 p_out->ret_ = NvRmPowerBusyHintMulti( p_in->hRmDeviceHandle, p_in->ClientId,
pMultiHint, p_in->NumHints, p_in->Mode ); |
| 1510 |
| 1511 clean: |
| 1512 NvOsFree( pMultiHint ); |
| 1513 return err_; |
| 1514 } |
| 1515 |
| 1516 static NvError NvRmPowerBusyHint_dispatch_( void *InBuffer, NvU32 InSize, void *
OutBuffer, NvU32 OutSize, NvDispatchCtx* Ctx ) |
| 1517 { |
| 1518 NvError err_ = NvSuccess; |
| 1519 NvRmPowerBusyHint_in *p_in; |
| 1520 NvRmPowerBusyHint_out *p_out; |
| 1521 |
| 1522 p_in = (NvRmPowerBusyHint_in *)InBuffer; |
| 1523 p_out = (NvRmPowerBusyHint_out *)((NvU8 *)OutBuffer + OFFSET(NvRmPowerBusyHi
nt_params, out) - OFFSET(NvRmPowerBusyHint_params, inout)); |
| 1524 |
| 1525 |
| 1526 p_out->ret_ = NvRmPowerBusyHint( p_in->hRmDeviceHandle, p_in->ClockId, p_in-
>ClientId, p_in->BoostDurationMs, p_in->BoostKHz ); |
| 1527 |
| 1528 return err_; |
| 1529 } |
| 1530 |
| 1531 static NvError NvRmListPowerAwareModules_dispatch_( void *InBuffer, NvU32 InSize
, void *OutBuffer, NvU32 OutSize, NvDispatchCtx* Ctx ) |
| 1532 { |
| 1533 NvError err_ = NvSuccess; |
| 1534 NvRmListPowerAwareModules_in *p_in; |
| 1535 NvRmListPowerAwareModules_inout *p_inout; |
| 1536 NvRmListPowerAwareModules_inout inout; |
| 1537 NvRmModuleID *pIdList = NULL; |
| 1538 NvBool *pActiveList = NULL; |
| 1539 |
| 1540 p_in = (NvRmListPowerAwareModules_in *)InBuffer; |
| 1541 p_inout = (NvRmListPowerAwareModules_inout *)((NvU8 *)InBuffer + OFFSET(NvRm
ListPowerAwareModules_params, inout)); |
| 1542 |
| 1543 (void)inout; |
| 1544 inout.pListSize = p_inout->pListSize; |
| 1545 if( p_inout->pListSize && p_in->pIdList ) |
| 1546 { |
| 1547 pIdList = (NvRmModuleID *)NvOsAlloc( p_inout->pListSize * sizeof( NvRmM
oduleID ) ); |
| 1548 if( !pIdList ) |
| 1549 { |
| 1550 err_ = NvError_InsufficientMemory; |
| 1551 goto clean; |
| 1552 } |
| 1553 } |
| 1554 if( p_inout->pListSize && p_in->pActiveList ) |
| 1555 { |
| 1556 pActiveList = (NvBool *)NvOsAlloc( p_inout->pListSize * sizeof( NvBool
) ); |
| 1557 if( !pActiveList ) |
| 1558 { |
| 1559 err_ = NvError_InsufficientMemory; |
| 1560 goto clean; |
| 1561 } |
| 1562 } |
| 1563 |
| 1564 NvRmListPowerAwareModules( p_in->hRmDeviceHandle, &inout.pListSize, pIdList,
pActiveList ); |
| 1565 |
| 1566 |
| 1567 p_inout = (NvRmListPowerAwareModules_inout *)OutBuffer; |
| 1568 p_inout->pListSize = inout.pListSize; |
| 1569 if(p_in->pIdList && pIdList) |
| 1570 { |
| 1571 err_ = NvOsCopyOut( p_in->pIdList, pIdList, p_inout->pListSize * sizeof(
NvRmModuleID ) ); |
| 1572 if( err_ != NvSuccess ) |
| 1573 { |
| 1574 err_ = NvError_BadParameter; |
| 1575 } |
| 1576 } |
| 1577 if(p_in->pActiveList && pActiveList) |
| 1578 { |
| 1579 err_ = NvOsCopyOut( p_in->pActiveList, pActiveList, p_inout->pListSize *
sizeof( NvBool ) ); |
| 1580 if( err_ != NvSuccess ) |
| 1581 { |
| 1582 err_ = NvError_BadParameter; |
| 1583 } |
| 1584 } |
| 1585 clean: |
| 1586 NvOsFree( pIdList ); |
| 1587 NvOsFree( pActiveList ); |
| 1588 return err_; |
| 1589 } |
| 1590 |
| 1591 static NvError NvRmPowerVoltageControl_dispatch_( void *InBuffer, NvU32 InSize,
void *OutBuffer, NvU32 OutSize, NvDispatchCtx* Ctx ) |
| 1592 { |
| 1593 NvError err_ = NvSuccess; |
| 1594 NvRmPowerVoltageControl_in *p_in; |
| 1595 NvRmPowerVoltageControl_out *p_out; |
| 1596 NvRmMilliVolts *PrefVoltageList = NULL; |
| 1597 |
| 1598 p_in = (NvRmPowerVoltageControl_in *)InBuffer; |
| 1599 p_out = (NvRmPowerVoltageControl_out *)((NvU8 *)OutBuffer + OFFSET(NvRmPower
VoltageControl_params, out) - OFFSET(NvRmPowerVoltageControl_params, inout)); |
| 1600 |
| 1601 if( p_in->PrefVoltageListCount && p_in->PrefVoltageList ) |
| 1602 { |
| 1603 PrefVoltageList = (NvRmMilliVolts *)NvOsAlloc( p_in->PrefVoltageListCou
nt * sizeof( NvRmMilliVolts ) ); |
| 1604 if( !PrefVoltageList ) |
| 1605 { |
| 1606 err_ = NvError_InsufficientMemory; |
| 1607 goto clean; |
| 1608 } |
| 1609 if( p_in->PrefVoltageList ) |
| 1610 { |
| 1611 err_ = NvOsCopyIn( PrefVoltageList, p_in->PrefVoltageList, p_in->Pre
fVoltageListCount * sizeof( NvRmMilliVolts ) ); |
| 1612 if( err_ != NvSuccess ) |
| 1613 { |
| 1614 err_ = NvError_BadParameter; |
| 1615 goto clean; |
| 1616 } |
| 1617 } |
| 1618 } |
| 1619 |
| 1620 p_out->ret_ = NvRmPowerVoltageControl( p_in->hRmDeviceHandle, p_in->ModuleId
, p_in->ClientId, p_in->MinVolts, p_in->MaxVolts, PrefVoltageList, p_in->PrefVol
tageListCount, &p_out->CurrentVolts ); |
| 1621 |
| 1622 clean: |
| 1623 NvOsFree( PrefVoltageList ); |
| 1624 return err_; |
| 1625 } |
| 1626 |
| 1627 static NvError NvRmPowerModuleClockControl_dispatch_( void *InBuffer, NvU32 InSi
ze, void *OutBuffer, NvU32 OutSize, NvDispatchCtx* Ctx ) |
| 1628 { |
| 1629 NvError err_ = NvSuccess; |
| 1630 NvRmPowerModuleClockControl_in *p_in; |
| 1631 NvRmPowerModuleClockControl_out *p_out; |
| 1632 |
| 1633 p_in = (NvRmPowerModuleClockControl_in *)InBuffer; |
| 1634 p_out = (NvRmPowerModuleClockControl_out *)((NvU8 *)OutBuffer + OFFSET(NvRmP
owerModuleClockControl_params, out) - OFFSET(NvRmPowerModuleClockControl_params,
inout)); |
| 1635 |
| 1636 |
| 1637 p_out->ret_ = NvRmPowerModuleClockControl( p_in->hRmDeviceHandle, p_in->Modu
leId, p_in->ClientId, p_in->Enable ); |
| 1638 |
| 1639 return err_; |
| 1640 } |
| 1641 |
| 1642 static NvError NvRmPowerModuleClockConfig_dispatch_( void *InBuffer, NvU32 InSiz
e, void *OutBuffer, NvU32 OutSize, NvDispatchCtx* Ctx ) |
| 1643 { |
| 1644 NvError err_ = NvSuccess; |
| 1645 NvRmPowerModuleClockConfig_in *p_in; |
| 1646 NvRmPowerModuleClockConfig_out *p_out; |
| 1647 NvRmFreqKHz *PrefFreqList = NULL; |
| 1648 |
| 1649 p_in = (NvRmPowerModuleClockConfig_in *)InBuffer; |
| 1650 p_out = (NvRmPowerModuleClockConfig_out *)((NvU8 *)OutBuffer + OFFSET(NvRmPo
werModuleClockConfig_params, out) - OFFSET(NvRmPowerModuleClockConfig_params, in
out)); |
| 1651 |
| 1652 if( p_in->PrefFreqListCount && p_in->PrefFreqList ) |
| 1653 { |
| 1654 PrefFreqList = (NvRmFreqKHz *)NvOsAlloc( p_in->PrefFreqListCount * size
of( NvRmFreqKHz ) ); |
| 1655 if( !PrefFreqList ) |
| 1656 { |
| 1657 err_ = NvError_InsufficientMemory; |
| 1658 goto clean; |
| 1659 } |
| 1660 if( p_in->PrefFreqList ) |
| 1661 { |
| 1662 err_ = NvOsCopyIn( PrefFreqList, p_in->PrefFreqList, p_in->PrefFreqL
istCount * sizeof( NvRmFreqKHz ) ); |
| 1663 if( err_ != NvSuccess ) |
| 1664 { |
| 1665 err_ = NvError_BadParameter; |
| 1666 goto clean; |
| 1667 } |
| 1668 } |
| 1669 } |
| 1670 |
| 1671 p_out->ret_ = NvRmPowerModuleClockConfig( p_in->hRmDeviceHandle, p_in->Modul
eId, p_in->ClientId, p_in->MinFreq, p_in->MaxFreq, PrefFreqList, p_in->PrefFreqL
istCount, &p_out->CurrentFreq, p_in->flags ); |
| 1672 |
| 1673 clean: |
| 1674 NvOsFree( PrefFreqList ); |
| 1675 return err_; |
| 1676 } |
| 1677 |
| 1678 static NvError NvRmPowerModuleGetMaxFrequency_dispatch_( void *InBuffer, NvU32 I
nSize, void *OutBuffer, NvU32 OutSize, NvDispatchCtx* Ctx ) |
| 1679 { |
| 1680 NvError err_ = NvSuccess; |
| 1681 NvRmPowerModuleGetMaxFrequency_in *p_in; |
| 1682 NvRmPowerModuleGetMaxFrequency_out *p_out; |
| 1683 |
| 1684 p_in = (NvRmPowerModuleGetMaxFrequency_in *)InBuffer; |
| 1685 p_out = (NvRmPowerModuleGetMaxFrequency_out *)((NvU8 *)OutBuffer + OFFSET(Nv
RmPowerModuleGetMaxFrequency_params, out) - OFFSET(NvRmPowerModuleGetMaxFrequenc
y_params, inout)); |
| 1686 |
| 1687 |
| 1688 p_out->ret_ = NvRmPowerModuleGetMaxFrequency( p_in->hRmDeviceHandle, p_in->M
oduleId ); |
| 1689 |
| 1690 return err_; |
| 1691 } |
| 1692 |
| 1693 static NvError NvRmPowerGetPrimaryFrequency_dispatch_( void *InBuffer, NvU32 InS
ize, void *OutBuffer, NvU32 OutSize, NvDispatchCtx* Ctx ) |
| 1694 { |
| 1695 NvError err_ = NvSuccess; |
| 1696 NvRmPowerGetPrimaryFrequency_in *p_in; |
| 1697 NvRmPowerGetPrimaryFrequency_out *p_out; |
| 1698 |
| 1699 p_in = (NvRmPowerGetPrimaryFrequency_in *)InBuffer; |
| 1700 p_out = (NvRmPowerGetPrimaryFrequency_out *)((NvU8 *)OutBuffer + OFFSET(NvRm
PowerGetPrimaryFrequency_params, out) - OFFSET(NvRmPowerGetPrimaryFrequency_para
ms, inout)); |
| 1701 |
| 1702 |
| 1703 p_out->ret_ = NvRmPowerGetPrimaryFrequency( p_in->hRmDeviceHandle ); |
| 1704 |
| 1705 return err_; |
| 1706 } |
| 1707 |
| 1708 static NvError NvRmPowerGetState_dispatch_( void *InBuffer, NvU32 InSize, void *
OutBuffer, NvU32 OutSize, NvDispatchCtx* Ctx ) |
| 1709 { |
| 1710 NvError err_ = NvSuccess; |
| 1711 NvRmPowerGetState_in *p_in; |
| 1712 NvRmPowerGetState_out *p_out; |
| 1713 |
| 1714 p_in = (NvRmPowerGetState_in *)InBuffer; |
| 1715 p_out = (NvRmPowerGetState_out *)((NvU8 *)OutBuffer + OFFSET(NvRmPowerGetSta
te_params, out) - OFFSET(NvRmPowerGetState_params, inout)); |
| 1716 |
| 1717 |
| 1718 p_out->ret_ = NvRmPowerGetState( p_in->hRmDeviceHandle, &p_out->pState ); |
| 1719 |
| 1720 return err_; |
| 1721 } |
| 1722 |
| 1723 static NvError NvRmPowerEventNotify_dispatch_( void *InBuffer, NvU32 InSize, voi
d *OutBuffer, NvU32 OutSize, NvDispatchCtx* Ctx ) |
| 1724 { |
| 1725 NvError err_ = NvSuccess; |
| 1726 NvRmPowerEventNotify_in *p_in; |
| 1727 |
| 1728 p_in = (NvRmPowerEventNotify_in *)InBuffer; |
| 1729 |
| 1730 |
| 1731 NvRmPowerEventNotify( p_in->hRmDeviceHandle, p_in->Event ); |
| 1732 |
| 1733 return err_; |
| 1734 } |
| 1735 |
| 1736 static NvError NvRmPowerGetEvent_dispatch_( void *InBuffer, NvU32 InSize, void *
OutBuffer, NvU32 OutSize, NvDispatchCtx* Ctx ) |
| 1737 { |
| 1738 NvError err_ = NvSuccess; |
| 1739 NvRmPowerGetEvent_in *p_in; |
| 1740 NvRmPowerGetEvent_out *p_out; |
| 1741 |
| 1742 p_in = (NvRmPowerGetEvent_in *)InBuffer; |
| 1743 p_out = (NvRmPowerGetEvent_out *)((NvU8 *)OutBuffer + OFFSET(NvRmPowerGetEve
nt_params, out) - OFFSET(NvRmPowerGetEvent_params, inout)); |
| 1744 |
| 1745 |
| 1746 p_out->ret_ = NvRmPowerGetEvent( p_in->hRmDeviceHandle, p_in->ClientId, &p_o
ut->pEvent ); |
| 1747 |
| 1748 return err_; |
| 1749 } |
| 1750 |
| 1751 static NvError NvRmPowerUnRegister_dispatch_( void *InBuffer, NvU32 InSize, void
*OutBuffer, NvU32 OutSize, NvDispatchCtx* Ctx ) |
| 1752 { |
| 1753 NvError err_ = NvSuccess; |
| 1754 NvRmPowerUnRegister_in *p_in; |
| 1755 |
| 1756 p_in = (NvRmPowerUnRegister_in *)InBuffer; |
| 1757 |
| 1758 |
| 1759 NvRmPowerUnRegister( p_in->hRmDeviceHandle, p_in->ClientId ); |
| 1760 |
| 1761 return err_; |
| 1762 } |
| 1763 |
| 1764 static NvError NvRmPowerRegister_dispatch_( void *InBuffer, NvU32 InSize, void *
OutBuffer, NvU32 OutSize, NvDispatchCtx* Ctx ) |
| 1765 { |
| 1766 NvError err_ = NvSuccess; |
| 1767 NvRmPowerRegister_in *p_in; |
| 1768 NvRmPowerRegister_inout *p_inout; |
| 1769 NvRmPowerRegister_out *p_out; |
| 1770 NvRmPowerRegister_inout inout; |
| 1771 NvOsSemaphoreHandle hEventSemaphore = NULL; |
| 1772 |
| 1773 p_in = (NvRmPowerRegister_in *)InBuffer; |
| 1774 p_inout = (NvRmPowerRegister_inout *)((NvU8 *)InBuffer + OFFSET(NvRmPowerReg
ister_params, inout)); |
| 1775 p_out = (NvRmPowerRegister_out *)((NvU8 *)OutBuffer + OFFSET(NvRmPowerRegist
er_params, out) - OFFSET(NvRmPowerRegister_params, inout)); |
| 1776 |
| 1777 (void)inout; |
| 1778 if( p_in->hEventSemaphore ) |
| 1779 { |
| 1780 err_ = NvOsSemaphoreUnmarshal( p_in->hEventSemaphore, &hEventSemaphore )
; |
| 1781 if( err_ != NvSuccess ) |
| 1782 { |
| 1783 err_ = NvError_BadParameter; |
| 1784 goto clean; |
| 1785 } |
| 1786 } |
| 1787 inout.pClientId = p_inout->pClientId; |
| 1788 |
| 1789 p_out->ret_ = NvRmPowerRegister( p_in->hRmDeviceHandle, hEventSemaphore, &in
out.pClientId ); |
| 1790 |
| 1791 |
| 1792 p_inout = (NvRmPowerRegister_inout *)OutBuffer; |
| 1793 p_inout->pClientId = inout.pClientId; |
| 1794 clean: |
| 1795 NvOsSemaphoreDestroy( hEventSemaphore ); |
| 1796 return err_; |
| 1797 } |
| 1798 |
| 1799 NvError nvrm_power_Dispatch( NvU32 function, void *InBuffer, NvU32 InSize, void
*OutBuffer, NvU32 OutSize, NvDispatchCtx* Ctx ); |
| 1800 NvError nvrm_power_Dispatch( NvU32 function, void *InBuffer, NvU32 InSize, void
*OutBuffer, NvU32 OutSize, NvDispatchCtx* Ctx ) |
| 1801 { |
| 1802 NvError err_ = NvSuccess; |
| 1803 |
| 1804 switch( function ) { |
| 1805 case 34: |
| 1806 err_ = NvRmKernelPowerResume_dispatch_( InBuffer, InSize, OutBuffer, Out
Size, Ctx ); |
| 1807 break; |
| 1808 case 33: |
| 1809 err_ = NvRmKernelPowerSuspend_dispatch_( InBuffer, InSize, OutBuffer, Ou
tSize, Ctx ); |
| 1810 break; |
| 1811 case 32: |
| 1812 err_ = NvRmDfsSetLowVoltageThreshold_dispatch_( InBuffer, InSize, OutBuf
fer, OutSize, Ctx ); |
| 1813 break; |
| 1814 case 31: |
| 1815 err_ = NvRmDfsGetLowVoltageThreshold_dispatch_( InBuffer, InSize, OutBuf
fer, OutSize, Ctx ); |
| 1816 break; |
| 1817 case 30: |
| 1818 err_ = NvRmDfsLogBusyGetEntry_dispatch_( InBuffer, InSize, OutBuffer, Ou
tSize, Ctx ); |
| 1819 break; |
| 1820 case 29: |
| 1821 err_ = NvRmDfsLogStarvationGetEntry_dispatch_( InBuffer, InSize, OutBuff
er, OutSize, Ctx ); |
| 1822 break; |
| 1823 case 28: |
| 1824 err_ = NvRmDfsLogActivityGetEntry_dispatch_( InBuffer, InSize, OutBuffer
, OutSize, Ctx ); |
| 1825 break; |
| 1826 case 27: |
| 1827 err_ = NvRmDfsLogGetMeanFrequencies_dispatch_( InBuffer, InSize, OutBuff
er, OutSize, Ctx ); |
| 1828 break; |
| 1829 case 26: |
| 1830 err_ = NvRmDfsLogStart_dispatch_( InBuffer, InSize, OutBuffer, OutSize,
Ctx ); |
| 1831 break; |
| 1832 case 25: |
| 1833 err_ = NvRmDfsGetProfileData_dispatch_( InBuffer, InSize, OutBuffer, Out
Size, Ctx ); |
| 1834 break; |
| 1835 case 24: |
| 1836 err_ = NvRmDfsSetAvHighCorner_dispatch_( InBuffer, InSize, OutBuffer, Ou
tSize, Ctx ); |
| 1837 break; |
| 1838 case 23: |
| 1839 err_ = NvRmDfsSetCpuEmcHighCorner_dispatch_( InBuffer, InSize, OutBuffer
, OutSize, Ctx ); |
| 1840 break; |
| 1841 case 22: |
| 1842 err_ = NvRmDfsSetEmcEnvelope_dispatch_( InBuffer, InSize, OutBuffer, Out
Size, Ctx ); |
| 1843 break; |
| 1844 case 21: |
| 1845 err_ = NvRmDfsSetCpuEnvelope_dispatch_( InBuffer, InSize, OutBuffer, Out
Size, Ctx ); |
| 1846 break; |
| 1847 case 20: |
| 1848 err_ = NvRmDfsSetTarget_dispatch_( InBuffer, InSize, OutBuffer, OutSize,
Ctx ); |
| 1849 break; |
| 1850 case 19: |
| 1851 err_ = NvRmDfsSetLowCorner_dispatch_( InBuffer, InSize, OutBuffer, OutSi
ze, Ctx ); |
| 1852 break; |
| 1853 case 18: |
| 1854 err_ = NvRmDfsSetState_dispatch_( InBuffer, InSize, OutBuffer, OutSize,
Ctx ); |
| 1855 break; |
| 1856 case 17: |
| 1857 err_ = NvRmDfsGetClockUtilization_dispatch_( InBuffer, InSize, OutBuffer
, OutSize, Ctx ); |
| 1858 break; |
| 1859 case 16: |
| 1860 err_ = NvRmDfsGetState_dispatch_( InBuffer, InSize, OutBuffer, OutSize,
Ctx ); |
| 1861 break; |
| 1862 case 15: |
| 1863 err_ = NvRmPowerActivityHint_dispatch_( InBuffer, InSize, OutBuffer, Out
Size, Ctx ); |
| 1864 break; |
| 1865 case 14: |
| 1866 err_ = NvRmPowerStarvationHintMulti_dispatch_( InBuffer, InSize, OutBuff
er, OutSize, Ctx ); |
| 1867 break; |
| 1868 case 13: |
| 1869 err_ = NvRmPowerStarvationHint_dispatch_( InBuffer, InSize, OutBuffer, O
utSize, Ctx ); |
| 1870 break; |
| 1871 case 12: |
| 1872 err_ = NvRmPowerBusyHintMulti_dispatch_( InBuffer, InSize, OutBuffer, Ou
tSize, Ctx ); |
| 1873 break; |
| 1874 case 11: |
| 1875 err_ = NvRmPowerBusyHint_dispatch_( InBuffer, InSize, OutBuffer, OutSize
, Ctx ); |
| 1876 break; |
| 1877 case 10: |
| 1878 err_ = NvRmListPowerAwareModules_dispatch_( InBuffer, InSize, OutBuffer,
OutSize, Ctx ); |
| 1879 break; |
| 1880 case 9: |
| 1881 err_ = NvRmPowerVoltageControl_dispatch_( InBuffer, InSize, OutBuffer, O
utSize, Ctx ); |
| 1882 break; |
| 1883 case 8: |
| 1884 err_ = NvRmPowerModuleClockControl_dispatch_( InBuffer, InSize, OutBuffe
r, OutSize, Ctx ); |
| 1885 break; |
| 1886 case 7: |
| 1887 err_ = NvRmPowerModuleClockConfig_dispatch_( InBuffer, InSize, OutBuffer
, OutSize, Ctx ); |
| 1888 break; |
| 1889 case 6: |
| 1890 err_ = NvRmPowerModuleGetMaxFrequency_dispatch_( InBuffer, InSize, OutBu
ffer, OutSize, Ctx ); |
| 1891 break; |
| 1892 case 5: |
| 1893 err_ = NvRmPowerGetPrimaryFrequency_dispatch_( InBuffer, InSize, OutBuff
er, OutSize, Ctx ); |
| 1894 break; |
| 1895 case 4: |
| 1896 err_ = NvRmPowerGetState_dispatch_( InBuffer, InSize, OutBuffer, OutSize
, Ctx ); |
| 1897 break; |
| 1898 case 3: |
| 1899 err_ = NvRmPowerEventNotify_dispatch_( InBuffer, InSize, OutBuffer, OutS
ize, Ctx ); |
| 1900 break; |
| 1901 case 2: |
| 1902 err_ = NvRmPowerGetEvent_dispatch_( InBuffer, InSize, OutBuffer, OutSize
, Ctx ); |
| 1903 break; |
| 1904 case 1: |
| 1905 err_ = NvRmPowerUnRegister_dispatch_( InBuffer, InSize, OutBuffer, OutSi
ze, Ctx ); |
| 1906 break; |
| 1907 case 0: |
| 1908 err_ = NvRmPowerRegister_dispatch_( InBuffer, InSize, OutBuffer, OutSize
, Ctx ); |
| 1909 break; |
| 1910 default: |
| 1911 err_ = NvError_BadParameter; |
| 1912 break; |
| 1913 } |
| 1914 |
| 1915 return err_; |
| 1916 } |
OLD | NEW |