OSDN Git Service

media: cedrus: Register all codecs as capability
authorMartin Cerveny <m.cerveny@computer.org>
Mon, 16 Nov 2020 12:56:12 +0000 (13:56 +0100)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Thu, 3 Dec 2020 06:36:05 +0000 (07:36 +0100)
All codecs should have capabilities.
For example "Allwinner V3s" does not support "MPEG2".

Signed-off-by: Martin Cerveny <m.cerveny@computer.org>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/staging/media/sunxi/cedrus/cedrus.c
drivers/staging/media/sunxi/cedrus/cedrus.h
drivers/staging/media/sunxi/cedrus/cedrus_video.c

index 9a102b7..3487554 100644 (file)
@@ -486,47 +486,65 @@ static int cedrus_remove(struct platform_device *pdev)
 }
 
 static const struct cedrus_variant sun4i_a10_cedrus_variant = {
+       .capabilities   = CEDRUS_CAPABILITY_MPEG2_DEC |
+                         CEDRUS_CAPABILITY_H264_DEC,
        .mod_rate       = 320000000,
 };
 
 static const struct cedrus_variant sun5i_a13_cedrus_variant = {
+       .capabilities   = CEDRUS_CAPABILITY_MPEG2_DEC |
+                         CEDRUS_CAPABILITY_H264_DEC,
        .mod_rate       = 320000000,
 };
 
 static const struct cedrus_variant sun7i_a20_cedrus_variant = {
+       .capabilities   = CEDRUS_CAPABILITY_MPEG2_DEC |
+                         CEDRUS_CAPABILITY_H264_DEC,
        .mod_rate       = 320000000,
 };
 
 static const struct cedrus_variant sun8i_a33_cedrus_variant = {
-       .capabilities   = CEDRUS_CAPABILITY_UNTILED,
+       .capabilities   = CEDRUS_CAPABILITY_UNTILED |
+                         CEDRUS_CAPABILITY_MPEG2_DEC |
+                         CEDRUS_CAPABILITY_H264_DEC,
        .mod_rate       = 320000000,
 };
 
 static const struct cedrus_variant sun8i_h3_cedrus_variant = {
        .capabilities   = CEDRUS_CAPABILITY_UNTILED |
+                         CEDRUS_CAPABILITY_MPEG2_DEC |
+                         CEDRUS_CAPABILITY_H264_DEC |
                          CEDRUS_CAPABILITY_H265_DEC,
        .mod_rate       = 402000000,
 };
 
 static const struct cedrus_variant sun8i_r40_cedrus_variant = {
-       .capabilities   = CEDRUS_CAPABILITY_UNTILED,
+       .capabilities   = CEDRUS_CAPABILITY_UNTILED |
+                         CEDRUS_CAPABILITY_MPEG2_DEC |
+                         CEDRUS_CAPABILITY_H264_DEC,
        .mod_rate       = 297000000,
 };
 
 static const struct cedrus_variant sun50i_a64_cedrus_variant = {
        .capabilities   = CEDRUS_CAPABILITY_UNTILED |
+                         CEDRUS_CAPABILITY_MPEG2_DEC |
+                         CEDRUS_CAPABILITY_H264_DEC |
                          CEDRUS_CAPABILITY_H265_DEC,
        .mod_rate       = 402000000,
 };
 
 static const struct cedrus_variant sun50i_h5_cedrus_variant = {
        .capabilities   = CEDRUS_CAPABILITY_UNTILED |
+                         CEDRUS_CAPABILITY_MPEG2_DEC |
+                         CEDRUS_CAPABILITY_H264_DEC |
                          CEDRUS_CAPABILITY_H265_DEC,
        .mod_rate       = 402000000,
 };
 
 static const struct cedrus_variant sun50i_h6_cedrus_variant = {
        .capabilities   = CEDRUS_CAPABILITY_UNTILED |
+                         CEDRUS_CAPABILITY_MPEG2_DEC |
+                         CEDRUS_CAPABILITY_H264_DEC |
                          CEDRUS_CAPABILITY_H265_DEC,
        .quirks         = CEDRUS_QUIRK_NO_DMA_OFFSET,
        .mod_rate       = 600000000,
index 93c843a..30cdb15 100644 (file)
@@ -28,6 +28,8 @@
 
 #define CEDRUS_CAPABILITY_UNTILED      BIT(0)
 #define CEDRUS_CAPABILITY_H265_DEC     BIT(1)
+#define CEDRUS_CAPABILITY_H264_DEC     BIT(2)
+#define CEDRUS_CAPABILITY_MPEG2_DEC    BIT(3)
 
 #define CEDRUS_QUIRK_NO_DMA_OFFSET     BIT(0)
 
index 911f607..bdca23f 100644 (file)
@@ -38,10 +38,12 @@ static struct cedrus_format cedrus_formats[] = {
        {
                .pixelformat    = V4L2_PIX_FMT_MPEG2_SLICE,
                .directions     = CEDRUS_DECODE_SRC,
+               .capabilities   = CEDRUS_CAPABILITY_MPEG2_DEC,
        },
        {
                .pixelformat    = V4L2_PIX_FMT_H264_SLICE,
                .directions     = CEDRUS_DECODE_SRC,
+               .capabilities   = CEDRUS_CAPABILITY_H264_DEC,
        },
        {
                .pixelformat    = V4L2_PIX_FMT_HEVC_SLICE,