mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH 0/2] drm/bridge: lt9611uxc: require DRM_BRIDGE_ATTACH_NO_CONNECTOR
@ 2024-07-01 18:19 Dmitry Baryshkov
  2024-07-01 18:19 ` [PATCH 1/2] drm/bridge: lt9611uxc: properly attach to a next bridge Dmitry Baryshkov
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Dmitry Baryshkov @ 2024-07-01 18:19 UTC (permalink / raw)
  To: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
	Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, David Airlie, Daniel Vetter
  Cc: dri-devel, linux-kernel, Dmitry Baryshkov

There are no in-kernel DTs that use Lontium LT9611UXC bridge and still
require creation of the drm_connector by the bridge on attachment.
Drop support for !DRM_BRIDGE_ATTACH_NO_CONNECTOR by the driver.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
---
Dmitry Baryshkov (2):
      drm/bridge: lt9611uxc: properly attach to a next bridge
      drm/bridge: lt9611uxc: drop support for !DRM_BRIDGE_ATTACH_NO_CONNECTOR

 drivers/gpu/drm/bridge/lontium-lt9611uxc.c | 103 ++++-------------------------
 1 file changed, 12 insertions(+), 91 deletions(-)
---
base-commit: 74564adfd3521d9e322cfc345fdc132df80f3c79
change-id: 20240625-lt9611uxc-next-bridge-5827d9b17fc1

Best regards,
-- 
Dmitry Baryshkov <dmitry.baryshkov@linaro.org>


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 1/2] drm/bridge: lt9611uxc: properly attach to a next bridge
  2024-07-01 18:19 [PATCH 0/2] drm/bridge: lt9611uxc: require DRM_BRIDGE_ATTACH_NO_CONNECTOR Dmitry Baryshkov
@ 2024-07-01 18:19 ` Dmitry Baryshkov
  2024-07-01 18:19 ` [PATCH 2/2] drm/bridge: lt9611uxc: drop support for !DRM_BRIDGE_ATTACH_NO_CONNECTOR Dmitry Baryshkov
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 6+ messages in thread
From: Dmitry Baryshkov @ 2024-07-01 18:19 UTC (permalink / raw)
  To: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
	Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, David Airlie, Daniel Vetter
  Cc: dri-devel, linux-kernel, Dmitry Baryshkov

If there is a next bridge in the OF graph don't let it be ignored.
Attach the next bridge to the chain.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
---
 drivers/gpu/drm/bridge/lontium-lt9611uxc.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/bridge/lontium-lt9611uxc.c b/drivers/gpu/drm/bridge/lontium-lt9611uxc.c
index 4e802b54a1cb..4d379d0d24d9 100644
--- a/drivers/gpu/drm/bridge/lontium-lt9611uxc.c
+++ b/drivers/gpu/drm/bridge/lontium-lt9611uxc.c
@@ -23,6 +23,7 @@
 #include <drm/drm_bridge.h>
 #include <drm/drm_edid.h>
 #include <drm/drm_mipi_dsi.h>
+#include <drm/drm_of.h>
 #include <drm/drm_print.h>
 #include <drm/drm_probe_helper.h>
 
@@ -34,6 +35,7 @@
 struct lt9611uxc {
 	struct device *dev;
 	struct drm_bridge bridge;
+	struct drm_bridge *next_bridge;
 	struct drm_connector connector;
 
 	struct regmap *regmap;
@@ -358,6 +360,11 @@ static int lt9611uxc_bridge_attach(struct drm_bridge *bridge,
 	struct lt9611uxc *lt9611uxc = bridge_to_lt9611uxc(bridge);
 	int ret;
 
+	ret = drm_bridge_attach(bridge->encoder, lt9611uxc->next_bridge,
+				 bridge, flags | DRM_BRIDGE_ATTACH_NO_CONNECTOR);
+	if (ret)
+		return ret;
+
 	if (!(flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR)) {
 		ret = lt9611uxc_connector_init(bridge, lt9611uxc);
 		if (ret < 0)
@@ -525,7 +532,7 @@ static int lt9611uxc_parse_dt(struct device *dev,
 
 	lt9611uxc->dsi1_node = of_graph_get_remote_node(dev->of_node, 1, -1);
 
-	return 0;
+	return drm_of_find_panel_or_bridge(dev->of_node, 2, -1, NULL, &lt9611uxc->next_bridge);
 }
 
 static int lt9611uxc_gpio_init(struct lt9611uxc *lt9611uxc)

-- 
2.39.2


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 2/2] drm/bridge: lt9611uxc: drop support for !DRM_BRIDGE_ATTACH_NO_CONNECTOR
  2024-07-01 18:19 [PATCH 0/2] drm/bridge: lt9611uxc: require DRM_BRIDGE_ATTACH_NO_CONNECTOR Dmitry Baryshkov
  2024-07-01 18:19 ` [PATCH 1/2] drm/bridge: lt9611uxc: properly attach to a next bridge Dmitry Baryshkov
