mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-29 13:46:49 +00:00
linux (Rockchip): patches included in 5.16
This commit is contained in:
parent
73e0571283
commit
5fd24087d9
File diff suppressed because it is too large
Load Diff
@ -377,33 +377,6 @@ index df46edbec82c..cfc57be009a6 100644
|
||||
};
|
||||
|
||||
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Alex Bee <knaerzche@gmail.com>
|
||||
Date: Sat, 21 Aug 2021 19:13:31 +0200
|
||||
Subject: [PATCH] Commit a728c10dd62a ("arm64: dts: rockchip: remove
|
||||
interrupt-names from iommu nodes") intended to remove the interrupt-names
|
||||
property for the mmu nodes. It also removed them for the vpu node in
|
||||
rk3399.dtsi which currently results in a non-working driver. Fix this by
|
||||
re-adding them.
|
||||
|
||||
Fixes: a728c10dd62a ("arm64: dts: rockchip: remove interrupt-names from iommu nodes")
|
||||
Signed-off-by: Alex Bee <knaerzche@gmail.com>
|
||||
---
|
||||
arch/arm64/boot/dts/rockchip/rk3399.dtsi | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3399.dtsi b/arch/arm64/boot/dts/rockchip/rk3399.dtsi
|
||||
index 9db9484ca38f..44def886b391 100644
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3399.dtsi
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3399.dtsi
|
||||
@@ -1240,6 +1240,7 @@ vpu: video-codec@ff650000 {
|
||||
reg = <0x0 0xff650000 0x0 0x800>;
|
||||
interrupts = <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH 0>,
|
||||
<GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH 0>;
|
||||
+ interrupt-names = "vepu", "vdpu";
|
||||
clocks = <&cru ACLK_VCODEC>, <&cru HCLK_VCODEC>;
|
||||
clock-names = "aclk", "hclk";
|
||||
iommus = <&vpu_mmu>;
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Alex Bee <knaerzche@gmail.com>
|
||||
Date: Wed, 27 Oct 2021 14:43:40 +0200
|
||||
|
@ -340,16 +340,16 @@ index 05d5db3d85e5..fe43d785414c 100644
|
||||
case V4L2_PIX_FMT_NV42: descr = "Y/CrCb 4:4:4"; break;
|
||||
+ case V4L2_PIX_FMT_NV15: descr = "10-bit Y/CbCr 4:2:0 (Packed)"; break;
|
||||
+ case V4L2_PIX_FMT_NV20: descr = "10-bit Y/CbCr 4:2:2 (Packed)"; break;
|
||||
case V4L2_PIX_FMT_NV12M: descr = "Y/CbCr 4:2:0 (N-C)"; break;
|
||||
case V4L2_PIX_FMT_NV21M: descr = "Y/CrCb 4:2:0 (N-C)"; break;
|
||||
case V4L2_PIX_FMT_NV16M: descr = "Y/CbCr 4:2:2 (N-C)"; break;
|
||||
case V4L2_PIX_FMT_NV12_4L4: descr = "Y/CbCr 4:2:0 (4x4 Linear)"; break;
|
||||
case V4L2_PIX_FMT_NV12_16L16: descr = "Y/CbCr 4:2:0 (16x16 Linear)"; break;
|
||||
case V4L2_PIX_FMT_NV12_32L32: descr = "Y/CbCr 4:2:0 (32x32 Linear)"; break;
|
||||
diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
|
||||
index 9260791b8438..169f8ad6fade 100644
|
||||
--- a/include/uapi/linux/videodev2.h
|
||||
+++ b/include/uapi/linux/videodev2.h
|
||||
@@ -603,6 +603,9 @@ struct v4l2_pix_format {
|
||||
#define V4L2_PIX_FMT_NV24 v4l2_fourcc('N', 'V', '2', '4') /* 24 Y/CbCr 4:4:4 */
|
||||
#define V4L2_PIX_FMT_NV42 v4l2_fourcc('N', 'V', '4', '2') /* 24 Y/CrCb 4:4:4 */
|
||||
#define V4L2_PIX_FMT_HM12 v4l2_fourcc('H', 'M', '1', '2') /* 8 YUV 4:2:0 16x16 macroblocks */
|
||||
|
||||
+#define V4L2_PIX_FMT_NV15 v4l2_fourcc('N', 'V', '1', '5') /* 15 Y/CbCr 4:2:0 10-bit packed */
|
||||
+#define V4L2_PIX_FMT_NV20 v4l2_fourcc('N', 'V', '2', '0') /* 20 Y/CbCr 4:2:2 10-bit packed */
|
||||
|
@ -529,31 +529,3 @@ index 5a70a56cd406..47c1861eece0 100644
|
||||
rockchip_gem_create_object(struct drm_device *drm, unsigned int size,
|
||||
bool alloc_kmap);
|
||||
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Andy Yan <andy.yan@rock-chips.com>
|
||||
Date: Sun, 27 Jun 2021 16:47:37 +0800
|
||||
Subject: [PATCH] drm/rockchip: Check iommu itself instead of it's parent for
|
||||
device_is_available
|
||||
|
||||
When iommu itself is disabled in dts, we should
|
||||
fallback to non-iommu buffer, check iommu parent
|
||||
is meanless here.
|
||||
|
||||
Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
|
||||
---
|
||||
drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
|
||||
index 2e3ab573a817..8161540be6c8 100644
|
||||
--- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
|
||||
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
|
||||
@@ -367,7 +367,7 @@ static int rockchip_drm_platform_of_probe(struct device *dev)
|
||||
}
|
||||
|
||||
iommu = of_parse_phandle(port->parent, "iommus", 0);
|
||||
- if (!iommu || !of_device_is_available(iommu->parent)) {
|
||||
+ if (!iommu || !of_device_is_available(iommu)) {
|
||||
DRM_DEV_DEBUG(dev,
|
||||
"no iommu attached for %pOF, using non-iommu buffers\n",
|
||||
port->parent);
|
||||
|
@ -1,194 +1,3 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Benjamin Gaignard <benjamin.gaignard@collabora.com>
|
||||
Date: Thu, 15 Jul 2021 17:12:22 +0200
|
||||
Subject: [PATCH] media: hevc: Add scaling matrix control
|
||||
|
||||
HEVC scaling lists are used for the scaling process for transform
|
||||
coefficients.
|
||||
V4L2_HEVC_SPS_FLAG_SCALING_LIST_ENABLED has to set when they are
|
||||
encoded in the bitstream.
|
||||
|
||||
Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com>
|
||||
Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com>
|
||||
Reviewed-by: Ezequiel Garcia <ezequiel@collabora.com>
|
||||
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
|
||||
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
|
||||
---
|
||||
.../media/v4l/ext-ctrls-codec.rst | 57 +++++++++++++++++++
|
||||
.../media/v4l/vidioc-queryctrl.rst | 6 ++
|
||||
drivers/media/v4l2-core/v4l2-ctrls-core.c | 6 ++
|
||||
drivers/media/v4l2-core/v4l2-ctrls-defs.c | 4 ++
|
||||
include/media/hevc-ctrls.h | 11 ++++
|
||||
5 files changed, 84 insertions(+)
|
||||
|
||||
diff --git a/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst b/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst
|
||||
index 5dd4afc5f1fe..dc08368d62fe 100644
|
||||
--- a/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst
|
||||
+++ b/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst
|
||||
@@ -3068,6 +3068,63 @@ enum v4l2_mpeg_video_hevc_size_of_length_field -
|
||||
|
||||
\normalsize
|
||||
|
||||
+``V4L2_CID_MPEG_VIDEO_HEVC_SCALING_MATRIX (struct)``
|
||||
+ Specifies the HEVC scaling matrix parameters used for the scaling process
|
||||
+ for transform coefficients.
|
||||
+ These matrix and parameters are defined according to :ref:`hevc`.
|
||||
+ They are described in section 7.4.5 "Scaling list data semantics" of
|
||||
+ the specification.
|
||||
+
|
||||
+.. c:type:: v4l2_ctrl_hevc_scaling_matrix
|
||||
+
|
||||
+.. raw:: latex
|
||||
+
|
||||
+ \scriptsize
|
||||
+
|
||||
+.. tabularcolumns:: |p{5.4cm}|p{6.8cm}|p{5.1cm}|
|
||||
+
|
||||
+.. cssclass:: longtable
|
||||
+
|
||||
+.. flat-table:: struct v4l2_ctrl_hevc_scaling_matrix
|
||||
+ :header-rows: 0
|
||||
+ :stub-columns: 0
|
||||
+ :widths: 1 1 2
|
||||
+
|
||||
+ * - __u8
|
||||
+ - ``scaling_list_4x4[6][16]``
|
||||
+ - Scaling list is used for the scaling process for transform
|
||||
+ coefficients. The values on each scaling list are expected
|
||||
+ in raster scan order.
|
||||
+ * - __u8
|
||||
+ - ``scaling_list_8x8[6][64]``
|
||||
+ - Scaling list is used for the scaling process for transform
|
||||
+ coefficients. The values on each scaling list are expected
|
||||
+ in raster scan order.
|
||||
+ * - __u8
|
||||
+ - ``scaling_list_16x16[6][64]``
|
||||
+ - Scaling list is used for the scaling process for transform
|
||||
+ coefficients. The values on each scaling list are expected
|
||||
+ in raster scan order.
|
||||
+ * - __u8
|
||||
+ - ``scaling_list_32x32[2][64]``
|
||||
+ - Scaling list is used for the scaling process for transform
|
||||
+ coefficients. The values on each scaling list are expected
|
||||
+ in raster scan order.
|
||||
+ * - __u8
|
||||
+ - ``scaling_list_dc_coef_16x16[6]``
|
||||
+ - Scaling list is used for the scaling process for transform
|
||||
+ coefficients. The values on each scaling list are expected
|
||||
+ in raster scan order.
|
||||
+ * - __u8
|
||||
+ - ``scaling_list_dc_coef_32x32[2]``
|
||||
+ - Scaling list is used for the scaling process for transform
|
||||
+ coefficients. The values on each scaling list are expected
|
||||
+ in raster scan order.
|
||||
+
|
||||
+.. raw:: latex
|
||||
+
|
||||
+ \normalsize
|
||||
+
|
||||
.. c:type:: v4l2_hevc_dpb_entry
|
||||
|
||||
.. raw:: latex
|
||||
diff --git a/Documentation/userspace-api/media/v4l/vidioc-queryctrl.rst b/Documentation/userspace-api/media/v4l/vidioc-queryctrl.rst
|
||||
index f9ecf6276129..2f491c17dd5d 100644
|
||||
--- a/Documentation/userspace-api/media/v4l/vidioc-queryctrl.rst
|
||||
+++ b/Documentation/userspace-api/media/v4l/vidioc-queryctrl.rst
|
||||
@@ -495,6 +495,12 @@ See also the examples in :ref:`control`.
|
||||
- n/a
|
||||
- A struct :c:type:`v4l2_ctrl_hevc_slice_params`, containing HEVC
|
||||
slice parameters for stateless video decoders.
|
||||
+ * - ``V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX``
|
||||
+ - n/a
|
||||
+ - n/a
|
||||
+ - n/a
|
||||
+ - A struct :c:type:`v4l2_ctrl_hevc_scaling_matrix`, containing HEVC
|
||||
+ scaling matrix for stateless video decoders.
|
||||
* - ``V4L2_CTRL_TYPE_VP8_FRAME``
|
||||
- n/a
|
||||
- n/a
|
||||
diff --git a/drivers/media/v4l2-core/v4l2-ctrls-core.c b/drivers/media/v4l2-core/v4l2-ctrls-core.c
|
||||
index b4802c9989fd..f557aca9d966 100644
|
||||
--- a/drivers/media/v4l2-core/v4l2-ctrls-core.c
|
||||
+++ b/drivers/media/v4l2-core/v4l2-ctrls-core.c
|
||||
@@ -906,6 +906,9 @@ static int std_validate_compound(const struct v4l2_ctrl *ctrl, u32 idx,
|
||||
|
||||
break;
|
||||
|
||||
+ case V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX:
|
||||
+ break;
|
||||
+
|
||||
case V4L2_CTRL_TYPE_AREA:
|
||||
area = p;
|
||||
if (!area->width || !area->height)
|
||||
@@ -1465,6 +1468,9 @@ static struct v4l2_ctrl *v4l2_ctrl_new(struct v4l2_ctrl_handler *hdl,
|
||||
case V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS:
|
||||
elem_size = sizeof(struct v4l2_ctrl_hevc_slice_params);
|
||||
break;
|
||||
+ case V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX:
|
||||
+ elem_size = sizeof(struct v4l2_ctrl_hevc_scaling_matrix);
|
||||
+ break;
|
||||
case V4L2_CTRL_TYPE_HEVC_DECODE_PARAMS:
|
||||
elem_size = sizeof(struct v4l2_ctrl_hevc_decode_params);
|
||||
break;
|
||||
diff --git a/drivers/media/v4l2-core/v4l2-ctrls-defs.c b/drivers/media/v4l2-core/v4l2-ctrls-defs.c
|
||||
index 22a031e25499..bca21812e216 100644
|
||||
--- a/drivers/media/v4l2-core/v4l2-ctrls-defs.c
|
||||
+++ b/drivers/media/v4l2-core/v4l2-ctrls-defs.c
|
||||
@@ -1001,6 +1001,7 @@ const char *v4l2_ctrl_get_name(u32 id)
|
||||
case V4L2_CID_MPEG_VIDEO_HEVC_SPS: return "HEVC Sequence Parameter Set";
|
||||
case V4L2_CID_MPEG_VIDEO_HEVC_PPS: return "HEVC Picture Parameter Set";
|
||||
case V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS: return "HEVC Slice Parameters";
|
||||
+ case V4L2_CID_MPEG_VIDEO_HEVC_SCALING_MATRIX: return "HEVC Scaling Matrix";
|
||||
case V4L2_CID_MPEG_VIDEO_HEVC_DECODE_PARAMS: return "HEVC Decode Parameters";
|
||||
case V4L2_CID_MPEG_VIDEO_HEVC_DECODE_MODE: return "HEVC Decode Mode";
|
||||
case V4L2_CID_MPEG_VIDEO_HEVC_START_CODE: return "HEVC Start Code";
|
||||
@@ -1502,6 +1503,9 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,
|
||||
case V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS:
|
||||
*type = V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS;
|
||||
break;
|
||||
+ case V4L2_CID_MPEG_VIDEO_HEVC_SCALING_MATRIX:
|
||||
+ *type = V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX;
|
||||
+ break;
|
||||
case V4L2_CID_MPEG_VIDEO_HEVC_DECODE_PARAMS:
|
||||
*type = V4L2_CTRL_TYPE_HEVC_DECODE_PARAMS;
|
||||
break;
|
||||
diff --git a/include/media/hevc-ctrls.h b/include/media/hevc-ctrls.h
|
||||
index 53c0038c792b..0e5c4a2eecff 100644
|
||||
--- a/include/media/hevc-ctrls.h
|
||||
+++ b/include/media/hevc-ctrls.h
|
||||
@@ -19,6 +19,7 @@
|
||||
#define V4L2_CID_MPEG_VIDEO_HEVC_SPS (V4L2_CID_CODEC_BASE + 1008)
|
||||
#define V4L2_CID_MPEG_VIDEO_HEVC_PPS (V4L2_CID_CODEC_BASE + 1009)
|
||||
#define V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS (V4L2_CID_CODEC_BASE + 1010)
|
||||
+#define V4L2_CID_MPEG_VIDEO_HEVC_SCALING_MATRIX (V4L2_CID_CODEC_BASE + 1011)
|
||||
#define V4L2_CID_MPEG_VIDEO_HEVC_DECODE_PARAMS (V4L2_CID_CODEC_BASE + 1012)
|
||||
#define V4L2_CID_MPEG_VIDEO_HEVC_DECODE_MODE (V4L2_CID_CODEC_BASE + 1015)
|
||||
#define V4L2_CID_MPEG_VIDEO_HEVC_START_CODE (V4L2_CID_CODEC_BASE + 1016)
|
||||
@@ -27,6 +28,7 @@
|
||||
#define V4L2_CTRL_TYPE_HEVC_SPS 0x0120
|
||||
#define V4L2_CTRL_TYPE_HEVC_PPS 0x0121
|
||||
#define V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS 0x0122
|
||||
+#define V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX 0x0123
|
||||
#define V4L2_CTRL_TYPE_HEVC_DECODE_PARAMS 0x0124
|
||||
|
||||
enum v4l2_mpeg_video_hevc_decode_mode {
|
||||
@@ -224,6 +226,15 @@ struct v4l2_ctrl_hevc_decode_params {
|
||||
__u64 flags;
|
||||
};
|
||||
|
||||
+struct v4l2_ctrl_hevc_scaling_matrix {
|
||||
+ __u8 scaling_list_4x4[6][16];
|
||||
+ __u8 scaling_list_8x8[6][64];
|
||||
+ __u8 scaling_list_16x16[6][64];
|
||||
+ __u8 scaling_list_32x32[2][64];
|
||||
+ __u8 scaling_list_dc_coef_16x16[6];
|
||||
+ __u8 scaling_list_dc_coef_32x32[2];
|
||||
+};
|
||||
+
|
||||
/* MPEG-class control IDs specific to the Hantro driver as defined by V4L2 */
|
||||
#define V4L2_CID_CODEC_HANTRO_BASE (V4L2_CTRL_CLASS_CODEC | 0x1200)
|
||||
/*
|
||||
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Sat, 23 May 2020 15:03:46 +0000
|
||||
@ -3511,9 +3320,9 @@ index da32a6350344..4fb05e8b5a54 100644
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, of_rkvdec_match);
|
||||
@@ -1218,6 +1255,7 @@ static int rkvdec_probe(struct platform_device *pdev)
|
||||
static int rkvdec_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct rkvdec_dev *rkvdec;
|
||||
struct resource *res;
|
||||
+ const struct rkvdec_variant *variant;
|
||||
unsigned int i;
|
||||
int ret, irq;
|
||||
|
Loading…
x
Reference in New Issue
Block a user