From 00ddf696ea9a7e980ea8e6ff895defe392db0c11 Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Mon, 17 Apr 2017 13:09:16 +0200 Subject: [PATCH] sound/usb/quirks-table: add Realtek ALC4040 --- sound/usb/quirks-table.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/sound/usb/quirks-table.h b/sound/usb/quirks-table.h index 69bf5cf1e91e..00672a818145 100644 --- a/sound/usb/quirks-table.h +++ b/sound/usb/quirks-table.h @@ -3324,4 +3324,13 @@ AU0828_DEVICE(0x2040, 0x7270, "Hauppauge", "HVR-950Q"), } }, +{ + USB_DEVICE(0x0bda, 0x481a), + .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { + .vendor_name = "Realtek", + .product_name = "ALC4040", + .ifnum = QUIRK_NO_INTERFACE + } +}, + #undef USB_DEVICE_VENDOR_SPEC From 55a67a2125f372eed3281cec9914ecd66283955b Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Sun, 28 May 2017 09:08:50 +0200 Subject: [PATCH] gpu/arm/mali400: default to performance gpu governor --- drivers/gpu/arm/mali400/mali/linux/mali_devfreq.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_devfreq.c b/drivers/gpu/arm/mali400/mali/linux/mali_devfreq.c index c9b8652f100d..6c97c530a2ae 100644 --- a/drivers/gpu/arm/mali400/mali/linux/mali_devfreq.c +++ b/drivers/gpu/arm/mali400/mali/linux/mali_devfreq.c @@ -259,7 +259,7 @@ int mali_devfreq_init(struct mali_device *mdev) return -EFAULT; mdev->devfreq = devfreq_add_device(mdev->dev, dp, - "simple_ondemand", NULL); + "performance", NULL); if (IS_ERR(mdev->devfreq)) { mali_devfreq_term_freq_table(mdev); return PTR_ERR(mdev->devfreq); From 188e9f097216cd73fa78abf9545837464dd70231 Mon Sep 17 00:00:00 2001 From: LongChair Date: Fri, 21 Apr 2017 13:39:12 +0200 Subject: [PATCH] drm/rockchip: remove unsupported 4K freqs --- drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c index a58edabe600c..7273561fe6b1 100644 --- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c +++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c @@ -510,9 +510,15 @@ dw_hdmi_rockchip_mode_valid(struct drm_connector *connector, return MODE_BAD; hdmi = to_rockchip_hdmi(encoder); - if (hdmi->dev_type == RK3368_HDMI && mode->clock > 340000 && + if ((hdmi->dev_type == RK3368_HDMI || hdmi->dev_type == RK3328_HDMI) && + mode->clock > 340000 && !drm_mode_is_420(&connector->display_info, mode)) return MODE_BAD; + + /* Skip bad clocks for RK3288 */ + if (hdmi->dev_type == RK3288_HDMI && (mode->clock < 27500 || mode->clock > 340000)) + return MODE_CLOCK_RANGE; + /* * ensure all drm display mode can work, if someone want support more * resolutions, please limit the possible_crtc, only connect to From cde112e9f9e564806b49bbe317b783e78a6b5c3a Mon Sep 17 00:00:00 2001 From: xuhuicong Date: Fri, 23 Jun 2017 18:56:17 +0800 Subject: [PATCH] drm/rockchip: hdmi: fix no sound some time Change-Id: Ic9f931d9a5b7bca954363293a20ca242eb0bfa6f Signed-off-by: xuhuicong --- drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c index d57d999c50a5..ae498d097b61 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -1991,10 +1991,6 @@ static void hdmi_av_composer(struct dw_hdmi *hdmi, HDMI_FC_INVIDCONF_IN_I_P_INTERLACED : HDMI_FC_INVIDCONF_IN_I_P_PROGRESSIVE; - inv_val |= hdmi->sink_is_hdmi ? - HDMI_FC_INVIDCONF_DVI_MODEZ_HDMI_MODE : - HDMI_FC_INVIDCONF_DVI_MODEZ_DVI_MODE; - hdmi_writeb(hdmi, inv_val, HDMI_FC_INVIDCONF); hdisplay = mode->hdisplay; @@ -2292,6 +2288,9 @@ static int dw_hdmi_setup(struct dw_hdmi *hdmi, struct drm_display_mode *mode) /* not for DVI mode */ if (hdmi->sink_is_hdmi) { dev_dbg(hdmi->dev, "%s HDMI mode\n", __func__); + hdmi_modb(hdmi, HDMI_FC_INVIDCONF_DVI_MODEZ_HDMI_MODE, + HDMI_FC_INVIDCONF_DVI_MODEZ_HDMI_MODE, + HDMI_FC_INVIDCONF); /* HDMI Initialization Step F - Configure AVI InfoFrame */ hdmi_config_AVI(hdmi, mode); From e56478758d232f503414c1e004f6f52973aeb0c4 Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Sat, 18 Nov 2017 11:09:39 +0100 Subject: [PATCH] rockchip: vop: force skip lines if image too big --- drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c index a2c1d85bba95..784e83537692 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c @@ -1649,6 +1649,7 @@ static void vop_plane_atomic_update(struct drm_plane *plane, int ymirror, xmirror; uint32_t val; bool rb_swap, global_alpha_en; + int skip_lines = 0; #if defined(CONFIG_ROCKCHIP_DRM_DEBUG) bool AFBC_flag = false; @@ -1685,8 +1686,14 @@ static void vop_plane_atomic_update(struct drm_plane *plane, } mode = &crtc->state->adjusted_mode; + + /* + * force skip lines if image too big. + */ actual_w = drm_rect_width(src) >> 16; - actual_h = drm_rect_height(src) >> 16; + if (actual_w == 3840 && is_yuv_support(fb->pixel_format)) + skip_lines = 1; + actual_h = drm_rect_height(src) >> (16 + skip_lines); act_info = (actual_h - 1) << 16 | ((actual_w - 1) & 0xffff); dsp_info = (drm_rect_height(dest) - 1) << 16; @@ -1708,10 +1715,10 @@ static void vop_plane_atomic_update(struct drm_plane *plane, VOP_WIN_SET(vop, win, xmirror, xmirror); VOP_WIN_SET(vop, win, ymirror, ymirror); VOP_WIN_SET(vop, win, format, vop_plane_state->format); - VOP_WIN_SET(vop, win, yrgb_vir, fb->pitches[0] >> 2); + VOP_WIN_SET(vop, win, yrgb_vir, fb->pitches[0] >> (2 - skip_lines)); VOP_WIN_SET(vop, win, yrgb_mst, vop_plane_state->yrgb_mst); if (is_yuv_support(fb->pixel_format)) { - VOP_WIN_SET(vop, win, uv_vir, fb->pitches[1] >> 2); + VOP_WIN_SET(vop, win, uv_vir, fb->pitches[1] >> (2 - skip_lines)); VOP_WIN_SET(vop, win, uv_mst, vop_plane_state->uv_mst); } VOP_WIN_SET(vop, win, fmt_10, is_yuv_10bit(fb->pixel_format)); From d1cc2fb593abab7510948339db9cf4b9a59926c6 Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Sat, 18 Nov 2017 23:17:24 +0100 Subject: [PATCH] gpu/arm/midgard: default to performance gpu governor --- drivers/gpu/arm/midgard/backend/gpu/mali_kbase_devfreq.c | 5 ++--- drivers/gpu/arm/midgard/mali_kbase_config_defaults.h | 3 +-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_devfreq.c b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_devfreq.c index 1495f06cd9b9..a6d2e0121015 100644 --- a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_devfreq.c +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_devfreq.c @@ -348,8 +348,7 @@ int kbase_devfreq_init(struct kbase_device *kbdev) dp = &kbdev->devfreq_profile; dp->initial_freq = kbdev->current_freq; - /* .KP : set devfreq_dvfs_interval_in_ms */ - dp->polling_ms = 20; + dp->polling_ms = 100; dp->target = kbase_devfreq_target; dp->get_dev_status = kbase_devfreq_status; dp->get_cur_freq = kbase_devfreq_cur_freq; @@ -363,7 +362,7 @@ int kbase_devfreq_init(struct kbase_device *kbdev) return err; kbdev->devfreq = devfreq_add_device(kbdev->dev, dp, - "simple_ondemand", NULL); + "performance", NULL); if (IS_ERR(kbdev->devfreq)) { kbase_devfreq_term_freq_table(kbdev); return PTR_ERR(kbdev->devfreq); diff --git a/drivers/gpu/arm/midgard/mali_kbase_config_defaults.h b/drivers/gpu/arm/midgard/mali_kbase_config_defaults.h index 1cf44b3500cf..a6a1a52f0463 100644 --- a/drivers/gpu/arm/midgard/mali_kbase_config_defaults.h +++ b/drivers/gpu/arm/midgard/mali_kbase_config_defaults.h @@ -109,8 +109,7 @@ enum { /* * Default period for DVFS sampling */ -// #define DEFAULT_PM_DVFS_PERIOD 100 /* 100ms */ -#define DEFAULT_PM_DVFS_PERIOD 20 /* 20 ms */ +#define DEFAULT_PM_DVFS_PERIOD 100 /* 100ms */ /* * Power Management poweroff tick granuality. This is in nanoseconds to From fd3c597dd56bca81fc642d918343ab2f9435628f Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Sun, 10 Dec 2017 14:16:09 +0100 Subject: [PATCH] uapi: install rockchip_drm header --- include/uapi/drm/Kbuild | 1 + 1 file changed, 1 insertion(+) diff --git a/include/uapi/drm/Kbuild b/include/uapi/drm/Kbuild index 38d437096c35..b7ae9969d41e 100644 --- a/include/uapi/drm/Kbuild +++ b/include/uapi/drm/Kbuild @@ -11,6 +11,7 @@ header-y += nouveau_drm.h header-y += qxl_drm.h header-y += r128_drm.h header-y += radeon_drm.h +header-y += rockchip_drm.h header-y += savage_drm.h header-y += sis_drm.h header-y += tegra_drm.h From b5afb970037ac69a22f6d514c34175835f6078fc Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Sun, 10 Dec 2017 18:03:53 +0100 Subject: [PATCH] phy: rockchip-inno-hdmi-phy: add vesa dmt pixel clocks --- drivers/phy/rockchip/phy-rockchip-inno-hdmi-phy.c | 64 +++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/drivers/phy/rockchip/phy-rockchip-inno-hdmi-phy.c b/drivers/phy/rockchip/phy-rockchip-inno-hdmi-phy.c index 0161f80ab964..6cf391405ad6 100644 --- a/drivers/phy/rockchip/phy-rockchip-inno-hdmi-phy.c +++ b/drivers/phy/rockchip/phy-rockchip-inno-hdmi-phy.c @@ -278,6 +278,70 @@ static const struct pre_pll_config pre_pll_cfg_table[] = { {594000000, 371250000, 4, 495, 1, 2, 0, 1, 3, 1, 1, 1, 0}, {593407000, 593407000, 1, 98, 0, 2, 0, 1, 0, 1, 1, 0, 0xE6AE6B}, {594000000, 594000000, 1, 99, 0, 2, 0, 1, 0, 1, 1, 0, 0}, + { 25175000, 25175000, 30, 1007, 1, 2, 2, 1, 2, 3, 4, 0, 0}, + { 31500000, 31500000, 1, 21, 1, 1, 1, 1, 2, 2, 2, 0, 0}, + { 33750000, 33750000, 1, 45, 1, 2, 2, 1, 2, 3, 4, 0, 0}, + { 35500000, 35500000, 3, 71, 1, 1, 1, 1, 2, 2, 2, 0, 0}, + { 36000000, 36000000, 1, 12, 0, 1, 1, 1, 0, 2, 2, 0, 0}, + { 49500000, 49500000, 1, 33, 1, 1, 1, 1, 2, 2, 2, 0, 0}, + { 50000000, 50000000, 3, 50, 0, 1, 1, 1, 0, 2, 2, 0, 0}, + { 56250000, 56250000, 1, 75, 1, 2, 2, 1, 2, 3, 4, 0, 0}, + { 68250000, 68250000, 1, 91, 1, 2, 2, 1, 2, 3, 4, 0, 0}, + { 72000000, 72000000, 1, 24, 0, 1, 1, 1, 0, 2, 2, 0, 0}, + { 73250000, 73250000, 3, 293, 1, 2, 2, 1, 2, 3, 4, 0, 0}, + { 75000000, 75000000, 1, 25, 0, 1, 1, 1, 0, 2, 2, 0, 0}, + { 78750000, 78750000, 1, 105, 1, 2, 2, 1, 2, 3, 4, 0, 0}, + { 79500000, 79500000, 1, 53, 1, 1, 1, 1, 2, 2, 2, 0, 0}, + { 85500000, 85500000, 1, 57, 1, 1, 1, 1, 2, 2, 2, 0, 0}, + { 94500000, 94500000, 1, 63, 1, 1, 1, 1, 2, 2, 2, 0, 0}, + {101000000, 101000000, 3, 101, 0, 1, 1, 1, 0, 2, 2, 0, 0}, + {102250000, 102250000, 3, 409, 1, 2, 2, 1, 2, 3, 4, 0, 0}, + {106500000, 106500000, 1, 71, 1, 1, 1, 1, 2, 2, 2, 0, 0}, + {115500000, 115500000, 1, 77, 1, 1, 1, 1, 2, 2, 2, 0, 0}, + {117500000, 117500000, 3, 235, 1, 1, 1, 1, 2, 2, 2, 0, 0}, + {121750000, 121750000, 3, 487, 1, 2, 2, 1, 2, 3, 4, 0, 0}, + {122500000, 122500000, 3, 245, 1, 1, 1, 1, 2, 2, 2, 0, 0}, + {135000000, 135000000, 1, 45, 0, 1, 1, 1, 0, 2, 2, 0, 0}, + {136750000, 136750000, 3, 547, 1, 2, 2, 1, 2, 3, 4, 0, 0}, + {140250000, 140250000, 1, 187, 1, 2, 2, 1, 2, 3, 4, 0, 0}, + {146250000, 146250000, 1, 195, 1, 2, 2, 1, 2, 3, 4, 0, 0}, + {148250000, 148250000, 3, 593, 1, 2, 2, 1, 2, 3, 4, 0, 0}, + {154000000, 154000000, 3, 154, 0, 1, 1, 1, 0, 2, 2, 0, 0}, + {156000000, 156000000, 1, 52, 0, 1, 1, 1, 0, 2, 2, 0, 0}, + {156750000, 156750000, 1, 209, 1, 2, 2, 1, 2, 3, 4, 0, 0}, + {157000000, 157000000, 3, 157, 0, 1, 1, 1, 0, 2, 2, 0, 0}, + {157500000, 157500000, 1, 105, 1, 1, 1, 1, 2, 2, 2, 0, 0}, + {175500000, 175500000, 1, 117, 1, 1, 1, 1, 2, 2, 2, 0, 0}, + {179500000, 179500000, 3, 359, 1, 1, 1, 1, 2, 2, 2, 0, 0}, + {182750000, 182750000, 3, 731, 1, 2, 2, 1, 2, 3, 4, 0, 0}, + {187000000, 187000000, 3, 187, 0, 1, 1, 1, 0, 2, 2, 0, 0}, + {187250000, 187250000, 3, 749, 1, 2, 2, 1, 2, 3, 4, 0, 0}, + {189000000, 189000000, 1, 63, 0, 1, 1, 1, 0, 2, 2, 0, 0}, + {193250000, 193250000, 3, 773, 1, 2, 2, 1, 2, 3, 4, 0, 0}, + {202500000, 202500000, 1, 135, 1, 1, 1, 1, 2, 2, 2, 0, 0}, + {204750000, 204750000, 1, 273, 1, 2, 2, 1, 2, 3, 4, 0, 0}, + {208000000, 208000000, 3, 208, 0, 1, 1, 1, 0, 2, 2, 0, 0}, + {214750000, 214750000, 3, 859, 1, 2, 2, 1, 2, 3, 4, 0, 0}, + {218250000, 218250000, 1, 291, 1, 2, 2, 1, 2, 3, 4, 0, 0}, + {229500000, 229500000, 1, 153, 1, 1, 1, 1, 2, 2, 2, 0, 0}, + {234000000, 234000000, 1, 78, 0, 1, 1, 1, 0, 2, 2, 0, 0}, + {241500000, 241500000, 1, 161, 1, 1, 1, 1, 2, 2, 2, 0, 0}, + {245250000, 245250000, 1, 327, 1, 2, 2, 1, 2, 3, 4, 0, 0}, + {245500000, 245500000, 3, 491, 1, 1, 1, 1, 2, 2, 2, 0, 0}, + {261000000, 261000000, 1, 87, 0, 1, 1, 1, 0, 2, 2, 0, 0}, + {268250000, 268250000, 3, 1073, 1, 2, 2, 1, 2, 3, 4, 0, 0}, + {268500000, 268500000, 1, 179, 1, 1, 1, 1, 2, 2, 2, 0, 0}, + {281250000, 281250000, 1, 375, 1, 2, 2, 1, 2, 3, 4, 0, 0}, + {288000000, 288000000, 1, 96, 0, 1, 1, 1, 0, 2, 2, 0, 0}, + {312250000, 312250000, 3, 1249, 1, 2, 2, 1, 2, 3, 4, 0, 0}, + {317000000, 317000000, 3, 317, 0, 1, 1, 1, 0, 2, 2, 0, 0}, + {333250000, 333250000, 3, 1333, 1, 2, 2, 1, 2, 3, 4, 0, 0}, + {348500000, 348500000, 3, 697, 1, 1, 1, 1, 2, 2, 2, 0, 0}, + {356500000, 356500000, 3, 713, 1, 1, 1, 1, 2, 2, 2, 0, 0}, + {380500000, 380500000, 3, 761, 1, 1, 1, 1, 2, 2, 2, 0, 0}, + {443250000, 443250000, 1, 591, 1, 2, 2, 1, 2, 3, 4, 0, 0}, + {505250000, 505250000, 3, 2021, 1, 2, 2, 1, 2, 3, 4, 0, 0}, + {552750000, 552750000, 1, 737, 1, 2, 2, 1, 2, 3, 4, 0, 0}, { ~0UL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }; From c4bc7e7f44f76a7f6f2374956fd68cab657f1eb3 Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Sun, 21 Jan 2018 17:20:00 +0100 Subject: [PATCH] drm: fix HDR metadata infoframe length HDR metadata infoframe length is 26 bytes (not 30) according to [1] (CTA-861-G: 6.9 Dynamic Range and Mastering InfoFrame) Fixes activation of HDR mode on my LG OLED [1] https://standards.cta.tech/kwspub/published_docs/CTA-861-G_FINAL_revised_2017.pdf --- drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 2 +- drivers/gpu/drm/drm_edid.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c index ae498d097b61..018bef374dc3 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -1857,7 +1857,7 @@ static void hdmi_config_hdr_infoframe(struct dw_hdmi *hdmi) return; } - hdmi_writeb(hdmi, 1, HDMI_FC_DRM_HB0); + hdmi_writeb(hdmi, frame.version, HDMI_FC_DRM_HB0); hdmi_writeb(hdmi, frame.length, HDMI_FC_DRM_HB1); hdmi_writeb(hdmi, frame.eotf, HDMI_FC_DRM_PB0); hdmi_writeb(hdmi, frame.metadata_type, HDMI_FC_DRM_PB1); diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index bfe671071d9f..e3a0f561e8f0 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c @@ -4735,10 +4735,10 @@ drm_hdmi_infoframe_set_hdr_metadata(struct hdmi_drm_infoframe *frame, hdr_source_metadata = (struct hdr_static_metadata *)hdr_metadata; - frame->length = sizeof(struct hdr_static_metadata); + frame->length = 26; frame->eotf = hdr_source_metadata->eotf; - frame->type = hdr_source_metadata->type; + frame->metadata_type = hdr_source_metadata->type; for (i = 0; i < 3; i++) { frame->display_primaries_x[i] = From 3b4e87792660182b9f0093e016d41a7be53fe59e Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Sat, 27 Jan 2018 09:39:09 +0100 Subject: [PATCH] drm: add edid detection for Hybrid Log-Gamma EOTF --- drivers/gpu/drm/drm_edid.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index e3a0f561e8f0..f7d41950614e 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c @@ -2740,7 +2740,7 @@ add_detailed_modes(struct drm_connector *connector, struct edid *edid, #define TRADITIONAL_GAMMA_SDR (0x1 << 0) #define TRADITIONAL_GAMMA_HDR (0x1 << 1) #define SMPTE_ST2084 (0x1 << 2) -#define FUTURE_EOTF (0x1 << 3) +#define HYBRID_LOG_GAMMA (0x1 << 3) #define RESERVED_EOTF (0x3 << 4) #define STATIC_METADATA_TYPE1 (0x1 << 0) @@ -3710,6 +3710,8 @@ static uint16_t eotf_supported(const u8 *edid_ext) val |= TRADITIONAL_GAMMA_HDR; if (edid_ext[2] & SMPTE_ST2084) val |= SMPTE_ST2084; + if (edid_ext[2] & HYBRID_LOG_GAMMA) + val |= HYBRID_LOG_GAMMA; return val; } From a11ad9338755a57859c7ca1b54b7719fb644a5ef Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Sun, 11 Feb 2018 19:21:41 +0100 Subject: [PATCH] drm: bridge: dw-hdmi: default to underscan mode --- drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c index 018bef374dc3..d0866baa75fc 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -1691,7 +1691,7 @@ static void hdmi_config_AVI(struct dw_hdmi *hdmi, struct drm_display_mode *mode) break; } - frame.scan_mode = HDMI_SCAN_MODE_NONE; + frame.scan_mode = HDMI_SCAN_MODE_UNDERSCAN; /* * The Designware IP uses a different byte format from standard From cb40442a2cd891541ac55381a2610f61f9d56fa9 Mon Sep 17 00:00:00 2001 From: David Carrillo-Cisneros Date: Tue, 18 Jul 2017 18:18:37 -0700 Subject: [PATCH] UPSTREAM: perf tools: Add EXCLUDE_EXTLIBS and EXTRA_PERFLIBS to makefile The goal is to allow users to override linking of libraries that were automatically added to PERFLIBS. EXCLUDE_EXTLIBS contains linker flags to be removed from LIBS while EXTRA_PERFLIBS contains linker flags to be added. My use case is to force certain library to be build statically, e.g. for libelf: EXCLUDE_EXTLIBS=-lelf EXTRA_PERFLIBS=path/libelf.a Signed-off-by: David Carrillo-Cisneros Acked-by: Jiri Olsa Cc: Alexander Shishkin Cc: Elena Reshetova Cc: Kees Kook Cc: Paul Turner Cc: Stephane Eranian Cc: Sudeep Holla Cc: Wang Nan Link: http://lkml.kernel.org/r/20170719011839.99399-3-davidcc@google.com Signed-off-by: Arnaldo Carvalho de Melo (cherry picked from commit cb281fea4b0a326d2a2104f8ffae2b6895c561fd) --- tools/perf/Makefile.perf | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf index fb1c9ddc3478..9b3b9bd50d54 100644 --- a/tools/perf/Makefile.perf +++ b/tools/perf/Makefile.perf @@ -33,6 +33,11 @@ include config/utilities.mak # # Define EXTRA_CFLAGS=-m64 or EXTRA_CFLAGS=-m32 as appropriate for cross-builds. # +# Define EXCLUDE_EXTLIBS=-lmylib to exclude libmylib from the auto-generated +# EXTLIBS. +# +# Define EXTRA_PERFLIBS to pass extra libraries to PERFLIBS. +# # Define NO_DWARF if you do not want debug-info analysis feature at all. # # Define WERROR=0 to disable treating any warnings as errors. @@ -289,7 +294,8 @@ ifdef ASCIIDOC8 export ASCIIDOC8 endif -LIBS = -Wl,--whole-archive $(PERFLIBS) -Wl,--no-whole-archive -Wl,--start-group $(EXTLIBS) -Wl,--end-group +EXTLIBS := $(call filter-out,$(EXCLUDE_EXTLIBS),$(EXTLIBS)) +LIBS = -Wl,--whole-archive $(PERFLIBS) $(EXTRA_PERFLIBS) -Wl,--no-whole-archive -Wl,--start-group $(EXTLIBS) -Wl,--end-group export INSTALL SHELL_PATH From 6f95e5cdd43756df0bc1caa983f0f326a38bb9ff Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Tue, 27 Feb 2018 20:49:00 +0100 Subject: [PATCH] net: wireless: rockchip_wlan: rtl8723bs: do not accept all sdio wlan id --- drivers/net/wireless/rockchip_wlan/rtl8723bs/Makefile | 2 +- drivers/net/wireless/rockchip_wlan/rtl8723bs/os_dep/linux/sdio_intf.c | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/rockchip_wlan/rtl8723bs/Makefile b/drivers/net/wireless/rockchip_wlan/rtl8723bs/Makefile index 0ff707fd37eb..ca79c18b8eb8 100644 --- a/drivers/net/wireless/rockchip_wlan/rtl8723bs/Makefile +++ b/drivers/net/wireless/rockchip_wlan/rtl8723bs/Makefile @@ -1347,7 +1347,7 @@ EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_ANDROID -DCONFIG_PLATFO EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE # default setting for Power control -EXTRA_CFLAGS += -DRTW_ENABLE_WIFI_CONTROL_FUNC +#EXTRA_CFLAGS += -DRTW_ENABLE_WIFI_CONTROL_FUNC EXTRA_CFLAGS += -DRTW_SUPPORT_PLATFORM_SHUTDOWN EXTRA_CFLAGS += -DCONFIG_RESUME_IN_WORKQUEUE # default setting for Special function diff --git a/drivers/net/wireless/rockchip_wlan/rtl8723bs/os_dep/linux/sdio_intf.c b/drivers/net/wireless/rockchip_wlan/rtl8723bs/os_dep/linux/sdio_intf.c index b4654d229634..48b6cf61d436 100644 --- a/drivers/net/wireless/rockchip_wlan/rtl8723bs/os_dep/linux/sdio_intf.c +++ b/drivers/net/wireless/rockchip_wlan/rtl8723bs/os_dep/linux/sdio_intf.c @@ -45,6 +45,9 @@ static struct mmc_host *mmc_host = NULL; static const struct sdio_device_id sdio_ids[] = { #ifdef CONFIG_RTL8723B + { SDIO_DEVICE(0x024c, 0x0523), .driver_data = RTL8723B}, + { SDIO_DEVICE(0x024c, 0x0623), .driver_data = RTL8723B}, + { SDIO_DEVICE(0x024c, 0x0626), .driver_data = RTL8723B}, { SDIO_DEVICE(0x024c, 0xB723), .driver_data = RTL8723B}, #endif #ifdef CONFIG_RTL8188E From 157645ba1282857bf4440707620c9ca91d8f8913 Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Fri, 2 Mar 2018 20:53:32 +0100 Subject: [PATCH] net: wireless: rockchip_wlan: bcmdhd: detect broadcom sdio device id --- drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/bcmsdh_sdmmc_linux.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/bcmsdh_sdmmc_linux.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/bcmsdh_sdmmc_linux.c index 8864582b1706..b5a388cc3cbe 100755 --- a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/bcmsdh_sdmmc_linux.c +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/bcmsdh_sdmmc_linux.c @@ -225,7 +225,7 @@ static const struct sdio_device_id bcmsdh_sdmmc_ids[] = { { SDIO_DEVICE(SDIO_VENDOR_ID_BROADCOM, SDIO_DEVICE_ID_BROADCOM_4334) }, { SDIO_DEVICE(SDIO_VENDOR_ID_BROADCOM, SDIO_DEVICE_ID_BROADCOM_4324) }, { SDIO_DEVICE(SDIO_VENDOR_ID_BROADCOM, SDIO_DEVICE_ID_BROADCOM_43239) }, - { SDIO_DEVICE_CLASS(SDIO_CLASS_NONE) }, + { SDIO_DEVICE(SDIO_VENDOR_ID_BROADCOM, SDIO_ANY_ID) }, { 0, 0, 0, 0 /* end: all zeroes */ }, }; From 00c9d5749537dacbd745ce3456f1335cbe019d54 Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Sun, 1 Jul 2018 23:17:47 +0200 Subject: [PATCH] drm/rockchip: clip yuv --- drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 2 ++ drivers/gpu/drm/rockchip/rockchip_drm_vop.h | 2 ++ drivers/gpu/drm/rockchip/rockchip_vop_reg.c | 3 +++ 3 files changed, 7 insertions(+) diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c index 784e83537692..7073ea91c349 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c @@ -1712,6 +1712,7 @@ static void vop_plane_atomic_update(struct drm_plane *plane, spin_lock(&vop->reg_lock); + VOP_WIN_SET(vop, win, yuv_clip, 1); VOP_WIN_SET(vop, win, xmirror, xmirror); VOP_WIN_SET(vop, win, ymirror, ymirror); VOP_WIN_SET(vop, win, format, vop_plane_state->format); @@ -2512,6 +2513,7 @@ static void vop_update_csc(struct drm_crtc *crtc) VOP_CTRL_SET(vop, dsp_data_swap, 0); VOP_CTRL_SET(vop, out_mode, s->output_mode); + VOP_CTRL_SET(vop, yuv_clip, 1); switch (s->bus_format) { case MEDIA_BUS_FMT_RGB565_1X16: diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.h b/drivers/gpu/drm/rockchip/rockchip_drm_vop.h index 5850572b40ff..b465c08876f8 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.h +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.h @@ -171,6 +171,7 @@ struct vop_ctrl { struct vop_reg dsp_lut_en; struct vop_reg out_mode; + struct vop_reg yuv_clip; struct vop_reg xmirror; struct vop_reg ymirror; @@ -395,6 +396,7 @@ struct vop_win_phy { struct vop_reg format; struct vop_reg fmt_10; struct vop_reg csc_mode; + struct vop_reg yuv_clip; struct vop_reg xmirror; struct vop_reg ymirror; struct vop_reg rb_swap; diff --git a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c index 5f517e193cc8..f03009e304f8 100644 --- a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c +++ b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c @@ -110,6 +110,7 @@ static const struct vop_win_phy rk3288_win01_data = { .fmt_10 = VOP_REG(RK3288_WIN0_CTRL0, 0x7, 4), .csc_mode = VOP_REG_VER(RK3288_WIN0_CTRL0, 0x3, 10, 3, 2, -1), .rb_swap = VOP_REG(RK3288_WIN0_CTRL0, 0x1, 12), + .yuv_clip = VOP_REG(RK3288_WIN0_CTRL0, 0x1, 20), .xmirror = VOP_REG_VER(RK3368_WIN0_CTRL0, 0x1, 21, 3, 2, -1), .ymirror = VOP_REG_VER(RK3368_WIN0_CTRL0, 0x1, 22, 3, 2, -1), .act_info = VOP_REG(RK3288_WIN0_ACT_INFO, 0x1fff1fff, 0), @@ -277,6 +278,7 @@ static const struct vop_ctrl rk3288_ctrl_data = { .bcsh_color_bar = VOP_REG(RK3288_BCSH_COLOR_BAR, 0xffffff, 8), .bcsh_en = VOP_REG(RK3288_BCSH_COLOR_BAR, 0x1, 0), + .yuv_clip = VOP_REG(RK3288_DSP_CTRL0, 0x1, 21), .xmirror = VOP_REG(RK3288_DSP_CTRL0, 0x1, 22), .ymirror = VOP_REG(RK3288_DSP_CTRL0, 0x1, 23), @@ -955,6 +957,7 @@ static const struct vop_ctrl rk3328_ctrl_data = { .dsp_lut_en = VOP_REG(RK3328_DSP_CTRL1, 0x1, 0), .out_mode = VOP_REG(RK3328_DSP_CTRL0, 0xf, 0), + .yuv_clip = VOP_REG(RK3328_DSP_CTRL0, 0x1, 21), .xmirror = VOP_REG(RK3328_DSP_CTRL0, 0x1, 22), .ymirror = VOP_REG(RK3328_DSP_CTRL0, 0x1, 23), From 93fb1cdc962e44ce72fec1191e0bf200c9aaf130 Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Sun, 8 Jul 2018 12:38:00 +0200 Subject: [PATCH] drm/atomic: use active_only flag for connector atomic begin/flush --- drivers/gpu/drm/drm_atomic_helper.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c index f77d4aa1e58b..4da489b54dc5 100644 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c @@ -1563,15 +1563,15 @@ void drm_atomic_helper_commit_planes(struct drm_device *dev, for_each_connector_in_state(old_state, connector, old_conn_state, i) { const struct drm_connector_helper_funcs *funcs; - if (!connector->state->crtc) - continue; + funcs = connector->helper_private; - if (!connector->state->crtc->state->active) + if (!funcs || !funcs->atomic_begin) continue; - funcs = connector->helper_private; + if (!connector->state->crtc) + continue; - if (!funcs || !funcs->atomic_begin) + if (active_only && !connector->state->crtc->state->active) continue; DRM_DEBUG_ATOMIC("flush beginning [CONNECTOR:%d:%s]\n", @@ -1645,15 +1645,15 @@ void drm_atomic_helper_commit_planes(struct drm_device *dev, for_each_connector_in_state(old_state, connector, old_conn_state, i) { const struct drm_connector_helper_funcs *funcs; - if (!connector->state->crtc) - continue; + funcs = connector->helper_private; - if (!connector->state->crtc->state->active) + if (!funcs || !funcs->atomic_flush) continue; - funcs = connector->helper_private; + if (!connector->state->crtc) + continue; - if (!funcs || !funcs->atomic_flush) + if (active_only && !connector->state->crtc->state->active) continue; DRM_DEBUG_ATOMIC("flushing [CONNECTOR:%d:%s]\n", From d0f8100f82203017bac6617d3f0e30b524956d36 Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Sun, 22 Jul 2018 14:51:58 +0200 Subject: [PATCH] drm: rockchip: dw-hdmi: only force YCbCr422 when max tmds is up to 340Mhz --- drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c index 7273561fe6b1..e2aad6e2149b 100644 --- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c +++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c @@ -728,7 +728,9 @@ dw_hdmi_rockchip_select_output(struct drm_connector_state *conn_state, /* BT2020 require color depth at lest 10bit */ *color_depth = 10; /* We prefer use YCbCr422 to send 10bit */ - if (info->color_formats & DRM_COLOR_FORMAT_YCRCB422) + if (info->color_formats & DRM_COLOR_FORMAT_YCRCB422 && + info->max_tmds_clock <= 340000 && + hdmi->dev_type != RK3288_HDMI) *color_format = DRM_HDMI_OUTPUT_YCBCR422; } From d093be3d79b5c781719298676282e44b7d7bb290 Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Sun, 22 Jul 2018 15:09:16 +0200 Subject: [PATCH] drm: bridge: dw-hdmi: signal full range for rgb output --- drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c index d0866baa75fc..520f87b88130 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -1693,6 +1693,14 @@ static void hdmi_config_AVI(struct dw_hdmi *hdmi, struct drm_display_mode *mode) frame.scan_mode = HDMI_SCAN_MODE_UNDERSCAN; + if (hdmi_bus_fmt_is_rgb(hdmi->hdmi_data.enc_out_bus_format)) { + frame.quantization_range = HDMI_QUANTIZATION_RANGE_FULL; + frame.ycc_quantization_range = HDMI_YCC_QUANTIZATION_RANGE_FULL; + } else { + frame.quantization_range = HDMI_QUANTIZATION_RANGE_LIMITED; + frame.ycc_quantization_range = HDMI_YCC_QUANTIZATION_RANGE_LIMITED; + } + /* * The Designware IP uses a different byte format from standard * AVI info frames, though generally the bits are in the correct From 623aaf53edd860816297c9230d39b5b96b0146f3 Mon Sep 17 00:00:00 2001 From: Myy Miouyouyou Date: Mon, 21 May 2018 22:32:59 +0200 Subject: [PATCH] GPU: ARM: Midgard: Adapt to the new mmap call checks. Now, I don't know if this driver is just one of these "buggy" drivers Linus is talking about, or if this is just standard GPU procedure. Anyway, this patch is due to this change by Linus Torvalds : https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=be83bbf806822b1b89e0a0f23cd87cddc409e429 And the fix is inspired by : https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=76ef6b28ea4f81c3d511866a9b31392caa833126 Signed-off-by: Myy Miouyouyou --- drivers/gpu/arm/midgard/mali_kbase_core_linux.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/gpu/arm/midgard/mali_kbase_core_linux.c b/drivers/gpu/arm/midgard/mali_kbase_core_linux.c index 3a6e5aae0bce..2b24e415dfa6 100644 --- a/drivers/gpu/arm/midgard/mali_kbase_core_linux.c +++ b/drivers/gpu/arm/midgard/mali_kbase_core_linux.c @@ -1155,6 +1155,7 @@ static int kbase_open(struct inode *inode, struct file *filp) init_waitqueue_head(&kctx->event_queue); filp->private_data = kctx; + filp->f_mode |= FMODE_UNSIGNED_OFFSET; kctx->filp = filp; if (kbdev->infinite_cache_active_default) From d0e509162ace165ab24c8a005a2666c6c17e4d69 Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Sat, 28 Jul 2018 10:41:40 +0200 Subject: [PATCH] WIP: mm: dma-mapping: increase dma pool size --- arch/arm/mm/dma-mapping.c | 2 +- arch/arm64/mm/dma-mapping.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c index d539dee3c78d..689961153d71 100644 --- a/arch/arm/mm/dma-mapping.c +++ b/arch/arm/mm/dma-mapping.c @@ -301,7 +301,7 @@ static void __dma_free_remap(void *cpu_addr, size_t size) VM_ARM_DMA_CONSISTENT | VM_USERMAP); } -#define DEFAULT_DMA_COHERENT_POOL_SIZE SZ_256K +#define DEFAULT_DMA_COHERENT_POOL_SIZE SZ_2M static struct gen_pool *atomic_pool; static size_t atomic_pool_size = DEFAULT_DMA_COHERENT_POOL_SIZE; diff --git a/arch/arm64/mm/dma-mapping.c b/arch/arm64/mm/dma-mapping.c index 2b05653e8156..2ad8515cd4da 100644 --- a/arch/arm64/mm/dma-mapping.c +++ b/arch/arm64/mm/dma-mapping.c @@ -32,7 +32,7 @@ static struct gen_pool *atomic_pool; -#define DEFAULT_DMA_COHERENT_POOL_SIZE SZ_256K +#define DEFAULT_DMA_COHERENT_POOL_SIZE SZ_2M static size_t atomic_pool_size __initdata = DEFAULT_DMA_COHERENT_POOL_SIZE; static int __init early_coherent_pool(char *p) From 9cfc544f5914ccf2a44da96e491195eea763d70f Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Sat, 4 Aug 2018 15:19:39 +0200 Subject: [PATCH] drm: add picture_aspect_ratio to hdmi 1.4 4k modes --- drivers/gpu/drm/drm_edid.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index f7d41950614e..69a1eb4ee382 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c @@ -1233,25 +1233,25 @@ static const struct drm_display_mode edid_4k_modes[] = { 3840, 4016, 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), - .vrefresh = 30, }, + .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, /* 2 - 3840x2160@25Hz */ { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 4896, 4984, 5280, 0, 2160, 2168, 2178, 2250, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), - .vrefresh = 25, }, + .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, /* 3 - 3840x2160@24Hz */ { DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000, 3840, 5116, 5204, 5500, 0, 2160, 2168, 2178, 2250, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), - .vrefresh = 24, }, + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, /* 4 - 4096x2160@24Hz (SMPTE) */ { DRM_MODE("4096x2160", DRM_MODE_TYPE_DRIVER, 297000, 4096, 5116, 5204, 5500, 0, 2160, 2168, 2178, 2250, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), - .vrefresh = 24, }, + .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_256_135, }, }; /*** DDC fetch and block validation ***/ From 728a068901826027cf45d404f49b58f6cf02156a Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Sat, 4 Aug 2018 16:26:47 +0200 Subject: [PATCH] drm: bridge: dw-hdmi: signal none colorimetry for rgb output --- drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c index 520f87b88130..c6ef3d43f997 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -1694,6 +1694,8 @@ static void hdmi_config_AVI(struct dw_hdmi *hdmi, struct drm_display_mode *mode) frame.scan_mode = HDMI_SCAN_MODE_UNDERSCAN; if (hdmi_bus_fmt_is_rgb(hdmi->hdmi_data.enc_out_bus_format)) { + frame.colorimetry = HDMI_COLORIMETRY_NONE; + frame.extended_colorimetry = 0; frame.quantization_range = HDMI_QUANTIZATION_RANGE_FULL; frame.ycc_quantization_range = HDMI_YCC_QUANTIZATION_RANGE_FULL; } else { From bc7d29237337d1506fe63bbb421d64710e176537 Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Sat, 4 Aug 2018 16:27:08 +0200 Subject: [PATCH] drm: bridge: dw-hdmi: signal it content and content type --- drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c index c6ef3d43f997..a0e25278232b 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -1692,6 +1692,8 @@ static void hdmi_config_AVI(struct dw_hdmi *hdmi, struct drm_display_mode *mode) } frame.scan_mode = HDMI_SCAN_MODE_UNDERSCAN; + frame.content_type = HDMI_CONTENT_TYPE_GRAPHICS; + frame.itc = true; if (hdmi_bus_fmt_is_rgb(hdmi->hdmi_data.enc_out_bus_format)) { frame.colorimetry = HDMI_COLORIMETRY_NONE; From d0b82f5649ddb897cbf92f5e06030244ffc4e9eb Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Sat, 4 Aug 2018 16:27:40 +0200 Subject: [PATCH] drm: bridge: dw-hdmi: log infoframes --- drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c index a0e25278232b..f56f3224a1c9 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -1705,6 +1705,8 @@ static void hdmi_config_AVI(struct dw_hdmi *hdmi, struct drm_display_mode *mode) frame.ycc_quantization_range = HDMI_YCC_QUANTIZATION_RANGE_LIMITED; } + hdmi_infoframe_log(KERN_INFO, hdmi->dev, &frame); + /* * The Designware IP uses a different byte format from standard * AVI info frames, though generally the bits are in the correct @@ -1798,6 +1800,8 @@ static void hdmi_config_vendor_specific_infoframe(struct dw_hdmi *hdmi, return; } + hdmi_infoframe_log(KERN_INFO, hdmi->dev, &frame); + /* Set the length of HDMI vendor specific InfoFrame payload */ hdmi_writeb(hdmi, buffer[2], HDMI_FC_VSDSIZE); @@ -1838,7 +1842,7 @@ static void hdmi_config_hdr_infoframe(struct dw_hdmi *hdmi) /* Dynamic Range and Mastering Infoframe is introduced in v2.11a. */ if (hdmi->version < 0x211a) { - DRM_ERROR("Not support DRM Infoframe\n"); + DRM_DEBUG("Not support DRM Infoframe\n"); return; } @@ -1869,6 +1873,8 @@ static void hdmi_config_hdr_infoframe(struct dw_hdmi *hdmi) return; } + hdmi_infoframe_log(KERN_INFO, hdmi->dev, &frame); + hdmi_writeb(hdmi, frame.version, HDMI_FC_DRM_HB0); hdmi_writeb(hdmi, frame.length, HDMI_FC_DRM_HB1); hdmi_writeb(hdmi, frame.eotf, HDMI_FC_DRM_PB0);