@ 2024-07-01 18:19 ` Dmitry Baryshkov
  2024-07-30 11:35 ` [PATCH 0/2] drm/bridge: lt9611uxc: require DRM_BRIDGE_ATTACH_NO_CONNECTOR Robert Foss
  2024-08-06 13:26 ` Robert Foss
  3 siblings, 0 replies; 6+ messages in thread
From: Dmitry Baryshkov @ 2024-07-01 18:19 UTC (permalink / raw)
  To: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
	Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, David Airlie, Daniel Vetter
  Cc: dri-devel, linux-kernel, Dmitry Baryshkov

Having no in-kernel devices that use !DRM_BRIDGE_ATTACH_NO_CONNECTOR
mode for the Lontium LT9611UXC bridge, drop the in-bridge implementation
of the drm_connector.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
---
 drivers/gpu/drm/bridge/lontium-lt9611uxc.c | 104 +++--------------------------
 1 file changed, 9 insertions(+), 95 deletions(-)

diff --git a/drivers/gpu/drm/bridge/lontium-lt9611uxc.c b/drivers/gpu/drm/bridge/lontium-lt9611uxc.c
index 4d379d0d24d9..4d1d40e1f1b4 100644
--- a/drivers/gpu/drm/bridge/lontium-lt9611uxc.c
+++ b/drivers/gpu/drm/bridge/lontium-lt9611uxc.c
@@ -36,7 +36,6 @@ struct lt9611uxc {
 	struct device *dev;
 	struct drm_bridge bridge;
 	struct drm_bridge *next_bridge;
-	struct drm_connector connector;
 
 	struct regmap *regmap;
 	/* Protects all accesses to registers by stopping the on-chip MCU */
@@ -122,11 +121,6 @@ static struct lt9611uxc *bridge_to_lt9611uxc(struct drm_bridge *bridge)
 	return container_of(bridge, struct lt9611uxc, bridge);
 }
 
-static struct lt9611uxc *connector_to_lt9611uxc(struct drm_connector *connector)
-{
-	return container_of(connector, struct lt9611uxc, connector);
-}
-
 static void lt9611uxc_lock(struct lt9611uxc *lt9611uxc)
 {
 	mutex_lock(&lt9611uxc->ocm_lock);
@@ -173,20 +167,14 @@ static void lt9611uxc_hpd_work(struct work_struct *work)
 	struct lt9611uxc *lt9611uxc = container_of(work, struct lt9611uxc, work);
 	bool connected;
 
-	if (lt9611uxc->connector.dev) {
-		if (lt9611uxc->connector.dev->mode_config.funcs)
-			drm_kms_helper_hotplug_event(lt9611uxc->connector.dev);
-	} else {
-
-		mutex_lock(&lt9611uxc->ocm_lock);
-		connected = lt9611uxc->hdmi_connected;
-		mutex_unlock(&lt9611uxc->ocm_lock);
+	mutex_lock(&lt9611uxc->ocm_lock);
+	connected = lt9611uxc->hdmi_connected;
+	mutex_unlock(&lt9611uxc->ocm_lock);
 
-		drm_bridge_hpd_notify(&lt9611uxc->bridge,
-				      connected ?
-				      connector_status_connected :
-				      connector_status_disconnected);
-	}
+	drm_bridge_hpd_notify(&lt9611uxc->bridge,
+			      connected ?
+			      connector_status_connected :
+			      connector_status_disconnected);
 }
 
 static void lt9611uxc_reset(struct lt9611uxc *lt9611uxc)
@@ -291,87 +279,13 @@ static struct mipi_dsi_device *lt9611uxc_attach_dsi(struct lt9611uxc *lt9611uxc,
 	return dsi;
 }
 
-static int lt9611uxc_connector_get_modes(struct drm_connector *connector)
-{
-	struct lt9611uxc *lt9611uxc = connector_to_lt9611uxc(connector);
-	const struct drm_edid *drm_edid;
-	int count;
-
-	drm_edid = drm_bridge_edid_read(&lt9611uxc->bridge, connector);
-	drm_edid_connector_update(connector, drm_edid);
-	count = drm_edid_connector_add_modes(connector);
-	drm_edid_free(drm_edid);
-
-	return count;
-}
-
-static enum drm_connector_status lt9611uxc_connector_detect(struct drm_connector *connector,
-							    bool force)
-{
-	struct lt9611uxc *lt9611uxc = connector_to_lt9611uxc(connector);
-
-	return lt9611uxc->bridge.funcs->detect(&lt9611uxc->bridge);
-}
-
-static enum drm_mode_status lt9611uxc_connector_mode_valid(struct drm_connector *connector,
-							   struct drm_display_mode *mode)
-{
-	struct lt9611uxc_mode *lt9611uxc_mode = lt9611uxc_find_mode(mode);
-
-	return lt9611uxc_mode ? MODE_OK : MODE_BAD;
-}
-
-static const struct drm_connector_helper_funcs lt9611uxc_bridge_connector_helper_funcs = {
-	.get_modes = lt9611uxc_connector_get_modes,
-	.mode_valid = lt9611uxc_connector_mode_valid,
-};
-
-static const struct drm_connector_funcs lt9611uxc_bridge_connector_funcs = {
-	.fill_modes = drm_helper_probe_single_connector_modes,
-	.detect = lt9611uxc_connector_detect,
-	.destroy = drm_connector_cleanup,
-	.reset = drm_atomic_helper_connector_reset,
-	.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
-	.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
-};
-
-static int lt9611uxc_connector_init(struct drm_bridge *bridge, struct lt9611uxc *lt9611uxc)
-{
-	int ret;
-
-	lt9611uxc->connector.polled = DRM_CONNECTOR_POLL_HPD;
-
-	drm_connector_helper_add(&lt9611uxc->connector,
-				 &lt9611uxc_bridge_connector_helper_funcs);
-	ret = drm_connector_init(bridge->dev, &lt9611uxc->connector,
-				 &lt9611uxc_bridge_connector_funcs,
-				 DRM_MODE_CONNECTOR_HDMIA);
-	if (ret) {
-		DRM_ERROR("Failed to initialize connector with drm\n");
-		return ret;
-	}
-
-	return drm_connector_attach_encoder(&lt9611uxc->connector, bridge->encoder);
-}
-
 static int lt9611uxc_bridge_attach(struct drm_bridge *bridge,
 				   enum drm_bridge_attach_flags flags)
 {
 	struct lt9611uxc *lt9611uxc = bridge_to_lt9611uxc(bridge);
-	int ret;
-
-	ret = drm_bridge_attach(bridge->encoder, lt9611uxc->next_bridge,
-				 bridge, flags | DRM_BRIDGE_ATTACH_NO_CONNECTOR);
-	if (ret)
-		return ret;
 
-	if (!(flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR)) {
-		ret = lt9611uxc_connector_init(bridge, lt9611uxc);
-		if (ret < 0)
-			return ret;
-	}
-
-	return 0;
+	return drm_bridge_attach(bridge->encoder, lt9611uxc->next_bridge,
+				 bridge, flags);
 }
 
 static enum drm_mode_status

-- 
2.39.2


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 0/2] drm/bridge: lt9611uxc: require DRM_BRIDGE_ATTACH_NO_CONNECTOR
  2024-07-01 18:19 [PATCH 0/2] drm/bridge: lt9611uxc: require DRM_BRIDGE_ATTACH_NO_CONNECTOR Dmitry Baryshkov
  2024-07-01 18:19 ` [PATCH 1/2] drm/bridge: lt9611uxc: properly attach to a next bridge Dmitry Baryshkov
  2024-07-01 18:19 ` [PATCH 2/2] drm/bridge: lt9611uxc: drop support for !DRM_BRIDGE_ATTACH_NO_CONNECTOR Dmitry Baryshkov
@ 2024-07-30 11:35 ` Robert Foss
  2024-08-05 16:09   ` Sam Ravnborg
  2024-08-06 13:26 ` Robert Foss
  3 siblings, 1 reply; 6+ messages in thread
From: Robert Foss @ 2024-07-30 11:35 UTC (permalink / raw)
  To: Dmitry Baryshkov
  Cc: Andrzej Hajda, Neil Armstrong, Laurent Pinchart, Jonas Karlman,
	Jernej Skrabec, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, David Airlie, Daniel Vetter, dri-devel,
	linux-kernel

On Mon, Jul 1, 2024 at 8:20 PM Dmitry Baryshkov
<dmitry.baryshkov@linaro.org> wrote:
>
> There are no in-kernel DTs that use Lontium LT9611UXC bridge and still
> require creation of the drm_connector by the bridge on attachment.
> Drop support for !DRM_BRIDGE_ATTACH_NO_CONNECTOR by the driver.
>
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
> ---
> Dmitry Baryshkov (2):
>       drm/bridge: lt9611uxc: properly attach to a next bridge
>       drm/bridge: lt9611uxc: drop support for !DRM_BRIDGE_ATTACH_NO_CONNECTOR
>
>  drivers/gpu/drm/bridge/lontium-lt9611uxc.c | 103 ++++-------------------------
>  1 file changed, 12 insertions(+), 91 deletions(-)
> ---
> base-commit: 74564adfd3521d9e322cfc345fdc132df80f3c79
> change-id: 20240625-lt9611uxc-next-bridge-5827d9b17fc1
>
> Best regards,
> --
> Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
>
>

