From: Dominique MARTINET <dominique.martinet@atmark-techno.com>
To: Lucas Stach <l.stach@pengutronix.de>, Adam Ford <aford173@gmail.com>
Cc: linux-arm-kernel@lists.infradead.org, marex@denx.de,
Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
Andrzej Hajda <andrzej.hajda@intel.com>,
Neil Armstrong <neil.armstrong@linaro.org>,
Robert Foss <rfoss@kernel.org>, Jonas Karlman <jonas@kwiboo.se>,
Jernej Skrabec <jernej.skrabec@gmail.com>,
Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
Maxime Ripard <mripard@kernel.org>,
Thomas Zimmermann <tzimmermann@suse.de>,
David Airlie <airlied@gmail.com>, Daniel Vetter <daniel@ffwll.ch>,
Shawn Guo <shawnguo@kernel.org>,
Sascha Hauer <s.hauer@pengutronix.de>,
Pengutronix Kernel Team <kernel@pengutronix.de>,
Fabio Estevam <festevam@gmail.com>,
NXP Linux Team <linux-imx@nxp.com>, Vinod Koul <vkoul@kernel.org>,
Kishon Vijay Abraham I <kishon@kernel.org>,
Liu Ying <victor.liu@nxp.com>,
dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
linux-phy@lists.infradead.org,
Makoto Sato <makoto.sato@atmark-techno.com>
Subject: drm/bridge/imx8mp-hdmi-tx: Allow inexact pixel clock frequencies (Was: [PATCH V8 10/12] drm/bridge: imx: add bridge wrapper driver for i.MX8MP DWC HDMI)
Date: Mon, 17 Jun 2024 15:16:44 +0900 [thread overview]
Message-ID: <Zm_UzO4Jmm7Aykcm@atmark-techno.com> (raw)
In-Reply-To: <20240203165307.7806-11-aford173@gmail.com>
Adam Ford wrote on Sat, Feb 03, 2024 at 10:52:50AM -0600:
> From: Lucas Stach <l.stach@pengutronix.de>
>
> Add a simple wrapper driver for the DWC HDMI bridge driver that
> implements the few bits that are necessary to abstract the i.MX8MP
> SoC integration.
Hi Lucas, Adam,
(trimmed ccs a bit)
First, thank you for the effort of upstreaming all of this!! It's really
appreciated, and with display working I'll really be wanting to upstream
our DTS as well as soon as I have time (which is going to be a while,
but better late than never ?)
Until then, it's been a few months but I've got a question on this bit:
> diff --git a/drivers/gpu/drm/bridge/imx/imx8mp-hdmi-tx.c b/drivers/gpu/drm/bridge/imx/imx8mp-hdmi-tx.c
> new file mode 100644
> index 000000000000..89fc432ac611
> --- /dev/null
> +++ b/drivers/gpu/drm/bridge/imx/imx8mp-hdmi-tx.c
> +static enum drm_mode_status
> +imx8mp_hdmi_mode_valid(struct dw_hdmi *dw_hdmi, void *data,
> + const struct drm_display_info *info,
> + const struct drm_display_mode *mode)
> +{
> + struct imx8mp_hdmi *hdmi = (struct imx8mp_hdmi *)data;
> +
> + if (mode->clock < 13500)
> + return MODE_CLOCK_LOW;
> +
> + if (mode->clock > 297000)
> + return MODE_CLOCK_HIGH;
> +
> + if (clk_round_rate(hdmi->pixclk, mode->clock * 1000) !=
> + mode->clock * 1000)
> + return MODE_CLOCK_RANGE;
Do you know why such a check is here?
When plugging in a screen with no frequency identically supported in its
EDID this check causes the screen to stay black, and we've been telling
customers to override the EDID but it's a huge pain.
Commit 6ad082bee902 ("phy: freescale: add Samsung HDMI PHY") already
"fixed" the samsung hdmi phy driver to return the next frequency if an
exact match hasn't been found (NXP tree's match frequencies exactly, but
this gets the first clock with pixclk <= rate), so if this check is also
relaxed our displays would work out of the box.
I also don't see any other bridge doing this kind of check.
drivers/gpu/drm/bridge/imx/imx93-mipi-dsi.c has a similar check with a
0.5% leeway, and all the other drivers don't check anything.
If you want to add some level of safety, I think we could make this work
with a 5% margin easily... Printing a warning in dmesg could work if
you're worried about artifacts, but litteraly anything is better than a
black screen with no error message in my opinion.
In practice the screen I'm looking at has an EDID which only supports
51.2MHz and the closest frequency supported by the Samsung HDMI phy is
50.4MHz, so that's a ~1.5% difference and it'd be great if it could work
out of the box.
For reference, the output of edid-decode is as follow:
---
edid-decode /sys/devices/platform/display-subsystem/drm/car
d1/card1-HDMI-A-1/edid
edid-decode (hex):
00 ff ff ff ff ff ff 00 3a 49 03 00 01 00 00 00
20 1e 01 03 80 10 09 00 0a 00 00 00 00 00 00 00
00 00 00 00 00 00 01 01 01 01 01 01 01 01 01 01
01 01 01 01 01 01 00 14 00 40 41 58 23 20 a0 20
c8 00 9a 56 00 00 00 18 00 00 00 10 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 10 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 9a
----------------
Block 0, Base EDID:
EDID Structure Version & Revision: 1.3
Vendor & Product Identification:
Manufacturer: NRI
Model: 3
Serial Number: 1
Made in: week 32 of 2020
Basic Display Parameters & Features:
Digital display
Maximum image size: 16 cm x 9 cm
Gamma: 1.00
RGB color display
First detailed timing is the preferred timing
Color Characteristics:
Red : 0.0000, 0.0000
Green: 0.0000, 0.0000
Blue : 0.0000, 0.0000
White: 0.0000, 0.0000
Established Timings I & II: none
Standard Timings: none
Detailed Timing Descriptors:
DTD 1: 1024x600 59.993 Hz 128:75 38.095 kHz 51.200 MHz (154 mm x 86 m
m)
Hfront 160 Hsync 32 Hback 128 Hpol N
Vfront 12 Vsync 8 Vback 15 Vpol N
Dummy Descriptor:
Dummy Descriptor:
Dummy Descriptor:
Checksum: 0x9a
---
Thanks,
--
Dominique Martinet
next prev parent reply other threads:[~2024-06-17 6:23 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-03 16:52 [PATCH V8 00/12] soc: imx8mp: Add support for HDMI Adam Ford
2024-02-03 16:52 ` [PATCH V8 01/12] dt-bindings: phy: add binding for the i.MX8MP HDMI PHY Adam Ford
2024-02-06 17:34 ` Luca Ceresoli
2024-02-03 16:52 ` [PATCH V8 02/12] phy: freescale: add Samsung " Adam Ford
2024-02-03 17:12 ` Christophe JAILLET
2024-02-04 9:23 ` Dmitry Baryshkov
2024-02-05 8:17 ` Marco Felsch
2024-02-06 3:39 ` Adam Ford
2024-02-06 17:35 ` Luca Ceresoli
2024-02-03 16:52 ` [PATCH V8 03/12] dt-bindings: soc: imx: add missing clock and power-domains to imx8mp-hdmi-blk-ctrl Adam Ford
2024-02-05 19:19 ` Rob Herring
2024-02-03 16:52 ` [PATCH V8 04/12] pmdomain: imx8mp-blk-ctrl: imx8mp_blk: Add fdcc clock to hdmimix domain Adam Ford
2024-02-03 16:52 ` [PATCH V8 05/12] arm64: dts: imx8mp: add HDMI power-domains Adam Ford
2024-02-05 7:26 ` Alexander Stein
2024-02-06 2:25 ` Adam Ford
2024-02-03 16:52 ` [PATCH V8 06/12] arm64: dts: imx8mp: add HDMI irqsteer Adam Ford
2024-02-04 12:00 ` Francesco Dolcini
2024-02-04 14:54 ` Adam Ford
2024-02-05 7:26 ` Alexander Stein
2024-02-03 16:52 ` [PATCH V8 07/12] dt-bindings: display: imx: add binding for i.MX8MP HDMI PVI Adam Ford
2024-02-06 17:35 ` Luca Ceresoli
2024-02-03 16:52 ` [PATCH V8 08/12] drm/bridge: imx: add driver for HDMI TX Parallel Video Interface Adam Ford
2024-02-06 17:06 ` Nathan Chancellor
2024-02-06 18:50 ` Adam Ford
2024-02-06 18:52 ` Nathan Chancellor
2024-02-03 16:52 ` [PATCH V8 09/12] dt-bindings: display: imx: add binding for i.MX8MP HDMI TX Adam Ford
2024-02-05 11:17 ` Neil Armstrong
2024-02-05 19:23 ` Rob Herring
2024-02-06 17:35 ` Luca Ceresoli
2024-02-16 9:05 ` Alexander Stein
2024-02-16 9:37 ` Laurent Pinchart
2024-02-16 11:31 ` Adam Ford
2024-02-16 11:42 ` Alexander Stein
2024-02-03 16:52 ` [PATCH V8 10/12] drm/bridge: imx: add bridge wrapper driver for i.MX8MP DWC HDMI Adam Ford
2024-02-06 17:35 ` Luca Ceresoli
2024-06-17 6:16 ` Dominique MARTINET [this message]
2024-06-17 13:28 ` drm/bridge/imx8mp-hdmi-tx: Allow inexact pixel clock frequencies (Was: [PATCH V8 10/12] drm/bridge: imx: add bridge wrapper driver for i.MX8MP DWC HDMI) Adam Ford
2024-06-17 23:45 ` Dominique MARTINET
2024-06-18 0:04 ` Dominique MARTINET
2024-06-17 16:32 ` Lucas Stach
2024-08-15 8:19 ` Frieder Schrempf
2024-08-21 2:49 ` Adam Ford
2024-08-21 3:57 ` Dominique MARTINET
2024-08-21 12:45 ` Adam Ford
2024-08-22 1:59 ` Adam Ford
2024-08-27 0:25 ` Adam Ford
2024-08-27 7:00 ` Frieder Schrempf
2024-08-27 7:26 ` Dominique MARTINET
2024-02-03 16:52 ` [PATCH V8 11/12] arm64: dts: imx8mp: add HDMI display pipeline Adam Ford
2024-02-05 7:29 ` Alexander Stein
2024-02-03 16:52 ` [PATCH V8 12/12] arm64: defconfig: Enable DRM_IMX8MP_DW_HDMI_BRIDGE as module Adam Ford
2024-02-05 11:19 ` (subset) [PATCH V8 00/12] soc: imx8mp: Add support for HDMI Neil Armstrong
2024-02-06 8:15 ` Neil Armstrong
2024-02-15 15:05 ` Joao Paulo Goncalves
2024-03-25 21:48 ` Tommaso Merciai
2024-03-25 22:03 ` Laurent Pinchart
2024-03-26 7:46 ` Tommaso Merciai
2024-03-26 11:43 ` Adam Ford
2024-03-26 12:00 ` Tommaso Merciai
2024-10-25 8:05 ` imx8mp: HDMI display blank/black problems mailinglist1
2024-10-30 9:01 ` Frieder Schrempf
2024-10-30 17:28 ` Adam Ford
2024-10-30 20:20 ` Saravana Kannan
2025-03-19 7:52 ` Frieder Schrempf
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=Zm_UzO4Jmm7Aykcm@atmark-techno.com \
--to=dominique.martinet@atmark-techno.com \
--cc=aford173@gmail.com \
--cc=airlied@gmail.com \
--cc=andrzej.hajda@intel.com \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=festevam@gmail.com \
--cc=jernej.skrabec@gmail.com \
--cc=jonas@kwiboo.se \
--cc=kernel@pengutronix.de \
--cc=kishon@kernel.org \
--cc=l.stach@pengutronix.de \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-imx@nxp.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-phy@lists.infradead.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=makoto.sato@atmark-techno.com \
--cc=marex@denx.de \
--cc=mripard@kernel.org \
--cc=neil.armstrong@linaro.org \
--cc=rfoss@kernel.org \
--cc=s.hauer@pengutronix.de \
--cc=shawnguo@kernel.org \
--cc=tzimmermann@suse.de \
--cc=victor.liu@nxp.com \
--cc=vkoul@kernel.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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).