drm/rockchip: driver: some connector maybe not implement detect

Change-Id: I58b580c36f96388a37c2a2b4a02ba6ba9e46e347
Signed-off-by: Sandy Huang <hjc@rock-chips.com>
This commit is contained in:
Sandy Huang
2019-08-22 10:45:54 +08:00
parent 9913202a13
commit 774d5ecb0e

View File

@@ -479,8 +479,10 @@ static int rockchip_drm_fill_connector_modes(struct drm_connector *connector,
} else {
old_status = connector->status;
connector->status = connector->funcs->detect(connector, true);
if (connector->funcs->detect)
connector->status = connector->funcs->detect(connector, true);
else
connector->status = connector_status_connected;
/*
* Normally either the driver's hpd code or the poll loop should
* pick up any changes and fire the hotplug event. But if
@@ -599,7 +601,12 @@ static int setup_initial_state(struct drm_device *drm_dev,
return PTR_ERR(conn_state);
funcs = connector->helper_private;
conn_state->best_encoder = funcs->best_encoder(connector);
if (funcs->best_encoder)
conn_state->best_encoder = funcs->best_encoder(connector);
else
conn_state->best_encoder = drm_atomic_helper_best_encoder(connector);
if (funcs->loader_protect)
funcs->loader_protect(connector, true);
connector->loader_protect = true;
@@ -763,10 +770,12 @@ static int update_state(struct drm_device *drm_dev,
struct drm_encoder *encoder;
connector_helper_funcs = connector->helper_private;
if (!connector_helper_funcs ||
!connector_helper_funcs->best_encoder)
if (!connector_helper_funcs)
return -ENXIO;
encoder = connector_helper_funcs->best_encoder(connector);
if (connector_helper_funcs->best_encoder)
encoder = connector_helper_funcs->best_encoder(connector);
else
encoder = drm_atomic_helper_best_encoder(connector);
if (!encoder)
return -ENXIO;
encoder_helper_funcs = encoder->helper_private;