Merge "disp: msm: dp: change the detect callback to detect_ctx"

This commit is contained in:
qctecmdr
2021-06-18 21:58:17 -07:00
committed by Gerrit - the friendly Code Review server
4개의 변경된 파일47개의 추가작업 그리고 60개의 파일을 삭제

파일 보기

@@ -816,16 +816,20 @@ static bool dp_display_send_hpd_event(struct dp_display_private *dp)
char name[HPD_STRING_SIZE], status[HPD_STRING_SIZE],
bpp[HPD_STRING_SIZE], pattern[HPD_STRING_SIZE];
char *envp[5];
struct dp_display *display;
int rc = 0;
connector = dp->dp_display.base_connector;
display = &dp->dp_display;
if (!connector) {
DP_ERR("connector not set\n");
return false;
}
connector->status = connector->funcs->detect(connector, false);
connector->status = display->is_sst_connected ? connector_status_connected :
connector_status_disconnected;
if (dp->cached_connector_status == connector->status) {
DP_DEBUG("connector status (%d) unchanged, skipping uevent\n",
dp->cached_connector_status);

파일 보기

@@ -889,42 +889,33 @@ void dp_mst_drm_bridge_deinit(void *display)
/* DP MST Connector OPs */
static enum drm_connector_status
dp_mst_connector_detect(struct drm_connector *connector, bool force,
static int
dp_mst_connector_detect(struct drm_connector *connector,
struct drm_modeset_acquire_ctx *ctx,
bool force,
void *display)
{
struct sde_connector *c_conn = to_sde_connector(connector);
struct dp_display *dp_display = c_conn->display;
struct dp_mst_private *mst = dp_display->dp_mst_prv_info;
struct dp_panel *dp_panel;
struct drm_modeset_acquire_ctx ctx;
enum drm_connector_status status;
DP_MST_DEBUG("enter:\n");
SDE_EVT32_EXTERNAL(SDE_EVTLOG_FUNC_ENTRY);
if (!c_conn->drv_panel || !c_conn->mst_port) {
DP_DEBUG("conn %d is invalid\n");
return connector_status_disconnected;
}
dp_panel = c_conn->drv_panel;
if (dp_panel->mst_hide)
return connector_status_disconnected;
drm_modeset_acquire_init(&ctx, 0);
status = mst->mst_fw_cbs->detect_port_ctx(connector,
&ctx, &mst->mst_mgr, c_conn->mst_port);
ctx, &mst->mst_mgr, c_conn->mst_port);
DP_MST_INFO("conn:%d status:%d\n", connector->base.id, status);
SDE_EVT32_EXTERNAL(SDE_EVTLOG_FUNC_EXIT, connector->base.id, status);
drm_modeset_drop_locks(&ctx);
drm_modeset_acquire_fini(&ctx);
return status;
return (int)status;
}
void dp_mst_clear_edid_cache(void *dp_display) {
@@ -1086,34 +1077,6 @@ enum drm_mode_status dp_mst_connector_mode_valid(
return dp_display->validate_mode(dp_display, dp_panel, mode, avail_res);
}
int dp_mst_connector_get_info(struct drm_connector *connector,
struct msm_display_info *info,
void *display)
{
int rc;
enum drm_connector_status status = connector_status_unknown;
DP_MST_DEBUG("enter:\n");
SDE_EVT32_EXTERNAL(SDE_EVTLOG_FUNC_ENTRY, connector->base.id);
rc = dp_connector_get_info(connector, info, display);
if (!rc) {
status = dp_mst_connector_detect(connector, false, display);
if (status == connector_status_connected)
info->is_connected = true;
else
info->is_connected = false;
}
DP_MST_INFO("mst connector:%d status:%d, rc:%d\n",
connector->base.id, status, rc);
SDE_EVT32_EXTERNAL(SDE_EVTLOG_FUNC_EXIT, connector->base.id);
return rc;
}
int dp_mst_connector_get_mode_info(struct drm_connector *connector,
const struct drm_display_mode *drm_mode,
struct msm_sub_mode *sub_mode,
@@ -1399,10 +1362,10 @@ dp_mst_add_connector(struct drm_dp_mst_topology_mgr *mgr,
{
static const struct sde_connector_ops dp_mst_connector_ops = {
.post_init = dp_mst_connector_post_init,
.detect = dp_mst_connector_detect,
.detect_ctx = dp_mst_connector_detect,
.get_modes = dp_mst_connector_get_modes,
.mode_valid = dp_mst_connector_mode_valid,
.get_info = dp_mst_connector_get_info,
.get_info = dp_connector_get_info,
.get_mode_info = dp_mst_connector_get_mode_info,
.atomic_best_encoder = dp_mst_atomic_best_encoder,
.atomic_check = dp_mst_connector_atomic_check,
@@ -1477,8 +1440,10 @@ dp_mst_add_connector(struct drm_dp_mst_topology_mgr *mgr,
return connector;
}
static enum drm_connector_status
dp_mst_fixed_connector_detect(struct drm_connector *connector, bool force,
static int
dp_mst_fixed_connector_detect(struct drm_connector *connector,
struct drm_modeset_acquire_ctx *ctx,
bool force,
void *display)
{
struct dp_display *dp_display = display;
@@ -1492,10 +1457,10 @@ dp_mst_fixed_connector_detect(struct drm_connector *connector, bool force,
if (!mst->mst_bridge[i].fixed_port_added)
break;
return dp_mst_connector_detect(connector, force, display);
return dp_mst_connector_detect(connector, ctx, force, display);
}
return connector_status_disconnected;
return (int)connector_status_disconnected;
}
static struct drm_encoder *
@@ -1672,10 +1637,10 @@ dp_mst_drm_fixed_connector_init(struct dp_display *dp_display,
{
static const struct sde_connector_ops dp_mst_connector_ops = {
.post_init = dp_mst_connector_post_init,
.detect = dp_mst_fixed_connector_detect,
.detect_ctx = dp_mst_fixed_connector_detect,
.get_modes = dp_mst_connector_get_modes,
.mode_valid = dp_mst_connector_mode_valid,
.get_info = dp_mst_connector_get_info,
.get_info = dp_connector_get_info,
.get_mode_info = dp_mst_connector_get_mode_info,
.atomic_best_encoder = dp_mst_fixed_atomic_best_encoder,
.atomic_check = dp_mst_connector_atomic_check,

파일 보기

@@ -1823,8 +1823,10 @@ static void sde_connector_update_colorspace(struct drm_connector *connector)
SDE_ERROR("failed to set colorspace property for connector\n");
}
static enum drm_connector_status
sde_connector_detect(struct drm_connector *connector, bool force)
static int
sde_connector_detect_ctx(struct drm_connector *connector,
struct drm_modeset_acquire_ctx *ctx,
bool force)
{
enum drm_connector_status status = connector_status_unknown;
struct sde_connector *c_conn;
@@ -1836,12 +1838,14 @@ sde_connector_detect(struct drm_connector *connector, bool force)
c_conn = to_sde_connector(connector);
if (c_conn->ops.detect)
status = c_conn->ops.detect(connector,
force,
c_conn->display);
if (c_conn->ops.detect_ctx)
status = c_conn->ops.detect_ctx(connector, ctx, force, c_conn->display);
else if (c_conn->ops.detect)
status = c_conn->ops.detect(connector, force, c_conn->display);
return status;
SDE_DEBUG("connector id: %d, connection status: %d\n", connector->base.id, status);
return (int)status;
}
int sde_connector_get_dpms(struct drm_connector *connector)
@@ -2423,7 +2427,6 @@ static int sde_connector_fill_modes(struct drm_connector *connector,
static const struct drm_connector_funcs sde_connector_ops = {
.reset = sde_connector_atomic_reset,
.detect = sde_connector_detect,
.destroy = sde_connector_destroy,
.fill_modes = sde_connector_fill_modes,
.atomic_duplicate_state = sde_connector_atomic_duplicate_state,
@@ -2689,6 +2692,7 @@ static void sde_connector_check_status_work(struct work_struct *work)
static const struct drm_connector_helper_funcs sde_connector_helper_ops = {
.get_modes = sde_connector_get_modes,
.detect_ctx = sde_connector_detect_ctx,
.mode_valid = sde_connector_mode_valid,
.best_encoder = sde_connector_best_encoder,
.atomic_check = sde_connector_atomic_check,
@@ -2696,6 +2700,7 @@ static const struct drm_connector_helper_funcs sde_connector_helper_ops = {
static const struct drm_connector_helper_funcs sde_connector_helper_ops_v2 = {
.get_modes = sde_connector_get_modes,
.detect_ctx = sde_connector_detect_ctx,
.mode_valid = sde_connector_mode_valid,
.best_encoder = sde_connector_best_encoder,
.atomic_best_encoder = sde_connector_atomic_best_encoder,

파일 보기

@@ -60,6 +60,19 @@ struct sde_connector_ops {
bool force,
void *display);
/**
* detect_ctx - determine if connector is connected
* @connector: Pointer to drm connector structure
* @ctx: Pointer to drm modeset acquire context structure
* @force: Force detect setting from drm framework
* @display: Pointer to private display handle
* Returns: Connector 'is connected' status
*/
int (*detect_ctx)(struct drm_connector *connector,
struct drm_modeset_acquire_ctx *ctx,
bool force,
void *display);
/**
* get_modes - add drm modes via drm_mode_probed_add()
* @connector: Pointer to drm connector structure