drm/i915: Add plumbing for digital connector state, v3.
Some atomic properties are common between the various kinds of connectors, for example a lot of them use panel fitting mode. It makes sense to put a lot of it in a common place, so each connector can use it while they're being converted. Implement the properties required for the connectors: - scaling mode property - force audio property - broadcast rgb - aspect ratio While at it, make clear that intel_digital_connector_atomic_get_property is a hack that has to be removed when all connector properties are converted to atomic. Changes since v1: - Scaling mode and aspect ratio are partly handled in core now. Changes since v2: - Split out the scaling mode / aspect ratio changes to a preparation patch. - Use mode_changed for panel fitter, changes to this property are checked by fastset. - Allowed_scaling_modes is removed, handled through core now. Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Link: http://patchwork.freedesktop.org/patch/msgid/20170501133804.8116-6-maarten.lankhorst@linux.intel.com
Цей коміт міститься в:
@@ -330,6 +330,15 @@ struct intel_connector {
|
||||
struct work_struct modeset_retry_work;
|
||||
};
|
||||
|
||||
struct intel_digital_connector_state {
|
||||
struct drm_connector_state base;
|
||||
|
||||
enum hdmi_force_audio force_audio;
|
||||
int broadcast_rgb;
|
||||
};
|
||||
|
||||
#define to_intel_digital_connector_state(x) container_of(x, struct intel_digital_connector_state, base)
|
||||
|
||||
struct dpll {
|
||||
/* given values */
|
||||
int n;
|
||||
@@ -1912,6 +1921,20 @@ int intel_connector_atomic_get_property(struct drm_connector *connector,
|
||||
const struct drm_connector_state *state,
|
||||
struct drm_property *property,
|
||||
uint64_t *val);
|
||||
|
||||
int intel_digital_connector_atomic_get_property(struct drm_connector *connector,
|
||||
const struct drm_connector_state *state,
|
||||
struct drm_property *property,
|
||||
uint64_t *val);
|
||||
int intel_digital_connector_atomic_set_property(struct drm_connector *connector,
|
||||
struct drm_connector_state *state,
|
||||
struct drm_property *property,
|
||||
uint64_t val);
|
||||
int intel_digital_connector_atomic_check(struct drm_connector *conn,
|
||||
struct drm_connector_state *new_state);
|
||||
struct drm_connector_state *
|
||||
intel_digital_connector_duplicate_state(struct drm_connector *connector);
|
||||
|
||||
struct drm_crtc_state *intel_crtc_duplicate_state(struct drm_crtc *crtc);
|
||||
void intel_crtc_destroy_state(struct drm_crtc *crtc,
|
||||
struct drm_crtc_state *state);
|
||||
|
Посилання в новій задачі
Заблокувати користувача