diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c index 7d484fad3909..1f0bd4d16475 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c | |||
@@ -426,3 +426,47 @@ uint32_t amdgpu_virt_get_mclk(struct amdgpu_device *adev, bool lowest) | |||
426 | return clk; | 426 | return clk; |
427 | } | 427 | } |
428 | 428 | ||
429 | void amdgpu_virt_init_reg_access_mode(struct amdgpu_device *adev) | ||
430 | { | ||
431 | struct amdgpu_virt *virt = &adev->virt; | ||
432 | |||
433 | if (virt->ops && virt->ops->init_reg_access_mode) | ||
434 | virt->ops->init_reg_access_mode(adev); | ||
435 | } | ||
436 | |||
437 | bool amdgpu_virt_support_psp_prg_ih_reg(struct amdgpu_device *adev) | ||
438 | { | ||
439 | bool ret = false; | ||
440 | struct amdgpu_virt *virt = &adev->virt; | ||
441 | |||
442 | if (amdgpu_sriov_vf(adev) | ||
443 | && (virt->reg_access_mode & AMDGPU_VIRT_REG_ACCESS_PSP_PRG_IH)) | ||
444 | ret = true; | ||
445 | |||
446 | return ret; | ||
447 | } | ||
448 | |||
449 | bool amdgpu_virt_support_rlc_prg_reg(struct amdgpu_device *adev) | ||
450 | { | ||
451 | bool ret = false; | ||
452 | struct amdgpu_virt *virt = &adev->virt; | ||
453 | |||
454 | if (amdgpu_sriov_vf(adev) | ||
455 | && (virt->reg_access_mode & AMDGPU_VIRT_REG_ACCESS_RLC) | ||
456 | && !(amdgpu_sriov_runtime(adev))) | ||
457 | ret = true; | ||
458 | |||
459 | return ret; | ||
460 | } | ||
461 | |||
462 | bool amdgpu_virt_support_skip_setting(struct amdgpu_device *adev) | ||
463 | { | ||
464 | bool ret = false; | ||
465 | struct amdgpu_virt *virt = &adev->virt; | ||
466 | |||
467 | if (amdgpu_sriov_vf(adev) | ||
468 | && (virt->reg_access_mode & AMDGPU_VIRT_REG_SKIP_SEETING)) | ||
469 | ret = true; | ||
470 | |||
471 | return ret; | ||
472 | } | ||