mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-31 06:36:41 +00:00
linux (Rockchip): drop upstream and rebase patches for 6.14.5
- dad35f7d2f
- https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c?h=v6.14.5&id=f8122cf072e6dc08f96b3b253629c20b58e0fbcc
This commit is contained in:
parent
390d63e726
commit
7735b98756
@ -26,7 +26,7 @@ diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
|
|||||||
index ef53a2578824..d4c53074154a 100644
|
index ef53a2578824..d4c53074154a 100644
|
||||||
--- a/drivers/mmc/core/core.c
|
--- a/drivers/mmc/core/core.c
|
||||||
+++ b/drivers/mmc/core/core.c
|
+++ b/drivers/mmc/core/core.c
|
||||||
@@ -1358,6 +1358,14 @@ void mmc_power_off(struct mmc_host *host)
|
@@ -1368,6 +1368,14 @@ void mmc_power_off(struct mmc_host *host)
|
||||||
if (host->ios.power_mode == MMC_POWER_OFF)
|
if (host->ios.power_mode == MMC_POWER_OFF)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -42,90 +42,3 @@ index ef53a2578824..d4c53074154a 100644
|
|||||||
|
|
||||||
host->ios.clock = 0;
|
host->ios.clock = 0;
|
||||||
|
|
||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Alex Bee <knaerzche@gmail.com>
|
|
||||||
Date: Wed, 23 Jun 2021 16:59:18 +0200
|
|
||||||
Subject: [PATCH] arm64: dts: rockchip: Add sdmmc_ext for RK3328
|
|
||||||
|
|
||||||
RK3328 SoC has a fourth mmc controller called SDMMC_EXT. Some
|
|
||||||
boards have sdio wifi connected to it. In order to use it
|
|
||||||
one would have to add the pinctrls from sdmmc0ext group which
|
|
||||||
is done on board level.
|
|
||||||
|
|
||||||
Signed-off-by: Alex Bee <knaerzche@gmail.com>
|
|
||||||
---
|
|
||||||
arch/arm64/boot/dts/rockchip/rk3328.dtsi | 14 ++++++++++++++
|
|
||||||
1 file changed, 14 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3328.dtsi b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
|
||||||
index 49ae15708a0b..60348d517efb 100644
|
|
||||||
--- a/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
|
||||||
+++ b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
|
||||||
@@ -993,6 +993,20 @@ usb_host0_ohci: usb@ff5d0000 {
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
|
|
||||||
+ sdmmc_ext: mmc@ff5f0000 {
|
|
||||||
+ compatible = "rockchip,rk3328-dw-mshc", "rockchip,rk3288-dw-mshc";
|
|
||||||
+ reg = <0x0 0xff5f0000 0x0 0x4000>;
|
|
||||||
+ interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
+ clocks = <&cru HCLK_SDMMC_EXT>, <&cru SCLK_SDMMC_EXT>,
|
|
||||||
+ <&cru SCLK_SDMMC_EXT_DRV>, <&cru SCLK_SDMMC_EXT_SAMPLE>;
|
|
||||||
+ clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
|
|
||||||
+ fifo-depth = <0x100>;
|
|
||||||
+ max-frequency = <150000000>;
|
|
||||||
+ resets = <&cru SRST_SDMMCEXT>;
|
|
||||||
+ reset-names = "reset";
|
|
||||||
+ status = "disabled";
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
usbdrd3: usb@ff600000 {
|
|
||||||
compatible = "rockchip,rk3328-dwc3", "snps,dwc3";
|
|
||||||
reg = <0x0 0xff600000 0x0 0x100000>;
|
|
||||||
|
|
||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Alex Bee <knaerzche@gmail.com>
|
|
||||||
Date: Wed, 23 Jun 2021 17:02:08 +0200
|
|
||||||
Subject: [PATCH] arm64: dts: rockchip: Add sdmmc/sdio/emmc reset controls for
|
|
||||||
RK3328
|
|
||||||
|
|
||||||
The DW MCI controller driver will use them to reset the IP block before
|
|
||||||
initialisation.
|
|
||||||
|
|
||||||
Fixes: d717f7352ec6 ("arm64: dts: rockchip: add sdmmc/sdio/emmc nodes for RK3328 SoCs")
|
|
||||||
Signed-off-by: Alex Bee <knaerzche@gmail.com>
|
|
||||||
---
|
|
||||||
arch/arm64/boot/dts/rockchip/rk3328.dtsi | 6 ++++++
|
|
||||||
1 file changed, 6 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3328.dtsi b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
|
||||||
index 60348d517efb..d7e44d174d7b 100644
|
|
||||||
--- a/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
|
||||||
+++ b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
|
||||||
@@ -871,6 +871,8 @@ sdmmc: mmc@ff500000 {
|
|
||||||
clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
|
|
||||||
fifo-depth = <0x100>;
|
|
||||||
max-frequency = <150000000>;
|
|
||||||
+ resets = <&cru SRST_MMC0>;
|
|
||||||
+ reset-names = "reset";
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
|
|
||||||
@@ -883,6 +885,8 @@ sdio: mmc@ff510000 {
|
|
||||||
clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
|
|
||||||
fifo-depth = <0x100>;
|
|
||||||
max-frequency = <150000000>;
|
|
||||||
+ resets = <&cru SRST_SDIO>;
|
|
||||||
+ reset-names = "reset";
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
|
|
||||||
@@ -895,6 +899,8 @@ emmc: mmc@ff520000 {
|
|
||||||
clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
|
|
||||||
fifo-depth = <0x100>;
|
|
||||||
max-frequency = <150000000>;
|
|
||||||
+ resets = <&cru SRST_EMMC>;
|
|
||||||
+ reset-names = "reset";
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
|
|
||||||
|
@ -1,236 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jonas Karlman <jonas@kwiboo.se>
|
|
||||||
Date: Mon, 6 Jul 2020 22:30:13 +0000
|
|
||||||
Subject: [PATCH] drm: drm_fourcc: add NV20 and NV30 YUV formats
|
|
||||||
|
|
||||||
DRM_FORMAT_NV20 and DRM_FORMAT_NV30 formats is the 2x1 and non-subsampled
|
|
||||||
variant of NV15, a 10-bit 2-plane YUV format that has no padding between
|
|
||||||
components. Instead, luminance and chrominance samples are grouped into 4s
|
|
||||||
so that each group is packed into an integer number of bytes:
|
|
||||||
|
|
||||||
YYYY = UVUV = 4 * 10 bits = 40 bits = 5 bytes
|
|
||||||
|
|
||||||
The '20' and '30' suffix refers to the optimum effective bits per pixel
|
|
||||||
which is achieved when the total number of luminance samples is a multiple
|
|
||||||
of 4.
|
|
||||||
|
|
||||||
V2: Added NV30 format
|
|
||||||
|
|
||||||
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
||||||
Reviewed-by: Sandy Huang <hjc@rock-chips.com>
|
|
||||||
---
|
|
||||||
drivers/gpu/drm/drm_fourcc.c | 8 ++++++++
|
|
||||||
include/uapi/drm/drm_fourcc.h | 2 ++
|
|
||||||
2 files changed, 10 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/drm/drm_fourcc.c b/drivers/gpu/drm/drm_fourcc.c
|
|
||||||
index 07741b678798..5ec38456dc5d 100644
|
|
||||||
--- a/drivers/gpu/drm/drm_fourcc.c
|
|
||||||
+++ b/drivers/gpu/drm/drm_fourcc.c
|
|
||||||
@@ -261,6 +261,14 @@ const struct drm_format_info *__drm_format_info(u32 format)
|
|
||||||
.num_planes = 2, .char_per_block = { 5, 5, 0 },
|
|
||||||
.block_w = { 4, 2, 0 }, .block_h = { 1, 1, 0 }, .hsub = 2,
|
|
||||||
.vsub = 2, .is_yuv = true },
|
|
||||||
+ { .format = DRM_FORMAT_NV20, .depth = 0,
|
|
||||||
+ .num_planes = 2, .char_per_block = { 5, 5, 0 },
|
|
||||||
+ .block_w = { 4, 2, 0 }, .block_h = { 1, 1, 0 }, .hsub = 2,
|
|
||||||
+ .vsub = 1, .is_yuv = true },
|
|
||||||
+ { .format = DRM_FORMAT_NV30, .depth = 0,
|
|
||||||
+ .num_planes = 2, .char_per_block = { 5, 5, 0 },
|
|
||||||
+ .block_w = { 4, 2, 0 }, .block_h = { 1, 1, 0 }, .hsub = 1,
|
|
||||||
+ .vsub = 1, .is_yuv = true },
|
|
||||||
{ .format = DRM_FORMAT_Q410, .depth = 0,
|
|
||||||
.num_planes = 3, .char_per_block = { 2, 2, 2 },
|
|
||||||
.block_w = { 1, 1, 1 }, .block_h = { 1, 1, 1 }, .hsub = 0,
|
|
||||||
diff --git a/include/uapi/drm/drm_fourcc.h b/include/uapi/drm/drm_fourcc.h
|
|
||||||
index 0206f812c569..fa49ee98f275 100644
|
|
||||||
--- a/include/uapi/drm/drm_fourcc.h
|
|
||||||
+++ b/include/uapi/drm/drm_fourcc.h
|
|
||||||
@@ -285,6 +285,8 @@ extern "C" {
|
|
||||||
* index 1 = Cr:Cb plane, [39:0] Cr1:Cb1:Cr0:Cb0 little endian
|
|
||||||
*/
|
|
||||||
#define DRM_FORMAT_NV15 fourcc_code('N', 'V', '1', '5') /* 2x2 subsampled Cr:Cb plane */
|
|
||||||
+#define DRM_FORMAT_NV20 fourcc_code('N', 'V', '2', '0') /* 2x1 subsampled Cr:Cb plane */
|
|
||||||
+#define DRM_FORMAT_NV30 fourcc_code('N', 'V', '3', '0') /* non-subsampled Cr:Cb plane */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* 2 plane YCbCr MSB aligned
|
|
||||||
|
|
||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jonas Karlman <jonas@kwiboo.se>
|
|
||||||
Date: Mon, 6 Jul 2020 22:30:13 +0000
|
|
||||||
Subject: [PATCH] drm: rockchip: add NV15, NV20 and NV30 support
|
|
||||||
|
|
||||||
Add support for displaying 10-bit 4:2:0 and 4:2:2 formats produced by the
|
|
||||||
Rockchip Video Decoder on RK322X, RK3288, RK3328, RK3368 and RK3399.
|
|
||||||
Also add support for 10-bit 4:4:4 format while at it.
|
|
||||||
|
|
||||||
V2: Added NV30 support
|
|
||||||
|
|
||||||
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
||||||
Reviewed-by: Sandy Huang <hjc@rock-chips.com>
|
|
||||||
---
|
|
||||||
drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 29 +++++++++++++++++--
|
|
||||||
drivers/gpu/drm/rockchip/rockchip_drm_vop.h | 1 +
|
|
||||||
drivers/gpu/drm/rockchip/rockchip_vop_reg.c | 32 +++++++++++++++++----
|
|
||||||
3 files changed, 54 insertions(+), 8 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
|
|
||||||
index d32117633efe..9e71263ac770 100644
|
|
||||||
--- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
|
|
||||||
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
|
|
||||||
@@ -280,6 +280,18 @@ static bool has_uv_swapped(uint32_t format)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
+static bool is_fmt_10(uint32_t format)
|
|
||||||
+{
|
|
||||||
+ switch (format) {
|
|
||||||
+ case DRM_FORMAT_NV15:
|
|
||||||
+ case DRM_FORMAT_NV20:
|
|
||||||
+ case DRM_FORMAT_NV30:
|
|
||||||
+ return true;
|
|
||||||
+ default:
|
|
||||||
+ return false;
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static enum vop_data_format vop_convert_format(uint32_t format)
|
|
||||||
{
|
|
||||||
switch (format) {
|
|
||||||
@@ -295,12 +307,15 @@ static enum vop_data_format vop_convert_format(uint32_t format)
|
|
||||||
case DRM_FORMAT_BGR565:
|
|
||||||
return VOP_FMT_RGB565;
|
|
||||||
case DRM_FORMAT_NV12:
|
|
||||||
+ case DRM_FORMAT_NV15:
|
|
||||||
case DRM_FORMAT_NV21:
|
|
||||||
return VOP_FMT_YUV420SP;
|
|
||||||
case DRM_FORMAT_NV16:
|
|
||||||
+ case DRM_FORMAT_NV20:
|
|
||||||
case DRM_FORMAT_NV61:
|
|
||||||
return VOP_FMT_YUV422SP;
|
|
||||||
case DRM_FORMAT_NV24:
|
|
||||||
+ case DRM_FORMAT_NV30:
|
|
||||||
case DRM_FORMAT_NV42:
|
|
||||||
return VOP_FMT_YUV444SP;
|
|
||||||
default:
|
|
||||||
@@ -954,7 +969,12 @@ static void vop_plane_atomic_update(struct drm_plane *plane,
|
|
||||||
dsp_sty = dest->y1 + crtc->mode.vtotal - crtc->mode.vsync_start;
|
|
||||||
dsp_st = dsp_sty << 16 | (dsp_stx & 0xffff);
|
|
||||||
|
|
||||||
- offset = (src->x1 >> 16) * fb->format->cpp[0];
|
|
||||||
+ if (fb->format->block_w[0])
|
|
||||||
+ offset = (src->x1 >> 16) * fb->format->char_per_block[0] /
|
|
||||||
+ fb->format->block_w[0];
|
|
||||||
+ else
|
|
||||||
+ offset = (src->x1 >> 16) * fb->format->cpp[0];
|
|
||||||
+
|
|
||||||
offset += (src->y1 >> 16) * fb->pitches[0];
|
|
||||||
dma_addr = rk_obj->dma_addr + offset + fb->offsets[0];
|
|
||||||
|
|
||||||
@@ -980,6 +1000,7 @@ static void vop_plane_atomic_update(struct drm_plane *plane,
|
|
||||||
}
|
|
||||||
|
|
||||||
VOP_WIN_SET(vop, win, format, format);
|
|
||||||
+ VOP_WIN_SET(vop, win, fmt_10, is_fmt_10(fb->format->format));
|
|
||||||
VOP_WIN_SET(vop, win, yrgb_vir, DIV_ROUND_UP(fb->pitches[0], 4));
|
|
||||||
VOP_WIN_SET(vop, win, yrgb_mst, dma_addr);
|
|
||||||
VOP_WIN_YUV2YUV_SET(vop, win_yuv2yuv, y2r_en, is_yuv);
|
|
||||||
@@ -996,7 +1017,11 @@ static void vop_plane_atomic_update(struct drm_plane *plane,
|
|
||||||
uv_obj = fb->obj[1];
|
|
||||||
rk_uv_obj = to_rockchip_obj(uv_obj);
|
|
||||||
|
|
||||||
- offset = (src->x1 >> 16) * bpp / hsub;
|
|
||||||
+ if (fb->format->block_w[1])
|
|
||||||
+ offset = (src->x1 >> 16) * bpp /
|
|
||||||
+ fb->format->block_w[1] / hsub;
|
|
||||||
+ else
|
|
||||||
+ offset = (src->x1 >> 16) * bpp / hsub;
|
|
||||||
offset += (src->y1 >> 16) * fb->pitches[1] / vsub;
|
|
||||||
|
|
||||||
dma_addr = rk_uv_obj->dma_addr + offset + fb->offsets[1];
|
|
||||||
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.h b/drivers/gpu/drm/rockchip/rockchip_drm_vop.h
|
|
||||||
index 8502849833d9..b6eea31109d5 100644
|
|
||||||
--- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.h
|
|
||||||
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.h
|
|
||||||
@@ -181,6 +181,7 @@ struct vop_win_phy {
|
|
||||||
struct vop_reg enable;
|
|
||||||
struct vop_reg gate;
|
|
||||||
struct vop_reg format;
|
|
||||||
+ struct vop_reg fmt_10;
|
|
||||||
struct vop_reg rb_swap;
|
|
||||||
struct vop_reg uv_swap;
|
|
||||||
struct vop_reg act_info;
|
|
||||||
diff --git a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c
|
|
||||||
index 014f99e8928e..16e6aa01e400 100644
|
|
||||||
--- a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c
|
|
||||||
+++ b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c
|
|
||||||
@@ -53,6 +53,23 @@ static const uint32_t formats_win_full[] = {
|
|
||||||
DRM_FORMAT_NV42,
|
|
||||||
};
|
|
||||||
|
|
||||||
+static const uint32_t formats_win_full_10[] = {
|
|
||||||
+ DRM_FORMAT_XRGB8888,
|
|
||||||
+ DRM_FORMAT_ARGB8888,
|
|
||||||
+ DRM_FORMAT_XBGR8888,
|
|
||||||
+ DRM_FORMAT_ABGR8888,
|
|
||||||
+ DRM_FORMAT_RGB888,
|
|
||||||
+ DRM_FORMAT_BGR888,
|
|
||||||
+ DRM_FORMAT_RGB565,
|
|
||||||
+ DRM_FORMAT_BGR565,
|
|
||||||
+ DRM_FORMAT_NV12,
|
|
||||||
+ DRM_FORMAT_NV16,
|
|
||||||
+ DRM_FORMAT_NV24,
|
|
||||||
+ DRM_FORMAT_NV15,
|
|
||||||
+ DRM_FORMAT_NV20,
|
|
||||||
+ DRM_FORMAT_NV30,
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
static const uint64_t format_modifiers_win_full[] = {
|
|
||||||
DRM_FORMAT_MOD_LINEAR,
|
|
||||||
DRM_FORMAT_MOD_INVALID,
|
|
||||||
@@ -621,11 +638,12 @@ static const struct vop_scl_regs rk3288_win_full_scl = {
|
|
||||||
|
|
||||||
static const struct vop_win_phy rk3288_win01_data = {
|
|
||||||
.scl = &rk3288_win_full_scl,
|
|
||||||
- .data_formats = formats_win_full,
|
|
||||||
- .nformats = ARRAY_SIZE(formats_win_full),
|
|
||||||
+ .data_formats = formats_win_full_10,
|
|
||||||
+ .nformats = ARRAY_SIZE(formats_win_full_10),
|
|
||||||
.format_modifiers = format_modifiers_win_full,
|
|
||||||
.enable = VOP_REG(RK3288_WIN0_CTRL0, 0x1, 0),
|
|
||||||
.format = VOP_REG(RK3288_WIN0_CTRL0, 0x7, 1),
|
|
||||||
+ .fmt_10 = VOP_REG(RK3288_WIN0_CTRL0, 0x1, 4),
|
|
||||||
.rb_swap = VOP_REG(RK3288_WIN0_CTRL0, 0x1, 12),
|
|
||||||
.uv_swap = VOP_REG(RK3288_WIN0_CTRL0, 0x1, 15),
|
|
||||||
.act_info = VOP_REG(RK3288_WIN0_ACT_INFO, 0x1fff1fff, 0),
|
|
||||||
@@ -756,11 +774,12 @@ static const struct vop_intr rk3368_vop_intr = {
|
|
||||||
|
|
||||||
static const struct vop_win_phy rk3368_win01_data = {
|
|
||||||
.scl = &rk3288_win_full_scl,
|
|
||||||
- .data_formats = formats_win_full,
|
|
||||||
- .nformats = ARRAY_SIZE(formats_win_full),
|
|
||||||
+ .data_formats = formats_win_full_10,
|
|
||||||
+ .nformats = ARRAY_SIZE(formats_win_full_10),
|
|
||||||
.format_modifiers = format_modifiers_win_full,
|
|
||||||
.enable = VOP_REG(RK3368_WIN0_CTRL0, 0x1, 0),
|
|
||||||
.format = VOP_REG(RK3368_WIN0_CTRL0, 0x7, 1),
|
|
||||||
+ .fmt_10 = VOP_REG(RK3368_WIN0_CTRL0, 0x1, 4),
|
|
||||||
.rb_swap = VOP_REG(RK3368_WIN0_CTRL0, 0x1, 12),
|
|
||||||
.uv_swap = VOP_REG(RK3368_WIN0_CTRL0, 0x1, 15),
|
|
||||||
.x_mir_en = VOP_REG(RK3368_WIN0_CTRL0, 0x1, 21),
|
|
||||||
@@ -924,11 +943,12 @@ static const struct vop_win_yuv2yuv_data rk3399_vop_big_win_yuv2yuv_data[] = {
|
|
||||||
|
|
||||||
static const struct vop_win_phy rk3399_win01_data = {
|
|
||||||
.scl = &rk3288_win_full_scl,
|
|
||||||
- .data_formats = formats_win_full,
|
|
||||||
- .nformats = ARRAY_SIZE(formats_win_full),
|
|
||||||
+ .data_formats = formats_win_full_10,
|
|
||||||
+ .nformats = ARRAY_SIZE(formats_win_full_10),
|
|
||||||
.format_modifiers = format_modifiers_win_full_afbc,
|
|
||||||
.enable = VOP_REG(RK3288_WIN0_CTRL0, 0x1, 0),
|
|
||||||
.format = VOP_REG(RK3288_WIN0_CTRL0, 0x7, 1),
|
|
||||||
+ .fmt_10 = VOP_REG(RK3288_WIN0_CTRL0, 0x1, 4),
|
|
||||||
.rb_swap = VOP_REG(RK3288_WIN0_CTRL0, 0x1, 12),
|
|
||||||
.uv_swap = VOP_REG(RK3288_WIN0_CTRL0, 0x1, 15),
|
|
||||||
.x_mir_en = VOP_REG(RK3288_WIN0_CTRL0, 0x1, 21),
|
|
@ -19,7 +19,7 @@ diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockc
|
|||||||
index dbe4d411b30f..fac23d370ee0 100644
|
index dbe4d411b30f..fac23d370ee0 100644
|
||||||
--- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
|
--- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
|
||||||
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
|
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
|
||||||
@@ -1206,6 +1206,59 @@ static void vop_crtc_disable_vblank(struct drm_crtc *crtc)
|
@@ -1207,6 +1207,59 @@ static void vop_crtc_disable_vblank(struct drm_crtc *crtc)
|
||||||
spin_unlock_irqrestore(&vop->irq_lock, flags);
|
spin_unlock_irqrestore(&vop->irq_lock, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -97,7 +97,7 @@ diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockc
|
|||||||
index fac23d370ee0..9f7326c5b1f5 100644
|
index fac23d370ee0..9f7326c5b1f5 100644
|
||||||
--- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
|
--- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
|
||||||
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
|
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
|
||||||
@@ -1244,6 +1244,9 @@ static enum drm_mode_status vop_crtc_mode_valid(struct drm_crtc *crtc,
|
@@ -1245,6 +1245,9 @@ static enum drm_mode_status vop_crtc_mode_valid(struct drm_crtc *crtc,
|
||||||
if (!vop_crtc_is_tmds(crtc))
|
if (!vop_crtc_is_tmds(crtc))
|
||||||
return MODE_OK;
|
return MODE_OK;
|
||||||
|
|
||||||
@ -125,7 +125,7 @@ diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockc
|
|||||||
index 9f7326c5b1f5..30e252ba7184 100644
|
index 9f7326c5b1f5..30e252ba7184 100644
|
||||||
--- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
|
--- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
|
||||||
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
|
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
|
||||||
@@ -1228,6 +1228,24 @@ static bool vop_crtc_is_tmds(struct drm_crtc *crtc)
|
@@ -1229,6 +1229,24 @@ static bool vop_crtc_is_tmds(struct drm_crtc *crtc)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -150,7 +150,7 @@ index 9f7326c5b1f5..30e252ba7184 100644
|
|||||||
/*
|
/*
|
||||||
* The VESA DMT standard specifies a 0.5% pixel clock frequency tolerance.
|
* The VESA DMT standard specifies a 0.5% pixel clock frequency tolerance.
|
||||||
* The CVT spec reuses that tolerance in its examples.
|
* The CVT spec reuses that tolerance in its examples.
|
||||||
@@ -1241,25 +1259,24 @@ static enum drm_mode_status vop_crtc_mode_valid(struct drm_crtc *crtc,
|
@@ -1242,25 +1260,24 @@ static enum drm_mode_status vop_crtc_mode_valid(struct drm_crtc *crtc,
|
||||||
long rounded_rate;
|
long rounded_rate;
|
||||||
long lowest, highest;
|
long lowest, highest;
|
||||||
|
|
||||||
@ -189,7 +189,7 @@ index 9f7326c5b1f5..30e252ba7184 100644
|
|||||||
}
|
}
|
||||||
|
|
||||||
static bool vop_crtc_mode_fixup(struct drm_crtc *crtc,
|
static bool vop_crtc_mode_fixup(struct drm_crtc *crtc,
|
||||||
@@ -1269,6 +1286,9 @@ static bool vop_crtc_mode_fixup(struct drm_crtc *crtc,
|
@@ -1270,6 +1287,9 @@ static bool vop_crtc_mode_fixup(struct drm_crtc *crtc,
|
||||||
struct vop *vop = to_vop(crtc);
|
struct vop *vop = to_vop(crtc);
|
||||||
unsigned long rate;
|
unsigned long rate;
|
||||||
|
|
||||||
@ -200,391 +200,6 @@ index 9f7326c5b1f5..30e252ba7184 100644
|
|||||||
* Clock craziness.
|
* Clock craziness.
|
||||||
*
|
*
|
||||||
|
|
||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Yakir Yang <ykk@rock-chips.com>
|
|
||||||
Date: Mon, 11 Jul 2016 19:05:39 +0800
|
|
||||||
Subject: [PATCH] drm/rockchip: dw_hdmi: adjust cklvl & txlvl for RF/EMI
|
|
||||||
|
|
||||||
Dut to the high HDMI signal voltage driver, Mickey have meet
|
|
||||||
a serious RF/EMI problem, so we decided to reduce HDMI signal
|
|
||||||
voltage to a proper value.
|
|
||||||
|
|
||||||
The default params for phy is cklvl = 20 & txlvl = 13 (RF/EMI failed)
|
|
||||||
ck: lvl = 13, term=100, vlo = 2.71, vhi=3.14, vswing = 0.43
|
|
||||||
tx: lvl = 20, term=100, vlo = 2.81, vhi=3.16, vswing = 0.35
|
|
||||||
|
|
||||||
1. We decided to reduce voltage value to lower, but VSwing still
|
|
||||||
keep high, RF/EMI have been improved but still failed.
|
|
||||||
ck: lvl = 6, term=100, vlo = 2.61, vhi=3.11, vswing = 0.50
|
|
||||||
tx: lvl = 6, term=100, vlo = 2.61, vhi=3.11, vswing = 0.50
|
|
||||||
|
|
||||||
2. We try to keep voltage value and vswing both lower, then RF/EMI
|
|
||||||
test all passed ;)
|
|
||||||
ck: lvl = 11, term= 66, vlo = 2.68, vhi=3.09, vswing = 0.40
|
|
||||||
tx: lvl = 11, term= 66, vlo = 2.68, vhi=3.09, vswing = 0.40
|
|
||||||
When we back to run HDMI different test and single-end test, we see
|
|
||||||
different test passed, but signle-end test failed. The oscilloscope
|
|
||||||
show that simgle-end clock's VL value is 1.78v (which remind LowLimit
|
|
||||||
should not lower then 2.6v).
|
|
||||||
|
|
||||||
3. That's to say there are some different between PHY document and
|
|
||||||
measure value. And according to experiment 2 results, we need to
|
|
||||||
higher clock voltage and lower data voltage, then we can keep RF/EMI
|
|
||||||
satisfied and single-end & differen test passed.
|
|
||||||
ck: lvl = 9, term=100, vlo = 2.65, vhi=3.12, vswing = 0.47
|
|
||||||
tx: lvl = 16, term=100, vlo = 2.75, vhi=3.15, vswing = 0.39
|
|
||||||
|
|
||||||
Signed-off-by: Yakir Yang <ykk@rock-chips.com>
|
|
||||||
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
||||||
---
|
|
||||||
drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
|
||||||
index c14f88893868..4411ca8fd7ed 100644
|
|
||||||
--- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
|
||||||
+++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
|
||||||
@@ -193,7 +193,7 @@ static const struct dw_hdmi_curr_ctrl rockchip_cur_ctr[] = {
|
|
||||||
static const struct dw_hdmi_phy_config rockchip_phy_config[] = {
|
|
||||||
/*pixelclk symbol term vlev*/
|
|
||||||
{ 74250000, 0x8009, 0x0004, 0x0272},
|
|
||||||
- { 148500000, 0x802b, 0x0004, 0x028d},
|
|
||||||
+ { 165000000, 0x802b, 0x0004, 0x0209},
|
|
||||||
{ 297000000, 0x8039, 0x0005, 0x028d},
|
|
||||||
{ ~0UL, 0x0000, 0x0000, 0x0000}
|
|
||||||
};
|
|
||||||
|
|
||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Nickey Yang <nickey.yang@rock-chips.com>
|
|
||||||
Date: Mon, 13 Feb 2017 15:40:29 +0800
|
|
||||||
Subject: [PATCH] drm/rockchip: dw_hdmi: add phy_config for 594Mhz pixel clock
|
|
||||||
|
|
||||||
Add phy_config for 594Mhz pixel clock used for 4K@60hz
|
|
||||||
|
|
||||||
Signed-off-by: Nickey Yang <nickey.yang@rock-chips.com>
|
|
||||||
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
||||||
---
|
|
||||||
drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 1 +
|
|
||||||
1 file changed, 1 insertion(+)
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
|
||||||
index 4411ca8fd7ed..bec381cde0bc 100644
|
|
||||||
--- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
|
||||||
+++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
|
||||||
@@ -195,6 +195,7 @@ static const struct dw_hdmi_phy_config rockchip_phy_config[] = {
|
|
||||||
{ 74250000, 0x8009, 0x0004, 0x0272},
|
|
||||||
{ 165000000, 0x802b, 0x0004, 0x0209},
|
|
||||||
{ 297000000, 0x8039, 0x0005, 0x028d},
|
|
||||||
+ { 594000000, 0x8039, 0x0000, 0x019d},
|
|
||||||
{ ~0UL, 0x0000, 0x0000, 0x0000}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Douglas Anderson <dianders@chromium.org>
|
|
||||||
Date: Mon, 11 Jul 2016 19:05:36 +0800
|
|
||||||
Subject: [PATCH] drm/rockchip: dw_hdmi: Set cur_ctr to 0 always
|
|
||||||
|
|
||||||
Jitter was improved by lowering the MPLL bandwidth to account for high
|
|
||||||
frequency noise in the rk3288 PLL. In each case MPLL bandwidth was
|
|
||||||
lowered only enough to get us a comfortable margin. We believe that
|
|
||||||
lowering the bandwidth like this is safe given sufficient testing.
|
|
||||||
|
|
||||||
Signed-off-by: Douglas Anderson <dianders@chromium.org>
|
|
||||||
Signed-off-by: Yakir Yang <ykk@rock-chips.com>
|
|
||||||
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
||||||
---
|
|
||||||
drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 16 ++--------------
|
|
||||||
1 file changed, 2 insertions(+), 14 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
|
||||||
index bec381cde0bc..72c1d65c7b75 100644
|
|
||||||
--- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
|
||||||
+++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
|
||||||
@@ -172,20 +172,6 @@ static const struct dw_hdmi_mpll_config rockchip_mpll_cfg[] = {
|
|
||||||
static const struct dw_hdmi_curr_ctrl rockchip_cur_ctr[] = {
|
|
||||||
/* pixelclk bpp8 bpp10 bpp12 */
|
|
||||||
{
|
|
||||||
- 40000000, { 0x0018, 0x0018, 0x0018 },
|
|
||||||
- }, {
|
|
||||||
- 65000000, { 0x0028, 0x0028, 0x0028 },
|
|
||||||
- }, {
|
|
||||||
- 66000000, { 0x0038, 0x0038, 0x0038 },
|
|
||||||
- }, {
|
|
||||||
- 74250000, { 0x0028, 0x0038, 0x0038 },
|
|
||||||
- }, {
|
|
||||||
- 83500000, { 0x0028, 0x0038, 0x0038 },
|
|
||||||
- }, {
|
|
||||||
- 146250000, { 0x0038, 0x0038, 0x0038 },
|
|
||||||
- }, {
|
|
||||||
- 148500000, { 0x0000, 0x0038, 0x0038 },
|
|
||||||
- }, {
|
|
||||||
600000000, { 0x0000, 0x0000, 0x0000 },
|
|
||||||
}, {
|
|
||||||
~0UL, { 0x0000, 0x0000, 0x0000},
|
|
||||||
|
|
||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Douglas Anderson <dianders@chromium.org>
|
|
||||||
Date: Mon, 11 Jul 2016 19:05:42 +0800
|
|
||||||
Subject: [PATCH] drm/rockchip: dw_hdmi: Use auto-generated tables
|
|
||||||
|
|
||||||
The previous tables for mpll_cfg and curr_ctrl were created using the
|
|
||||||
20-pages of example settings provided by the PHY vendor. Those
|
|
||||||
example settings weren't particularly dense, so there were places
|
|
||||||
where we were guessing what the settings would be for 10-bit and
|
|
||||||
12-bit (not that we use those anyway). It was also always a lot of
|
|
||||||
extra work every time we wanted to add a new clock rate since we had
|
|
||||||
to cross-reference several tables.
|
|
||||||
|
|
||||||
In <http://crosreview.com/285855> I've gone through the work to figure
|
|
||||||
out how to generate this table automatically. Let's now use the
|
|
||||||
automatically generated table and then we'll never need to look at it
|
|
||||||
again.
|
|
||||||
|
|
||||||
We only support 8-bit mode right now and only support a small number
|
|
||||||
of clock rates and and I've verified that the only 8-bit rate that was
|
|
||||||
affected was 148.5. That mode appears to have been wrong in the old
|
|
||||||
table.
|
|
||||||
|
|
||||||
Signed-off-by: Douglas Anderson <dianders@chromium.org>
|
|
||||||
Signed-off-by: Yakir Yang <ykk@rock-chips.com>
|
|
||||||
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
||||||
---
|
|
||||||
drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 130 +++++++++++---------
|
|
||||||
1 file changed, 69 insertions(+), 61 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
|
||||||
index 72c1d65c7b75..0370bb247fcb 100644
|
|
||||||
--- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
|
||||||
+++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
|
||||||
@@ -95,86 +95,88 @@
|
|
||||||
|
|
||||||
static const struct dw_hdmi_mpll_config rockchip_mpll_cfg[] = {
|
|
||||||
{
|
|
||||||
- 27000000, {
|
|
||||||
- { 0x00b3, 0x0000},
|
|
||||||
- { 0x2153, 0x0000},
|
|
||||||
- { 0x40f3, 0x0000}
|
|
||||||
- },
|
|
||||||
- }, {
|
|
||||||
- 36000000, {
|
|
||||||
- { 0x00b3, 0x0000},
|
|
||||||
- { 0x2153, 0x0000},
|
|
||||||
- { 0x40f3, 0x0000}
|
|
||||||
- },
|
|
||||||
- }, {
|
|
||||||
- 40000000, {
|
|
||||||
- { 0x00b3, 0x0000},
|
|
||||||
- { 0x2153, 0x0000},
|
|
||||||
- { 0x40f3, 0x0000}
|
|
||||||
- },
|
|
||||||
- }, {
|
|
||||||
- 54000000, {
|
|
||||||
- { 0x0072, 0x0001},
|
|
||||||
- { 0x2142, 0x0001},
|
|
||||||
- { 0x40a2, 0x0001},
|
|
||||||
- },
|
|
||||||
- }, {
|
|
||||||
- 65000000, {
|
|
||||||
- { 0x0072, 0x0001},
|
|
||||||
- { 0x2142, 0x0001},
|
|
||||||
- { 0x40a2, 0x0001},
|
|
||||||
- },
|
|
||||||
- }, {
|
|
||||||
- 66000000, {
|
|
||||||
- { 0x013e, 0x0003},
|
|
||||||
- { 0x217e, 0x0002},
|
|
||||||
- { 0x4061, 0x0002}
|
|
||||||
- },
|
|
||||||
- }, {
|
|
||||||
- 74250000, {
|
|
||||||
- { 0x0072, 0x0001},
|
|
||||||
- { 0x2145, 0x0002},
|
|
||||||
- { 0x4061, 0x0002}
|
|
||||||
- },
|
|
||||||
- }, {
|
|
||||||
- 83500000, {
|
|
||||||
- { 0x0072, 0x0001},
|
|
||||||
- },
|
|
||||||
- }, {
|
|
||||||
- 108000000, {
|
|
||||||
- { 0x0051, 0x0002},
|
|
||||||
- { 0x2145, 0x0002},
|
|
||||||
- { 0x4061, 0x0002}
|
|
||||||
- },
|
|
||||||
- }, {
|
|
||||||
- 106500000, {
|
|
||||||
- { 0x0051, 0x0002},
|
|
||||||
- { 0x2145, 0x0002},
|
|
||||||
- { 0x4061, 0x0002}
|
|
||||||
- },
|
|
||||||
- }, {
|
|
||||||
- 146250000, {
|
|
||||||
- { 0x0051, 0x0002},
|
|
||||||
- { 0x2145, 0x0002},
|
|
||||||
- { 0x4061, 0x0002}
|
|
||||||
- },
|
|
||||||
- }, {
|
|
||||||
- 148500000, {
|
|
||||||
- { 0x0051, 0x0003},
|
|
||||||
- { 0x214c, 0x0003},
|
|
||||||
- { 0x4064, 0x0003}
|
|
||||||
+ 30666000, {
|
|
||||||
+ { 0x00b3, 0x0000 },
|
|
||||||
+ { 0x2153, 0x0000 },
|
|
||||||
+ { 0x40f3, 0x0000 },
|
|
||||||
+ },
|
|
||||||
+ }, {
|
|
||||||
+ 36800000, {
|
|
||||||
+ { 0x00b3, 0x0000 },
|
|
||||||
+ { 0x2153, 0x0000 },
|
|
||||||
+ { 0x40a2, 0x0001 },
|
|
||||||
+ },
|
|
||||||
+ }, {
|
|
||||||
+ 46000000, {
|
|
||||||
+ { 0x00b3, 0x0000 },
|
|
||||||
+ { 0x2142, 0x0001 },
|
|
||||||
+ { 0x40a2, 0x0001 },
|
|
||||||
+ },
|
|
||||||
+ }, {
|
|
||||||
+ 61333000, {
|
|
||||||
+ { 0x0072, 0x0001 },
|
|
||||||
+ { 0x2142, 0x0001 },
|
|
||||||
+ { 0x40a2, 0x0001 },
|
|
||||||
+ },
|
|
||||||
+ }, {
|
|
||||||
+ 73600000, {
|
|
||||||
+ { 0x0072, 0x0001 },
|
|
||||||
+ { 0x2142, 0x0001 },
|
|
||||||
+ { 0x4061, 0x0002 },
|
|
||||||
+ },
|
|
||||||
+ }, {
|
|
||||||
+ 92000000, {
|
|
||||||
+ { 0x0072, 0x0001 },
|
|
||||||
+ { 0x2145, 0x0002 },
|
|
||||||
+ { 0x4061, 0x0002 },
|
|
||||||
+ },
|
|
||||||
+ }, {
|
|
||||||
+ 122666000, {
|
|
||||||
+ { 0x0051, 0x0002 },
|
|
||||||
+ { 0x2145, 0x0002 },
|
|
||||||
+ { 0x4061, 0x0002 },
|
|
||||||
+ },
|
|
||||||
+ }, {
|
|
||||||
+ 147200000, {
|
|
||||||
+ { 0x0051, 0x0002 },
|
|
||||||
+ { 0x2145, 0x0002 },
|
|
||||||
+ { 0x4064, 0x0003 },
|
|
||||||
+ },
|
|
||||||
+ }, {
|
|
||||||
+ 184000000, {
|
|
||||||
+ { 0x0051, 0x0002 },
|
|
||||||
+ { 0x214c, 0x0003 },
|
|
||||||
+ { 0x4064, 0x0003 },
|
|
||||||
},
|
|
||||||
- }, {
|
|
||||||
+ }, {
|
|
||||||
+ 226666000, {
|
|
||||||
+ { 0x0040, 0x0003 },
|
|
||||||
+ { 0x214c, 0x0003 },
|
|
||||||
+ { 0x4064, 0x0003 },
|
|
||||||
+ },
|
|
||||||
+ }, {
|
|
||||||
+ 272000000, {
|
|
||||||
+ { 0x0040, 0x0003 },
|
|
||||||
+ { 0x214c, 0x0003 },
|
|
||||||
+ { 0x5a64, 0x0003 },
|
|
||||||
+ },
|
|
||||||
+ }, {
|
|
||||||
340000000, {
|
|
||||||
{ 0x0040, 0x0003 },
|
|
||||||
{ 0x3b4c, 0x0003 },
|
|
||||||
{ 0x5a64, 0x0003 },
|
|
||||||
},
|
|
||||||
- }, {
|
|
||||||
+ }, {
|
|
||||||
+ 600000000, {
|
|
||||||
+ { 0x1a40, 0x0003 },
|
|
||||||
+ { 0x3b4c, 0x0003 },
|
|
||||||
+ { 0x5a64, 0x0003 },
|
|
||||||
+ },
|
|
||||||
+ }, {
|
|
||||||
~0UL, {
|
|
||||||
- { 0x00a0, 0x000a },
|
|
||||||
- { 0x2001, 0x000f },
|
|
||||||
- { 0x4002, 0x000f },
|
|
||||||
+ { 0x0000, 0x0000 },
|
|
||||||
+ { 0x0000, 0x0000 },
|
|
||||||
+ { 0x0000, 0x0000 },
|
|
||||||
},
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jonas Karlman <jonas@kwiboo.se>
|
|
||||||
Date: Wed, 8 Jan 2020 21:07:49 +0000
|
|
||||||
Subject: [PATCH] drm/rockchip: dw-hdmi: allow high tmds bit rates
|
|
||||||
|
|
||||||
Prepare support for High TMDS Bit Rates used by HDMI2.0 display modes.
|
|
||||||
|
|
||||||
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
||||||
---
|
|
||||||
drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 2 ++
|
|
||||||
1 file changed, 2 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
|
||||||
index 55c0b8dddad5..15ecb257b902 100644
|
|
||||||
--- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
|
||||||
+++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
|
||||||
@@ -327,6 +327,8 @@ static int dw_hdmi_rockchip_genphy_init(struct dw_hdmi *dw_hdmi, void *data,
|
|
||||||
{
|
|
||||||
struct rockchip_hdmi *hdmi = (struct rockchip_hdmi *)data;
|
|
||||||
|
|
||||||
+ dw_hdmi_set_high_tmds_clock_ratio(dw_hdmi, display);
|
|
||||||
+
|
|
||||||
return phy_power_on(hdmi->phy);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jonas Karlman <jonas@kwiboo.se>
|
|
||||||
Date: Wed, 8 Jan 2020 21:07:52 +0000
|
|
||||||
Subject: [PATCH] drm/rockchip: dw-hdmi: remove unused plat_data on
|
|
||||||
rk3228/rk3328
|
|
||||||
|
|
||||||
mpll_cfg/cur_ctr/phy_config is not used when phy_force_vendor is true,
|
|
||||||
lets remove them.
|
|
||||||
|
|
||||||
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
||||||
---
|
|
||||||
drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 6 ------
|
|
||||||
1 file changed, 6 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
|
||||||
index 15ecb257b902..38dded2baaf7 100644
|
|
||||||
--- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
|
||||||
+++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
|
||||||
@@ -417,9 +417,6 @@ static struct rockchip_hdmi_chip_data rk3228_chip_data = {
|
|
||||||
|
|
||||||
static const struct dw_hdmi_plat_data rk3228_hdmi_drv_data = {
|
|
||||||
.mode_valid = dw_hdmi_rockchip_mode_valid,
|
|
||||||
- .mpll_cfg = rockchip_mpll_cfg,
|
|
||||||
- .cur_ctr = rockchip_cur_ctr,
|
|
||||||
- .phy_config = rockchip_phy_config,
|
|
||||||
.phy_data = &rk3228_chip_data,
|
|
||||||
.phy_ops = &rk3228_hdmi_phy_ops,
|
|
||||||
.phy_name = "inno_dw_hdmi_phy2",
|
|
||||||
@@ -454,9 +451,6 @@ static struct rockchip_hdmi_chip_data rk3328_chip_data = {
|
|
||||||
|
|
||||||
static const struct dw_hdmi_plat_data rk3328_hdmi_drv_data = {
|
|
||||||
.mode_valid = dw_hdmi_rockchip_mode_valid,
|
|
||||||
- .mpll_cfg = rockchip_mpll_cfg,
|
|
||||||
- .cur_ctr = rockchip_cur_ctr,
|
|
||||||
- .phy_config = rockchip_phy_config,
|
|
||||||
.phy_data = &rk3328_chip_data,
|
|
||||||
.phy_ops = &rk3328_hdmi_phy_ops,
|
|
||||||
.phy_name = "inno_dw_hdmi_phy2",
|
|
||||||
|
|
||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
From: Jonas Karlman <jonas@kwiboo.se>
|
From: Jonas Karlman <jonas@kwiboo.se>
|
||||||
Date: Sat, 10 Oct 2020 10:16:32 +0000
|
Date: Sat, 10 Oct 2020 10:16:32 +0000
|
||||||
@ -599,16 +214,16 @@ diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/rockc
|
|||||||
index 38dded2baaf7..9e460b7e14a4 100644
|
index 38dded2baaf7..9e460b7e14a4 100644
|
||||||
--- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
--- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
||||||
+++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
+++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
||||||
@@ -558,7 +558,7 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master,
|
@@ -592,7 +592,7 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master,
|
||||||
if (IS_ERR(hdmi->phy)) {
|
if (IS_ERR(hdmi->phy)) {
|
||||||
ret = PTR_ERR(hdmi->phy);
|
ret = PTR_ERR(hdmi->phy);
|
||||||
if (ret != -EPROBE_DEFER)
|
if (ret != -EPROBE_DEFER)
|
||||||
- DRM_DEV_ERROR(hdmi->dev, "failed to get phy\n");
|
- dev_err(hdmi->dev, "failed to get phy\n");
|
||||||
+ DRM_DEV_ERROR(hdmi->dev, "Failed to get phy: %d\n", ret);
|
+ dev_err(hdmi->dev, "failed to get phy: %d\n", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -590,7 +590,12 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master,
|
@@ -605,7 +605,12 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master,
|
||||||
}
|
}
|
||||||
|
|
||||||
drm_encoder_helper_add(encoder, &dw_hdmi_rockchip_encoder_helper_funcs);
|
drm_encoder_helper_add(encoder, &dw_hdmi_rockchip_encoder_helper_funcs);
|
||||||
@ -622,14 +237,15 @@ index 38dded2baaf7..9e460b7e14a4 100644
|
|||||||
|
|
||||||
platform_set_drvdata(pdev, hdmi);
|
platform_set_drvdata(pdev, hdmi);
|
||||||
|
|
||||||
@@ -609,6 +614,7 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master,
|
@@ -624,7 +629,7 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master,
|
||||||
|
|
||||||
err_bind:
|
err_bind:
|
||||||
drm_encoder_cleanup(encoder);
|
drm_encoder_cleanup(encoder);
|
||||||
|
-
|
||||||
+err_disable_clk:
|
+err_disable_clk:
|
||||||
clk_disable_unprepare(hdmi->ref_clk);
|
return ret;
|
||||||
err_clk:
|
}
|
||||||
regulator_disable(hdmi->avdd_1v8);
|
|
||||||
|
|
||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
From: Jonas Karlman <jonas@kwiboo.se>
|
From: Jonas Karlman <jonas@kwiboo.se>
|
||||||
@ -1655,7 +1271,7 @@ Subject: [PATCH] HACK: dts: rockchip: do not use vopl for hdmi
|
|||||||
|
|
||||||
---
|
---
|
||||||
arch/arm/boot/dts/rockchip/rk3288.dtsi | 9 ---------
|
arch/arm/boot/dts/rockchip/rk3288.dtsi | 9 ---------
|
||||||
arch/arm64/boot/dts/rockchip/rk3399.dtsi | 9 ---------
|
arch/arm64/boot/dts/rockchip/rk3399-base.dtsi | 9 ---------
|
||||||
2 files changed, 18 deletions(-)
|
2 files changed, 18 deletions(-)
|
||||||
|
|
||||||
diff --git a/arch/arm/boot/dts/rockchip/rk3288.dtsi b/arch/arm/boot/dts/rockchip/rk3288.dtsi
|
diff --git a/arch/arm/boot/dts/rockchip/rk3288.dtsi b/arch/arm/boot/dts/rockchip/rk3288.dtsi
|
||||||
@ -1685,11 +1301,11 @@ index d1ae42757242..7b2cde230b87 100644
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3399.dtsi b/arch/arm64/boot/dts/rockchip/rk3399.dtsi
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-base.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-base.dtsi
|
||||||
index 92c2207e686c..980b12cb0a49 100644
|
index 92c2207e686c..980b12cb0a49 100644
|
||||||
--- a/arch/arm64/boot/dts/rockchip/rk3399.dtsi
|
--- a/arch/arm64/boot/dts/rockchip/rk3399-base.dtsi
|
||||||
+++ b/arch/arm64/boot/dts/rockchip/rk3399.dtsi
|
+++ b/arch/arm64/boot/dts/rockchip/rk3399-base.dtsi
|
||||||
@@ -1728,11 +1728,6 @@ vopl_out_edp: endpoint@1 {
|
@@ -1846,11 +1846,6 @@ vopl_out_edp: endpoint@1 {
|
||||||
remote-endpoint = <&edp_in_vopl>;
|
remote-endpoint = <&edp_in_vopl>;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1701,7 +1317,7 @@ index 92c2207e686c..980b12cb0a49 100644
|
|||||||
vopl_out_mipi1: endpoint@3 {
|
vopl_out_mipi1: endpoint@3 {
|
||||||
reg = <3>;
|
reg = <3>;
|
||||||
remote-endpoint = <&mipi1_in_vopl>;
|
remote-endpoint = <&mipi1_in_vopl>;
|
||||||
@@ -1926,10 +1921,6 @@ hdmi_in_vopb: endpoint@0 {
|
@@ -2048,10 +2043,6 @@ hdmi_in_vopb: endpoint@0 {
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
remote-endpoint = <&vopb_out_hdmi>;
|
remote-endpoint = <&vopb_out_hdmi>;
|
||||||
};
|
};
|
||||||
@ -2115,9 +1731,9 @@ index 89424c5bc24a..05de2052d95d 100644
|
|||||||
--- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
--- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
||||||
+++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
+++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
||||||
@@ -68,6 +68,7 @@ struct rockchip_hdmi_chip_data {
|
@@ -68,6 +68,7 @@ struct rockchip_hdmi_chip_data {
|
||||||
int lcdsel_grf_reg;
|
|
||||||
u32 lcdsel_big;
|
u32 lcdsel_big;
|
||||||
u32 lcdsel_lit;
|
u32 lcdsel_lit;
|
||||||
|
int max_tmds_clock;
|
||||||
+ bool ycbcr_444_allowed;
|
+ bool ycbcr_444_allowed;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -2181,9 +1797,9 @@ index 89424c5bc24a..05de2052d95d 100644
|
|||||||
|
|
||||||
input_fmt = kzalloc(sizeof(*input_fmt), GFP_KERNEL);
|
input_fmt = kzalloc(sizeof(*input_fmt), GFP_KERNEL);
|
||||||
@@ -604,6 +630,7 @@ static const struct dw_hdmi_phy_ops rk3328_hdmi_phy_ops = {
|
@@ -604,6 +630,7 @@ static const struct dw_hdmi_phy_ops rk3328_hdmi_phy_ops = {
|
||||||
|
|
||||||
static struct rockchip_hdmi_chip_data rk3328_chip_data = {
|
static struct rockchip_hdmi_chip_data rk3328_chip_data = {
|
||||||
.lcdsel_grf_reg = -1,
|
.lcdsel_grf_reg = -1,
|
||||||
|
.max_tmds_clock = 594000,
|
||||||
+ .ycbcr_444_allowed = true,
|
+ .ycbcr_444_allowed = true,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -2461,23 +2077,6 @@ index 47ad74ef1afb..94a615dca672 100644
|
|||||||
struct vop_reg dsp_data_swap;
|
struct vop_reg dsp_data_swap;
|
||||||
struct vop_reg dsp_out_yuv;
|
struct vop_reg dsp_out_yuv;
|
||||||
struct vop_reg dsp_background;
|
struct vop_reg dsp_background;
|
||||||
@@ -286,11 +287,12 @@ struct vop_data {
|
|
||||||
/*
|
|
||||||
* display output interface supported by rockchip lcdc
|
|
||||||
*/
|
|
||||||
-#define ROCKCHIP_OUT_MODE_P888 0
|
|
||||||
-#define ROCKCHIP_OUT_MODE_P666 1
|
|
||||||
-#define ROCKCHIP_OUT_MODE_P565 2
|
|
||||||
+#define ROCKCHIP_OUT_MODE_P888 0
|
|
||||||
+#define ROCKCHIP_OUT_MODE_P666 1
|
|
||||||
+#define ROCKCHIP_OUT_MODE_P565 2
|
|
||||||
+#define ROCKCHIP_OUT_MODE_YUV420 14
|
|
||||||
/* for use special outface */
|
|
||||||
-#define ROCKCHIP_OUT_MODE_AAAA 15
|
|
||||||
+#define ROCKCHIP_OUT_MODE_AAAA 15
|
|
||||||
|
|
||||||
/* output flags */
|
|
||||||
#define ROCKCHIP_OUTPUT_DSI_DUAL BIT(0)
|
|
||||||
diff --git a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c
|
diff --git a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c
|
||||||
index b16a4c42773c..5463b04240f7 100644
|
index b16a4c42773c..5463b04240f7 100644
|
||||||
--- a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c
|
--- a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c
|
||||||
@ -2514,9 +2113,9 @@ index cb201612199f..8627f6826bfe 100644
|
|||||||
--- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
--- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
||||||
+++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
+++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
||||||
@@ -616,6 +616,7 @@ static const struct dw_hdmi_phy_ops rk3228_hdmi_phy_ops = {
|
@@ -616,6 +616,7 @@ static const struct dw_hdmi_phy_ops rk3228_hdmi_phy_ops = {
|
||||||
|
|
||||||
static struct rockchip_hdmi_chip_data rk3228_chip_data = {
|
static struct rockchip_hdmi_chip_data rk3228_chip_data = {
|
||||||
.lcdsel_grf_reg = -1,
|
.lcdsel_grf_reg = -1,
|
||||||
|
.max_tmds_clock = 594000,
|
||||||
+ .ycbcr_444_allowed = true,
|
+ .ycbcr_444_allowed = true,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -2543,7 +2142,7 @@ diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockc
|
|||||||
index e50f71ad3ceb..ef0a078c22f4 100644
|
index e50f71ad3ceb..ef0a078c22f4 100644
|
||||||
--- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
|
--- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
|
||||||
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
|
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
|
||||||
@@ -965,6 +965,7 @@ static void vop_plane_atomic_update(struct drm_plane *plane,
|
@@ -958,6 +958,7 @@ static void vop_plane_atomic_update(struct drm_plane *plane,
|
||||||
int format;
|
int format;
|
||||||
int is_yuv = fb->format->is_yuv;
|
int is_yuv = fb->format->is_yuv;
|
||||||
int i;
|
int i;
|
||||||
@ -2551,7 +2150,7 @@ index e50f71ad3ceb..ef0a078c22f4 100644
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* can't update plane when vop is disabled.
|
* can't update plane when vop is disabled.
|
||||||
@@ -983,8 +984,14 @@ static void vop_plane_atomic_update(struct drm_plane *plane,
|
@@ -976,8 +977,14 @@ static void vop_plane_atomic_update(struct drm_plane *plane,
|
||||||
obj = fb->obj[0];
|
obj = fb->obj[0];
|
||||||
rk_obj = to_rockchip_obj(obj);
|
rk_obj = to_rockchip_obj(obj);
|
||||||
|
|
||||||
@ -2567,7 +2166,7 @@ index e50f71ad3ceb..ef0a078c22f4 100644
|
|||||||
act_info = (actual_h - 1) << 16 | ((actual_w - 1) & 0xffff);
|
act_info = (actual_h - 1) << 16 | ((actual_w - 1) & 0xffff);
|
||||||
|
|
||||||
dsp_info = (drm_rect_height(dest) - 1) << 16;
|
dsp_info = (drm_rect_height(dest) - 1) << 16;
|
||||||
@@ -1026,7 +1033,7 @@ static void vop_plane_atomic_update(struct drm_plane *plane,
|
@@ -1019,7 +1026,7 @@ static void vop_plane_atomic_update(struct drm_plane *plane,
|
||||||
|
|
||||||
VOP_WIN_SET(vop, win, format, format);
|
VOP_WIN_SET(vop, win, format, format);
|
||||||
VOP_WIN_SET(vop, win, fmt_10, is_fmt_10(fb->format->format));
|
VOP_WIN_SET(vop, win, fmt_10, is_fmt_10(fb->format->format));
|
||||||
@ -2576,7 +2175,7 @@ index e50f71ad3ceb..ef0a078c22f4 100644
|
|||||||
VOP_WIN_SET(vop, win, yrgb_mst, dma_addr);
|
VOP_WIN_SET(vop, win, yrgb_mst, dma_addr);
|
||||||
VOP_WIN_YUV2YUV_SET(vop, win_yuv2yuv, y2r_en, is_yuv);
|
VOP_WIN_YUV2YUV_SET(vop, win_yuv2yuv, y2r_en, is_yuv);
|
||||||
VOP_WIN_SET(vop, win, y_mir_en,
|
VOP_WIN_SET(vop, win, y_mir_en,
|
||||||
@@ -1050,7 +1057,7 @@ static void vop_plane_atomic_update(struct drm_plane *plane,
|
@@ -1040,7 +1047,7 @@ static void vop_plane_atomic_update(struct drm_plane *plane,
|
||||||
offset += (src->y1 >> 16) * fb->pitches[1] / vsub;
|
offset += (src->y1 >> 16) * fb->pitches[1] / vsub;
|
||||||
|
|
||||||
dma_addr = rk_uv_obj->dma_addr + offset + fb->offsets[1];
|
dma_addr = rk_uv_obj->dma_addr + offset + fb->offsets[1];
|
||||||
@ -2776,9 +2375,9 @@ index b78df931aa74..ebbea63ea9de 100644
|
|||||||
/* cec-core.c */
|
/* cec-core.c */
|
||||||
extern int cec_debug;
|
extern int cec_debug;
|
||||||
+extern int cec_debounce_ms;
|
+extern int cec_debounce_ms;
|
||||||
int cec_get_device(struct cec_devnode *devnode);
|
|
||||||
void cec_put_device(struct cec_devnode *devnode);
|
|
||||||
|
|
||||||
|
/* cec-adap.c */
|
||||||
|
int cec_monitor_all_cnt_inc(struct cec_adapter *adap);
|
||||||
diff --git a/include/media/cec.h b/include/media/cec.h
|
diff --git a/include/media/cec.h b/include/media/cec.h
|
||||||
index abee41ae02d0..544eedb5d671 100644
|
index abee41ae02d0..544eedb5d671 100644
|
||||||
--- a/include/media/cec.h
|
--- a/include/media/cec.h
|
||||||
@ -2915,3 +2514,4 @@ index 49619f794061..9915bf124374 100644
|
|||||||
}
|
}
|
||||||
|
|
||||||
port = of_get_child_by_name(dev->of_node, "port");
|
port = of_get_child_by_name(dev->of_node, "port");
|
||||||
|
|
||||||
|
@ -289,7 +289,7 @@ index eaf2f133a264..f55abb7c377f 100644
|
|||||||
}
|
}
|
||||||
|
|
||||||
+
|
+
|
||||||
+ rkvdec->rstc = devm_reset_control_array_get(&pdev->dev, false, true);
|
+ rkvdec->rstc = devm_reset_control_array_get(&pdev->dev, RESET_CONTROL_OPTIONAL_EXCLUSIVE);
|
||||||
+ if (IS_ERR(rkvdec->rstc)) {
|
+ if (IS_ERR(rkvdec->rstc)) {
|
||||||
+ dev_err(&pdev->dev,
|
+ dev_err(&pdev->dev,
|
||||||
+ "get resets failed %ld\n", PTR_ERR(rkvdec->rstc));
|
+ "get resets failed %ld\n", PTR_ERR(rkvdec->rstc));
|
||||||
@ -349,13 +349,13 @@ Date: Tue, 18 Aug 2020 11:38:04 +0200
|
|||||||
Subject: [PATCH] WIP: arm64: dts: add resets to vdec for RK3399
|
Subject: [PATCH] WIP: arm64: dts: add resets to vdec for RK3399
|
||||||
|
|
||||||
---
|
---
|
||||||
arch/arm64/boot/dts/rockchip/rk3399.dtsi | 5 +++++
|
arch/arm64/boot/dts/rockchip/rk3399-base.dtsi | 5 +++++
|
||||||
1 file changed, 5 insertions(+)
|
1 file changed, 5 insertions(+)
|
||||||
|
|
||||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3399.dtsi b/arch/arm64/boot/dts/rockchip/rk3399.dtsi
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-base.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-base.dtsi
|
||||||
index 980b12cb0a49..6e3149e587c5 100644
|
index 980b12cb0a49..6e3149e587c5 100644
|
||||||
--- a/arch/arm64/boot/dts/rockchip/rk3399.dtsi
|
--- a/arch/arm64/boot/dts/rockchip/rk3399-base.dtsi
|
||||||
+++ b/arch/arm64/boot/dts/rockchip/rk3399.dtsi
|
+++ b/arch/arm64/boot/dts/rockchip/rk3399-base.dtsi
|
||||||
@@ -1345,6 +1348,11 @@ vdec: video-codec@ff660000 {
|
@@ -1345,6 +1348,11 @@ vdec: video-codec@ff660000 {
|
||||||
clock-names = "axi", "ahb", "cabac", "core";
|
clock-names = "axi", "ahb", "cabac", "core";
|
||||||
iommus = <&vdec_mmu>;
|
iommus = <&vdec_mmu>;
|
||||||
|
@ -11,15 +11,15 @@ is running at the same time (voltage to high)
|
|||||||
|
|
||||||
Signed-off-by: Alex Bee <knaerzche@gmail.com>
|
Signed-off-by: Alex Bee <knaerzche@gmail.com>
|
||||||
---
|
---
|
||||||
.../arm64/boot/dts/rockchip/rk3328-roc-cc.dts | 4 +++
|
.../arm64/boot/dts/rockchip/rk3328-roc.dtsi | 4 +++
|
||||||
.../arm64/boot/dts/rockchip/rk3328-rock64.dts | 4 +++
|
.../arm64/boot/dts/rockchip/rk3328-rock64.dts | 4 +++
|
||||||
arch/arm64/boot/dts/rockchip/rk3328.dtsi | 35 +++++++++++++++++++
|
arch/arm64/boot/dts/rockchip/rk3328.dtsi | 35 +++++++++++++++++++
|
||||||
3 files changed, 43 insertions(+)
|
3 files changed, 43 insertions(+)
|
||||||
|
|
||||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3328-roc.dtsi b/arch/arm64/boot/dts/rockchip/rk3328-roc.dtsi
|
||||||
index aa22a0c22265..51c7723d6762 100644
|
index aa22a0c22265..51c7723d6762 100644
|
||||||
--- a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
--- a/arch/arm64/boot/dts/rockchip/rk3328-roc.dtsi
|
||||||
+++ b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
+++ b/arch/arm64/boot/dts/rockchip/rk3328-roc.dtsi
|
||||||
@@ -166,6 +166,10 @@ &gmac2io {
|
@@ -166,6 +166,10 @@ &gmac2io {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
@ -165,7 +165,7 @@ Subject: [PATCH] ARM/arm64: dts: rockchip: align sound card names
|
|||||||
Signed-off-by: Alex Bee <knaerzche@gmail.com>
|
Signed-off-by: Alex Bee <knaerzche@gmail.com>
|
||||||
---
|
---
|
||||||
arch/arm/boot/dts/rockchip/rk3288-tinker.dtsi | 2 +-
|
arch/arm/boot/dts/rockchip/rk3288-tinker.dtsi | 2 +-
|
||||||
arch/arm64/boot/dts/rockchip/rk3399.dtsi | 2 +-
|
arch/arm64/boot/dts/rockchip/rk3399-base.dtsi | 2 +-
|
||||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
diff --git a/arch/arm/boot/dts/rockchip/rk3288-tinker.dtsi b/arch/arm/boot/dts/rockchip/rk3288-tinker.dtsi
|
diff --git a/arch/arm/boot/dts/rockchip/rk3288-tinker.dtsi b/arch/arm/boot/dts/rockchip/rk3288-tinker.dtsi
|
||||||
@ -181,10 +181,10 @@ index 09618bb7d872..db9106a3dd22 100644
|
|||||||
simple-audio-card,mclk-fs = <512>;
|
simple-audio-card,mclk-fs = <512>;
|
||||||
|
|
||||||
simple-audio-card,codec {
|
simple-audio-card,codec {
|
||||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3399.dtsi b/arch/arm64/boot/dts/rockchip/rk3399.dtsi
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-base.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-base.dtsi
|
||||||
index 093ebe070775..a10fe60b7680 100644
|
index 093ebe070775..a10fe60b7680 100644
|
||||||
--- a/arch/arm64/boot/dts/rockchip/rk3399.dtsi
|
--- a/arch/arm64/boot/dts/rockchip/rk3399-base.dtsi
|
||||||
+++ b/arch/arm64/boot/dts/rockchip/rk3399.dtsi
|
+++ b/arch/arm64/boot/dts/rockchip/rk3399-base.dtsi
|
||||||
@@ -1893,7 +1893,7 @@ hdmi_sound: hdmi-sound {
|
@@ -1893,7 +1893,7 @@ hdmi_sound: hdmi-sound {
|
||||||
compatible = "simple-audio-card";
|
compatible = "simple-audio-card";
|
||||||
simple-audio-card,format = "i2s";
|
simple-audio-card,format = "i2s";
|
||||||
@ -254,13 +254,13 @@ Subject: [PATCH] arm64: dts: rockchip: Add ir-receiver node for RK3328 ROC CC
|
|||||||
|
|
||||||
Signed-off-by: Alex Bee <knaerzche@gmail.com>
|
Signed-off-by: Alex Bee <knaerzche@gmail.com>
|
||||||
---
|
---
|
||||||
arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts | 14 ++++++++++++++
|
arch/arm64/boot/dts/rockchip/rk3328-roc.dtsi | 14 ++++++++++++++
|
||||||
1 file changed, 14 insertions(+)
|
1 file changed, 14 insertions(+)
|
||||||
|
|
||||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3328-roc.dtsi b/arch/arm64/boot/dts/rockchip/rk3328-roc.dtsi
|
||||||
index 51c7723d6762..cf321302daec 100644
|
index 51c7723d6762..cf321302daec 100644
|
||||||
--- a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
--- a/arch/arm64/boot/dts/rockchip/rk3328-roc.dtsi
|
||||||
+++ b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
+++ b/arch/arm64/boot/dts/rockchip/rk3328-roc.dtsi
|
||||||
@@ -88,6 +88,13 @@ vcc_phy: vcc-phy-regulator {
|
@@ -88,6 +88,13 @@ vcc_phy: vcc-phy-regulator {
|
||||||
regulator-boot-on;
|
regulator-boot-on;
|
||||||
};
|
};
|
||||||
@ -412,13 +412,13 @@ result in poor DMA controller performance
|
|||||||
|
|
||||||
Signed-off-by: Alex Bee <knaerzche@gmail.com>
|
Signed-off-by: Alex Bee <knaerzche@gmail.com>
|
||||||
---
|
---
|
||||||
arch/arm64/boot/dts/rockchip/rk3399.dtsi | 2 +-
|
arch/arm64/boot/dts/rockchip/rk3399-base.dtsi | 2 +-
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3399.dtsi b/arch/arm64/boot/dts/rockchip/rk3399.dtsi
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-base.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-base.dtsi
|
||||||
index a10fe60b7680..dbe6a9cb98a5 100644
|
index a10fe60b7680..dbe6a9cb98a5 100644
|
||||||
--- a/arch/arm64/boot/dts/rockchip/rk3399.dtsi
|
--- a/arch/arm64/boot/dts/rockchip/rk3399-base.dtsi
|
||||||
+++ b/arch/arm64/boot/dts/rockchip/rk3399.dtsi
|
+++ b/arch/arm64/boot/dts/rockchip/rk3399-base.dtsi
|
||||||
@@ -1477,7 +1477,7 @@ cru: clock-controller@ff760000 {
|
@@ -1477,7 +1477,7 @@ cru: clock-controller@ff760000 {
|
||||||
<1000000000>,
|
<1000000000>,
|
||||||
<150000000>, <75000000>,
|
<150000000>, <75000000>,
|
||||||
|
@ -1,63 +0,0 @@
|
|||||||
diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
|
||||||
index 0370bb247fcb..55c0b8dddad5 100644
|
|
||||||
--- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c 2023-06-25 03:23:55.724209412 +0000
|
|
||||||
+++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c 2023-06-25 04:16:27.469899470 +0000
|
|
||||||
@@ -254,35 +245,31 @@
|
|
||||||
const struct drm_display_info *info,
|
|
||||||
const struct drm_display_mode *mode)
|
|
||||||
{
|
|
||||||
- struct rockchip_hdmi *hdmi = data;
|
|
||||||
- const struct dw_hdmi_mpll_config *mpll_cfg = rockchip_mpll_cfg;
|
|
||||||
- int pclk = mode->clock * 1000;
|
|
||||||
- bool exact_match = hdmi->plat_data->phy_force_vendor;
|
|
||||||
- int i;
|
|
||||||
-
|
|
||||||
- if (hdmi->ref_clk) {
|
|
||||||
- int rpclk = clk_round_rate(hdmi->ref_clk, pclk);
|
|
||||||
-
|
|
||||||
- if (abs(rpclk - pclk) > pclk / 1000)
|
|
||||||
- return MODE_NOCLOCK;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- for (i = 0; mpll_cfg[i].mpixelclock != (~0UL); i++) {
|
|
||||||
- /*
|
|
||||||
- * For vendor specific phys force an exact match of the pixelclock
|
|
||||||
- * to preserve the original behaviour of the driver.
|
|
||||||
- */
|
|
||||||
- if (exact_match && pclk == mpll_cfg[i].mpixelclock)
|
|
||||||
- return MODE_OK;
|
|
||||||
- /*
|
|
||||||
- * The Synopsys phy can work with pixelclocks up to the value given
|
|
||||||
- * in the corresponding mpll_cfg entry.
|
|
||||||
- */
|
|
||||||
- if (!exact_match && pclk <= mpll_cfg[i].mpixelclock)
|
|
||||||
- return MODE_OK;
|
|
||||||
+ struct dw_hdmi_plat_data *pdata = (struct dw_hdmi_plat_data *)data;
|
|
||||||
+ const struct dw_hdmi_mpll_config *mpll_cfg = pdata->mpll_cfg;
|
|
||||||
+ int clock = mode->clock;
|
|
||||||
+ unsigned int i = 0;
|
|
||||||
+
|
|
||||||
+ if (pdata->ycbcr_420_allowed && drm_mode_is_420(info, mode) &&
|
|
||||||
+ (info->color_formats & DRM_COLOR_FORMAT_YCBCR420)) {
|
|
||||||
+ clock /= 2;
|
|
||||||
+ mpll_cfg = pdata->mpll_cfg_420;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if ((!mpll_cfg && clock > 340000) ||
|
|
||||||
+ (info->max_tmds_clock && clock > info->max_tmds_clock))
|
|
||||||
+ return MODE_CLOCK_HIGH;
|
|
||||||
+
|
|
||||||
+ if (mpll_cfg) {
|
|
||||||
+ while ((clock * 1000) < mpll_cfg[i].mpixelclock &&
|
|
||||||
+ mpll_cfg[i].mpixelclock != (~0UL))
|
|
||||||
+ i++;
|
|
||||||
+
|
|
||||||
+ if (mpll_cfg[i].mpixelclock == (~0UL))
|
|
||||||
+ return MODE_CLOCK_HIGH;
|
|
||||||
}
|
|
||||||
|
|
||||||
- return MODE_BAD;
|
|
||||||
+ return MODE_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void dw_hdmi_rockchip_encoder_disable(struct drm_encoder *encoder)
|
|
@ -465,7 +465,7 @@ new file mode 100644
|
|||||||
index 000000000000..f4b9320733be
|
index 000000000000..f4b9320733be
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/drivers/media/platform/rockchip/iep/iep.c
|
+++ b/drivers/media/platform/rockchip/iep/iep.c
|
||||||
@@ -0,0 +1,1089 @@
|
@@ -0,0 +1,1087 @@
|
||||||
+// SPDX-License-Identifier: GPL-2.0-only
|
+// SPDX-License-Identifier: GPL-2.0-only
|
||||||
+/*
|
+/*
|
||||||
+ * Rockchip Image Enhancement Processor (IEP) driver
|
+ * Rockchip Image Enhancement Processor (IEP) driver
|
||||||
@ -925,7 +925,7 @@ index 000000000000..f4b9320733be
|
|||||||
+ src_vq->io_modes = VB2_MMAP | VB2_DMABUF;
|
+ src_vq->io_modes = VB2_MMAP | VB2_DMABUF;
|
||||||
+ src_vq->drv_priv = ctx;
|
+ src_vq->drv_priv = ctx;
|
||||||
+ src_vq->buf_struct_size = sizeof(struct v4l2_m2m_buffer);
|
+ src_vq->buf_struct_size = sizeof(struct v4l2_m2m_buffer);
|
||||||
+ src_vq->min_buffers_needed = 1;
|
+ src_vq->min_queued_buffers = 1;
|
||||||
+ src_vq->ops = &iep_qops;
|
+ src_vq->ops = &iep_qops;
|
||||||
+ src_vq->mem_ops = &vb2_dma_contig_memops;
|
+ src_vq->mem_ops = &vb2_dma_contig_memops;
|
||||||
+ src_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY;
|
+ src_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY;
|
||||||
@ -942,7 +942,7 @@ index 000000000000..f4b9320733be
|
|||||||
+ dst_vq->io_modes = VB2_MMAP | VB2_DMABUF;
|
+ dst_vq->io_modes = VB2_MMAP | VB2_DMABUF;
|
||||||
+ dst_vq->drv_priv = ctx;
|
+ dst_vq->drv_priv = ctx;
|
||||||
+ dst_vq->buf_struct_size = sizeof(struct v4l2_m2m_buffer);
|
+ dst_vq->buf_struct_size = sizeof(struct v4l2_m2m_buffer);
|
||||||
+ dst_vq->min_buffers_needed = 2;
|
+ dst_vq->min_queued_buffers = 2;
|
||||||
+ dst_vq->ops = &iep_qops;
|
+ dst_vq->ops = &iep_qops;
|
||||||
+ dst_vq->mem_ops = &vb2_dma_contig_memops;
|
+ dst_vq->mem_ops = &vb2_dma_contig_memops;
|
||||||
+ dst_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY;
|
+ dst_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY;
|
||||||
@ -1474,7 +1474,7 @@ index 000000000000..f4b9320733be
|
|||||||
+return ret;
|
+return ret;
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+static int iep_remove(struct platform_device *pdev)
|
+static void iep_remove(struct platform_device *pdev)
|
||||||
+{
|
+{
|
||||||
+ struct rockchip_iep *iep = platform_get_drvdata(pdev);
|
+ struct rockchip_iep *iep = platform_get_drvdata(pdev);
|
||||||
+
|
+
|
||||||
@ -1484,8 +1484,6 @@ index 000000000000..f4b9320733be
|
|||||||
+ v4l2_m2m_release(iep->m2m_dev);
|
+ v4l2_m2m_release(iep->m2m_dev);
|
||||||
+ video_unregister_device(&iep->vfd);
|
+ video_unregister_device(&iep->vfd);
|
||||||
+ v4l2_device_unregister(&iep->v4l2_dev);
|
+ v4l2_device_unregister(&iep->v4l2_dev);
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+static int __maybe_unused iep_runtime_suspend(struct device *dev)
|
+static int __maybe_unused iep_runtime_suspend(struct device *dev)
|
||||||
@ -1727,13 +1725,13 @@ Subject: [PATCH] ARM64: dts: rockchip: Add IEP node for RK3399
|
|||||||
|
|
||||||
Signed-off-by: Alex Bee <knaerzche@gmail.com>
|
Signed-off-by: Alex Bee <knaerzche@gmail.com>
|
||||||
---
|
---
|
||||||
arch/arm64/boot/dts/rockchip/rk3399.dtsi | 13 ++++++++++++-
|
arch/arm64/boot/dts/rockchip/rk3399-base.dtsi | 13 ++++++++++++-
|
||||||
1 file changed, 12 insertions(+), 1 deletion(-)
|
1 file changed, 12 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3399.dtsi b/arch/arm64/boot/dts/rockchip/rk3399.dtsi
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-base.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-base.dtsi
|
||||||
index dbe6a9cb98a5..f0629b7a81c6 100644
|
index dbe6a9cb98a5..f0629b7a81c6 100644
|
||||||
--- a/arch/arm64/boot/dts/rockchip/rk3399.dtsi
|
--- a/arch/arm64/boot/dts/rockchip/rk3399-base.dtsi
|
||||||
+++ b/arch/arm64/boot/dts/rockchip/rk3399.dtsi
|
+++ b/arch/arm64/boot/dts/rockchip/rk3399-base.dtsi
|
||||||
@@ -1365,14 +1365,25 @@ vdec_mmu: iommu@ff660480 {
|
@@ -1365,14 +1365,25 @@ vdec_mmu: iommu@ff660480 {
|
||||||
#iommu-cells = <0>;
|
#iommu-cells = <0>;
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user