Hi, On Thu, Aug 01, 2019 at 11:18:53AM +0000, Ville Baillie wrote:
drivers/gpu/drm/mxsfb/mxsfb_drv.c | 20 ++++++++++++++++---- drivers/gpu/drm/mxsfb/mxsfb_drv.h | 1 + drivers/gpu/drm/mxsfb/mxsfb_out.c | 14 +++++++++++--- 3 files changed, 28 insertions(+), 7 deletions(-)
diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsfb_drv.c index 6fafc90da4ec..c19a7b7aa3a6 100644 --- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c +++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c @@ -229,10 +229,22 @@ static int mxsfb_load(struct drm_device *drm, unsigned long flags) goto err_vblank; }
- ret = drm_panel_attach(mxsfb->panel, &mxsfb->connector);
- if (ret) {
dev_err(drm->dev, "Cannot connect panel\n");
goto err_vblank;
if (mxsfb->panel) {
ret = drm_panel_attach(mxsfb->panel, &mxsfb->connector);
if (ret) {
dev_err(drm->dev, "Cannot connect panel\n");
goto err_vblank;
}
} else if (mxsfb->bridge) {
ret = drm_bridge_attach(&mxsfb->pipe.encoder, mxsfb->bridge,
NULL);
if (ret) {
dev_err(drm->dev, "Cannot connect bridge\n");
goto err_vblank;
}
} else {
dev_err(drm->dev, "No panel or bridge\n");
return -EINVAL;
}
drm->mode_config.min_width = MXSFB_MIN_XRES;
diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.h b/drivers/gpu/drm/mxsfb/mxsfb_drv.h index d975300dca05..436fe4bbb47a 100644 --- a/drivers/gpu/drm/mxsfb/mxsfb_drv.h +++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.h @@ -29,6 +29,7 @@ struct mxsfb_drm_private { struct drm_simple_display_pipe pipe; struct drm_connector connector; struct drm_panel *panel;
- struct drm_bridge *bridge;
};
int mxsfb_setup_crtc(struct drm_device *dev); diff --git a/drivers/gpu/drm/mxsfb/mxsfb_out.c b/drivers/gpu/drm/mxsfb/mxsfb_out.c index 91e76f9cead6..77e03eb0fca6 100644 --- a/drivers/gpu/drm/mxsfb/mxsfb_out.c +++ b/drivers/gpu/drm/mxsfb/mxsfb_out.c @@ -78,9 +78,11 @@ int mxsfb_create_output(struct drm_device *drm) { struct mxsfb_drm_private *mxsfb = drm->dev_private; struct drm_panel *panel;
- struct drm_bridge *bridge; int ret;
- ret = drm_of_find_panel_or_bridge(drm->dev->of_node, 0, 0, &panel, NULL);
- ret = drm_of_find_panel_or_bridge(drm->dev->of_node, 0, 0, &panel,
if (ret) return ret;&bridge);
@@ -91,8 +93,14 @@ int mxsfb_create_output(struct drm_device *drm) ret = drm_connector_init(drm, &mxsfb->connector, &mxsfb_panel_connector_funcs, DRM_MODE_CONNECTOR_Unknown);
- if (!ret)
mxsfb->panel = panel;
if (!ret) {
if (panel)
mxsfb->panel = panel;
else if (bridge)
mxsfb->bridge = bridge;
else
return -EINVAL;
}
return ret;
}
2.17.1
Robert Chiras posted bridge support for mxsfb back in June:
https://patchwork.freedesktop.org/patch/314430/?series=62822&rev=1
Cheers, -- Guido
dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel