]> Git Repo - linux.git/blobdiff - drivers/gpu/drm/amd/amdgpu/cik.c
Merge tag 'ktest-v5.13' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt...
[linux.git] / drivers / gpu / drm / amd / amdgpu / cik.c
index 4d6832cc7fb066511a21d4cd37ad7225cd268beb..c0fcc41ee574a53713d929acced1140df80a2804 100644 (file)
@@ -26,6 +26,8 @@
 #include <linux/module.h>
 #include <linux/pci.h>
 
+#include <drm/amdgpu_drm.h>
+
 #include "amdgpu.h"
 #include "amdgpu_atombios.h"
 #include "amdgpu_ih.h"
 #include "amdgpu_amdkfd.h"
 #include "dce_virtual.h"
 
+static const struct amdgpu_video_codec_info cik_video_codecs_encode_array[] =
+{
+       {
+               .codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4_AVC,
+               .max_width = 2048,
+               .max_height = 1152,
+               .max_pixels_per_frame = 2048 * 1152,
+               .max_level = 0,
+       },
+};
+
+static const struct amdgpu_video_codecs cik_video_codecs_encode =
+{
+       .codec_count = ARRAY_SIZE(cik_video_codecs_encode_array),
+       .codec_array = cik_video_codecs_encode_array,
+};
+
+static const struct amdgpu_video_codec_info cik_video_codecs_decode_array[] =
+{
+       {
+               .codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG2,
+               .max_width = 2048,
+               .max_height = 1152,
+               .max_pixels_per_frame = 2048 * 1152,
+               .max_level = 3,
+       },
+       {
+               .codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4,
+               .max_width = 2048,
+               .max_height = 1152,
+               .max_pixels_per_frame = 2048 * 1152,
+               .max_level = 5,
+       },
+       {
+               .codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4_AVC,
+               .max_width = 2048,
+               .max_height = 1152,
+               .max_pixels_per_frame = 2048 * 1152,
+               .max_level = 41,
+       },
+       {
+               .codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_VC1,
+               .max_width = 2048,
+               .max_height = 1152,
+               .max_pixels_per_frame = 2048 * 1152,
+               .max_level = 4,
+       },
+};
+
+static const struct amdgpu_video_codecs cik_video_codecs_decode =
+{
+       .codec_count = ARRAY_SIZE(cik_video_codecs_decode_array),
+       .codec_array = cik_video_codecs_decode_array,
+};
+
+static int cik_query_video_codecs(struct amdgpu_device *adev, bool encode,
+                                 const struct amdgpu_video_codecs **codecs)
+{
+       switch (adev->asic_type) {
+       case CHIP_BONAIRE:
+       case CHIP_HAWAII:
+       case CHIP_KAVERI:
+       case CHIP_KABINI:
+       case CHIP_MULLINS:
+               if (encode)
+                       *codecs = &cik_video_codecs_encode;
+               else
+                       *codecs = &cik_video_codecs_decode;
+               return 0;
+       default:
+               return -EINVAL;
+       }
+}
+
 /*
  * Indirect registers accessor
  */
@@ -1933,6 +2009,7 @@ static const struct amdgpu_asic_funcs cik_asic_funcs =
        .get_pcie_replay_count = &cik_get_pcie_replay_count,
        .supports_baco = &cik_asic_supports_baco,
        .pre_asic_init = &cik_pre_asic_init,
+       .query_video_codecs = &cik_query_video_codecs,
 };
 
 static int cik_common_early_init(void *handle)
This page took 0.035453 seconds and 4 git commands to generate.