All of lore.kernel.org
 help / color / mirror / Atom feed
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Boris Brezillon <boris.brezillon@collabora.com>
Cc: dri-devel@lists.freedesktop.org,
	Lucas Stach <l.stach@pengutronix.de>,
	Chris Healy <cphealy@gmail.com>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	Nikita Yushchenko <nikita.yoush@cogentembedded.com>,
	kernel@collabora.com, Daniel Vetter <daniel@ffwll.ch>,
	Inki Dae <inki.dae@samsung.com>,
	Joonyoung Shim <jy0922.shim@samsung.com>,
	Seung-Woo Kim <sw0312.kim@samsung.com>,
	Kyungmin Park <kyungmin.park@samsung.com>,
	Thierry Reding <thierry.reding@gmail.com>,
	Sam Ravnborg <sam@ravnborg.org>,
	Philipp Zabel <p.zabel@pengutronix.de>,
	Rob Clark <robdclark@gmail.com>,
	Andrzej Hajda <a.hajda@samsung.com>,
	Neil Armstrong <narmstrong@baylibre.com>,
	Jonas Karlman <jonas@kwiboo.se>,
	Jernej Skrabec <jernej.skrabec@siol.net>,
	Rob Herring <robh+dt@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	devicetree@vger.kernel.org
Subject: Re: [PATCH v3 05/21] drm/bridge: Introduce drm_bridge_chain_get_next_bridge()
Date: Sun, 24 Nov 2019 16:04:30 +0200	[thread overview]
Message-ID: <20191124140430.GJ4727@pendragon.ideasonboard.com> (raw)
In-Reply-To: <20191124115616.1491ae6d@collabora.com>

Hi Boris,

