diff --git a/hardware/rockchip/hwcomposer/drmhwc2/drm/drmdevice.cpp b/hardware/rockchip/hwcomposer/drmhwc2/drm/drmdevice.cpp index 74a931a311b..df0c80c424c 100755 --- a/hardware/rockchip/hwcomposer/drmhwc2/drm/drmdevice.cpp +++ b/hardware/rockchip/hwcomposer/drmhwc2/drm/drmdevice.cpp @@ -652,6 +652,15 @@ std::tuple DrmDevice::Init(int num_displays) { break; } + if (c->connection == DRM_MODE_DISCONNECTED && + c->connector_type == DRM_MODE_CONNECTOR_DSI) { + if (property_get_bool("vendor.hwc.no_disconnected_dsi", true)) { + drmModeFreeConnector(c); + ALOGD("Skip disconnected DSI (%d)", res->connectors[i]); + continue; + } + } + std::vector possible_encoders; DrmEncoder *current_encoder = NULL; for (int j = 0; j < c->count_encoders; ++j) { @@ -665,7 +674,6 @@ std::tuple DrmDevice::Init(int num_displays) { std::unique_ptr conn( new DrmConnector(this, c, current_encoder, possible_encoders)); - drmModeFreeConnector(c); ret = conn->Init();