Snoozing this for 2 weeks, since it is removing functionality.

Reviewed-by: Robert Foss <rfoss@kernel.org>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 0/2] drm/bridge: lt9611uxc: require DRM_BRIDGE_ATTACH_NO_CONNECTOR
  2024-07-30 11:35 ` [PATCH 0/2] drm/bridge: lt9611uxc: require DRM_BRIDGE_ATTACH_NO_CONNECTOR Robert Foss
@ 2024-08-05 16:09   ` Sam Ravnborg
  0 siblings, 0 replies; 6+ messages in thread
From: Sam Ravnborg @ 2024-08-05 16:09 UTC (permalink / raw)
  To: Robert Foss
  Cc: Dmitry Baryshkov, Andrzej Hajda, Neil Armstrong,
	Laurent Pinchart, Jonas Karlman, Jernej Skrabec,
	Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
	David Airlie, Daniel Vetter, dri-devel, linux-kernel

Hi Robert,
On Tue, Jul 30, 2024 at 01:35:36PM +0200, Robert Foss wrote:
> On Mon, Jul 1, 2024 at 8:20 PM Dmitry Baryshkov
> <dmitry.baryshkov@linaro.org> wrote:
> >
> > There are no in-kernel DTs that use Lontium LT9611UXC bridge and still
> > require creation of the drm_connector by the bridge on attachment.
> > Drop support for !DRM_BRIDGE_ATTACH_NO_CONNECTOR by the driver.
> >
> > Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
> > ---
> > Dmitry Baryshkov (2):
> >       drm/bridge: lt9611uxc: properly attach to a next bridge
> >       drm/bridge: lt9611uxc: drop support for !DRM_BRIDGE_ATTACH_NO_CONNECTOR
> >
> >  drivers/gpu/drm/bridge/lontium-lt9611uxc.c | 103 ++++-------------------------
> >  1 file changed, 12 insertions(+), 91 deletions(-)
> > ---
> > base-commit: 74564adfd3521d9e322cfc345fdc132df80f3c79
> > change-id: 20240625-lt9611uxc-next-bridge-5827d9b17fc1
> >
> > Best regards,
> > --
> > Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
> >
> >
> 
> Snoozing this for 2 weeks, since it is removing functionality.
Time to un-snooze?

	Sam

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 0/2] drm/bridge: lt9611uxc: require DRM_BRIDGE_ATTACH_NO_CONNECTOR
  2024-07-01 18:19 [PATCH 0/2] drm/bridge: lt9611uxc: require DRM_BRIDGE_ATTACH_NO_CONNECTOR Dmitry Baryshkov
                   ` (2 preceding siblings ...)
  2024-07-30 11:35 ` [PATCH 0/2] drm/bridge: lt9611uxc: require DRM_BRIDGE_ATTACH_NO_CONNECTOR Robert Foss