On Sun, Nov 24, 2019 at 11:56:16AM +0100, Boris Brezillon wrote:
> On Sun, 24 Nov 2019 12:33:35 +0200 Laurent Pinchart wrote:
> > On Wed, Oct 23, 2019 at 05:44:56PM +0200, Boris Brezillon wrote:
> > > And use it in drivers accessing the bridge->next field directly.
> > > This is part of our attempt to make the bridge chain a double-linked list
> > > based on the generic list helpers.
> > > 
> > > Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
> > > ---
> > > Changes in v3:
> > > * Inline drm_bridge_chain_get_next_bridge() (Suggested by Laurent)
> > > 
> > > Changes in v2:
> > > * Kill the last/first helpers (they're not really needed)
> > > * Drop the !bridge || !bridge->encoder test
> > > ---
> > >  drivers/gpu/drm/exynos/exynos_drm_dsi.c |  3 ++-
> > >  drivers/gpu/drm/mediatek/mtk_hdmi.c     |  6 ++++--
> > >  drivers/gpu/drm/omapdrm/omap_drv.c      |  4 ++--
> > >  drivers/gpu/drm/omapdrm/omap_encoder.c  |  3 ++-
> > >  drivers/gpu/drm/vc4/vc4_dsi.c           |  4 +++-
> > >  include/drm/drm_bridge.h                | 13 +++++++++++++
> > >  6 files changed, 26 insertions(+), 7 deletions(-)
> > > 
> > > diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c
> > > index 3915f50b005e..005c67894b78 100644
> > > --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c
> > > +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c
> > > @@ -1593,9 +1593,10 @@ static int exynos_dsi_host_detach(struct mipi_dsi_host *host,
> > >  				  struct mipi_dsi_device *device)
> > >  {
> > >  	struct exynos_dsi *dsi = host_to_dsi(host);
> > > -	struct drm_bridge *out_bridge = dsi->bridge.next;
> > >  	struct drm_device *drm = dsi->encoder.dev;
> > > +	struct drm_bridge *out_bridge;
> > >  
> > > +	out_bridge = drm_bridge_chain_get_next_bridge(&dsi->bridge);  
> > 
> > You may want to store this in the exynos_dsi structure in the previous
> > patch where you rework this driver.
> 
> Do we really need to store it there, since we already have a simple way
> to retrieve the next bridge in the chain?

We don't have to indeed. I thought it would be simpler, but that's
probably subjective.

> > >  	if (dsi->panel) {
> > >  		mutex_lock(&drm->mode_config.mutex);
> > >  		exynos_dsi_disable(&dsi->bridge);
> > > diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c b/drivers/gpu/drm/mediatek/mtk_hdmi.c
> > > index ea68b5adccbe..cfaa5aab8876 100644
> > > --- a/drivers/gpu/drm/mediatek/mtk_hdmi.c
> > > +++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c
> > > @@ -1238,16 +1238,18 @@ static int mtk_hdmi_conn_mode_valid(struct drm_connector *conn,
> > >  				    struct drm_display_mode *mode)
> > >  {
> > >  	struct mtk_hdmi *hdmi = hdmi_ctx_from_conn(conn);
> > > +	struct drm_bridge *next_bridge;
> > >  
> > >  	dev_dbg(hdmi->dev, "xres=%d, yres=%d, refresh=%d, intl=%d clock=%d\n",
> > >  		mode->hdisplay, mode->vdisplay, mode->vrefresh,
> > >  		!!(mode->flags & DRM_MODE_FLAG_INTERLACE), mode->clock * 1000);
> > >  
> > > -	if (hdmi->bridge.next) {
> > > +	next_bridge = drm_bridge_chain_get_next_bridge(&hdmi->bridge);
> > > +	if (next_bridge) {
> > >  		struct drm_display_mode adjusted_mode;
> > >  
> > >  		drm_mode_copy(&adjusted_mode, mode);
> > > -		if (!drm_bridge_chain_mode_fixup(hdmi->bridge.next, mode,
> > > +		if (!drm_bridge_chain_mode_fixup(next_bridge, mode,
> > >  						 &adjusted_mode))
> > >  			return MODE_BAD;
> > >  	}
> > > diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
> > > index b3e22c890c51..865164fe28dc 100644
> > > --- a/drivers/gpu/drm/omapdrm/omap_drv.c
> > > +++ b/drivers/gpu/drm/omapdrm/omap_drv.c
> > > @@ -217,8 +217,8 @@ static int omap_display_id(struct omap_dss_device *output)
> > >  	} else if (output->bridge) {
> > >  		struct drm_bridge *bridge = output->bridge;
> > >  
> > > -		while (bridge->next)
> > > -			bridge = bridge->next;
> > > +		while (drm_bridge_chain_get_next_bridge(bridge))
> > > +			bridge = drm_bridge_chain_get_next_bridge(bridge);
> > >  
> > >  		node = bridge->of_node;
> > >  	} else if (output->panel) {
> > > diff --git a/drivers/gpu/drm/omapdrm/omap_encoder.c b/drivers/gpu/drm/omapdrm/omap_encoder.c
> > > index 24bbe9f2a32e..8ca54081997e 100644
> > > --- a/drivers/gpu/drm/omapdrm/omap_encoder.c
> > > +++ b/drivers/gpu/drm/omapdrm/omap_encoder.c
> > > @@ -126,7 +126,8 @@ static void omap_encoder_mode_set(struct drm_encoder *encoder,
> > >  	for (dssdev = output; dssdev; dssdev = dssdev->next)
> > >  		omap_encoder_update_videomode_flags(&vm, dssdev->bus_flags);
> > >  
> > > -	for (bridge = output->bridge; bridge; bridge = bridge->next) {
> > > +	for (bridge = output->bridge; bridge;
> > > +	     bridge = drm_bridge_chain_get_next_bridge(bridge)) {  
> > 
> > A for_each_bridge() macro would be nice (in a separate patch). It could
> > be used in omap_drv.c above too.
> 
> It's coming later in the series (patch 8).
> 
> > >  		if (!bridge->timings)
> > >  			continue;
> > >  
> > > diff --git a/drivers/gpu/drm/vc4/vc4_dsi.c b/drivers/gpu/drm/vc4/vc4_dsi.c
> > > index 49f8a313e759..49c47185aff0 100644
> > > --- a/drivers/gpu/drm/vc4/vc4_dsi.c
> > > +++ b/drivers/gpu/drm/vc4/vc4_dsi.c
> > > @@ -1644,8 +1644,10 @@ static void vc4_dsi_unbind(struct device *dev, struct device *master,
> > >  	struct drm_device *drm = dev_get_drvdata(master);
> > >  	struct vc4_dev *vc4 = to_vc4_dev(drm);
> > >  	struct vc4_dsi *dsi = dev_get_drvdata(dev);
> > > +	struct drm_bridge *bridge;
> > >  
> > > -	if (dsi->bridge.next)
> > > +	bridge = drm_bridge_chain_get_next_bridge(&dsi->bridge);
> > > +	if (bridge)
> > >  		pm_runtime_disable(dev);
> > >  
> > >  	vc4_dsi_encoder_destroy(dsi->encoder);
> > > diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h
> > > index 726435baf4ad..8aeba83fcf31 100644
> > > --- a/include/drm/drm_bridge.h
> > > +++ b/include/drm/drm_bridge.h
> > > @@ -409,6 +409,19 @@ struct drm_bridge *of_drm_find_bridge(struct device_node *np);
> > >  int drm_bridge_attach(struct drm_encoder *encoder, struct drm_bridge *bridge,
> > >  		      struct drm_bridge *previous);
> > >  
> > > +/**
> > > + * drm_bridge_chain_get_next_bridge() - Get the next bridge in the chain
> > > + * @bridge: bridge object
> > > + *
> > > + * RETURNS:
> > > + * the next bridge in the chain, or NULL if @bridge is the last.  
> > 
> > Maybe "the next bridge in the chain after @bridge, ..." ?
> 
> Agreed.
> 
> > > + */
> > > +static inline struct drm_bridge *
> > > +drm_bridge_chain_get_next_bridge(struct drm_bridge *bridge)  
> > 
> > Technically speaking this doesn't operate on a chain but on a bridge, so
> > I'd name is drm_bridge_get_next_bridge(). I will not insist to the way
> > of nacking the series for this, so with the rename, but also without,
> 
> You're absolutely right, I'll rename the function as suggested.
> 
> > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > 
> > > +{
> > > +	return bridge->next;
> > > +}
> > > +
> > >  bool drm_bridge_chain_mode_fixup(struct drm_bridge *bridge,
> > >  				 const struct drm_display_mode *mode,
> > >  				 struct drm_display_mode *adjusted_mode);  

-- 
Regards,

Laurent Pinchart

WARNING: multiple messages have this Message-ID (diff)
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Boris Brezillon <boris.brezillon@collabora.com>
Cc: Mark Rutland <mark.rutland@arm.com>,
	Neil Armstrong <narmstrong@baylibre.com>,
	dri-devel@lists.freedesktop.org,
	Thierry Reding <thierry.reding@gmail.com>,
	kernel@collabora.com, Sam Ravnborg <sam@ravnborg.org>,
	Nikita Yushchenko <nikita.yoush@cogentembedded.com>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	Kyungmin Park <kyungmin.park@samsung.com>,
	Chris Healy <cphealy@gmail.com>,
	devicetree@vger.kernel.org, Jonas Karlman <jonas@kwiboo.se>,
	Rob Herring <robh+dt@kernel.org>,
	Jernej Skrabec <jernej.skrabec@siol.net>,
	Seung-Woo Kim <sw0312.kim@samsung.com>
Subject: Re: [PATCH v3 05/21] drm/bridge: Introduce drm_bridge_chain_get_next_bridge()
Date: Sun, 24 Nov 2019 16:04:30 +0200	[thread overview]
Message-ID: <20191124140430.GJ4727@pendragon.ideasonboard.com> (raw)
In-Reply-To: <20191124115616.1491ae6d@collabora.com>

Hi Boris,

On Sun, Nov 24, 2019 at 11:56:16AM +0100, Boris Brezillon wrote:
> On Sun, 24 Nov 2019 12:33:35 +0200 Laurent Pinchart wrote:
> > On Wed, Oct 23, 2019 at 05:44:56PM +0200, Boris Brezillon wrote:
> > > And use it in drivers accessing the bridge->next field directly.
> > > This is part of our attempt to make the bridge chain a double-linked list
> > > based on the generic list helpers.
> > > 
> > > Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
> > > ---
> > > Changes in v3:
> > > * Inline drm_bridge_chain_get_next_bridge() (Suggested by Laurent)
> > > 
> > > Changes in v2:
> > > * Kill the last/first helpers (they're not really needed)
> > > * Drop the !bridge || !bridge->encoder test
> > > ---
> > >  drivers/gpu/drm/exynos/exynos_drm_dsi.c |  3 ++-
> > >  drivers/gpu/drm/mediatek/mtk_hdmi.c     |  6 ++++--
> > >  drivers/gpu/drm/omapdrm/omap_drv.c      |  4 ++--
> > >  drivers/gpu/drm/omapdrm/omap_encoder.c  |  3 ++-
> > >  drivers/gpu/drm/vc4/vc4_dsi.c           |  4 +++-
> > >  include/drm/drm_bridge.h                | 13 +++++++++++++
> > >  6 files changed, 26 insertions(+), 7 deletions(-)
> > > 
> > > diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c
> > > index 3915f50b005e..005c67894b78 100644
> > > --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c
> > > +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c
> > > @@ -1593,9 +1593,10 @@ static int exynos_dsi_host_detach(struct mipi_dsi_host *host,
> > >  				  struct mipi_dsi_device *device)
> > >  {
> > >  	struct exynos_dsi *dsi = host_to_dsi(host);
> > > -	struct drm_bridge *out_bridge = dsi->bridge.next;
> > >  	struct drm_device *drm = dsi->encoder.dev;
> > > +	struct drm_bridge *out_bridge;
> > >  
> > > +	out_bridge = drm_bridge_chain_get_next_bridge(&dsi->bridge);  
> > 
> > You may want to store this in the exynos_dsi structure in the previous
> > patch where you rework this driver.
> 
> Do we really need to store it there, since we already have a simple way
> to retrieve the next bridge in the chain?

We don't have to indeed. I thought it would be simpler, but that's
probably subjective.

> > >  	if (dsi->panel) {
> > >  		mutex_lock(&drm->mode_config.mutex);
> > >  		exynos_dsi_disable(&dsi->bridge);
> > > diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c b/drivers/gpu/drm/mediatek/mtk_hdmi.c
> > > index ea68b5adccbe..cfaa5aab8876 100644
> > > --- a/drivers/gpu/drm/mediatek/mtk_hdmi.c
> > > +++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c
> > > @@ -1238,16 +1238,18 @@ static int mtk_hdmi_conn_mode_valid(struct drm_connector *conn,
> > >  				    struct drm_display_mode *mode)
> > >  {
> > >  	struct mtk_hdmi *hdmi = hdmi_ctx_from_conn(conn);
> > > +	struct drm_bridge *next_bridge;
> > >  
> > >  	dev_dbg(hdmi->dev, "xres=%d, yres=%d, refresh=%d, intl=%d clock=%d\n",
> > >  		mode->hdisplay, mode->vdisplay, mode->vrefresh,
> > >  		!!(mode->flags & DRM_MODE_FLAG_INTERLACE), mode->clock * 1000);
> > >  
> > > -	if (hdmi->bridge.next) {
> > > +	next_bridge = drm_bridge_chain_get_next_bridge(&hdmi->bridge);
> > > +	if (next_bridge) {
> > >  		struct drm_display_mode adjusted_mode;
> > >  
> > >  		drm_mode_copy(&adjusted_mode, mode);
> > > -		if (!drm_bridge_chain_mode_fixup(hdmi->bridge.next, mode,
> > > +		if (!drm_bridge_chain_mode_fixup(next_bridge, mode,
> > >  						 &adjusted_mode))
> > >  			return MODE_BAD;
> > >  	}
> > > diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
> > > index b3e22c890c51..865164fe28dc 100644
> > > --- a/drivers/gpu/drm/omapdrm/omap_drv.c
> > > +++ b/drivers/gpu/drm/omapdrm/omap_drv.c
> > > @@ -217,8 +217,8 @@ static int omap_display_id(struct omap_dss_device *output)
> > >  	} else if (output->bridge) {
> > >  		struct drm_bridge *bridge = output->bridge;
> > >  
> > > -		while (bridge->next)
> > > -			bridge = bridge->next;
> > > +		while (drm_bridge_chain_get_next_bridge(bridge))
> > > +			bridge = drm_bridge_chain_get_next_bridge(bridge);
> > >  
> > >  		node = bridge->of_node;
> > >  	} else if (output->panel) {
> > > diff --git a/drivers/gpu/drm/omapdrm/omap_encoder.c b/drivers/gpu/drm/omapdrm/omap_encoder.c
> > > index 24bbe9f2a32e..8ca54081997e 100644
> > > --- a/drivers/gpu/drm/omapdrm/omap_encoder.c
> > > +++ b/drivers/gpu/drm/omapdrm/omap_encoder.c
> > > @@ -126,7 +126,8 @@ static void omap_encoder_mode_set(struct drm_encoder *encoder,
> > >  	for (dssdev = output; dssdev; dssdev = dssdev->next)
> > >  		omap_encoder_update_videomode_flags(&vm, dssdev->bus_flags);
> > >  
> > > -	for (bridge = output->bridge; bridge; bridge = bridge->next) {
> > > +	for (bridge = output->bridge; bridge;
> > > +	     bridge = drm_bridge_chain_get_next_bridge(bridge)) {  
> > 
> > A for_each_bridge() macro would be nice (in a separate patch). It could
> > be used in omap_drv.c above too.
> 
> It's coming later in the series (patch 8).
> 
> > >  		if (!bridge->timings)
> > >  			continue;
> > >  
> > > diff --git a/drivers/gpu/drm/vc4/vc4_dsi.c b/drivers/gpu/drm/vc4/vc4_dsi.c
> > > index 49f8a313e759..49c47185aff0 100644
> > > --- a/drivers/gpu/drm/vc4/vc4_dsi.c
> > > +++ b/drivers/gpu/drm/vc4/vc4_dsi.c
> > > @@ -1644,8 +1644,10 @@ static void vc4_dsi_unbind(struct device *dev, struct device *master,
> > >  	struct drm_device *drm = dev_get_drvdata(master);
> > >  	struct vc4_dev *vc4 = to_vc4_dev(drm);
> > >  	struct vc4_dsi *dsi = dev_get_drvdata(dev);
> > > +	struct drm_bridge *bridge;
> > >  
> > > -	if (dsi->bridge.next)
> > > +	bridge = drm_bridge_chain_get_next_bridge(&dsi->bridge);
> > > +	if (bridge)
> > >  		pm_runtime_disable(dev);
> > >  
> > >  	vc4_dsi_encoder_destroy(dsi->encoder);
> > > diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h
> > > index 726435baf4ad..8aeba83fcf31 100644
> > > --- a/include/drm/drm_bridge.h
> > > +++ b/include/drm/drm_bridge.h
> > > @@ -409,6 +409,19 @@ struct drm_bridge *of_drm_find_bridge(struct device_node *np);
> > >  int drm_bridge_attach(struct drm_encoder *encoder, struct drm_bridge *bridge,
> > >  		      struct drm_bridge *previous);
> > >  
> > > +/**
> > > + * drm_bridge_chain_get_next_bridge() - Get the next bridge in the chain
> > > + * @bridge: bridge object
> > > + *
> > > + * RETURNS:
> > > + * the next bridge in the chain, or NULL if @bridge is the last.  
> > 
> > Maybe "the next bridge in the chain after @bridge, ..." ?
> 
> Agreed.
> 
> > > + */
> > > +static inline struct drm_bridge *
> > > +drm_bridge_chain_get_next_bridge(struct drm_bridge *bridge)  
> > 
> > Technically speaking this doesn't operate on a chain but on a bridge, so
> > I'd name is drm_bridge_get_next_bridge(). I will not insist to the way
> > of nacking the series for this, so with the rename, but also without,
> 
> You're absolutely right, I'll rename the function as suggested.
> 
> > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > 
> > > +{
> > > +	return bridge->next;
> > > +}
> > > +
> > >  bool drm_bridge_chain_mode_fixup(struct drm_bridge *bridge,
> > >  				 const struct drm_display_mode *mode,
> > >  				 struct drm_display_mode *adjusted_mode);  

-- 
Regards,

Laurent Pinchart
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

  reply	other threads:[~2019-11-24 14:04 UTC|newest]

Thread overview: 156+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-23 15:44 [PATCH v3 00/21] drm: Add support for bus-format negotiation Boris Brezillon
2019-10-23 15:44 ` Boris Brezillon
2019-10-23 15:44 ` [PATCH v3 01/21] drm/vc4: Declare the DSI encoder as a bridge element Boris Brezillon
2019-10-23 15:44   ` Boris Brezillon
2019-11-24 10:01   ` Laurent Pinchart
2019-11-24 10:01     ` Laurent Pinchart
2019-11-24 10:47     ` Boris Brezillon
2019-11-24 10:47       ` Boris Brezillon
2019-10-23 15:44 ` [PATCH v3 02/21] drm/exynos: Don't reset bridge->next Boris Brezillon
2019-10-23 15:44   ` Boris Brezillon
2019-10-28 12:19   ` Inki Dae
2019-10-28 12:19     ` Inki Dae
2019-10-23 15:44 ` [PATCH v3 03/21] drm/exynos: Declare the DSI encoder as a bridge element Boris Brezillon
2019-10-23 15:44   ` Boris Brezillon
2019-11-24 10:24   ` Laurent Pinchart
2019-11-24 10:24     ` Laurent Pinchart
2019-11-24 13:17     ` Boris Brezillon
2019-11-24 13:17       ` Boris Brezillon
2019-11-24 13:28       ` Boris Brezillon
2019-11-24 13:28         ` Boris Brezillon
2019-11-24 14:02       ` Laurent Pinchart
2019-11-24 14:02         ` Laurent Pinchart
2019-10-23 15:44 ` [PATCH v3 04/21] drm/bridge: Rename bridge helpers targeting a bridge chain Boris Brezillon
2019-10-23 15:44   ` Boris Brezillon
2019-10-25 13:26   ` Neil Armstrong
2019-10-25 13:26     ` Neil Armstrong
2019-11-24 10:28   ` Laurent Pinchart
2019-11-24 10:28     ` Laurent Pinchart
2019-10-23 15:44 ` [PATCH v3 05/21] drm/bridge: Introduce drm_bridge_chain_get_next_bridge() Boris Brezillon
2019-10-23 15:44   ` Boris Brezillon
2019-10-25 13:27   ` Neil Armstrong
2019-10-25 13:27     ` Neil Armstrong
2019-11-24 10:33   ` Laurent Pinchart
2019-11-24 10:33     ` Laurent Pinchart
2019-11-24 10:56     ` Boris Brezillon
2019-11-24 10:56       ` Boris Brezillon
2019-11-24 14:04       ` Laurent Pinchart [this message]
2019-11-24 14:04         ` Laurent Pinchart
2019-10-23 15:44 ` [PATCH v3 06/21] drm: Stop accessing encoder->bridge directly Boris Brezillon
2019-10-23 15:44   ` Boris Brezillon
2019-10-25 13:28   ` Neil Armstrong
2019-10-25 13:28     ` Neil Armstrong
2019-11-24 10:39   ` Laurent Pinchart
2019-11-24 10:39     ` Laurent Pinchart
2019-11-24 13:40     ` Boris Brezillon
2019-11-24 13:40       ` Boris Brezillon
2019-10-23 15:44 ` [PATCH v3 07/21] drm/bridge: Make the bridge chain a double-linked list Boris Brezillon
2019-10-23 15:44   ` Boris Brezillon
2019-10-25 13:29   ` Neil Armstrong
2019-10-25 13:29     ` Neil Armstrong
2019-11-05 16:02     ` Neil Armstrong
2019-11-05 16:02       ` Neil Armstrong
2019-11-24  7:48       ` Boris Brezillon
2019-11-24  7:48         ` Boris Brezillon
2019-11-24 13:57   ` Laurent Pinchart
2019-11-24 13:57     ` Laurent Pinchart
2019-10-23 15:44 ` [PATCH v3 08/21] drm/bridge: Add the drm_for_each_bridge_in_chain() helper Boris Brezillon
2019-10-23 15:44   ` Boris Brezillon
2019-10-25 13:30   ` Neil Armstrong
2019-10-25 13:30     ` Neil Armstrong
2019-11-24 14:07   ` Laurent Pinchart
2019-11-24 14:07     ` Laurent Pinchart
2019-10-23 15:45 ` [PATCH v3 09/21] drm/bridge: Add a drm_bridge_state object Boris Brezillon
2019-10-23 15:45   ` Boris Brezillon
2019-10-25 14:35   ` Neil Armstrong
2019-10-25 14:35     ` Neil Armstrong
2019-11-05 16:05   ` Neil Armstrong
2019-11-05 16:05     ` Neil Armstrong
2019-11-24  7:50     ` Boris Brezillon
2019-11-24  7:50       ` Boris Brezillon
2019-12-02 16:42   ` Laurent Pinchart
2019-12-02 16:42     ` Laurent Pinchart
2019-10-23 15:45 ` [PATCH v3 10/21] drm/bridge: Clarify the atomic enable/disable hooks semantics Boris Brezillon
2019-10-23 15:45   ` Boris Brezillon
2019-10-25 14:33   ` Neil Armstrong
2019-10-25 14:33     ` Neil Armstrong
2019-12-02 16:50   ` Laurent Pinchart
2019-12-02 16:50     ` Laurent Pinchart
2019-10-23 15:45 ` [PATCH v3 11/21] drm/bridge: Patch atomic hooks to take a drm_bridge_state Boris Brezillon
2019-10-23 15:45   ` Boris Brezillon
2019-12-02 16:57   ` Laurent Pinchart
2019-12-02 16:57     ` Laurent Pinchart
2019-10-23 15:45 ` [PATCH v3 12/21] drm/bridge: Add an ->atomic_check() hook Boris Brezillon
2019-10-23 15:45   ` Boris Brezillon
2019-10-25 14:35   ` Neil Armstrong
2019-10-25 14:35     ` Neil Armstrong
2019-12-02 17:03   ` Laurent Pinchart
2019-12-02 17:03     ` Laurent Pinchart
2019-12-03 10:11     ` Boris Brezillon
2019-12-03 10:11       ` Boris Brezillon
2019-12-03 10:15       ` Laurent Pinchart
2019-12-03 10:15         ` Laurent Pinchart
2019-10-23 15:45 ` [PATCH v3 13/21] drm/bridge: Add the drm_bridge_chain_get_prev_bridge() helper Boris Brezillon
2019-10-23 15:45   ` Boris Brezillon
2019-10-25 14:34   ` Neil Armstrong
2019-10-25 14:34     ` Neil Armstrong
2019-12-02 17:05   ` Laurent Pinchart
2019-12-02 17:05     ` Laurent Pinchart
2019-10-23 15:45 ` [PATCH v3 14/21] drm/bridge: Add the necessary bits to support bus format negotiation Boris Brezillon
2019-10-23 15:45   ` Boris Brezillon
2019-12-03 10:03   ` Laurent Pinchart
2019-12-03 10:03     ` Laurent Pinchart
2019-10-23 15:45 ` [PATCH v3 15/21] drm/imx: pd: Use bus format/flags provided by the bridge when available Boris Brezillon
2019-10-23 15:45   ` Boris Brezillon
2019-12-03 13:50   ` Philipp Zabel
2019-12-03 13:50     ` Philipp Zabel
2019-10-23 15:45 ` [PATCH v3 16/21] drm/bridge: lvds-encoder: Implement basic bus format negotiation Boris Brezillon
2019-10-23 15:45   ` Boris Brezillon
2019-12-03 10:14   ` Laurent Pinchart
2019-12-03 10:14     ` Laurent Pinchart
2019-10-23 15:45 ` [PATCH v3 17/21] dt-bindings: display: bridge: lvds-transmitter: Add new props Boris Brezillon
2019-10-23 15:45   ` Boris Brezillon
2019-10-25 19:57   ` Rob Herring
2019-10-25 19:57     ` Rob Herring
2019-10-31 13:04     ` Boris Brezillon
2019-10-31 13:04       ` Boris Brezillon
2019-12-02 17:11   ` Laurent Pinchart
2019-12-02 17:11     ` Laurent Pinchart
2019-12-03 12:38     ` Boris Brezillon
2019-12-03 12:38       ` Boris Brezillon
2019-12-03 13:22       ` Laurent Pinchart
2019-12-03 13:22         ` Laurent Pinchart
2019-10-23 15:45 ` [PATCH v3 18/21] drm/bridge: panel: Propage bus format/flags Boris Brezillon
2019-10-23 15:45   ` Boris Brezillon
2019-12-03 10:17   ` Laurent Pinchart
2019-12-03 10:17     ` Laurent Pinchart
2020-01-22  9:27     ` Boris Brezillon
2020-01-22  9:27       ` Boris Brezillon
2019-10-23 15:45 ` [PATCH v3 19/21] drm/panel: simple: Add support for Toshiba LTA089AC29000 panel Boris Brezillon
2019-10-23 15:45   ` Boris Brezillon
2019-12-02 17:17   ` Laurent Pinchart
2019-12-02 17:17     ` Laurent Pinchart
2019-12-03 12:42     ` Boris Brezillon
2019-12-03 12:42       ` Boris Brezillon
2019-12-03 13:28       ` Laurent Pinchart
2019-12-03 13:28         ` Laurent Pinchart
2019-10-23 15:45 ` [PATCH v3 20/21] dt-bindings: display: panel: Add the LTA089AC29000 variant Boris Brezillon
2019-10-23 15:45   ` Boris Brezillon
2019-10-25 19:58   ` Rob Herring
2019-10-25 19:58     ` Rob Herring
2019-10-25 19:58     ` Rob Herring
2019-12-02 17:19   ` Laurent Pinchart
2019-12-02 17:19     ` Laurent Pinchart
2019-10-23 15:45 ` [PATCH v3 21/21] ARM: dts: imx: imx51-zii-rdu1: Fix the display pipeline definition Boris Brezillon
2019-10-23 15:45   ` Boris Brezillon
2019-10-24 11:27 ` [PATCH v3 00/21] drm: Add support for bus-format negotiation Neil Armstrong
2019-10-24 11:27   ` Neil Armstrong
2019-10-24 13:22   ` Boris Brezillon
2019-10-24 13:22     ` Boris Brezillon
2019-11-24  0:46 ` Ezequiel Garcia
2019-11-24  0:46   ` Ezequiel Garcia
2019-11-24  0:46   ` Ezequiel Garcia
2019-11-24  7:32   ` Boris Brezillon
2019-11-24  7:32     ` Boris Brezillon
2019-11-24  9:34     ` Ezequiel Garcia
2019-11-24  9:34       ` Ezequiel Garcia

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=20191124140430.GJ4727@pendragon.ideasonboard.com \
    --to=laurent.pinchart@ideasonboard.com \
    --cc=a.hajda@samsung.com \
    --cc=andrew.smirnov@gmail.com \
    --cc=boris.brezillon@collabora.com \
    --cc=cphealy@gmail.com \
    --cc=daniel@ffwll.ch \
    --cc=devicetree@vger.kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=inki.dae@samsung.com \
    --cc=jernej.skrabec@siol.net \
    --cc=jonas@kwiboo.se \
    --cc=jy0922.shim@samsung.com \
    --cc=kernel@collabora.com \
    --cc=kyungmin.park@samsung.com \
    --cc=l.stach@pengutronix.de \
    --cc=mark.rutland@arm.com \
    --cc=narmstrong@baylibre.com \
    --cc=nikita.yoush@cogentembedded.com \
    --cc=p.zabel@pengutronix.de \
    --cc=robdclark@gmail.com \
    --cc=robh+dt@kernel.org \
    --cc=sam@ravnborg.org \
    --cc=sw0312.kim@samsung.com \
    --cc=thierry.reding@gmail.com \
    /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 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.