mirror of https://gitee.com/openkylin/linux.git
drm/i915: Update dummy connector atomic state with current config
Keep that state updated so that we can write code that depends on it on the follow up patches. v2: Fix BUG due to stale connector_state->crtc value. (Chandra) v3: Update comment about dummy state connectors. (Chandra) Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
parent
989697255d
commit
d29b2f9dce
|
@ -10217,6 +10217,27 @@ static void intel_modeset_update_staged_output_state(struct drm_device *dev)
|
|||
}
|
||||
}
|
||||
|
||||
/* Transitional helper to copy current connector/encoder state to
|
||||
* connector->state. This is needed so that code that is partially
|
||||
* converted to atomic does the right thing.
|
||||
*/
|
||||
static void intel_modeset_update_connector_atomic_state(struct drm_device *dev)
|
||||
{
|
||||
struct intel_connector *connector;
|
||||
|
||||
for_each_intel_connector(dev, connector) {
|
||||
if (connector->base.encoder) {
|
||||
connector->base.state->best_encoder =
|
||||
connector->base.encoder;
|
||||
connector->base.state->crtc =
|
||||
connector->base.encoder->crtc;
|
||||
} else {
|
||||
connector->base.state->best_encoder = NULL;
|
||||
connector->base.state->crtc = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* intel_modeset_commit_output_state
|
||||
*
|
||||
|
@ -10240,6 +10261,8 @@ static void intel_modeset_commit_output_state(struct drm_device *dev)
|
|||
crtc->base.state->enable = crtc->new_enabled;
|
||||
crtc->base.enabled = crtc->new_enabled;
|
||||
}
|
||||
|
||||
intel_modeset_update_connector_atomic_state(dev);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -13015,19 +13038,21 @@ static void intel_setup_outputs(struct drm_device *dev)
|
|||
* testing/debug of the plane operations (and only when a specific
|
||||
* kernel module option is given), that shouldn't really matter.
|
||||
*
|
||||
* We are also relying on these states to convert the legacy mode set
|
||||
* to use a drm_atomic_state struct. The states are kept consistent
|
||||
* with actual state, so that it is safe to rely on that instead of
|
||||
* the staged config.
|
||||
*
|
||||
* Once atomic support for crtc's + connectors lands, this loop should
|
||||
* be removed since we'll be setting up real connector state, which
|
||||
* will contain Intel-specific properties.
|
||||
*/
|
||||
if (drm_core_check_feature(dev, DRIVER_ATOMIC)) {
|
||||
list_for_each_entry(connector,
|
||||
&dev->mode_config.connector_list,
|
||||
head) {
|
||||
if (!WARN_ON(connector->state)) {
|
||||
connector->state =
|
||||
kzalloc(sizeof(*connector->state),
|
||||
GFP_KERNEL);
|
||||
}
|
||||
list_for_each_entry(connector,
|
||||
&dev->mode_config.connector_list,
|
||||
head) {
|
||||
if (!WARN_ON(connector->state)) {
|
||||
connector->state = kzalloc(sizeof(*connector->state),
|
||||
GFP_KERNEL);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -14080,6 +14105,8 @@ void intel_modeset_setup_hw_state(struct drm_device *dev,
|
|||
"[setup_hw_state]");
|
||||
}
|
||||
|
||||
intel_modeset_update_connector_atomic_state(dev);
|
||||
|
||||
for (i = 0; i < dev_priv->num_shared_dpll; i++) {
|
||||
struct intel_shared_dpll *pll = &dev_priv->shared_dplls[i];
|
||||
|
||||
|
|
Loading…
Reference in New Issue