mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-26 19:00:25 +00:00
drm/exynos/dsi: register connector if it is created after drm bind
DSI device can be attached after DRM device is registered. In such
case newly created connector must be registered by exynos_dsi.
The patch fixes exynos_drm on rinato and trats boards.
Fixes: 6afb7721e2
("drm/exynos: move connector creation to attach callback")
Reported-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
This commit is contained in:
parent
6ca469e22a
commit
deee3284cb
1 changed files with 8 additions and 2 deletions
|
@ -14,6 +14,7 @@
|
||||||
|
|
||||||
#include <drm/drmP.h>
|
#include <drm/drmP.h>
|
||||||
#include <drm/drm_crtc_helper.h>
|
#include <drm/drm_crtc_helper.h>
|
||||||
|
#include <drm/drm_fb_helper.h>
|
||||||
#include <drm/drm_mipi_dsi.h>
|
#include <drm/drm_mipi_dsi.h>
|
||||||
#include <drm/drm_panel.h>
|
#include <drm/drm_panel.h>
|
||||||
#include <drm/drm_atomic_helper.h>
|
#include <drm/drm_atomic_helper.h>
|
||||||
|
@ -1474,12 +1475,12 @@ static int exynos_dsi_create_connector(struct drm_encoder *encoder)
|
||||||
{
|
{
|
||||||
struct exynos_dsi *dsi = encoder_to_dsi(encoder);
|
struct exynos_dsi *dsi = encoder_to_dsi(encoder);
|
||||||
struct drm_connector *connector = &dsi->connector;
|
struct drm_connector *connector = &dsi->connector;
|
||||||
|
struct drm_device *drm = encoder->dev;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
connector->polled = DRM_CONNECTOR_POLL_HPD;
|
connector->polled = DRM_CONNECTOR_POLL_HPD;
|
||||||
|
|
||||||
ret = drm_connector_init(encoder->dev, connector,
|
ret = drm_connector_init(drm, connector, &exynos_dsi_connector_funcs,
|
||||||
&exynos_dsi_connector_funcs,
|
|
||||||
DRM_MODE_CONNECTOR_DSI);
|
DRM_MODE_CONNECTOR_DSI);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
DRM_ERROR("Failed to initialize connector with drm\n");
|
DRM_ERROR("Failed to initialize connector with drm\n");
|
||||||
|
@ -1489,7 +1490,12 @@ static int exynos_dsi_create_connector(struct drm_encoder *encoder)
|
||||||
connector->status = connector_status_disconnected;
|
connector->status = connector_status_disconnected;
|
||||||
drm_connector_helper_add(connector, &exynos_dsi_connector_helper_funcs);
|
drm_connector_helper_add(connector, &exynos_dsi_connector_helper_funcs);
|
||||||
drm_connector_attach_encoder(connector, encoder);
|
drm_connector_attach_encoder(connector, encoder);
|
||||||
|
if (!drm->registered)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
connector->funcs->reset(connector);
|
||||||
|
drm_fb_helper_add_one_connector(drm->fb_helper, connector);
|
||||||
|
drm_connector_register(connector);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue