On Tue, 20 Aug 2019 04:17:05 +0300 Laurent Pinchart laurent.pinchart@ideasonboard.com wrote:
Use the drm_bridge_connector helper to create a connector for pipelines that use drm_bridge. This allows splitting connector operations across multiple bridges when necessary, instead of having the last bridge in the chain creating the connector and handling all connector operations internally.
Signed-off-by: Laurent Pinchart laurent.pinchart@ideasonboard.com
Changes since v1:
- Squash with patch "drm/omap: Detach from panels at remove time"
drivers/gpu/drm/omapdrm/omap_drv.c | 82 +++++++++++++++++++++++++----- 1 file changed, 70 insertions(+), 12 deletions(-)
diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c index de373fd50729..f38d95cb31ba 100644 --- a/drivers/gpu/drm/omapdrm/omap_drv.c +++ b/drivers/gpu/drm/omapdrm/omap_drv.c @@ -11,10 +11,12 @@
#include <drm/drm_atomic.h> #include <drm/drm_atomic_helper.h> +#include <drm/drm_bridge_connector.h> #include <drm/drm_drv.h> #include <drm/drm_fb_helper.h> #include <drm/drm_file.h> #include <drm/drm_ioctl.h> +#include <drm/drm_panel.h> #include <drm/drm_prime.h> #include <drm/drm_probe_helper.h> #include <drm/drm_vblank.h> @@ -290,9 +292,14 @@ static int omap_modeset_init(struct drm_device *dev)
if (pipe->output->bridge) { ret = drm_bridge_attach(pipe->encoder,
pipe->output->bridge, NULL, 0);
if (ret < 0)
pipe->output->bridge, NULL,
DRM_BRIDGE_ATTACH_NO_CONNECTOR);
I guess the only external bridge connected to an omap display controller in upstream DTs is the TFP410. I was wondering if falling back to !DRM_BRIDGE_ATTACH_NO_CONNECTOR would be acceptable in case one wants to convert a display controller driver which is known to be used in conjunction with various external bridges.
if (ret < 0) {
dev_err(priv->dev,
"unable to attach bridge %pOF\n",
pipe->output->bridge->of_node); return ret;
}}