Lines 341-369
static void nvkms_resume(NvU32 gpuId)
Link Here
|
341 |
* Interface with resman. |
341 |
* Interface with resman. |
342 |
*************************************************************************/ |
342 |
*************************************************************************/ |
343 |
|
343 |
|
344 |
static nvidia_modeset_rm_ops_t __rm_ops = { 0 }; |
344 |
static const nvidia_modeset_rm_ops_t *__rm_ops; |
345 |
static nvidia_modeset_callbacks_t nvkms_rm_callbacks = { |
345 |
static nvidia_modeset_callbacks_t nvkms_rm_callbacks = { |
346 |
.suspend = nvkms_suspend, |
346 |
.suspend = nvkms_suspend, |
347 |
.resume = nvkms_resume |
347 |
.resume = nvkms_resume |
348 |
}; |
348 |
}; |
349 |
|
349 |
|
350 |
static int nvkms_alloc_rm(void) |
350 |
static int nvkms_alloc_rm(void) |
351 |
{ |
351 |
{ |
352 |
NV_STATUS nvstatus; |
352 |
NV_STATUS nvstatus; |
353 |
int ret; |
353 |
int ret; |
|
|
354 |
const char *version_string = NV_VERSION_STRING; |
354 |
|
355 |
|
355 |
__rm_ops.version_string = NV_VERSION_STRING; |
356 |
nvstatus = nvidia_get_rm_ops(&__rm_ops, &version_string); |
356 |
|
|
|
357 |
nvstatus = nvidia_get_rm_ops(&__rm_ops); |
358 |
|
357 |
|
359 |
if (nvstatus != NV_OK) { |
358 |
if (nvstatus != NV_OK) { |
360 |
printk(KERN_ERR NVKMS_LOG_PREFIX "Version mismatch: " |
359 |
printk(KERN_ERR NVKMS_LOG_PREFIX "Version mismatch: " |
361 |
"nvidia.ko(%s) nvidia-modeset.ko(%s)\n", |
360 |
"nvidia.ko(%s) nvidia-modeset.ko(%s)\n", |
362 |
__rm_ops.version_string, NV_VERSION_STRING); |
361 |
version_string, NV_VERSION_STRING); |
363 |
return -EINVAL; |
362 |
return -EINVAL; |
364 |
} |
363 |
} |
365 |
|
364 |
|
366 |
ret = __rm_ops.set_callbacks(&nvkms_rm_callbacks); |
365 |
ret = __rm_ops->set_callbacks(&nvkms_rm_callbacks); |
367 |
if (ret < 0) { |
366 |
if (ret < 0) { |
368 |
printk(KERN_ERR NVKMS_LOG_PREFIX "Failed to register callbacks\n"); |
367 |
printk(KERN_ERR NVKMS_LOG_PREFIX "Failed to register callbacks\n"); |
369 |
return ret; |
368 |
return ret; |
Lines 374-393
static int nvkms_alloc_rm(void)
Link Here
|
374 |
|
373 |
|
375 |
static void nvkms_free_rm(void) |
374 |
static void nvkms_free_rm(void) |
376 |
{ |
375 |
{ |
377 |
__rm_ops.set_callbacks(NULL); |
376 |
__rm_ops->set_callbacks(NULL); |
378 |
} |
377 |
} |
379 |
|
378 |
|
380 |
void NVKMS_API_CALL nvkms_call_rm(void *ops) |
379 |
void NVKMS_API_CALL nvkms_call_rm(void *ops) |
381 |
{ |
380 |
{ |
382 |
nvidia_modeset_stack_ptr stack = NULL; |
381 |
nvidia_modeset_stack_ptr stack = NULL; |
383 |
|
382 |
|
384 |
if (__rm_ops.alloc_stack(&stack) != 0) { |
383 |
if (__rm_ops->alloc_stack(&stack) != 0) { |
385 |
return; |
384 |
return; |
386 |
} |
385 |
} |
387 |
|
386 |
|
388 |
__rm_ops.op(stack, ops); |
387 |
__rm_ops->op(stack, ops); |
389 |
|
388 |
|
390 |
__rm_ops.free_stack(stack); |
389 |
__rm_ops->free_stack(stack); |
391 |
} |
390 |
} |
392 |
|
391 |
|
393 |
/************************************************************************* |
392 |
/************************************************************************* |
Lines 723-735
NvBool NVKMS_API_CALL nvkms_open_gpu(NvU
Link Here
|
723 |
nvidia_modeset_stack_ptr stack = NULL; |
722 |
nvidia_modeset_stack_ptr stack = NULL; |
724 |
NvBool ret; |
723 |
NvBool ret; |
725 |
|
724 |
|
726 |
if (__rm_ops.alloc_stack(&stack) != 0) { |
725 |
if (__rm_ops->alloc_stack(&stack) != 0) { |
727 |
return NV_FALSE; |
726 |
return NV_FALSE; |
728 |
} |
727 |
} |
729 |
|
728 |
|
730 |
ret = __rm_ops.open_gpu(gpuId, stack) == 0; |
729 |
ret = __rm_ops->open_gpu(gpuId, stack) == 0; |
731 |
|
730 |
|
732 |
__rm_ops.free_stack(stack); |
731 |
__rm_ops->free_stack(stack); |
733 |
|
732 |
|
734 |
return ret; |
733 |
return ret; |
735 |
} |
734 |
} |
Lines 738-760
void NVKMS_API_CALL nvkms_close_gpu(NvU3
Link Here
|
738 |
{ |
737 |
{ |
739 |
nvidia_modeset_stack_ptr stack = NULL; |
738 |
nvidia_modeset_stack_ptr stack = NULL; |
740 |
|
739 |
|
741 |
if (__rm_ops.alloc_stack(&stack) != 0) { |
740 |
if (__rm_ops->alloc_stack(&stack) != 0) { |
742 |
return; |
741 |
return; |
743 |
} |
742 |
} |
744 |
|
743 |
|
745 |
__rm_ops.close_gpu(gpuId, stack); |
744 |
__rm_ops->close_gpu(gpuId, stack); |
746 |
|
745 |
|
747 |
__rm_ops.free_stack(stack); |
746 |
__rm_ops->free_stack(stack); |
748 |
} |
747 |
} |
749 |
|
748 |
|
750 |
NvU32 NVKMS_API_CALL nvkms_enumerate_gpus(nv_gpu_info_t *gpu_info) |
749 |
NvU32 NVKMS_API_CALL nvkms_enumerate_gpus(nv_gpu_info_t *gpu_info) |
751 |
{ |
750 |
{ |
752 |
return __rm_ops.enumerate_gpus(gpu_info); |
751 |
return __rm_ops->enumerate_gpus(gpu_info); |
753 |
} |
752 |
} |
754 |
|
753 |
|
755 |
NvBool NVKMS_API_CALL nvkms_allow_write_combining(void) |
754 |
NvBool NVKMS_API_CALL nvkms_allow_write_combining(void) |
756 |
{ |
755 |
{ |
757 |
return __rm_ops.system_info.allow_write_combining; |
756 |
return __rm_ops->system_info.allow_write_combining; |
758 |
} |
757 |
} |
759 |
|
758 |
|
760 |
/************************************************************************* |
759 |
/************************************************************************* |