Commit fa3ab4c2 authored by Ville Syrjälä's avatar Ville Syrjälä Committed by Daniel Vetter

drm: Add crtc->name and use it in debug messages

Show a sensible name for the crtc in debug mesages. The driver may
supply its own name, otherwise the core genrates the name
("crtc-0", "crtc-1" etc.).

v2: kstrdup() the name passed by the caller (Jani)
v3: Generate a default name if the driver doesn't supply one
Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/1449592922-5545-6-git-send-email-ville.syrjala@linux.intel.com
parent 86bf546b
...@@ -288,8 +288,8 @@ drm_atomic_get_crtc_state(struct drm_atomic_state *state, ...@@ -288,8 +288,8 @@ drm_atomic_get_crtc_state(struct drm_atomic_state *state,
state->crtcs[index] = crtc; state->crtcs[index] = crtc;
crtc_state->state = state; crtc_state->state = state;
DRM_DEBUG_ATOMIC("Added [CRTC:%d] %p state to %p\n", DRM_DEBUG_ATOMIC("Added [CRTC:%d:%s] %p state to %p\n",
crtc->base.id, crtc_state, state); crtc->base.id, crtc->name, crtc_state, state);
return crtc_state; return crtc_state;
} }
...@@ -486,8 +486,8 @@ static int drm_atomic_crtc_check(struct drm_crtc *crtc, ...@@ -486,8 +486,8 @@ static int drm_atomic_crtc_check(struct drm_crtc *crtc,
*/ */
if (state->active && !state->enable) { if (state->active && !state->enable) {
DRM_DEBUG_ATOMIC("[CRTC:%d] active without enabled\n", DRM_DEBUG_ATOMIC("[CRTC:%d:%s] active without enabled\n",
crtc->base.id); crtc->base.id, crtc->name);
return -EINVAL; return -EINVAL;
} }
...@@ -496,15 +496,15 @@ static int drm_atomic_crtc_check(struct drm_crtc *crtc, ...@@ -496,15 +496,15 @@ static int drm_atomic_crtc_check(struct drm_crtc *crtc,
* be able to trigger. */ * be able to trigger. */
if (drm_core_check_feature(crtc->dev, DRIVER_ATOMIC) && if (drm_core_check_feature(crtc->dev, DRIVER_ATOMIC) &&
WARN_ON(state->enable && !state->mode_blob)) { WARN_ON(state->enable && !state->mode_blob)) {
DRM_DEBUG_ATOMIC("[CRTC:%d] enabled without mode blob\n", DRM_DEBUG_ATOMIC("[CRTC:%d:%s] enabled without mode blob\n",
crtc->base.id); crtc->base.id, crtc->name);
return -EINVAL; return -EINVAL;
} }
if (drm_core_check_feature(crtc->dev, DRIVER_ATOMIC) && if (drm_core_check_feature(crtc->dev, DRIVER_ATOMIC) &&
WARN_ON(!state->enable && state->mode_blob)) { WARN_ON(!state->enable && state->mode_blob)) {
DRM_DEBUG_ATOMIC("[CRTC:%d] disabled with mode blob\n", DRM_DEBUG_ATOMIC("[CRTC:%d:%s] disabled with mode blob\n",
crtc->base.id); crtc->base.id, crtc->name);
return -EINVAL; return -EINVAL;
} }
...@@ -1004,8 +1004,8 @@ drm_atomic_set_crtc_for_plane(struct drm_plane_state *plane_state, ...@@ -1004,8 +1004,8 @@ drm_atomic_set_crtc_for_plane(struct drm_plane_state *plane_state,
} }
if (crtc) if (crtc)
DRM_DEBUG_ATOMIC("Link plane state %p to [CRTC:%d]\n", DRM_DEBUG_ATOMIC("Link plane state %p to [CRTC:%d:%s]\n",
plane_state, crtc->base.id); plane_state, crtc->base.id, crtc->name);
else else
DRM_DEBUG_ATOMIC("Link plane state %p to [NOCRTC]\n", DRM_DEBUG_ATOMIC("Link plane state %p to [NOCRTC]\n",
plane_state); plane_state);
...@@ -1072,8 +1072,8 @@ drm_atomic_set_crtc_for_connector(struct drm_connector_state *conn_state, ...@@ -1072,8 +1072,8 @@ drm_atomic_set_crtc_for_connector(struct drm_connector_state *conn_state,
conn_state->crtc = crtc; conn_state->crtc = crtc;
if (crtc) if (crtc)
DRM_DEBUG_ATOMIC("Link connector state %p to [CRTC:%d]\n", DRM_DEBUG_ATOMIC("Link connector state %p to [CRTC:%d:%s]\n",
conn_state, crtc->base.id); conn_state, crtc->base.id, crtc->name);
else else
DRM_DEBUG_ATOMIC("Link connector state %p to [NOCRTC]\n", DRM_DEBUG_ATOMIC("Link connector state %p to [NOCRTC]\n",
conn_state); conn_state);
...@@ -1112,8 +1112,8 @@ drm_atomic_add_affected_connectors(struct drm_atomic_state *state, ...@@ -1112,8 +1112,8 @@ drm_atomic_add_affected_connectors(struct drm_atomic_state *state,
if (ret) if (ret)
return ret; return ret;
DRM_DEBUG_ATOMIC("Adding all current connectors for [CRTC:%d] to %p\n", DRM_DEBUG_ATOMIC("Adding all current connectors for [CRTC:%d:%s] to %p\n",
crtc->base.id, state); crtc->base.id, crtc->name, state);
/* /*
* Changed connectors are already in @state, so only need to look at the * Changed connectors are already in @state, so only need to look at the
...@@ -1193,8 +1193,9 @@ drm_atomic_connectors_for_crtc(struct drm_atomic_state *state, ...@@ -1193,8 +1193,9 @@ drm_atomic_connectors_for_crtc(struct drm_atomic_state *state,
num_connected_connectors++; num_connected_connectors++;
} }
DRM_DEBUG_ATOMIC("State %p has %i connectors for [CRTC:%d]\n", DRM_DEBUG_ATOMIC("State %p has %i connectors for [CRTC:%d:%s]\n",
state, num_connected_connectors, crtc->base.id); state, num_connected_connectors,
crtc->base.id, crtc->name);
return num_connected_connectors; return num_connected_connectors;
} }
...@@ -1256,8 +1257,8 @@ int drm_atomic_check_only(struct drm_atomic_state *state) ...@@ -1256,8 +1257,8 @@ int drm_atomic_check_only(struct drm_atomic_state *state)
for_each_crtc_in_state(state, crtc, crtc_state, i) { for_each_crtc_in_state(state, crtc, crtc_state, i) {
ret = drm_atomic_crtc_check(crtc, crtc_state); ret = drm_atomic_crtc_check(crtc, crtc_state);
if (ret) { if (ret) {
DRM_DEBUG_ATOMIC("[CRTC:%d] atomic core check failed\n", DRM_DEBUG_ATOMIC("[CRTC:%d:%s] atomic core check failed\n",
crtc->base.id); crtc->base.id, crtc->name);
return ret; return ret;
} }
} }
...@@ -1268,8 +1269,8 @@ int drm_atomic_check_only(struct drm_atomic_state *state) ...@@ -1268,8 +1269,8 @@ int drm_atomic_check_only(struct drm_atomic_state *state)
if (!state->allow_modeset) { if (!state->allow_modeset) {
for_each_crtc_in_state(state, crtc, crtc_state, i) { for_each_crtc_in_state(state, crtc, crtc_state, i) {
if (drm_atomic_crtc_needs_modeset(crtc_state)) { if (drm_atomic_crtc_needs_modeset(crtc_state)) {
DRM_DEBUG_ATOMIC("[CRTC:%d] requires full modeset\n", DRM_DEBUG_ATOMIC("[CRTC:%d:%s] requires full modeset\n",
crtc->base.id); crtc->base.id, crtc->name);
return -EINVAL; return -EINVAL;
} }
} }
......
...@@ -143,9 +143,9 @@ steal_encoder(struct drm_atomic_state *state, ...@@ -143,9 +143,9 @@ steal_encoder(struct drm_atomic_state *state,
*/ */
WARN_ON(!drm_modeset_is_locked(&config->connection_mutex)); WARN_ON(!drm_modeset_is_locked(&config->connection_mutex));
DRM_DEBUG_ATOMIC("[ENCODER:%d:%s] in use on [CRTC:%d], stealing it\n", DRM_DEBUG_ATOMIC("[ENCODER:%d:%s] in use on [CRTC:%d:%s], stealing it\n",
encoder->base.id, encoder->name, encoder->base.id, encoder->name,
encoder_crtc->base.id); encoder_crtc->base.id, encoder_crtc->name);
crtc_state = drm_atomic_get_crtc_state(state, encoder_crtc); crtc_state = drm_atomic_get_crtc_state(state, encoder_crtc);
if (IS_ERR(crtc_state)) if (IS_ERR(crtc_state))
...@@ -246,12 +246,13 @@ update_connector_routing(struct drm_atomic_state *state, int conn_idx) ...@@ -246,12 +246,13 @@ update_connector_routing(struct drm_atomic_state *state, int conn_idx)
} }
if (new_encoder == connector_state->best_encoder) { if (new_encoder == connector_state->best_encoder) {
DRM_DEBUG_ATOMIC("[CONNECTOR:%d:%s] keeps [ENCODER:%d:%s], now on [CRTC:%d]\n", DRM_DEBUG_ATOMIC("[CONNECTOR:%d:%s] keeps [ENCODER:%d:%s], now on [CRTC:%d:%s]\n",
connector->base.id, connector->base.id,
connector->name, connector->name,
new_encoder->base.id, new_encoder->base.id,
new_encoder->name, new_encoder->name,
connector_state->crtc->base.id); connector_state->crtc->base.id,
connector_state->crtc->name);
return 0; return 0;
} }
...@@ -285,12 +286,13 @@ update_connector_routing(struct drm_atomic_state *state, int conn_idx) ...@@ -285,12 +286,13 @@ update_connector_routing(struct drm_atomic_state *state, int conn_idx)
crtc_state = state->crtc_states[idx]; crtc_state = state->crtc_states[idx];
crtc_state->connectors_changed = true; crtc_state->connectors_changed = true;
DRM_DEBUG_ATOMIC("[CONNECTOR:%d:%s] using [ENCODER:%d:%s] on [CRTC:%d]\n", DRM_DEBUG_ATOMIC("[CONNECTOR:%d:%s] using [ENCODER:%d:%s] on [CRTC:%d:%s]\n",
connector->base.id, connector->base.id,
connector->name, connector->name,
new_encoder->base.id, new_encoder->base.id,
new_encoder->name, new_encoder->name,
connector_state->crtc->base.id); connector_state->crtc->base.id,
connector_state->crtc->name);
return 0; return 0;
} }
...@@ -374,8 +376,8 @@ mode_fixup(struct drm_atomic_state *state) ...@@ -374,8 +376,8 @@ mode_fixup(struct drm_atomic_state *state)
ret = funcs->mode_fixup(crtc, &crtc_state->mode, ret = funcs->mode_fixup(crtc, &crtc_state->mode,
&crtc_state->adjusted_mode); &crtc_state->adjusted_mode);
if (!ret) { if (!ret) {
DRM_DEBUG_ATOMIC("[CRTC:%d] fixup failed\n", DRM_DEBUG_ATOMIC("[CRTC:%d:%s] fixup failed\n",
crtc->base.id); crtc->base.id, crtc->name);
return -EINVAL; return -EINVAL;
} }
} }
...@@ -422,14 +424,14 @@ drm_atomic_helper_check_modeset(struct drm_device *dev, ...@@ -422,14 +424,14 @@ drm_atomic_helper_check_modeset(struct drm_device *dev,
for_each_crtc_in_state(state, crtc, crtc_state, i) { for_each_crtc_in_state(state, crtc, crtc_state, i) {
if (!drm_mode_equal(&crtc->state->mode, &crtc_state->mode)) { if (!drm_mode_equal(&crtc->state->mode, &crtc_state->mode)) {
DRM_DEBUG_ATOMIC("[CRTC:%d] mode changed\n", DRM_DEBUG_ATOMIC("[CRTC:%d:%s] mode changed\n",
crtc->base.id); crtc->base.id, crtc->name);
crtc_state->mode_changed = true; crtc_state->mode_changed = true;
} }
if (crtc->state->enable != crtc_state->enable) { if (crtc->state->enable != crtc_state->enable) {
DRM_DEBUG_ATOMIC("[CRTC:%d] enable changed\n", DRM_DEBUG_ATOMIC("[CRTC:%d:%s] enable changed\n",
crtc->base.id); crtc->base.id, crtc->name);
/* /*
* For clarity this assignment is done here, but * For clarity this assignment is done here, but
...@@ -470,16 +472,16 @@ drm_atomic_helper_check_modeset(struct drm_device *dev, ...@@ -470,16 +472,16 @@ drm_atomic_helper_check_modeset(struct drm_device *dev,
* a full modeset because update_connector_routing force that. * a full modeset because update_connector_routing force that.
*/ */
if (crtc->state->active != crtc_state->active) { if (crtc->state->active != crtc_state->active) {
DRM_DEBUG_ATOMIC("[CRTC:%d] active changed\n", DRM_DEBUG_ATOMIC("[CRTC:%d:%s] active changed\n",
crtc->base.id); crtc->base.id, crtc->name);
crtc_state->active_changed = true; crtc_state->active_changed = true;
} }
if (!drm_atomic_crtc_needs_modeset(crtc_state)) if (!drm_atomic_crtc_needs_modeset(crtc_state))
continue; continue;
DRM_DEBUG_ATOMIC("[CRTC:%d] needs all connectors, enable: %c, active: %c\n", DRM_DEBUG_ATOMIC("[CRTC:%d:%s] needs all connectors, enable: %c, active: %c\n",
crtc->base.id, crtc->base.id, crtc->name,
crtc_state->enable ? 'y' : 'n', crtc_state->enable ? 'y' : 'n',
crtc_state->active ? 'y' : 'n'); crtc_state->active ? 'y' : 'n');
...@@ -495,8 +497,8 @@ drm_atomic_helper_check_modeset(struct drm_device *dev, ...@@ -495,8 +497,8 @@ drm_atomic_helper_check_modeset(struct drm_device *dev,
crtc); crtc);
if (crtc_state->enable != !!num_connectors) { if (crtc_state->enable != !!num_connectors) {
DRM_DEBUG_ATOMIC("[CRTC:%d] enabled/connectors mismatch\n", DRM_DEBUG_ATOMIC("[CRTC:%d:%s] enabled/connectors mismatch\n",
crtc->base.id); crtc->base.id, crtc->name);
return -EINVAL; return -EINVAL;
} }
...@@ -559,8 +561,8 @@ drm_atomic_helper_check_planes(struct drm_device *dev, ...@@ -559,8 +561,8 @@ drm_atomic_helper_check_planes(struct drm_device *dev,
ret = funcs->atomic_check(crtc, state->crtc_states[i]); ret = funcs->atomic_check(crtc, state->crtc_states[i]);
if (ret) { if (ret) {
DRM_DEBUG_ATOMIC("[CRTC:%d] atomic driver check failed\n", DRM_DEBUG_ATOMIC("[CRTC:%d:%s] atomic driver check failed\n",
crtc->base.id); crtc->base.id, crtc->name);
return ret; return ret;
} }
} }
...@@ -673,8 +675,8 @@ disable_outputs(struct drm_device *dev, struct drm_atomic_state *old_state) ...@@ -673,8 +675,8 @@ disable_outputs(struct drm_device *dev, struct drm_atomic_state *old_state)
funcs = crtc->helper_private; funcs = crtc->helper_private;
DRM_DEBUG_ATOMIC("disabling [CRTC:%d]\n", DRM_DEBUG_ATOMIC("disabling [CRTC:%d:%s]\n",
crtc->base.id); crtc->base.id, crtc->name);
/* Right function depends upon target state. */ /* Right function depends upon target state. */
...@@ -785,8 +787,8 @@ crtc_set_mode(struct drm_device *dev, struct drm_atomic_state *old_state) ...@@ -785,8 +787,8 @@ crtc_set_mode(struct drm_device *dev, struct drm_atomic_state *old_state)
funcs = crtc->helper_private; funcs = crtc->helper_private;
if (crtc->state->enable && funcs->mode_set_nofb) { if (crtc->state->enable && funcs->mode_set_nofb) {
DRM_DEBUG_ATOMIC("modeset on [CRTC:%d]\n", DRM_DEBUG_ATOMIC("modeset on [CRTC:%d:%s]\n",
crtc->base.id); crtc->base.id, crtc->name);
funcs->mode_set_nofb(crtc); funcs->mode_set_nofb(crtc);
} }
...@@ -885,8 +887,8 @@ void drm_atomic_helper_commit_modeset_enables(struct drm_device *dev, ...@@ -885,8 +887,8 @@ void drm_atomic_helper_commit_modeset_enables(struct drm_device *dev,
funcs = crtc->helper_private; funcs = crtc->helper_private;
if (crtc->state->enable) { if (crtc->state->enable) {
DRM_DEBUG_ATOMIC("enabling [CRTC:%d]\n", DRM_DEBUG_ATOMIC("enabling [CRTC:%d:%s]\n",
crtc->base.id); crtc->base.id, crtc->name);
if (funcs->enable) if (funcs->enable)
funcs->enable(crtc); funcs->enable(crtc);
......
...@@ -649,6 +649,18 @@ EXPORT_SYMBOL(drm_framebuffer_remove); ...@@ -649,6 +649,18 @@ EXPORT_SYMBOL(drm_framebuffer_remove);
DEFINE_WW_CLASS(crtc_ww_class); DEFINE_WW_CLASS(crtc_ww_class);
static unsigned int drm_num_crtcs(struct drm_device *dev)
{
unsigned int num = 0;
struct drm_crtc *tmp;
drm_for_each_crtc(tmp, dev) {
num++;
}
return num;
}
/** /**
* drm_crtc_init_with_planes - Initialise a new CRTC object with * drm_crtc_init_with_planes - Initialise a new CRTC object with
* specified primary and cursor planes. * specified primary and cursor planes.
...@@ -684,6 +696,21 @@ int drm_crtc_init_with_planes(struct drm_device *dev, struct drm_crtc *crtc, ...@@ -684,6 +696,21 @@ int drm_crtc_init_with_planes(struct drm_device *dev, struct drm_crtc *crtc,
if (ret) if (ret)
return ret; return ret;
if (name) {
va_list ap;
va_start(ap, name);
crtc->name = kvasprintf(GFP_KERNEL, name, ap);
va_end(ap);
} else {
crtc->name = kasprintf(GFP_KERNEL, "crtc-%d",
drm_num_crtcs(dev));
}
if (!crtc->name) {
drm_mode_object_put(dev, &crtc->base);
return -ENOMEM;
}
crtc->base.properties = &crtc->properties; crtc->base.properties = &crtc->properties;
list_add_tail(&crtc->head, &config->crtc_list); list_add_tail(&crtc->head, &config->crtc_list);
...@@ -730,6 +757,8 @@ void drm_crtc_cleanup(struct drm_crtc *crtc) ...@@ -730,6 +757,8 @@ void drm_crtc_cleanup(struct drm_crtc *crtc)
if (crtc->state && crtc->funcs->atomic_destroy_state) if (crtc->state && crtc->funcs->atomic_destroy_state)
crtc->funcs->atomic_destroy_state(crtc, crtc->state); crtc->funcs->atomic_destroy_state(crtc, crtc->state);
kfree(crtc->name);
memset(crtc, 0, sizeof(*crtc)); memset(crtc, 0, sizeof(*crtc));
} }
EXPORT_SYMBOL(drm_crtc_cleanup); EXPORT_SYMBOL(drm_crtc_cleanup);
...@@ -1814,7 +1843,8 @@ int drm_mode_getresources(struct drm_device *dev, void *data, ...@@ -1814,7 +1843,8 @@ int drm_mode_getresources(struct drm_device *dev, void *data,
copied = 0; copied = 0;
crtc_id = (uint32_t __user *)(unsigned long)card_res->crtc_id_ptr; crtc_id = (uint32_t __user *)(unsigned long)card_res->crtc_id_ptr;
drm_for_each_crtc(crtc, dev) { drm_for_each_crtc(crtc, dev) {
DRM_DEBUG_KMS("[CRTC:%d]\n", crtc->base.id); DRM_DEBUG_KMS("[CRTC:%d:%s]\n",
crtc->base.id, crtc->name);
if (put_user(crtc->base.id, crtc_id + copied)) { if (put_user(crtc->base.id, crtc_id + copied)) {
ret = -EFAULT; ret = -EFAULT;
goto out; goto out;
...@@ -2659,7 +2689,7 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data, ...@@ -2659,7 +2689,7 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
ret = -ENOENT; ret = -ENOENT;
goto out; goto out;
} }
DRM_DEBUG_KMS("[CRTC:%d]\n", crtc->base.id); DRM_DEBUG_KMS("[CRTC:%d:%s]\n", crtc->base.id, crtc->name);
if (crtc_req->mode_valid) { if (crtc_req->mode_valid) {
/* If we have a mode we need a framebuffer. */ /* If we have a mode we need a framebuffer. */
......
...@@ -339,7 +339,7 @@ bool drm_crtc_helper_set_mode(struct drm_crtc *crtc, ...@@ -339,7 +339,7 @@ bool drm_crtc_helper_set_mode(struct drm_crtc *crtc,
DRM_DEBUG_KMS("CRTC fixup failed\n"); DRM_DEBUG_KMS("CRTC fixup failed\n");
goto done; goto done;
} }
DRM_DEBUG_KMS("[CRTC:%d]\n", crtc->base.id); DRM_DEBUG_KMS("[CRTC:%d:%s]\n", crtc->base.id, crtc->name);
crtc->hwmode = *adjusted_mode; crtc->hwmode = *adjusted_mode;
...@@ -519,11 +519,13 @@ int drm_crtc_helper_set_config(struct drm_mode_set *set) ...@@ -519,11 +519,13 @@ int drm_crtc_helper_set_config(struct drm_mode_set *set)
set->fb = NULL; set->fb = NULL;
if (set->fb) { if (set->fb) {
DRM_DEBUG_KMS("[CRTC:%d] [FB:%d] #connectors=%d (x y) (%i %i)\n", DRM_DEBUG_KMS("[CRTC:%d:%s] [FB:%d] #connectors=%d (x y) (%i %i)\n",
set->crtc->base.id, set->fb->base.id, set->crtc->base.id, set->crtc->name,
set->fb->base.id,
(int)set->num_connectors, set->x, set->y); (int)set->num_connectors, set->x, set->y);
} else { } else {
DRM_DEBUG_KMS("[CRTC:%d] [NOFB]\n", set->crtc->base.id); DRM_DEBUG_KMS("[CRTC:%d:%s] [NOFB]\n",
set->crtc->base.id, set->crtc->name);
drm_crtc_helper_disable(set->crtc); drm_crtc_helper_disable(set->crtc);
return 0; return 0;
} }
...@@ -663,9 +665,9 @@ int drm_crtc_helper_set_config(struct drm_mode_set *set) ...@@ -663,9 +665,9 @@ int drm_crtc_helper_set_config(struct drm_mode_set *set)
connector->encoder->crtc = new_crtc; connector->encoder->crtc = new_crtc;
} }
if (new_crtc) { if (new_crtc) {
DRM_DEBUG_KMS("[CONNECTOR:%d:%s] to [CRTC:%d]\n", DRM_DEBUG_KMS("[CONNECTOR:%d:%s] to [CRTC:%d:%s]\n",
connector->base.id, connector->name, connector->base.id, connector->name,
new_crtc->base.id); new_crtc->base.id, new_crtc->name);
} else { } else {
DRM_DEBUG_KMS("[CONNECTOR:%d:%s] to [NOCRTC]\n", DRM_DEBUG_KMS("[CONNECTOR:%d:%s] to [NOCRTC]\n",
connector->base.id, connector->name); connector->base.id, connector->name);
...@@ -685,8 +687,8 @@ int drm_crtc_helper_set_config(struct drm_mode_set *set) ...@@ -685,8 +687,8 @@ int drm_crtc_helper_set_config(struct drm_mode_set *set)
if (!drm_crtc_helper_set_mode(set->crtc, set->mode, if (!drm_crtc_helper_set_mode(set->crtc, set->mode,
set->x, set->y, set->x, set->y,
save_set.fb)) { save_set.fb)) {
DRM_ERROR("failed to set mode on [CRTC:%d]\n", DRM_ERROR("failed to set mode on [CRTC:%d:%s]\n",
set->crtc->base.id); set->crtc->base.id, set->crtc->name);
set->crtc->primary->fb = save_set.fb; set->crtc->primary->fb = save_set.fb;
ret = -EINVAL; ret = -EINVAL;
goto fail; goto fail;
......
...@@ -712,6 +712,8 @@ struct drm_crtc { ...@@ -712,6 +712,8 @@ struct drm_crtc {
struct device_node *port; struct device_node *port;
struct list_head head; struct list_head head;
char *name;
/* /*
* crtc mutex * crtc mutex
* *
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment