Commit 1bb533b6 authored by Marek Vasut's avatar Marek Vasut

drm/bridge: tc358767: Fix DP bridge mode detection from DT endpoints

Per toshiba,tc358767.yaml DT binding document, port@2 the output (e)DP
port is optional. In case this port is not described in DT, the bridge
driver operates in DPI-to-DP mode. Make sure the driver treats this as
a valid mode of operation instead of reporting invalid mode.

Fixes: 71f7d9c0 ("drm/bridge: tc358767: Detect bridge mode from connected endpoints in DT")
Signed-off-by: default avatarMarek Vasut <marex@denx.de>
Cc: Jonas Karlman <jonas@kwiboo.se>
Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
Cc: Lucas Stach <l.stach@pengutronix.de>
Cc: Marek Vasut <marex@denx.de>
Cc: Maxime Ripard <maxime@cerno.tech>
Cc: Neil Armstrong <narmstrong@baylibre.com>
Cc: Robert Foss <robert.foss@linaro.org>
Cc: Sam Ravnborg <sam@ravnborg.org>
Reviewed-by: default avatarLucas Stach <l.stach@pengutronix.de>
Link: https://patchwork.freedesktop.org/patch/msgid/20220429204625.241591-1-marex@denx.de
parent 05ecc678
...@@ -1964,7 +1964,9 @@ static int tc_probe_bridge_endpoint(struct tc_data *tc) ...@@ -1964,7 +1964,9 @@ static int tc_probe_bridge_endpoint(struct tc_data *tc)
struct of_endpoint endpoint; struct of_endpoint endpoint;
struct device_node *node = NULL; struct device_node *node = NULL;
const u8 mode_dpi_to_edp = BIT(1) | BIT(2); const u8 mode_dpi_to_edp = BIT(1) | BIT(2);
const u8 mode_dpi_to_dp = BIT(1);
const u8 mode_dsi_to_edp = BIT(0) | BIT(2); const u8 mode_dsi_to_edp = BIT(0) | BIT(2);
const u8 mode_dsi_to_dp = BIT(0);
const u8 mode_dsi_to_dpi = BIT(0) | BIT(1); const u8 mode_dsi_to_dpi = BIT(0) | BIT(1);
u8 mode = 0; u8 mode = 0;
...@@ -1990,11 +1992,11 @@ static int tc_probe_bridge_endpoint(struct tc_data *tc) ...@@ -1990,11 +1992,11 @@ static int tc_probe_bridge_endpoint(struct tc_data *tc)
mode |= BIT(endpoint.port); mode |= BIT(endpoint.port);
} }
if (mode == mode_dpi_to_edp) if (mode == mode_dpi_to_edp || mode == mode_dpi_to_dp)
return tc_probe_edp_bridge_endpoint(tc); return tc_probe_edp_bridge_endpoint(tc);
else if (mode == mode_dsi_to_dpi) else if (mode == mode_dsi_to_dpi)
return tc_probe_dpi_bridge_endpoint(tc); return tc_probe_dpi_bridge_endpoint(tc);
else if (mode == mode_dsi_to_edp) else if (mode == mode_dsi_to_edp || mode == mode_dsi_to_dp)
dev_warn(dev, "The mode DSI-to-(e)DP is not supported!\n"); dev_warn(dev, "The mode DSI-to-(e)DP is not supported!\n");
else else
dev_warn(dev, "Invalid mode (0x%x) is not supported!\n", mode); dev_warn(dev, "Invalid mode (0x%x) is not supported!\n", mode);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment