From: Vasily Khoruzhick <anarsoul-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> To: David Airlie <airlied-cv59FeDIM0c@public.gmane.org>, Daniel Vetter <daniel-/w4YWyX8dFk@public.gmane.org>, Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>, Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org>, Thierry Reding <thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>, Maxime Ripard <maxime.ripard-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>, Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>, Archit Taneja <architt-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>, Andrzej Hajda <a.hajda-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>, Laurent Pinchart <Laurent.pinchart-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org>, Icenowy Zheng <icenowy-h8G6r0blFSE@public.gmane.org>, Sean Paul <seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org Cc: Vasily Khoruzhick <anarsoul-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> Subject: [PATCH v3 06/11] drm/sun4i: rgb: Add DT property to disable strict clock rate check Date: Thu, 14 Feb 2019 21:09:52 -0800 [thread overview] Message-ID: <20190215050957.20755-7-anarsoul@gmail.com> (raw) In-Reply-To: <20190215050957.20755-1-anarsoul-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> Clock rate check that was added in commit bb43d40d7c83 ("drm/sun4i: rgb: Validate the clock rate") prevents some panel and bridges from working with sun4i driver. Unfortunately, dotclock frequency for some modes are not achievable on sunxi hardware, and there's a slight deviation in rate returned by clk_round_rate(), so they fail this check. Experiments show that panels and bridges work fine with this slight deviation, e.g. Pinebook that uses ANX6345 bridge with 768p eDP panel requests 73 MHz, gets 72.296MHz instead (0.96% difference) and works just fine. This patch adds DT property to disable strict clock rate check Signed-off-by: Vasily Khoruzhick <anarsoul-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> --- .../devicetree/bindings/display/sunxi/sun4i-drm.txt | 2 ++ drivers/gpu/drm/sun4i/sun4i_rgb.c | 5 +++++ drivers/gpu/drm/sun4i/sun4i_tcon.c | 3 +++ drivers/gpu/drm/sun4i/sun4i_tcon.h | 1 + 4 files changed, 11 insertions(+) diff --git a/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt b/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt index f426bdb42f18..18c8b053a28d 100644 --- a/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt +++ b/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt @@ -63,6 +63,8 @@ Required properties: Documentation/devicetree/bindings/media/video-interfaces.txt. The first port should be the input endpoint. The second should be the output, usually to an HDMI connector. + - no-strict-clock-check: don't reject timings if exact dot clock can't be + reached. DWC HDMI TX Encoder ------------------- diff --git a/drivers/gpu/drm/sun4i/sun4i_rgb.c b/drivers/gpu/drm/sun4i/sun4i_rgb.c index f4a22689eb54..b392d4b1ebd3 100644 --- a/drivers/gpu/drm/sun4i/sun4i_rgb.c +++ b/drivers/gpu/drm/sun4i/sun4i_rgb.c @@ -94,7 +94,12 @@ static enum drm_mode_status sun4i_rgb_mode_valid(struct drm_encoder *crtc, tcon->dclk_min_div = 6; tcon->dclk_max_div = 127; + + if (tcon->no_strict_clock_check) + return MODE_OK; + rounded_rate = clk_round_rate(tcon->dclk, rate); + if (rounded_rate < rate) return MODE_CLOCK_LOW; diff --git a/drivers/gpu/drm/sun4i/sun4i_tcon.c b/drivers/gpu/drm/sun4i/sun4i_tcon.c index cf45d0f940f9..f5f7f479332b 100644 --- a/drivers/gpu/drm/sun4i/sun4i_tcon.c +++ b/drivers/gpu/drm/sun4i/sun4i_tcon.c @@ -1108,6 +1108,9 @@ static int sun4i_tcon_bind(struct device *dev, struct device *master, tcon->id = engine->id; tcon->quirks = of_device_get_match_data(dev); + tcon->no_strict_clock_check = of_property_read_bool(dev->of_node, + "no-strict-clock-check"); + tcon->lcd_rst = devm_reset_control_get(dev, "lcd"); if (IS_ERR(tcon->lcd_rst)) { dev_err(dev, "Couldn't get our reset line\n"); diff --git a/drivers/gpu/drm/sun4i/sun4i_tcon.h b/drivers/gpu/drm/sun4i/sun4i_tcon.h index b5214d71610f..ab510b80004a 100644 --- a/drivers/gpu/drm/sun4i/sun4i_tcon.h +++ b/drivers/gpu/drm/sun4i/sun4i_tcon.h @@ -258,6 +258,7 @@ struct sun4i_tcon { struct reset_control *lvds_rst; struct drm_panel *panel; + bool no_strict_clock_check; /* Platform adjustments */ const struct sun4i_tcon_quirks *quirks; -- 2.20.1
WARNING: multiple messages have this Message-ID (diff)
From: Vasily Khoruzhick <anarsoul@gmail.com> To: David Airlie <airlied@linux.ie>, Daniel Vetter <daniel@ffwll.ch>, Rob Herring <robh+dt@kernel.org>, Mark Rutland <mark.rutland@arm.com>, Thierry Reding <thierry.reding@gmail.com>, Maxime Ripard <maxime.ripard@bootlin.com>, Chen-Yu Tsai <wens@csie.org>, Archit Taneja <architt@codeaurora.org>, Andrzej Hajda <a.hajda@samsung.com>, Laurent Pinchart <Laurent.pinchart@ideasonboard.com>, Icenowy Zheng <icenowy@aosc.io>, Sean Paul <seanpaul@chromium.org>, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@googlegroups.com Subject: [PATCH v3 06/11] drm/sun4i: rgb: Add DT property to disable strict clock rate check Date: Thu, 14 Feb 2019 21:09:52 -0800 [thread overview] Message-ID: <20190215050957.20755-7-anarsoul@gmail.com> (raw) In-Reply-To: <20190215050957.20755-1-anarsoul@gmail.com> Clock rate check that was added in commit bb43d40d7c83 ("drm/sun4i: rgb: Validate the clock rate") prevents some panel and bridges from working with sun4i driver. Unfortunately, dotclock frequency for some modes are not achievable on sunxi hardware, and there's a slight deviation in rate returned by clk_round_rate(), so they fail this check. Experiments show that panels and bridges work fine with this slight deviation, e.g. Pinebook that uses ANX6345 bridge with 768p eDP panel requests 73 MHz, gets 72.296MHz instead (0.96% difference) and works just fine. This patch adds DT property to disable strict clock rate check Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com> --- .../devicetree/bindings/display/sunxi/sun4i-drm.txt | 2 ++ drivers/gpu/drm/sun4i/sun4i_rgb.c | 5 +++++ drivers/gpu/drm/sun4i/sun4i_tcon.c | 3 +++ drivers/gpu/drm/sun4i/sun4i_tcon.h | 1 + 4 files changed, 11 insertions(+) diff --git a/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt b/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt index f426bdb42f18..18c8b053a28d 100644 --- a/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt +++ b/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt @@ -63,6 +63,8 @@ Required properties: Documentation/devicetree/bindings/media/video-interfaces.txt. The first port should be the input endpoint. The second should be the output, usually to an HDMI connector. + - no-strict-clock-check: don't reject timings if exact dot clock can't be + reached. DWC HDMI TX Encoder ------------------- diff --git a/drivers/gpu/drm/sun4i/sun4i_rgb.c b/drivers/gpu/drm/sun4i/sun4i_rgb.c index f4a22689eb54..b392d4b1ebd3 100644 --- a/drivers/gpu/drm/sun4i/sun4i_rgb.c +++ b/drivers/gpu/drm/sun4i/sun4i_rgb.c @@ -94,7 +94,12 @@ static enum drm_mode_status sun4i_rgb_mode_valid(struct drm_encoder *crtc, tcon->dclk_min_div = 6; tcon->dclk_max_div = 127; + + if (tcon->no_strict_clock_check) + return MODE_OK; + rounded_rate = clk_round_rate(tcon->dclk, rate); + if (rounded_rate < rate) return MODE_CLOCK_LOW; diff --git a/drivers/gpu/drm/sun4i/sun4i_tcon.c b/drivers/gpu/drm/sun4i/sun4i_tcon.c index cf45d0f940f9..f5f7f479332b 100644 --- a/drivers/gpu/drm/sun4i/sun4i_tcon.c +++ b/drivers/gpu/drm/sun4i/sun4i_tcon.c @@ -1108,6 +1108,9 @@ static int sun4i_tcon_bind(struct device *dev, struct device *master, tcon->id = engine->id; tcon->quirks = of_device_get_match_data(dev); + tcon->no_strict_clock_check = of_property_read_bool(dev->of_node, + "no-strict-clock-check"); + tcon->lcd_rst = devm_reset_control_get(dev, "lcd"); if (IS_ERR(tcon->lcd_rst)) { dev_err(dev, "Couldn't get our reset line\n"); diff --git a/drivers/gpu/drm/sun4i/sun4i_tcon.h b/drivers/gpu/drm/sun4i/sun4i_tcon.h index b5214d71610f..ab510b80004a 100644 --- a/drivers/gpu/drm/sun4i/sun4i_tcon.h +++ b/drivers/gpu/drm/sun4i/sun4i_tcon.h @@ -258,6 +258,7 @@ struct sun4i_tcon { struct reset_control *lvds_rst; struct drm_panel *panel; + bool no_strict_clock_check; /* Platform adjustments */ const struct sun4i_tcon_quirks *quirks; -- 2.20.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2019-02-15 5:09 UTC|newest] Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-02-15 5:09 [PATCH v3 00/11] Analogix ANX6345 RGB-(e)DP bridge support Vasily Khoruzhick 2019-02-15 5:09 ` Vasily Khoruzhick [not found] ` <20190215050957.20755-1-anarsoul-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 2019-02-15 5:09 ` [PATCH v3 01/11] drm/bridge: move ANA78xx driver to analogix subdirectory Vasily Khoruzhick 2019-02-15 5:09 ` Vasily Khoruzhick 2019-02-15 5:09 ` [PATCH v3 02/11] drm/bridge: split some definitions of ANX78xx to dedicated headers Vasily Khoruzhick 2019-02-15 5:09 ` Vasily Khoruzhick 2019-02-15 5:09 ` [PATCH v3 03/11] drm/bridge: extract some Analogix I2C DP common code Vasily Khoruzhick 2019-02-15 5:09 ` Vasily Khoruzhick 2019-02-15 5:09 ` [PATCH v3 04/11] dt-bindings: Add ANX6345 DP/eDP transmitter binding Vasily Khoruzhick 2019-02-15 5:09 ` Vasily Khoruzhick [not found] ` <20190215050957.20755-5-anarsoul-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 2019-02-18 18:13 ` Rob Herring 2019-02-18 18:13 ` Rob Herring 2019-02-15 5:09 ` [PATCH v3 05/11] drm/bridge: Add Analogix anx6345 support Vasily Khoruzhick 2019-02-15 5:09 ` Vasily Khoruzhick [not found] ` <20190215050957.20755-6-anarsoul-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 2019-02-15 8:23 ` Priit Laes 2019-02-15 8:23 ` [linux-sunxi] " Priit Laes [not found] ` <20190215082331.7wq6arctd4hdjcnh-q/aMd4JkU83YtjvyW6yDsg@public.gmane.org> 2019-02-15 19:21 ` Vasily Khoruzhick 2019-02-15 19:21 ` [linux-sunxi] " Vasily Khoruzhick 2019-02-15 9:13 ` Andrzej Hajda 2019-02-15 9:13 ` Andrzej Hajda [not found] ` <7d71654e-7169-2682-5655-0a9a9ea91c6d-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> 2019-02-15 19:36 ` Vasily Khoruzhick 2019-02-15 19:36 ` Vasily Khoruzhick 2019-02-26 7:12 ` Andrzej Hajda 2019-02-26 7:12 ` Andrzej Hajda 2019-02-15 5:09 ` Vasily Khoruzhick [this message] 2019-02-15 5:09 ` [PATCH v3 06/11] drm/sun4i: rgb: Add DT property to disable strict clock rate check Vasily Khoruzhick [not found] ` <20190215050957.20755-7-anarsoul-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 2019-02-18 18:26 ` Rob Herring 2019-02-18 18:26 ` Rob Herring 2019-02-18 19:33 ` Vasily Khoruzhick 2019-02-18 19:33 ` Vasily Khoruzhick [not found] ` <CA+E=qVfDfDvVmKQDeh2e0SA=tm6VpBMpu9MPKUqxFPObxYFXDg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2019-02-19 8:56 ` Maxime Ripard 2019-02-19 8:56 ` Maxime Ripard 2019-02-19 15:44 ` Vasily Khoruzhick 2019-02-19 15:44 ` Vasily Khoruzhick [not found] ` <CA+E=qVfV8ds-zb0oG1-g8c-ReCSnZjfUjvAHbZf1zBf8H-xUcw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2019-02-20 10:33 ` Maxime Ripard 2019-02-20 10:33 ` Maxime Ripard 2019-02-21 6:39 ` Vasily Khoruzhick 2019-02-21 6:39 ` Vasily Khoruzhick 2019-02-21 6:41 ` Vasily Khoruzhick 2019-02-21 6:41 ` Vasily Khoruzhick 2019-02-15 5:09 ` [PATCH v3 07/11] arm64: allwinner: a64: add pinmux for RGB666 LCD Vasily Khoruzhick 2019-02-15 5:09 ` Vasily Khoruzhick 2019-02-15 5:09 ` [PATCH v3 08/11] drm/panel: simple: Add BOE HB140WX1-501 panel support Vasily Khoruzhick 2019-02-15 5:09 ` Vasily Khoruzhick 2019-02-16 20:43 ` Sam Ravnborg 2019-02-16 20:43 ` Sam Ravnborg [not found] ` <20190216204327.GB22791-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org> 2019-02-16 20:48 ` Vasily Khoruzhick 2019-02-16 20:48 ` Vasily Khoruzhick 2019-02-16 21:12 ` Sam Ravnborg 2019-02-16 21:12 ` Sam Ravnborg 2019-02-15 5:09 ` [PATCH v3 09/11] dt-bindings: Add Guangdong Neweast Optoelectronics CO. LTD vendor prefix Vasily Khoruzhick 2019-02-15 5:09 ` Vasily Khoruzhick [not found] ` <20190215050957.20755-10-anarsoul-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 2019-02-18 18:27 ` Rob Herring 2019-02-18 18:27 ` Rob Herring 2019-02-15 5:09 ` [PATCH v3 10/11] drm/panel: simple: Add NewEast Optoelectronics CO., LTD WJFH116008A panel support Vasily Khoruzhick 2019-02-15 5:09 ` Vasily Khoruzhick [not found] ` <20190215050957.20755-11-anarsoul-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 2019-02-18 18:33 ` Rob Herring 2019-02-18 18:33 ` Rob Herring 2019-02-18 19:06 ` Vasily Khoruzhick 2019-02-18 19:06 ` Vasily Khoruzhick [not found] ` <CA+E=qVcdDQJvssZgu23gM_gKvz2G5GAWcmjFBokE_V=WGJ4h6A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2019-02-19 14:54 ` Rob Herring 2019-02-19 14:54 ` Rob Herring [not found] ` <CAL_Jsq+pyAd_kMMz+yKjqY=asAi1X1XguM58VjfVhPwD-xi-2w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2019-02-19 21:35 ` Vasily Khoruzhick 2019-02-19 21:35 ` Vasily Khoruzhick [not found] ` <CA+E=qVcmLnr9sL7UjG2PSC0Ji5PhW=xOLQHGvRUG3yMMZW1hnw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2019-02-22 18:37 ` Rob Herring 2019-02-22 18:37 ` Rob Herring 2019-03-07 6:12 ` Vasily Khoruzhick 2019-03-07 6:12 ` Vasily Khoruzhick 2019-02-15 5:09 ` [PATCH v3 11/11] arm64: allwinner: a64: enable LCD-related hardware for Pinebook Vasily Khoruzhick 2019-02-15 5:09 ` Vasily Khoruzhick
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20190215050957.20755-7-anarsoul@gmail.com \ --to=anarsoul-re5jqeeqqe8avxtiumwx3w@public.gmane.org \ --cc=Laurent.pinchart-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org \ --cc=a.hajda-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org \ --cc=airlied-cv59FeDIM0c@public.gmane.org \ --cc=architt-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org \ --cc=daniel-/w4YWyX8dFk@public.gmane.org \ --cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \ --cc=dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \ --cc=icenowy-h8G6r0blFSE@public.gmane.org \ --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \ --cc=linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org \ --cc=mark.rutland-5wv7dgnIgG8@public.gmane.org \ --cc=maxime.ripard-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org \ --cc=robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \ --cc=seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org \ --cc=thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \ --cc=wens-jdAy2FN1RRM@public.gmane.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.