Lines Matching full:connector
43 struct intel_connector *connector = container_of(work, typeof(*connector), in intel_connector_modeset_retry_work_fn() local
45 struct intel_display *display = to_intel_display(connector); in intel_connector_modeset_retry_work_fn()
47 drm_dbg_kms(display->drm, "[CONNECTOR:%d:%s]\n", connector->base.base.id, in intel_connector_modeset_retry_work_fn()
48 connector->base.name); in intel_connector_modeset_retry_work_fn()
50 /* Grab the locks before changing connector property*/ in intel_connector_modeset_retry_work_fn()
52 /* Set connector link status to BAD and send a Uevent to notify in intel_connector_modeset_retry_work_fn()
55 drm_connector_set_link_status_property(&connector->base, in intel_connector_modeset_retry_work_fn()
59 drm_kms_helper_connector_hotplug_event(&connector->base); in intel_connector_modeset_retry_work_fn()
61 drm_connector_put(&connector->base); in intel_connector_modeset_retry_work_fn()
64 void intel_connector_queue_modeset_retry_work(struct intel_connector *connector) in intel_connector_queue_modeset_retry_work() argument
66 struct drm_i915_private *i915 = to_i915(connector->base.dev); in intel_connector_queue_modeset_retry_work()
68 drm_connector_get(&connector->base); in intel_connector_queue_modeset_retry_work()
69 if (!queue_work(i915->unordered_wq, &connector->modeset_retry_work)) in intel_connector_queue_modeset_retry_work()
70 drm_connector_put(&connector->base); in intel_connector_queue_modeset_retry_work()
73 void intel_connector_cancel_modeset_retry_work(struct intel_connector *connector) in intel_connector_cancel_modeset_retry_work() argument
75 if (cancel_work_sync(&connector->modeset_retry_work)) in intel_connector_cancel_modeset_retry_work()
76 drm_connector_put(&connector->base); in intel_connector_cancel_modeset_retry_work()
79 int intel_connector_init(struct intel_connector *connector) in intel_connector_init() argument
93 __drm_atomic_helper_connector_reset(&connector->base, in intel_connector_init()
96 intel_panel_init_alloc(connector); in intel_connector_init()
98 INIT_WORK(&connector->modeset_retry_work, in intel_connector_init()
106 struct intel_connector *connector; in intel_connector_alloc() local
108 connector = kzalloc(sizeof(*connector), GFP_KERNEL); in intel_connector_alloc()
109 if (!connector) in intel_connector_alloc()
112 if (intel_connector_init(connector) < 0) { in intel_connector_alloc()
113 kfree(connector); in intel_connector_alloc()
117 return connector; in intel_connector_alloc()
124 * Otherwise the destroy callbacks for the connector and the state should
127 void intel_connector_free(struct intel_connector *connector) in intel_connector_free() argument
129 kfree(to_intel_digital_connector_state(connector->base.state)); in intel_connector_free()
130 kfree(connector); in intel_connector_free()
134 * Connector type independent destroy hook for drm_connector_funcs.
136 void intel_connector_destroy(struct drm_connector *connector) in intel_connector_destroy() argument
138 struct intel_connector *intel_connector = to_intel_connector(connector); in intel_connector_destroy()
146 drm_connector_cleanup(connector); in intel_connector_destroy()
151 kfree(connector); in intel_connector_destroy()
154 int intel_connector_register(struct drm_connector *connector) in intel_connector_register() argument
156 struct intel_connector *intel_connector = to_intel_connector(connector); in intel_connector_register()
163 if (i915_inject_probe_failure(to_i915(connector->dev))) { in intel_connector_register()
178 void intel_connector_unregister(struct drm_connector *connector) in intel_connector_unregister() argument
180 struct intel_connector *intel_connector = to_intel_connector(connector); in intel_connector_unregister()
185 void intel_connector_attach_encoder(struct intel_connector *connector, in intel_connector_attach_encoder() argument
188 connector->encoder = encoder; in intel_connector_attach_encoder()
189 drm_connector_attach_encoder(&connector->base, &encoder->base); in intel_connector_attach_encoder()
193 * Simple connector->get_hw_state implementation for encoders that support only
194 * one connector and no cloning and hence the encoder state determines the state
195 * of the connector.
197 bool intel_connector_get_hw_state(struct intel_connector *connector) in intel_connector_get_hw_state() argument
200 struct intel_encoder *encoder = intel_attached_encoder(connector); in intel_connector_get_hw_state()
205 enum pipe intel_connector_get_pipe(struct intel_connector *connector) in intel_connector_get_pipe() argument
207 struct drm_device *dev = connector->base.dev; in intel_connector_get_pipe()
212 if (!connector->base.state->crtc) in intel_connector_get_pipe()
215 return to_intel_crtc(connector->base.state->crtc)->pipe; in intel_connector_get_pipe()
219 * intel_connector_update_modes - update connector from edid
220 * @connector: DRM connector device to use
223 int intel_connector_update_modes(struct drm_connector *connector, in intel_connector_update_modes() argument
228 drm_edid_connector_update(connector, drm_edid); in intel_connector_update_modes()
229 ret = drm_edid_connector_add_modes(connector); in intel_connector_update_modes()
236 * @connector: DRM connector device to use
239 * Fetch the EDID information from @connector using the DDC bus.
241 int intel_ddc_get_modes(struct drm_connector *connector, in intel_ddc_get_modes() argument
247 drm_edid = drm_edid_read_ddc(connector, ddc); in intel_ddc_get_modes()
251 ret = intel_connector_update_modes(connector, drm_edid); in intel_ddc_get_modes()
265 intel_attach_force_audio_property(struct drm_connector *connector) in intel_attach_force_audio_property() argument
267 struct drm_device *dev = connector->dev; in intel_attach_force_audio_property()
282 drm_object_attach_property(&connector->base, prop, 0); in intel_attach_force_audio_property()
292 intel_attach_broadcast_rgb_property(struct drm_connector *connector) in intel_attach_broadcast_rgb_property() argument
294 struct drm_device *dev = connector->dev; in intel_attach_broadcast_rgb_property()
310 drm_object_attach_property(&connector->base, prop, 0); in intel_attach_broadcast_rgb_property()
314 intel_attach_aspect_ratio_property(struct drm_connector *connector) in intel_attach_aspect_ratio_property() argument
316 if (!drm_mode_create_aspect_ratio_property(connector->dev)) in intel_attach_aspect_ratio_property()
317 drm_object_attach_property(&connector->base, in intel_attach_aspect_ratio_property()
318 connector->dev->mode_config.aspect_ratio_property, in intel_attach_aspect_ratio_property()
323 intel_attach_hdmi_colorspace_property(struct drm_connector *connector) in intel_attach_hdmi_colorspace_property() argument
325 if (!drm_mode_create_hdmi_colorspace_property(connector, 0)) in intel_attach_hdmi_colorspace_property()
326 drm_connector_attach_colorspace_property(connector); in intel_attach_hdmi_colorspace_property()
330 intel_attach_dp_colorspace_property(struct drm_connector *connector) in intel_attach_dp_colorspace_property() argument
332 if (!drm_mode_create_dp_colorspace_property(connector, 0)) in intel_attach_dp_colorspace_property()
333 drm_connector_attach_colorspace_property(connector); in intel_attach_dp_colorspace_property()
337 intel_attach_scaling_mode_property(struct drm_connector *connector) in intel_attach_scaling_mode_property() argument
339 struct drm_i915_private *i915 = to_i915(connector->dev); in intel_attach_scaling_mode_property()
346 if (!HAS_GMCH(i915) || connector->connector_type == DRM_MODE_CONNECTOR_LVDS) in intel_attach_scaling_mode_property()
349 drm_connector_attach_scaling_mode_property(connector, scaling_modes); in intel_attach_scaling_mode_property()
351 connector->state->scaling_mode = DRM_MODE_SCALE_ASPECT; in intel_attach_scaling_mode_property()