@ 2024-08-06 13:26 ` Robert Foss
  3 siblings, 0 replies; 6+ messages in thread
From: Robert Foss @ 2024-08-06 13:26 UTC (permalink / raw)
  To: Andrzej Hajda, Neil Armstrong, Laurent Pinchart, Jonas Karlman,
	Jernej Skrabec, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, David Airlie, Daniel Vetter, Dmitry Baryshkov
  Cc: dri-devel, linux-kernel

On Mon, 01 Jul 2024 21:19:51 +0300, Dmitry Baryshkov wrote:
> There are no in-kernel DTs that use Lontium LT9611UXC bridge and still
> require creation of the drm_connector by the bridge on attachment.
> Drop support for !DRM_BRIDGE_ATTACH_NO_CONNECTOR by the driver.
> 
> 

Applied, thanks!

[1/2] drm/bridge: lt9611uxc: properly attach to a next bridge
      https://gitlab.freedesktop.org/drm/misc/kernel/-/commit/7c5537cee9a8
[2/2] drm/bridge: lt9611uxc: drop support for !DRM_BRIDGE_ATTACH_NO_CONNECTOR
      https://gitlab.freedesktop.org/drm/misc/kernel/-/commit/7b6cf6c750da



Rob



^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2024-08-06 13:26 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-07-01 18:19 [PATCH 0/2] drm/bridge: lt9611uxc: require DRM_BRIDGE_ATTACH_NO_CONNECTOR Dmitry Baryshkov
2024-07-01 18:19 ` [PATCH 1/2] drm/bridge: lt9611uxc: properly attach to a next bridge Dmitry Baryshkov
2024-07-01 18:19 ` [PATCH 2/2] drm/bridge: lt9611uxc: drop support for !DRM_BRIDGE_ATTACH_NO_CONNECTOR Dmitry Baryshkov
2024-07-30 11:35 ` [PATCH 0/2] drm/bridge: lt9611uxc: require DRM_BRIDGE_ATTACH_NO_CONNECTOR Robert Foss
2024-08-05 16:09   ` Sam Ravnborg
2024-08-06 13:26 ` Robert Foss

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®