From: Marek Vasut <marex@denx.de>
To: dri-devel@lists.freedesktop.org
Cc: Marek Vasut <marex@denx.de>,
Neil Armstrong <narmstrong@baylibre.com>,
Sam Ravnborg <sam@ravnborg.org>,
Laurent Pinchart <Laurent.pinchart@ideasonboard.com>,
Maxime Ripard <maxime@cerno.tech>
Subject: [RFC][PATCH 0/7] drm/bridge: Add support for selecting DSI host HS clock from DSI bridge
Date: Sat, 19 Feb 2022 01:28:37 +0100 [thread overview]
Message-ID: <20220219002844.362157-1-marex@denx.de> (raw)
This patch series attempts to address a problem of missing support for DSI
bridge-to-bridge or panel-to-bridge clock frequency negotiation. The problem
has two variants.
First, a DSI->to->x bridge derives its own internal clock from DSI HS clock,
but the DSI HS clock cannot be set to arbitrary values. TS358767 is one such
bridge in case it operates without Xtal. In that case, the TC358767 driver
must be able to negotiate the specific suitable DSI HS clock frequency for
the chip.
Second, both DSI->to->x bridges and DSI hosts currently calculate, or rather
guess and hope they both guess the same number as their neighbor, the DSI HS
clock frequency from form of PLL=(width * height * bpp / lanes / 2). This is
dangerous, since the PLL capabilities on both ends of the DSI bus might differ
and the DSI host could easily end up generating wildly different clock than
what the DSI bridge/panel expects to receive.
This series attempts to address these negotiation problems by extending the
existing .atomic_get_input_bus_fmts callback into .atomic_get_input_bus_cfgs
callback in struct drm_bridge_funcs {}. The extended version returns not only
a list of a list of bus formats supported by a bridge, but the entire list of
struct drm_bus_cfg, which currently contains format and bus flags, but can be
extended with other members, like desired clock frequency, as required.
This series demonstrates such extension by adding the support for negotiating
the DSI clock and by implementing such support in DW DSI Host and TC358767 DSI
bridge.
Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
Cc: Maxime Ripard <maxime@cerno.tech>
Cc: Neil Armstrong <narmstrong@baylibre.com>
Cc: Sam Ravnborg <sam@ravnborg.org>
TC358767 part depends on:
https://patchwork.freedesktop.org/series/100372
Marek Vasut (7):
drm/bridge: Pass struct drm_bus_cfg to select_bus_fmt_recursive()
drm/bridge: Add new atomic_get_input_bus_cfgs callback
drm/bridge: Extend struct drm_bus_cfg with clock field
drm/bridge: dw-mipi-dsi: Move PLL setup into atomic_enable
drm/bridge: dw-mipi-dsi: Pass bridge state into
dw_mipi_dsi_get_lane_mbps()
drm/bridge: dw-mipi-dsi: Prefer DSI bus clock settings from
bridge_state
drm/bridge: tc358767: Add support for PLL clock derivation from DSI HS
clock
drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c | 22 +++--
drivers/gpu/drm/bridge/tc358767.c | 97 +++++++++++++++----
drivers/gpu/drm/drm_bridge.c | 78 +++++++++++----
.../gpu/drm/rockchip/dw-mipi-dsi-rockchip.c | 1 +
drivers/gpu/drm/stm/dw_mipi_dsi-stm.c | 17 ++--
include/drm/bridge/dw_mipi_dsi.h | 2 +
include/drm/drm_atomic.h | 5 +
include/drm/drm_bridge.h | 42 ++++++++
8 files changed, 214 insertions(+), 50 deletions(-)
--
2.34.1
next reply other threads:[~2022-02-19 0:29 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-19 0:28 Marek Vasut [this message]
2022-02-19 0:28 ` [PATCH 1/7] drm/bridge: Pass struct drm_bus_cfg to select_bus_fmt_recursive() Marek Vasut
2022-02-19 0:28 ` [PATCH 2/7] drm/bridge: Add new atomic_get_input_bus_cfgs callback Marek Vasut
2022-02-19 0:28 ` [PATCH 3/7] drm/bridge: Extend struct drm_bus_cfg with clock field Marek Vasut
2022-02-24 15:19 ` Maxime Ripard
2022-02-24 20:07 ` Marek Vasut
2022-02-25 10:51 ` Maxime Ripard
2022-02-19 0:28 ` [PATCH 4/7] drm/bridge: dw-mipi-dsi: Move PLL setup into atomic_enable Marek Vasut
2022-02-19 0:28 ` [PATCH 5/7] drm/bridge: dw-mipi-dsi: Pass bridge state into dw_mipi_dsi_get_lane_mbps() Marek Vasut
2022-02-19 0:28 ` [PATCH 6/7] drm/bridge: dw-mipi-dsi: Prefer DSI bus clock settings from bridge_state Marek Vasut
2022-02-19 0:28 ` [PATCH 7/7] drm/bridge: tc358767: Add support for PLL clock derivation from DSI HS clock Marek Vasut
2022-02-24 15:40 ` [RFC][PATCH 0/7] drm/bridge: Add support for selecting DSI host HS clock from DSI bridge Maxime Ripard
2022-02-24 20:24 ` Marek Vasut
2022-02-25 8:40 ` Maxime Ripard
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=20220219002844.362157-1-marex@denx.de \
--to=marex@denx.de \
--cc=Laurent.pinchart@ideasonboard.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=maxime@cerno.tech \
--cc=narmstrong@baylibre.com \
--cc=sam@ravnborg.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