aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
diff options
context:
space:
mode:
authorEvan Quan <evan.quan@amd.com>2016-12-06 21:05:09 -0500
committerAlex Deucher <alexander.deucher@amd.com>2016-12-08 14:12:09 -0500
commit40ee5888faecf4ea5423dbe94c862d03c3e7e12c (patch)
tree2d1754f6b54ae89ee82b2a34a4ce73b523fdfa47 /drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
parenta9f5db9ca7a92aa00af82b3d10416e34b31a9493 (diff)
drm/amd/amdgpu: export vbios information (v2)
Allows userspace components to fetch information from the vbios image. v2: agd: fix warning Reviewed-by: Edward O'Callaghan <funfunctor@folklore1984.net> Signed-off-by: Evan Quan <evan.quan@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Reviewed-by: Christian Koenig <christian.koenig@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
index d1cf9ac0dff1..9af87eaf8ee3 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
@@ -544,6 +544,32 @@ static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file
544 return copy_to_user(out, &vce_clk_table, 544 return copy_to_user(out, &vce_clk_table,
545 min((size_t)size, sizeof(vce_clk_table))) ? -EFAULT : 0; 545 min((size_t)size, sizeof(vce_clk_table))) ? -EFAULT : 0;
546 } 546 }
547 case AMDGPU_INFO_VBIOS: {
548 uint32_t bios_size = adev->bios_size;
549
550 switch (info->vbios_info.type) {
551 case AMDGPU_INFO_VBIOS_SIZE:
552 return copy_to_user(out, &bios_size,
553 min((size_t)size, sizeof(bios_size)))
554 ? -EFAULT : 0;
555 case AMDGPU_INFO_VBIOS_IMAGE: {
556 uint8_t *bios;
557 uint32_t bios_offset = info->vbios_info.offset;
558
559 if (bios_offset >= bios_size)
560 return -EINVAL;
561
562 bios = adev->bios + bios_offset;
563 return copy_to_user(out, bios,
564 min((size_t)size, (size_t)(bios_size - bios_offset)))
565 ? -EFAULT : 0;
566 }
567 default:
568 DRM_DEBUG_KMS("Invalid request %d\n",
569 info->vbios_info.type);
570 return -EINVAL;
571 }
572 }
547 default: 573 default:
548 DRM_DEBUG_KMS("Invalid request %d\n", info->query); 574 DRM_DEBUG_KMS("Invalid request %d\n", info->query);
549 return -EINVAL; 575 return -EINVAL;