* [PATCH v3 0/5] sunxi: fix H6 HDMI related issues @ 2021-02-09 17:58 Jernej Skrabec 2021-02-09 17:58 ` [PATCH v3 1/5] clk: sunxi-ng: mp: fix parent rate change flag check Jernej Skrabec ` (5 more replies) 0 siblings, 6 replies; 11+ messages in thread From: Jernej Skrabec @ 2021-02-09 17:58 UTC (permalink / raw) To: mripard, wens Cc: sboyd, mturquette, linux-kernel, dri-devel, airlied, linux-sunxi, linux-clk, linux-arm-kernel Over the year I got plenty of reports of troubles with H6 HDMI signal. Sometimes monitor flickers, sometimes there was no image at all and sometimes it didn't play well with AVR. It turns out there are multiple issues. Patch 1 fixes clock issue, which didn't adjust parent rate, even if it is allowed to do so. Patch 2 adds polarity config in tcon1. This is seemingly not needed for pre-HDMI2 controllers, although BSP drivers set it accordingly every time. It turns out that HDMI2 controllers often don't work with monitors if polarity is not set correctly. Patch 3 always set clock rate for HDMI controller. Patch 4 fixes H6 HDMI PHY settings. Patch 5 fixes comment and clock rate limit (wrong reasoning). Please take a look. Best regards, Jernej Changes from v2: - use clk_hw_can_set_rate_parent() directly instead of checking flags Changes from v1: - collected Chen-Yu tags (except on replaced patch 4) - Added some comments in patch 2 - Replaced patch 4 (see commit log for explanation) Jernej Skrabec (5): clk: sunxi-ng: mp: fix parent rate change flag check drm/sun4i: tcon: set sync polarity for tcon1 channel drm/sun4i: dw-hdmi: always set clock rate drm/sun4i: Fix H6 HDMI PHY configuration drm/sun4i: dw-hdmi: Fix max. frequency for H6 drivers/clk/sunxi-ng/ccu_mp.c | 2 +- drivers/gpu/drm/sun4i/sun4i_tcon.c | 25 +++++++++++++++++++++++++ drivers/gpu/drm/sun4i/sun4i_tcon.h | 6 ++++++ drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c | 10 +++------- drivers/gpu/drm/sun4i/sun8i_dw_hdmi.h | 1 - drivers/gpu/drm/sun4i/sun8i_hdmi_phy.c | 26 +++++++++----------------- 6 files changed, 44 insertions(+), 26 deletions(-) -- 2.30.0 _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v3 1/5] clk: sunxi-ng: mp: fix parent rate change flag check 2021-02-09 17:58 [PATCH v3 0/5] sunxi: fix H6 HDMI related issues Jernej Skrabec @ 2021-02-09 17:58 ` Jernej Skrabec 2021-02-10 10:29 ` Maxime Ripard 2021-02-12 3:06 ` Stephen Boyd 2021-02-09 17:58 ` [PATCH v3 2/5] drm/sun4i: tcon: set sync polarity for tcon1 channel Jernej Skrabec ` (4 subsequent siblings) 5 siblings, 2 replies; 11+ messages in thread From: Jernej Skrabec @ 2021-02-09 17:58 UTC (permalink / raw) To: mripard, wens Cc: sboyd, mturquette, linux-kernel, dri-devel, airlied, linux-sunxi, linux-clk, linux-arm-kernel CLK_SET_RATE_PARENT flag is checked on parent clock instead of current one. Fix that. Fixes: 3f790433c3cb ("clk: sunxi-ng: Adjust MP clock parent rate when allowed") Reviewed-by: Chen-Yu Tsai <wens@csie.org> Tested-by: Andre Heider <a.heider@gmail.com> Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net> --- drivers/clk/sunxi-ng/ccu_mp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/clk/sunxi-ng/ccu_mp.c b/drivers/clk/sunxi-ng/ccu_mp.c index fa4ecb915590..9d3a76604d94 100644 --- a/drivers/clk/sunxi-ng/ccu_mp.c +++ b/drivers/clk/sunxi-ng/ccu_mp.c @@ -108,7 +108,7 @@ static unsigned long ccu_mp_round_rate(struct ccu_mux_internal *mux, max_m = cmp->m.max ?: 1 << cmp->m.width; max_p = cmp->p.max ?: 1 << ((1 << cmp->p.width) - 1); - if (!(clk_hw_get_flags(hw) & CLK_SET_RATE_PARENT)) { + if (!clk_hw_can_set_rate_parent(&cmp->common.hw)) { ccu_mp_find_best(*parent_rate, rate, max_m, max_p, &m, &p); rate = *parent_rate / p / m; } else { -- 2.30.0 _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v3 1/5] clk: sunxi-ng: mp: fix parent rate change flag check 2021-02-09 17:58 ` [PATCH v3 1/5] clk: sunxi-ng: mp: fix parent rate change flag check Jernej Skrabec @ 2021-02-10 10:29 ` Maxime Ripard 2021-02-11 2:28 ` Stephen Boyd 2021-02-12 3:06 ` Stephen Boyd 1 sibling, 1 reply; 11+ messages in thread From: Maxime Ripard @ 2021-02-10 10:29 UTC (permalink / raw) To: mturquette, sboyd, Jernej Skrabec Cc: airlied, linux-sunxi, linux-kernel, dri-devel, wens, linux-clk, linux-arm-kernel [-- Attachment #1.1: Type: text/plain, Size: 563 bytes --] Hi Mike, Stephen, On Tue, Feb 09, 2021 at 06:58:56PM +0100, Jernej Skrabec wrote: > CLK_SET_RATE_PARENT flag is checked on parent clock instead of current > one. Fix that. > > Fixes: 3f790433c3cb ("clk: sunxi-ng: Adjust MP clock parent rate when allowed") > Reviewed-by: Chen-Yu Tsai <wens@csie.org> > Tested-by: Andre Heider <a.heider@gmail.com> > Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net> This is a last minute fix for us, can you merge it into clk-fixes directly? Acked-by: Maxime Ripard <mripard@kernel.org> Thanks! Maxime [-- Attachment #1.2: signature.asc --] [-- Type: application/pgp-signature, Size: 228 bytes --] [-- Attachment #2: Type: text/plain, Size: 160 bytes --] _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3 1/5] clk: sunxi-ng: mp: fix parent rate change flag check 2021-02-10 10:29 ` Maxime Ripard @ 2021-02-11 2:28 ` Stephen Boyd 2021-02-11 5:39 ` Jernej Škrabec 0 siblings, 1 reply; 11+ messages in thread From: Stephen Boyd @ 2021-02-11 2:28 UTC (permalink / raw) To: Jernej Skrabec, Maxime Ripard, mturquette Cc: airlied, linux-sunxi, linux-kernel, dri-devel, wens, linux-clk, linux-arm-kernel Quoting Maxime Ripard (2021-02-10 02:29:04) > Hi Mike, Stephen, > > On Tue, Feb 09, 2021 at 06:58:56PM +0100, Jernej Skrabec wrote: > > CLK_SET_RATE_PARENT flag is checked on parent clock instead of current > > one. Fix that. > > > > Fixes: 3f790433c3cb ("clk: sunxi-ng: Adjust MP clock parent rate when allowed") > > Reviewed-by: Chen-Yu Tsai <wens@csie.org> > > Tested-by: Andre Heider <a.heider@gmail.com> > > Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net> > > This is a last minute fix for us, can you merge it into clk-fixes directly? > > Acked-by: Maxime Ripard <mripard@kernel.org> > It's also fixing a problem that's been around since v5.0. Is something broken that needs fixing this late? The motivation could be added to the commit text because right now it looks like a typo fix spotted visually. _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3 1/5] clk: sunxi-ng: mp: fix parent rate change flag check 2021-02-11 2:28 ` Stephen Boyd @ 2021-02-11 5:39 ` Jernej Škrabec 0 siblings, 0 replies; 11+ messages in thread From: Jernej Škrabec @ 2021-02-11 5:39 UTC (permalink / raw) To: Maxime Ripard, mturquette, Stephen Boyd Cc: airlied, linux-sunxi, linux-kernel, dri-devel, wens, linux-clk, linux-arm-kernel Dne četrtek, 11. februar 2021 ob 03:28:00 CET je Stephen Boyd napisal(a): > Quoting Maxime Ripard (2021-02-10 02:29:04) > > > Hi Mike, Stephen, > > > > On Tue, Feb 09, 2021 at 06:58:56PM +0100, Jernej Skrabec wrote: > > > CLK_SET_RATE_PARENT flag is checked on parent clock instead of current > > > one. Fix that. > > > > > > Fixes: 3f790433c3cb ("clk: sunxi-ng: Adjust MP clock parent rate when > > > allowed") Reviewed-by: Chen-Yu Tsai <wens@csie.org> > > > Tested-by: Andre Heider <a.heider@gmail.com> > > > Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net> > > > > This is a last minute fix for us, can you merge it into clk-fixes > > directly? > > > > Acked-by: Maxime Ripard <mripard@kernel.org> > > It's also fixing a problem that's been around since v5.0. Is something > broken that needs fixing this late? The motivation could be added to the > commit text because right now it looks like a typo fix spotted visually. Yes, it's needed. Without this patch, 4k@60 doesn't work and probably some other resolutions too. That's why it's send with other display related fixes. This is part of solution for longstanding display issues. Best regards, Jernej _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3 1/5] clk: sunxi-ng: mp: fix parent rate change flag check 2021-02-09 17:58 ` [PATCH v3 1/5] clk: sunxi-ng: mp: fix parent rate change flag check Jernej Skrabec 2021-02-10 10:29 ` Maxime Ripard @ 2021-02-12 3:06 ` Stephen Boyd 1 sibling, 0 replies; 11+ messages in thread From: Stephen Boyd @ 2021-02-12 3:06 UTC (permalink / raw) To: Jernej Skrabec, mripard, wens Cc: airlied, mturquette, linux-kernel, dri-devel, linux-sunxi, linux-clk, linux-arm-kernel Quoting Jernej Skrabec (2021-02-09 09:58:56) > CLK_SET_RATE_PARENT flag is checked on parent clock instead of current > one. Fix that. > > Fixes: 3f790433c3cb ("clk: sunxi-ng: Adjust MP clock parent rate when allowed") > Reviewed-by: Chen-Yu Tsai <wens@csie.org> > Tested-by: Andre Heider <a.heider@gmail.com> > Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net> > --- Ok, Applied to clk-fixes _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v3 2/5] drm/sun4i: tcon: set sync polarity for tcon1 channel 2021-02-09 17:58 [PATCH v3 0/5] sunxi: fix H6 HDMI related issues Jernej Skrabec 2021-02-09 17:58 ` [PATCH v3 1/5] clk: sunxi-ng: mp: fix parent rate change flag check Jernej Skrabec @ 2021-02-09 17:58 ` Jernej Skrabec 2021-02-09 17:58 ` [PATCH v3 3/5] drm/sun4i: dw-hdmi: always set clock rate Jernej Skrabec ` (3 subsequent siblings) 5 siblings, 0 replies; 11+ messages in thread From: Jernej Skrabec @ 2021-02-09 17:58 UTC (permalink / raw) To: mripard, wens Cc: sboyd, mturquette, linux-kernel, dri-devel, airlied, linux-sunxi, linux-clk, linux-arm-kernel Channel 1 has polarity bits for vsync and hsync signals but driver never sets them. It turns out that with pre-HDMI2 controllers seemingly there is no issue if polarity is not set. However, with HDMI2 controllers (H6) there often comes to de-synchronization due to phase shift. This causes flickering screen. It's safe to assume that similar issues might happen also with pre-HDMI2 controllers. Solve issue with setting vsync and hsync polarity. Note that display stacks with tcon top have polarity bits actually in tcon0 polarity register. Fixes: 9026e0d122ac ("drm: Add Allwinner A10 Display Engine support") Reviewed-by: Chen-Yu Tsai <wens@csie.org> Tested-by: Andre Heider <a.heider@gmail.com> Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net> --- drivers/gpu/drm/sun4i/sun4i_tcon.c | 25 +++++++++++++++++++++++++ drivers/gpu/drm/sun4i/sun4i_tcon.h | 6 ++++++ 2 files changed, 31 insertions(+) diff --git a/drivers/gpu/drm/sun4i/sun4i_tcon.c b/drivers/gpu/drm/sun4i/sun4i_tcon.c index 6b9af4c08cd6..9f06dec0fc61 100644 --- a/drivers/gpu/drm/sun4i/sun4i_tcon.c +++ b/drivers/gpu/drm/sun4i/sun4i_tcon.c @@ -672,6 +672,30 @@ static void sun4i_tcon1_mode_set(struct sun4i_tcon *tcon, SUN4I_TCON1_BASIC5_V_SYNC(vsync) | SUN4I_TCON1_BASIC5_H_SYNC(hsync)); + /* Setup the polarity of multiple signals */ + if (tcon->quirks->polarity_in_ch0) { + val = 0; + + if (mode->flags & DRM_MODE_FLAG_PHSYNC) + val |= SUN4I_TCON0_IO_POL_HSYNC_POSITIVE; + + if (mode->flags & DRM_MODE_FLAG_PVSYNC) + val |= SUN4I_TCON0_IO_POL_VSYNC_POSITIVE; + + regmap_write(tcon->regs, SUN4I_TCON0_IO_POL_REG, val); + } else { + /* according to vendor driver, this bit must be always set */ + val = SUN4I_TCON1_IO_POL_UNKNOWN; + + if (mode->flags & DRM_MODE_FLAG_PHSYNC) + val |= SUN4I_TCON1_IO_POL_HSYNC_POSITIVE; + + if (mode->flags & DRM_MODE_FLAG_PVSYNC) + val |= SUN4I_TCON1_IO_POL_VSYNC_POSITIVE; + + regmap_write(tcon->regs, SUN4I_TCON1_IO_POL_REG, val); + } + /* Map output pins to channel 1 */ regmap_update_bits(tcon->regs, SUN4I_TCON_GCTL_REG, SUN4I_TCON_GCTL_IOMAP_MASK, @@ -1500,6 +1524,7 @@ static const struct sun4i_tcon_quirks sun8i_a83t_tv_quirks = { static const struct sun4i_tcon_quirks sun8i_r40_tv_quirks = { .has_channel_1 = true, + .polarity_in_ch0 = true, .set_mux = sun8i_r40_tcon_tv_set_mux, }; diff --git a/drivers/gpu/drm/sun4i/sun4i_tcon.h b/drivers/gpu/drm/sun4i/sun4i_tcon.h index c5ac1b02482c..e624f6977eb8 100644 --- a/drivers/gpu/drm/sun4i/sun4i_tcon.h +++ b/drivers/gpu/drm/sun4i/sun4i_tcon.h @@ -154,6 +154,11 @@ #define SUN4I_TCON1_BASIC5_V_SYNC(height) (((height) - 1) & 0x3ff) #define SUN4I_TCON1_IO_POL_REG 0xf0 +/* there is no documentation about this bit */ +#define SUN4I_TCON1_IO_POL_UNKNOWN BIT(26) +#define SUN4I_TCON1_IO_POL_HSYNC_POSITIVE BIT(25) +#define SUN4I_TCON1_IO_POL_VSYNC_POSITIVE BIT(24) + #define SUN4I_TCON1_IO_TRI_REG 0xf4 #define SUN4I_TCON_ECC_FIFO_REG 0xf8 @@ -236,6 +241,7 @@ struct sun4i_tcon_quirks { bool needs_de_be_mux; /* sun6i needs mux to select backend */ bool needs_edp_reset; /* a80 edp reset needed for tcon0 access */ bool supports_lvds; /* Does the TCON support an LVDS output? */ + bool polarity_in_ch0; /* some tcon1 channels have polarity bits in tcon0 pol register */ u8 dclk_min_div; /* minimum divider for TCON0 DCLK */ /* callback to handle tcon muxing options */ -- 2.30.0 _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v3 3/5] drm/sun4i: dw-hdmi: always set clock rate 2021-02-09 17:58 [PATCH v3 0/5] sunxi: fix H6 HDMI related issues Jernej Skrabec 2021-02-09 17:58 ` [PATCH v3 1/5] clk: sunxi-ng: mp: fix parent rate change flag check Jernej Skrabec 2021-02-09 17:58 ` [PATCH v3 2/5] drm/sun4i: tcon: set sync polarity for tcon1 channel Jernej Skrabec @ 2021-02-09 17:58 ` Jernej Skrabec 2021-02-09 17:58 ` [PATCH v3 4/5] drm/sun4i: Fix H6 HDMI PHY configuration Jernej Skrabec ` (2 subsequent siblings) 5 siblings, 0 replies; 11+ messages in thread From: Jernej Skrabec @ 2021-02-09 17:58 UTC (permalink / raw) To: mripard, wens Cc: sboyd, mturquette, linux-kernel, dri-devel, airlied, linux-sunxi, linux-clk, linux-arm-kernel As expected, HDMI controller clock should always match pixel clock. In the past, changing HDMI controller rate would seemingly worsen situation. However, that was the result of other bugs which are now fixed. Fix that by removing set_rate quirk and always set clock rate. Fixes: 40bb9d3147b2 ("drm/sun4i: Add support for H6 DW HDMI controller") Reviewed-by: Chen-Yu Tsai <wens@csie.org> Tested-by: Andre Heider <a.heider@gmail.com> Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net> --- drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c | 4 +--- drivers/gpu/drm/sun4i/sun8i_dw_hdmi.h | 1 - 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c b/drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c index 92add2cef2e7..23773a5e0650 100644 --- a/drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c +++ b/drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c @@ -21,8 +21,7 @@ static void sun8i_dw_hdmi_encoder_mode_set(struct drm_encoder *encoder, { struct sun8i_dw_hdmi *hdmi = encoder_to_sun8i_dw_hdmi(encoder); - if (hdmi->quirks->set_rate) - clk_set_rate(hdmi->clk_tmds, mode->crtc_clock * 1000); + clk_set_rate(hdmi->clk_tmds, mode->crtc_clock * 1000); } static const struct drm_encoder_helper_funcs @@ -295,7 +294,6 @@ static int sun8i_dw_hdmi_remove(struct platform_device *pdev) static const struct sun8i_dw_hdmi_quirks sun8i_a83t_quirks = { .mode_valid = sun8i_dw_hdmi_mode_valid_a83t, - .set_rate = true, }; static const struct sun8i_dw_hdmi_quirks sun50i_h6_quirks = { diff --git a/drivers/gpu/drm/sun4i/sun8i_dw_hdmi.h b/drivers/gpu/drm/sun4i/sun8i_dw_hdmi.h index d983746fa194..d4b55af0592f 100644 --- a/drivers/gpu/drm/sun4i/sun8i_dw_hdmi.h +++ b/drivers/gpu/drm/sun4i/sun8i_dw_hdmi.h @@ -179,7 +179,6 @@ struct sun8i_dw_hdmi_quirks { enum drm_mode_status (*mode_valid)(struct dw_hdmi *hdmi, void *data, const struct drm_display_info *info, const struct drm_display_mode *mode); - unsigned int set_rate : 1; unsigned int use_drm_infoframe : 1; }; -- 2.30.0 _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v3 4/5] drm/sun4i: Fix H6 HDMI PHY configuration 2021-02-09 17:58 [PATCH v3 0/5] sunxi: fix H6 HDMI related issues Jernej Skrabec ` (2 preceding siblings ...) 2021-02-09 17:58 ` [PATCH v3 3/5] drm/sun4i: dw-hdmi: always set clock rate Jernej Skrabec @ 2021-02-09 17:58 ` Jernej Skrabec 2021-02-09 17:59 ` [PATCH v3 5/5] drm/sun4i: dw-hdmi: Fix max. frequency for H6 Jernej Skrabec 2021-02-10 10:29 ` [PATCH v3 0/5] sunxi: fix H6 HDMI related issues Maxime Ripard 5 siblings, 0 replies; 11+ messages in thread From: Jernej Skrabec @ 2021-02-09 17:58 UTC (permalink / raw) To: mripard, wens Cc: sboyd, mturquette, linux-kernel, dri-devel, airlied, linux-sunxi, linux-clk, linux-arm-kernel As it turns out, vendor HDMI PHY driver for H6 has a pretty big table of predefined values for various pixel clocks. However, most of them are not useful/tested because they come from reference driver code. Vendor PHY driver is concerned with only few of those, namely 27 MHz, 74.25 MHz, 148.5 MHz, 297 MHz and 594 MHz. These are all frequencies for standard CEA modes. Fix sun50i_h6_cur_ctr and sun50i_h6_phy_config with the values only for aforementioned frequencies. Table sun50i_h6_mpll_cfg doesn't need to be changed because values are actually frequency dependant and not so much SoC dependant. See i.MX6 documentation for explanation of those values for similar PHY. Fixes: c71c9b2fee17 ("drm/sun4i: Add support for Synopsys HDMI PHY") Tested-by: Andre Heider <a.heider@gmail.com> Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net> --- drivers/gpu/drm/sun4i/sun8i_hdmi_phy.c | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_hdmi_phy.c b/drivers/gpu/drm/sun4i/sun8i_hdmi_phy.c index 35c2133724e2..9994edf67509 100644 --- a/drivers/gpu/drm/sun4i/sun8i_hdmi_phy.c +++ b/drivers/gpu/drm/sun4i/sun8i_hdmi_phy.c @@ -104,29 +104,21 @@ static const struct dw_hdmi_mpll_config sun50i_h6_mpll_cfg[] = { static const struct dw_hdmi_curr_ctrl sun50i_h6_cur_ctr[] = { /* pixelclk bpp8 bpp10 bpp12 */ - { 25175000, { 0x0000, 0x0000, 0x0000 }, }, { 27000000, { 0x0012, 0x0000, 0x0000 }, }, - { 59400000, { 0x0008, 0x0008, 0x0008 }, }, - { 72000000, { 0x0008, 0x0008, 0x001b }, }, - { 74250000, { 0x0013, 0x0013, 0x0013 }, }, - { 90000000, { 0x0008, 0x001a, 0x001b }, }, - { 118800000, { 0x001b, 0x001a, 0x001b }, }, - { 144000000, { 0x001b, 0x001a, 0x0034 }, }, - { 180000000, { 0x001b, 0x0033, 0x0034 }, }, - { 216000000, { 0x0036, 0x0033, 0x0034 }, }, - { 237600000, { 0x0036, 0x0033, 0x001b }, }, - { 288000000, { 0x0036, 0x001b, 0x001b }, }, - { 297000000, { 0x0019, 0x001b, 0x0019 }, }, - { 330000000, { 0x0036, 0x001b, 0x001b }, }, - { 594000000, { 0x003f, 0x001b, 0x001b }, }, + { 74250000, { 0x0013, 0x001a, 0x001b }, }, + { 148500000, { 0x0019, 0x0033, 0x0034 }, }, + { 297000000, { 0x0019, 0x001b, 0x001b }, }, + { 594000000, { 0x0010, 0x001b, 0x001b }, }, { ~0UL, { 0x0000, 0x0000, 0x0000 }, } }; static const struct dw_hdmi_phy_config sun50i_h6_phy_config[] = { /*pixelclk symbol term vlev*/ - { 74250000, 0x8009, 0x0004, 0x0232}, - { 148500000, 0x8029, 0x0004, 0x0273}, - { 594000000, 0x8039, 0x0004, 0x014a}, + { 27000000, 0x8009, 0x0007, 0x02b0 }, + { 74250000, 0x8009, 0x0006, 0x022d }, + { 148500000, 0x8029, 0x0006, 0x0270 }, + { 297000000, 0x8039, 0x0005, 0x01ab }, + { 594000000, 0x8029, 0x0000, 0x008a }, { ~0UL, 0x0000, 0x0000, 0x0000} }; -- 2.30.0 _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v3 5/5] drm/sun4i: dw-hdmi: Fix max. frequency for H6 2021-02-09 17:58 [PATCH v3 0/5] sunxi: fix H6 HDMI related issues Jernej Skrabec ` (3 preceding siblings ...) 2021-02-09 17:58 ` [PATCH v3 4/5] drm/sun4i: Fix H6 HDMI PHY configuration Jernej Skrabec @ 2021-02-09 17:59 ` Jernej Skrabec 2021-02-10 10:29 ` [PATCH v3 0/5] sunxi: fix H6 HDMI related issues Maxime Ripard 5 siblings, 0 replies; 11+ messages in thread From: Jernej Skrabec @ 2021-02-09 17:59 UTC (permalink / raw) To: mripard, wens Cc: sboyd, mturquette, linux-kernel, dri-devel, airlied, linux-sunxi, linux-clk, linux-arm-kernel It turns out that reasoning for lowering max. supported frequency is wrong. Scrambling works just fine. Several now fixed bugs prevented proper functioning, even with rates lower than 340 MHz. Issues were just more pronounced with higher frequencies. Fix that by allowing max. supported frequency in HW and fix the comment. Fixes: cd9063757a22 ("drm/sun4i: DW HDMI: Lower max. supported rate for H6") Reviewed-by: Chen-Yu Tsai <wens@csie.org> Tested-by: Andre Heider <a.heider@gmail.com> Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net> --- drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c b/drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c index 23773a5e0650..bbdfd5e26ec8 100644 --- a/drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c +++ b/drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c @@ -47,11 +47,9 @@ sun8i_dw_hdmi_mode_valid_h6(struct dw_hdmi *hdmi, void *data, { /* * Controller support maximum of 594 MHz, which correlates to - * 4K@60Hz 4:4:4 or RGB. However, for frequencies greater than - * 340 MHz scrambling has to be enabled. Because scrambling is - * not yet implemented, just limit to 340 MHz for now. + * 4K@60Hz 4:4:4 or RGB. */ - if (mode->clock > 340000) + if (mode->clock > 594000) return MODE_CLOCK_HIGH; return MODE_OK; -- 2.30.0 _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v3 0/5] sunxi: fix H6 HDMI related issues 2021-02-09 17:58 [PATCH v3 0/5] sunxi: fix H6 HDMI related issues Jernej Skrabec ` (4 preceding siblings ...) 2021-02-09 17:59 ` [PATCH v3 5/5] drm/sun4i: dw-hdmi: Fix max. frequency for H6 Jernej Skrabec @ 2021-02-10 10:29 ` Maxime Ripard 5 siblings, 0 replies; 11+ messages in thread From: Maxime Ripard @ 2021-02-10 10:29 UTC (permalink / raw) To: Jernej Skrabec Cc: sboyd, mturquette, linux-sunxi, linux-kernel, dri-devel, airlied, wens, linux-clk, linux-arm-kernel [-- Attachment #1.1: Type: text/plain, Size: 1172 bytes --] On Tue, Feb 09, 2021 at 06:58:55PM +0100, Jernej Skrabec wrote: > Over the year I got plenty of reports of troubles with H6 HDMI signal. > Sometimes monitor flickers, sometimes there was no image at all and > sometimes it didn't play well with AVR. > > It turns out there are multiple issues. Patch 1 fixes clock issue, > which didn't adjust parent rate, even if it is allowed to do so. Patch 2 > adds polarity config in tcon1. This is seemingly not needed for pre-HDMI2 > controllers, although BSP drivers set it accordingly every time. It > turns out that HDMI2 controllers often don't work with monitors if > polarity is not set correctly. Patch 3 always set clock rate for HDMI > controller. Patch 4 fixes H6 HDMI PHY settings. Patch 5 fixes comment and > clock rate limit (wrong reasoning). > > Please take a look. > > Best regards, > Jernej > > Changes from v2: > - use clk_hw_can_set_rate_parent() directly instead of checking flags > Changes from v1: > - collected Chen-Yu tags (except on replaced patch 4) > - Added some comments in patch 2 > - Replaced patch 4 (see commit log for explanation) Applied patches 2-5, thanks Maxime [-- Attachment #1.2: signature.asc --] [-- Type: application/pgp-signature, Size: 228 bytes --] [-- Attachment #2: Type: text/plain, Size: 160 bytes --] _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2021-02-12 3:06 UTC | newest] Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-02-09 17:58 [PATCH v3 0/5] sunxi: fix H6 HDMI related issues Jernej Skrabec 2021-02-09 17:58 ` [PATCH v3 1/5] clk: sunxi-ng: mp: fix parent rate change flag check Jernej Skrabec 2021-02-10 10:29 ` Maxime Ripard 2021-02-11 2:28 ` Stephen Boyd 2021-02-11 5:39 ` Jernej Škrabec 2021-02-12 3:06 ` Stephen Boyd 2021-02-09 17:58 ` [PATCH v3 2/5] drm/sun4i: tcon: set sync polarity for tcon1 channel Jernej Skrabec 2021-02-09 17:58 ` [PATCH v3 3/5] drm/sun4i: dw-hdmi: always set clock rate Jernej Skrabec 2021-02-09 17:58 ` [PATCH v3 4/5] drm/sun4i: Fix H6 HDMI PHY configuration Jernej Skrabec 2021-02-09 17:59 ` [PATCH v3 5/5] drm/sun4i: dw-hdmi: Fix max. frequency for H6 Jernej Skrabec 2021-02-10 10:29 ` [PATCH v3 0/5] sunxi: fix H6 HDMI related issues Maxime Ripard
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).