drm/bridge: analogix_dp: Add optional LCD panel self test
Many TCON devices include an embedded LCD panel self-test mode. This mode is designed to help system integrators identify the root cause of abnormal display operation, without the use of complicated debug tools. Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com> Change-Id: I19770c7488d43e2486c5fde5cc0a5b345e5be0eb
This commit is contained in:
@@ -29,6 +29,8 @@ Optional properties for dp-controller:
|
||||
-hpd-gpios:
|
||||
Hotplug detect GPIO.
|
||||
Indicates which GPIO should be used for hotplug detection
|
||||
-panel-self-test:
|
||||
Enable optional LCD Panel Self Test.
|
||||
-port@[X]: SoC specific port nodes with endpoint definitions as defined
|
||||
in Documentation/devicetree/bindings/media/video-interfaces.txt,
|
||||
please refer to the SoC specific binding document:
|
||||
|
||||
@@ -959,11 +959,9 @@ static int analogix_dp_commit(struct analogix_dp_device *dp)
|
||||
struct video_info *video = &dp->video_info;
|
||||
int ret;
|
||||
|
||||
/* Keep the panel disabled while we configure video */
|
||||
if (dp->plat_data->panel) {
|
||||
if (drm_panel_disable(dp->plat_data->panel))
|
||||
DRM_ERROR("failed to disable the panel\n");
|
||||
}
|
||||
if (device_property_read_bool(dp->dev, "panel-self-test"))
|
||||
return drm_dp_dpcd_writeb(&dp->aux, DP_EDP_CONFIGURATION_SET,
|
||||
DP_PANEL_SELF_TEST_ENABLE);
|
||||
|
||||
ret = analogix_dp_train_link(dp);
|
||||
if (ret) {
|
||||
@@ -989,15 +987,6 @@ static int analogix_dp_commit(struct analogix_dp_device *dp)
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Safe to enable the panel now */
|
||||
if (dp->plat_data->panel) {
|
||||
ret = drm_panel_enable(dp->plat_data->panel);
|
||||
if (ret) {
|
||||
DRM_ERROR("failed to enable the panel\n");
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
/* Check whether panel supports fast training */
|
||||
ret = analogix_dp_fast_link_train_detection(dp);
|
||||
if (ret)
|
||||
@@ -1301,11 +1290,14 @@ static int analogix_dp_set_bridge(struct analogix_dp_device *dp)
|
||||
}
|
||||
|
||||
ret = analogix_dp_commit(dp);
|
||||
if (ret) {
|
||||
if (ret < 0) {
|
||||
DRM_ERROR("dp commit error, ret = %d\n", ret);
|
||||
goto out_dp_init;
|
||||
}
|
||||
|
||||
if (dp->plat_data->panel)
|
||||
drm_panel_enable(dp->plat_data->panel);
|
||||
|
||||
if (dp->plat_data->power_on_end)
|
||||
dp->plat_data->power_on_end(dp->plat_data);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user