drm/amdgpu: add driver support for JPEG2.0 and above
authorLeo Liu <leo.liu@amd.com>
Fri, 8 Nov 2019 20:00:58 +0000 (15:00 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 19 Nov 2019 15:12:50 +0000 (10:12 -0500)
By using JPEG IP block type

Signed-off-by: Leo Liu <leo.liu@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c

index 0ad61febbb5f7e1e313be2e690213244a5aae8c6..cdd8ddab8f783f7eab77947b905e250d7b6fc81c 100644 (file)
@@ -1961,6 +1961,7 @@ static int amdgpu_device_set_cg_state(struct amdgpu_device *adev,
                if (adev->ip_blocks[i].version->type != AMD_IP_BLOCK_TYPE_UVD &&
                    adev->ip_blocks[i].version->type != AMD_IP_BLOCK_TYPE_VCE &&
                    adev->ip_blocks[i].version->type != AMD_IP_BLOCK_TYPE_VCN &&
+                   adev->ip_blocks[i].version->type != AMD_IP_BLOCK_TYPE_JPEG &&
                    adev->ip_blocks[i].version->funcs->set_clockgating_state) {
                        /* enable clockgating to save power */
                        r = adev->ip_blocks[i].version->funcs->set_clockgating_state((void *)adev,
@@ -1991,6 +1992,7 @@ static int amdgpu_device_set_pg_state(struct amdgpu_device *adev, enum amd_power
                if (adev->ip_blocks[i].version->type != AMD_IP_BLOCK_TYPE_UVD &&
                    adev->ip_blocks[i].version->type != AMD_IP_BLOCK_TYPE_VCE &&
                    adev->ip_blocks[i].version->type != AMD_IP_BLOCK_TYPE_VCN &&
+                   adev->ip_blocks[i].version->type != AMD_IP_BLOCK_TYPE_JPEG &&
                    adev->ip_blocks[i].version->funcs->set_powergating_state) {
                        /* enable powergating to save power */
                        r = adev->ip_blocks[i].version->funcs->set_powergating_state((void *)adev,
index 58fb75cb28ea6e5235d869f3b3379d50b7e4268a..39e37a53cb905954ce58087c5b7faf435d478e63 100644 (file)
@@ -400,7 +400,9 @@ static int amdgpu_hw_ip_info(struct amdgpu_device *adev,
                ib_size_alignment = 1;
                break;
        case AMDGPU_HW_IP_VCN_JPEG:
-               type = AMD_IP_BLOCK_TYPE_VCN;
+               type = (amdgpu_device_ip_get_ip_block(adev, AMD_IP_BLOCK_TYPE_JPEG)) ?
+                       AMD_IP_BLOCK_TYPE_JPEG : AMD_IP_BLOCK_TYPE_VCN;
+
                for (i = 0; i < adev->jpeg.num_jpeg_inst; i++) {
                        if (adev->jpeg.harvest_config & (1 << i))
                                continue;
@@ -521,9 +523,12 @@ static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file
                        break;
                case AMDGPU_HW_IP_VCN_DEC:
                case AMDGPU_HW_IP_VCN_ENC:
-               case AMDGPU_HW_IP_VCN_JPEG:
                        type = AMD_IP_BLOCK_TYPE_VCN;
                        break;
+               case AMDGPU_HW_IP_VCN_JPEG:
+                       type = (amdgpu_device_ip_get_ip_block(adev, AMD_IP_BLOCK_TYPE_JPEG)) ?
+                               AMD_IP_BLOCK_TYPE_JPEG : AMD_IP_BLOCK_TYPE_VCN;
+                       break;
                default:
                        return -EINVAL;
                }