Searched refs:connector (Results 1 - 200 of 409) sorted by relevance

123

/linux-4.4.14/drivers/gpu/drm/rcar-du/
H A Drcar_du_hdmicon.c27 static int rcar_du_hdmi_connector_get_modes(struct drm_connector *connector) rcar_du_hdmi_connector_get_modes() argument
29 struct rcar_du_connector *con = to_rcar_connector(connector); rcar_du_hdmi_connector_get_modes()
36 return sfuncs->get_modes(encoder, connector); rcar_du_hdmi_connector_get_modes()
39 static int rcar_du_hdmi_connector_mode_valid(struct drm_connector *connector, rcar_du_hdmi_connector_mode_valid() argument
42 struct rcar_du_connector *con = to_rcar_connector(connector); rcar_du_hdmi_connector_mode_valid()
58 static void rcar_du_hdmi_connector_destroy(struct drm_connector *connector) rcar_du_hdmi_connector_destroy() argument
60 drm_connector_unregister(connector); rcar_du_hdmi_connector_destroy()
61 drm_connector_cleanup(connector); rcar_du_hdmi_connector_destroy()
65 rcar_du_hdmi_connector_detect(struct drm_connector *connector, bool force) rcar_du_hdmi_connector_detect() argument
67 struct rcar_du_connector *con = to_rcar_connector(connector); rcar_du_hdmi_connector_detect()
74 return sfuncs->detect(encoder, connector); rcar_du_hdmi_connector_detect()
92 struct drm_connector *connector; rcar_du_hdmi_connector_init() local
99 connector = &rcon->connector; rcar_du_hdmi_connector_init()
100 connector->display_info.width_mm = 0; rcar_du_hdmi_connector_init()
101 connector->display_info.height_mm = 0; rcar_du_hdmi_connector_init()
102 connector->interlace_allowed = true; rcar_du_hdmi_connector_init()
103 connector->polled = DRM_CONNECTOR_POLL_HPD; rcar_du_hdmi_connector_init()
105 ret = drm_connector_init(rcdu->ddev, connector, &connector_funcs, rcar_du_hdmi_connector_init()
110 drm_connector_helper_add(connector, &connector_helper_funcs); rcar_du_hdmi_connector_init()
111 ret = drm_connector_register(connector); rcar_du_hdmi_connector_init()
115 connector->dpms = DRM_MODE_DPMS_OFF; rcar_du_hdmi_connector_init()
116 drm_object_property_set_value(&connector->base, rcar_du_hdmi_connector_init()
119 ret = drm_mode_connector_attach_encoder(connector, encoder); rcar_du_hdmi_connector_init()
H A Drcar_du_lvdscon.c29 struct rcar_du_connector connector; member in struct:rcar_du_lvds_connector
39 container_of(c, struct rcar_du_lvds_connector, connector.connector)
41 static int rcar_du_lvds_connector_get_modes(struct drm_connector *connector) rcar_du_lvds_connector_get_modes() argument
44 to_rcar_lvds_connector(connector); rcar_du_lvds_connector_get_modes()
47 mode = drm_mode_create(connector->dev); rcar_du_lvds_connector_get_modes()
55 drm_mode_probed_add(connector, mode); rcar_du_lvds_connector_get_modes()
65 static void rcar_du_lvds_connector_destroy(struct drm_connector *connector) rcar_du_lvds_connector_destroy() argument
67 drm_connector_unregister(connector); rcar_du_lvds_connector_destroy()
68 drm_connector_cleanup(connector); rcar_du_lvds_connector_destroy()
72 rcar_du_lvds_connector_detect(struct drm_connector *connector, bool force) rcar_du_lvds_connector_detect() argument
93 struct drm_connector *connector; rcar_du_lvds_connector_init() local
110 connector = &lvdscon->connector.connector; rcar_du_lvds_connector_init()
111 connector->display_info.width_mm = lvdscon->panel.width_mm; rcar_du_lvds_connector_init()
112 connector->display_info.height_mm = lvdscon->panel.height_mm; rcar_du_lvds_connector_init()
114 ret = drm_connector_init(rcdu->ddev, connector, &connector_funcs, rcar_du_lvds_connector_init()
119 drm_connector_helper_add(connector, &connector_helper_funcs); rcar_du_lvds_connector_init()
120 ret = drm_connector_register(connector); rcar_du_lvds_connector_init()
124 connector->dpms = DRM_MODE_DPMS_OFF; rcar_du_lvds_connector_init()
125 drm_object_property_set_value(&connector->base, rcar_du_lvds_connector_init()
128 ret = drm_mode_connector_attach_encoder(connector, encoder); rcar_du_lvds_connector_init()
132 lvdscon->connector.encoder = renc; rcar_du_lvds_connector_init()
H A Drcar_du_vgacon.c24 static int rcar_du_vga_connector_get_modes(struct drm_connector *connector) rcar_du_vga_connector_get_modes() argument
34 static void rcar_du_vga_connector_destroy(struct drm_connector *connector) rcar_du_vga_connector_destroy() argument
36 drm_connector_unregister(connector); rcar_du_vga_connector_destroy()
37 drm_connector_cleanup(connector); rcar_du_vga_connector_destroy()
41 rcar_du_vga_connector_detect(struct drm_connector *connector, bool force) rcar_du_vga_connector_detect() argument
61 struct drm_connector *connector; rcar_du_vga_connector_init() local
68 connector = &rcon->connector; rcar_du_vga_connector_init()
69 connector->display_info.width_mm = 0; rcar_du_vga_connector_init()
70 connector->display_info.height_mm = 0; rcar_du_vga_connector_init()
71 connector->interlace_allowed = true; rcar_du_vga_connector_init()
73 ret = drm_connector_init(rcdu->ddev, connector, &connector_funcs, rcar_du_vga_connector_init()
78 drm_connector_helper_add(connector, &connector_helper_funcs); rcar_du_vga_connector_init()
79 ret = drm_connector_register(connector); rcar_du_vga_connector_init()
83 connector->dpms = DRM_MODE_DPMS_OFF; rcar_du_vga_connector_init()
84 drm_object_property_set_value(&connector->base, rcar_du_vga_connector_init()
87 ret = drm_mode_connector_attach_encoder(connector, encoder); rcar_du_vga_connector_init()
H A Drcar_du_encoder.h45 struct drm_connector connector; member in struct:rcar_du_connector
50 container_of(c, struct rcar_du_connector, connector)
53 rcar_du_connector_best_encoder(struct drm_connector *connector);
H A Drcar_du_encoder.c30 * Common connector functions
34 rcar_du_connector_best_encoder(struct drm_connector *connector) rcar_du_connector_best_encoder() argument
36 struct rcar_du_connector *rcon = to_rcar_connector(connector); rcar_du_connector_best_encoder()
69 struct drm_connector *connector = conn_state->connector; rcar_du_encoder_atomic_check() local
76 if (list_empty(&connector->modes)) { rcar_du_encoder_atomic_check()
81 panel_mode = list_first_entry(&connector->modes, rcar_du_encoder_atomic_check()
H A Drcar_du_kms.c567 struct device_node *connector = NULL; rcar_du_encoders_init_one() local
593 * be an encoder. Locate the connector. for_each_endpoint_of_node()
596 connector = of_graph_get_remote_port_parent(ep_node); for_each_endpoint_of_node()
599 if (!connector) { for_each_endpoint_of_node()
601 "no connector for encoder %s, skipping\n", for_each_endpoint_of_node()
633 of_node_put(connector);
639 * connector.
641 connector = entity;
644 ret = rcar_du_encoder_init(rcdu, enc_type, output, encoder, connector);
646 of_node_put(connector);
839 "no connector found, disabling fbdev emulation\n"); rcar_du_modeset_init()
/linux-4.4.14/drivers/gpu/drm/msm/edp/
H A Dedp_connector.c25 struct drm_connector *connector, bool force) edp_connector_detect()
27 struct edp_connector *edp_connector = to_edp_connector(connector); edp_connector_detect()
35 static void edp_connector_destroy(struct drm_connector *connector) edp_connector_destroy() argument
37 struct edp_connector *edp_connector = to_edp_connector(connector); edp_connector_destroy()
40 drm_connector_unregister(connector); edp_connector_destroy()
41 drm_connector_cleanup(connector); edp_connector_destroy()
46 static int edp_connector_get_modes(struct drm_connector *connector) edp_connector_get_modes() argument
48 struct edp_connector *edp_connector = to_edp_connector(connector); edp_connector_get_modes()
55 ret = msm_edp_ctrl_get_panel_info(edp->ctrl, connector, &drm_edid); edp_connector_get_modes()
59 drm_mode_connector_update_edid_property(connector, drm_edid); edp_connector_get_modes()
61 ret = drm_add_edid_modes(connector, drm_edid); edp_connector_get_modes()
66 static int edp_connector_mode_valid(struct drm_connector *connector, edp_connector_mode_valid() argument
69 struct edp_connector *edp_connector = to_edp_connector(connector); edp_connector_mode_valid()
71 struct msm_drm_private *priv = connector->dev->dev_private; edp_connector_mode_valid()
88 if (connector->display_info.bpc > 8) edp_connector_mode_valid()
95 edp_connector_best_encoder(struct drm_connector *connector) edp_connector_best_encoder() argument
97 struct edp_connector *edp_connector = to_edp_connector(connector); edp_connector_best_encoder()
119 /* initialize connector */ msm_edp_connector_init()
122 struct drm_connector *connector = NULL; msm_edp_connector_init() local
134 connector = &edp_connector->base; msm_edp_connector_init()
136 ret = drm_connector_init(edp->dev, connector, &edp_connector_funcs, msm_edp_connector_init()
141 drm_connector_helper_add(connector, &edp_connector_helper_funcs); msm_edp_connector_init()
144 connector->polled = DRM_CONNECTOR_POLL_CONNECT; msm_edp_connector_init()
147 connector->interlace_allowed = false; msm_edp_connector_init()
148 connector->doublescan_allowed = false; msm_edp_connector_init()
150 ret = drm_connector_register(connector); msm_edp_connector_init()
154 drm_mode_connector_attach_encoder(connector, edp->encoder); msm_edp_connector_init()
156 return connector; msm_edp_connector_init()
159 if (connector) msm_edp_connector_init()
160 edp_connector_destroy(connector); msm_edp_connector_init()
24 edp_connector_detect( struct drm_connector *connector, bool force) edp_connector_detect() argument
H A Dedp.c165 edp->connector = msm_edp_connector_init(edp); msm_edp_modeset_init()
166 if (IS_ERR(edp->connector)) { msm_edp_modeset_init()
167 ret = PTR_ERR(edp->connector); msm_edp_modeset_init()
168 dev_err(dev->dev, "failed to create eDP connector: %d\n", ret); msm_edp_modeset_init()
169 edp->connector = NULL; msm_edp_modeset_init()
192 priv->connectors[priv->num_connectors++] = edp->connector; msm_edp_modeset_init()
197 /* bridge/connector are normally destroyed by drm */ msm_edp_modeset_init()
202 if (edp->connector) { msm_edp_modeset_init()
203 edp->connector->funcs->destroy(edp->connector); msm_edp_modeset_init()
204 edp->connector = NULL; msm_edp_modeset_init()
H A Dedp_bridge.c59 struct drm_connector *connector; edp_bridge_mode_set() local
72 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { edp_bridge_mode_set()
73 if ((connector->encoder != NULL) && edp_bridge_mode_set()
74 (connector->encoder->bridge == bridge)) { edp_bridge_mode_set()
76 adjusted_mode, &connector->display_info); edp_bridge_mode_set()
H A Dedp.h37 struct drm_connector *connector; member in struct:msm_edp
52 /* eDP connector */
77 struct drm_connector *connector, struct edid **edid);
/linux-4.4.14/drivers/gpu/drm/udl/
H A Dudl_connector.c19 /* dummy connector to just get EDID,
57 static int udl_get_modes(struct drm_connector *connector) udl_get_modes() argument
59 struct udl_device *udl = connector->dev->dev_private; udl_get_modes()
65 drm_mode_connector_update_edid_property(connector, NULL); udl_get_modes()
77 drm_mode_connector_update_edid_property(connector, edid); udl_get_modes()
78 ret = drm_add_edid_modes(connector, edid); udl_get_modes()
83 static int udl_mode_valid(struct drm_connector *connector, udl_mode_valid() argument
86 struct udl_device *udl = connector->dev->dev_private; udl_mode_valid()
97 udl_detect(struct drm_connector *connector, bool force) udl_detect() argument
99 if (drm_device_is_unplugged(connector->dev)) udl_detect()
105 udl_best_single_encoder(struct drm_connector *connector) udl_best_single_encoder() argument
107 int enc_id = connector->encoder_ids[0]; udl_best_single_encoder()
108 return drm_encoder_find(connector->dev, enc_id); udl_best_single_encoder()
111 static int udl_connector_set_property(struct drm_connector *connector, udl_connector_set_property() argument
118 static void udl_connector_destroy(struct drm_connector *connector) udl_connector_destroy() argument
120 drm_connector_unregister(connector); udl_connector_destroy()
121 drm_connector_cleanup(connector); udl_connector_destroy()
122 kfree(connector); udl_connector_destroy()
141 struct drm_connector *connector; udl_connector_init() local
143 connector = kzalloc(sizeof(struct drm_connector), GFP_KERNEL); udl_connector_init()
144 if (!connector) udl_connector_init()
147 drm_connector_init(dev, connector, &udl_connector_funcs, DRM_MODE_CONNECTOR_DVII); udl_connector_init()
148 drm_connector_helper_add(connector, &udl_connector_helper_funcs); udl_connector_init()
150 drm_connector_register(connector); udl_connector_init()
151 drm_mode_connector_attach_encoder(connector, encoder); udl_connector_init()
153 drm_object_attach_property(&connector->base, udl_connector_init()
/linux-4.4.14/drivers/gpu/drm/msm/mdp/mdp4/
H A Dmdp4_lvds_connector.c31 struct drm_connector *connector, bool force) mdp4_lvds_connector_detect()
34 to_mdp4_lvds_connector(connector); mdp4_lvds_connector_detect()
41 static void mdp4_lvds_connector_destroy(struct drm_connector *connector) mdp4_lvds_connector_destroy() argument
44 to_mdp4_lvds_connector(connector); mdp4_lvds_connector_destroy()
50 drm_connector_unregister(connector); mdp4_lvds_connector_destroy()
51 drm_connector_cleanup(connector); mdp4_lvds_connector_destroy()
56 static int mdp4_lvds_connector_get_modes(struct drm_connector *connector) mdp4_lvds_connector_get_modes() argument
59 to_mdp4_lvds_connector(connector); mdp4_lvds_connector_get_modes()
69 static int mdp4_lvds_connector_mode_valid(struct drm_connector *connector, mdp4_lvds_connector_mode_valid() argument
73 to_mdp4_lvds_connector(connector); mdp4_lvds_connector_mode_valid()
89 mdp4_lvds_connector_best_encoder(struct drm_connector *connector) mdp4_lvds_connector_best_encoder() argument
92 to_mdp4_lvds_connector(connector); mdp4_lvds_connector_best_encoder()
112 /* initialize connector */ mdp4_lvds_connector_init()
116 struct drm_connector *connector = NULL; mdp4_lvds_connector_init() local
129 connector = &mdp4_lvds_connector->base; mdp4_lvds_connector_init()
131 drm_connector_init(dev, connector, &mdp4_lvds_connector_funcs, mdp4_lvds_connector_init()
133 drm_connector_helper_add(connector, &mdp4_lvds_connector_helper_funcs); mdp4_lvds_connector_init()
135 connector->polled = 0; mdp4_lvds_connector_init()
137 connector->interlace_allowed = 0; mdp4_lvds_connector_init()
138 connector->doublescan_allowed = 0; mdp4_lvds_connector_init()
140 drm_connector_register(connector); mdp4_lvds_connector_init()
142 drm_mode_connector_attach_encoder(connector, encoder); mdp4_lvds_connector_init()
145 drm_panel_attach(panel, connector); mdp4_lvds_connector_init()
147 return connector; mdp4_lvds_connector_init()
150 if (connector) mdp4_lvds_connector_init()
151 mdp4_lvds_connector_destroy(connector); mdp4_lvds_connector_init()
30 mdp4_lvds_connector_detect( struct drm_connector *connector, bool force) mdp4_lvds_connector_detect() argument
H A Dmdp4_lcdc_encoder.c98 struct drm_connector *connector; get_connector() local
100 list_for_each_entry(connector, &dev->mode_config.connector_list, head) get_connector()
101 if (connector->encoder == encoder) get_connector()
102 return connector; get_connector()
110 struct drm_connector *connector = get_connector(encoder); setup_phy() local
115 if (!connector) setup_phy()
118 bpp = 3 * connector->display_info.bpc; setup_phy()
356 * the (connector) source of the vsync's gets disabled, mdp4_lcdc_encoder_disable()
H A Dmdp4_kms.c287 struct drm_connector *connector; modeset_init() local
346 connector = mdp4_lvds_connector_init(dev, panel, encoder); modeset_init()
347 if (IS_ERR(connector)) { modeset_init()
348 ret = PTR_ERR(connector); modeset_init()
349 dev_err(dev->dev, "failed to initialize LVDS connector: %d\n", ret); modeset_init()
353 priv->connectors[priv->num_connectors++] = connector; modeset_init()
387 /* Construct bridge/connector for HDMI: */ modeset_init()
/linux-4.4.14/drivers/gpu/drm/amd/amdgpu/
H A Damdgpu_connectors.c40 void amdgpu_connector_hotplug(struct drm_connector *connector) amdgpu_connector_hotplug() argument
42 struct drm_device *dev = connector->dev; amdgpu_connector_hotplug()
44 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); amdgpu_connector_hotplug()
46 /* bail if the connector does not have hpd pin, e.g., amdgpu_connector_hotplug()
54 /* if the connector is already off, don't turn it back on */ amdgpu_connector_hotplug()
55 if (connector->dpms != DRM_MODE_DPMS_ON) amdgpu_connector_hotplug()
59 if (connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort) { amdgpu_connector_hotplug()
73 int saved_dpms = connector->dpms; amdgpu_connector_hotplug()
76 drm_helper_connector_dpms(connector, DRM_MODE_DPMS_OFF); amdgpu_connector_hotplug()
87 connector->dpms = DRM_MODE_DPMS_OFF; amdgpu_connector_hotplug()
88 drm_helper_connector_dpms(connector, DRM_MODE_DPMS_ON); amdgpu_connector_hotplug()
90 connector->dpms = saved_dpms; amdgpu_connector_hotplug()
105 int amdgpu_connector_get_monitor_bpc(struct drm_connector *connector) amdgpu_connector_get_monitor_bpc() argument
107 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); amdgpu_connector_get_monitor_bpc()
112 switch (connector->connector_type) { amdgpu_connector_get_monitor_bpc()
116 if (drm_detect_hdmi_monitor(amdgpu_connector_edid(connector))) { amdgpu_connector_get_monitor_bpc()
117 if (connector->display_info.bpc) amdgpu_connector_get_monitor_bpc()
118 bpc = connector->display_info.bpc; amdgpu_connector_get_monitor_bpc()
124 if (drm_detect_hdmi_monitor(amdgpu_connector_edid(connector))) { amdgpu_connector_get_monitor_bpc()
125 if (connector->display_info.bpc) amdgpu_connector_get_monitor_bpc()
126 bpc = connector->display_info.bpc; amdgpu_connector_get_monitor_bpc()
133 drm_detect_hdmi_monitor(amdgpu_connector_edid(connector))) { amdgpu_connector_get_monitor_bpc()
134 if (connector->display_info.bpc) amdgpu_connector_get_monitor_bpc()
135 bpc = connector->display_info.bpc; amdgpu_connector_get_monitor_bpc()
140 if (connector->display_info.bpc) amdgpu_connector_get_monitor_bpc()
141 bpc = connector->display_info.bpc; amdgpu_connector_get_monitor_bpc()
144 connector->helper_private; amdgpu_connector_get_monitor_bpc()
145 struct drm_encoder *encoder = connector_funcs->best_encoder(connector); amdgpu_connector_get_monitor_bpc()
157 if (drm_detect_hdmi_monitor(amdgpu_connector_edid(connector))) { amdgpu_connector_get_monitor_bpc()
166 connector->name, bpc); amdgpu_connector_get_monitor_bpc()
171 if (connector->max_tmds_clock > 0) { amdgpu_connector_get_monitor_bpc()
172 /* mode_clock is clock in kHz for mode to be modeset on this connector */ amdgpu_connector_get_monitor_bpc()
176 max_tmds_clock = connector->max_tmds_clock * 1000; amdgpu_connector_get_monitor_bpc()
179 connector->name, mode_clock, max_tmds_clock); amdgpu_connector_get_monitor_bpc()
183 if ((connector->display_info.edid_hdmi_dc_modes & DRM_EDID_HDMI_DC_30) && amdgpu_connector_get_monitor_bpc()
190 connector->name, bpc); amdgpu_connector_get_monitor_bpc()
196 connector->name, bpc); amdgpu_connector_get_monitor_bpc()
201 connector->name); amdgpu_connector_get_monitor_bpc()
208 connector->name); amdgpu_connector_get_monitor_bpc()
213 connector->name, connector->display_info.bpc, bpc); amdgpu_connector_get_monitor_bpc()
219 amdgpu_connector_update_scratch_regs(struct drm_connector *connector, amdgpu_connector_update_scratch_regs() argument
224 const struct drm_connector_helper_funcs *connector_funcs = connector->helper_private; amdgpu_connector_update_scratch_regs()
228 best_encoder = connector_funcs->best_encoder(connector); amdgpu_connector_update_scratch_regs()
231 if (connector->encoder_ids[i] == 0) amdgpu_connector_update_scratch_regs()
234 encoder = drm_encoder_find(connector->dev, amdgpu_connector_update_scratch_regs()
235 connector->encoder_ids[i]); amdgpu_connector_update_scratch_regs()
244 amdgpu_atombios_encoder_set_bios_scratch_regs(connector, encoder, connected); amdgpu_connector_update_scratch_regs()
250 amdgpu_connector_find_encoder(struct drm_connector *connector, amdgpu_connector_find_encoder() argument
257 if (connector->encoder_ids[i] == 0) amdgpu_connector_find_encoder()
259 encoder = drm_encoder_find(connector->dev, amdgpu_connector_find_encoder()
260 connector->encoder_ids[i]); amdgpu_connector_find_encoder()
270 struct edid *amdgpu_connector_edid(struct drm_connector *connector) amdgpu_connector_edid() argument
272 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); amdgpu_connector_edid()
273 struct drm_property_blob *edid_blob = connector->edid_blob_ptr; amdgpu_connector_edid()
302 static void amdgpu_connector_get_edid(struct drm_connector *connector) amdgpu_connector_get_edid() argument
304 struct drm_device *dev = connector->dev; amdgpu_connector_get_edid()
306 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); amdgpu_connector_get_edid()
315 if ((amdgpu_connector_encoder_get_dp_bridge_encoder_id(connector) != amdgpu_connector_get_edid()
318 amdgpu_connector->edid = drm_get_edid(connector, amdgpu_connector_get_edid()
320 } else if ((connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort) || amdgpu_connector_get_edid()
321 (connector->connector_type == DRM_MODE_CONNECTOR_eDP)) { amdgpu_connector_get_edid()
327 amdgpu_connector->edid = drm_get_edid(connector, amdgpu_connector_get_edid()
330 amdgpu_connector->edid = drm_get_edid(connector, amdgpu_connector_get_edid()
333 amdgpu_connector->edid = drm_get_edid(connector, amdgpu_connector_get_edid()
339 if (((connector->connector_type == DRM_MODE_CONNECTOR_LVDS) || amdgpu_connector_get_edid()
340 (connector->connector_type == DRM_MODE_CONNECTOR_eDP))) amdgpu_connector_get_edid()
345 static void amdgpu_connector_free_edid(struct drm_connector *connector) amdgpu_connector_free_edid() argument
347 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); amdgpu_connector_free_edid()
355 static int amdgpu_connector_ddc_get_modes(struct drm_connector *connector) amdgpu_connector_ddc_get_modes() argument
357 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); amdgpu_connector_ddc_get_modes()
361 drm_mode_connector_update_edid_property(connector, amdgpu_connector->edid); amdgpu_connector_ddc_get_modes()
362 ret = drm_add_edid_modes(connector, amdgpu_connector->edid); amdgpu_connector_ddc_get_modes()
363 drm_edid_to_eld(connector, amdgpu_connector->edid); amdgpu_connector_ddc_get_modes()
366 drm_mode_connector_update_edid_property(connector, NULL); amdgpu_connector_ddc_get_modes()
371 amdgpu_connector_best_single_encoder(struct drm_connector *connector) amdgpu_connector_best_single_encoder() argument
373 int enc_id = connector->encoder_ids[0]; amdgpu_connector_best_single_encoder()
377 return drm_encoder_find(connector->dev, enc_id); amdgpu_connector_best_single_encoder()
381 static void amdgpu_get_native_mode(struct drm_connector *connector) amdgpu_get_native_mode() argument
383 struct drm_encoder *encoder = amdgpu_connector_best_single_encoder(connector); amdgpu_get_native_mode()
391 if (!list_empty(&connector->probed_modes)) { amdgpu_get_native_mode()
393 list_first_entry(&connector->probed_modes, amdgpu_get_native_mode()
435 struct drm_connector *connector) amdgpu_connector_add_common_modes()
482 drm_mode_probed_add(connector, mode); amdgpu_connector_add_common_modes()
486 static int amdgpu_connector_set_property(struct drm_connector *connector, amdgpu_connector_set_property() argument
490 struct drm_device *dev = connector->dev; amdgpu_connector_set_property()
499 /* need to find digital encoder on connector */ amdgpu_connector_set_property()
500 encoder = amdgpu_connector_find_encoder(connector, DRM_MODE_ENCODER_TMDS); amdgpu_connector_set_property()
518 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); amdgpu_connector_set_property()
519 /* need to find digital encoder on connector */ amdgpu_connector_set_property()
520 encoder = amdgpu_connector_find_encoder(connector, DRM_MODE_ENCODER_TMDS); amdgpu_connector_set_property()
533 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); amdgpu_connector_set_property()
534 /* need to find digital encoder on connector */ amdgpu_connector_set_property()
535 encoder = amdgpu_connector_find_encoder(connector, DRM_MODE_ENCODER_TMDS); amdgpu_connector_set_property()
548 /* need to find digital encoder on connector */ amdgpu_connector_set_property()
549 encoder = amdgpu_connector_find_encoder(connector, DRM_MODE_ENCODER_TMDS); amdgpu_connector_set_property()
562 /* need to find digital encoder on connector */ amdgpu_connector_set_property()
563 encoder = amdgpu_connector_find_encoder(connector, DRM_MODE_ENCODER_TMDS); amdgpu_connector_set_property()
576 /* need to find digital encoder on connector */ amdgpu_connector_set_property()
577 encoder = amdgpu_connector_find_encoder(connector, DRM_MODE_ENCODER_TMDS); amdgpu_connector_set_property()
591 to_amdgpu_connector(connector); amdgpu_connector_set_property()
602 if (connector->encoder) { amdgpu_connector_set_property()
603 amdgpu_encoder = to_amdgpu_encoder(connector->encoder); amdgpu_connector_set_property()
605 const struct drm_connector_helper_funcs *connector_funcs = connector->helper_private; amdgpu_connector_set_property()
606 amdgpu_encoder = to_amdgpu_encoder(connector_funcs->best_encoder(connector)); amdgpu_connector_set_property()
633 struct drm_connector *connector) amdgpu_connector_fixup_lcd_native_mode()
640 list_for_each_entry_safe(mode, t, &connector->probed_modes, head) { amdgpu_connector_fixup_lcd_native_mode()
650 list_for_each_entry_safe(mode, t, &connector->probed_modes, head) { amdgpu_connector_fixup_lcd_native_mode()
667 static int amdgpu_connector_lvds_get_modes(struct drm_connector *connector) amdgpu_connector_lvds_get_modes() argument
673 amdgpu_connector_get_edid(connector); amdgpu_connector_lvds_get_modes()
674 ret = amdgpu_connector_ddc_get_modes(connector); amdgpu_connector_lvds_get_modes()
676 encoder = amdgpu_connector_best_single_encoder(connector); amdgpu_connector_lvds_get_modes()
678 amdgpu_connector_fixup_lcd_native_mode(encoder, connector); amdgpu_connector_lvds_get_modes()
680 amdgpu_connector_add_common_modes(encoder, connector); amdgpu_connector_lvds_get_modes()
685 encoder = amdgpu_connector_best_single_encoder(connector); amdgpu_connector_lvds_get_modes()
693 drm_mode_probed_add(connector, mode); amdgpu_connector_lvds_get_modes()
695 connector->display_info.width_mm = mode->width_mm; amdgpu_connector_lvds_get_modes()
696 connector->display_info.height_mm = mode->height_mm; amdgpu_connector_lvds_get_modes()
698 amdgpu_connector_add_common_modes(encoder, connector); amdgpu_connector_lvds_get_modes()
704 static int amdgpu_connector_lvds_mode_valid(struct drm_connector *connector, amdgpu_connector_lvds_mode_valid() argument
707 struct drm_encoder *encoder = amdgpu_connector_best_single_encoder(connector); amdgpu_connector_lvds_mode_valid()
735 amdgpu_connector_lvds_detect(struct drm_connector *connector, bool force) amdgpu_connector_lvds_detect() argument
737 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); amdgpu_connector_lvds_detect()
738 struct drm_encoder *encoder = amdgpu_connector_best_single_encoder(connector); amdgpu_connector_lvds_detect()
742 r = pm_runtime_get_sync(connector->dev->dev); amdgpu_connector_lvds_detect()
757 amdgpu_connector_get_edid(connector); amdgpu_connector_lvds_detect()
762 amdgpu_connector_update_scratch_regs(connector, ret); amdgpu_connector_lvds_detect()
763 pm_runtime_mark_last_busy(connector->dev->dev); amdgpu_connector_lvds_detect()
764 pm_runtime_put_autosuspend(connector->dev->dev); amdgpu_connector_lvds_detect()
768 static void amdgpu_connector_destroy(struct drm_connector *connector) amdgpu_connector_destroy() argument
770 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); amdgpu_connector_destroy()
774 amdgpu_connector_free_edid(connector); amdgpu_connector_destroy()
776 drm_connector_unregister(connector); amdgpu_connector_destroy()
777 drm_connector_cleanup(connector); amdgpu_connector_destroy()
778 kfree(connector); amdgpu_connector_destroy()
781 static int amdgpu_connector_set_lcd_property(struct drm_connector *connector, amdgpu_connector_set_lcd_property() argument
785 struct drm_device *dev = connector->dev; amdgpu_connector_set_lcd_property()
793 if (connector->encoder) amdgpu_connector_set_lcd_property()
794 amdgpu_encoder = to_amdgpu_encoder(connector->encoder); amdgpu_connector_set_lcd_property()
796 const struct drm_connector_helper_funcs *connector_funcs = connector->helper_private; amdgpu_connector_set_lcd_property()
797 amdgpu_encoder = to_amdgpu_encoder(connector_funcs->best_encoder(connector)); amdgpu_connector_set_lcd_property()
831 static int amdgpu_connector_vga_get_modes(struct drm_connector *connector) amdgpu_connector_vga_get_modes() argument
835 amdgpu_connector_get_edid(connector); amdgpu_connector_vga_get_modes()
836 ret = amdgpu_connector_ddc_get_modes(connector); amdgpu_connector_vga_get_modes()
841 static int amdgpu_connector_vga_mode_valid(struct drm_connector *connector, amdgpu_connector_vga_mode_valid() argument
844 struct drm_device *dev = connector->dev; amdgpu_connector_vga_mode_valid()
856 amdgpu_connector_vga_detect(struct drm_connector *connector, bool force) amdgpu_connector_vga_detect() argument
858 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); amdgpu_connector_vga_detect()
865 r = pm_runtime_get_sync(connector->dev->dev); amdgpu_connector_vga_detect()
869 encoder = amdgpu_connector_best_single_encoder(connector); amdgpu_connector_vga_detect()
877 amdgpu_connector_free_edid(connector); amdgpu_connector_vga_detect()
878 amdgpu_connector_get_edid(connector); amdgpu_connector_vga_detect()
882 connector->name); amdgpu_connector_vga_detect()
892 amdgpu_connector_free_edid(connector); amdgpu_connector_vga_detect()
906 ret = connector->status; amdgpu_connector_vga_detect()
912 ret = encoder_funcs->detect(encoder, connector); amdgpu_connector_vga_detect()
918 amdgpu_connector_update_scratch_regs(connector, ret); amdgpu_connector_vga_detect()
921 pm_runtime_mark_last_busy(connector->dev->dev); amdgpu_connector_vga_detect()
922 pm_runtime_put_autosuspend(connector->dev->dev); amdgpu_connector_vga_detect()
942 amdgpu_connector_check_hpd_status_unchanged(struct drm_connector *connector) amdgpu_connector_check_hpd_status_unchanged() argument
944 struct drm_device *dev = connector->dev; amdgpu_connector_check_hpd_status_unchanged()
946 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); amdgpu_connector_check_hpd_status_unchanged()
954 if (connector->status == status) amdgpu_connector_check_hpd_status_unchanged()
966 * we need to find the DAC encoder object for this connector.
970 * if its shared we have to set the other connector to disconnected.
973 amdgpu_connector_dvi_detect(struct drm_connector *connector, bool force) amdgpu_connector_dvi_detect() argument
975 struct drm_device *dev = connector->dev; amdgpu_connector_dvi_detect()
977 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); amdgpu_connector_dvi_detect()
984 r = pm_runtime_get_sync(connector->dev->dev); amdgpu_connector_dvi_detect()
988 if (!force && amdgpu_connector_check_hpd_status_unchanged(connector)) { amdgpu_connector_dvi_detect()
989 ret = connector->status; amdgpu_connector_dvi_detect()
997 amdgpu_connector_free_edid(connector); amdgpu_connector_dvi_detect()
998 amdgpu_connector_get_edid(connector); amdgpu_connector_dvi_detect()
1002 connector->name); amdgpu_connector_dvi_detect()
1013 amdgpu_connector_free_edid(connector); amdgpu_connector_dvi_detect()
1028 if (connector == list_connector) amdgpu_connector_dvi_detect()
1038 amdgpu_connector_free_edid(connector); amdgpu_connector_dvi_detect()
1052 if ((connector->connector_type == DRM_MODE_CONNECTOR_DVID) || amdgpu_connector_dvi_detect()
1053 (connector->connector_type == DRM_MODE_CONNECTOR_HDMIA)) amdgpu_connector_dvi_detect()
1062 ret = connector->status; amdgpu_connector_dvi_detect()
1069 if (connector->encoder_ids[i] == 0) amdgpu_connector_dvi_detect()
1072 encoder = drm_encoder_find(connector->dev, connector->encoder_ids[i]); amdgpu_connector_dvi_detect()
1085 ret = encoder_funcs->detect(encoder, connector); amdgpu_connector_dvi_detect()
1096 lret = encoder_funcs->detect(encoder, connector); amdgpu_connector_dvi_detect()
1108 amdgpu_connector_update_scratch_regs(connector, ret); amdgpu_connector_dvi_detect()
1111 pm_runtime_mark_last_busy(connector->dev->dev); amdgpu_connector_dvi_detect()
1112 pm_runtime_put_autosuspend(connector->dev->dev); amdgpu_connector_dvi_detect()
1119 amdgpu_connector_dvi_encoder(struct drm_connector *connector) amdgpu_connector_dvi_encoder() argument
1121 int enc_id = connector->encoder_ids[0]; amdgpu_connector_dvi_encoder()
1122 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); amdgpu_connector_dvi_encoder()
1126 if (connector->encoder_ids[i] == 0) amdgpu_connector_dvi_encoder()
1129 encoder = drm_encoder_find(connector->dev, connector->encoder_ids[i]); amdgpu_connector_dvi_encoder()
1148 return drm_encoder_find(connector->dev, enc_id); amdgpu_connector_dvi_encoder()
1152 static void amdgpu_connector_dvi_force(struct drm_connector *connector) amdgpu_connector_dvi_force() argument
1154 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); amdgpu_connector_dvi_force()
1155 if (connector->force == DRM_FORCE_ON) amdgpu_connector_dvi_force()
1157 if (connector->force == DRM_FORCE_ON_DIGITAL) amdgpu_connector_dvi_force()
1161 static int amdgpu_connector_dvi_mode_valid(struct drm_connector *connector, amdgpu_connector_dvi_mode_valid() argument
1164 struct drm_device *dev = connector->dev; amdgpu_connector_dvi_mode_valid()
1166 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); amdgpu_connector_dvi_mode_valid()
1175 } else if (drm_detect_hdmi_monitor(amdgpu_connector_edid(connector))) { amdgpu_connector_dvi_mode_valid()
1208 static int amdgpu_connector_dp_get_modes(struct drm_connector *connector) amdgpu_connector_dp_get_modes() argument
1210 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); amdgpu_connector_dp_get_modes()
1212 struct drm_encoder *encoder = amdgpu_connector_best_single_encoder(connector); amdgpu_connector_dp_get_modes()
1215 if ((connector->connector_type == DRM_MODE_CONNECTOR_eDP) || amdgpu_connector_dp_get_modes()
1216 (connector->connector_type == DRM_MODE_CONNECTOR_LVDS)) { amdgpu_connector_dp_get_modes()
1219 if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) { amdgpu_connector_dp_get_modes()
1221 amdgpu_atombios_encoder_set_edp_panel_power(connector, amdgpu_connector_dp_get_modes()
1223 amdgpu_connector_get_edid(connector); amdgpu_connector_dp_get_modes()
1224 ret = amdgpu_connector_ddc_get_modes(connector); amdgpu_connector_dp_get_modes()
1226 amdgpu_atombios_encoder_set_edp_panel_power(connector, amdgpu_connector_dp_get_modes()
1230 if (amdgpu_connector_encoder_get_dp_bridge_encoder_id(connector) != amdgpu_connector_dp_get_modes()
1235 amdgpu_connector_get_edid(connector); amdgpu_connector_dp_get_modes()
1236 ret = amdgpu_connector_ddc_get_modes(connector); amdgpu_connector_dp_get_modes()
1241 amdgpu_connector_fixup_lcd_native_mode(encoder, connector); amdgpu_connector_dp_get_modes()
1243 amdgpu_connector_add_common_modes(encoder, connector); amdgpu_connector_dp_get_modes()
1255 drm_mode_probed_add(connector, mode); amdgpu_connector_dp_get_modes()
1257 connector->display_info.width_mm = mode->width_mm; amdgpu_connector_dp_get_modes()
1258 connector->display_info.height_mm = mode->height_mm; amdgpu_connector_dp_get_modes()
1260 amdgpu_connector_add_common_modes(encoder, connector); amdgpu_connector_dp_get_modes()
1264 if (amdgpu_connector_encoder_get_dp_bridge_encoder_id(connector) != amdgpu_connector_dp_get_modes()
1269 amdgpu_connector_get_edid(connector); amdgpu_connector_dp_get_modes()
1270 ret = amdgpu_connector_ddc_get_modes(connector); amdgpu_connector_dp_get_modes()
1272 amdgpu_get_native_mode(connector); amdgpu_connector_dp_get_modes()
1278 u16 amdgpu_connector_encoder_get_dp_bridge_encoder_id(struct drm_connector *connector) amdgpu_connector_encoder_get_dp_bridge_encoder_id() argument
1285 if (connector->encoder_ids[i] == 0) amdgpu_connector_encoder_get_dp_bridge_encoder_id()
1288 encoder = drm_encoder_find(connector->dev, amdgpu_connector_encoder_get_dp_bridge_encoder_id()
1289 connector->encoder_ids[i]); amdgpu_connector_encoder_get_dp_bridge_encoder_id()
1307 static bool amdgpu_connector_encoder_is_hbr2(struct drm_connector *connector) amdgpu_connector_encoder_is_hbr2() argument
1315 if (connector->encoder_ids[i] == 0) amdgpu_connector_encoder_is_hbr2()
1317 encoder = drm_encoder_find(connector->dev, amdgpu_connector_encoder_is_hbr2()
1318 connector->encoder_ids[i]); amdgpu_connector_encoder_is_hbr2()
1330 bool amdgpu_connector_is_dp12_capable(struct drm_connector *connector) amdgpu_connector_is_dp12_capable() argument
1332 struct drm_device *dev = connector->dev; amdgpu_connector_is_dp12_capable()
1336 amdgpu_connector_encoder_is_hbr2(connector)) { amdgpu_connector_is_dp12_capable()
1344 amdgpu_connector_dp_detect(struct drm_connector *connector, bool force) amdgpu_connector_dp_detect() argument
1346 struct drm_device *dev = connector->dev; amdgpu_connector_dp_detect()
1348 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); amdgpu_connector_dp_detect()
1351 struct drm_encoder *encoder = amdgpu_connector_best_single_encoder(connector); amdgpu_connector_dp_detect()
1354 r = pm_runtime_get_sync(connector->dev->dev); amdgpu_connector_dp_detect()
1358 if (!force && amdgpu_connector_check_hpd_status_unchanged(connector)) { amdgpu_connector_dp_detect()
1359 ret = connector->status; amdgpu_connector_dp_detect()
1363 amdgpu_connector_free_edid(connector); amdgpu_connector_dp_detect()
1365 if ((connector->connector_type == DRM_MODE_CONNECTOR_eDP) || amdgpu_connector_dp_detect()
1366 (connector->connector_type == DRM_MODE_CONNECTOR_LVDS)) { amdgpu_connector_dp_detect()
1378 amdgpu_atombios_encoder_set_edp_panel_power(connector, amdgpu_connector_dp_detect()
1383 amdgpu_atombios_encoder_set_edp_panel_power(connector, amdgpu_connector_dp_detect()
1385 } else if (amdgpu_connector_encoder_get_dp_bridge_encoder_id(connector) != amdgpu_connector_dp_detect()
1400 ret = encoder_funcs->detect(encoder, connector); amdgpu_connector_dp_detect()
1422 amdgpu_connector_update_scratch_regs(connector, ret); amdgpu_connector_dp_detect()
1424 pm_runtime_mark_last_busy(connector->dev->dev); amdgpu_connector_dp_detect()
1425 pm_runtime_put_autosuspend(connector->dev->dev); amdgpu_connector_dp_detect()
1430 static int amdgpu_connector_dp_mode_valid(struct drm_connector *connector, amdgpu_connector_dp_mode_valid() argument
1433 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); amdgpu_connector_dp_mode_valid()
1438 if ((connector->connector_type == DRM_MODE_CONNECTOR_eDP) || amdgpu_connector_dp_mode_valid()
1439 (connector->connector_type == DRM_MODE_CONNECTOR_LVDS)) { amdgpu_connector_dp_mode_valid()
1440 struct drm_encoder *encoder = amdgpu_connector_best_single_encoder(connector); amdgpu_connector_dp_mode_valid()
1467 return amdgpu_atombios_dp_mode_valid_helper(connector, mode); amdgpu_connector_dp_mode_valid()
1469 if (drm_detect_hdmi_monitor(amdgpu_connector_edid(connector))) { amdgpu_connector_dp_mode_valid()
1518 struct drm_connector *connector; amdgpu_connector_add() local
1532 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { amdgpu_connector_add()
1533 amdgpu_connector = to_amdgpu_connector(connector); amdgpu_connector_add()
1570 connector = &amdgpu_connector->base; amdgpu_connector_add()
1605 connector->interlace_allowed = true; amdgpu_connector_add()
1606 connector->doublescan_allowed = true; amdgpu_connector_add()
1648 connector->interlace_allowed = true; amdgpu_connector_add()
1650 connector->doublescan_allowed = true; amdgpu_connector_add()
1652 connector->doublescan_allowed = false; amdgpu_connector_add()
1670 connector->interlace_allowed = false; amdgpu_connector_add()
1671 connector->doublescan_allowed = false; amdgpu_connector_add()
1693 connector->polled = DRM_CONNECTOR_POLL_CONNECT; amdgpu_connector_add()
1694 connector->interlace_allowed = true; amdgpu_connector_add()
1695 connector->doublescan_allowed = true; amdgpu_connector_add()
1714 connector->interlace_allowed = true; amdgpu_connector_add()
1715 connector->doublescan_allowed = true; amdgpu_connector_add()
1761 connector->interlace_allowed = true; amdgpu_connector_add()
1763 connector->doublescan_allowed = true; amdgpu_connector_add()
1765 connector->doublescan_allowed = false; amdgpu_connector_add()
1804 connector->interlace_allowed = true; amdgpu_connector_add()
1806 connector->doublescan_allowed = true; amdgpu_connector_add()
1808 connector->doublescan_allowed = false; amdgpu_connector_add()
1848 connector->interlace_allowed = true; amdgpu_connector_add()
1850 connector->doublescan_allowed = false; amdgpu_connector_add()
1870 connector->interlace_allowed = false; amdgpu_connector_add()
1871 connector->doublescan_allowed = false; amdgpu_connector_add()
1889 connector->interlace_allowed = false; amdgpu_connector_add()
1890 connector->doublescan_allowed = false; amdgpu_connector_add()
1897 connector->polled = DRM_CONNECTOR_POLL_CONNECT; amdgpu_connector_add()
1899 connector->polled = DRM_CONNECTOR_POLL_HPD; amdgpu_connector_add()
1901 connector->display_info.subpixel_order = subpixel_order; amdgpu_connector_add()
1902 drm_connector_register(connector); amdgpu_connector_add()
1910 drm_connector_cleanup(connector); amdgpu_connector_add()
1911 kfree(connector); amdgpu_connector_add()
434 amdgpu_connector_add_common_modes(struct drm_encoder *encoder, struct drm_connector *connector) amdgpu_connector_add_common_modes() argument
632 amdgpu_connector_fixup_lcd_native_mode(struct drm_encoder *encoder, struct drm_connector *connector) amdgpu_connector_fixup_lcd_native_mode() argument
H A Damdgpu_encoders.c38 struct drm_connector *connector; amdgpu_link_encoder_connector() local
44 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { amdgpu_link_encoder_connector()
45 amdgpu_connector = to_amdgpu_connector(connector); amdgpu_link_encoder_connector()
49 drm_mode_connector_attach_encoder(connector, encoder); amdgpu_link_encoder_connector()
51 amdgpu_atombios_encoder_init_backlight(amdgpu_encoder, connector); amdgpu_link_encoder_connector()
63 struct drm_connector *connector; amdgpu_encoder_set_active_device() local
65 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { amdgpu_encoder_set_active_device()
66 if (connector->encoder == encoder) { amdgpu_encoder_set_active_device()
67 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); amdgpu_encoder_set_active_device()
81 struct drm_connector *connector; amdgpu_get_connector_for_encoder() local
84 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { amdgpu_get_connector_for_encoder()
85 amdgpu_connector = to_amdgpu_connector(connector); amdgpu_get_connector_for_encoder()
87 return connector; amdgpu_get_connector_for_encoder()
97 struct drm_connector *connector; amdgpu_get_connector_for_encoder_init() local
100 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { amdgpu_get_connector_for_encoder_init()
101 amdgpu_connector = to_amdgpu_connector(connector); amdgpu_get_connector_for_encoder_init()
103 return connector; amdgpu_get_connector_for_encoder_init()
191 struct drm_connector *connector; amdgpu_dig_monitor_is_duallink() local
195 connector = amdgpu_get_connector_for_encoder(encoder); amdgpu_dig_monitor_is_duallink()
199 if (!connector) amdgpu_dig_monitor_is_duallink()
200 connector = amdgpu_get_connector_for_encoder_init(encoder); amdgpu_dig_monitor_is_duallink()
201 amdgpu_connector = to_amdgpu_connector(connector); amdgpu_dig_monitor_is_duallink()
203 switch (connector->connector_type) { amdgpu_dig_monitor_is_duallink()
208 if (drm_detect_hdmi_monitor(amdgpu_connector_edid(connector))) { amdgpu_dig_monitor_is_duallink()
230 if (drm_detect_hdmi_monitor(amdgpu_connector_edid(connector))) { amdgpu_dig_monitor_is_duallink()
H A Damdgpu_connectors.h27 struct edid *amdgpu_connector_edid(struct drm_connector *connector);
28 void amdgpu_connector_hotplug(struct drm_connector *connector);
29 int amdgpu_connector_get_monitor_bpc(struct drm_connector *connector);
30 u16 amdgpu_connector_encoder_get_dp_bridge_encoder_id(struct drm_connector *connector);
31 bool amdgpu_connector_is_dp12_capable(struct drm_connector *connector);
H A Datombios_dp.h31 struct drm_connector *connector);
32 void amdgpu_atombios_dp_set_link_config(struct drm_connector *connector,
34 int amdgpu_atombios_dp_mode_valid_helper(struct drm_connector *connector,
37 void amdgpu_atombios_dp_set_rx_power_state(struct drm_connector *connector,
40 struct drm_connector *connector);
H A Datombios_encoders.h48 amdgpu_atombios_encoder_set_edp_panel_power(struct drm_connector *connector,
58 struct drm_connector *connector);
61 struct drm_connector *connector);
65 amdgpu_atombios_encoder_set_bios_scratch_regs(struct drm_connector *connector,
H A Datombios_encoders.c292 /* set the active encoder to connector routing */ amdgpu_atombios_encoder_mode_fixup()
313 struct drm_connector *connector = amdgpu_get_connector_for_encoder(encoder); amdgpu_atombios_encoder_mode_fixup() local
314 amdgpu_atombios_dp_set_link_config(connector, adjusted_mode); amdgpu_atombios_encoder_mode_fixup()
449 struct drm_connector *connector; amdgpu_atombios_encoder_get_encoder_mode() local
462 connector = amdgpu_get_connector_for_encoder(encoder); amdgpu_atombios_encoder_get_encoder_mode()
466 if (!connector) amdgpu_atombios_encoder_get_encoder_mode()
467 connector = amdgpu_get_connector_for_encoder_init(encoder); amdgpu_atombios_encoder_get_encoder_mode()
468 amdgpu_connector = to_amdgpu_connector(connector); amdgpu_atombios_encoder_get_encoder_mode()
470 switch (connector->connector_type) { amdgpu_atombios_encoder_get_encoder_mode()
477 else if (drm_detect_hdmi_monitor(amdgpu_connector_edid(connector)) && amdgpu_atombios_encoder_get_encoder_mode()
496 else if (drm_detect_hdmi_monitor(amdgpu_connector_edid(connector)) && amdgpu_atombios_encoder_get_encoder_mode()
516 else if (drm_detect_hdmi_monitor(amdgpu_connector_edid(connector)) && amdgpu_atombios_encoder_get_encoder_mode()
580 struct drm_connector *connector = amdgpu_get_connector_for_encoder(encoder); amdgpu_atombios_encoder_setup_dig_encoder() local
588 if (connector) { amdgpu_atombios_encoder_setup_dig_encoder()
589 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); amdgpu_atombios_encoder_setup_dig_encoder()
727 struct drm_connector *connector; amdgpu_atombios_encoder_setup_dig_transmitter() local
741 connector = amdgpu_get_connector_for_encoder_init(encoder); amdgpu_atombios_encoder_setup_dig_transmitter()
747 connector = amdgpu_get_connector_for_encoder(encoder); amdgpu_atombios_encoder_setup_dig_transmitter()
749 if (connector) { amdgpu_atombios_encoder_setup_dig_transmitter()
750 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); amdgpu_atombios_encoder_setup_dig_transmitter()
1087 amdgpu_atombios_encoder_set_edp_panel_power(struct drm_connector *connector, amdgpu_atombios_encoder_set_edp_panel_power() argument
1090 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); amdgpu_atombios_encoder_set_edp_panel_power()
1097 if (connector->connector_type != DRM_MODE_CONNECTOR_eDP) amdgpu_atombios_encoder_set_edp_panel_power()
1143 struct drm_connector *connector; amdgpu_atombios_encoder_setup_external_encoder() local
1152 connector = amdgpu_get_connector_for_encoder_init(encoder); amdgpu_atombios_encoder_setup_external_encoder()
1154 connector = amdgpu_get_connector_for_encoder(encoder); amdgpu_atombios_encoder_setup_external_encoder()
1156 if (connector) { amdgpu_atombios_encoder_setup_external_encoder()
1157 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); amdgpu_atombios_encoder_setup_external_encoder()
1244 struct drm_connector *connector = amdgpu_get_connector_for_encoder(encoder); amdgpu_atombios_encoder_setup_dig() local
1248 if (connector) { amdgpu_atombios_encoder_setup_dig()
1249 amdgpu_connector = to_amdgpu_connector(connector); amdgpu_atombios_encoder_setup_dig()
1254 if (!connector) amdgpu_atombios_encoder_setup_dig()
1257 dig->panel_mode = amdgpu_atombios_dp_get_panel_mode(encoder, connector); amdgpu_atombios_encoder_setup_dig()
1268 connector) { amdgpu_atombios_encoder_setup_dig()
1269 if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) { amdgpu_atombios_encoder_setup_dig()
1270 amdgpu_atombios_encoder_set_edp_panel_power(connector, amdgpu_atombios_encoder_setup_dig()
1280 connector) { amdgpu_atombios_encoder_setup_dig()
1282 amdgpu_atombios_dp_link_train(encoder, connector); amdgpu_atombios_encoder_setup_dig()
1291 connector) amdgpu_atombios_encoder_setup_dig()
1301 connector) amdgpu_atombios_encoder_setup_dig()
1302 amdgpu_atombios_dp_set_rx_power_state(connector, DP_SET_POWER_D3); amdgpu_atombios_encoder_setup_dig()
1307 connector) { amdgpu_atombios_encoder_setup_dig()
1308 if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) { amdgpu_atombios_encoder_setup_dig()
1309 amdgpu_atombios_encoder_set_edp_panel_power(connector, amdgpu_atombios_encoder_setup_dig()
1439 struct drm_connector *connector = amdgpu_get_connector_for_encoder(encoder); amdgpu_atombios_encoder_set_crtc_source() local
1441 if (connector->connector_type == DRM_MODE_CONNECTOR_LVDS) amdgpu_atombios_encoder_set_crtc_source()
1443 else if (connector->connector_type == DRM_MODE_CONNECTOR_VGA) amdgpu_atombios_encoder_set_crtc_source()
1507 struct drm_connector *connector = amdgpu_get_connector_for_encoder(encoder); amdgpu_atombios_encoder_set_crtc_source() local
1509 if (connector->connector_type == DRM_MODE_CONNECTOR_LVDS) amdgpu_atombios_encoder_set_crtc_source()
1511 else if (connector->connector_type == DRM_MODE_CONNECTOR_VGA) amdgpu_atombios_encoder_set_crtc_source()
1612 struct drm_connector *connector) amdgpu_atombios_encoder_dac_load_detect()
1617 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); amdgpu_atombios_encoder_dac_load_detect()
1662 struct drm_connector *connector) amdgpu_atombios_encoder_dac_detect()
1667 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); amdgpu_atombios_encoder_dac_detect()
1670 if (!amdgpu_atombios_encoder_dac_load_detect(encoder, connector)) { amdgpu_atombios_encoder_dac_detect()
1701 struct drm_connector *connector) amdgpu_atombios_encoder_dig_detect()
1706 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); amdgpu_atombios_encoder_dig_detect()
1757 amdgpu_atombios_encoder_set_bios_scratch_regs(struct drm_connector *connector, amdgpu_atombios_encoder_set_bios_scratch_regs() argument
1761 struct drm_device *dev = connector->dev; amdgpu_atombios_encoder_set_bios_scratch_regs()
1764 to_amdgpu_connector(connector); amdgpu_atombios_encoder_set_bios_scratch_regs()
1611 amdgpu_atombios_encoder_dac_load_detect(struct drm_encoder *encoder, struct drm_connector *connector) amdgpu_atombios_encoder_dac_load_detect() argument
1661 amdgpu_atombios_encoder_dac_detect(struct drm_encoder *encoder, struct drm_connector *connector) amdgpu_atombios_encoder_dac_detect() argument
1700 amdgpu_atombios_encoder_dig_detect(struct drm_encoder *encoder, struct drm_connector *connector) amdgpu_atombios_encoder_dig_detect() argument
H A Datombios_dp.c268 static int amdgpu_atombios_dp_get_dp_lane_number(struct drm_connector *connector, amdgpu_atombios_dp_get_dp_lane_number() argument
272 int bpp = amdgpu_atombios_dp_convert_bpc_to_bpp(amdgpu_connector_get_monitor_bpc(connector)); amdgpu_atombios_dp_get_dp_lane_number()
287 static int amdgpu_atombios_dp_get_dp_link_clock(struct drm_connector *connector, amdgpu_atombios_dp_get_dp_link_clock() argument
291 int bpp = amdgpu_atombios_dp_convert_bpc_to_bpp(amdgpu_connector_get_monitor_bpc(connector)); amdgpu_atombios_dp_get_dp_link_clock()
294 if (amdgpu_connector_encoder_get_dp_bridge_encoder_id(connector) == amdgpu_atombios_dp_get_dp_link_clock()
298 lane_num = amdgpu_atombios_dp_get_dp_lane_number(connector, dpcd, pix_clock); amdgpu_atombios_dp_get_dp_link_clock()
305 if (amdgpu_connector_is_dp12_capable(connector)) { amdgpu_atombios_dp_get_dp_link_clock()
383 struct drm_connector *connector) amdgpu_atombios_dp_get_panel_mode()
385 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); amdgpu_atombios_dp_get_panel_mode()
388 u16 dp_bridge = amdgpu_connector_encoder_get_dp_bridge_encoder_id(connector); amdgpu_atombios_dp_get_panel_mode()
408 } else if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) { amdgpu_atombios_dp_get_panel_mode()
420 void amdgpu_atombios_dp_set_link_config(struct drm_connector *connector, amdgpu_atombios_dp_set_link_config() argument
423 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); amdgpu_atombios_dp_set_link_config()
433 amdgpu_atombios_dp_get_dp_link_clock(connector, dig_connector->dpcd, mode->clock); amdgpu_atombios_dp_set_link_config()
435 amdgpu_atombios_dp_get_dp_lane_number(connector, dig_connector->dpcd, mode->clock); amdgpu_atombios_dp_set_link_config()
439 int amdgpu_atombios_dp_mode_valid_helper(struct drm_connector *connector, amdgpu_atombios_dp_mode_valid_helper() argument
442 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); amdgpu_atombios_dp_mode_valid_helper()
451 amdgpu_atombios_dp_get_dp_link_clock(connector, dig_connector->dpcd, mode->clock); amdgpu_atombios_dp_mode_valid_helper()
454 (!amdgpu_connector_is_dp12_capable(connector))) amdgpu_atombios_dp_mode_valid_helper()
473 void amdgpu_atombios_dp_set_rx_power_state(struct drm_connector *connector, amdgpu_atombios_dp_set_rx_power_state() argument
476 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); amdgpu_atombios_dp_set_rx_power_state()
495 struct drm_connector *connector; member in struct:amdgpu_atombios_dp_link_train_info
550 amdgpu_atombios_dp_set_rx_power_state(dp_info->connector, DP_SET_POWER_D0); amdgpu_atombios_dp_link_train_init()
725 struct drm_connector *connector) amdgpu_atombios_dp_link_train()
740 amdgpu_connector = to_amdgpu_connector(connector); amdgpu_atombios_dp_link_train()
762 dp_info.connector = connector; amdgpu_atombios_dp_link_train()
382 amdgpu_atombios_dp_get_panel_mode(struct drm_encoder *encoder, struct drm_connector *connector) amdgpu_atombios_dp_get_panel_mode() argument
724 amdgpu_atombios_dp_link_train(struct drm_encoder *encoder, struct drm_connector *connector) amdgpu_atombios_dp_link_train() argument
H A Ddce_v8_0.c387 struct drm_connector *connector; dce_v8_0_hpd_init() local
392 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { dce_v8_0_hpd_init()
393 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); dce_v8_0_hpd_init()
395 if (connector->connector_type == DRM_MODE_CONNECTOR_eDP || dce_v8_0_hpd_init()
396 connector->connector_type == DRM_MODE_CONNECTOR_LVDS) { dce_v8_0_hpd_init()
442 struct drm_connector *connector; dce_v8_0_hpd_fini() local
444 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { dce_v8_0_hpd_fini()
445 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); dce_v8_0_hpd_fini()
663 struct drm_connector *connector = amdgpu_get_connector_for_encoder(encoder); dce_v8_0_program_fmt() local
668 if (connector) { dce_v8_0_program_fmt()
669 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); dce_v8_0_program_fmt()
670 bpc = amdgpu_connector_get_monitor_bpc(connector); dce_v8_0_program_fmt()
1392 struct drm_connector *connector; dce_v8_0_audio_write_latency_fields() local
1401 list_for_each_entry(connector, &encoder->dev->mode_config.connector_list, head) { dce_v8_0_audio_write_latency_fields()
1402 if (connector->encoder == encoder) { dce_v8_0_audio_write_latency_fields()
1403 amdgpu_connector = to_amdgpu_connector(connector); dce_v8_0_audio_write_latency_fields()
1409 DRM_ERROR("Couldn't find encoder's connector\n"); dce_v8_0_audio_write_latency_fields()
1414 if (connector->latency_present[1]) dce_v8_0_audio_write_latency_fields()
1416 (connector->video_latency[1] << dce_v8_0_audio_write_latency_fields()
1418 (connector->audio_latency[1] << dce_v8_0_audio_write_latency_fields()
1427 if (connector->latency_present[0]) dce_v8_0_audio_write_latency_fields()
1429 (connector->video_latency[0] << dce_v8_0_audio_write_latency_fields()
1431 (connector->audio_latency[0] << dce_v8_0_audio_write_latency_fields()
1449 struct drm_connector *connector; dce_v8_0_audio_write_speaker_allocation() local
1460 list_for_each_entry(connector, &encoder->dev->mode_config.connector_list, head) { dce_v8_0_audio_write_speaker_allocation()
1461 if (connector->encoder == encoder) { dce_v8_0_audio_write_speaker_allocation()
1462 amdgpu_connector = to_amdgpu_connector(connector); dce_v8_0_audio_write_speaker_allocation()
1468 DRM_ERROR("Couldn't find encoder's connector\n"); dce_v8_0_audio_write_speaker_allocation()
1472 sad_count = drm_edid_to_speaker_allocation(amdgpu_connector_edid(connector), &sadb); dce_v8_0_audio_write_speaker_allocation()
1499 struct drm_connector *connector; dce_v8_0_audio_write_sad_regs() local
1524 list_for_each_entry(connector, &encoder->dev->mode_config.connector_list, head) { dce_v8_0_audio_write_sad_regs()
1525 if (connector->encoder == encoder) { dce_v8_0_audio_write_sad_regs()
1526 amdgpu_connector = to_amdgpu_connector(connector); dce_v8_0_audio_write_sad_regs()
1532 DRM_ERROR("Couldn't find encoder's connector\n"); dce_v8_0_audio_write_sad_regs()
1536 sad_count = drm_edid_to_sad(amdgpu_connector_edid(connector), &sads); dce_v8_0_audio_write_sad_regs()
1730 struct drm_connector *connector = amdgpu_get_connector_for_encoder(encoder); dce_v8_0_afmt_setmode() local
1773 connector->name, bpc); dce_v8_0_afmt_setmode()
1779 connector->name); dce_v8_0_afmt_setmode()
1785 connector->name); dce_v8_0_afmt_setmode()
2713 amdgpu_crtc->connector = NULL; dce_v8_0_crtc_disable()
2750 amdgpu_crtc->connector = amdgpu_get_connector_for_encoder(encoder); dce_v8_0_crtc_mode_fixup()
2754 if ((amdgpu_crtc->encoder == NULL) || (amdgpu_crtc->connector == NULL)) { dce_v8_0_crtc_mode_fixup()
2756 amdgpu_crtc->connector = NULL; dce_v8_0_crtc_mode_fixup()
2831 amdgpu_crtc->connector = NULL; dce_v8_0_crtc_init()
3466 struct drm_connector *connector = amdgpu_get_connector_for_encoder(encoder); dce_v8_0_encoder_prepare() local
3482 if (connector) { dce_v8_0_encoder_prepare()
3483 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); dce_v8_0_encoder_prepare()
3490 if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) dce_v8_0_encoder_prepare()
3491 amdgpu_atombios_encoder_set_edp_panel_power(connector, dce_v8_0_encoder_prepare()
H A Ddce_v10_0.c415 struct drm_connector *connector; dce_v10_0_hpd_init() local
419 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { dce_v10_0_hpd_init()
420 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); dce_v10_0_hpd_init()
422 if (connector->connector_type == DRM_MODE_CONNECTOR_eDP || dce_v10_0_hpd_init()
423 connector->connector_type == DRM_MODE_CONNECTOR_LVDS) { dce_v10_0_hpd_init()
485 struct drm_connector *connector; dce_v10_0_hpd_fini() local
489 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { dce_v10_0_hpd_fini()
490 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); dce_v10_0_hpd_fini()
715 struct drm_connector *connector = amdgpu_get_connector_for_encoder(encoder); dce_v10_0_program_fmt() local
720 if (connector) { dce_v10_0_program_fmt()
721 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); dce_v10_0_program_fmt()
722 bpc = amdgpu_connector_get_monitor_bpc(connector); dce_v10_0_program_fmt()
1446 struct drm_connector *connector; dce_v10_0_audio_write_latency_fields() local
1454 list_for_each_entry(connector, &encoder->dev->mode_config.connector_list, head) { dce_v10_0_audio_write_latency_fields()
1455 if (connector->encoder == encoder) { dce_v10_0_audio_write_latency_fields()
1456 amdgpu_connector = to_amdgpu_connector(connector); dce_v10_0_audio_write_latency_fields()
1462 DRM_ERROR("Couldn't find encoder's connector\n"); dce_v10_0_audio_write_latency_fields()
1468 if (connector->latency_present[interlace]) { dce_v10_0_audio_write_latency_fields()
1470 VIDEO_LIPSYNC, connector->video_latency[interlace]); dce_v10_0_audio_write_latency_fields()
1472 AUDIO_LIPSYNC, connector->audio_latency[interlace]); dce_v10_0_audio_write_latency_fields()
1488 struct drm_connector *connector; dce_v10_0_audio_write_speaker_allocation() local
1497 list_for_each_entry(connector, &encoder->dev->mode_config.connector_list, head) { dce_v10_0_audio_write_speaker_allocation()
1498 if (connector->encoder == encoder) { dce_v10_0_audio_write_speaker_allocation()
1499 amdgpu_connector = to_amdgpu_connector(connector); dce_v10_0_audio_write_speaker_allocation()
1505 DRM_ERROR("Couldn't find encoder's connector\n"); dce_v10_0_audio_write_speaker_allocation()
1509 sad_count = drm_edid_to_speaker_allocation(amdgpu_connector_edid(connector), &sadb); dce_v10_0_audio_write_speaker_allocation()
1540 struct drm_connector *connector; dce_v10_0_audio_write_sad_regs() local
1563 list_for_each_entry(connector, &encoder->dev->mode_config.connector_list, head) { dce_v10_0_audio_write_sad_regs()
1564 if (connector->encoder == encoder) { dce_v10_0_audio_write_sad_regs()
1565 amdgpu_connector = to_amdgpu_connector(connector); dce_v10_0_audio_write_sad_regs()
1571 DRM_ERROR("Couldn't find encoder's connector\n"); dce_v10_0_audio_write_sad_regs()
1575 sad_count = drm_edid_to_sad(amdgpu_connector_edid(connector), &sads); dce_v10_0_audio_write_sad_regs()
1775 struct drm_connector *connector = amdgpu_get_connector_for_encoder(encoder); dce_v10_0_afmt_setmode() local
1817 connector->name, bpc); dce_v10_0_afmt_setmode()
1823 connector->name); dce_v10_0_afmt_setmode()
1829 connector->name); dce_v10_0_afmt_setmode()
2794 amdgpu_crtc->connector = NULL; dce_v10_0_crtc_disable()
2831 amdgpu_crtc->connector = amdgpu_get_connector_for_encoder(encoder); dce_v10_0_crtc_mode_fixup()
2835 if ((amdgpu_crtc->encoder == NULL) || (amdgpu_crtc->connector == NULL)) { dce_v10_0_crtc_mode_fixup()
2837 amdgpu_crtc->connector = NULL; dce_v10_0_crtc_mode_fixup()
2932 amdgpu_crtc->connector = NULL; dce_v10_0_crtc_init()
3536 struct drm_connector *connector = amdgpu_get_connector_for_encoder(encoder); dce_v10_0_encoder_prepare() local
3552 if (connector) { dce_v10_0_encoder_prepare()
3553 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); dce_v10_0_encoder_prepare()
3560 if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) dce_v10_0_encoder_prepare()
3561 amdgpu_atombios_encoder_set_edp_panel_power(connector, dce_v10_0_encoder_prepare()
H A Ddce_v11_0.c405 struct drm_connector *connector; dce_v11_0_hpd_init() local
409 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { dce_v11_0_hpd_init()
410 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); dce_v11_0_hpd_init()
412 if (connector->connector_type == DRM_MODE_CONNECTOR_eDP || dce_v11_0_hpd_init()
413 connector->connector_type == DRM_MODE_CONNECTOR_LVDS) { dce_v11_0_hpd_init()
474 struct drm_connector *connector; dce_v11_0_hpd_fini() local
478 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { dce_v11_0_hpd_fini()
479 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); dce_v11_0_hpd_fini()
703 struct drm_connector *connector = amdgpu_get_connector_for_encoder(encoder); dce_v11_0_program_fmt() local
708 if (connector) { dce_v11_0_program_fmt()
709 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); dce_v11_0_program_fmt()
710 bpc = amdgpu_connector_get_monitor_bpc(connector); dce_v11_0_program_fmt()
1434 struct drm_connector *connector; dce_v11_0_audio_write_latency_fields() local
1442 list_for_each_entry(connector, &encoder->dev->mode_config.connector_list, head) { dce_v11_0_audio_write_latency_fields()
1443 if (connector->encoder == encoder) { dce_v11_0_audio_write_latency_fields()
1444 amdgpu_connector = to_amdgpu_connector(connector); dce_v11_0_audio_write_latency_fields()
1450 DRM_ERROR("Couldn't find encoder's connector\n"); dce_v11_0_audio_write_latency_fields()
1456 if (connector->latency_present[interlace]) { dce_v11_0_audio_write_latency_fields()
1458 VIDEO_LIPSYNC, connector->video_latency[interlace]); dce_v11_0_audio_write_latency_fields()
1460 AUDIO_LIPSYNC, connector->audio_latency[interlace]); dce_v11_0_audio_write_latency_fields()
1476 struct drm_connector *connector; dce_v11_0_audio_write_speaker_allocation() local
1485 list_for_each_entry(connector, &encoder->dev->mode_config.connector_list, head) { dce_v11_0_audio_write_speaker_allocation()
1486 if (connector->encoder == encoder) { dce_v11_0_audio_write_speaker_allocation()
1487 amdgpu_connector = to_amdgpu_connector(connector); dce_v11_0_audio_write_speaker_allocation()
1493 DRM_ERROR("Couldn't find encoder's connector\n"); dce_v11_0_audio_write_speaker_allocation()
1497 sad_count = drm_edid_to_speaker_allocation(amdgpu_connector_edid(connector), &sadb); dce_v11_0_audio_write_speaker_allocation()
1528 struct drm_connector *connector; dce_v11_0_audio_write_sad_regs() local
1551 list_for_each_entry(connector, &encoder->dev->mode_config.connector_list, head) { dce_v11_0_audio_write_sad_regs()
1552 if (connector->encoder == encoder) { dce_v11_0_audio_write_sad_regs()
1553 amdgpu_connector = to_amdgpu_connector(connector); dce_v11_0_audio_write_sad_regs()
1559 DRM_ERROR("Couldn't find encoder's connector\n"); dce_v11_0_audio_write_sad_regs()
1563 sad_count = drm_edid_to_sad(amdgpu_connector_edid(connector), &sads); dce_v11_0_audio_write_sad_regs()
1763 struct drm_connector *connector = amdgpu_get_connector_for_encoder(encoder); dce_v11_0_afmt_setmode() local
1805 connector->name, bpc); dce_v11_0_afmt_setmode()
1811 connector->name); dce_v11_0_afmt_setmode()
1817 connector->name); dce_v11_0_afmt_setmode()
2783 amdgpu_crtc->connector = NULL; dce_v11_0_crtc_disable()
2820 amdgpu_crtc->connector = amdgpu_get_connector_for_encoder(encoder); dce_v11_0_crtc_mode_fixup()
2824 if ((amdgpu_crtc->encoder == NULL) || (amdgpu_crtc->connector == NULL)) { dce_v11_0_crtc_mode_fixup()
2826 amdgpu_crtc->connector = NULL; dce_v11_0_crtc_mode_fixup()
2921 amdgpu_crtc->connector = NULL; dce_v11_0_crtc_init()
3529 struct drm_connector *connector = amdgpu_get_connector_for_encoder(encoder); dce_v11_0_encoder_prepare() local
3545 if (connector) { dce_v11_0_encoder_prepare()
3546 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); dce_v11_0_encoder_prepare()
3553 if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) dce_v11_0_encoder_prepare()
3554 amdgpu_atombios_encoder_set_edp_panel_power(connector, dce_v11_0_encoder_prepare()
H A Damdgpu_display.c380 struct drm_connector *connector; amdgpu_print_display_setup() local
388 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { amdgpu_print_display_setup()
389 amdgpu_connector = to_amdgpu_connector(connector); amdgpu_print_display_setup()
391 DRM_INFO(" %s\n", connector->name); amdgpu_print_display_setup()
413 if (connector->connector_type == DRM_MODE_CONNECTOR_VGA || amdgpu_print_display_setup()
414 connector->connector_type == DRM_MODE_CONNECTOR_DVII || amdgpu_print_display_setup()
415 connector->connector_type == DRM_MODE_CONNECTOR_DVID || amdgpu_print_display_setup()
416 connector->connector_type == DRM_MODE_CONNECTOR_DVIA || amdgpu_print_display_setup()
417 connector->connector_type == DRM_MODE_CONNECTOR_HDMIA || amdgpu_print_display_setup()
418 connector->connector_type == DRM_MODE_CONNECTOR_HDMIB) amdgpu_print_display_setup()
490 /* Couldn't find an accessible DDC on this connector */ amdgpu_ddc_probe()
499 * connector */ amdgpu_ddc_probe()
689 struct drm_connector *connector; amdgpu_crtc_scaling_mode_fixup() local
701 connector = amdgpu_get_connector_for_encoder(encoder); amdgpu_crtc_scaling_mode_fixup()
702 amdgpu_connector = to_amdgpu_connector(connector); amdgpu_crtc_scaling_mode_fixup()
725 drm_detect_hdmi_monitor(amdgpu_connector_edid(connector)) && amdgpu_crtc_scaling_mode_fixup()
/linux-4.4.14/drivers/gpu/drm/radeon/
H A Dradeon_connectors.c38 static int radeon_dp_handle_hpd(struct drm_connector *connector) radeon_dp_handle_hpd() argument
40 struct radeon_connector *radeon_connector = to_radeon_connector(connector); radeon_dp_handle_hpd()
48 void radeon_connector_hotplug(struct drm_connector *connector) radeon_connector_hotplug() argument
50 struct drm_device *dev = connector->dev; radeon_connector_hotplug()
52 struct radeon_connector *radeon_connector = to_radeon_connector(connector); radeon_connector_hotplug()
54 if (connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort) { radeon_connector_hotplug()
61 radeon_dp_handle_hpd(connector); radeon_connector_hotplug()
65 /* bail if the connector does not have hpd pin, e.g., radeon_connector_hotplug()
73 /* if the connector is already off, don't turn it back on */ radeon_connector_hotplug()
75 if (connector->dpms != DRM_MODE_DPMS_ON) radeon_connector_hotplug()
79 if (connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort) { radeon_connector_hotplug()
93 int saved_dpms = connector->dpms; radeon_connector_hotplug()
96 drm_helper_connector_dpms(connector, DRM_MODE_DPMS_OFF); radeon_connector_hotplug()
107 connector->dpms = DRM_MODE_DPMS_OFF; radeon_connector_hotplug()
108 drm_helper_connector_dpms(connector, DRM_MODE_DPMS_ON); radeon_connector_hotplug()
110 connector->dpms = saved_dpms; radeon_connector_hotplug()
125 int radeon_get_monitor_bpc(struct drm_connector *connector) radeon_get_monitor_bpc() argument
127 struct drm_device *dev = connector->dev; radeon_get_monitor_bpc()
129 struct radeon_connector *radeon_connector = to_radeon_connector(connector); radeon_get_monitor_bpc()
134 switch (connector->connector_type) { radeon_get_monitor_bpc()
138 if (drm_detect_hdmi_monitor(radeon_connector_edid(connector))) { radeon_get_monitor_bpc()
139 if (connector->display_info.bpc) radeon_get_monitor_bpc()
140 bpc = connector->display_info.bpc; radeon_get_monitor_bpc()
146 if (drm_detect_hdmi_monitor(radeon_connector_edid(connector))) { radeon_get_monitor_bpc()
147 if (connector->display_info.bpc) radeon_get_monitor_bpc()
148 bpc = connector->display_info.bpc; radeon_get_monitor_bpc()
155 drm_detect_hdmi_monitor(radeon_connector_edid(connector))) { radeon_get_monitor_bpc()
156 if (connector->display_info.bpc) radeon_get_monitor_bpc()
157 bpc = connector->display_info.bpc; radeon_get_monitor_bpc()
162 if (connector->display_info.bpc) radeon_get_monitor_bpc()
163 bpc = connector->display_info.bpc; radeon_get_monitor_bpc()
166 connector->helper_private; radeon_get_monitor_bpc()
167 struct drm_encoder *encoder = connector_funcs->best_encoder(connector); radeon_get_monitor_bpc()
179 if (drm_detect_hdmi_monitor(radeon_connector_edid(connector))) { radeon_get_monitor_bpc()
183 connector->name, bpc); radeon_get_monitor_bpc()
195 connector->name, bpc); radeon_get_monitor_bpc()
200 if (connector->max_tmds_clock > 0) { radeon_get_monitor_bpc()
201 /* mode_clock is clock in kHz for mode to be modeset on this connector */ radeon_get_monitor_bpc()
205 max_tmds_clock = connector->max_tmds_clock * 1000; radeon_get_monitor_bpc()
208 connector->name, mode_clock, max_tmds_clock); radeon_get_monitor_bpc()
212 if ((connector->display_info.edid_hdmi_dc_modes & DRM_EDID_HDMI_DC_30) && radeon_get_monitor_bpc()
219 connector->name, bpc); radeon_get_monitor_bpc()
225 connector->name, bpc); radeon_get_monitor_bpc()
231 connector->name); radeon_get_monitor_bpc()
238 connector->name); radeon_get_monitor_bpc()
243 connector->name, connector->display_info.bpc, bpc); radeon_get_monitor_bpc()
249 radeon_connector_update_scratch_regs(struct drm_connector *connector, enum drm_connector_status status) radeon_connector_update_scratch_regs() argument
251 struct drm_device *dev = connector->dev; radeon_connector_update_scratch_regs()
255 const struct drm_connector_helper_funcs *connector_funcs = connector->helper_private; radeon_connector_update_scratch_regs()
259 best_encoder = connector_funcs->best_encoder(connector); radeon_connector_update_scratch_regs()
262 if (connector->encoder_ids[i] == 0) radeon_connector_update_scratch_regs()
265 encoder = drm_encoder_find(connector->dev, radeon_connector_update_scratch_regs()
266 connector->encoder_ids[i]); radeon_connector_update_scratch_regs()
276 radeon_atombios_connected_scratch_regs(connector, encoder, connected); radeon_connector_update_scratch_regs()
278 radeon_combios_connected_scratch_regs(connector, encoder, connected); radeon_connector_update_scratch_regs()
283 static struct drm_encoder *radeon_find_encoder(struct drm_connector *connector, int encoder_type) radeon_find_encoder() argument
289 if (connector->encoder_ids[i] == 0) radeon_find_encoder()
292 encoder = drm_encoder_find(connector->dev, connector->encoder_ids[i]); radeon_find_encoder()
302 struct edid *radeon_connector_edid(struct drm_connector *connector) radeon_connector_edid() argument
304 struct radeon_connector *radeon_connector = to_radeon_connector(connector); radeon_connector_edid()
305 struct drm_property_blob *edid_blob = connector->edid_blob_ptr; radeon_connector_edid()
317 static void radeon_connector_get_edid(struct drm_connector *connector) radeon_connector_get_edid() argument
319 struct drm_device *dev = connector->dev; radeon_connector_get_edid()
321 struct radeon_connector *radeon_connector = to_radeon_connector(connector); radeon_connector_get_edid()
330 if ((radeon_connector_encoder_get_dp_bridge_encoder_id(connector) != radeon_connector_get_edid()
333 radeon_connector->edid = drm_get_edid(connector, radeon_connector_get_edid()
335 } else if ((connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort) || radeon_connector_get_edid()
336 (connector->connector_type == DRM_MODE_CONNECTOR_eDP)) { radeon_connector_get_edid()
361 if (((connector->connector_type == DRM_MODE_CONNECTOR_LVDS) || radeon_connector_get_edid()
362 (connector->connector_type == DRM_MODE_CONNECTOR_eDP))) radeon_connector_get_edid()
371 static void radeon_connector_free_edid(struct drm_connector *connector) radeon_connector_free_edid() argument
373 struct radeon_connector *radeon_connector = to_radeon_connector(connector); radeon_connector_free_edid()
381 static int radeon_ddc_get_modes(struct drm_connector *connector) radeon_ddc_get_modes() argument
383 struct radeon_connector *radeon_connector = to_radeon_connector(connector); radeon_ddc_get_modes()
387 drm_mode_connector_update_edid_property(connector, radeon_connector->edid); radeon_ddc_get_modes()
388 ret = drm_add_edid_modes(connector, radeon_connector->edid); radeon_ddc_get_modes()
389 drm_edid_to_eld(connector, radeon_connector->edid); radeon_ddc_get_modes()
392 drm_mode_connector_update_edid_property(connector, NULL); radeon_ddc_get_modes()
396 static struct drm_encoder *radeon_best_single_encoder(struct drm_connector *connector) radeon_best_single_encoder() argument
398 int enc_id = connector->encoder_ids[0]; radeon_best_single_encoder()
401 return drm_encoder_find(connector->dev, enc_id); radeon_best_single_encoder()
405 static void radeon_get_native_mode(struct drm_connector *connector) radeon_get_native_mode() argument
407 struct drm_encoder *encoder = radeon_best_single_encoder(connector); radeon_get_native_mode()
415 if (!list_empty(&connector->probed_modes)) { radeon_get_native_mode()
417 list_first_entry(&connector->probed_modes, radeon_get_native_mode()
433 radeon_connector_analog_encoder_conflict_solve(struct drm_connector *connector, radeon_connector_analog_encoder_conflict_solve() argument
438 struct drm_device *dev = connector->dev; radeon_connector_analog_encoder_conflict_solve()
444 if (conflict == connector) radeon_connector_analog_encoder_conflict_solve()
464 connector->name); radeon_connector_analog_encoder_conflict_solve()
469 connector->name); radeon_connector_analog_encoder_conflict_solve()
513 static void radeon_add_common_modes(struct drm_encoder *encoder, struct drm_connector *connector) radeon_add_common_modes() argument
560 drm_mode_probed_add(connector, mode); radeon_add_common_modes()
564 static int radeon_connector_set_property(struct drm_connector *connector, struct drm_property *property, radeon_connector_set_property() argument
567 struct drm_device *dev = connector->dev; radeon_connector_set_property()
576 /* need to find digital encoder on connector */ radeon_connector_set_property()
577 encoder = radeon_find_encoder(connector, DRM_MODE_ENCODER_TMDS); radeon_connector_set_property()
595 struct radeon_connector *radeon_connector = to_radeon_connector(connector); radeon_connector_set_property()
596 /* need to find digital encoder on connector */ radeon_connector_set_property()
597 encoder = radeon_find_encoder(connector, DRM_MODE_ENCODER_TMDS); radeon_connector_set_property()
610 struct radeon_connector *radeon_connector = to_radeon_connector(connector); radeon_connector_set_property()
611 /* need to find digital encoder on connector */ radeon_connector_set_property()
612 encoder = radeon_find_encoder(connector, DRM_MODE_ENCODER_TMDS); radeon_connector_set_property()
625 /* need to find digital encoder on connector */ radeon_connector_set_property()
626 encoder = radeon_find_encoder(connector, DRM_MODE_ENCODER_TMDS); radeon_connector_set_property()
639 /* need to find digital encoder on connector */ radeon_connector_set_property()
640 encoder = radeon_find_encoder(connector, DRM_MODE_ENCODER_TMDS); radeon_connector_set_property()
653 /* need to find digital encoder on connector */ radeon_connector_set_property()
654 encoder = radeon_find_encoder(connector, DRM_MODE_ENCODER_TMDS); radeon_connector_set_property()
667 encoder = radeon_find_encoder(connector, DRM_MODE_ENCODER_TVDAC); radeon_connector_set_property()
669 encoder = radeon_find_encoder(connector, DRM_MODE_ENCODER_DAC); radeon_connector_set_property()
692 to_radeon_connector(connector); radeon_connector_set_property()
703 /* need to find digital encoder on connector */ radeon_connector_set_property()
704 encoder = radeon_find_encoder(connector, DRM_MODE_ENCODER_TMDS); radeon_connector_set_property()
729 if (connector->encoder) radeon_connector_set_property()
730 radeon_encoder = to_radeon_encoder(connector->encoder); radeon_connector_set_property()
732 const struct drm_connector_helper_funcs *connector_funcs = connector->helper_private; radeon_connector_set_property()
733 radeon_encoder = to_radeon_encoder(connector_funcs->best_encoder(connector)); radeon_connector_set_property()
756 if (connector->encoder) radeon_connector_set_property()
757 radeon_encoder = to_radeon_encoder(connector->encoder); radeon_connector_set_property()
759 const struct drm_connector_helper_funcs *connector_funcs = connector->helper_private; radeon_connector_set_property()
760 radeon_encoder = to_radeon_encoder(connector_funcs->best_encoder(connector)); radeon_connector_set_property()
768 if (connector->encoder->crtc) { radeon_connector_set_property()
769 struct drm_crtc *crtc = connector->encoder->crtc; radeon_connector_set_property()
783 struct drm_connector *connector) radeon_fixup_lvds_native_mode()
790 list_for_each_entry_safe(mode, t, &connector->probed_modes, head) { radeon_fixup_lvds_native_mode()
800 list_for_each_entry_safe(mode, t, &connector->probed_modes, head) { radeon_fixup_lvds_native_mode()
817 static int radeon_lvds_get_modes(struct drm_connector *connector) radeon_lvds_get_modes() argument
823 radeon_connector_get_edid(connector); radeon_lvds_get_modes()
824 ret = radeon_ddc_get_modes(connector); radeon_lvds_get_modes()
826 encoder = radeon_best_single_encoder(connector); radeon_lvds_get_modes()
828 radeon_fixup_lvds_native_mode(encoder, connector); radeon_lvds_get_modes()
830 radeon_add_common_modes(encoder, connector); radeon_lvds_get_modes()
835 encoder = radeon_best_single_encoder(connector); radeon_lvds_get_modes()
843 drm_mode_probed_add(connector, mode); radeon_lvds_get_modes()
845 connector->display_info.width_mm = mode->width_mm; radeon_lvds_get_modes()
846 connector->display_info.height_mm = mode->height_mm; radeon_lvds_get_modes()
848 radeon_add_common_modes(encoder, connector); radeon_lvds_get_modes()
854 static int radeon_lvds_mode_valid(struct drm_connector *connector, radeon_lvds_mode_valid() argument
857 struct drm_encoder *encoder = radeon_best_single_encoder(connector); radeon_lvds_mode_valid()
885 radeon_lvds_detect(struct drm_connector *connector, bool force) radeon_lvds_detect() argument
887 struct drm_device *dev = connector->dev; radeon_lvds_detect()
889 struct radeon_connector *radeon_connector = to_radeon_connector(connector); radeon_lvds_detect()
890 struct drm_encoder *encoder = radeon_best_single_encoder(connector); radeon_lvds_detect()
894 r = pm_runtime_get_sync(connector->dev->dev); radeon_lvds_detect()
913 radeon_connector_get_edid(connector); radeon_lvds_detect()
918 radeon_connector_update_scratch_regs(connector, ret); radeon_lvds_detect()
919 pm_runtime_mark_last_busy(connector->dev->dev); radeon_lvds_detect()
920 pm_runtime_put_autosuspend(connector->dev->dev); radeon_lvds_detect()
924 static void radeon_connector_destroy(struct drm_connector *connector) radeon_connector_destroy() argument
926 struct radeon_connector *radeon_connector = to_radeon_connector(connector); radeon_connector_destroy()
928 radeon_connector_free_edid(connector); radeon_connector_destroy()
930 drm_connector_unregister(connector); radeon_connector_destroy()
931 drm_connector_cleanup(connector); radeon_connector_destroy()
932 kfree(connector); radeon_connector_destroy()
935 static int radeon_lvds_set_property(struct drm_connector *connector, radeon_lvds_set_property() argument
939 struct drm_device *dev = connector->dev; radeon_lvds_set_property()
947 if (connector->encoder) radeon_lvds_set_property()
948 radeon_encoder = to_radeon_encoder(connector->encoder); radeon_lvds_set_property()
950 const struct drm_connector_helper_funcs *connector_funcs = connector->helper_private; radeon_lvds_set_property()
951 radeon_encoder = to_radeon_encoder(connector_funcs->best_encoder(connector)); radeon_lvds_set_property()
985 static int radeon_vga_get_modes(struct drm_connector *connector) radeon_vga_get_modes() argument
989 radeon_connector_get_edid(connector); radeon_vga_get_modes()
990 ret = radeon_ddc_get_modes(connector); radeon_vga_get_modes()
992 radeon_get_native_mode(connector); radeon_vga_get_modes()
997 static int radeon_vga_mode_valid(struct drm_connector *connector, radeon_vga_mode_valid() argument
1000 struct drm_device *dev = connector->dev; radeon_vga_mode_valid()
1012 radeon_vga_detect(struct drm_connector *connector, bool force) radeon_vga_detect() argument
1014 struct drm_device *dev = connector->dev; radeon_vga_detect()
1016 struct radeon_connector *radeon_connector = to_radeon_connector(connector); radeon_vga_detect()
1023 r = pm_runtime_get_sync(connector->dev->dev); radeon_vga_detect()
1027 encoder = radeon_best_single_encoder(connector); radeon_vga_detect()
1035 radeon_connector_free_edid(connector); radeon_vga_detect()
1036 radeon_connector_get_edid(connector); radeon_vga_detect()
1040 connector->name); radeon_vga_detect()
1050 radeon_connector_free_edid(connector); radeon_vga_detect()
1064 ret = connector->status; radeon_vga_detect()
1070 ret = encoder_funcs->detect(encoder, connector); radeon_vga_detect()
1077 ret = radeon_connector_analog_encoder_conflict_solve(connector, encoder, ret, true); radeon_vga_detect()
1089 radeon_connector_update_scratch_regs(connector, ret); radeon_vga_detect()
1092 pm_runtime_mark_last_busy(connector->dev->dev); radeon_vga_detect()
1093 pm_runtime_put_autosuspend(connector->dev->dev); radeon_vga_detect()
1112 static int radeon_tv_get_modes(struct drm_connector *connector) radeon_tv_get_modes() argument
1114 struct drm_device *dev = connector->dev; radeon_tv_get_modes()
1119 encoder = radeon_best_single_encoder(connector); radeon_tv_get_modes()
1126 radeon_add_common_modes(encoder, connector); radeon_tv_get_modes()
1131 drm_mode_probed_add(connector, tv_mode); radeon_tv_get_modes()
1136 static int radeon_tv_mode_valid(struct drm_connector *connector, radeon_tv_mode_valid() argument
1145 radeon_tv_detect(struct drm_connector *connector, bool force) radeon_tv_detect() argument
1149 struct radeon_connector *radeon_connector = to_radeon_connector(connector); radeon_tv_detect()
1156 r = pm_runtime_get_sync(connector->dev->dev); radeon_tv_detect()
1160 encoder = radeon_best_single_encoder(connector); radeon_tv_detect()
1165 ret = encoder_funcs->detect(encoder, connector); radeon_tv_detect()
1168 ret = radeon_connector_analog_encoder_conflict_solve(connector, encoder, ret, false); radeon_tv_detect()
1169 radeon_connector_update_scratch_regs(connector, ret); radeon_tv_detect()
1170 pm_runtime_mark_last_busy(connector->dev->dev); radeon_tv_detect()
1171 pm_runtime_put_autosuspend(connector->dev->dev); radeon_tv_detect()
1189 static bool radeon_check_hpd_status_unchanged(struct drm_connector *connector) radeon_check_hpd_status_unchanged() argument
1191 struct drm_device *dev = connector->dev; radeon_check_hpd_status_unchanged()
1193 struct radeon_connector *radeon_connector = to_radeon_connector(connector); radeon_check_hpd_status_unchanged()
1203 if (connector->status == status) radeon_check_hpd_status_unchanged()
1215 * we need to find the DAC encoder object for this connector.
1219 * if its shared we have to set the other connector to disconnected.
1222 radeon_dvi_detect(struct drm_connector *connector, bool force) radeon_dvi_detect() argument
1224 struct drm_device *dev = connector->dev; radeon_dvi_detect()
1226 struct radeon_connector *radeon_connector = to_radeon_connector(connector); radeon_dvi_detect()
1233 r = pm_runtime_get_sync(connector->dev->dev); radeon_dvi_detect()
1242 if (!force && radeon_check_hpd_status_unchanged(connector)) { radeon_dvi_detect()
1243 ret = connector->status; radeon_dvi_detect()
1255 connector->status != connector_status_connected) { radeon_dvi_detect()
1265 radeon_connector_free_edid(connector); radeon_dvi_detect()
1266 radeon_connector_get_edid(connector); radeon_dvi_detect()
1270 connector->name); radeon_dvi_detect()
1277 connector->name); radeon_dvi_detect()
1291 radeon_connector_free_edid(connector); radeon_dvi_detect()
1305 if (connector == list_connector) radeon_dvi_detect()
1315 radeon_connector_free_edid(connector); radeon_dvi_detect()
1329 if ((connector->connector_type == DRM_MODE_CONNECTOR_DVID) || radeon_dvi_detect()
1330 (connector->connector_type == DRM_MODE_CONNECTOR_HDMIA)) radeon_dvi_detect()
1339 ret = connector->status; radeon_dvi_detect()
1346 if (connector->encoder_ids[i] == 0) radeon_dvi_detect()
1349 encoder = drm_encoder_find(connector->dev, radeon_dvi_detect()
1350 connector->encoder_ids[i]); radeon_dvi_detect()
1363 ret = encoder_funcs->detect(encoder, connector); radeon_dvi_detect()
1374 lret = encoder_funcs->detect(encoder, connector); radeon_dvi_detect()
1386 ret = radeon_connector_analog_encoder_conflict_solve(connector, encoder, ret, true); radeon_dvi_detect()
1404 radeon_connector_update_scratch_regs(connector, ret); radeon_dvi_detect()
1408 connector->helper_private; radeon_dvi_detect()
1410 encoder = connector_funcs->best_encoder(connector); radeon_dvi_detect()
1412 radeon_connector_get_edid(connector); radeon_dvi_detect()
1413 radeon_audio_detect(connector, encoder, ret); radeon_dvi_detect()
1418 pm_runtime_mark_last_busy(connector->dev->dev); radeon_dvi_detect()
1419 pm_runtime_put_autosuspend(connector->dev->dev); radeon_dvi_detect()
1425 static struct drm_encoder *radeon_dvi_encoder(struct drm_connector *connector) radeon_dvi_encoder() argument
1427 int enc_id = connector->encoder_ids[0]; radeon_dvi_encoder()
1428 struct radeon_connector *radeon_connector = to_radeon_connector(connector); radeon_dvi_encoder()
1432 if (connector->encoder_ids[i] == 0) radeon_dvi_encoder()
1435 encoder = drm_encoder_find(connector->dev, connector->encoder_ids[i]); radeon_dvi_encoder()
1454 return drm_encoder_find(connector->dev, enc_id); radeon_dvi_encoder()
1458 static void radeon_dvi_force(struct drm_connector *connector) radeon_dvi_force() argument
1460 struct radeon_connector *radeon_connector = to_radeon_connector(connector); radeon_dvi_force()
1461 if (connector->force == DRM_FORCE_ON) radeon_dvi_force()
1463 if (connector->force == DRM_FORCE_ON_DIGITAL) radeon_dvi_force()
1467 static int radeon_dvi_mode_valid(struct drm_connector *connector, radeon_dvi_mode_valid() argument
1470 struct drm_device *dev = connector->dev; radeon_dvi_mode_valid()
1472 struct radeon_connector *radeon_connector = to_radeon_connector(connector); radeon_dvi_mode_valid()
1487 else if (ASIC_IS_DCE6(rdev) && drm_detect_hdmi_monitor(radeon_connector_edid(connector))) { radeon_dvi_mode_valid()
1520 static int radeon_dp_get_modes(struct drm_connector *connector) radeon_dp_get_modes() argument
1522 struct radeon_connector *radeon_connector = to_radeon_connector(connector); radeon_dp_get_modes()
1524 struct drm_encoder *encoder = radeon_best_single_encoder(connector); radeon_dp_get_modes()
1527 if ((connector->connector_type == DRM_MODE_CONNECTOR_eDP) || radeon_dp_get_modes()
1528 (connector->connector_type == DRM_MODE_CONNECTOR_LVDS)) { radeon_dp_get_modes()
1531 if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) { radeon_dp_get_modes()
1533 atombios_set_edp_panel_power(connector, radeon_dp_get_modes()
1535 radeon_connector_get_edid(connector); radeon_dp_get_modes()
1536 ret = radeon_ddc_get_modes(connector); radeon_dp_get_modes()
1538 atombios_set_edp_panel_power(connector, radeon_dp_get_modes()
1542 if (radeon_connector_encoder_get_dp_bridge_encoder_id(connector) != radeon_dp_get_modes()
1547 radeon_connector_get_edid(connector); radeon_dp_get_modes()
1548 ret = radeon_ddc_get_modes(connector); radeon_dp_get_modes()
1553 radeon_fixup_lvds_native_mode(encoder, connector); radeon_dp_get_modes()
1555 radeon_add_common_modes(encoder, connector); radeon_dp_get_modes()
1567 drm_mode_probed_add(connector, mode); radeon_dp_get_modes()
1569 connector->display_info.width_mm = mode->width_mm; radeon_dp_get_modes()
1570 connector->display_info.height_mm = mode->height_mm; radeon_dp_get_modes()
1572 radeon_add_common_modes(encoder, connector); radeon_dp_get_modes()
1576 if (radeon_connector_encoder_get_dp_bridge_encoder_id(connector) != radeon_dp_get_modes()
1581 radeon_connector_get_edid(connector); radeon_dp_get_modes()
1582 ret = radeon_ddc_get_modes(connector); radeon_dp_get_modes()
1584 radeon_get_native_mode(connector); radeon_dp_get_modes()
1590 u16 radeon_connector_encoder_get_dp_bridge_encoder_id(struct drm_connector *connector) radeon_connector_encoder_get_dp_bridge_encoder_id() argument
1597 if (connector->encoder_ids[i] == 0) radeon_connector_encoder_get_dp_bridge_encoder_id()
1600 encoder = drm_encoder_find(connector->dev, connector->encoder_ids[i]); radeon_connector_encoder_get_dp_bridge_encoder_id()
1618 static bool radeon_connector_encoder_is_hbr2(struct drm_connector *connector) radeon_connector_encoder_is_hbr2() argument
1626 if (connector->encoder_ids[i] == 0) radeon_connector_encoder_is_hbr2()
1629 encoder = drm_encoder_find(connector->dev, connector->encoder_ids[i]); radeon_connector_encoder_is_hbr2()
1641 bool radeon_connector_is_dp12_capable(struct drm_connector *connector) radeon_connector_is_dp12_capable() argument
1643 struct drm_device *dev = connector->dev; radeon_connector_is_dp12_capable()
1648 radeon_connector_encoder_is_hbr2(connector)) { radeon_connector_is_dp12_capable()
1656 radeon_dp_detect(struct drm_connector *connector, bool force) radeon_dp_detect() argument
1658 struct drm_device *dev = connector->dev; radeon_dp_detect()
1660 struct radeon_connector *radeon_connector = to_radeon_connector(connector); radeon_dp_detect()
1663 struct drm_encoder *encoder = radeon_best_single_encoder(connector); radeon_dp_detect()
1669 r = pm_runtime_get_sync(connector->dev->dev); radeon_dp_detect()
1673 if (!force && radeon_check_hpd_status_unchanged(connector)) { radeon_dp_detect()
1674 ret = connector->status; radeon_dp_detect()
1678 radeon_connector_free_edid(connector); radeon_dp_detect()
1680 if ((connector->connector_type == DRM_MODE_CONNECTOR_eDP) || radeon_dp_detect()
1681 (connector->connector_type == DRM_MODE_CONNECTOR_LVDS)) { radeon_dp_detect()
1698 atombios_set_edp_panel_power(connector, radeon_dp_detect()
1703 atombios_set_edp_panel_power(connector, radeon_dp_detect()
1705 } else if (radeon_connector_encoder_get_dp_bridge_encoder_id(connector) != radeon_dp_detect()
1720 ret = encoder_funcs->detect(encoder, connector); radeon_dp_detect()
1750 radeon_connector_update_scratch_regs(connector, ret); radeon_dp_detect()
1753 radeon_connector_get_edid(connector); radeon_dp_detect()
1754 radeon_audio_detect(connector, encoder, ret); radeon_dp_detect()
1758 pm_runtime_mark_last_busy(connector->dev->dev); radeon_dp_detect()
1759 pm_runtime_put_autosuspend(connector->dev->dev); radeon_dp_detect()
1764 static int radeon_dp_mode_valid(struct drm_connector *connector, radeon_dp_mode_valid() argument
1767 struct drm_device *dev = connector->dev; radeon_dp_mode_valid()
1769 struct radeon_connector *radeon_connector = to_radeon_connector(connector); radeon_dp_mode_valid()
1774 if ((connector->connector_type == DRM_MODE_CONNECTOR_eDP) || radeon_dp_mode_valid()
1775 (connector->connector_type == DRM_MODE_CONNECTOR_LVDS)) { radeon_dp_mode_valid()
1776 struct drm_encoder *encoder = radeon_best_single_encoder(connector); radeon_dp_mode_valid()
1802 return radeon_dp_mode_valid_helper(connector, mode); radeon_dp_mode_valid()
1804 if (ASIC_IS_DCE6(rdev) && drm_detect_hdmi_monitor(radeon_connector_edid(connector))) { radeon_dp_mode_valid()
1863 struct drm_connector *connector; radeon_add_atom_connector() local
1876 /* if the user selected tv=0 don't try and add the connector */ radeon_add_atom_connector()
1884 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { radeon_add_atom_connector()
1885 radeon_connector = to_radeon_connector(connector); radeon_add_atom_connector()
1922 connector = &radeon_connector->base; radeon_add_atom_connector()
1958 connector->interlace_allowed = true; radeon_add_atom_connector()
1959 connector->doublescan_allowed = true; radeon_add_atom_connector()
2011 connector->interlace_allowed = true; radeon_add_atom_connector()
2013 connector->doublescan_allowed = true; radeon_add_atom_connector()
2015 connector->doublescan_allowed = false; radeon_add_atom_connector()
2033 connector->interlace_allowed = false; radeon_add_atom_connector()
2034 connector->doublescan_allowed = false; radeon_add_atom_connector()
2061 connector->polled = DRM_CONNECTOR_POLL_CONNECT; radeon_add_atom_connector()
2062 connector->interlace_allowed = true; radeon_add_atom_connector()
2063 connector->doublescan_allowed = true; radeon_add_atom_connector()
2087 connector->interlace_allowed = true; radeon_add_atom_connector()
2088 connector->doublescan_allowed = true; radeon_add_atom_connector()
2141 connector->interlace_allowed = true; radeon_add_atom_connector()
2143 connector->doublescan_allowed = true; radeon_add_atom_connector()
2145 connector->doublescan_allowed = false; radeon_add_atom_connector()
2192 connector->interlace_allowed = true; radeon_add_atom_connector()
2194 connector->doublescan_allowed = true; radeon_add_atom_connector()
2196 connector->doublescan_allowed = false; radeon_add_atom_connector()
2244 connector->interlace_allowed = true; radeon_add_atom_connector()
2246 connector->doublescan_allowed = false; radeon_add_atom_connector()
2267 connector->interlace_allowed = false; radeon_add_atom_connector()
2268 connector->doublescan_allowed = false; radeon_add_atom_connector()
2284 connector->interlace_allowed = false; radeon_add_atom_connector()
2285 connector->doublescan_allowed = false; radeon_add_atom_connector()
2304 connector->interlace_allowed = false; radeon_add_atom_connector()
2305 connector->doublescan_allowed = false; radeon_add_atom_connector()
2312 connector->polled = DRM_CONNECTOR_POLL_CONNECT; radeon_add_atom_connector()
2314 connector->polled = DRM_CONNECTOR_POLL_HPD; radeon_add_atom_connector()
2316 connector->display_info.subpixel_order = subpixel_order; radeon_add_atom_connector()
2317 drm_connector_register(connector); radeon_add_atom_connector()
2325 drm_connector_cleanup(connector); radeon_add_atom_connector()
2326 kfree(connector); radeon_add_atom_connector()
2339 struct drm_connector *connector; radeon_add_legacy_connector() local
2346 /* if the user selected tv=0 don't try and add the connector */ radeon_add_legacy_connector()
2354 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { radeon_add_legacy_connector()
2355 radeon_connector = to_radeon_connector(connector); radeon_add_legacy_connector()
2366 connector = &radeon_connector->base; radeon_add_legacy_connector()
2388 connector->polled = DRM_CONNECTOR_POLL_CONNECT; radeon_add_legacy_connector()
2389 connector->interlace_allowed = true; radeon_add_legacy_connector()
2390 connector->doublescan_allowed = true; radeon_add_legacy_connector()
2406 connector->interlace_allowed = true; radeon_add_legacy_connector()
2407 connector->doublescan_allowed = true; radeon_add_legacy_connector()
2425 connector->interlace_allowed = true; radeon_add_legacy_connector()
2427 connector->doublescan_allowed = true; radeon_add_legacy_connector()
2429 connector->doublescan_allowed = false; radeon_add_legacy_connector()
2452 connector->interlace_allowed = false; radeon_add_legacy_connector()
2453 connector->doublescan_allowed = false; radeon_add_legacy_connector()
2467 connector->interlace_allowed = false; radeon_add_legacy_connector()
2468 connector->doublescan_allowed = false; radeon_add_legacy_connector()
2474 connector->polled = DRM_CONNECTOR_POLL_CONNECT; radeon_add_legacy_connector()
2476 connector->polled = DRM_CONNECTOR_POLL_HPD; radeon_add_legacy_connector()
2477 connector->display_info.subpixel_order = subpixel_order; radeon_add_legacy_connector()
2478 drm_connector_register(connector); radeon_add_legacy_connector()
2484 struct drm_connector *connector; radeon_setup_mst_connector() local
2493 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { radeon_setup_mst_connector()
2496 radeon_connector = to_radeon_connector(connector); radeon_setup_mst_connector()
2498 if (connector->connector_type != DRM_MODE_CONNECTOR_DisplayPort) radeon_setup_mst_connector()
782 radeon_fixup_lvds_native_mode(struct drm_encoder *encoder, struct drm_connector *connector) radeon_fixup_lvds_native_mode() argument
H A Dradeon_dp_mst.c10 static struct radeon_encoder *radeon_dp_create_fake_mst_encoder(struct radeon_connector *connector);
110 struct drm_connector *connector; radeon_dp_mst_update_stream_attribs() local
113 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { radeon_dp_mst_update_stream_attribs()
117 radeon_connector = to_radeon_connector(connector); radeon_dp_mst_update_stream_attribs()
175 static int radeon_dp_mst_get_ddc_modes(struct drm_connector *connector) radeon_dp_mst_get_ddc_modes() argument
177 struct radeon_connector *radeon_connector = to_radeon_connector(connector); radeon_dp_mst_get_ddc_modes()
182 edid = drm_dp_mst_get_edid(connector, &master->mst_mgr, radeon_connector->port); radeon_dp_mst_get_ddc_modes()
196 static int radeon_dp_mst_get_modes(struct drm_connector *connector) radeon_dp_mst_get_modes() argument
198 return radeon_dp_mst_get_ddc_modes(connector); radeon_dp_mst_get_modes()
202 radeon_dp_mst_mode_valid(struct drm_connector *connector, radeon_dp_mst_mode_valid() argument
215 struct drm_encoder *radeon_mst_best_encoder(struct drm_connector *connector) radeon_mst_best_encoder() argument
217 struct radeon_connector *radeon_connector = to_radeon_connector(connector); radeon_mst_best_encoder()
229 radeon_dp_mst_detect(struct drm_connector *connector, bool force) radeon_dp_mst_detect() argument
231 struct radeon_connector *radeon_connector = to_radeon_connector(connector); radeon_dp_mst_detect()
234 return drm_dp_mst_detect_port(connector, &master->mst_mgr, radeon_connector->port); radeon_dp_mst_detect()
238 radeon_dp_mst_connector_destroy(struct drm_connector *connector) radeon_dp_mst_connector_destroy() argument
240 struct radeon_connector *radeon_connector = to_radeon_connector(connector); radeon_dp_mst_connector_destroy()
245 drm_connector_cleanup(connector); radeon_dp_mst_connector_destroy()
249 static int radeon_connector_dpms(struct drm_connector *connector, int mode) radeon_connector_dpms() argument
269 struct drm_connector *connector; radeon_dp_add_mst_connector() local
276 connector = &radeon_connector->base; radeon_dp_add_mst_connector()
281 drm_connector_init(dev, connector, &radeon_dp_mst_connector_funcs, DRM_MODE_CONNECTOR_DisplayPort); radeon_dp_add_mst_connector()
282 drm_connector_helper_add(connector, &radeon_dp_mst_connector_helper_funcs); radeon_dp_add_mst_connector()
285 drm_object_attach_property(&connector->base, dev->mode_config.path_property, 0); radeon_dp_add_mst_connector()
286 drm_object_attach_property(&connector->base, dev->mode_config.tile_property, 0); radeon_dp_add_mst_connector()
287 drm_mode_connector_set_path_property(connector, pathprop); radeon_dp_add_mst_connector()
289 return connector; radeon_dp_add_mst_connector()
292 static void radeon_dp_register_mst_connector(struct drm_connector *connector) radeon_dp_register_mst_connector() argument
294 struct drm_device *dev = connector->dev; radeon_dp_register_mst_connector()
298 radeon_fb_add_connector(rdev, connector); radeon_dp_register_mst_connector()
301 drm_connector_register(connector); radeon_dp_register_mst_connector()
305 struct drm_connector *connector) radeon_dp_destroy_mst_connector()
311 drm_connector_unregister(connector); radeon_dp_destroy_mst_connector()
312 /* need to nuke the connector */ radeon_dp_destroy_mst_connector()
315 radeon_fb_remove_connector(rdev, connector); radeon_dp_destroy_mst_connector()
317 drm_connector_cleanup(connector); radeon_dp_destroy_mst_connector()
320 kfree(connector); radeon_dp_destroy_mst_connector()
342 struct drm_connector *connector; radeon_mst_find_connector() local
344 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { radeon_mst_find_connector()
345 struct radeon_connector *radeon_connector = to_radeon_connector(connector); radeon_mst_find_connector()
346 if (!connector->encoder) radeon_mst_find_connector()
351 DRM_DEBUG_KMS("checking %p vs %p\n", connector->encoder, encoder); radeon_mst_find_connector()
352 if (connector->encoder == encoder) radeon_mst_find_connector()
367 struct radeon_connector_atom_dig *dig_connector = mst_enc->connector->con_priv; radeon_dp_mst_prepare_pll()
416 DRM_DEBUG_KMS("got connector %d\n", dig_enc->active_mst_links); radeon_mst_encoder_dpms()
433 if (radeon_dp_needs_link_train(mst_enc->connector) || radeon_mst_encoder_dpms()
435 radeon_dp_link_train(&primary->base, &mst_enc->connector->base); radeon_mst_encoder_dpms()
519 mst_enc->primary->active_device = mst_enc->primary->devices & mst_enc->connector->devices; radeon_mst_mode_fixup()
522 mst_enc->connector->devices, mst_enc->primary->base.encoder_type); radeon_mst_mode_fixup()
529 dig_connector = mst_enc->connector->con_priv; radeon_mst_mode_fixup()
531 dig_connector->dp_clock = radeon_dp_get_max_link_rate(&mst_enc->connector->base, radeon_mst_mode_fixup()
548 DRM_DEBUG_KMS("failed to find connector %p\n", encoder); radeon_mst_encoder_prepare()
606 radeon_dp_create_fake_mst_encoder(struct radeon_connector *connector) radeon_dp_create_fake_mst_encoder() argument
608 struct drm_device *dev = connector->base.dev; radeon_dp_create_fake_mst_encoder()
613 const struct drm_connector_helper_funcs *connector_funcs = connector->base.helper_private; radeon_dp_create_fake_mst_encoder()
614 struct drm_encoder *enc_master = connector_funcs->best_encoder(&connector->base); radeon_dp_create_fake_mst_encoder()
648 mst_enc->connector = connector; radeon_dp_create_fake_mst_encoder()
758 struct drm_connector *connector; radeon_debugfs_mst_info() local
764 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { radeon_debugfs_mst_info()
765 if (connector->connector_type != DRM_MODE_CONNECTOR_DisplayPort) radeon_debugfs_mst_info()
768 radeon_connector = to_radeon_connector(connector); radeon_debugfs_mst_info()
304 radeon_dp_destroy_mst_connector(struct drm_dp_mst_topology_mgr *mgr, struct drm_connector *connector) radeon_dp_destroy_mst_connector() argument
H A Dradeon_encoders.c162 struct drm_connector *connector) radeon_encoder_add_backlight()
194 radeon_atom_backlight_init(radeon_encoder, connector); radeon_encoder_add_backlight()
196 radeon_legacy_backlight_init(radeon_encoder, connector); radeon_encoder_add_backlight()
203 struct drm_connector *connector; radeon_link_encoder_connector() local
209 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { radeon_link_encoder_connector()
210 radeon_connector = to_radeon_connector(connector); radeon_link_encoder_connector()
214 drm_mode_connector_attach_encoder(connector, encoder); radeon_link_encoder_connector()
216 radeon_encoder_add_backlight(radeon_encoder, connector); radeon_link_encoder_connector()
226 struct drm_connector *connector; radeon_encoder_set_active_device() local
228 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { radeon_encoder_set_active_device()
229 if (connector->encoder == encoder) { radeon_encoder_set_active_device()
230 struct radeon_connector *radeon_connector = to_radeon_connector(connector); radeon_encoder_set_active_device()
244 struct drm_connector *connector; radeon_get_connector_for_encoder() local
247 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { radeon_get_connector_for_encoder()
248 radeon_connector = to_radeon_connector(connector); radeon_get_connector_for_encoder()
256 if (mst_enc->connector == radeon_connector->mst_port) radeon_get_connector_for_encoder()
257 return connector; radeon_get_connector_for_encoder()
259 return connector; radeon_get_connector_for_encoder()
269 struct drm_connector *connector; radeon_get_connector_for_encoder_init() local
272 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { radeon_get_connector_for_encoder_init()
273 radeon_connector = to_radeon_connector(connector); radeon_get_connector_for_encoder_init()
275 return connector; radeon_get_connector_for_encoder_init()
371 struct drm_connector *connector; radeon_dig_monitor_is_duallink() local
375 connector = radeon_get_connector_for_encoder(encoder); radeon_dig_monitor_is_duallink()
379 if (!connector) radeon_dig_monitor_is_duallink()
380 connector = radeon_get_connector_for_encoder_init(encoder); radeon_dig_monitor_is_duallink()
381 radeon_connector = to_radeon_connector(connector); radeon_dig_monitor_is_duallink()
383 switch (connector->connector_type) { radeon_dig_monitor_is_duallink()
388 if (ASIC_IS_DCE6(rdev) && drm_detect_hdmi_monitor(radeon_connector_edid(connector))) { radeon_dig_monitor_is_duallink()
413 if (ASIC_IS_DCE6(rdev) && drm_detect_hdmi_monitor(radeon_connector_edid(connector))) { radeon_dig_monitor_is_duallink()
161 radeon_encoder_add_backlight(struct radeon_encoder *radeon_encoder, struct drm_connector *connector) radeon_encoder_add_backlight() argument
H A Datombios_dp.c315 int radeon_dp_get_max_link_rate(struct drm_connector *connector, radeon_dp_get_max_link_rate() argument
320 if (radeon_connector_is_dp12_capable(connector)) radeon_dp_get_max_link_rate()
332 static int radeon_dp_get_dp_lane_number(struct drm_connector *connector, radeon_dp_get_dp_lane_number() argument
336 int bpp = convert_bpc_to_bpp(radeon_get_monitor_bpc(connector)); radeon_dp_get_dp_lane_number()
337 int max_link_rate = radeon_dp_get_max_link_rate(connector, dpcd); radeon_dp_get_dp_lane_number()
351 static int radeon_dp_get_dp_link_clock(struct drm_connector *connector, radeon_dp_get_dp_link_clock() argument
355 int bpp = convert_bpc_to_bpp(radeon_get_monitor_bpc(connector)); radeon_dp_get_dp_link_clock()
358 if (radeon_connector_encoder_get_dp_bridge_encoder_id(connector) == radeon_dp_get_dp_link_clock()
362 lane_num = radeon_dp_get_dp_lane_number(connector, dpcd, pix_clock); radeon_dp_get_dp_link_clock()
369 if (radeon_connector_is_dp12_capable(connector)) { radeon_dp_get_dp_link_clock()
375 return radeon_dp_get_max_link_rate(connector, dpcd); radeon_dp_get_dp_link_clock()
447 struct drm_connector *connector) radeon_dp_get_panel_mode()
451 struct radeon_connector *radeon_connector = to_radeon_connector(connector); radeon_dp_get_panel_mode()
454 u16 dp_bridge = radeon_connector_encoder_get_dp_bridge_encoder_id(connector); radeon_dp_get_panel_mode()
477 } else if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) { radeon_dp_get_panel_mode()
489 void radeon_dp_set_link_config(struct drm_connector *connector, radeon_dp_set_link_config() argument
492 struct radeon_connector *radeon_connector = to_radeon_connector(connector); radeon_dp_set_link_config()
502 radeon_dp_get_dp_link_clock(connector, dig_connector->dpcd, mode->clock); radeon_dp_set_link_config()
504 radeon_dp_get_dp_lane_number(connector, dig_connector->dpcd, mode->clock); radeon_dp_set_link_config()
508 int radeon_dp_mode_valid_helper(struct drm_connector *connector, radeon_dp_mode_valid_helper() argument
511 struct radeon_connector *radeon_connector = to_radeon_connector(connector); radeon_dp_mode_valid_helper()
516 (!radeon_connector_is_dp12_capable(connector))) radeon_dp_mode_valid_helper()
524 radeon_dp_get_dp_link_clock(connector, dig_connector->dpcd, mode->clock); radeon_dp_mode_valid_helper()
527 (!radeon_connector_is_dp12_capable(connector))) radeon_dp_mode_valid_helper()
546 void radeon_dp_set_rx_power_state(struct drm_connector *connector, radeon_dp_set_rx_power_state() argument
549 struct radeon_connector *radeon_connector = to_radeon_connector(connector); radeon_dp_set_rx_power_state()
569 struct drm_connector *connector; member in struct:radeon_dp_link_train_info
636 radeon_dp_set_rx_power_state(dp_info->connector, DP_SET_POWER_D0); radeon_dp_link_train_init()
814 struct drm_connector *connector) radeon_dp_link_train()
830 radeon_connector = to_radeon_connector(connector); radeon_dp_link_train()
874 dp_info.connector = connector; radeon_dp_link_train()
446 radeon_dp_get_panel_mode(struct drm_encoder *encoder, struct drm_connector *connector) radeon_dp_get_panel_mode() argument
813 radeon_dp_link_train(struct drm_encoder *encoder, struct drm_connector *connector) radeon_dp_link_train() argument
H A Devergreen_hdmi.c98 struct drm_connector *connector, struct drm_display_mode *mode) dce4_afmt_write_latency_fields()
104 if (connector->latency_present[1]) dce4_afmt_write_latency_fields()
105 tmp = VIDEO_LIPSYNC(connector->video_latency[1]) | dce4_afmt_write_latency_fields()
106 AUDIO_LIPSYNC(connector->audio_latency[1]); dce4_afmt_write_latency_fields()
110 if (connector->latency_present[0]) dce4_afmt_write_latency_fields()
111 tmp = VIDEO_LIPSYNC(connector->video_latency[0]) | dce4_afmt_write_latency_fields()
112 AUDIO_LIPSYNC(connector->audio_latency[0]); dce4_afmt_write_latency_fields()
321 struct drm_connector *connector = radeon_get_connector_for_encoder(encoder); dce4_hdmi_set_color_depth() local
335 connector->name, bpc); dce4_hdmi_set_color_depth()
341 connector->name); dce4_hdmi_set_color_depth()
347 connector->name); dce4_hdmi_set_color_depth()
411 struct drm_connector *connector = radeon_get_connector_for_encoder(encoder); evergreen_hdmi_enable() local
413 if (connector && drm_detect_monitor_audio(radeon_connector_edid(connector))) { evergreen_hdmi_enable()
446 struct drm_connector *connector = radeon_get_connector_for_encoder(encoder); evergreen_dp_enable() local
451 if (enable && connector && evergreen_dp_enable()
452 drm_detect_monitor_audio(radeon_connector_edid(connector))) { evergreen_dp_enable()
453 struct drm_connector *connector = radeon_get_connector_for_encoder(encoder); evergreen_dp_enable() local
454 struct radeon_connector *radeon_connector = to_radeon_connector(connector); evergreen_dp_enable()
97 dce4_afmt_write_latency_fields(struct drm_encoder *encoder, struct drm_connector *connector, struct drm_display_mode *mode) dce4_afmt_write_latency_fields() argument
H A Dradeon_audio.c60 struct drm_connector *connector, struct drm_display_mode *mode);
62 struct drm_connector *connector, struct drm_display_mode *mode);
361 struct drm_connector *connector = radeon_get_connector_for_encoder(encoder); radeon_audio_write_sad_regs() local
366 if (!connector) radeon_audio_write_sad_regs()
369 sad_count = drm_edid_to_sad(radeon_connector_edid(connector), &sads); radeon_audio_write_sad_regs()
384 struct drm_connector *connector = radeon_get_connector_for_encoder(encoder); radeon_audio_write_speaker_allocation() local
389 if (!connector) radeon_audio_write_speaker_allocation()
392 sad_count = drm_edid_to_speaker_allocation(radeon_connector_edid(connector), radeon_audio_write_speaker_allocation()
409 struct drm_connector *connector = radeon_get_connector_for_encoder(encoder); radeon_audio_write_latency_fields() local
412 if (!connector) radeon_audio_write_latency_fields()
416 radeon_encoder->audio->write_latency_fields(encoder, connector, mode); radeon_audio_write_latency_fields()
438 void radeon_audio_detect(struct drm_connector *connector, radeon_audio_detect() argument
442 struct drm_device *dev = connector->dev; radeon_audio_detect()
456 if (connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort) { radeon_audio_detect()
457 struct radeon_connector *radeon_connector = to_radeon_connector(connector); radeon_audio_detect()
468 if (drm_detect_monitor_audio(radeon_connector_edid(connector))) { radeon_audio_detect()
511 struct drm_connector *connector = radeon_get_connector_for_encoder(encoder); radeon_audio_set_avi_packet() local
516 if (!connector) radeon_audio_set_avi_packet()
526 if (drm_rgb_quant_range_selectable(radeon_connector_edid(connector))) { radeon_audio_set_avi_packet()
701 struct drm_connector *connector = radeon_get_connector_for_encoder(encoder); radeon_audio_hdmi_mode_set() local
706 if (!connector) radeon_audio_hdmi_mode_set()
709 if (drm_detect_monitor_audio(radeon_connector_edid(connector))) { radeon_audio_hdmi_mode_set()
741 struct drm_connector *connector = radeon_get_connector_for_encoder(encoder); radeon_audio_dp_mode_set() local
746 if (!connector) radeon_audio_dp_mode_set()
749 if (drm_detect_monitor_audio(radeon_connector_edid(connector))) { radeon_audio_dp_mode_set()
H A Ddce6_afmt.c124 struct drm_connector *connector, dce6_afmt_write_latency_fields()
136 if (connector->latency_present[1]) dce6_afmt_write_latency_fields()
137 tmp = VIDEO_LIPSYNC(connector->video_latency[1]) | dce6_afmt_write_latency_fields()
138 AUDIO_LIPSYNC(connector->audio_latency[1]); dce6_afmt_write_latency_fields()
142 if (connector->latency_present[0]) dce6_afmt_write_latency_fields()
143 tmp = VIDEO_LIPSYNC(connector->video_latency[0]) | dce6_afmt_write_latency_fields()
144 AUDIO_LIPSYNC(connector->audio_latency[0]); dce6_afmt_write_latency_fields()
123 dce6_afmt_write_latency_fields(struct drm_encoder *encoder, struct drm_connector *connector, struct drm_display_mode *mode) dce6_afmt_write_latency_fields() argument
H A Datombios_encoders.c304 /* set the active encoder to connector routing */ radeon_atom_mode_fixup()
337 struct drm_connector *connector = radeon_get_connector_for_encoder(encoder); radeon_atom_mode_fixup() local
338 radeon_dp_set_link_config(connector, adjusted_mode); radeon_atom_mode_fixup()
676 struct drm_connector *connector; atombios_get_encoder_mode() local
697 connector = radeon_get_connector_for_encoder(encoder); atombios_get_encoder_mode()
701 if (!connector) atombios_get_encoder_mode()
702 connector = radeon_get_connector_for_encoder_init(encoder); atombios_get_encoder_mode()
703 radeon_connector = to_radeon_connector(connector); atombios_get_encoder_mode()
705 switch (connector->connector_type) { atombios_get_encoder_mode()
712 else if (drm_detect_hdmi_monitor(radeon_connector_edid(connector)) && atombios_get_encoder_mode()
731 else if (drm_detect_hdmi_monitor(radeon_connector_edid(connector)) && atombios_get_encoder_mode()
748 drm_detect_monitor_audio(radeon_connector_edid(connector)) && atombios_get_encoder_mode()
755 else if (drm_detect_hdmi_monitor(radeon_connector_edid(connector)) && atombios_get_encoder_mode()
766 drm_detect_monitor_audio(radeon_connector_edid(connector)) && atombios_get_encoder_mode()
845 struct drm_connector *connector = radeon_get_connector_for_encoder(encoder); atombios_dig_encoder_setup2() local
853 if (connector) { atombios_dig_encoder_setup2()
854 struct radeon_connector *radeon_connector = to_radeon_connector(connector); atombios_dig_encoder_setup2()
1015 struct drm_connector *connector; atombios_dig_transmitter_setup2() local
1029 connector = radeon_get_connector_for_encoder_init(encoder); atombios_dig_transmitter_setup2()
1035 connector = radeon_get_connector_for_encoder(encoder); atombios_dig_transmitter_setup2()
1037 if (connector) { atombios_dig_transmitter_setup2()
1038 struct radeon_connector *radeon_connector = to_radeon_connector(connector); atombios_dig_transmitter_setup2()
1382 atombios_set_edp_panel_power(struct drm_connector *connector, int action) atombios_set_edp_panel_power() argument
1384 struct radeon_connector *radeon_connector = to_radeon_connector(connector); atombios_set_edp_panel_power()
1391 if (connector->connector_type != DRM_MODE_CONNECTOR_eDP) atombios_set_edp_panel_power()
1440 struct drm_connector *connector; atombios_external_encoder_setup() local
1449 connector = radeon_get_connector_for_encoder_init(encoder); atombios_external_encoder_setup()
1451 connector = radeon_get_connector_for_encoder(encoder); atombios_external_encoder_setup()
1453 if (connector) { atombios_external_encoder_setup()
1454 struct radeon_connector *radeon_connector = to_radeon_connector(connector); atombios_external_encoder_setup()
1665 struct drm_connector *connector = radeon_get_connector_for_encoder(encoder); radeon_atom_encoder_dpms_dig() local
1670 if (connector) { radeon_atom_encoder_dpms_dig()
1671 radeon_connector = to_radeon_connector(connector); radeon_atom_encoder_dpms_dig()
1673 if ((radeon_connector_encoder_get_dp_bridge_encoder_id(connector) == radeon_atom_encoder_dpms_dig()
1683 if (!connector) radeon_atom_encoder_dpms_dig()
1686 dig->panel_mode = radeon_dp_get_panel_mode(encoder, connector); radeon_atom_encoder_dpms_dig()
1706 if (ENCODER_MODE_IS_DP(atombios_get_encoder_mode(encoder)) && connector) { radeon_atom_encoder_dpms_dig()
1707 if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) { radeon_atom_encoder_dpms_dig()
1708 atombios_set_edp_panel_power(connector, radeon_atom_encoder_dpms_dig()
1715 if (ENCODER_MODE_IS_DP(atombios_get_encoder_mode(encoder)) && connector) { radeon_atom_encoder_dpms_dig()
1717 radeon_dp_link_train(encoder, connector); radeon_atom_encoder_dpms_dig()
1740 if (ENCODER_MODE_IS_DP(atombios_get_encoder_mode(encoder)) && connector) radeon_atom_encoder_dpms_dig()
1750 connector && !travis_quirk) radeon_atom_encoder_dpms_dig()
1751 radeon_dp_set_rx_power_state(connector, DP_SET_POWER_D3); radeon_atom_encoder_dpms_dig()
1762 if (ENCODER_MODE_IS_DP(atombios_get_encoder_mode(encoder)) && connector) { radeon_atom_encoder_dpms_dig()
1764 radeon_dp_set_rx_power_state(connector, DP_SET_POWER_D3); radeon_atom_encoder_dpms_dig()
1765 if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) { radeon_atom_encoder_dpms_dig()
1766 atombios_set_edp_panel_power(connector, radeon_atom_encoder_dpms_dig()
1927 struct drm_connector *connector = radeon_get_connector_for_encoder(encoder); atombios_set_encoder_crtc_source() local
1929 if (connector->connector_type == DRM_MODE_CONNECTOR_LVDS) atombios_set_encoder_crtc_source()
1931 else if (connector->connector_type == DRM_MODE_CONNECTOR_VGA) atombios_set_encoder_crtc_source()
2266 struct drm_connector *connector = radeon_get_connector_for_encoder(encoder); radeon_atom_encoder_mode_set() local
2317 if (connector && (radeon_audio != 0) && radeon_atom_encoder_mode_set()
2324 atombios_dac_load_detect(struct drm_encoder *encoder, struct drm_connector *connector) atombios_dac_load_detect() argument
2329 struct radeon_connector *radeon_connector = to_radeon_connector(connector); atombios_dac_load_detect()
2373 radeon_atom_dac_detect(struct drm_encoder *encoder, struct drm_connector *connector) radeon_atom_dac_detect() argument
2378 struct radeon_connector *radeon_connector = to_radeon_connector(connector); radeon_atom_dac_detect()
2381 if (!atombios_dac_load_detect(encoder, connector)) { radeon_atom_dac_detect()
2414 radeon_atom_dig_detect(struct drm_encoder *encoder, struct drm_connector *connector) radeon_atom_dig_detect() argument
2419 struct radeon_connector *radeon_connector = to_radeon_connector(connector); radeon_atom_dig_detect()
2476 struct drm_connector *connector = radeon_get_connector_for_encoder(encoder); radeon_atom_encoder_prepare() local
2499 if (connector) { radeon_atom_encoder_prepare()
2500 struct radeon_connector *radeon_connector = to_radeon_connector(connector); radeon_atom_encoder_prepare()
2507 if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) radeon_atom_encoder_prepare()
2508 atombios_set_edp_panel_power(connector, radeon_atom_encoder_prepare()
2541 * the encoder if it's in use by another connector radeon_atom_encoder_disable()
H A Dradeon_mode.h209 /* mostly for macs, but really any system without connector tables */
365 struct drm_connector *connector; member in struct:radeon_crtc
453 struct radeon_connector *connector; member in struct:radeon_encoder_mst
726 radeon_combios_connected_scratch_regs(struct drm_connector *connector,
730 radeon_atombios_connected_scratch_regs(struct drm_connector *connector,
742 extern u16 radeon_connector_encoder_get_dp_bridge_encoder_id(struct drm_connector *connector);
743 extern bool radeon_connector_is_dp12_capable(struct drm_connector *connector);
744 extern int radeon_get_monitor_bpc(struct drm_connector *connector);
746 extern struct edid *radeon_connector_edid(struct drm_connector *connector);
748 extern void radeon_connector_hotplug(struct drm_connector *connector);
749 extern int radeon_dp_mode_valid_helper(struct drm_connector *connector,
751 extern void radeon_dp_set_link_config(struct drm_connector *connector,
754 struct drm_connector *connector);
759 struct drm_connector *connector);
760 int radeon_dp_get_max_link_rate(struct drm_connector *connector,
762 extern void radeon_dp_set_rx_power_state(struct drm_connector *connector,
844 extern bool atombios_set_edp_panel_power(struct drm_connector *connector, int action);
994 void radeon_fb_add_connector(struct radeon_device *rdev, struct drm_connector *connector);
995 void radeon_fb_remove_connector(struct radeon_device *rdev, struct drm_connector *connector);
H A Dradeon_audio.h49 struct drm_connector *connector, struct drm_display_mode *mode);
70 void radeon_audio_detect(struct drm_connector *connector,
H A Dradeon_irq_kms.c70 * was a hot plug interrupt. It walks the connector table
80 struct drm_connector *connector; radeon_hotplug_work_func() local
89 list_for_each_entry(connector, &mode_config->connector_list, head) radeon_hotplug_work_func()
90 radeon_connector_hotplug(connector); radeon_hotplug_work_func()
103 struct drm_connector *connector; radeon_dp_work_func() local
107 list_for_each_entry(connector, &mode_config->connector_list, head) radeon_dp_work_func()
108 radeon_connector_hotplug(connector); radeon_dp_work_func()
H A Dradeon_fb.c391 void radeon_fb_add_connector(struct radeon_device *rdev, struct drm_connector *connector) radeon_fb_add_connector() argument
393 drm_fb_helper_add_one_connector(&rdev->mode_info.rfbdev->helper, connector); radeon_fb_add_connector()
396 void radeon_fb_remove_connector(struct radeon_device *rdev, struct drm_connector *connector) radeon_fb_remove_connector() argument
398 drm_fb_helper_remove_one_connector(&rdev->mode_info.rfbdev->helper, connector); radeon_fb_remove_connector()
/linux-4.4.14/drivers/gpu/drm/fsl-dcu/
H A Dfsl_dcu_drm_rgb.c69 static void fsl_dcu_drm_connector_destroy(struct drm_connector *connector) fsl_dcu_drm_connector_destroy() argument
71 drm_connector_unregister(connector); fsl_dcu_drm_connector_destroy()
72 drm_connector_cleanup(connector); fsl_dcu_drm_connector_destroy()
76 fsl_dcu_drm_connector_detect(struct drm_connector *connector, bool force) fsl_dcu_drm_connector_detect() argument
92 fsl_dcu_drm_connector_best_encoder(struct drm_connector *connector) fsl_dcu_drm_connector_best_encoder() argument
94 struct fsl_dcu_drm_connector *fsl_con = to_fsl_dcu_connector(connector); fsl_dcu_drm_connector_best_encoder()
99 static int fsl_dcu_drm_connector_get_modes(struct drm_connector *connector) fsl_dcu_drm_connector_get_modes() argument
105 fsl_connector = to_fsl_dcu_connector(connector); fsl_dcu_drm_connector_get_modes()
115 static int fsl_dcu_drm_connector_mode_valid(struct drm_connector *connector, fsl_dcu_drm_connector_mode_valid() argument
133 struct drm_connector *connector = &fsl_dev->connector.base; fsl_dcu_drm_connector_create() local
138 fsl_dev->connector.encoder = encoder; fsl_dcu_drm_connector_create()
140 ret = drm_connector_init(fsl_dev->drm, connector, fsl_dcu_drm_connector_create()
146 drm_connector_helper_add(connector, &connector_helper_funcs); fsl_dcu_drm_connector_create()
147 ret = drm_connector_register(connector); fsl_dcu_drm_connector_create()
151 ret = drm_mode_connector_attach_encoder(connector, encoder); fsl_dcu_drm_connector_create()
155 drm_object_property_set_value(&connector->base, fsl_dcu_drm_connector_create()
161 fsl_dev->connector.panel = of_drm_find_panel(panel_node); fsl_dcu_drm_connector_create()
162 if (!fsl_dev->connector.panel) { fsl_dcu_drm_connector_create()
169 ret = drm_panel_attach(fsl_dev->connector.panel, connector); fsl_dcu_drm_connector_create()
178 drm_connector_unregister(connector); fsl_dcu_drm_connector_create()
180 drm_connector_cleanup(connector); fsl_dcu_drm_connector_create()
/linux-4.4.14/drivers/gpu/drm/i915/
H A Dintel_modes.c35 * intel_connector_update_modes - update connector from edid
36 * @connector: DRM connector device to use
39 int intel_connector_update_modes(struct drm_connector *connector, intel_connector_update_modes() argument
44 drm_mode_connector_update_edid_property(connector, edid); intel_connector_update_modes()
45 ret = drm_add_edid_modes(connector, edid); intel_connector_update_modes()
46 drm_edid_to_eld(connector, edid); intel_connector_update_modes()
53 * @connector: DRM connector device to use
56 * Fetch the EDID information from @connector using the DDC bus.
58 int intel_ddc_get_modes(struct drm_connector *connector, intel_ddc_get_modes() argument
64 edid = drm_get_edid(connector, adapter); intel_ddc_get_modes()
68 ret = intel_connector_update_modes(connector, edid); intel_ddc_get_modes()
82 intel_attach_force_audio_property(struct drm_connector *connector) intel_attach_force_audio_property() argument
84 struct drm_device *dev = connector->dev; intel_attach_force_audio_property()
99 drm_object_attach_property(&connector->base, prop, 0); intel_attach_force_audio_property()
109 intel_attach_broadcast_rgb_property(struct drm_connector *connector) intel_attach_broadcast_rgb_property() argument
111 struct drm_device *dev = connector->dev; intel_attach_broadcast_rgb_property()
127 drm_object_attach_property(&connector->base, prop, 0); intel_attach_broadcast_rgb_property()
131 intel_attach_aspect_ratio_property(struct drm_connector *connector) intel_attach_aspect_ratio_property() argument
133 if (!drm_mode_create_aspect_ratio_property(connector->dev)) intel_attach_aspect_ratio_property()
134 drm_object_attach_property(&connector->base, intel_attach_aspect_ratio_property()
135 connector->dev->mode_config.aspect_ratio_property, intel_attach_aspect_ratio_property()
H A Dintel_panel.c53 * @connector: LVDS/eDP connector
61 struct drm_connector *connector) intel_find_panel_downclock()
69 list_for_each_entry(scan, &connector->probed_modes, head) { intel_find_panel_downclock()
428 static inline u32 scale_user_to_hw(struct intel_connector *connector, scale_user_to_hw() argument
431 struct intel_panel *panel = &connector->panel; scale_user_to_hw()
439 static inline u32 clamp_user_to_hw(struct intel_connector *connector, clamp_user_to_hw() argument
442 struct intel_panel *panel = &connector->panel; clamp_user_to_hw()
452 static inline u32 scale_hw_to_user(struct intel_connector *connector, scale_hw_to_user() argument
455 struct intel_panel *panel = &connector->panel; scale_hw_to_user()
461 static u32 intel_panel_compute_brightness(struct intel_connector *connector, intel_panel_compute_brightness() argument
464 struct drm_device *dev = connector->base.dev; intel_panel_compute_brightness()
466 struct intel_panel *panel = &connector->panel; intel_panel_compute_brightness()
481 static u32 lpt_get_backlight(struct intel_connector *connector) lpt_get_backlight() argument
483 struct drm_device *dev = connector->base.dev; lpt_get_backlight()
489 static u32 pch_get_backlight(struct intel_connector *connector) pch_get_backlight() argument
491 struct drm_device *dev = connector->base.dev; pch_get_backlight()
497 static u32 i9xx_get_backlight(struct intel_connector *connector) i9xx_get_backlight() argument
499 struct drm_device *dev = connector->base.dev; i9xx_get_backlight()
501 struct intel_panel *panel = &connector->panel; i9xx_get_backlight()
528 static u32 vlv_get_backlight(struct intel_connector *connector) vlv_get_backlight() argument
530 struct drm_device *dev = connector->base.dev; vlv_get_backlight()
531 enum pipe pipe = intel_get_pipe_from_connector(connector); vlv_get_backlight()
536 static u32 bxt_get_backlight(struct intel_connector *connector) bxt_get_backlight() argument
538 struct drm_device *dev = connector->base.dev; bxt_get_backlight()
539 struct intel_panel *panel = &connector->panel; bxt_get_backlight()
545 static u32 pwm_get_backlight(struct intel_connector *connector) pwm_get_backlight() argument
547 struct intel_panel *panel = &connector->panel; pwm_get_backlight()
554 static u32 intel_panel_get_backlight(struct intel_connector *connector) intel_panel_get_backlight() argument
556 struct drm_device *dev = connector->base.dev; intel_panel_get_backlight()
558 struct intel_panel *panel = &connector->panel; intel_panel_get_backlight()
564 val = panel->backlight.get(connector); intel_panel_get_backlight()
565 val = intel_panel_compute_brightness(connector, val); intel_panel_get_backlight()
574 static void lpt_set_backlight(struct intel_connector *connector, u32 level) lpt_set_backlight() argument
576 struct drm_device *dev = connector->base.dev; lpt_set_backlight()
582 static void pch_set_backlight(struct intel_connector *connector, u32 level) pch_set_backlight() argument
584 struct drm_device *dev = connector->base.dev; pch_set_backlight()
592 static void i9xx_set_backlight(struct intel_connector *connector, u32 level) i9xx_set_backlight() argument
594 struct drm_device *dev = connector->base.dev; i9xx_set_backlight()
596 struct intel_panel *panel = &connector->panel; i9xx_set_backlight()
620 static void vlv_set_backlight(struct intel_connector *connector, u32 level) vlv_set_backlight() argument
622 struct drm_device *dev = connector->base.dev; vlv_set_backlight()
624 enum pipe pipe = intel_get_pipe_from_connector(connector); vlv_set_backlight()
634 static void bxt_set_backlight(struct intel_connector *connector, u32 level) bxt_set_backlight() argument
636 struct drm_device *dev = connector->base.dev; bxt_set_backlight()
638 struct intel_panel *panel = &connector->panel; bxt_set_backlight()
643 static void pwm_set_backlight(struct intel_connector *connector, u32 level) pwm_set_backlight() argument
645 struct intel_panel *panel = &connector->panel; pwm_set_backlight()
652 intel_panel_actually_set_backlight(struct intel_connector *connector, u32 level) intel_panel_actually_set_backlight() argument
654 struct intel_panel *panel = &connector->panel; intel_panel_actually_set_backlight()
658 level = intel_panel_compute_brightness(connector, level); intel_panel_actually_set_backlight()
659 panel->backlight.set(connector, level); intel_panel_actually_set_backlight()
663 static void intel_panel_set_backlight(struct intel_connector *connector, intel_panel_set_backlight() argument
666 struct drm_device *dev = connector->base.dev; intel_panel_set_backlight()
668 struct intel_panel *panel = &connector->panel; intel_panel_set_backlight()
678 hw_level = scale_user_to_hw(connector, user_level, user_max); intel_panel_set_backlight()
682 intel_panel_actually_set_backlight(connector, hw_level); intel_panel_set_backlight()
690 void intel_panel_set_backlight_acpi(struct intel_connector *connector, intel_panel_set_backlight_acpi() argument
693 struct drm_device *dev = connector->base.dev; intel_panel_set_backlight_acpi()
695 struct intel_panel *panel = &connector->panel; intel_panel_set_backlight_acpi()
696 enum pipe pipe = intel_get_pipe_from_connector(connector); intel_panel_set_backlight_acpi()
712 hw_level = clamp_user_to_hw(connector, user_level, user_max); intel_panel_set_backlight_acpi()
717 scale_hw_to_user(connector, intel_panel_set_backlight_acpi()
722 intel_panel_actually_set_backlight(connector, hw_level); intel_panel_set_backlight_acpi()
727 static void lpt_disable_backlight(struct intel_connector *connector) lpt_disable_backlight() argument
729 struct drm_device *dev = connector->base.dev; lpt_disable_backlight()
733 intel_panel_actually_set_backlight(connector, 0); lpt_disable_backlight()
753 static void pch_disable_backlight(struct intel_connector *connector) pch_disable_backlight() argument
755 struct drm_device *dev = connector->base.dev; pch_disable_backlight()
759 intel_panel_actually_set_backlight(connector, 0); pch_disable_backlight()
768 static void i9xx_disable_backlight(struct intel_connector *connector) i9xx_disable_backlight() argument
770 intel_panel_actually_set_backlight(connector, 0); i9xx_disable_backlight()
773 static void i965_disable_backlight(struct intel_connector *connector) i965_disable_backlight() argument
775 struct drm_device *dev = connector->base.dev; i965_disable_backlight()
779 intel_panel_actually_set_backlight(connector, 0); i965_disable_backlight()
785 static void vlv_disable_backlight(struct intel_connector *connector) vlv_disable_backlight() argument
787 struct drm_device *dev = connector->base.dev; vlv_disable_backlight()
789 enum pipe pipe = intel_get_pipe_from_connector(connector); vlv_disable_backlight()
795 intel_panel_actually_set_backlight(connector, 0); vlv_disable_backlight()
801 static void bxt_disable_backlight(struct intel_connector *connector) bxt_disable_backlight() argument
803 struct drm_device *dev = connector->base.dev; bxt_disable_backlight()
805 struct intel_panel *panel = &connector->panel; bxt_disable_backlight()
808 intel_panel_actually_set_backlight(connector, 0); bxt_disable_backlight()
821 static void pwm_disable_backlight(struct intel_connector *connector) pwm_disable_backlight() argument
823 struct intel_panel *panel = &connector->panel; pwm_disable_backlight()
831 void intel_panel_disable_backlight(struct intel_connector *connector) intel_panel_disable_backlight() argument
833 struct drm_device *dev = connector->base.dev; intel_panel_disable_backlight()
835 struct intel_panel *panel = &connector->panel; intel_panel_disable_backlight()
856 panel->backlight.disable(connector); intel_panel_disable_backlight()
861 static void lpt_enable_backlight(struct intel_connector *connector) lpt_enable_backlight() argument
863 struct drm_device *dev = connector->base.dev; lpt_enable_backlight()
865 struct intel_panel *panel = &connector->panel; lpt_enable_backlight()
891 intel_panel_actually_set_backlight(connector, panel->backlight.level); lpt_enable_backlight()
894 static void pch_enable_backlight(struct intel_connector *connector) pch_enable_backlight() argument
896 struct drm_device *dev = connector->base.dev; pch_enable_backlight()
898 struct intel_panel *panel = &connector->panel; pch_enable_backlight()
899 enum pipe pipe = intel_get_pipe_from_connector(connector); pch_enable_backlight()
927 intel_panel_actually_set_backlight(connector, panel->backlight.level); pch_enable_backlight()
941 static void i9xx_enable_backlight(struct intel_connector *connector) i9xx_enable_backlight() argument
943 struct drm_device *dev = connector->base.dev; i9xx_enable_backlight()
945 struct intel_panel *panel = &connector->panel; i9xx_enable_backlight()
968 intel_panel_actually_set_backlight(connector, panel->backlight.level); i9xx_enable_backlight()
979 static void i965_enable_backlight(struct intel_connector *connector) i965_enable_backlight() argument
981 struct drm_device *dev = connector->base.dev; i965_enable_backlight()
983 struct intel_panel *panel = &connector->panel; i965_enable_backlight()
984 enum pipe pipe = intel_get_pipe_from_connector(connector); i965_enable_backlight()
1010 intel_panel_actually_set_backlight(connector, panel->backlight.level); i965_enable_backlight()
1013 static void vlv_enable_backlight(struct intel_connector *connector) vlv_enable_backlight() argument
1015 struct drm_device *dev = connector->base.dev; vlv_enable_backlight()
1017 struct intel_panel *panel = &connector->panel; vlv_enable_backlight()
1018 enum pipe pipe = intel_get_pipe_from_connector(connector); vlv_enable_backlight()
1035 intel_panel_actually_set_backlight(connector, panel->backlight.level); vlv_enable_backlight()
1045 static void bxt_enable_backlight(struct intel_connector *connector) bxt_enable_backlight() argument
1047 struct drm_device *dev = connector->base.dev; bxt_enable_backlight()
1049 struct intel_panel *panel = &connector->panel; bxt_enable_backlight()
1050 enum pipe pipe = intel_get_pipe_from_connector(connector); bxt_enable_backlight()
1083 intel_panel_actually_set_backlight(connector, panel->backlight.level); bxt_enable_backlight()
1095 static void pwm_enable_backlight(struct intel_connector *connector) pwm_enable_backlight() argument
1097 struct intel_panel *panel = &connector->panel; pwm_enable_backlight()
1100 intel_panel_actually_set_backlight(connector, panel->backlight.level); pwm_enable_backlight()
1103 void intel_panel_enable_backlight(struct intel_connector *connector) intel_panel_enable_backlight() argument
1105 struct drm_device *dev = connector->base.dev; intel_panel_enable_backlight()
1107 struct intel_panel *panel = &connector->panel; intel_panel_enable_backlight()
1108 enum pipe pipe = intel_get_pipe_from_connector(connector); intel_panel_enable_backlight()
1123 scale_hw_to_user(connector, intel_panel_enable_backlight()
1128 panel->backlight.enable(connector); intel_panel_enable_backlight()
1139 struct intel_connector *connector = bl_get_data(bd); intel_backlight_device_update_status() local
1140 struct intel_panel *panel = &connector->panel; intel_backlight_device_update_status()
1141 struct drm_device *dev = connector->base.dev; intel_backlight_device_update_status()
1146 intel_panel_set_backlight(connector, bd->props.brightness, intel_backlight_device_update_status()
1159 panel->backlight.power(connector, enable); intel_backlight_device_update_status()
1171 struct intel_connector *connector = bl_get_data(bd); intel_backlight_device_get_brightness() local
1172 struct drm_device *dev = connector->base.dev; intel_backlight_device_get_brightness()
1180 hw_level = intel_panel_get_backlight(connector); intel_backlight_device_get_brightness()
1181 ret = scale_hw_to_user(connector, hw_level, bd->props.max_brightness); intel_backlight_device_get_brightness()
1194 static int intel_backlight_device_register(struct intel_connector *connector) intel_backlight_device_register() argument
1196 struct intel_panel *panel = &connector->panel; intel_backlight_device_register()
1215 props.brightness = scale_hw_to_user(connector, intel_backlight_device_register()
1225 * Note: using the same name independent of the connector prevents intel_backlight_device_register()
1230 connector->base.kdev, intel_backlight_device_register()
1231 connector, intel_backlight_device_register()
1242 connector->base.name); intel_backlight_device_register()
1247 static void intel_backlight_device_unregister(struct intel_connector *connector) intel_backlight_device_unregister() argument
1249 struct intel_panel *panel = &connector->panel; intel_backlight_device_unregister()
1257 static int intel_backlight_device_register(struct intel_connector *connector) intel_backlight_device_register() argument
1261 static void intel_backlight_device_unregister(struct intel_connector *connector) intel_backlight_device_unregister() argument
1271 static u32 spt_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz) spt_hz_to_pwm() argument
1273 struct drm_device *dev = connector->base.dev; spt_hz_to_pwm()
1292 static u32 lpt_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz) lpt_hz_to_pwm() argument
1294 struct drm_device *dev = connector->base.dev; lpt_hz_to_pwm()
1315 static u32 pch_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz) pch_hz_to_pwm() argument
1317 struct drm_device *dev = connector->base.dev; pch_hz_to_pwm()
1331 static u32 i9xx_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz) i9xx_hz_to_pwm() argument
1333 struct drm_device *dev = connector->base.dev; i9xx_hz_to_pwm()
1349 static u32 i965_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz) i965_hz_to_pwm() argument
1351 struct drm_device *dev = connector->base.dev; i965_hz_to_pwm()
1363 static u32 vlv_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz) vlv_hz_to_pwm() argument
1365 struct drm_device *dev = connector->base.dev; vlv_hz_to_pwm()
1380 static u32 get_backlight_max_vbt(struct intel_connector *connector) get_backlight_max_vbt() argument
1382 struct drm_device *dev = connector->base.dev; get_backlight_max_vbt()
1384 struct intel_panel *panel = &connector->panel; get_backlight_max_vbt()
1398 pwm = panel->backlight.hz_to_pwm(connector, pwm_freq_hz); get_backlight_max_vbt()
1412 static u32 get_backlight_min_vbt(struct intel_connector *connector) get_backlight_min_vbt() argument
1414 struct drm_device *dev = connector->base.dev; get_backlight_min_vbt()
1416 struct intel_panel *panel = &connector->panel; get_backlight_min_vbt()
1438 static int lpt_setup_backlight(struct intel_connector *connector, enum pipe unused) lpt_setup_backlight() argument
1440 struct drm_device *dev = connector->base.dev; lpt_setup_backlight()
1442 struct intel_panel *panel = &connector->panel; lpt_setup_backlight()
1452 panel->backlight.max = get_backlight_max_vbt(connector); lpt_setup_backlight()
1457 panel->backlight.min = get_backlight_min_vbt(connector); lpt_setup_backlight()
1459 val = lpt_get_backlight(connector); lpt_setup_backlight()
1460 panel->backlight.level = intel_panel_compute_brightness(connector, val); lpt_setup_backlight()
1468 static int pch_setup_backlight(struct intel_connector *connector, enum pipe unused) pch_setup_backlight() argument
1470 struct drm_device *dev = connector->base.dev; pch_setup_backlight()
1472 struct intel_panel *panel = &connector->panel; pch_setup_backlight()
1482 panel->backlight.max = get_backlight_max_vbt(connector); pch_setup_backlight()
1487 panel->backlight.min = get_backlight_min_vbt(connector); pch_setup_backlight()
1489 val = pch_get_backlight(connector); pch_setup_backlight()
1490 panel->backlight.level = intel_panel_compute_brightness(connector, val); pch_setup_backlight()
1499 static int i9xx_setup_backlight(struct intel_connector *connector, enum pipe unused) i9xx_setup_backlight() argument
1501 struct drm_device *dev = connector->base.dev; i9xx_setup_backlight()
1503 struct intel_panel *panel = &connector->panel; i9xx_setup_backlight()
1517 panel->backlight.max = get_backlight_max_vbt(connector); i9xx_setup_backlight()
1527 panel->backlight.min = get_backlight_min_vbt(connector); i9xx_setup_backlight()
1529 val = i9xx_get_backlight(connector); i9xx_setup_backlight()
1530 panel->backlight.level = intel_panel_compute_brightness(connector, val); i9xx_setup_backlight()
1537 static int i965_setup_backlight(struct intel_connector *connector, enum pipe unused) i965_setup_backlight() argument
1539 struct drm_device *dev = connector->base.dev; i965_setup_backlight()
1541 struct intel_panel *panel = &connector->panel; i965_setup_backlight()
1552 panel->backlight.max = get_backlight_max_vbt(connector); i965_setup_backlight()
1560 panel->backlight.min = get_backlight_min_vbt(connector); i965_setup_backlight()
1562 val = i9xx_get_backlight(connector); i965_setup_backlight()
1563 panel->backlight.level = intel_panel_compute_brightness(connector, val); i965_setup_backlight()
1571 static int vlv_setup_backlight(struct intel_connector *connector, enum pipe pipe) vlv_setup_backlight() argument
1573 struct drm_device *dev = connector->base.dev; vlv_setup_backlight()
1575 struct intel_panel *panel = &connector->panel; vlv_setup_backlight()
1588 panel->backlight.max = get_backlight_max_vbt(connector); vlv_setup_backlight()
1593 panel->backlight.min = get_backlight_min_vbt(connector); vlv_setup_backlight()
1596 panel->backlight.level = intel_panel_compute_brightness(connector, val); vlv_setup_backlight()
1605 bxt_setup_backlight(struct intel_connector *connector, enum pipe unused) bxt_setup_backlight() argument
1607 struct drm_device *dev = connector->base.dev; bxt_setup_backlight()
1609 struct intel_panel *panel = &connector->panel; bxt_setup_backlight()
1636 panel->backlight.max = get_backlight_max_vbt(connector); bxt_setup_backlight()
1641 val = bxt_get_backlight(connector); bxt_setup_backlight()
1642 panel->backlight.level = intel_panel_compute_brightness(connector, val); bxt_setup_backlight()
1650 static int pwm_setup_backlight(struct intel_connector *connector, pwm_setup_backlight() argument
1653 struct drm_device *dev = connector->base.dev; pwm_setup_backlight()
1654 struct intel_panel *panel = &connector->panel; pwm_setup_backlight()
1684 int intel_panel_setup_backlight(struct drm_connector *connector, enum pipe pipe) intel_panel_setup_backlight() argument
1686 struct drm_device *dev = connector->dev; intel_panel_setup_backlight()
1688 struct intel_connector *intel_connector = to_intel_connector(connector); intel_panel_setup_backlight()
1711 DRM_DEBUG_KMS("failed to setup backlight for connector %s\n", intel_panel_setup_backlight()
1712 connector->name); intel_panel_setup_backlight()
1719 connector->name, intel_panel_setup_backlight()
1726 void intel_panel_destroy_backlight(struct drm_connector *connector) intel_panel_destroy_backlight() argument
1728 struct intel_connector *intel_connector = to_intel_connector(connector); intel_panel_destroy_backlight()
1829 struct intel_connector *connector; intel_backlight_register() local
1831 list_for_each_entry(connector, &dev->mode_config.connector_list, base.head) intel_backlight_register()
1832 intel_backlight_device_register(connector); intel_backlight_register()
1837 struct intel_connector *connector; intel_backlight_unregister() local
1839 list_for_each_entry(connector, &dev->mode_config.connector_list, base.head) intel_backlight_unregister()
1840 intel_backlight_device_unregister(connector); intel_backlight_unregister()
59 intel_find_panel_downclock(struct drm_device *dev, struct drm_display_mode *fixed_mode, struct drm_connector *connector) intel_find_panel_downclock() argument
H A Dintel_dp_mst.c45 struct intel_connector *connector, *found = NULL; intel_dp_mst_compute_config() local
68 connector = to_intel_connector(drm_connector); for_each_connector_in_state()
71 found = connector; for_each_connector_in_state()
77 DRM_ERROR("can't find connector\n");
150 struct intel_connector *found = NULL, *connector; intel_mst_pre_enable_dp() local
155 for_each_intel_connector(dev, connector) { for_each_intel_connector()
156 if (connector->base.state->best_encoder == &encoder->base) { for_each_intel_connector()
157 found = connector; for_each_intel_connector()
163 DRM_ERROR("can't find connector\n");
167 /* MST encoders are bound to a crtc, not to a connector,
290 static int intel_dp_mst_get_ddc_modes(struct drm_connector *connector) intel_dp_mst_get_ddc_modes() argument
292 struct intel_connector *intel_connector = to_intel_connector(connector); intel_dp_mst_get_ddc_modes()
297 edid = drm_dp_mst_get_edid(connector, &intel_dp->mst_mgr, intel_connector->port); intel_dp_mst_get_ddc_modes()
301 ret = intel_connector_update_modes(connector, edid); intel_dp_mst_get_ddc_modes()
308 intel_dp_mst_detect(struct drm_connector *connector, bool force) intel_dp_mst_detect() argument
310 struct intel_connector *intel_connector = to_intel_connector(connector); intel_dp_mst_detect()
313 return drm_dp_mst_detect_port(connector, &intel_dp->mst_mgr, intel_connector->port); intel_dp_mst_detect()
317 intel_dp_mst_set_property(struct drm_connector *connector, intel_dp_mst_set_property() argument
325 intel_dp_mst_connector_destroy(struct drm_connector *connector) intel_dp_mst_connector_destroy() argument
327 struct intel_connector *intel_connector = to_intel_connector(connector); intel_dp_mst_connector_destroy()
332 drm_connector_cleanup(connector); intel_dp_mst_connector_destroy()
333 kfree(connector); intel_dp_mst_connector_destroy()
347 static int intel_dp_mst_get_modes(struct drm_connector *connector) intel_dp_mst_get_modes() argument
349 return intel_dp_mst_get_ddc_modes(connector); intel_dp_mst_get_modes()
353 intel_dp_mst_mode_valid(struct drm_connector *connector, intel_dp_mst_mode_valid() argument
366 static struct drm_encoder *intel_mst_atomic_best_encoder(struct drm_connector *connector, intel_mst_atomic_best_encoder() argument
369 struct intel_connector *intel_connector = to_intel_connector(connector); intel_mst_atomic_best_encoder()
376 static struct drm_encoder *intel_mst_best_encoder(struct drm_connector *connector) intel_mst_best_encoder() argument
378 struct intel_connector *intel_connector = to_intel_connector(connector); intel_mst_best_encoder()
402 static bool intel_dp_mst_get_hw_state(struct intel_connector *connector) intel_dp_mst_get_hw_state() argument
404 if (connector->encoder && connector->base.state->crtc) { intel_dp_mst_get_hw_state()
406 if (!connector->encoder->get_hw_state(connector->encoder, &pipe)) intel_dp_mst_get_hw_state()
413 static void intel_connector_add_to_fbdev(struct intel_connector *connector) intel_connector_add_to_fbdev() argument
416 struct drm_i915_private *dev_priv = to_i915(connector->base.dev); intel_connector_add_to_fbdev()
417 drm_fb_helper_add_one_connector(&dev_priv->fbdev->helper, &connector->base); intel_connector_add_to_fbdev()
421 static void intel_connector_remove_from_fbdev(struct intel_connector *connector) intel_connector_remove_from_fbdev() argument
424 struct drm_i915_private *dev_priv = to_i915(connector->base.dev); intel_connector_remove_from_fbdev()
425 drm_fb_helper_remove_one_connector(&dev_priv->fbdev->helper, &connector->base); intel_connector_remove_from_fbdev()
435 struct drm_connector *connector; intel_dp_add_mst_connector() local
442 connector = &intel_connector->base; intel_dp_add_mst_connector()
443 drm_connector_init(dev, connector, &intel_dp_mst_connector_funcs, DRM_MODE_CONNECTOR_DisplayPort); intel_dp_add_mst_connector()
444 drm_connector_helper_add(connector, &intel_dp_mst_connector_helper_funcs); intel_dp_add_mst_connector()
455 intel_dp_add_properties(intel_dp, connector); intel_dp_add_mst_connector()
457 drm_object_attach_property(&connector->base, dev->mode_config.path_property, 0); intel_dp_add_mst_connector()
458 drm_object_attach_property(&connector->base, dev->mode_config.tile_property, 0); intel_dp_add_mst_connector()
460 drm_mode_connector_set_path_property(connector, pathprop); intel_dp_add_mst_connector()
461 return connector; intel_dp_add_mst_connector()
464 static void intel_dp_register_mst_connector(struct drm_connector *connector) intel_dp_register_mst_connector() argument
466 struct intel_connector *intel_connector = to_intel_connector(connector); intel_dp_register_mst_connector()
467 struct drm_device *dev = connector->dev; intel_dp_register_mst_connector()
475 struct drm_connector *connector) intel_dp_destroy_mst_connector()
477 struct intel_connector *intel_connector = to_intel_connector(connector); intel_dp_destroy_mst_connector()
478 struct drm_device *dev = connector->dev; intel_dp_destroy_mst_connector()
482 /* need to nuke the connector */ intel_dp_destroy_mst_connector()
484 if (connector->state->crtc) { intel_dp_destroy_mst_connector()
489 set.crtc = connector->state->crtc, intel_dp_destroy_mst_connector()
497 drm_connector_cleanup(connector); intel_dp_destroy_mst_connector()
474 intel_dp_destroy_mst_connector(struct drm_dp_mst_topology_mgr *mgr, struct drm_connector *connector) intel_dp_destroy_mst_connector() argument
H A Dintel_crt.c49 /* DPMS state is stored in the connector, which we need in the
51 struct intel_connector *connector; member in struct:intel_crt
61 static struct intel_crt *intel_attached_crt(struct drm_connector *connector) intel_attached_crt() argument
63 return intel_encoder_to_crt(intel_attached_encoder(connector)); intel_attached_crt()
211 intel_crt_set_dpms(encoder, crt->connector->base.dpms); intel_enable_crt()
215 intel_crt_mode_valid(struct drm_connector *connector, intel_crt_mode_valid() argument
218 struct drm_device *dev = connector->dev; intel_crt_mode_valid()
273 static bool intel_ironlake_crt_detect_hotplug(struct drm_connector *connector) intel_ironlake_crt_detect_hotplug() argument
275 struct drm_device *dev = connector->dev; intel_ironlake_crt_detect_hotplug()
276 struct intel_crt *crt = intel_attached_crt(connector); intel_ironlake_crt_detect_hotplug()
318 static bool valleyview_crt_detect_hotplug(struct drm_connector *connector) valleyview_crt_detect_hotplug() argument
320 struct drm_device *dev = connector->dev; valleyview_crt_detect_hotplug()
321 struct intel_crt *crt = intel_attached_crt(connector); valleyview_crt_detect_hotplug()
360 static bool intel_crt_detect_hotplug(struct drm_connector *connector) intel_crt_detect_hotplug() argument
362 struct drm_device *dev = connector->dev; intel_crt_detect_hotplug()
369 return intel_ironlake_crt_detect_hotplug(connector); intel_crt_detect_hotplug()
372 return valleyview_crt_detect_hotplug(connector); intel_crt_detect_hotplug()
408 static struct edid *intel_crt_get_edid(struct drm_connector *connector, intel_crt_get_edid() argument
413 edid = drm_get_edid(connector, i2c); intel_crt_get_edid()
418 edid = drm_get_edid(connector, i2c); intel_crt_get_edid()
426 static int intel_crt_ddc_get_modes(struct drm_connector *connector, intel_crt_ddc_get_modes() argument
432 edid = intel_crt_get_edid(connector, adapter); intel_crt_ddc_get_modes()
436 ret = intel_connector_update_modes(connector, edid); intel_crt_ddc_get_modes()
442 static bool intel_crt_detect_ddc(struct drm_connector *connector) intel_crt_detect_ddc() argument
444 struct intel_crt *crt = intel_attached_crt(connector); intel_crt_detect_ddc()
452 edid = intel_crt_get_edid(connector, i2c); intel_crt_detect_ddc()
458 * This may be a DVI-I connector with a shared DDC intel_crt_detect_ddc()
598 intel_crt_detect(struct drm_connector *connector, bool force) intel_crt_detect() argument
600 struct drm_device *dev = connector->dev; intel_crt_detect()
602 struct intel_crt *crt = intel_attached_crt(connector); intel_crt_detect()
610 connector->base.id, connector->name, intel_crt_detect()
621 if (intel_crt_detect_hotplug(connector)) { intel_crt_detect()
629 if (intel_crt_detect_ddc(connector)) { intel_crt_detect()
644 status = connector->status; intel_crt_detect()
651 if (intel_get_load_detect_pipe(connector, NULL, &tmp, &ctx)) { intel_crt_detect()
652 if (intel_crt_detect_ddc(connector)) intel_crt_detect()
658 intel_release_load_detect_pipe(connector, &tmp, &ctx); intel_crt_detect()
670 static void intel_crt_destroy(struct drm_connector *connector) intel_crt_destroy() argument
672 drm_connector_cleanup(connector); intel_crt_destroy()
673 kfree(connector); intel_crt_destroy()
676 static int intel_crt_get_modes(struct drm_connector *connector) intel_crt_get_modes() argument
678 struct drm_device *dev = connector->dev; intel_crt_get_modes()
680 struct intel_crt *crt = intel_attached_crt(connector); intel_crt_get_modes()
690 ret = intel_crt_ddc_get_modes(connector, i2c); intel_crt_get_modes()
696 ret = intel_crt_ddc_get_modes(connector, i2c); intel_crt_get_modes()
704 static int intel_crt_set_property(struct drm_connector *connector, intel_crt_set_property() argument
711 static void intel_crt_reset(struct drm_connector *connector) intel_crt_reset() argument
713 struct drm_device *dev = connector->dev; intel_crt_reset()
715 struct intel_crt *crt = intel_attached_crt(connector); intel_crt_reset()
786 struct drm_connector *connector; intel_crt_init() local
805 connector = &intel_connector->base; intel_crt_init()
806 crt->connector = intel_connector; intel_crt_init()
823 connector->interlace_allowed = 0; intel_crt_init()
825 connector->interlace_allowed = 1; intel_crt_init()
826 connector->doublescan_allowed = 0; intel_crt_init()
855 drm_connector_helper_add(connector, &intel_crt_connector_helper_funcs); intel_crt_init()
857 drm_connector_register(connector); intel_crt_init()
879 intel_crt_reset(connector); intel_crt_init()
H A Dintel_hotplug.c54 * processing on the connector.
56 * The regular hotplug work function i915_hotplug_work_func() calls connector
57 * detect hooks, and, if connector status changes, triggers sending of hotplug
151 struct drm_connector *connector; intel_hpd_irq_storm_disable() local
157 list_for_each_entry(connector, &mode_config->connector_list, head) { intel_hpd_irq_storm_disable()
158 if (connector->polled != DRM_CONNECTOR_POLL_HPD) intel_hpd_irq_storm_disable()
161 intel_connector = to_intel_connector(connector); intel_hpd_irq_storm_disable()
171 DRM_INFO("HPD interrupt storm detected on connector %s: " intel_hpd_irq_storm_disable()
173 connector->name); intel_hpd_irq_storm_disable()
176 connector->polled = DRM_CONNECTOR_POLL_CONNECT intel_hpd_irq_storm_disable()
202 struct drm_connector *connector; for_each_hpd_pin() local
209 list_for_each_entry(connector, &mode_config->connector_list, head) { for_each_hpd_pin()
210 struct intel_connector *intel_connector = to_intel_connector(connector); for_each_hpd_pin()
213 if (connector->polled != intel_connector->polled) for_each_hpd_pin()
214 DRM_DEBUG_DRIVER("Reenabling HPD on connector %s\n", for_each_hpd_pin()
215 connector->name); for_each_hpd_pin()
216 connector->polled = intel_connector->polled; for_each_hpd_pin()
217 if (!connector->polled) for_each_hpd_pin()
218 connector->polled = DRM_CONNECTOR_POLL_HPD; for_each_hpd_pin()
230 struct drm_connector *connector) intel_hpd_irq_event()
235 old_status = connector->status; intel_hpd_irq_event()
237 connector->status = connector->funcs->detect(connector, false); intel_hpd_irq_event()
238 if (old_status == connector->status) intel_hpd_irq_event()
242 connector->base.id, intel_hpd_irq_event()
243 connector->name, intel_hpd_irq_event()
245 drm_get_connector_status_name(connector->status)); intel_hpd_irq_event()
309 struct drm_connector *connector; i915_hotplug_work_func() local
326 list_for_each_entry(connector, &mode_config->connector_list, head) { i915_hotplug_work_func()
327 intel_connector = to_intel_connector(connector); i915_hotplug_work_func()
333 connector->name, intel_encoder->hpd_pin); i915_hotplug_work_func()
336 if (intel_hpd_irq_event(dev, connector)) i915_hotplug_work_func()
461 struct drm_connector *connector; intel_hpd_init() local
468 list_for_each_entry(connector, &mode_config->connector_list, head) {
469 struct intel_connector *intel_connector = to_intel_connector(connector);
470 connector->polled = intel_connector->polled;
477 if (!connector->polled && I915_HAS_HOTPLUG(dev) &&
479 connector->polled = DRM_CONNECTOR_POLL_HPD;
229 intel_hpd_irq_event(struct drm_device *dev, struct drm_connector *connector) intel_hpd_irq_event() argument
H A Dintel_dvo.c110 static struct intel_dvo *intel_attached_dvo(struct drm_connector *connector) intel_attached_dvo() argument
112 return enc_to_dvo(intel_attached_encoder(connector)); intel_attached_dvo()
115 static bool intel_dvo_connector_get_hw_state(struct intel_connector *connector) intel_dvo_connector_get_hw_state() argument
117 struct drm_device *dev = connector->base.dev; intel_dvo_connector_get_hw_state()
119 struct intel_dvo *intel_dvo = intel_attached_dvo(&connector->base); intel_dvo_connector_get_hw_state()
201 intel_dvo_mode_valid(struct drm_connector *connector, intel_dvo_mode_valid() argument
204 struct intel_dvo *intel_dvo = intel_attached_dvo(connector); intel_dvo_mode_valid()
206 to_intel_connector(connector)->panel.fixed_mode; intel_dvo_mode_valid()
207 int max_dotclk = to_i915(connector->dev)->max_dotclk_freq; intel_dvo_mode_valid()
303 intel_dvo_detect(struct drm_connector *connector, bool force) intel_dvo_detect() argument
305 struct intel_dvo *intel_dvo = intel_attached_dvo(connector); intel_dvo_detect()
307 connector->base.id, connector->name); intel_dvo_detect()
311 static int intel_dvo_get_modes(struct drm_connector *connector) intel_dvo_get_modes() argument
313 struct drm_i915_private *dev_priv = connector->dev->dev_private; intel_dvo_get_modes()
315 to_intel_connector(connector)->panel.fixed_mode; intel_dvo_get_modes()
322 intel_ddc_get_modes(connector, intel_dvo_get_modes()
324 if (!list_empty(&connector->probed_modes)) intel_dvo_get_modes()
329 mode = drm_mode_duplicate(connector->dev, fixed_mode); intel_dvo_get_modes()
331 drm_mode_probed_add(connector, mode); intel_dvo_get_modes()
339 static void intel_dvo_destroy(struct drm_connector *connector) intel_dvo_destroy() argument
341 drm_connector_cleanup(connector); intel_dvo_destroy()
342 intel_panel_fini(&to_intel_connector(connector)->panel); intel_dvo_destroy()
343 kfree(connector); intel_dvo_destroy()
383 intel_dvo_get_current_mode(struct drm_connector *connector) intel_dvo_get_current_mode() argument
385 struct drm_device *dev = connector->dev; intel_dvo_get_current_mode()
387 struct intel_dvo *intel_dvo = intel_attached_dvo(connector); intel_dvo_get_current_mode()
450 struct drm_connector *connector = &intel_connector->base; intel_dvo_init() local
510 drm_connector_init(dev, connector,
517 drm_connector_init(dev, connector,
524 drm_connector_helper_add(connector,
526 connector->display_info.subpixel_order = SubPixelHorizontalRGB;
527 connector->interlace_allowed = false;
528 connector->doublescan_allowed = false;
540 intel_dvo_get_current_mode(connector),
545 drm_connector_register(connector);
H A Dintel_lvds.c65 static struct intel_lvds_connector *to_lvds_connector(struct drm_connector *connector) to_lvds_connector() argument
67 return container_of(connector, struct intel_lvds_connector, base.base); to_lvds_connector()
282 intel_lvds_mode_valid(struct drm_connector *connector, intel_lvds_mode_valid() argument
285 struct intel_connector *intel_connector = to_intel_connector(connector); intel_lvds_mode_valid()
287 int max_pixclk = to_i915(connector->dev)->max_dotclk_freq; intel_lvds_mode_valid()
365 intel_lvds_detect(struct drm_connector *connector, bool force) intel_lvds_detect() argument
367 struct drm_device *dev = connector->dev; intel_lvds_detect()
371 connector->base.id, connector->name); intel_lvds_detect()
383 static int intel_lvds_get_modes(struct drm_connector *connector) intel_lvds_get_modes() argument
385 struct intel_lvds_connector *lvds_connector = to_lvds_connector(connector); intel_lvds_get_modes()
386 struct drm_device *dev = connector->dev; intel_lvds_get_modes()
391 return drm_add_edid_modes(connector, lvds_connector->base.edid); intel_lvds_get_modes()
397 drm_mode_probed_add(connector, mode); intel_lvds_get_modes()
436 struct drm_connector *connector = &lvds_connector->base.base; intel_lid_notify() local
437 struct drm_device *dev = connector->dev; intel_lid_notify()
447 * check and update the status of LVDS connector after receiving intel_lid_notify()
450 connector->status = connector->funcs->detect(connector, false); intel_lid_notify()
487 * @connector: connector to free
489 * Unregister the DDC bus for this connector then free the driver private
492 static void intel_lvds_destroy(struct drm_connector *connector) intel_lvds_destroy() argument
495 to_lvds_connector(connector); intel_lvds_destroy()
505 drm_connector_cleanup(connector); intel_lvds_destroy()
506 kfree(connector); intel_lvds_destroy()
509 static int intel_lvds_set_property(struct drm_connector *connector, intel_lvds_set_property() argument
513 struct intel_connector *intel_connector = to_intel_connector(connector); intel_lvds_set_property()
514 struct drm_device *dev = connector->dev; intel_lvds_set_property()
530 crtc = intel_attached_encoder(connector)->base.crtc; intel_lvds_set_property()
925 * Create the connector, register the LVDS DDC bus, and try to figure out what
935 struct drm_connector *connector; intel_lvds_init() local
1023 connector = &intel_connector->base; intel_lvds_init()
1055 drm_connector_helper_add(connector, &intel_lvds_connector_helper_funcs); intel_lvds_init()
1056 connector->display_info.subpixel_order = SubPixelHorizontalRGB; intel_lvds_init()
1057 connector->interlace_allowed = false; intel_lvds_init()
1058 connector->doublescan_allowed = false; intel_lvds_init()
1064 drm_object_attach_property(&connector->base, intel_lvds_init()
1083 edid = drm_get_edid(connector, intel_gmbus_get_adapter(dev_priv, pin)); intel_lvds_init()
1085 if (drm_add_edid_modes(connector, edid)) { intel_lvds_init()
1086 drm_mode_connector_update_edid_property(connector, intel_lvds_init()
1102 connector->display_info.min_vfreq = 0; intel_lvds_init()
1103 connector->display_info.max_vfreq = 200; intel_lvds_init()
1104 connector->display_info.min_hfreq = 0; intel_lvds_init()
1105 connector->display_info.max_hfreq = 200; intel_lvds_init()
1108 list_for_each_entry(scan, &connector->probed_modes, head) { intel_lvds_init()
1175 drm_connector_register(connector); intel_lvds_init()
1177 intel_panel_setup_backlight(connector, INVALID_PIPE); intel_lvds_init()
1185 drm_connector_cleanup(connector); intel_lvds_init()
H A Dintel_sdvo.c160 /* Mark the type of connector */
216 static struct intel_sdvo *intel_attached_sdvo(struct drm_connector *connector) intel_attached_sdvo() argument
218 return to_sdvo(intel_attached_encoder(connector)); intel_attached_sdvo()
221 static struct intel_sdvo_connector *to_intel_sdvo_connector(struct drm_connector *connector) to_intel_sdvo_connector() argument
223 return container_of(to_intel_connector(connector), struct intel_sdvo_connector, base); to_intel_sdvo_connector()
1319 static bool intel_sdvo_connector_get_hw_state(struct intel_connector *connector) intel_sdvo_connector_get_hw_state() argument
1322 to_intel_sdvo_connector(&connector->base); intel_sdvo_connector_get_hw_state()
1323 struct intel_sdvo *intel_sdvo = intel_attached_sdvo(&connector->base); intel_sdvo_connector_get_hw_state()
1520 intel_sdvo_mode_valid(struct drm_connector *connector, intel_sdvo_mode_valid() argument
1523 struct intel_sdvo *intel_sdvo = intel_attached_sdvo(connector); intel_sdvo_mode_valid()
1618 intel_sdvo_get_edid(struct drm_connector *connector) intel_sdvo_get_edid() argument
1620 struct intel_sdvo *sdvo = intel_attached_sdvo(connector); intel_sdvo_get_edid()
1621 return drm_get_edid(connector, &sdvo->ddc); intel_sdvo_get_edid()
1624 /* Mac mini hack -- use the same DDC as the analog connector */
1626 intel_sdvo_get_analog_edid(struct drm_connector *connector) intel_sdvo_get_analog_edid() argument
1628 struct drm_i915_private *dev_priv = connector->dev->dev_private; intel_sdvo_get_analog_edid()
1630 return drm_get_edid(connector, intel_sdvo_get_analog_edid()
1636 intel_sdvo_tmds_sink_detect(struct drm_connector *connector) intel_sdvo_tmds_sink_detect() argument
1638 struct intel_sdvo *intel_sdvo = intel_attached_sdvo(connector); intel_sdvo_tmds_sink_detect()
1642 edid = intel_sdvo_get_edid(connector); intel_sdvo_tmds_sink_detect()
1653 edid = intel_sdvo_get_edid(connector); intel_sdvo_tmds_sink_detect()
1667 * port, try to use the CRT ddc to read the EDID for DVI-connector. intel_sdvo_tmds_sink_detect()
1670 edid = intel_sdvo_get_analog_edid(connector); intel_sdvo_tmds_sink_detect()
1674 /* DDC bus is shared, match EDID to connector type */ intel_sdvo_tmds_sink_detect()
1689 struct intel_sdvo_connector *intel_sdvo_connector = to_intel_sdvo_connector(connector); intel_sdvo_tmds_sink_detect()
1710 intel_sdvo_detect(struct drm_connector *connector, bool force) intel_sdvo_detect() argument
1713 struct intel_sdvo *intel_sdvo = intel_attached_sdvo(connector); intel_sdvo_detect()
1714 struct intel_sdvo_connector *intel_sdvo_connector = to_intel_sdvo_connector(connector); intel_sdvo_detect()
1718 connector->base.id, connector->name); intel_sdvo_detect()
1741 ret = intel_sdvo_tmds_sink_detect(connector); intel_sdvo_detect()
1746 edid = intel_sdvo_get_edid(connector); intel_sdvo_detect()
1748 edid = intel_sdvo_get_analog_edid(connector); intel_sdvo_detect()
1775 static void intel_sdvo_get_ddc_modes(struct drm_connector *connector) intel_sdvo_get_ddc_modes() argument
1780 connector->base.id, connector->name); intel_sdvo_get_ddc_modes()
1783 edid = intel_sdvo_get_edid(connector); intel_sdvo_get_ddc_modes()
1786 * Mac mini hack. On this device, the DVI-I connector shares one DDC intel_sdvo_get_ddc_modes()
1792 edid = intel_sdvo_get_analog_edid(connector); intel_sdvo_get_ddc_modes()
1795 if (intel_sdvo_connector_matches_edid(to_intel_sdvo_connector(connector), intel_sdvo_get_ddc_modes()
1797 drm_mode_connector_update_edid_property(connector, edid); intel_sdvo_get_ddc_modes()
1798 drm_add_edid_modes(connector, edid); intel_sdvo_get_ddc_modes()
1870 static void intel_sdvo_get_tv_modes(struct drm_connector *connector) intel_sdvo_get_tv_modes() argument
1872 struct intel_sdvo *intel_sdvo = intel_attached_sdvo(connector); intel_sdvo_get_tv_modes()
1878 connector->base.id, connector->name); intel_sdvo_get_tv_modes()
1901 nmode = drm_mode_duplicate(connector->dev, intel_sdvo_get_tv_modes()
1904 drm_mode_probed_add(connector, nmode); intel_sdvo_get_tv_modes()
1908 static void intel_sdvo_get_lvds_modes(struct drm_connector *connector) intel_sdvo_get_lvds_modes() argument
1910 struct intel_sdvo *intel_sdvo = intel_attached_sdvo(connector); intel_sdvo_get_lvds_modes()
1911 struct drm_i915_private *dev_priv = connector->dev->dev_private; intel_sdvo_get_lvds_modes()
1915 connector->base.id, connector->name); intel_sdvo_get_lvds_modes()
1922 newmode = drm_mode_duplicate(connector->dev, intel_sdvo_get_lvds_modes()
1928 drm_mode_probed_add(connector, newmode); intel_sdvo_get_lvds_modes()
1937 intel_ddc_get_modes(connector, &intel_sdvo->ddc); intel_sdvo_get_lvds_modes()
1939 list_for_each_entry(newmode, &connector->probed_modes, head) { intel_sdvo_get_lvds_modes()
1942 drm_mode_duplicate(connector->dev, newmode); intel_sdvo_get_lvds_modes()
1950 static int intel_sdvo_get_modes(struct drm_connector *connector) intel_sdvo_get_modes() argument
1952 struct intel_sdvo_connector *intel_sdvo_connector = to_intel_sdvo_connector(connector); intel_sdvo_get_modes()
1955 intel_sdvo_get_tv_modes(connector); intel_sdvo_get_modes()
1957 intel_sdvo_get_lvds_modes(connector); intel_sdvo_get_modes()
1959 intel_sdvo_get_ddc_modes(connector); intel_sdvo_get_modes()
1961 return !list_empty(&connector->probed_modes); intel_sdvo_get_modes()
1964 static void intel_sdvo_destroy(struct drm_connector *connector) intel_sdvo_destroy() argument
1966 struct intel_sdvo_connector *intel_sdvo_connector = to_intel_sdvo_connector(connector); intel_sdvo_destroy()
1968 drm_connector_cleanup(connector); intel_sdvo_destroy()
1972 static bool intel_sdvo_detect_hdmi_audio(struct drm_connector *connector) intel_sdvo_detect_hdmi_audio() argument
1974 struct intel_sdvo *intel_sdvo = intel_attached_sdvo(connector); intel_sdvo_detect_hdmi_audio()
1981 edid = intel_sdvo_get_edid(connector); intel_sdvo_detect_hdmi_audio()
1990 intel_sdvo_set_property(struct drm_connector *connector, intel_sdvo_set_property() argument
1994 struct intel_sdvo *intel_sdvo = intel_attached_sdvo(connector); intel_sdvo_set_property()
1995 struct intel_sdvo_connector *intel_sdvo_connector = to_intel_sdvo_connector(connector); intel_sdvo_set_property()
1996 struct drm_i915_private *dev_priv = connector->dev->dev_private; intel_sdvo_set_property()
2001 ret = drm_object_property_set_value(&connector->base, property, val); intel_sdvo_set_property()
2015 has_audio = intel_sdvo_detect_hdmi_audio(connector); intel_sdvo_set_property()
2055 if (property == connector->dev->mode_config.aspect_ratio_property) { intel_sdvo_set_property()
2094 drm_object_property_set_value(&connector->base, intel_sdvo_set_property()
2106 drm_object_property_set_value(&connector->base, intel_sdvo_set_property()
2118 drm_object_property_set_value(&connector->base, intel_sdvo_set_property()
2130 drm_object_property_set_value(&connector->base, intel_sdvo_set_property()
2356 intel_sdvo_connector_init(struct intel_sdvo_connector *connector, intel_sdvo_connector_init() argument
2362 drm_connector = &connector->base.base; intel_sdvo_connector_init()
2366 connector->base.base.connector_type); intel_sdvo_connector_init()
2373 connector->base.base.interlace_allowed = 1; intel_sdvo_connector_init()
2374 connector->base.base.doublescan_allowed = 0; intel_sdvo_connector_init()
2375 connector->base.base.display_info.subpixel_order = SubPixelHorizontalRGB; intel_sdvo_connector_init()
2376 connector->base.get_hw_state = intel_sdvo_connector_get_hw_state; intel_sdvo_connector_init()
2377 connector->base.unregister = intel_sdvo_connector_unregister; intel_sdvo_connector_init()
2379 intel_connector_attach_encoder(&connector->base, &encoder->base); intel_sdvo_connector_init()
2402 struct intel_sdvo_connector *connector) intel_sdvo_add_hdmi_properties()
2404 struct drm_device *dev = connector->base.base.dev; intel_sdvo_add_hdmi_properties()
2406 intel_attach_force_audio_property(&connector->base.base); intel_sdvo_add_hdmi_properties()
2408 intel_attach_broadcast_rgb_property(&connector->base.base); intel_sdvo_add_hdmi_properties()
2411 intel_attach_aspect_ratio_property(&connector->base.base); intel_sdvo_add_hdmi_properties()
2435 struct drm_connector *connector; intel_sdvo_dvi_init() local
2455 connector = &intel_connector->base; intel_sdvo_dvi_init()
2468 connector->connector_type = DRM_MODE_CONNECTOR_DVID; intel_sdvo_dvi_init()
2471 connector->connector_type = DRM_MODE_CONNECTOR_HDMIA; intel_sdvo_dvi_init()
2490 struct drm_connector *connector; intel_sdvo_tv_init() local
2501 connector = &intel_connector->base; intel_sdvo_tv_init()
2503 connector->connector_type = DRM_MODE_CONNECTOR_SVIDEO; intel_sdvo_tv_init()
2524 drm_connector_unregister(connector); intel_sdvo_tv_init()
2525 intel_sdvo_destroy(connector); intel_sdvo_tv_init()
2533 struct drm_connector *connector; intel_sdvo_analog_init() local
2544 connector = &intel_connector->base; intel_sdvo_analog_init()
2547 connector->connector_type = DRM_MODE_CONNECTOR_VGA; intel_sdvo_analog_init()
2569 struct drm_connector *connector; intel_sdvo_lvds_init() local
2580 connector = &intel_connector->base; intel_sdvo_lvds_init()
2582 connector->connector_type = DRM_MODE_CONNECTOR_LVDS; intel_sdvo_lvds_init()
2603 drm_connector_unregister(connector); intel_sdvo_lvds_init()
2604 intel_sdvo_destroy(connector); intel_sdvo_lvds_init()
2671 struct drm_connector *connector, *tmp; intel_sdvo_output_cleanup() local
2673 list_for_each_entry_safe(connector, tmp, intel_sdvo_output_cleanup()
2675 if (intel_attached_encoder(connector) == &intel_sdvo->base) { intel_sdvo_output_cleanup()
2676 drm_connector_unregister(connector); intel_sdvo_output_cleanup()
2677 intel_sdvo_destroy(connector); intel_sdvo_output_cleanup()
2738 drm_object_attach_property(&connector->base, \
2752 struct drm_connector *connector = &intel_sdvo_connector->base.base; intel_sdvo_create_enhance_property_tv() local
2775 drm_object_attach_property(&connector->base, intel_sdvo_create_enhance_property_tv()
2784 drm_object_attach_property(&connector->base, intel_sdvo_create_enhance_property_tv()
2812 drm_object_attach_property(&connector->base, intel_sdvo_create_enhance_property_tv()
2822 drm_object_attach_property(&connector->base, intel_sdvo_create_enhance_property_tv()
2854 drm_object_attach_property(&connector->base, intel_sdvo_create_enhance_property_tv()
2869 struct drm_connector *connector = &intel_sdvo_connector->base.base; intel_sdvo_create_enhance_property_lvds() local
2401 intel_sdvo_add_hdmi_properties(struct intel_sdvo *intel_sdvo, struct intel_sdvo_connector *connector) intel_sdvo_add_hdmi_properties() argument
H A Dintel_audio.c163 static bool intel_eld_uptodate(struct drm_connector *connector, intel_eld_uptodate() argument
168 struct drm_i915_private *dev_priv = connector->dev->dev_private; intel_eld_uptodate()
169 uint8_t *eld = connector->eld; intel_eld_uptodate()
209 static void g4x_audio_codec_enable(struct drm_connector *connector, g4x_audio_codec_enable() argument
213 struct drm_i915_private *dev_priv = connector->dev->dev_private; g4x_audio_codec_enable()
214 uint8_t *eld = connector->eld; g4x_audio_codec_enable()
227 if (intel_eld_uptodate(connector, g4x_audio_codec_enable()
278 static void hsw_audio_codec_enable(struct drm_connector *connector, hsw_audio_codec_enable() argument
282 struct drm_i915_private *dev_priv = connector->dev->dev_private; hsw_audio_codec_enable()
286 const uint8_t *eld = connector->eld; hsw_audio_codec_enable()
405 static void ilk_audio_codec_enable(struct drm_connector *connector, ilk_audio_codec_enable() argument
409 struct drm_i915_private *dev_priv = connector->dev->dev_private; ilk_audio_codec_enable()
415 uint8_t *eld = connector->eld; ilk_audio_codec_enable()
437 if (HAS_PCH_IBX(connector->dev)) { ilk_audio_codec_enable()
442 } else if (IS_VALLEYVIEW(connector->dev)) { ilk_audio_codec_enable()
500 struct drm_connector *connector; intel_audio_codec_enable() local
507 connector = drm_select_eld(encoder); intel_audio_codec_enable()
508 if (!connector) intel_audio_codec_enable()
512 connector->base.id, intel_audio_codec_enable()
513 connector->name, intel_audio_codec_enable()
514 connector->encoder->base.id, intel_audio_codec_enable()
515 connector->encoder->name); intel_audio_codec_enable()
518 connector->eld[5] &= ~(3 << 2); intel_audio_codec_enable()
520 connector->eld[5] |= (1 << 2); intel_audio_codec_enable()
522 connector->eld[6] = drm_av_sync_delay(connector, adjusted_mode) / 2; intel_audio_codec_enable()
525 dev_priv->display.audio_codec_enable(connector, intel_encoder, intel_audio_codec_enable()
H A Dintel_fbdev.c375 struct drm_connector *connector; intel_fb_initial_config() local
380 connector = fb_conn->connector; intel_fb_initial_config()
385 if (pass == 0 && !connector->has_tile) intel_fb_initial_config()
388 if (connector->status == connector_status_connected) intel_fb_initial_config()
392 DRM_DEBUG_KMS("connector %s not enabled, skipping\n", intel_fb_initial_config()
393 connector->name); intel_fb_initial_config()
398 if (connector->force == DRM_FORCE_OFF) { intel_fb_initial_config()
399 DRM_DEBUG_KMS("connector %s is disabled by user, skipping\n", intel_fb_initial_config()
400 connector->name); intel_fb_initial_config()
405 encoder = connector->encoder; intel_fb_initial_config()
407 if (connector->force > DRM_FORCE_OFF) intel_fb_initial_config()
410 DRM_DEBUG_KMS("connector %s has no encoder or crtc, skipping\n", intel_fb_initial_config()
411 connector->name); intel_fb_initial_config()
433 DRM_DEBUG_KMS("looking for cmdline mode on connector %s\n", intel_fb_initial_config()
434 connector->name); intel_fb_initial_config()
441 DRM_DEBUG_KMS("looking for preferred mode on connector %s %d\n", intel_fb_initial_config()
442 connector->name, connector->has_tile); intel_fb_initial_config()
448 if (!modes[i] && !list_empty(&connector->modes)) { intel_fb_initial_config()
449 DRM_DEBUG_KMS("using first mode listed on connector %s\n", intel_fb_initial_config()
450 connector->name); intel_fb_initial_config()
451 modes[i] = list_first_entry(&connector->modes, intel_fb_initial_config()
466 DRM_DEBUG_KMS("looking for current mode on connector %s\n", intel_fb_initial_config()
467 connector->name); intel_fb_initial_config()
472 DRM_DEBUG_KMS("connector %s on pipe %c [CRTC:%d]: %dx%d%s\n", intel_fb_initial_config()
473 connector->name, intel_fb_initial_config()
H A Dintel_tv.c832 static struct intel_tv *intel_attached_tv(struct drm_connector *connector) intel_attached_tv() argument
834 return enc_to_tv(intel_attached_encoder(connector)); intel_attached_tv()
895 intel_tv_mode_valid(struct drm_connector *connector, intel_tv_mode_valid() argument
898 struct intel_tv *intel_tv = intel_attached_tv(connector); intel_tv_mode_valid()
1179 struct drm_connector *connector) intel_tv_detect_type()
1191 if (connector->polled & DRM_CONNECTOR_POLL_HPD) { intel_tv_detect_type()
1268 if (connector->polled & DRM_CONNECTOR_POLL_HPD) { intel_tv_detect_type()
1280 * Here we set accurate tv format according to connector type
1283 static void intel_tv_find_better_format(struct drm_connector *connector) intel_tv_find_better_format() argument
1285 struct intel_tv *intel_tv = intel_attached_tv(connector); intel_tv_find_better_format()
1303 drm_object_property_set_value(&connector->base, intel_tv_find_better_format()
1304 connector->dev->mode_config.tv_mode_property, i); intel_tv_find_better_format()
1314 intel_tv_detect(struct drm_connector *connector, bool force) intel_tv_detect() argument
1317 struct intel_tv *intel_tv = intel_attached_tv(connector); intel_tv_detect()
1322 connector->base.id, connector->name, intel_tv_detect()
1333 if (intel_get_load_detect_pipe(connector, &mode, &tmp, &ctx)) { intel_tv_detect()
1334 type = intel_tv_detect_type(intel_tv, connector); intel_tv_detect()
1335 intel_release_load_detect_pipe(connector, &tmp, &ctx); intel_tv_detect()
1345 return connector->status; intel_tv_detect()
1351 intel_tv_find_better_format(connector); intel_tv_detect()
1373 intel_tv_chose_preferred_modes(struct drm_connector *connector, intel_tv_chose_preferred_modes() argument
1376 struct intel_tv *intel_tv = intel_attached_tv(connector); intel_tv_chose_preferred_modes()
1398 intel_tv_get_modes(struct drm_connector *connector) intel_tv_get_modes() argument
1401 struct intel_tv *intel_tv = intel_attached_tv(connector); intel_tv_get_modes()
1419 mode_ptr = drm_mode_create(connector->dev); intel_tv_get_modes()
1444 intel_tv_chose_preferred_modes(connector, mode_ptr); intel_tv_get_modes()
1445 drm_mode_probed_add(connector, mode_ptr); intel_tv_get_modes()
1453 intel_tv_destroy(struct drm_connector *connector) intel_tv_destroy() argument
1455 drm_connector_cleanup(connector); intel_tv_destroy()
1456 kfree(connector); intel_tv_destroy()
1461 intel_tv_set_property(struct drm_connector *connector, struct drm_property *property, intel_tv_set_property() argument
1464 struct drm_device *dev = connector->dev; intel_tv_set_property()
1465 struct intel_tv *intel_tv = intel_attached_tv(connector); intel_tv_set_property()
1470 ret = drm_object_property_set_value(&connector->base, property, val); intel_tv_set_property()
1577 struct drm_connector *connector; intel_tv_init() local
1592 /* Even if we have an encoder we may not have a connector */ intel_tv_init()
1631 connector = &intel_connector->base; intel_tv_init()
1644 drm_connector_init(dev, connector, &intel_tv_connector_funcs, intel_tv_init()
1674 drm_connector_helper_add(connector, &intel_tv_connector_helper_funcs); intel_tv_init()
1675 connector->interlace_allowed = false; intel_tv_init()
1676 connector->doublescan_allowed = false; intel_tv_init()
1685 drm_object_attach_property(&connector->base, dev->mode_config.tv_mode_property, intel_tv_init()
1687 drm_object_attach_property(&connector->base, intel_tv_init()
1690 drm_object_attach_property(&connector->base, intel_tv_init()
1693 drm_object_attach_property(&connector->base, intel_tv_init()
1696 drm_object_attach_property(&connector->base, intel_tv_init()
1699 drm_connector_register(connector); intel_tv_init()
1178 intel_tv_detect_type(struct intel_tv *intel_tv, struct drm_connector *connector) intel_tv_detect_type() argument
H A Dintel_hdmi.c66 static struct intel_hdmi *intel_attached_hdmi(struct drm_connector *connector) intel_attached_hdmi() argument
68 return enc_to_intel_hdmi(&intel_attached_encoder(connector)->base); intel_attached_hdmi()
573 struct drm_connector *connector; hdmi_sink_is_deep_color() local
582 list_for_each_entry(connector, &dev->mode_config.connector_list, head) hdmi_sink_is_deep_color()
583 if (connector->encoder == encoder) hdmi_sink_is_deep_color()
584 return connector->display_info.bpc > 8; hdmi_sink_is_deep_color()
1188 intel_hdmi_mode_valid(struct drm_connector *connector, intel_hdmi_mode_valid() argument
1191 struct intel_hdmi *hdmi = intel_attached_hdmi(connector); intel_hdmi_mode_valid()
1218 struct drm_connector *connector; hdmi_12bpc_possible() local
1228 for_each_connector_in_state(state, connector, connector_state, i) { for_each_connector_in_state()
1321 intel_hdmi_unset_edid(struct drm_connector *connector) intel_hdmi_unset_edid() argument
1323 struct intel_hdmi *intel_hdmi = intel_attached_hdmi(connector); intel_hdmi_unset_edid()
1329 kfree(to_intel_connector(connector)->detect_edid); intel_hdmi_unset_edid()
1330 to_intel_connector(connector)->detect_edid = NULL; intel_hdmi_unset_edid()
1334 intel_hdmi_set_edid(struct drm_connector *connector, bool force) intel_hdmi_set_edid() argument
1336 struct drm_i915_private *dev_priv = to_i915(connector->dev); intel_hdmi_set_edid()
1337 struct intel_hdmi *intel_hdmi = intel_attached_hdmi(connector); intel_hdmi_set_edid()
1344 edid = drm_get_edid(connector, intel_hdmi_set_edid()
1350 to_intel_connector(connector)->detect_edid = edid; intel_hdmi_set_edid()
1371 intel_hdmi_detect(struct drm_connector *connector, bool force) intel_hdmi_detect() argument
1374 struct intel_hdmi *intel_hdmi = intel_attached_hdmi(connector); intel_hdmi_detect()
1375 struct drm_i915_private *dev_priv = to_i915(connector->dev); intel_hdmi_detect()
1380 connector->base.id, connector->name); intel_hdmi_detect()
1402 intel_hdmi_unset_edid(connector); intel_hdmi_detect()
1404 if (intel_hdmi_set_edid(connector, live_status)) { intel_hdmi_detect()
1405 struct intel_hdmi *intel_hdmi = intel_attached_hdmi(connector); intel_hdmi_detect()
1418 intel_hdmi_force(struct drm_connector *connector) intel_hdmi_force() argument
1420 struct intel_hdmi *intel_hdmi = intel_attached_hdmi(connector); intel_hdmi_force()
1423 connector->base.id, connector->name); intel_hdmi_force()
1425 intel_hdmi_unset_edid(connector); intel_hdmi_force()
1427 if (connector->status != connector_status_connected) intel_hdmi_force()
1430 intel_hdmi_set_edid(connector, true); intel_hdmi_force()
1434 static int intel_hdmi_get_modes(struct drm_connector *connector) intel_hdmi_get_modes() argument
1438 edid = to_intel_connector(connector)->detect_edid; intel_hdmi_get_modes()
1442 return intel_connector_update_modes(connector, edid); intel_hdmi_get_modes()
1446 intel_hdmi_detect_audio(struct drm_connector *connector) intel_hdmi_detect_audio() argument
1451 edid = to_intel_connector(connector)->detect_edid; intel_hdmi_detect_audio()
1459 intel_hdmi_set_property(struct drm_connector *connector, intel_hdmi_set_property() argument
1463 struct intel_hdmi *intel_hdmi = intel_attached_hdmi(connector); intel_hdmi_set_property()
1466 struct drm_i915_private *dev_priv = connector->dev->dev_private; intel_hdmi_set_property()
1469 ret = drm_object_property_set_value(&connector->base, property, val); intel_hdmi_set_property()
1483 has_audio = intel_hdmi_detect_audio(connector); intel_hdmi_set_property()
1521 if (property == connector->dev->mode_config.aspect_ratio_property) { intel_hdmi_set_property()
1983 static void intel_hdmi_destroy(struct drm_connector *connector) intel_hdmi_destroy() argument
1985 kfree(to_intel_connector(connector)->detect_edid); intel_hdmi_destroy()
1986 drm_connector_cleanup(connector); intel_hdmi_destroy()
1987 kfree(connector); intel_hdmi_destroy()
2013 intel_hdmi_add_properties(struct intel_hdmi *intel_hdmi, struct drm_connector *connector) intel_hdmi_add_properties() argument
2015 intel_attach_force_audio_property(connector); intel_hdmi_add_properties()
2016 intel_attach_broadcast_rgb_property(connector); intel_hdmi_add_properties()
2018 intel_attach_aspect_ratio_property(connector); intel_hdmi_add_properties()
2025 struct drm_connector *connector = &intel_connector->base; intel_hdmi_init_connector() local
2033 drm_connector_init(dev, connector, &intel_hdmi_connector_funcs, intel_hdmi_init_connector()
2035 drm_connector_helper_add(connector, &intel_hdmi_connector_helper_funcs); intel_hdmi_init_connector()
2037 connector->interlace_allowed = 1; intel_hdmi_init_connector()
2038 connector->doublescan_allowed = 0; intel_hdmi_init_connector()
2039 connector->stereo_allowed = 1; intel_hdmi_init_connector()
2127 intel_hdmi_add_properties(intel_hdmi, connector); intel_hdmi_init_connector()
2130 drm_connector_register(connector); intel_hdmi_init_connector()
H A Dintel_atomic.c39 * intel_connector_atomic_get_property - fetch connector property value
40 * @connector: connector to fetch property for
47 * the current value of a driver-specific connector property.
50 intel_connector_atomic_get_property(struct drm_connector *connector, intel_connector_atomic_get_property() argument
59 * crtc/connector code isn't quite ready yet. Until it's ready, intel_connector_atomic_get_property()
63 * When the crtc/connector state work matures, this function should intel_connector_atomic_get_property()
66 for (i = 0; i < connector->base.properties->count; i++) { intel_connector_atomic_get_property()
67 if (connector->base.properties->properties[i] == property) { intel_connector_atomic_get_property()
68 *val = connector->base.properties->values[i]; intel_connector_atomic_get_property()
H A Dintel_drv.h146 /* Read out the current hw state of this connector, returning true if
189 int (*setup)(struct intel_connector *connector, enum pipe pipe);
190 uint32_t (*get)(struct intel_connector *connector);
191 void (*set)(struct intel_connector *connector, uint32_t level);
192 void (*disable)(struct intel_connector *connector);
193 void (*enable)(struct intel_connector *connector);
194 uint32_t (*hz_to_pwm)(struct intel_connector *connector,
203 * The fixed encoder this connector is connected to.
207 /* Reads out the current hw, returning true if the connector is enabled
212 * Removes all interfaces through which the connector is accessible
214 * started on the connector. Also makes sure all currently pending
227 state of connector->polled in case hotplug storm detection changes it */
770 /* connector directly attached - won't be use for modeset in mst world */
773 /* mst connector list */
892 intel_attached_encoder(struct drm_connector *connector) intel_attached_encoder() argument
894 return to_intel_connector(connector)->encoder; intel_attached_encoder()
1041 bool intel_connector_get_hw_state(struct intel_connector *connector);
1042 void intel_connector_attach_encoder(struct intel_connector *connector,
1044 struct drm_encoder *intel_best_encoder(struct drm_connector *connector);
1047 enum pipe intel_get_pipe_from_connector(struct intel_connector *connector);
1062 bool intel_get_load_detect_pipe(struct drm_connector *connector,
1066 void intel_release_load_detect_pipe(struct drm_connector *connector,
1221 void intel_dp_add_properties(struct intel_dp *intel_dp, struct drm_connector *connector);
1310 int intel_connector_update_modes(struct drm_connector *connector,
1313 void intel_attach_force_audio_property(struct drm_connector *connector);
1314 void intel_attach_broadcast_rgb_property(struct drm_connector *connector);
1315 void intel_attach_aspect_ratio_property(struct drm_connector *connector);
1342 void intel_panel_set_backlight_acpi(struct intel_connector *connector,
1344 int intel_panel_setup_backlight(struct drm_connector *connector, enum pipe pipe);
1345 void intel_panel_enable_backlight(struct intel_connector *connector);
1346 void intel_panel_disable_backlight(struct intel_connector *connector);
1347 void intel_panel_destroy_backlight(struct drm_connector *connector);
1352 struct drm_connector *connector);
1447 int intel_connector_atomic_get_property(struct drm_connector *connector,
H A Dintel_dsi.c720 intel_dsi_mode_valid(struct drm_connector *connector, intel_dsi_mode_valid() argument
723 struct intel_connector *intel_connector = to_intel_connector(connector); intel_dsi_mode_valid()
725 int max_dotclk = to_i915(connector->dev)->max_dotclk_freq; intel_dsi_mode_valid()
1038 intel_dsi_detect(struct drm_connector *connector, bool force) intel_dsi_detect() argument
1043 static int intel_dsi_get_modes(struct drm_connector *connector) intel_dsi_get_modes() argument
1045 struct intel_connector *intel_connector = to_intel_connector(connector); intel_dsi_get_modes()
1055 mode = drm_mode_duplicate(connector->dev, intel_dsi_get_modes()
1062 drm_mode_probed_add(connector, mode); intel_dsi_get_modes()
1066 static void intel_dsi_connector_destroy(struct drm_connector *connector) intel_dsi_connector_destroy() argument
1068 struct intel_connector *intel_connector = to_intel_connector(connector); intel_dsi_connector_destroy()
1072 drm_connector_cleanup(connector); intel_dsi_connector_destroy()
1073 kfree(connector); intel_dsi_connector_destroy()
1119 struct drm_connector *connector; intel_dsi_init() local
1152 connector = &intel_connector->base; intel_dsi_init()
1220 drm_connector_init(dev, connector, &intel_dsi_connector_funcs, intel_dsi_init()
1223 drm_connector_helper_add(connector, &intel_dsi_connector_helper_funcs); intel_dsi_init()
1225 connector->display_info.subpixel_order = SubPixelHorizontalRGB; /*XXX*/ intel_dsi_init()
1226 connector->interlace_allowed = false; intel_dsi_init()
1227 connector->doublescan_allowed = false; intel_dsi_init()
1231 drm_connector_register(connector); intel_dsi_init()
1233 drm_panel_attach(intel_dsi->panel, connector); intel_dsi_init()
1237 list_for_each_entry(scan, &connector->probed_modes, head) { intel_dsi_init()
1251 intel_panel_setup_backlight(connector, INVALID_PIPE); intel_dsi_init()
H A Di915_debugfs.c2591 struct intel_connector *connector; i915_sink_crc() local
2597 for_each_intel_connector(dev, connector) { for_each_intel_connector()
2599 if (connector->base.dpms != DRM_MODE_DPMS_ON) for_each_intel_connector()
2602 if (!connector->base.encoder) for_each_intel_connector()
2605 encoder = to_intel_encoder(connector->base.encoder); for_each_intel_connector()
2814 struct drm_connector *connector = &intel_connector->base; for_each_connector_on_encoder() local
2816 connector->base.id, for_each_connector_on_encoder()
2817 connector->name, for_each_connector_on_encoder()
2818 drm_get_connector_status_name(connector->status)); for_each_connector_on_encoder()
2819 if (connector->status == connector_status_connected) { for_each_connector_on_encoder()
2884 struct drm_connector *connector) intel_connector_info()
2886 struct intel_connector *intel_connector = to_intel_connector(connector); intel_connector_info()
2890 seq_printf(m, "connector %d: type %s, status: %s\n", intel_connector_info()
2891 connector->base.id, connector->name, intel_connector_info()
2892 drm_get_connector_status_name(connector->status)); intel_connector_info()
2893 if (connector->status == connector_status_connected) { intel_connector_info()
2894 seq_printf(m, "\tname: %s\n", connector->display_info.name); intel_connector_info()
2896 connector->display_info.width_mm, intel_connector_info()
2897 connector->display_info.height_mm); intel_connector_info()
2899 drm_get_subpixel_order_name(connector->display_info.subpixel_order)); intel_connector_info()
2901 connector->display_info.cea_rev); intel_connector_info()
2914 list_for_each_entry(mode, &connector->modes, head) intel_connector_info()
2955 struct drm_connector *connector; i915_display_info() local
2991 list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
2992 intel_connector_info(m, connector);
4154 struct drm_connector *connector; i915_displayport_test_active_write() local
4178 list_for_each_entry(connector, connector_list, head) { list_for_each_entry()
4180 if (connector->connector_type != list_for_each_entry()
4184 if (connector->status == connector_status_connected && list_for_each_entry()
4185 connector->encoder != NULL) { list_for_each_entry()
4186 intel_dp = enc_to_intel_dp(connector->encoder); list_for_each_entry()
4212 struct drm_connector *connector; i915_displayport_test_active_show() local
4216 list_for_each_entry(connector, connector_list, head) { list_for_each_entry()
4218 if (connector->connector_type != list_for_each_entry()
4222 if (connector->status == connector_status_connected && list_for_each_entry()
4223 connector->encoder != NULL) { list_for_each_entry()
4224 intel_dp = enc_to_intel_dp(connector->encoder); list_for_each_entry()
4256 struct drm_connector *connector; i915_displayport_test_data_show() local
4260 list_for_each_entry(connector, connector_list, head) { list_for_each_entry()
4262 if (connector->connector_type != list_for_each_entry()
4266 if (connector->status == connector_status_connected && list_for_each_entry()
4267 connector->encoder != NULL) { list_for_each_entry()
4268 intel_dp = enc_to_intel_dp(connector->encoder); list_for_each_entry()
4295 struct drm_connector *connector; i915_displayport_test_type_show() local
4299 list_for_each_entry(connector, connector_list, head) { list_for_each_entry()
4301 if (connector->connector_type != list_for_each_entry()
4305 if (connector->status == connector_status_connected && list_for_each_entry()
4306 connector->encoder != NULL) { list_for_each_entry()
4307 intel_dp = enc_to_intel_dp(connector->encoder); list_for_each_entry()
5369 struct drm_connector *connector = m->private; i915_dpcd_show() local
5371 enc_to_intel_dp(&intel_attached_encoder(connector)->base); i915_dpcd_show()
5376 if (connector->status != connector_status_connected) i915_dpcd_show()
5384 connector->connector_type != DRM_MODE_CONNECTOR_eDP) i915_dpcd_show()
5418 * i915_debugfs_connector_add - add i915 specific connector debugfs files
5419 * @connector: pointer to a registered drm_connector
5426 int i915_debugfs_connector_add(struct drm_connector *connector) i915_debugfs_connector_add() argument
5428 struct dentry *root = connector->debugfs_entry; i915_debugfs_connector_add()
5430 /* The connector must have been registered beforehands. */ i915_debugfs_connector_add()
5434 if (connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort || i915_debugfs_connector_add()
5435 connector->connector_type == DRM_MODE_CONNECTOR_eDP) i915_debugfs_connector_add()
5436 debugfs_create_file("i915_dpcd", S_IRUGO, root, connector, i915_debugfs_connector_add()
2883 intel_connector_info(struct seq_file *m, struct drm_connector *connector) intel_connector_info() argument
H A Dintel_dp.c121 static struct intel_dp *intel_attached_dp(struct drm_connector *connector) intel_attached_dp() argument
123 return enc_to_intel_dp(&intel_attached_encoder(connector)->base); intel_attached_dp()
203 intel_dp_mode_valid(struct drm_connector *connector, intel_dp_mode_valid() argument
206 struct intel_dp *intel_dp = intel_attached_dp(connector); intel_dp_mode_valid()
207 struct intel_connector *intel_connector = to_intel_connector(connector); intel_dp_mode_valid()
1009 intel_dp_aux_init(struct intel_dp *intel_dp, struct intel_connector *connector) intel_dp_aux_init() argument
1082 connector->base.kdev->kobj.name); intel_dp_aux_init()
1091 ret = sysfs_create_link(&connector->base.kdev->kobj, intel_dp_aux_init()
2124 static void intel_edp_backlight_power(struct intel_connector *connector, intel_edp_backlight_power() argument
2127 struct intel_dp *intel_dp = intel_attached_dp(&connector->base); intel_edp_backlight_power()
4263 struct drm_connector *connector = &intel_connector->base; intel_dp_autotest_edid() local
4266 connector->edid_corrupt || intel_dp_autotest_edid()
4766 intel_dp_detect(struct drm_connector *connector, bool force) intel_dp_detect() argument
4768 struct intel_dp *intel_dp = intel_attached_dp(connector); intel_dp_detect()
4771 struct drm_device *dev = connector->dev; intel_dp_detect()
4778 connector->base.id, connector->name); intel_dp_detect()
4805 /* if we are in MST mode then this connector intel_dp_detect()
4839 intel_dp_force(struct drm_connector *connector) intel_dp_force() argument
4841 struct intel_dp *intel_dp = intel_attached_dp(connector); intel_dp_force()
4847 connector->base.id, connector->name); intel_dp_force()
4850 if (connector->status != connector_status_connected) intel_dp_force()
4864 static int intel_dp_get_modes(struct drm_connector *connector) intel_dp_get_modes() argument
4866 struct intel_connector *intel_connector = to_intel_connector(connector); intel_dp_get_modes()
4871 int ret = intel_connector_update_modes(connector, edid); intel_dp_get_modes()
4877 if (is_edp(intel_attached_dp(connector)) && intel_dp_get_modes()
4881 mode = drm_mode_duplicate(connector->dev, intel_dp_get_modes()
4884 drm_mode_probed_add(connector, mode); intel_dp_get_modes()
4893 intel_dp_detect_audio(struct drm_connector *connector) intel_dp_detect_audio() argument
4898 edid = to_intel_connector(connector)->detect_edid; intel_dp_detect_audio()
4906 intel_dp_set_property(struct drm_connector *connector, intel_dp_set_property() argument
4910 struct drm_i915_private *dev_priv = connector->dev->dev_private; intel_dp_set_property()
4911 struct intel_connector *intel_connector = to_intel_connector(connector); intel_dp_set_property()
4912 struct intel_encoder *intel_encoder = intel_attached_encoder(connector); intel_dp_set_property()
4916 ret = drm_object_property_set_value(&connector->base, property, val); intel_dp_set_property()
4930 has_audio = intel_dp_detect_audio(connector); intel_dp_set_property()
4969 property == connector->dev->mode_config.scaling_mode_property) { intel_dp_set_property()
4994 intel_dp_connector_destroy(struct drm_connector *connector) intel_dp_connector_destroy() argument
4996 struct intel_connector *intel_connector = to_intel_connector(connector); intel_dp_connector_destroy()
5005 if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) intel_dp_connector_destroy()
5008 drm_connector_cleanup(connector); intel_dp_connector_destroy()
5009 kfree(connector); intel_dp_connector_destroy()
5264 intel_dp_add_properties(struct intel_dp *intel_dp, struct drm_connector *connector) intel_dp_add_properties() argument
5266 struct intel_connector *intel_connector = to_intel_connector(connector); intel_dp_add_properties()
5268 intel_attach_force_audio_property(connector); intel_dp_add_properties()
5269 intel_attach_broadcast_rgb_property(connector); intel_dp_add_properties()
5273 drm_mode_create_scaling_mode_property(connector->dev); intel_dp_add_properties()
5275 &connector->base, intel_dp_add_properties()
5276 connector->dev->mode_config.scaling_mode_property, intel_dp_add_properties()
5834 * @intel_connector: eDP connector
5849 struct drm_connector *connector = &intel_connector->base; intel_dp_drrs_init() local
5850 struct drm_device *dev = connector->dev; intel_dp_drrs_init()
5868 (dev, fixed_mode, connector); intel_dp_drrs_init()
5885 struct drm_connector *connector = &intel_connector->base; intel_edp_init_connector() local
5924 edid = drm_get_edid(connector, &intel_dp->aux.ddc); intel_edp_init_connector()
5926 if (drm_add_edid_modes(connector, edid)) { intel_edp_init_connector()
5927 drm_mode_connector_update_edid_property(connector, intel_edp_init_connector()
5929 drm_edid_to_eld(connector, edid); intel_edp_init_connector()
5940 list_for_each_entry(scan, &connector->probed_modes, head) { intel_edp_init_connector()
5984 intel_panel_setup_backlight(connector, pipe); intel_edp_init_connector()
5993 struct drm_connector *connector = &intel_connector->base; intel_dp_init_connector() local
6042 DRM_DEBUG_KMS("Adding %s connector on port %c\n", intel_dp_init_connector()
6046 drm_connector_init(dev, connector, &intel_dp_connector_funcs, type); intel_dp_init_connector()
6047 drm_connector_helper_add(connector, &intel_dp_connector_helper_funcs); intel_dp_init_connector()
6049 connector->interlace_allowed = true; intel_dp_init_connector()
6050 connector->doublescan_allowed = 0; intel_dp_init_connector()
6056 drm_connector_register(connector); intel_dp_init_connector()
6117 drm_connector_unregister(connector); intel_dp_init_connector()
6118 drm_connector_cleanup(connector); intel_dp_init_connector()
6122 intel_dp_add_properties(intel_dp, connector); intel_dp_init_connector()
6133 i915_debugfs_connector_add(connector); intel_dp_init_connector()
/linux-4.4.14/drivers/gpu/drm/
H A Ddrm_sysfs.c168 struct drm_connector *connector = to_drm_connector(device); status_store() local
169 struct drm_device *dev = connector->dev; status_store()
177 old_status = connector->status; status_store()
180 connector->force = 0; status_store()
181 connector->status = connector->funcs->detect(connector, true); status_store()
183 connector->force = DRM_FORCE_ON; status_store()
185 connector->force = DRM_FORCE_ON_DIGITAL; status_store()
187 connector->force = DRM_FORCE_OFF; status_store()
191 if (ret == 0 && connector->force) { status_store()
192 if (connector->force == DRM_FORCE_ON || status_store()
193 connector->force == DRM_FORCE_ON_DIGITAL) status_store()
194 connector->status = connector_status_connected; status_store()
196 connector->status = connector_status_disconnected; status_store()
197 if (connector->funcs->force) status_store()
198 connector->funcs->force(connector); status_store()
201 if (old_status != connector->status) { status_store()
203 connector->base.id, status_store()
204 connector->name, status_store()
205 old_status, connector->status); status_store()
222 struct drm_connector *connector = to_drm_connector(device); status_show() local
225 drm_get_connector_status_name(connector->status)); status_show()
232 struct drm_connector *connector = to_drm_connector(device); dpms_show() local
235 dpms = READ_ONCE(connector->dpms); dpms_show()
245 struct drm_connector *connector = to_drm_connector(device); enabled_show() local
247 return snprintf(buf, PAGE_SIZE, "%s\n", connector->encoder ? "enabled" : enabled_show()
256 struct drm_connector *connector = to_drm_connector(connector_dev); edid_show() local
260 if (!connector->edid_blob_ptr) edid_show()
263 edid = connector->edid_blob_ptr->data; edid_show()
264 size = connector->edid_blob_ptr->length; edid_show()
282 struct drm_connector *connector = to_drm_connector(device); modes_show() local
286 list_for_each_entry(mode, &connector->modes, head) { modes_show()
298 struct drm_connector *connector = to_drm_connector(device); tv_subconnector_show() local
299 struct drm_device *dev = connector->dev; tv_subconnector_show()
310 ret = drm_object_property_get_value(&connector->base, prop, &subconnector); tv_subconnector_show()
322 struct drm_connector *connector = to_drm_connector(device); tv_select_subconnector_show() local
323 struct drm_device *dev = connector->dev; tv_select_subconnector_show()
334 ret = drm_object_property_get_value(&connector->base, prop, &subconnector); tv_select_subconnector_show()
346 struct drm_connector *connector = to_drm_connector(device); dvii_subconnector_show() local
347 struct drm_device *dev = connector->dev; dvii_subconnector_show()
358 ret = drm_object_property_get_value(&connector->base, prop, &subconnector); dvii_subconnector_show()
370 struct drm_connector *connector = to_drm_connector(device); dvii_select_subconnector_show() local
371 struct drm_device *dev = connector->dev; dvii_select_subconnector_show()
382 ret = drm_object_property_get_value(&connector->base, prop, &subconnector); dvii_select_subconnector_show()
425 struct drm_connector *connector = to_drm_connector(dev); kobj_connector_type() local
427 return connector->connector_type; kobj_connector_type()
486 * drm_sysfs_connector_add - add a connector to sysfs
487 * @connector: connector to add
489 * Create a connector device in sysfs, along with its associated connector
491 * generate a hotplug event so userspace knows there's a new connector
494 int drm_sysfs_connector_add(struct drm_connector *connector) drm_sysfs_connector_add() argument
496 struct drm_device *dev = connector->dev; drm_sysfs_connector_add()
498 if (connector->kdev) drm_sysfs_connector_add()
501 connector->kdev = drm_sysfs_connector_add()
503 connector, connector_dev_groups, drm_sysfs_connector_add()
505 connector->name); drm_sysfs_connector_add()
507 connector->name); drm_sysfs_connector_add()
509 if (IS_ERR(connector->kdev)) { drm_sysfs_connector_add()
510 DRM_ERROR("failed to register connector device: %ld\n", PTR_ERR(connector->kdev)); drm_sysfs_connector_add()
511 return PTR_ERR(connector->kdev); drm_sysfs_connector_add()
514 /* Let userspace know we have a new connector */ drm_sysfs_connector_add()
521 * drm_sysfs_connector_remove - remove an connector device from sysfs
522 * @connector: connector to remove
524 * Remove @connector and its associated attributes from sysfs. Note that
529 * This routine should only be called if the connector was previously
530 * successfully registered. If @connector hasn't been registered yet,
533 void drm_sysfs_connector_remove(struct drm_connector *connector) drm_sysfs_connector_remove() argument
535 if (!connector->kdev) drm_sysfs_connector_remove()
538 connector->name); drm_sysfs_connector_remove()
540 device_unregister(connector->kdev); drm_sysfs_connector_remove()
541 connector->kdev = NULL; drm_sysfs_connector_remove()
H A Ddrm_probe_helper.c46 * implementation of the core connector->fill_modes interface with
51 * track of a per-connector hpd interrupt.
80 static int drm_helper_probe_add_cmdline_mode(struct drm_connector *connector) drm_helper_probe_add_cmdline_mode() argument
84 if (!connector->cmdline_mode.specified) drm_helper_probe_add_cmdline_mode()
87 mode = drm_mode_create_from_cmdline_mode(connector->dev, drm_helper_probe_add_cmdline_mode()
88 &connector->cmdline_mode); drm_helper_probe_add_cmdline_mode()
92 drm_mode_probed_add(connector, mode); drm_helper_probe_add_cmdline_mode()
111 struct drm_connector *connector; drm_kms_helper_poll_enable_locked() local
118 drm_for_each_connector(connector, dev) { drm_for_each_connector()
119 if (connector->polled & (DRM_CONNECTOR_POLL_CONNECT | drm_for_each_connector()
130 static int drm_helper_probe_single_connector_modes_merge_bits(struct drm_connector *connector, drm_helper_probe_single_connector_modes_merge_bits() argument
133 struct drm_device *dev = connector->dev; drm_helper_probe_single_connector_modes_merge_bits()
136 connector->helper_private; drm_helper_probe_single_connector_modes_merge_bits()
144 DRM_DEBUG_KMS("[CONNECTOR:%d:%s]\n", connector->base.id, drm_helper_probe_single_connector_modes_merge_bits()
145 connector->name); drm_helper_probe_single_connector_modes_merge_bits()
147 list_for_each_entry(mode, &connector->modes, head) drm_helper_probe_single_connector_modes_merge_bits()
150 if (connector->force) { drm_helper_probe_single_connector_modes_merge_bits()
151 if (connector->force == DRM_FORCE_ON || drm_helper_probe_single_connector_modes_merge_bits()
152 connector->force == DRM_FORCE_ON_DIGITAL) drm_helper_probe_single_connector_modes_merge_bits()
153 connector->status = connector_status_connected; drm_helper_probe_single_connector_modes_merge_bits()
155 connector->status = connector_status_disconnected; drm_helper_probe_single_connector_modes_merge_bits()
156 if (connector->funcs->force) drm_helper_probe_single_connector_modes_merge_bits()
157 connector->funcs->force(connector); drm_helper_probe_single_connector_modes_merge_bits()
159 old_status = connector->status; drm_helper_probe_single_connector_modes_merge_bits()
161 connector->status = connector->funcs->detect(connector, true); drm_helper_probe_single_connector_modes_merge_bits()
169 if (old_status != connector->status) { drm_helper_probe_single_connector_modes_merge_bits()
171 connector->base.id, drm_helper_probe_single_connector_modes_merge_bits()
172 connector->name, drm_helper_probe_single_connector_modes_merge_bits()
173 old_status, connector->status); drm_helper_probe_single_connector_modes_merge_bits()
194 if (connector->status == connector_status_disconnected) { drm_helper_probe_single_connector_modes_merge_bits()
196 connector->base.id, connector->name); drm_helper_probe_single_connector_modes_merge_bits()
197 drm_mode_connector_update_edid_property(connector, NULL); drm_helper_probe_single_connector_modes_merge_bits()
203 count = drm_load_edid_firmware(connector); drm_helper_probe_single_connector_modes_merge_bits()
207 if (connector->override_edid) { drm_helper_probe_single_connector_modes_merge_bits()
208 struct edid *edid = (struct edid *) connector->edid_blob_ptr->data; drm_helper_probe_single_connector_modes_merge_bits()
210 count = drm_add_edid_modes(connector, edid); drm_helper_probe_single_connector_modes_merge_bits()
211 drm_edid_to_eld(connector, edid); drm_helper_probe_single_connector_modes_merge_bits()
213 count = (*connector_funcs->get_modes)(connector); drm_helper_probe_single_connector_modes_merge_bits()
216 if (count == 0 && connector->status == connector_status_connected) drm_helper_probe_single_connector_modes_merge_bits()
217 count = drm_add_modes_noedid(connector, 1024, 768); drm_helper_probe_single_connector_modes_merge_bits()
218 count += drm_helper_probe_add_cmdline_mode(connector); drm_helper_probe_single_connector_modes_merge_bits()
222 drm_mode_connector_list_update(connector, merge_type_bits); drm_helper_probe_single_connector_modes_merge_bits()
224 if (connector->interlace_allowed) drm_helper_probe_single_connector_modes_merge_bits()
226 if (connector->doublescan_allowed) drm_helper_probe_single_connector_modes_merge_bits()
228 if (connector->stereo_allowed) drm_helper_probe_single_connector_modes_merge_bits()
231 list_for_each_entry(mode, &connector->modes, head) { drm_helper_probe_single_connector_modes_merge_bits()
242 mode->status = connector_funcs->mode_valid(connector, drm_helper_probe_single_connector_modes_merge_bits()
247 drm_mode_prune_invalid(dev, &connector->modes, verbose_prune); drm_helper_probe_single_connector_modes_merge_bits()
249 if (list_empty(&connector->modes)) drm_helper_probe_single_connector_modes_merge_bits()
252 list_for_each_entry(mode, &connector->modes, head) drm_helper_probe_single_connector_modes_merge_bits()
255 drm_mode_sort(&connector->modes); drm_helper_probe_single_connector_modes_merge_bits()
257 DRM_DEBUG_KMS("[CONNECTOR:%d:%s] probed modes :\n", connector->base.id, drm_helper_probe_single_connector_modes_merge_bits()
258 connector->name); drm_helper_probe_single_connector_modes_merge_bits()
259 list_for_each_entry(mode, &connector->modes, head) { drm_helper_probe_single_connector_modes_merge_bits()
269 * @connector: connector to probe
273 * Based on the helper callbacks implemented by @connector try to detect all
274 * valid modes. Modes will first be added to the connector's probed_modes list,
279 * @connector vfunc for drivers that use the crtc helpers for output mode
283 * The number of modes found on @connector.
285 int drm_helper_probe_single_connector_modes(struct drm_connector *connector, drm_helper_probe_single_connector_modes() argument
288 return drm_helper_probe_single_connector_modes_merge_bits(connector, maxX, maxY, true); drm_helper_probe_single_connector_modes()
294 * @connector: connector to probe
301 int drm_helper_probe_single_connector_modes_nomerge(struct drm_connector *connector, drm_helper_probe_single_connector_modes_nomerge() argument
304 return drm_helper_probe_single_connector_modes_merge_bits(connector, maxX, maxY, false); drm_helper_probe_single_connector_modes_nomerge()
310 * @dev: drm_device whose connector state changed
337 struct drm_connector *connector; output_poll_execute() local
349 drm_for_each_connector(connector, dev) { drm_for_each_connector()
352 if (connector->force) drm_for_each_connector()
357 if (!connector->polled || connector->polled == DRM_CONNECTOR_POLL_HPD) drm_for_each_connector()
360 old_status = connector->status; drm_for_each_connector()
364 !(connector->polled & DRM_CONNECTOR_POLL_DISCONNECT)) drm_for_each_connector()
369 connector->status = connector->funcs->detect(connector, false); drm_for_each_connector()
370 if (old_status != connector->status) { drm_for_each_connector()
386 if (connector->status == connector_status_unknown) { drm_for_each_connector()
387 connector->status = old_status; drm_for_each_connector()
392 new = drm_get_connector_status_name(connector->status); drm_for_each_connector()
396 connector->base.id, drm_for_each_connector()
397 connector->name, drm_for_each_connector()
466 * Note that a connector can be both polled and probed from the hotplug handler,
498 * interrupts for each connector.
500 * Drivers which support hotplug interrupts for each connector individually and
502 * directly call drm_kms_helper_hotplug_event() in case the connector state
508 * Note that a connector can be both polled and probed from the hotplug handler,
513 struct drm_connector *connector; drm_helper_hpd_irq_event() local
521 drm_for_each_connector(connector, dev) { drm_for_each_connector()
524 if (!(connector->polled & DRM_CONNECTOR_POLL_HPD)) drm_for_each_connector()
527 old_status = connector->status; drm_for_each_connector()
529 connector->status = connector->funcs->detect(connector, false); drm_for_each_connector()
531 connector->base.id, drm_for_each_connector()
532 connector->name, drm_for_each_connector()
534 drm_get_connector_status_name(connector->status)); drm_for_each_connector()
535 if (old_status != connector->status) drm_for_each_connector()
H A Ddrm_edid.c78 struct drm_connector *connector; member in struct:detailed_mode_closure
1050 static void drm_get_displayid(struct drm_connector *connector,
1253 * @connector: connector we're probing
1267 struct edid *drm_do_get_edid(struct drm_connector *connector, drm_do_get_edid() argument
1274 bool print_bad_edid = !connector->bad_edid_counter || (drm_debug & DRM_UT_KMS); drm_do_get_edid()
1284 &connector->edid_corrupt)) drm_do_get_edid()
1287 connector->null_edid_counter++; drm_do_get_edid()
1319 dev_warn(connector->dev->dev, drm_do_get_edid()
1321 connector->name, j); drm_do_get_edid()
1323 connector->bad_edid_counter++; drm_do_get_edid()
1340 dev_warn(connector->dev->dev, "%s: EDID block %d invalid.\n", drm_do_get_edid()
1341 connector->name, j); drm_do_get_edid()
1343 connector->bad_edid_counter++; drm_do_get_edid()
1368 * @connector: connector we're probing
1372 * attach it to the connector.
1376 struct edid *drm_get_edid(struct drm_connector *connector, drm_get_edid() argument
1384 edid = drm_do_get_edid(connector, drm_do_probe_ddc_edid, adapter); drm_get_edid()
1386 drm_get_displayid(connector, edid); drm_get_edid()
1451 * @connector: has mode list to fix up
1454 * Walk the mode list for @connector, clearing the preferred status
1457 static void edid_fixup_preferred(struct drm_connector *connector, edid_fixup_preferred() argument
1464 if (list_empty(&connector->probed_modes)) edid_fixup_preferred()
1472 preferred_mode = list_first_entry(&connector->probed_modes, edid_fixup_preferred()
1475 list_for_each_entry_safe(cur_mode, t, &connector->probed_modes, head) { edid_fixup_preferred()
1700 * @connector: connector of for the EDID block
1708 drm_mode_std(struct drm_connector *connector, struct edid *edid, drm_mode_std() argument
1711 struct drm_device *dev = connector->dev; drm_mode_std()
1750 * If this connector already has a mode for this size and refresh drm_mode_std()
1755 list_for_each_entry(m, &connector->probed_modes, head) drm_mode_std()
2044 static bool valid_inferred_mode(const struct drm_connector *connector, valid_inferred_mode() argument
2050 list_for_each_entry(m, &connector->probed_modes, head) { valid_inferred_mode()
2063 drm_dmt_modes_for_range(struct drm_connector *connector, struct edid *edid, drm_dmt_modes_for_range() argument
2068 struct drm_device *dev = connector->dev; drm_dmt_modes_for_range()
2072 valid_inferred_mode(connector, drm_dmt_modes + i)) { drm_dmt_modes_for_range()
2075 drm_mode_probed_add(connector, newmode); drm_dmt_modes_for_range()
2098 drm_gtf_modes_for_range(struct drm_connector *connector, struct edid *edid, drm_gtf_modes_for_range() argument
2103 struct drm_device *dev = connector->dev; drm_gtf_modes_for_range()
2113 !valid_inferred_mode(connector, newmode)) { drm_gtf_modes_for_range()
2118 drm_mode_probed_add(connector, newmode); drm_gtf_modes_for_range()
2126 drm_cvt_modes_for_range(struct drm_connector *connector, struct edid *edid, drm_cvt_modes_for_range() argument
2131 struct drm_device *dev = connector->dev; drm_cvt_modes_for_range()
2142 !valid_inferred_mode(connector, newmode)) { drm_cvt_modes_for_range()
2147 drm_mode_probed_add(connector, newmode); drm_cvt_modes_for_range()
2164 closure->modes += drm_dmt_modes_for_range(closure->connector, do_inferred_modes()
2174 closure->modes += drm_gtf_modes_for_range(closure->connector, do_inferred_modes()
2182 closure->modes += drm_cvt_modes_for_range(closure->connector, do_inferred_modes()
2193 add_inferred_modes(struct drm_connector *connector, struct edid *edid) add_inferred_modes() argument
2196 .connector = connector, add_inferred_modes()
2208 drm_est3_modes(struct drm_connector *connector, struct detailed_timing *timing) drm_est3_modes() argument
2220 mode = drm_mode_find_dmt(connector->dev, drm_est3_modes()
2226 drm_mode_probed_add(connector, mode); drm_est3_modes()
2243 closure->modes += drm_est3_modes(closure->connector, timing); do_established_modes()
2248 * @connector: connector to add mode(s) to
2255 add_established_modes(struct drm_connector *connector, struct edid *edid) add_established_modes() argument
2257 struct drm_device *dev = connector->dev; add_established_modes()
2263 .connector = connector, add_established_modes()
2272 drm_mode_probed_add(connector, newmode); add_established_modes()
2290 struct drm_connector *connector = closure->connector; do_standard_modes() local
2300 newmode = drm_mode_std(connector, edid, std); do_standard_modes()
2302 drm_mode_probed_add(connector, newmode); do_standard_modes()
2311 * @connector: connector to add mode(s) to
2318 add_standard_modes(struct drm_connector *connector, struct edid *edid) add_standard_modes() argument
2322 .connector = connector, add_standard_modes()
2329 newmode = drm_mode_std(connector, edid, add_standard_modes()
2332 drm_mode_probed_add(connector, newmode); add_standard_modes()
2346 static int drm_cvt_modes(struct drm_connector *connector, drm_cvt_modes() argument
2351 struct drm_device *dev = connector->dev; drm_cvt_modes()
2385 drm_mode_probed_add(connector, newmode); drm_cvt_modes()
2402 closure->modes += drm_cvt_modes(closure->connector, timing); do_cvt_mode()
2406 add_cvt_modes(struct drm_connector *connector, struct edid *edid) add_cvt_modes() argument
2409 .connector = connector, add_cvt_modes()
2430 newmode = drm_mode_detailed(closure->connector->dev, do_detailed_mode()
2446 drm_mode_probed_add(closure->connector, newmode); do_detailed_mode()
2454 * @connector: attached connector
2459 add_detailed_modes(struct drm_connector *connector, struct edid *edid, add_detailed_modes() argument
2463 .connector = connector, add_detailed_modes()
2644 add_alternate_cea_modes(struct drm_connector *connector, struct edid *edid) add_alternate_cea_modes() argument
2646 struct drm_device *dev = connector->dev; add_alternate_cea_modes()
2659 list_for_each_entry(mode, &connector->probed_modes, head) { add_alternate_cea_modes()
2708 drm_mode_probed_add(connector, mode); add_alternate_cea_modes()
2716 drm_display_mode_from_vic_index(struct drm_connector *connector, drm_display_mode_from_vic_index() argument
2720 struct drm_device *dev = connector->dev; drm_display_mode_from_vic_index()
2742 do_cea_modes(struct drm_connector *connector, const u8 *db, u8 len) do_cea_modes() argument
2748 mode = drm_display_mode_from_vic_index(connector, db, len, i); do_cea_modes()
2750 drm_mode_probed_add(connector, mode); do_cea_modes()
2788 static int add_hdmi_mandatory_stereo_modes(struct drm_connector *connector) add_hdmi_mandatory_stereo_modes() argument
2790 struct drm_device *dev = connector->dev; add_hdmi_mandatory_stereo_modes()
2797 list_for_each_entry(mode, &connector->probed_modes, head) { add_hdmi_mandatory_stereo_modes()
2817 list_splice_tail(&stereo_modes, &connector->probed_modes); add_hdmi_mandatory_stereo_modes()
2822 static int add_hdmi_mode(struct drm_connector *connector, u8 vic) add_hdmi_mode() argument
2824 struct drm_device *dev = connector->dev; add_hdmi_mode()
2837 drm_mode_probed_add(connector, newmode); add_hdmi_mode()
2842 static int add_3d_struct_modes(struct drm_connector *connector, u16 structure, add_3d_struct_modes() argument
2849 newmode = drm_display_mode_from_vic_index(connector, video_db, add_3d_struct_modes()
2854 drm_mode_probed_add(connector, newmode); add_3d_struct_modes()
2859 newmode = drm_display_mode_from_vic_index(connector, video_db, add_3d_struct_modes()
2864 drm_mode_probed_add(connector, newmode); add_3d_struct_modes()
2869 newmode = drm_display_mode_from_vic_index(connector, video_db, add_3d_struct_modes()
2874 drm_mode_probed_add(connector, newmode); add_3d_struct_modes()
2884 * @connector: connector corresponding to the HDMI sink
2888 * Parses the HDMI VSDB looking for modes to add to @connector. This function
2892 do_hdmi_vsdb_modes(struct drm_connector *connector, const u8 *db, u8 len, do_hdmi_vsdb_modes() argument
2923 modes += add_hdmi_mandatory_stereo_modes(connector); do_hdmi_vsdb_modes()
2937 modes += add_hdmi_mode(connector, vic); do_hdmi_vsdb_modes()
2966 modes += add_3d_struct_modes(connector, do_hdmi_vsdb_modes()
3005 newmode = drm_display_mode_from_vic_index(connector, do_hdmi_vsdb_modes()
3012 drm_mode_probed_add(connector, newmode); do_hdmi_vsdb_modes()
3075 add_cea_modes(struct drm_connector *connector, struct edid *edid) add_cea_modes() argument
3095 modes += do_cea_modes(connector, video, dbl); for_each_cea_db()
3109 modes += do_hdmi_vsdb_modes(connector, hdmi, hdmi_len, video,
3155 parse_hdmi_vsdb(struct drm_connector *connector, const u8 *db) parse_hdmi_vsdb() argument
3160 connector->eld[5] |= (db[6] >> 7) << 1; /* Supports_AI */ parse_hdmi_vsdb()
3161 connector->dvi_dual = db[6] & 1; parse_hdmi_vsdb()
3164 connector->max_tmds_clock = db[7] * 5; parse_hdmi_vsdb()
3166 connector->latency_present[0] = db[8] >> 7; parse_hdmi_vsdb()
3167 connector->latency_present[1] = (db[8] >> 6) & 1; parse_hdmi_vsdb()
3170 connector->video_latency[0] = db[9]; parse_hdmi_vsdb()
3172 connector->audio_latency[0] = db[10]; parse_hdmi_vsdb()
3174 connector->video_latency[1] = db[11]; parse_hdmi_vsdb()
3176 connector->audio_latency[1] = db[12]; parse_hdmi_vsdb()
3183 connector->dvi_dual, parse_hdmi_vsdb()
3184 connector->max_tmds_clock, parse_hdmi_vsdb()
3185 (int) connector->latency_present[0], parse_hdmi_vsdb()
3186 (int) connector->latency_present[1], parse_hdmi_vsdb()
3187 connector->video_latency[0], parse_hdmi_vsdb()
3188 connector->video_latency[1], parse_hdmi_vsdb()
3189 connector->audio_latency[0], parse_hdmi_vsdb()
3190 connector->audio_latency[1]); parse_hdmi_vsdb()
3202 * @connector: connector corresponding to the HDMI/DP sink
3209 void drm_edid_to_eld(struct drm_connector *connector, struct edid *edid) drm_edid_to_eld() argument
3211 uint8_t *eld = connector->eld; drm_edid_to_eld()
3219 memset(eld, 0, sizeof(connector->eld)); drm_edid_to_eld()
3271 parse_hdmi_vsdb(connector, db); for_each_cea_db()
3405 * @connector: connector associated with the HDMI/DP sink
3411 int drm_av_sync_delay(struct drm_connector *connector, drm_av_sync_delay() argument
3417 if (!connector->latency_present[0]) drm_av_sync_delay()
3419 if (!connector->latency_present[1]) drm_av_sync_delay()
3422 a = connector->audio_latency[i]; drm_av_sync_delay()
3423 v = connector->video_latency[i]; drm_av_sync_delay()
3451 * Return: The connector associated with the first HDMI/DP sink that has ELD
3456 struct drm_connector *connector; drm_select_eld() local
3462 drm_for_each_connector(connector, dev) drm_select_eld()
3463 if (connector->encoder == encoder && connector->eld[0]) drm_select_eld()
3464 return connector; drm_select_eld()
3591 * @connector: DRM connector, used only for debug output
3598 struct drm_connector *connector) drm_assign_hdmi_deep_color_info()
3629 connector->name); for_each_cea_db()
3636 connector->name); for_each_cea_db()
3643 connector->name); for_each_cea_db()
3648 connector->name, dc_bpc); for_each_cea_db()
3662 connector->name); for_each_cea_db()
3671 connector->name); for_each_cea_db()
3678 connector->name); for_each_cea_db()
3689 * @info: display info (attached to connector)
3690 * @connector: connector whose edid is used to build display info
3693 * structure that's part of the connector. Useful for tracking bpp and
3698 struct drm_connector *connector) drm_add_display_info()
3729 drm_assign_hdmi_deep_color_info(edid, info, connector); drm_add_display_info()
3761 connector->name, info->bpc); drm_add_display_info()
3772 * @connector: connector we're probing
3775 * Add the specified modes to the connector's mode list.
3779 int drm_add_edid_modes(struct drm_connector *connector, struct edid *edid) drm_add_edid_modes() argument
3788 dev_warn(connector->dev->dev, "%s: EDID invalid.\n", drm_add_edid_modes()
3789 connector->name); drm_add_edid_modes()
3809 num_modes += add_detailed_modes(connector, edid, quirks); drm_add_edid_modes()
3810 num_modes += add_cvt_modes(connector, edid); drm_add_edid_modes()
3811 num_modes += add_standard_modes(connector, edid); drm_add_edid_modes()
3812 num_modes += add_established_modes(connector, edid); drm_add_edid_modes()
3813 num_modes += add_cea_modes(connector, edid); drm_add_edid_modes()
3814 num_modes += add_alternate_cea_modes(connector, edid); drm_add_edid_modes()
3816 num_modes += add_inferred_modes(connector, edid); drm_add_edid_modes()
3819 edid_fixup_preferred(connector, quirks); drm_add_edid_modes()
3821 drm_add_display_info(edid, &connector->display_info, connector); drm_add_edid_modes()
3824 connector->display_info.bpc = 8; drm_add_edid_modes()
3827 connector->display_info.bpc = 12; drm_add_edid_modes()
3835 * @connector: connector we're probing
3839 * Add the specified modes to the connector's mode list. Only when the
3844 int drm_add_modes_noedid(struct drm_connector *connector, drm_add_modes_noedid() argument
3849 struct drm_device *dev = connector->dev; drm_add_modes_noedid()
3863 * the connector. drm_add_modes_noedid()
3873 drm_mode_probed_add(connector, mode); drm_add_modes_noedid()
3882 * drm_set_preferred_mode - Sets the preferred mode of a connector
3883 * @connector: connector whose mode list should be processed
3890 void drm_set_preferred_mode(struct drm_connector *connector, drm_set_preferred_mode() argument
3895 list_for_each_entry(mode, &connector->probed_modes, head) { drm_set_preferred_mode()
4021 static int drm_parse_display_id(struct drm_connector *connector, drm_parse_display_id() argument
4072 connector->has_tile = true; drm_parse_display_id()
4074 connector->tile_is_single_monitor = true; drm_parse_display_id()
4076 connector->num_h_tile = num_h_tile + 1; drm_parse_display_id()
4077 connector->num_v_tile = num_v_tile + 1; drm_parse_display_id()
4078 connector->tile_h_loc = tile_h_loc; drm_parse_display_id()
4079 connector->tile_v_loc = tile_v_loc; drm_parse_display_id()
4080 connector->tile_h_size = w + 1; drm_parse_display_id()
4081 connector->tile_v_size = h + 1; drm_parse_display_id()
4089 tg = drm_mode_get_tile_group(connector->dev, tile->topology_id); drm_parse_display_id()
4091 tg = drm_mode_create_tile_group(connector->dev, tile->topology_id); drm_parse_display_id()
4096 if (connector->tile_group != tg) { drm_parse_display_id()
4099 if (connector->tile_group) { drm_parse_display_id()
4100 drm_mode_put_tile_group(connector->dev, connector->tile_group); drm_parse_display_id()
4102 connector->tile_group = tg; drm_parse_display_id()
4105 drm_mode_put_tile_group(connector->dev, tg); drm_parse_display_id()
4115 static void drm_get_displayid(struct drm_connector *connector, drm_get_displayid() argument
4120 connector->has_tile = false; drm_get_displayid()
4127 ret = drm_parse_display_id(connector, displayid, EDID_LENGTH, true); drm_get_displayid()
4130 if (!connector->has_tile) drm_get_displayid()
4134 if (connector->tile_group) { drm_get_displayid()
4135 drm_mode_put_tile_group(connector->dev, connector->tile_group); drm_get_displayid()
4136 connector->tile_group = NULL; drm_get_displayid()
3596 drm_assign_hdmi_deep_color_info(struct edid *edid, struct drm_display_info *info, struct drm_connector *connector) drm_assign_hdmi_deep_color_info() argument
3696 drm_add_display_info(struct edid *edid, struct drm_display_info *info, struct drm_connector *connector) drm_add_display_info() argument
H A Ddrm_debugfs.c242 struct drm_connector *connector = m->private; connector_show() local
245 switch (connector->force) { connector_show()
282 struct drm_connector *connector = m->private; connector_write() local
294 connector->force = DRM_FORCE_ON; connector_write()
296 connector->force = DRM_FORCE_ON_DIGITAL; connector_write()
298 connector->force = DRM_FORCE_OFF; connector_write()
300 connector->force = DRM_FORCE_UNSPECIFIED; connector_write()
309 struct drm_connector *connector = m->private; edid_show() local
310 struct drm_property_blob *edid = connector->edid_blob_ptr; edid_show()
312 if (connector->override_edid && edid) edid_show()
329 struct drm_connector *connector = m->private; edid_write() local
341 connector->override_edid = false; edid_write()
342 ret = drm_mode_connector_update_edid_property(connector, NULL); edid_write()
347 connector->override_edid = false; edid_write()
348 ret = drm_mode_connector_update_edid_property(connector, edid); edid_write()
350 connector->override_edid = true; edid_write()
377 int drm_debugfs_connector_add(struct drm_connector *connector) drm_debugfs_connector_add() argument
379 struct drm_minor *minor = connector->dev->primary; drm_debugfs_connector_add()
385 root = debugfs_create_dir(connector->name, minor->debugfs_root); drm_debugfs_connector_add()
389 connector->debugfs_entry = root; drm_debugfs_connector_add()
392 ent = debugfs_create_file("force", S_IRUGO | S_IWUSR, root, connector, drm_debugfs_connector_add()
399 connector, &drm_edid_fops); drm_debugfs_connector_add()
406 debugfs_remove_recursive(connector->debugfs_entry); drm_debugfs_connector_add()
407 connector->debugfs_entry = NULL; drm_debugfs_connector_add()
411 void drm_debugfs_connector_remove(struct drm_connector *connector) drm_debugfs_connector_remove() argument
413 if (!connector->debugfs_entry) drm_debugfs_connector_remove()
416 debugfs_remove_recursive(connector->debugfs_entry); drm_debugfs_connector_remove()
418 connector->debugfs_entry = NULL; drm_debugfs_connector_remove()
H A Ddrm_crtc_helper.c72 * connector list
75 * Some userspace presumes that the first connected connector is the main
78 * (eDP/LVDS) panels to the front of the connector list, instead of
83 struct drm_connector *connector, *tmp; drm_helper_move_panel_connectors_to_head() local
88 list_for_each_entry_safe(connector, tmp, drm_helper_move_panel_connectors_to_head()
90 if (connector->connector_type == DRM_MODE_CONNECTOR_LVDS || drm_helper_move_panel_connectors_to_head()
91 connector->connector_type == DRM_MODE_CONNECTOR_eDP) drm_helper_move_panel_connectors_to_head()
92 list_move_tail(&connector->head, &panel_list); drm_helper_move_panel_connectors_to_head()
104 * in use by any connector. This doesn't mean that it is actually enabled since
112 struct drm_connector *connector; drm_helper_encoder_in_use() local
124 drm_for_each_connector(connector, dev) drm_helper_encoder_in_use()
125 if (connector->encoder == encoder) drm_helper_encoder_in_use()
136 * in use by any connector. This doesn't mean that it is actually enabled since
186 /* disconnect encoder from any connector */ drm_for_each_encoder()
305 * adjust it according to limitations or connector properties, and also drm_crtc_helper_set_mode()
417 struct drm_connector *connector; drm_crtc_helper_disable() local
425 drm_for_each_connector(connector, dev) { drm_for_each_connector()
426 if (connector->encoder != encoder) drm_for_each_connector()
429 connector->encoder = NULL; drm_for_each_connector()
434 * from the connector above, the required connection drm_for_each_connector()
437 connector->dpms = DRM_MODE_DPMS_OFF; drm_for_each_connector()
464 struct drm_connector *save_connectors, *connector; drm_crtc_helper_set_config() local
502 * connector data. drm_crtc_helper_set_config()
527 drm_for_each_connector(connector, dev) { drm_for_each_connector()
528 save_connectors[count++] = *connector; drm_for_each_connector()
563 /* a) traverse passed in connector list and get encoders for them */
565 drm_for_each_connector(connector, dev) { drm_for_each_connector()
567 connector->helper_private; drm_for_each_connector()
568 new_encoder = connector->encoder; drm_for_each_connector()
570 if (set->connectors[ro] == connector) { drm_for_each_connector()
571 new_encoder = connector_funcs->best_encoder(connector); drm_for_each_connector()
572 /* if we can't get an encoder for a connector drm_for_each_connector()
578 if (connector->dpms != DRM_MODE_DPMS_ON) { drm_for_each_connector()
579 DRM_DEBUG_KMS("connector dpms not on, full mode switch\n"); drm_for_each_connector()
587 if (new_encoder != connector->encoder) { drm_for_each_connector()
590 /* If the encoder is reused for another connector, then drm_for_each_connector()
593 if (connector->encoder) drm_for_each_connector()
594 connector->encoder->crtc = NULL; drm_for_each_connector()
595 connector->encoder = new_encoder; drm_for_each_connector()
605 drm_for_each_connector(connector, dev) { drm_for_each_connector()
606 if (!connector->encoder) drm_for_each_connector()
609 if (connector->encoder->crtc == set->crtc) drm_for_each_connector()
612 new_crtc = connector->encoder->crtc; drm_for_each_connector()
615 if (set->connectors[ro] == connector) drm_for_each_connector()
621 !drm_encoder_crtc_ok(connector->encoder, new_crtc)) { drm_for_each_connector()
625 if (new_crtc != connector->encoder->crtc) { drm_for_each_connector()
628 connector->encoder->crtc = new_crtc; drm_for_each_connector()
632 connector->base.id, connector->name, drm_for_each_connector()
636 connector->base.id, connector->name); drm_for_each_connector()
659 DRM_DEBUG_KMS("Setting connector DPMS state to on\n");
693 drm_for_each_connector(connector, dev) { drm_for_each_connector()
694 *connector = save_connectors[count++]; drm_for_each_connector()
712 struct drm_connector *connector; drm_helper_choose_encoder_dpms() local
715 drm_for_each_connector(connector, dev) drm_helper_choose_encoder_dpms()
716 if (connector->encoder == encoder) drm_helper_choose_encoder_dpms()
717 if (connector->dpms < dpms) drm_helper_choose_encoder_dpms()
718 dpms = connector->dpms; drm_helper_choose_encoder_dpms()
746 struct drm_connector *connector; drm_helper_choose_crtc_dpms() local
749 drm_for_each_connector(connector, dev) drm_helper_choose_crtc_dpms()
750 if (connector->encoder && connector->encoder->crtc == crtc) drm_helper_choose_crtc_dpms()
751 if (connector->dpms < dpms) drm_helper_choose_crtc_dpms()
752 dpms = connector->dpms; drm_helper_choose_crtc_dpms()
757 * drm_helper_connector_dpms() - connector dpms helper implementation
758 * @connector: affected connector
762 * implementing the DPMS connector attribute. It computes the new desired DPMS
769 int drm_helper_connector_dpms(struct drm_connector *connector, int mode) drm_helper_connector_dpms() argument
771 struct drm_encoder *encoder = connector->encoder; drm_helper_connector_dpms()
775 if (mode == connector->dpms) drm_helper_connector_dpms()
778 old_dpms = connector->dpms; drm_helper_connector_dpms()
779 connector->dpms = mode; drm_helper_connector_dpms()
H A Ddrm_panel.c57 int drm_panel_attach(struct drm_panel *panel, struct drm_connector *connector) drm_panel_attach() argument
59 if (panel->connector) drm_panel_attach()
62 panel->connector = connector; drm_panel_attach()
63 panel->drm = connector->dev; drm_panel_attach()
71 panel->connector = NULL; drm_panel_detach()
H A Ddrm_atomic_helper.c88 struct drm_connector *connector; get_current_crtc_for_encoder() local
92 drm_for_each_connector(connector, dev) { drm_for_each_connector()
93 if (connector->state->best_encoder != encoder) drm_for_each_connector()
96 return connector->state->crtc; drm_for_each_connector()
109 struct drm_connector *connector; steal_encoder() local
114 * We can only steal an encoder coming from a connector, which means we steal_encoder()
129 list_for_each_entry(connector, &config->connector_list, head) { steal_encoder()
130 if (connector->state->best_encoder != encoder) steal_encoder()
134 connector->base.id, steal_encoder()
135 connector->name); steal_encoder()
138 connector); steal_encoder()
157 struct drm_connector *connector; update_connector_routing() local
162 connector = state->connectors[conn_idx]; update_connector_routing()
165 if (!connector) update_connector_routing()
169 connector->base.id, update_connector_routing()
170 connector->name); update_connector_routing()
172 if (connector->state->crtc != connector_state->crtc) { update_connector_routing()
173 if (connector->state->crtc) { update_connector_routing()
174 idx = drm_crtc_index(connector->state->crtc); update_connector_routing()
190 connector->base.id, update_connector_routing()
191 connector->name); update_connector_routing()
198 funcs = connector->helper_private; update_connector_routing()
201 new_encoder = funcs->atomic_best_encoder(connector, update_connector_routing()
204 new_encoder = funcs->best_encoder(connector); update_connector_routing()
208 connector->base.id, update_connector_routing()
209 connector->name); update_connector_routing()
223 connector->base.id, update_connector_routing()
224 connector->name, update_connector_routing()
239 connector->base.id, update_connector_routing()
240 connector->name); update_connector_routing()
255 connector->base.id, update_connector_routing()
256 connector->name, update_connector_routing()
269 struct drm_connector *connector; mode_fixup() local
282 for_each_connector_in_state(state, connector, conn_state, i) { for_each_connector_in_state()
295 * Each encoder has at most one connector (since we always steal for_each_connector_in_state()
358 * This does all the crtc and connector related computations for an atomic
363 * crtc_state->connectors_changed is set when a connector is added or
385 struct drm_connector *connector; drm_atomic_helper_check_modeset() local
413 for_each_connector_in_state(state, connector, connector_state, i) { for_each_connector_in_state()
416 * drivers must set crtc->mode_changed themselves when connector for_each_connector_in_state()
426 * connector which is itself unchanged, but who's crtc changes it's
578 struct drm_connector *connector; disable_outputs() local
584 for_each_connector_in_state(old_state, connector, old_conn_state, i) { for_each_connector_in_state()
614 * Each encoder has at most one connector (since we always steal for_each_connector_in_state()
620 if (connector->state->crtc && funcs->prepare) for_each_connector_in_state()
673 struct drm_connector *connector; drm_atomic_helper_update_legacy_modeset_state() local
680 for_each_connector_in_state(old_state, connector, old_conn_state, i) { for_each_connector_in_state()
681 if (connector->encoder) { for_each_connector_in_state()
682 WARN_ON(!connector->encoder->crtc); for_each_connector_in_state()
684 connector->encoder->crtc = NULL; for_each_connector_in_state()
685 connector->encoder = NULL; for_each_connector_in_state()
688 crtc = connector->state->crtc; for_each_connector_in_state()
698 connector->dpms = mode; for_each_connector_in_state()
699 drm_object_property_set_value(&connector->base, for_each_connector_in_state()
705 for_each_connector_in_state(old_state, connector, old_conn_state, i) { for_each_connector_in_state()
706 if (!connector->state->crtc) for_each_connector_in_state()
709 if (WARN_ON(!connector->state->best_encoder)) for_each_connector_in_state()
712 connector->encoder = connector->state->best_encoder; for_each_connector_in_state()
713 connector->encoder->crtc = connector->state->crtc; for_each_connector_in_state()
741 struct drm_connector *connector; crtc_set_mode() local
761 for_each_connector_in_state(old_state, connector, old_conn_state, i) { for_each_connector_in_state()
767 if (!connector->state->best_encoder) for_each_connector_in_state()
770 encoder = connector->state->best_encoder; for_each_connector_in_state()
772 new_crtc_state = connector->state->crtc->state; for_each_connector_in_state()
783 * Each encoder has at most one connector (since we always steal for_each_connector_in_state()
837 struct drm_connector *connector; drm_atomic_helper_commit_modeset_enables() local
864 for_each_connector_in_state(old_state, connector, old_conn_state, i) { for_each_connector_in_state()
868 if (!connector->state->best_encoder) for_each_connector_in_state()
871 if (!connector->state->crtc->state->active || for_each_connector_in_state()
872 !drm_atomic_crtc_needs_modeset(connector->state->crtc->state)) for_each_connector_in_state()
875 encoder = connector->state->best_encoder; for_each_connector_in_state()
882 * Each encoder has at most one connector (since we always steal for_each_connector_in_state()
1405 struct drm_connector *connector = state->connectors[i]; drm_atomic_helper_swap_state() local
1407 if (!connector) drm_atomic_helper_swap_state()
1410 connector->state->state = state; drm_atomic_helper_swap_state()
1411 swap(state->connector_states[i], connector->state); drm_atomic_helper_swap_state()
1412 connector->state->state = NULL; drm_atomic_helper_swap_state()
1628 struct drm_connector *connector; update_output_state() local
1637 /* First grab all affected connector/crtc states. */ update_output_state()
1651 /* Then recompute connector->crtc links and crtc enabling state. */ for_each_connector_in_state()
1652 for_each_connector_in_state(state, connector, conn_state, i) { for_each_connector_in_state()
1661 if (set->connectors[j] == connector) { for_each_connector_in_state()
1941 * drm_atomic_helper_connector_set_property - helper for connector properties
1942 * @connector: DRM connector
1946 * Provides a default connector set_property handler using the atomic driver
1953 drm_atomic_helper_connector_set_property(struct drm_connector *connector, drm_atomic_helper_connector_set_property() argument
1961 state = drm_atomic_state_alloc(connector->dev); drm_atomic_helper_connector_set_property()
1966 state->acquire_ctx = connector->dev->mode_config.acquire_ctx; drm_atomic_helper_connector_set_property()
1968 connector_state = drm_atomic_get_connector_state(state, connector); drm_atomic_helper_connector_set_property()
1974 ret = drm_atomic_connector_set_property(connector, connector_state, drm_atomic_helper_connector_set_property()
2083 * drm_atomic_helper_connector_dpms() - connector dpms helper implementation
2084 * @connector: affected connector
2088 * implementing the legacy DPMS connector interface. It computes the new desired
2089 * ->active state for the corresponding CRTC (if the connector is enabled) and
2095 int drm_atomic_helper_connector_dpms(struct drm_connector *connector, drm_atomic_helper_connector_dpms() argument
2098 struct drm_mode_config *config = &connector->dev->mode_config; drm_atomic_helper_connector_dpms()
2105 int old_mode = connector->dpms; drm_atomic_helper_connector_dpms()
2110 connector->dpms = mode; drm_atomic_helper_connector_dpms()
2111 crtc = connector->state->crtc; drm_atomic_helper_connector_dpms()
2116 state = drm_atomic_state_alloc(connector->dev); drm_atomic_helper_connector_dpms()
2130 drm_for_each_connector(tmp_connector, connector->dev) { drm_atomic_helper_connector_dpms()
2151 connector->dpms = old_mode; drm_atomic_helper_connector_dpms()
2372 * @connector: drm connector
2374 * Resets the atomic state for @connector by freeing the state pointer (which
2378 void drm_atomic_helper_connector_reset(struct drm_connector *connector) drm_atomic_helper_connector_reset() argument
2380 kfree(connector->state); drm_atomic_helper_connector_reset()
2381 connector->state = kzalloc(sizeof(*connector->state), GFP_KERNEL); drm_atomic_helper_connector_reset()
2383 if (connector->state) drm_atomic_helper_connector_reset()
2384 connector->state->connector = connector; drm_atomic_helper_connector_reset()
2389 * __drm_atomic_helper_connector_duplicate_state - copy atomic connector state
2390 * @connector: connector object
2391 * @state: atomic connector state
2393 * Copies atomic state from a connector's current state. This is useful for
2394 * drivers that subclass the connector state.
2397 __drm_atomic_helper_connector_duplicate_state(struct drm_connector *connector, __drm_atomic_helper_connector_duplicate_state() argument
2400 memcpy(state, connector->state, sizeof(*state)); __drm_atomic_helper_connector_duplicate_state()
2406 * @connector: drm connector
2408 * Default connector state duplicate hook for drivers which don't have their own
2409 * subclassed connector state structure.
2412 drm_atomic_helper_connector_duplicate_state(struct drm_connector *connector) drm_atomic_helper_connector_duplicate_state() argument
2416 if (WARN_ON(!connector->state)) drm_atomic_helper_connector_duplicate_state()
2421 __drm_atomic_helper_connector_duplicate_state(connector, state); drm_atomic_helper_connector_duplicate_state()
2506 * __drm_atomic_helper_connector_destroy_state - release connector state
2507 * @connector: connector object
2508 * @state: connector state object to release
2510 * Releases all resources stored in the connector state without actually
2511 * freeing the memory of the connector state. This is useful for drivers that
2512 * subclass the connector state.
2515 __drm_atomic_helper_connector_destroy_state(struct drm_connector *connector, __drm_atomic_helper_connector_destroy_state() argument
2528 * @connector: drm connector
2529 * @state: connector state object to release
2531 * Default connector state destroy hook for drivers which don't have their own
2532 * subclassed connector state structure.
2534 void drm_atomic_helper_connector_destroy_state(struct drm_connector *connector, drm_atomic_helper_connector_destroy_state() argument
2537 __drm_atomic_helper_connector_destroy_state(connector, state); drm_atomic_helper_connector_destroy_state()
H A Ddrm_fb_helper.c99 * This function is protected against concurrent connector hotadds/removals
106 struct drm_connector *connector; drm_fb_helper_single_add_all_connectors() local
113 drm_for_each_connector(connector, dev) { drm_for_each_connector()
120 fb_helper_connector->connector = connector; drm_for_each_connector()
137 int drm_fb_helper_add_one_connector(struct drm_fb_helper *fb_helper, struct drm_connector *connector) drm_fb_helper_add_one_connector() argument
160 fb_helper_connector->connector = connector; drm_fb_helper_add_one_connector()
167 struct drm_connector *connector) remove_from_modeset()
172 if (set->connectors[i] == connector) remove_from_modeset()
189 drm_mode_destroy(connector->dev, set->mode); remove_from_modeset()
195 struct drm_connector *connector) drm_fb_helper_remove_one_connector()
206 if (fb_helper->connector_info[i]->connector == connector) drm_fb_helper_remove_one_connector()
220 /* also cleanup dangling references to the connector: */ drm_fb_helper_remove_one_connector()
222 remove_from_modeset(&fb_helper->crtc_info[i].mode_set, connector); drm_fb_helper_remove_one_connector()
564 struct drm_connector *connector; drm_fb_helper_dpms() local
584 connector = fb_helper->connector_info[j]->connector; drm_fb_helper_dpms()
585 connector->funcs->dpms(connector, dpms_mode); drm_fb_helper_dpms()
586 drm_object_property_set_value(&connector->base, drm_fb_helper_dpms()
667 * @max_conn_count: max connector count
1363 cmdline_mode = &fb_helper_conn->connector->cmdline_mode; drm_fb_helper_single_fb_probe()
1418 struct drm_connector *connector = mode_set->connectors[j]; drm_fb_helper_single_fb_probe() local
1419 if (connector->has_tile) { drm_fb_helper_single_fb_probe()
1420 lasth = (connector->tile_h_loc == (connector->num_h_tile - 1)); drm_fb_helper_single_fb_probe()
1421 lastv = (connector->tile_v_loc == (connector->num_v_tile - 1)); drm_fb_helper_single_fb_probe()
1600 struct drm_connector *connector; drm_fb_helper_probe_connector_modes() local
1605 connector = fb_helper->connector_info[i]->connector; drm_fb_helper_probe_connector_modes()
1606 count += connector->funcs->fill_modes(connector, maxX, maxY); drm_fb_helper_probe_connector_modes()
1616 list_for_each_entry(mode, &fb_connector->connector->modes, head) { drm_has_preferred_mode()
1629 return fb_connector->connector->cmdline_mode.specified; drm_has_cmdline_mode()
1639 cmdline_mode = &fb_helper_conn->connector->cmdline_mode; drm_pick_cmdline_mode()
1651 list_for_each_entry(mode, &fb_helper_conn->connector->modes, head) { drm_pick_cmdline_mode()
1678 mode = drm_mode_create_from_cmdline_mode(fb_helper_conn->connector->dev, drm_pick_cmdline_mode()
1680 list_add(&mode->head, &fb_helper_conn->connector->modes); drm_pick_cmdline_mode()
1685 static bool drm_connector_enabled(struct drm_connector *connector, bool strict) drm_connector_enabled() argument
1690 enable = connector->status == connector_status_connected; drm_connector_enabled()
1692 enable = connector->status != connector_status_disconnected; drm_connector_enabled()
1701 struct drm_connector *connector; drm_enable_connectors() local
1705 connector = fb_helper->connector_info[i]->connector; drm_enable_connectors()
1706 enabled[i] = drm_connector_enabled(connector, true); drm_enable_connectors()
1707 DRM_DEBUG_KMS("connector %d enabled? %s\n", connector->base.id, drm_enable_connectors()
1716 connector = fb_helper->connector_info[i]->connector; drm_enable_connectors()
1717 enabled[i] = drm_connector_enabled(connector, false); drm_enable_connectors()
1741 /* only contemplate cloning if more than one connector is enabled */ drm_target_cloned()
1769 /* try and find a 1024x768 mode on each connector */ drm_target_cloned()
1779 list_for_each_entry(mode, &fb_helper_conn->connector->modes, head) { drm_target_cloned()
1807 if (!fb_helper_conn->connector->has_tile) drm_get_tile_offsets()
1811 DRM_DEBUG_KMS("no modes for connector tiled %d %d\n", i, drm_get_tile_offsets()
1812 fb_helper_conn->connector->base.id); drm_get_tile_offsets()
1815 if (fb_helper_conn->connector->tile_h_loc < h_idx) drm_get_tile_offsets()
1818 if (fb_helper_conn->connector->tile_v_loc < v_idx) drm_get_tile_offsets()
1850 if (tile_pass == 0 && fb_helper_conn->connector->has_tile) drm_target_preferred()
1854 if (fb_helper_conn->connector->tile_h_loc != 0 || drm_target_preferred()
1855 fb_helper_conn->connector->tile_v_loc != 0) drm_target_preferred()
1859 if (fb_helper_conn->connector->tile_h_loc != tile_pass -1 && drm_target_preferred()
1860 fb_helper_conn->connector->tile_v_loc != tile_pass - 1) drm_target_preferred()
1867 i, fb_helper_conn->connector->tile_h_loc, fb_helper_conn->connector->tile_v_loc); drm_target_preferred()
1869 DRM_DEBUG_KMS("looking for cmdline mode on connector %d\n", drm_target_preferred()
1870 fb_helper_conn->connector->base.id); drm_target_preferred()
1875 DRM_DEBUG_KMS("looking for preferred mode on connector %d %d\n", drm_target_preferred()
1876 fb_helper_conn->connector->base.id, fb_helper_conn->connector->tile_group ? fb_helper_conn->connector->tile_group->id : 0); drm_target_preferred()
1880 if (!modes[i] && !list_empty(&fb_helper_conn->connector->modes)) { drm_target_preferred()
1881 list_for_each_entry(modes[i], &fb_helper_conn->connector->modes, head) drm_target_preferred()
1902 struct drm_connector *connector; drm_pick_crtcs() local
1913 connector = fb_helper_conn->connector; drm_pick_crtcs()
1926 if (connector->status == connector_status_connected) drm_pick_crtcs()
1933 connector_funcs = connector->helper_private; drm_pick_crtcs()
1934 encoder = connector_funcs->best_encoder(connector); drm_pick_crtcs()
1938 /* select a crtc for this connector and then attempt to configure drm_pick_crtcs()
2028 /* fill out the connector<->crtc mappings into the modesets */ drm_setup_crtcs()
2051 modeset->connectors[modeset->num_connectors++] = fb_helper->connector_info[i]->connector; drm_setup_crtcs()
2076 * drm_fb_helper_initial_config - setup a sane initial connector configuration
166 remove_from_modeset(struct drm_mode_set *set, struct drm_connector *connector) remove_from_modeset() argument
194 drm_fb_helper_remove_one_connector(struct drm_fb_helper *fb_helper, struct drm_connector *connector) drm_fb_helper_remove_one_connector() argument
H A Ddrm_crtc.c210 * drm_get_connector_status_name - return a string for connector status
211 * @status: connector status to compute name of
760 * @connector: connector list to modify
763 * Remove @mode from @connector's mode list, then free it.
765 static void drm_mode_remove(struct drm_connector *connector, drm_mode_remove() argument
769 drm_mode_destroy(connector->dev, mode); drm_mode_remove()
808 * @connector: connector to quwery
810 * The kernel supports per-connector configration of its consoles through
813 * particular connector. This is typically only used during the early fbdev
816 static void drm_connector_get_cmdline_mode(struct drm_connector *connector) drm_connector_get_cmdline_mode() argument
818 struct drm_cmdline_mode *mode = &connector->cmdline_mode; drm_connector_get_cmdline_mode()
821 if (fb_get_options(connector->name, &option)) drm_connector_get_cmdline_mode()
825 connector, drm_connector_get_cmdline_mode()
845 DRM_INFO("forcing %s connector %s\n", connector->name, s); drm_connector_get_cmdline_mode()
846 connector->force = mode->force; drm_connector_get_cmdline_mode()
849 DRM_DEBUG_KMS("cmdline mode for connector %s %dx%d@%dHz%s%s%s\n", drm_connector_get_cmdline_mode()
850 connector->name, drm_connector_get_cmdline_mode()
859 * drm_connector_init - Init a preallocated connector
861 * @connector: the connector to init
862 * @funcs: callbacks for this connector
863 * @connector_type: user visible type of the connector
865 * Initialises a preallocated connector. Connectors should be
866 * subclassed as part of driver connector objects.
872 struct drm_connector *connector, drm_connector_init()
883 ret = drm_mode_object_get_reg(dev, &connector->base, DRM_MODE_OBJECT_CONNECTOR, false); drm_connector_init()
887 connector->base.properties = &connector->properties; drm_connector_init()
888 connector->dev = dev; drm_connector_init()
889 connector->funcs = funcs; drm_connector_init()
890 connector->connector_type = connector_type; drm_connector_init()
891 connector->connector_type_id = drm_connector_init()
893 if (connector->connector_type_id < 0) { drm_connector_init()
894 ret = connector->connector_type_id; drm_connector_init()
897 connector->name = drm_connector_init()
900 connector->connector_type_id); drm_connector_init()
901 if (!connector->name) { drm_connector_init()
906 INIT_LIST_HEAD(&connector->probed_modes); drm_connector_init()
907 INIT_LIST_HEAD(&connector->modes); drm_connector_init()
908 connector->edid_blob_ptr = NULL; drm_connector_init()
909 connector->status = connector_status_unknown; drm_connector_init()
911 drm_connector_get_cmdline_mode(connector); drm_connector_init()
913 /* We should add connectors at the end to avoid upsetting the connector drm_connector_init()
915 list_add_tail(&connector->head, &config->connector_list); drm_connector_init()
919 drm_object_attach_property(&connector->base, drm_connector_init()
923 drm_object_attach_property(&connector->base, drm_connector_init()
927 drm_object_attach_property(&connector->base, config->prop_crtc_id, 0); drm_connector_init()
930 connector->debugfs_entry = NULL; drm_connector_init()
934 drm_mode_object_put(dev, &connector->base); drm_connector_init()
944 * drm_connector_cleanup - cleans up an initialised connector
945 * @connector: connector to cleanup
947 * Cleans up the connector but doesn't free the object.
949 void drm_connector_cleanup(struct drm_connector *connector) drm_connector_cleanup() argument
951 struct drm_device *dev = connector->dev; drm_connector_cleanup()
954 if (connector->tile_group) { drm_connector_cleanup()
955 drm_mode_put_tile_group(dev, connector->tile_group); drm_connector_cleanup()
956 connector->tile_group = NULL; drm_connector_cleanup()
959 list_for_each_entry_safe(mode, t, &connector->probed_modes, head) drm_connector_cleanup()
960 drm_mode_remove(connector, mode); drm_connector_cleanup()
962 list_for_each_entry_safe(mode, t, &connector->modes, head) drm_connector_cleanup()
963 drm_mode_remove(connector, mode); drm_connector_cleanup()
965 ida_remove(&drm_connector_enum_list[connector->connector_type].ida, drm_connector_cleanup()
966 connector->connector_type_id); drm_connector_cleanup()
968 kfree(connector->display_info.bus_formats); drm_connector_cleanup()
969 drm_mode_object_put(dev, &connector->base); drm_connector_cleanup()
970 kfree(connector->name); drm_connector_cleanup()
971 connector->name = NULL; drm_connector_cleanup()
972 list_del(&connector->head); drm_connector_cleanup()
975 WARN_ON(connector->state && !connector->funcs->atomic_destroy_state); drm_connector_cleanup()
976 if (connector->state && connector->funcs->atomic_destroy_state) drm_connector_cleanup()
977 connector->funcs->atomic_destroy_state(connector, drm_connector_cleanup()
978 connector->state); drm_connector_cleanup()
980 memset(connector, 0, sizeof(*connector)); drm_connector_cleanup()
985 * drm_connector_index - find the index of a registered connector
986 * @connector: connector to find index for
988 * Given a registered connector, return the index of that connector within a DRM
991 unsigned int drm_connector_index(struct drm_connector *connector) drm_connector_index() argument
995 struct drm_mode_config *config = &connector->dev->mode_config; drm_connector_index()
999 drm_for_each_connector(tmp, connector->dev) { drm_connector_index()
1000 if (tmp == connector) drm_connector_index()
1011 * drm_connector_register - register a connector
1012 * @connector: the connector to register
1014 * Register userspace interfaces for a connector
1019 int drm_connector_register(struct drm_connector *connector) drm_connector_register() argument
1023 drm_mode_object_register(connector->dev, &connector->base); drm_connector_register()
1025 ret = drm_sysfs_connector_add(connector); drm_connector_register()
1029 ret = drm_debugfs_connector_add(connector); drm_connector_register()
1031 drm_sysfs_connector_remove(connector); drm_connector_register()
1040 * drm_connector_unregister - unregister a connector
1041 * @connector: the connector to unregister
1043 * Unregister userspace interfaces for a connector
1045 void drm_connector_unregister(struct drm_connector *connector) drm_connector_unregister() argument
1047 drm_sysfs_connector_remove(connector); drm_connector_unregister()
1048 drm_debugfs_connector_remove(connector); drm_connector_unregister()
1054 * drm_connector_unplug_all - unregister connector userspace interfaces
1057 * This function unregisters all connector userspace interfaces in sysfs. Should
1063 struct drm_connector *connector; drm_connector_unplug_all() local
1066 list_for_each_entry(connector, &dev->mode_config.connector_list, head) drm_connector_unplug_all()
1067 drm_connector_unregister(connector); drm_connector_unplug_all()
1477 * drm_mode_create_dvi_i_properties - create DVI-I specific connector properties
1480 * Called by a driver the first time a DVI-I connector is made.
1508 * drm_create_tv_properties - create TV specific connector properties
1514 * the TV specific connector properties for a given device. Caller is
1530 * Basic connector properties drm_mode_create_tv_properties()
1727 * them to the user, including CRTC, connector and framebuffer configuration.
1740 struct drm_connector *connector; drm_mode_getresources() local
1782 /* mode_config.mutex protects the connector list against e.g. DP MST drm_mode_getresources()
1783 * connector hot-adding. CRTC/Plane lists are invariant. */ drm_mode_getresources()
1788 drm_for_each_connector(connector, dev) drm_mode_getresources()
1835 drm_for_each_connector(connector, dev) { drm_for_each_connector()
1837 connector->base.id, drm_for_each_connector()
1838 connector->name); drm_for_each_connector()
1839 if (put_user(connector->base.id, drm_for_each_connector()
1929 static struct drm_encoder *drm_connector_get_encoder(struct drm_connector *connector) drm_connector_get_encoder() argument
1933 if (connector->state) drm_connector_get_encoder()
1934 return connector->state->best_encoder; drm_connector_get_encoder()
1935 return connector->encoder; drm_connector_get_encoder()
1977 * drm_mode_getconnector - get connector configuration
1982 * Construct a connector configuration structure to return to the user.
1993 struct drm_connector *connector; drm_mode_getconnector() local
2014 connector = drm_connector_find(dev, out_resp->connector_id); drm_mode_getconnector()
2015 if (!connector) { drm_mode_getconnector()
2021 if (connector->encoder_ids[i] != 0) drm_mode_getconnector()
2025 connector->funcs->fill_modes(connector, drm_mode_getconnector()
2031 list_for_each_entry(mode, &connector->modes, head) drm_mode_getconnector()
2035 out_resp->connector_id = connector->base.id; drm_mode_getconnector()
2036 out_resp->connector_type = connector->connector_type; drm_mode_getconnector()
2037 out_resp->connector_type_id = connector->connector_type_id; drm_mode_getconnector()
2038 out_resp->mm_width = connector->display_info.width_mm; drm_mode_getconnector()
2039 out_resp->mm_height = connector->display_info.height_mm; drm_mode_getconnector()
2040 out_resp->subpixel = connector->display_info.subpixel_order; drm_mode_getconnector()
2041 out_resp->connection = connector->status; drm_mode_getconnector()
2044 encoder = drm_connector_get_encoder(connector); drm_mode_getconnector()
2057 list_for_each_entry(mode, &connector->modes, head) { drm_mode_getconnector()
2072 ret = get_properties(&connector->base, file_priv->atomic, drm_mode_getconnector()
2083 if (connector->encoder_ids[i] != 0) { drm_mode_getconnector()
2084 if (put_user(connector->encoder_ids[i], drm_mode_getconnector()
2106 struct drm_connector *connector; drm_encoder_get_crtc() local
2112 drm_for_each_connector(connector, dev) { drm_for_each_connector()
2113 if (!connector->state) drm_for_each_connector()
2118 if (connector->state->best_encoder != encoder) drm_for_each_connector()
2121 return connector->state->crtc; drm_for_each_connector()
2624 struct drm_connector **connector_set = NULL, *connector; drm_mode_setcrtc() local
2748 connector = drm_connector_find(dev, out_id); drm_mode_setcrtc()
2749 if (!connector) { drm_mode_setcrtc()
2756 connector->base.id, drm_mode_setcrtc()
2757 connector->name); drm_mode_setcrtc()
2759 connector_set[i] = connector; drm_mode_setcrtc()
4399 * function with replace pointing to the connector's path_blob_ptr, length and
4400 * data set for the new path information, obj_holds_id set to the connector's
4403 * caller holding a lock on the connector.
4607 * drm_mode_connector_set_path_property - set tile property on connector
4608 * @connector: connector to set property on.
4612 * connector path. This is mainly used for DisplayPort MST where
4619 int drm_mode_connector_set_path_property(struct drm_connector *connector, drm_mode_connector_set_path_property() argument
4622 struct drm_device *dev = connector->dev; drm_mode_connector_set_path_property()
4626 &connector->path_blob_ptr, drm_mode_connector_set_path_property()
4629 &connector->base, drm_mode_connector_set_path_property()
4636 * drm_mode_connector_set_tile_property - set tile property on connector
4637 * @connector: connector to set property on.
4639 * This looks up the tile information for a connector, and creates a
4646 int drm_mode_connector_set_tile_property(struct drm_connector *connector) drm_mode_connector_set_tile_property() argument
4648 struct drm_device *dev = connector->dev; drm_mode_connector_set_tile_property()
4652 if (!connector->has_tile) { drm_mode_connector_set_tile_property()
4654 &connector->tile_blob_ptr, drm_mode_connector_set_tile_property()
4657 &connector->base, drm_mode_connector_set_tile_property()
4663 connector->tile_group->id, connector->tile_is_single_monitor, drm_mode_connector_set_tile_property()
4664 connector->num_h_tile, connector->num_v_tile, drm_mode_connector_set_tile_property()
4665 connector->tile_h_loc, connector->tile_v_loc, drm_mode_connector_set_tile_property()
4666 connector->tile_h_size, connector->tile_v_size); drm_mode_connector_set_tile_property()
4669 &connector->tile_blob_ptr, drm_mode_connector_set_tile_property()
4672 &connector->base, drm_mode_connector_set_tile_property()
4679 * drm_mode_connector_update_edid_property - update the edid property of a connector
4680 * @connector: drm connector
4684 * connector's edid property.
4689 int drm_mode_connector_update_edid_property(struct drm_connector *connector, drm_mode_connector_update_edid_property() argument
4692 struct drm_device *dev = connector->dev; drm_mode_connector_update_edid_property()
4697 if (connector->override_edid) drm_mode_connector_update_edid_property()
4704 &connector->edid_blob_ptr, drm_mode_connector_update_edid_property()
4707 &connector->base, drm_mode_connector_update_edid_property()
4801 * drm_mode_connector_property_set_ioctl - set the current value of a connector property
4834 struct drm_connector *connector = obj_to_connector(obj); drm_mode_connector_set_obj_prop() local
4837 if (property == connector->dev->mode_config.dpms_property) { drm_mode_connector_set_obj_prop()
4839 if (connector->funcs->dpms) drm_mode_connector_set_obj_prop()
4840 ret = (*connector->funcs->dpms)(connector, (int)value); drm_mode_connector_set_obj_prop()
4841 } else if (connector->funcs->set_property) drm_mode_connector_set_obj_prop()
4842 ret = connector->funcs->set_property(connector, property, value); drm_mode_connector_set_obj_prop()
4846 drm_object_property_set_value(&connector->base, property, value); drm_mode_connector_set_obj_prop()
4901 * to the connector specific ioctl this one is extended to also work on crtc and
4949 * Compared to the connector specific ioctl this one is extended to also work on
5020 * drm_mode_connector_attach_encoder - attach a connector to an encoder
5021 * @connector: connector to attach
5022 * @encoder: encoder to attach @connector to
5024 * This function links up a connector to an encoder. Note that the routing
5031 int drm_mode_connector_attach_encoder(struct drm_connector *connector, drm_mode_connector_attach_encoder() argument
5037 if (connector->encoder_ids[i] == 0) { drm_mode_connector_attach_encoder()
5038 connector->encoder_ids[i] = encoder->base.id; drm_mode_connector_attach_encoder()
5342 * This functions calls all the crtc's, encoder's and connector's ->reset
5351 struct drm_connector *connector; drm_mode_config_reset() local
5366 drm_for_each_connector(connector, dev) drm_mode_config_reset()
5367 if (connector->funcs->reset) drm_mode_config_reset()
5368 connector->funcs->reset(connector); drm_mode_config_reset()
5787 struct drm_connector *connector, *ot; drm_mode_config_cleanup() local
5800 list_for_each_entry_safe(connector, ot, drm_mode_config_cleanup()
5802 connector->funcs->destroy(connector); drm_mode_config_cleanup()
871 drm_connector_init(struct drm_device *dev, struct drm_connector *connector, const struct drm_connector_funcs *funcs, int connector_type) drm_connector_init() argument
H A Ddrm_atomic.c151 struct drm_connector *connector = state->connectors[i]; drm_atomic_state_default_clear() local
153 if (!connector || !connector->funcs) drm_atomic_state_default_clear()
157 * FIXME: Async commits can race with connector unplugging and drm_atomic_state_default_clear()
160 * the connector we'll be fine though, so make sure that's the drm_atomic_state_default_clear()
161 * case by setting all connector pointers to NULL. drm_atomic_state_default_clear()
163 state->connector_states[i]->connector = NULL; drm_atomic_state_default_clear()
164 connector->funcs->atomic_destroy_state(NULL, drm_atomic_state_default_clear()
767 * drm_atomic_get_connector_state - get connector state
769 * @connector: connector to get state object for
771 * This function returns the connector state for the given connector,
772 * allocating it if needed. It will also grab the relevant connector lock to
783 struct drm_connector *connector) drm_atomic_get_connector_state()
786 struct drm_mode_config *config = &connector->dev->mode_config; drm_atomic_get_connector_state()
793 index = drm_connector_index(connector); drm_atomic_get_connector_state()
796 * Construction of atomic state updates can race with a connector drm_atomic_get_connector_state()
806 DRM_DEBUG_ATOMIC("Hot-added connector would overflow state array, restarting\n"); drm_atomic_get_connector_state()
813 connector_state = connector->funcs->atomic_duplicate_state(connector); drm_atomic_get_connector_state()
818 state->connectors[index] = connector; drm_atomic_get_connector_state()
822 connector->base.id, connector_state, state); drm_atomic_get_connector_state()
838 * drm_atomic_connector_set_property - set property on connector.
839 * @connector: the drm connector to set a property on
844 * Use this instead of calling connector->atomic_set_property directly.
853 int drm_atomic_connector_set_property(struct drm_connector *connector, drm_atomic_connector_set_property() argument
857 struct drm_device *dev = connector->dev; drm_atomic_connector_set_property()
869 } else if (connector->funcs->atomic_set_property) { drm_atomic_connector_set_property()
870 return connector->funcs->atomic_set_property(connector, drm_atomic_connector_set_property()
885 drm_atomic_connector_get_property(struct drm_connector *connector, drm_atomic_connector_get_property() argument
889 struct drm_device *dev = connector->dev; drm_atomic_connector_get_property()
895 *val = connector->dpms; drm_atomic_connector_get_property()
896 } else if (connector->funcs->atomic_get_property) { drm_atomic_connector_get_property()
897 return connector->funcs->atomic_get_property(connector, drm_atomic_connector_get_property()
914 struct drm_connector *connector = obj_to_connector(obj); drm_atomic_get_property() local
916 ret = drm_atomic_connector_get_property(connector, drm_atomic_get_property()
917 connector->state, property, val); drm_atomic_get_property()
1023 * drm_atomic_set_crtc_for_connector - set crtc for connector
1024 * @conn_state: atomic state object for the connector
1025 * @crtc: crtc to use for the connector
1027 * Changing the assigned crtc for a connector requires us to grab the lock and
1051 DRM_DEBUG_ATOMIC("Link connector state %p to [CRTC:%d]\n", drm_atomic_set_crtc_for_connector()
1054 DRM_DEBUG_ATOMIC("Link connector state %p to [NOCRTC]\n", drm_atomic_set_crtc_for_connector()
1083 struct drm_connector *connector; drm_atomic_add_affected_connectors() local
1098 drm_for_each_connector(connector, state->dev) { drm_atomic_add_affected_connectors()
1099 if (connector->state->crtc != crtc) drm_atomic_add_affected_connectors()
1102 conn_state = drm_atomic_get_connector_state(state, connector); drm_atomic_add_affected_connectors()
1162 struct drm_connector *connector; drm_atomic_connectors_for_crtc() local
1167 for_each_connector_in_state(state, connector, conn_state, i) { for_each_connector_in_state()
1385 struct drm_connector *connector = obj_to_connector(obj); atomic_set_prop() local
1388 connector_state = drm_atomic_get_connector_state(state, connector); atomic_set_prop()
1394 ret = drm_atomic_connector_set_property(connector, atomic_set_prop()
782 drm_atomic_get_connector_state(struct drm_atomic_state *state, struct drm_connector *connector) drm_atomic_get_connector_state() argument
H A Ddrm_internal.h79 int drm_sysfs_connector_add(struct drm_connector *connector);
80 void drm_sysfs_connector_remove(struct drm_connector *connector);
109 int drm_debugfs_connector_add(struct drm_connector *connector);
110 void drm_debugfs_connector_remove(struct drm_connector *connector);
123 static inline int drm_debugfs_connector_add(struct drm_connector *connector) drm_debugfs_connector_add() argument
127 static inline void drm_debugfs_connector_remove(struct drm_connector *connector) drm_debugfs_connector_remove() argument
H A Ddrm_edid_load.c163 static void *edid_load(struct drm_connector *connector, const char *name, edid_load() argument
171 bool print_bad_edid = !connector->bad_edid_counter || (drm_debug & DRM_UT_KMS); edid_load()
189 "for connector \"%s\"\n", connector_name); edid_load()
220 &connector->edid_corrupt)) { edid_load()
221 connector->bad_edid_counter++; edid_load()
244 "\"%s\" for connector \"%s\"\n", valid_extensions, edid_load()
255 "\"%s\" for connector \"%s\"\n", builtin ? "built-in" : edid_load()
264 int drm_load_edid_firmware(struct drm_connector *connector) drm_load_edid_firmware() argument
266 const char *connector_name = connector->name; drm_load_edid_firmware()
277 * matches the connector. drm_load_edid_firmware()
279 * If there's one or more that don't't specify a connector, keep drm_load_edid_firmware()
310 edid = edid_load(connector, edidname, connector_name); drm_load_edid_firmware()
316 drm_mode_connector_update_edid_property(connector, edid); drm_load_edid_firmware()
317 ret = drm_add_edid_modes(connector, edid); drm_load_edid_firmware()
318 drm_edid_to_eld(connector, edid); drm_load_edid_firmware()
H A Ddrm_modes.c108 * drm_mode_probed_add - add a mode to a connector's probed_mode list
109 * @connector: connector the new mode
112 * Add @mode to @connector's probed_mode list for later use. This list should
114 * the hardware moved to the @connector's modes list.
116 void drm_mode_probed_add(struct drm_connector *connector, drm_mode_probed_add() argument
119 WARN_ON(!mutex_is_locked(&connector->dev->mode_config.mutex)); drm_mode_probed_add()
121 list_add_tail(&mode->head, &connector->probed_modes); drm_mode_probed_add()
999 * limitations of the DRM device/connector. If a mode is too big its status
1155 * drm_mode_connector_list_update - update the mode list for the connector
1156 * @connector: the connector to update
1159 * This moves the modes from the @connector probed_modes list
1166 void drm_mode_connector_list_update(struct drm_connector *connector, drm_mode_connector_list_update() argument
1173 WARN_ON(!mutex_is_locked(&connector->dev->mode_config.mutex)); drm_mode_connector_list_update()
1175 list_for_each_entry_safe(pmode, pt, &connector->probed_modes, drm_mode_connector_list_update()
1179 list_for_each_entry(mode, &connector->modes, head) { drm_mode_connector_list_update()
1190 drm_mode_destroy(connector->dev, pmode); drm_mode_connector_list_update()
1196 list_move_tail(&pmode->head, &connector->modes); drm_mode_connector_list_update()
1203 * drm_mode_parse_command_line_for_connector - parse command line modeline for connector
1204 * @mode_option: optional per connector mode option
1205 * @connector: connector to parse modeline for
1209 * configure the connector. If @mode_option is NULL the default command line
1224 struct drm_connector *connector, drm_mode_parse_command_line_for_connector()
1311 if ((connector->connector_type != DRM_MODE_CONNECTOR_DVII) && drm_mode_parse_command_line_for_connector()
1312 (connector->connector_type != DRM_MODE_CONNECTOR_HDMIB)) drm_mode_parse_command_line_for_connector()
1223 drm_mode_parse_command_line_for_connector(const char *mode_option, struct drm_connector *connector, struct drm_cmdline_mode *mode) drm_mode_parse_command_line_for_connector() argument
H A Ddrm_encoder_slave.c168 struct drm_connector *connector) drm_i2c_encoder_detect()
170 return get_slave_funcs(encoder)->detect(encoder, connector); drm_i2c_encoder_detect()
167 drm_i2c_encoder_detect(struct drm_encoder *encoder, struct drm_connector *connector) drm_i2c_encoder_detect() argument
/linux-4.4.14/drivers/gpu/drm/tilcdc/
H A Dtilcdc_external.c30 static int tilcdc_external_mode_valid(struct drm_connector *connector, tilcdc_external_mode_valid() argument
33 struct tilcdc_drm_private *priv = connector->dev->dev_private; tilcdc_external_mode_valid()
41 priv->connectors[i] != connector; i++) tilcdc_external_mode_valid()
44 BUG_ON(priv->connectors[i] != connector); tilcdc_external_mode_valid()
47 /* If the connector has its own mode_valid call it. */ tilcdc_external_mode_valid()
50 return priv->connector_funcs[i]->mode_valid(connector, mode); tilcdc_external_mode_valid()
56 struct drm_connector *connector) tilcdc_add_external_encoder()
61 priv->connectors[priv->num_connectors] = connector; tilcdc_add_external_encoder()
62 priv->encoders[priv->num_encoders++] = connector->encoder; tilcdc_add_external_encoder()
74 /* connector->helper_private contains always struct tilcdc_add_external_encoder()
80 if (connector->helper_private) { tilcdc_add_external_encoder()
82 connector->helper_private; tilcdc_add_external_encoder()
88 drm_connector_helper_add(connector, connector_funcs); tilcdc_add_external_encoder()
92 connector->encoder->name); tilcdc_add_external_encoder()
100 struct drm_connector *connector; tilcdc_add_external_encoders() local
103 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { tilcdc_add_external_encoders()
108 if (connector == priv->connectors[i]) tilcdc_add_external_encoders()
111 ret = tilcdc_add_external_encoder(dev, bpp, connector); tilcdc_add_external_encoders()
55 tilcdc_add_external_encoder(struct drm_device *dev, int *bpp, struct drm_connector *connector) tilcdc_add_external_encoder() argument
H A Dtilcdc_tfp410.c167 static void tfp410_connector_destroy(struct drm_connector *connector) tfp410_connector_destroy() argument
169 struct tfp410_connector *tfp410_connector = to_tfp410_connector(connector); tfp410_connector_destroy()
170 drm_connector_unregister(connector); tfp410_connector_destroy()
171 drm_connector_cleanup(connector); tfp410_connector_destroy()
176 struct drm_connector *connector, tfp410_connector_detect()
179 struct tfp410_connector *tfp410_connector = to_tfp410_connector(connector); tfp410_connector_detect()
187 static int tfp410_connector_get_modes(struct drm_connector *connector) tfp410_connector_get_modes() argument
189 struct tfp410_connector *tfp410_connector = to_tfp410_connector(connector); tfp410_connector_get_modes()
193 edid = drm_get_edid(connector, tfp410_connector->mod->i2c); tfp410_connector_get_modes()
195 drm_mode_connector_update_edid_property(connector, edid); tfp410_connector_get_modes()
198 ret = drm_add_edid_modes(connector, edid); tfp410_connector_get_modes()
205 static int tfp410_connector_mode_valid(struct drm_connector *connector, tfp410_connector_mode_valid() argument
208 struct tilcdc_drm_private *priv = connector->dev->dev_private; tfp410_connector_mode_valid()
214 struct drm_connector *connector) tfp410_connector_best_encoder()
216 struct tfp410_connector *tfp410_connector = to_tfp410_connector(connector); tfp410_connector_best_encoder()
237 struct drm_connector *connector; tfp410_connector_create() local
249 connector = &tfp410_connector->base; tfp410_connector_create()
251 drm_connector_init(dev, connector, &tfp410_connector_funcs, tfp410_connector_create()
253 drm_connector_helper_add(connector, &tfp410_connector_helper_funcs); tfp410_connector_create()
255 connector->polled = DRM_CONNECTOR_POLL_CONNECT | tfp410_connector_create()
258 connector->interlace_allowed = 0; tfp410_connector_create()
259 connector->doublescan_allowed = 0; tfp410_connector_create()
261 ret = drm_mode_connector_attach_encoder(connector, encoder); tfp410_connector_create()
265 drm_connector_register(connector); tfp410_connector_create()
267 return connector; tfp410_connector_create()
270 tfp410_connector_destroy(connector); tfp410_connector_create()
283 struct drm_connector *connector; tfp410_modeset_init() local
289 connector = tfp410_connector_create(dev, tfp410_mod, encoder); tfp410_modeset_init()
290 if (!connector) tfp410_modeset_init()
294 priv->connectors[priv->num_connectors++] = connector; tfp410_modeset_init()
175 tfp410_connector_detect( struct drm_connector *connector, bool force) tfp410_connector_detect() argument
213 tfp410_connector_best_encoder( struct drm_connector *connector) tfp410_connector_best_encoder() argument
H A Dtilcdc_panel.c157 static void panel_connector_destroy(struct drm_connector *connector) panel_connector_destroy() argument
159 struct panel_connector *panel_connector = to_panel_connector(connector); panel_connector_destroy()
160 drm_connector_unregister(connector); panel_connector_destroy()
161 drm_connector_cleanup(connector); panel_connector_destroy()
166 struct drm_connector *connector, panel_connector_detect()
172 static int panel_connector_get_modes(struct drm_connector *connector) panel_connector_get_modes() argument
174 struct drm_device *dev = connector->dev; panel_connector_get_modes()
175 struct panel_connector *panel_connector = to_panel_connector(connector); panel_connector_get_modes()
194 drm_mode_probed_add(connector, mode); panel_connector_get_modes()
200 static int panel_connector_mode_valid(struct drm_connector *connector, panel_connector_mode_valid() argument
203 struct tilcdc_drm_private *priv = connector->dev->dev_private; panel_connector_mode_valid()
209 struct drm_connector *connector) panel_connector_best_encoder()
211 struct panel_connector *panel_connector = to_panel_connector(connector); panel_connector_best_encoder()
232 struct drm_connector *connector; panel_connector_create() local
244 connector = &panel_connector->base; panel_connector_create()
246 drm_connector_init(dev, connector, &panel_connector_funcs, panel_connector_create()
248 drm_connector_helper_add(connector, &panel_connector_helper_funcs); panel_connector_create()
250 connector->interlace_allowed = 0; panel_connector_create()
251 connector->doublescan_allowed = 0; panel_connector_create()
253 ret = drm_mode_connector_attach_encoder(connector, encoder); panel_connector_create()
257 drm_connector_register(connector); panel_connector_create()
259 return connector; panel_connector_create()
262 panel_connector_destroy(connector); panel_connector_create()
275 struct drm_connector *connector; panel_modeset_init() local
281 connector = panel_connector_create(dev, panel_mod, encoder); panel_modeset_init()
282 if (!connector) panel_modeset_init()
286 priv->connectors[priv->num_connectors++] = connector; panel_modeset_init()
165 panel_connector_detect( struct drm_connector *connector, bool force) panel_connector_detect() argument
208 panel_connector_best_encoder( struct drm_connector *connector) panel_connector_best_encoder() argument
/linux-4.4.14/drivers/gpu/drm/nouveau/
H A Dnouveau_connector.c60 find_encoder(struct drm_connector *connector, int type) find_encoder() argument
62 struct drm_device *dev = connector->dev; find_encoder()
68 id = connector->encoder_ids[i]; find_encoder()
100 nouveau_connector_destroy(struct drm_connector *connector) nouveau_connector_destroy() argument
102 struct nouveau_connector *nv_connector = nouveau_connector(connector); nouveau_connector_destroy()
105 drm_connector_unregister(connector); nouveau_connector_destroy()
106 drm_connector_cleanup(connector); nouveau_connector_destroy()
109 kfree(connector); nouveau_connector_destroy()
113 nouveau_connector_ddc_detect(struct drm_connector *connector) nouveau_connector_ddc_detect() argument
115 struct drm_device *dev = connector->dev; nouveau_connector_ddc_detect()
116 struct nouveau_connector *nv_connector = nouveau_connector(connector); nouveau_connector_ddc_detect()
136 int id = connector->encoder_ids[i]; nouveau_connector_ddc_detect()
166 nouveau_connector_of_detect(struct drm_connector *connector) nouveau_connector_of_detect() argument
169 struct drm_device *dev = connector->dev; nouveau_connector_of_detect()
170 struct nouveau_connector *nv_connector = nouveau_connector(connector); nouveau_connector_of_detect()
175 !((nv_encoder = find_encoder(connector, DCB_OUTPUT_TMDS)) || nouveau_connector_of_detect()
176 (nv_encoder = find_encoder(connector, DCB_OUTPUT_ANALOG)))) nouveau_connector_of_detect()
196 nouveau_connector_set_encoder(struct drm_connector *connector, nouveau_connector_set_encoder() argument
199 struct nouveau_connector *nv_connector = nouveau_connector(connector); nouveau_connector_set_encoder()
200 struct nouveau_drm *drm = nouveau_drm(connector->dev); nouveau_connector_set_encoder()
201 struct drm_device *dev = connector->dev; nouveau_connector_set_encoder()
208 connector->interlace_allowed = true; nouveau_connector_set_encoder()
209 connector->doublescan_allowed = true; nouveau_connector_set_encoder()
213 connector->doublescan_allowed = false; nouveau_connector_set_encoder()
214 connector->interlace_allowed = false; nouveau_connector_set_encoder()
216 connector->doublescan_allowed = true; nouveau_connector_set_encoder()
222 connector->interlace_allowed = false; nouveau_connector_set_encoder()
224 connector->interlace_allowed = true; nouveau_connector_set_encoder()
228 drm_object_property_set_value(&connector->base, nouveau_connector_set_encoder()
237 nouveau_connector_detect(struct drm_connector *connector, bool force) nouveau_connector_detect() argument
239 struct drm_device *dev = connector->dev; nouveau_connector_detect()
241 struct nouveau_connector *nv_connector = nouveau_connector(connector); nouveau_connector_detect()
251 drm_mode_connector_update_edid_property(connector, NULL); nouveau_connector_detect()
256 ret = pm_runtime_get_sync(connector->dev->dev); nouveau_connector_detect()
260 nv_encoder = nouveau_connector_ddc_detect(connector); nouveau_connector_detect()
262 nv_connector->edid = drm_get_edid(connector, i2c); nouveau_connector_detect()
263 drm_mode_connector_update_edid_property(connector, nouveau_connector_detect()
267 connector->name); nouveau_connector_detect()
278 nv_partner = find_encoder(connector, DCB_OUTPUT_ANALOG); nouveau_connector_detect()
280 nv_partner = find_encoder(connector, DCB_OUTPUT_TMDS); nouveau_connector_detect()
291 nv_encoder = find_encoder(connector, type); nouveau_connector_detect()
294 nouveau_connector_set_encoder(connector, nv_encoder); nouveau_connector_detect()
299 nv_encoder = nouveau_connector_of_detect(connector); nouveau_connector_detect()
301 nouveau_connector_set_encoder(connector, nv_encoder); nouveau_connector_detect()
307 nv_encoder = find_encoder(connector, DCB_OUTPUT_ANALOG); nouveau_connector_detect()
309 nv_encoder = find_encoder(connector, DCB_OUTPUT_TV); nouveau_connector_detect()
315 if (helper->detect(encoder, connector) == nouveau_connector_detect()
317 nouveau_connector_set_encoder(connector, nv_encoder); nouveau_connector_detect()
326 pm_runtime_mark_last_busy(connector->dev->dev); nouveau_connector_detect()
327 pm_runtime_put_autosuspend(connector->dev->dev); nouveau_connector_detect()
333 nouveau_connector_detect_lvds(struct drm_connector *connector, bool force) nouveau_connector_detect_lvds() argument
335 struct drm_device *dev = connector->dev; nouveau_connector_detect_lvds()
337 struct nouveau_connector *nv_connector = nouveau_connector(connector); nouveau_connector_detect_lvds()
343 drm_mode_connector_update_edid_property(connector, NULL); nouveau_connector_detect_lvds()
348 nv_encoder = find_encoder(connector, DCB_OUTPUT_LVDS); nouveau_connector_detect_lvds()
354 status = nouveau_connector_detect(connector, force); nouveau_connector_detect_lvds()
369 if ((nv_connector->edid = nouveau_acpi_edid(dev, connector))) { nouveau_connector_detect_lvds()
407 drm_mode_connector_update_edid_property(connector, nv_connector->edid); nouveau_connector_detect_lvds()
408 nouveau_connector_set_encoder(connector, nv_encoder); nouveau_connector_detect_lvds()
413 nouveau_connector_force(struct drm_connector *connector) nouveau_connector_force() argument
415 struct nouveau_drm *drm = nouveau_drm(connector->dev); nouveau_connector_force()
416 struct nouveau_connector *nv_connector = nouveau_connector(connector); nouveau_connector_force()
421 if (connector->force == DRM_FORCE_ON_DIGITAL) nouveau_connector_force()
428 nv_encoder = find_encoder(connector, type); nouveau_connector_force()
431 connector->name); nouveau_connector_force()
432 connector->status = connector_status_disconnected; nouveau_connector_force()
436 nouveau_connector_set_encoder(connector, nv_encoder); nouveau_connector_force()
440 nouveau_connector_set_property(struct drm_connector *connector, nouveau_connector_set_property() argument
443 struct nouveau_display *disp = nouveau_display(connector->dev); nouveau_connector_set_property()
444 struct nouveau_connector *nv_connector = nouveau_connector(connector); nouveau_connector_set_property()
447 struct drm_device *dev = connector->dev; nouveau_connector_set_property()
452 if (connector->encoder && connector->encoder->crtc) nouveau_connector_set_property()
453 nv_crtc = nouveau_crtc(connector->encoder->crtc); nouveau_connector_set_property()
587 encoder, connector, property, value); nouveau_connector_set_property()
593 nouveau_connector_native_mode(struct drm_connector *connector) nouveau_connector_native_mode() argument
595 const struct drm_connector_helper_funcs *helper = connector->helper_private; nouveau_connector_native_mode()
596 struct nouveau_drm *drm = nouveau_drm(connector->dev); nouveau_connector_native_mode()
597 struct nouveau_connector *nv_connector = nouveau_connector(connector); nouveau_connector_native_mode()
598 struct drm_device *dev = connector->dev; nouveau_connector_native_mode()
604 if (helper->mode_valid(connector, mode) != MODE_OK || nouveau_connector_native_mode()
662 nouveau_connector_scaler_modes_add(struct drm_connector *connector) nouveau_connector_scaler_modes_add() argument
664 struct nouveau_connector *nv_connector = nouveau_connector(connector); nouveau_connector_scaler_modes_add()
666 struct drm_device *dev = connector->dev; nouveau_connector_scaler_modes_add()
684 drm_mode_probed_add(connector, m); nouveau_connector_scaler_modes_add()
695 nouveau_connector_detect_depth(struct drm_connector *connector) nouveau_connector_detect_depth() argument
697 struct nouveau_drm *drm = nouveau_drm(connector->dev); nouveau_connector_detect_depth()
698 struct nouveau_connector *nv_connector = nouveau_connector(connector); nouveau_connector_detect_depth()
705 if (nv_connector->edid && connector->display_info.bpc) nouveau_connector_detect_depth()
710 connector->display_info.bpc = 6; nouveau_connector_detect_depth()
716 connector->display_info.bpc = 8; nouveau_connector_detect_depth()
720 connector->display_info.bpc = 6; nouveau_connector_detect_depth()
725 connector->display_info.bpc = 8; nouveau_connector_detect_depth()
740 connector->display_info.bpc = 8; nouveau_connector_detect_depth()
744 nouveau_connector_get_modes(struct drm_connector *connector) nouveau_connector_get_modes() argument
746 struct drm_device *dev = connector->dev; nouveau_connector_get_modes()
748 struct nouveau_connector *nv_connector = nouveau_connector(connector); nouveau_connector_get_modes()
761 ret = drm_add_edid_modes(connector, nv_connector->edid); nouveau_connector_get_modes()
775 if (connector->connector_type != DRM_MODE_CONNECTOR_LVDS) nouveau_connector_get_modes()
776 nouveau_connector_detect_depth(connector); nouveau_connector_get_modes()
784 nouveau_connector_native_mode(connector); nouveau_connector_get_modes()
789 drm_mode_probed_add(connector, mode); nouveau_connector_get_modes()
797 if (connector->connector_type == DRM_MODE_CONNECTOR_LVDS) nouveau_connector_get_modes()
798 nouveau_connector_detect_depth(connector); nouveau_connector_get_modes()
801 ret = get_slave_funcs(encoder)->get_modes(encoder, connector); nouveau_connector_get_modes()
806 ret += nouveau_connector_scaler_modes_add(connector); nouveau_connector_get_modes()
812 get_tmds_link_bandwidth(struct drm_connector *connector) get_tmds_link_bandwidth() argument
814 struct nouveau_connector *nv_connector = nouveau_connector(connector); get_tmds_link_bandwidth()
815 struct nouveau_drm *drm = nouveau_drm(connector->dev); get_tmds_link_bandwidth()
830 nouveau_connector_mode_valid(struct drm_connector *connector, nouveau_connector_mode_valid() argument
833 struct nouveau_connector *nv_connector = nouveau_connector(connector); nouveau_connector_mode_valid()
850 max_clock = get_tmds_link_bandwidth(connector); nouveau_connector_mode_valid()
864 clock = clock * (connector->display_info.bpc * 3) / 10; nouveau_connector_mode_valid()
881 nouveau_connector_best_encoder(struct drm_connector *connector) nouveau_connector_best_encoder() argument
883 struct nouveau_connector *nv_connector = nouveau_connector(connector); nouveau_connector_best_encoder()
923 nouveau_connector_dp_dpms(struct drm_connector *connector, int mode) nouveau_connector_dp_dpms() argument
927 if (connector->encoder) nouveau_connector_dp_dpms()
928 nv_encoder = nouveau_encoder(connector->encoder); nouveau_connector_dp_dpms()
941 return drm_helper_connector_dpms(connector, mode); nouveau_connector_dp_dpms()
961 struct drm_connector *connector = &nv_connector->base; nouveau_connector_hotplug() local
962 struct nouveau_drm *drm = nouveau_drm(connector->dev); nouveau_connector_hotplug()
964 const char *name = connector->name; nouveau_connector_hotplug()
974 drm_helper_connector_dpms(connector, DRM_MODE_DPMS_ON); nouveau_connector_hotplug()
976 drm_helper_connector_dpms(connector, DRM_MODE_DPMS_OFF); nouveau_connector_hotplug()
979 drm_helper_hpd_irq_event(connector->dev); nouveau_connector_hotplug()
1052 struct drm_connector *connector; nouveau_connector_create() local
1056 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { nouveau_connector_create()
1057 nv_connector = nouveau_connector(connector); nouveau_connector_create()
1059 return connector; nouveau_connector_create()
1066 connector = &nv_connector->base; nouveau_connector_create()
1069 /* attempt to parse vbios connector type and hotplug gpio */ nouveau_connector_create()
1079 NV_WARN(drm, "unknown connector type %02x\n", nouveau_connector_create()
1099 /* no vbios data, or an unknown dcb connector type - attempt to nouveau_connector_create()
1109 if (dcbt->entry[i].connector == nv_connector->index) nouveau_connector_create()
1166 connector->interlace_allowed = false; nouveau_connector_create()
1167 connector->doublescan_allowed = false; nouveau_connector_create()
1169 drm_connector_init(dev, connector, funcs, type); nouveau_connector_create()
1170 drm_connector_helper_add(connector, &nouveau_connector_helper_funcs); nouveau_connector_create()
1174 drm_object_attach_property(&connector->base, dev->mode_config.dvi_i_subconnector_property, 0); nouveau_connector_create()
1182 drm_object_attach_property(&connector->base, nouveau_connector_create()
1185 drm_object_attach_property(&connector->base, nouveau_connector_create()
1188 drm_object_attach_property(&connector->base, nouveau_connector_create()
1195 drm_object_attach_property(&connector->base, nouveau_connector_create()
1199 drm_object_attach_property(&connector->base, nouveau_connector_create()
1231 drm_object_attach_property(&connector->base, dev->mode_config. nouveau_connector_create()
1246 drm_object_attach_property(&connector->base, nouveau_connector_create()
1253 drm_object_attach_property(&connector->base, nouveau_connector_create()
1272 connector->polled = DRM_CONNECTOR_POLL_CONNECT; nouveau_connector_create()
1274 connector->polled = DRM_CONNECTOR_POLL_HPD; nouveau_connector_create()
1276 drm_connector_register(connector); nouveau_connector_create()
1277 return connector; nouveau_connector_create()
H A Dnouveau_backlight.c71 nv40_backlight_init(struct drm_connector *connector) nv40_backlight_init() argument
73 struct nouveau_drm *drm = nouveau_drm(connector->dev); nv40_backlight_init()
84 bd = backlight_device_register("nv_backlight", connector->kdev, drm, nv40_backlight_init()
177 nv50_backlight_init(struct drm_connector *connector) nv50_backlight_init() argument
179 struct nouveau_drm *drm = nouveau_drm(connector->dev); nv50_backlight_init()
186 nv_encoder = find_encoder(connector, DCB_OUTPUT_LVDS); nv50_backlight_init()
188 nv_encoder = find_encoder(connector, DCB_OUTPUT_DP); nv50_backlight_init()
206 bd = backlight_device_register("nv_backlight", connector->kdev, nv50_backlight_init()
222 struct drm_connector *connector; nouveau_backlight_init() local
224 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { nouveau_backlight_init()
225 if (connector->connector_type != DRM_MODE_CONNECTOR_LVDS && nouveau_backlight_init()
226 connector->connector_type != DRM_MODE_CONNECTOR_eDP) nouveau_backlight_init()
231 return nv40_backlight_init(connector); nouveau_backlight_init()
235 return nv50_backlight_init(connector); nouveau_backlight_init()
H A Dnouveau_connector.h95 struct drm_connector *connector; nouveau_crtc_connector_get() local
98 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { list_for_each_entry()
99 if (connector->encoder && connector->encoder->crtc == crtc) list_for_each_entry()
100 return nouveau_connector(connector); list_for_each_entry()
H A Dnouveau_acpi.h23 static inline void *nouveau_acpi_edid(struct drm_device *dev, struct drm_connector *connector) { return NULL; } argument
H A Dnv50_display.c697 struct drm_connector *connector; nv50_crtc_set_dither() local
701 connector = &nv_connector->base; nv50_crtc_set_dither()
703 if (nv_crtc->base.primary->fb->depth > connector->display_info.bpc * 3) nv50_crtc_set_dither()
710 if (connector->display_info.bpc >= 8) nv50_crtc_set_dither()
1649 nv50_dac_detect(struct drm_encoder *encoder, struct drm_connector *connector) nv50_dac_detect() argument
1698 nv50_dac_create(struct drm_connector *connector, struct dcb_output *dcbe) nv50_dac_create() argument
1700 struct nouveau_drm *drm = nouveau_drm(connector->dev); nv50_dac_create()
1720 drm_encoder_init(connector->dev, encoder, &nv50_dac_func, type); nv50_dac_create()
1723 drm_mode_connector_attach_encoder(connector, encoder); nv50_dac_create()
2087 nv50_sor_create(struct drm_connector *connector, struct dcb_output *dcbe) nv50_sor_create() argument
2089 struct nouveau_drm *drm = nouveau_drm(connector->dev); nv50_sor_create()
2128 drm_encoder_init(connector->dev, encoder, &nv50_sor_func, type); nv50_sor_create()
2131 drm_mode_connector_attach_encoder(connector, encoder); nv50_sor_create()
2271 nv50_pior_create(struct drm_connector *connector, struct dcb_output *dcbe) nv50_pior_create() argument
2273 struct nouveau_drm *drm = nouveau_drm(connector->dev); nv50_pior_create()
2308 drm_encoder_init(connector->dev, encoder, &nv50_pior_func, type); nv50_pior_create()
2311 drm_mode_connector_attach_encoder(connector, encoder); nv50_pior_create()
2511 struct drm_connector *connector, *tmp; nv50_display_create() local
2564 /* create encoder/connector objects based on VBIOS DCB table */ nv50_display_create()
2566 connector = nouveau_connector_create(dev, dcbe->connector); nv50_display_create()
2567 if (IS_ERR(connector)) nv50_display_create()
2575 ret = nv50_sor_create(connector, dcbe); nv50_display_create()
2578 ret = nv50_dac_create(connector, dcbe); nv50_display_create()
2585 ret = nv50_pior_create(connector, dcbe); nv50_display_create()
2597 list_for_each_entry_safe(connector, tmp, &dev->mode_config.connector_list, head) { nv50_display_create()
2598 if (connector->encoder_ids[0]) nv50_display_create()
2602 connector->name); nv50_display_create()
2603 connector->funcs->destroy(connector); nv50_display_create()
H A Dnouveau_bios.c1406 entry->connector = (conn >> 12) & 0xf; parse_dcb20_entry()
1652 * Identical, except apparently a different connector on a apply_dcb_encoder_quirks()
1656 * Ignore the connector on the second SOR link to prevent apply_dcb_encoder_quirks()
1683 *conn = 0x02001300; /* VGA, connector 1 */ apply_dcb_encoder_quirks()
1687 *conn = 0x01010312; /* DVI, connector 0 */ apply_dcb_encoder_quirks()
1691 *conn = 0x01010310; /* VGA, connector 0 */ apply_dcb_encoder_quirks()
1695 *conn = 0x02022362; /* HDMI, connector 2 */ apply_dcb_encoder_quirks()
1706 * DVI-I connector actually point at two different ones, and apply_dcb_encoder_quirks()
1707 * the HDMI connector ends up paired with the VGA instead. apply_dcb_encoder_quirks()
1714 *conn = 0x02002300; /* VGA, connector 2 */ apply_dcb_encoder_quirks()
1718 *conn = 0x01010312; /* DVI, connector 0 */ apply_dcb_encoder_quirks()
1722 *conn = 0x04020310; /* VGA, connector 0 */ apply_dcb_encoder_quirks()
1726 *conn = 0x02021322; /* HDMI, connector 1 */ apply_dcb_encoder_quirks()
1734 /* fdo#50830: connector indices for VGA and DVI-I are backwards */ apply_dcb_encoder_quirks()
1820 /* heuristic: if we ever get a non-zero connector field, assume dcb_fake_connectors()
1827 if (dcbt->entry[i].connector) dcb_fake_connectors()
1832 /* no useful connector info available, we need to make it up dcb_fake_connectors()
1834 * is considered to be on the same connector. any output dcb_fake_connectors()
1836 * connector index. dcb_fake_connectors()
1841 dcbt->entry[i].connector = idx++; dcb_fake_connectors()
1845 dcbt->entry[i].connector = map[i2c] - 1; dcb_fake_connectors()
1849 /* if we created more than one connector, destroy the connector dcb_fake_connectors()
1890 /* dump connector table entries to log, if any exist */ parse_dcb_table()
H A Dnouveau_encoder.h69 find_encoder(struct drm_connector *connector, int type);
/linux-4.4.14/Documentation/
H A DMakefile1 subdir-y := accounting auxdisplay blackfin connector \
/linux-4.4.14/drivers/gpu/drm/omapdrm/
H A Domap_connector.c27 * connector funcs
39 bool omap_connector_get_hdmi_mode(struct drm_connector *connector) omap_connector_get_hdmi_mode() argument
41 struct omap_connector *omap_connector = to_omap_connector(connector); omap_connector_get_hdmi_mode()
110 struct drm_connector *connector, bool force) omap_connector_detect()
112 struct omap_connector *omap_connector = to_omap_connector(connector); omap_connector_detect()
136 static void omap_connector_destroy(struct drm_connector *connector) omap_connector_destroy() argument
138 struct omap_connector *omap_connector = to_omap_connector(connector); omap_connector_destroy()
142 drm_connector_unregister(connector); omap_connector_destroy()
143 drm_connector_cleanup(connector); omap_connector_destroy()
151 static int omap_connector_get_modes(struct drm_connector *connector) omap_connector_get_modes() argument
153 struct omap_connector *omap_connector = to_omap_connector(connector); omap_connector_get_modes()
156 struct drm_device *dev = connector->dev; omap_connector_get_modes()
172 connector, edid); omap_connector_get_modes()
173 n = drm_add_edid_modes(connector, edid); omap_connector_get_modes()
179 connector, NULL); omap_connector_get_modes()
193 drm_mode_probed_add(connector, mode); omap_connector_get_modes()
201 static int omap_connector_mode_valid(struct drm_connector *connector, omap_connector_mode_valid() argument
204 struct omap_connector *omap_connector = to_omap_connector(connector); omap_connector_mode_valid()
208 struct drm_device *dev = connector->dev; omap_connector_mode_valid()
243 DBG("connector: mode %s: " omap_connector_mode_valid()
256 struct drm_connector *connector) omap_connector_attached_encoder()
258 struct omap_connector *omap_connector = to_omap_connector(connector); omap_connector_attached_encoder()
278 /* initialize connector */ omap_connector_init()
283 struct drm_connector *connector = NULL; omap_connector_init() local
297 connector = &omap_connector->base; omap_connector_init()
299 drm_connector_init(dev, connector, &omap_connector_funcs, omap_connector_init()
301 drm_connector_helper_add(connector, &omap_connector_helper_funcs); omap_connector_init()
305 connector->polled = 0; omap_connector_init()
308 connector->polled = DRM_CONNECTOR_POLL_CONNECT | omap_connector_init()
311 connector->interlace_allowed = 1; omap_connector_init()
312 connector->doublescan_allowed = 0; omap_connector_init()
314 drm_connector_register(connector); omap_connector_init()
316 return connector; omap_connector_init()
319 if (connector) omap_connector_init()
320 omap_connector_destroy(connector); omap_connector_init()
109 omap_connector_detect( struct drm_connector *connector, bool force) omap_connector_detect() argument
255 omap_connector_attached_encoder( struct drm_connector *connector) omap_connector_attached_encoder() argument
H A Domap_encoder.c34 /* The encoder and connector both map to same dssdev.. the encoder
36 * of the hw, and the connector handles the 'read-only' parts, like
70 struct drm_connector *connector; omap_encoder_mode_set() local
75 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { omap_encoder_mode_set()
76 if (connector->encoder == encoder) { omap_encoder_mode_set()
77 hdmi_mode = omap_connector_get_hdmi_mode(connector); omap_encoder_mode_set()
H A Domap_fb.c329 struct drm_connector *connector = from; omap_framebuffer_get_next_connector() local
335 list_for_each_entry_from(connector, connector_list, head) { list_for_each_entry_from()
336 if (connector != from) { list_for_each_entry_from()
337 struct drm_encoder *encoder = connector->encoder; list_for_each_entry_from()
340 return connector; list_for_each_entry_from()
/linux-4.4.14/drivers/gpu/drm/gma500/
H A Dcdv_intel_hdmi.c108 static void cdv_hdmi_save(struct drm_connector *connector) cdv_hdmi_save() argument
110 struct drm_device *dev = connector->dev; cdv_hdmi_save()
111 struct gma_encoder *gma_encoder = gma_attached_encoder(connector); cdv_hdmi_save()
117 static void cdv_hdmi_restore(struct drm_connector *connector) cdv_hdmi_restore() argument
119 struct drm_device *dev = connector->dev; cdv_hdmi_restore()
120 struct gma_encoder *gma_encoder = gma_attached_encoder(connector); cdv_hdmi_restore()
128 struct drm_connector *connector, bool force) cdv_hdmi_detect()
130 struct gma_encoder *gma_encoder = gma_attached_encoder(connector); cdv_hdmi_detect()
135 edid = drm_get_edid(connector, &gma_encoder->i2c_bus->adapter); cdv_hdmi_detect()
152 static int cdv_hdmi_set_property(struct drm_connector *connector, cdv_hdmi_set_property() argument
156 struct drm_encoder *encoder = connector->encoder; cdv_hdmi_set_property()
177 if (drm_object_property_get_value(&connector->base, cdv_hdmi_set_property()
184 if (drm_object_property_set_value(&connector->base, cdv_hdmi_set_property()
211 static int cdv_hdmi_get_modes(struct drm_connector *connector) cdv_hdmi_get_modes() argument
213 struct gma_encoder *gma_encoder = gma_attached_encoder(connector); cdv_hdmi_get_modes()
217 edid = drm_get_edid(connector, &gma_encoder->i2c_bus->adapter); cdv_hdmi_get_modes()
219 drm_mode_connector_update_edid_property(connector, edid); cdv_hdmi_get_modes()
220 ret = drm_add_edid_modes(connector, edid); cdv_hdmi_get_modes()
226 static int cdv_hdmi_mode_valid(struct drm_connector *connector, cdv_hdmi_mode_valid() argument
245 static void cdv_hdmi_destroy(struct drm_connector *connector) cdv_hdmi_destroy() argument
247 struct gma_encoder *gma_encoder = gma_attached_encoder(connector); cdv_hdmi_destroy()
251 drm_connector_unregister(connector); cdv_hdmi_destroy()
252 drm_connector_cleanup(connector); cdv_hdmi_destroy()
253 kfree(connector); cdv_hdmi_destroy()
286 struct drm_connector *connector; cdv_hdmi_init() local
307 connector = &gma_connector->base; cdv_hdmi_init()
308 connector->polled = DRM_CONNECTOR_POLL_HPD; cdv_hdmi_init()
310 drm_connector_init(dev, connector, cdv_hdmi_init()
324 drm_connector_helper_add(connector, cdv_hdmi_init()
326 connector->display_info.subpixel_order = SubPixelHorizontalRGB; cdv_hdmi_init()
327 connector->interlace_allowed = false; cdv_hdmi_init()
328 connector->doublescan_allowed = false; cdv_hdmi_init()
330 drm_object_attach_property(&connector->base, cdv_hdmi_init()
359 drm_connector_register(connector); cdv_hdmi_init()
364 drm_connector_cleanup(connector); cdv_hdmi_init()
127 cdv_hdmi_detect( struct drm_connector *connector, bool force) cdv_hdmi_detect() argument
H A Dpsb_intel_modes.c58 * @connector: DRM connector device to use
60 * Fetch the EDID information from @connector using the DDC bus.
62 int psb_intel_ddc_get_modes(struct drm_connector *connector, psb_intel_ddc_get_modes() argument
68 edid = drm_get_edid(connector, adapter); psb_intel_ddc_get_modes()
70 drm_mode_connector_update_edid_property(connector, edid); psb_intel_ddc_get_modes()
71 ret = drm_add_edid_modes(connector, edid); psb_intel_ddc_get_modes()
H A Dmdfld_dsi_output.c225 static void mdfld_dsi_connector_save(struct drm_connector *connector) mdfld_dsi_connector_save() argument
229 static void mdfld_dsi_connector_restore(struct drm_connector *connector) mdfld_dsi_connector_restore() argument
235 mdfld_dsi_connector_detect(struct drm_connector *connector, bool force) mdfld_dsi_connector_detect() argument
238 = mdfld_dsi_connector(connector); mdfld_dsi_connector_detect()
245 static int mdfld_dsi_connector_set_property(struct drm_connector *connector, mdfld_dsi_connector_set_property() argument
249 struct drm_encoder *encoder = connector->encoder; mdfld_dsi_connector_set_property()
270 if (drm_object_property_get_value(&connector->base, property, &val)) mdfld_dsi_connector_set_property()
276 if (drm_object_property_set_value(&connector->base, mdfld_dsi_connector_set_property()
301 if (drm_object_property_set_value(&connector->base, property, mdfld_dsi_connector_set_property()
313 static void mdfld_dsi_connector_destroy(struct drm_connector *connector) mdfld_dsi_connector_destroy() argument
316 mdfld_dsi_connector(connector); mdfld_dsi_connector_destroy()
321 drm_connector_unregister(connector); mdfld_dsi_connector_destroy()
322 drm_connector_cleanup(connector); mdfld_dsi_connector_destroy()
328 static int mdfld_dsi_connector_get_modes(struct drm_connector *connector) mdfld_dsi_connector_get_modes() argument
331 mdfld_dsi_connector(connector); mdfld_dsi_connector_get_modes()
336 struct drm_device *dev = connector->dev; mdfld_dsi_connector_get_modes()
338 connector->display_info.min_vfreq = 0; mdfld_dsi_connector_get_modes()
339 connector->display_info.max_vfreq = 200; mdfld_dsi_connector_get_modes()
340 connector->display_info.min_hfreq = 0; mdfld_dsi_connector_get_modes()
341 connector->display_info.max_hfreq = 200; mdfld_dsi_connector_get_modes()
347 drm_mode_probed_add(connector, dup_mode); mdfld_dsi_connector_get_modes()
354 static int mdfld_dsi_connector_mode_valid(struct drm_connector *connector, mdfld_dsi_connector_mode_valid() argument
358 mdfld_dsi_connector(connector); mdfld_dsi_connector_mode_valid()
385 static void mdfld_dsi_connector_dpms(struct drm_connector *connector, int mode) mdfld_dsi_connector_dpms() argument
387 if (mode == connector->dpms) mdfld_dsi_connector_dpms()
392 drm_helper_connector_dpms(connector, mode); mdfld_dsi_connector_dpms()
396 struct drm_connector *connector) mdfld_dsi_connector_best_encoder()
399 mdfld_dsi_connector(connector); mdfld_dsi_connector_best_encoder()
405 /*DSI connector funcs*/
416 /*DSI connector helper funcs*/
503 struct drm_connector *connector; mdfld_dsi_output_init() local
546 dsi_config->connector = dsi_connector; mdfld_dsi_output_init()
565 connector = &dsi_connector->base.base; mdfld_dsi_output_init()
566 drm_connector_init(dev, connector, &mdfld_dsi_connector_funcs, mdfld_dsi_output_init()
568 drm_connector_helper_add(connector, &mdfld_dsi_connector_helper_funcs); mdfld_dsi_output_init()
570 connector->display_info.subpixel_order = SubPixelHorizontalRGB; mdfld_dsi_output_init()
571 connector->display_info.width_mm = width_mm; mdfld_dsi_output_init()
572 connector->display_info.height_mm = height_mm; mdfld_dsi_output_init()
573 connector->interlace_allowed = false; mdfld_dsi_output_init()
574 connector->doublescan_allowed = false; mdfld_dsi_output_init()
577 drm_object_attach_property(&connector->base, mdfld_dsi_output_init()
580 drm_object_attach_property(&connector->base, mdfld_dsi_output_init()
600 drm_connector_register(connector); mdfld_dsi_output_init()
608 drm_connector_cleanup(connector); mdfld_dsi_output_init()
395 mdfld_dsi_connector_best_encoder( struct drm_connector *connector) mdfld_dsi_connector_best_encoder() argument
H A Dcdv_intel_crt.c67 static int cdv_intel_crt_mode_valid(struct drm_connector *connector, cdv_intel_crt_mode_valid() argument
134 static bool cdv_intel_crt_detect_hotplug(struct drm_connector *connector, cdv_intel_crt_detect_hotplug() argument
137 struct drm_device *dev = connector->dev; cdv_intel_crt_detect_hotplug()
182 struct drm_connector *connector, bool force) cdv_intel_crt_detect()
184 if (cdv_intel_crt_detect_hotplug(connector, force)) cdv_intel_crt_detect()
190 static void cdv_intel_crt_destroy(struct drm_connector *connector) cdv_intel_crt_destroy() argument
192 struct gma_encoder *gma_encoder = gma_attached_encoder(connector); cdv_intel_crt_destroy()
195 drm_connector_unregister(connector); cdv_intel_crt_destroy()
196 drm_connector_cleanup(connector); cdv_intel_crt_destroy()
197 kfree(connector); cdv_intel_crt_destroy()
200 static int cdv_intel_crt_get_modes(struct drm_connector *connector) cdv_intel_crt_get_modes() argument
202 struct gma_encoder *gma_encoder = gma_attached_encoder(connector); cdv_intel_crt_get_modes()
203 return psb_intel_ddc_get_modes(connector, cdv_intel_crt_get_modes()
207 static int cdv_intel_crt_set_property(struct drm_connector *connector, cdv_intel_crt_set_property() argument
256 struct drm_connector *connector; cdv_intel_crt_init() local
269 connector = &gma_connector->base; cdv_intel_crt_init()
270 connector->polled = DRM_CONNECTOR_POLL_HPD; cdv_intel_crt_init()
271 drm_connector_init(dev, connector, cdv_intel_crt_init()
300 connector->interlace_allowed = 0; cdv_intel_crt_init()
301 connector->doublescan_allowed = 0; cdv_intel_crt_init()
304 drm_connector_helper_add(connector, cdv_intel_crt_init()
307 drm_connector_register(connector); cdv_intel_crt_init()
181 cdv_intel_crt_detect( struct drm_connector *connector, bool force) cdv_intel_crt_detect() argument
H A Doaktrail_lvds.c99 struct drm_connector *connector = NULL; oaktrail_lvds_mode_set() local
124 /* Find the connector we're trying to set up */ oaktrail_lvds_mode_set()
125 list_for_each_entry(connector, &mode_config->connector_list, head) { oaktrail_lvds_mode_set()
126 if (!connector->encoder || connector->encoder->crtc != crtc) oaktrail_lvds_mode_set()
130 if (!connector) { oaktrail_lvds_mode_set()
131 DRM_ERROR("Couldn't find connector when setting mode"); oaktrail_lvds_mode_set()
136 &connector->base, oaktrail_lvds_mode_set()
295 * Create the connector, register the LVDS DDC bus, and try to figure out what
303 struct drm_connector *connector; oaktrail_lvds_init() local
318 connector = &gma_connector->base; oaktrail_lvds_init()
321 drm_connector_init(dev, connector, oaktrail_lvds_init()
332 drm_connector_helper_add(connector, oaktrail_lvds_init()
334 connector->display_info.subpixel_order = SubPixelHorizontalRGB; oaktrail_lvds_init()
335 connector->interlace_allowed = false; oaktrail_lvds_init()
336 connector->doublescan_allowed = false; oaktrail_lvds_init()
338 drm_object_attach_property(&connector->base, oaktrail_lvds_init()
341 drm_object_attach_property(&connector->base, oaktrail_lvds_init()
366 edid = drm_get_edid(connector, i2c_adap); oaktrail_lvds_init()
371 edid = drm_get_edid(connector, i2c_adap); oaktrail_lvds_init()
379 drm_mode_connector_update_edid_property(connector, edid); oaktrail_lvds_init()
380 drm_add_edid_modes(connector, edid); oaktrail_lvds_init()
383 list_for_each_entry(scan, &connector->probed_modes, head) { oaktrail_lvds_init()
412 drm_connector_register(connector); oaktrail_lvds_init()
427 drm_connector_cleanup(connector); oaktrail_lvds_init()
H A Dpsb_intel_lvds.c265 static void psb_intel_lvds_save(struct drm_connector *connector) psb_intel_lvds_save() argument
267 struct drm_device *dev = connector->dev; psb_intel_lvds_save()
270 struct gma_encoder *gma_encoder = gma_attached_encoder(connector); psb_intel_lvds_save()
305 static void psb_intel_lvds_restore(struct drm_connector *connector) psb_intel_lvds_restore() argument
307 struct drm_device *dev = connector->dev; psb_intel_lvds_restore()
309 struct gma_encoder *gma_encoder = gma_attached_encoder(connector); psb_intel_lvds_restore()
346 int psb_intel_lvds_mode_valid(struct drm_connector *connector, psb_intel_lvds_mode_valid() argument
349 struct drm_psb_private *dev_priv = connector->dev->dev_private; psb_intel_lvds_mode_valid()
350 struct gma_encoder *gma_encoder = gma_attached_encoder(connector); psb_intel_lvds_mode_valid()
506 * This connector should only have
510 *connector, bool force) psb_intel_lvds_detect()
518 static int psb_intel_lvds_get_modes(struct drm_connector *connector) psb_intel_lvds_get_modes() argument
520 struct drm_device *dev = connector->dev; psb_intel_lvds_get_modes()
523 struct gma_encoder *gma_encoder = gma_attached_encoder(connector); psb_intel_lvds_get_modes()
528 ret = psb_intel_ddc_get_modes(connector, &lvds_priv->i2c_bus->adapter); psb_intel_lvds_get_modes()
537 connector->display_info.min_vfreq = 0; psb_intel_lvds_get_modes()
538 connector->display_info.max_vfreq = 200; psb_intel_lvds_get_modes()
539 connector->display_info.min_hfreq = 0; psb_intel_lvds_get_modes()
540 connector->display_info.max_hfreq = 200; psb_intel_lvds_get_modes()
545 drm_mode_probed_add(connector, mode); psb_intel_lvds_get_modes()
554 * @connector: connector to free
556 * Unregister the DDC bus for this connector then free the driver private
559 void psb_intel_lvds_destroy(struct drm_connector *connector) psb_intel_lvds_destroy() argument
561 struct gma_encoder *gma_encoder = gma_attached_encoder(connector); psb_intel_lvds_destroy()
566 drm_connector_unregister(connector); psb_intel_lvds_destroy()
567 drm_connector_cleanup(connector); psb_intel_lvds_destroy()
568 kfree(connector); psb_intel_lvds_destroy()
571 int psb_intel_lvds_set_property(struct drm_connector *connector, psb_intel_lvds_set_property() argument
575 struct drm_encoder *encoder = connector->encoder; psb_intel_lvds_set_property()
598 if (drm_object_property_get_value(&connector->base, psb_intel_lvds_set_property()
606 if (drm_object_property_set_value(&connector->base, psb_intel_lvds_set_property()
621 if (drm_object_property_set_value(&connector->base, psb_intel_lvds_set_property()
680 * Create the connector, register the LVDS DDC bus, and try to figure out what
689 struct drm_connector *connector; psb_intel_lvds_init() local
717 connector = &gma_connector->base; psb_intel_lvds_init()
719 drm_connector_init(dev, connector, psb_intel_lvds_init()
731 drm_connector_helper_add(connector, psb_intel_lvds_init()
733 connector->display_info.subpixel_order = SubPixelHorizontalRGB; psb_intel_lvds_init()
734 connector->interlace_allowed = false; psb_intel_lvds_init()
735 connector->doublescan_allowed = false; psb_intel_lvds_init()
737 /*Attach connector properties*/ psb_intel_lvds_init()
738 drm_object_attach_property(&connector->base, psb_intel_lvds_init()
741 drm_object_attach_property(&connector->base, psb_intel_lvds_init()
781 psb_intel_ddc_get_modes(connector, &lvds_priv->ddc_bus->adapter); psb_intel_lvds_init()
782 list_for_each_entry(scan, &connector->probed_modes, head) { psb_intel_lvds_init()
832 drm_connector_register(connector); psb_intel_lvds_init()
844 drm_connector_cleanup(connector); psb_intel_lvds_init()
509 psb_intel_lvds_detect(struct drm_connector *connector, bool force) psb_intel_lvds_detect() argument
H A Dpsb_intel_sdvo.c145 /* Mark the type of connector */
201 static struct psb_intel_sdvo *intel_attached_sdvo(struct drm_connector *connector) intel_attached_sdvo() argument
203 return container_of(gma_attached_encoder(connector), intel_attached_sdvo()
207 static struct psb_intel_sdvo_connector *to_psb_intel_sdvo_connector(struct drm_connector *connector) to_psb_intel_sdvo_connector() argument
209 return container_of(to_gma_connector(connector), struct psb_intel_sdvo_connector, base); to_psb_intel_sdvo_connector()
1161 static int psb_intel_sdvo_mode_valid(struct drm_connector *connector, psb_intel_sdvo_mode_valid() argument
1164 struct psb_intel_sdvo *psb_intel_sdvo = intel_attached_sdvo(connector); psb_intel_sdvo_mode_valid()
1227 struct drm_connector *connector = NULL;
1231 /* find the sdvo connector */
1232 list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
1233 iout = to_psb_intel_sdvo(connector);
1241 return connector;
1244 return connector;
1251 int psb_intel_sdvo_supports_hotplug(struct drm_connector *connector)
1258 if (!connector)
1261 psb_intel_sdvo = to_psb_intel_sdvo(connector);
1267 void psb_intel_sdvo_set_hotplug(struct drm_connector *connector, int on)
1271 struct psb_intel_sdvo *psb_intel_sdvo = to_psb_intel_sdvo(connector);
1301 psb_intel_sdvo_get_edid(struct drm_connector *connector) psb_intel_sdvo_get_edid() argument
1303 struct psb_intel_sdvo *sdvo = intel_attached_sdvo(connector); psb_intel_sdvo_get_edid()
1304 return drm_get_edid(connector, &sdvo->ddc); psb_intel_sdvo_get_edid()
1307 /* Mac mini hack -- use the same DDC as the analog connector */
1309 psb_intel_sdvo_get_analog_edid(struct drm_connector *connector) psb_intel_sdvo_get_analog_edid() argument
1311 struct drm_psb_private *dev_priv = connector->dev->dev_private; psb_intel_sdvo_get_analog_edid()
1313 return drm_get_edid(connector, psb_intel_sdvo_get_analog_edid()
1318 psb_intel_sdvo_hdmi_sink_detect(struct drm_connector *connector) psb_intel_sdvo_hdmi_sink_detect() argument
1320 struct psb_intel_sdvo *psb_intel_sdvo = intel_attached_sdvo(connector); psb_intel_sdvo_hdmi_sink_detect()
1324 edid = psb_intel_sdvo_get_edid(connector); psb_intel_sdvo_hdmi_sink_detect()
1335 edid = psb_intel_sdvo_get_edid(connector); psb_intel_sdvo_hdmi_sink_detect()
1349 * port, try to use the CRT ddc to read the EDID for DVI-connector. psb_intel_sdvo_hdmi_sink_detect()
1352 edid = psb_intel_sdvo_get_analog_edid(connector); psb_intel_sdvo_hdmi_sink_detect()
1356 /* DDC bus is shared, match EDID to connector type */ psb_intel_sdvo_hdmi_sink_detect()
1369 struct psb_intel_sdvo_connector *psb_intel_sdvo_connector = to_psb_intel_sdvo_connector(connector); psb_intel_sdvo_hdmi_sink_detect()
1378 psb_intel_sdvo_detect(struct drm_connector *connector, bool force) psb_intel_sdvo_detect() argument
1381 struct psb_intel_sdvo *psb_intel_sdvo = intel_attached_sdvo(connector); psb_intel_sdvo_detect()
1382 struct psb_intel_sdvo_connector *psb_intel_sdvo_connector = to_psb_intel_sdvo_connector(connector); psb_intel_sdvo_detect()
1412 ret = psb_intel_sdvo_hdmi_sink_detect(connector); psb_intel_sdvo_detect()
1417 edid = psb_intel_sdvo_get_edid(connector); psb_intel_sdvo_detect()
1419 edid = psb_intel_sdvo_get_analog_edid(connector); psb_intel_sdvo_detect()
1447 static void psb_intel_sdvo_get_ddc_modes(struct drm_connector *connector) psb_intel_sdvo_get_ddc_modes() argument
1452 edid = psb_intel_sdvo_get_edid(connector); psb_intel_sdvo_get_ddc_modes()
1455 * Mac mini hack. On this device, the DVI-I connector shares one DDC psb_intel_sdvo_get_ddc_modes()
1461 edid = psb_intel_sdvo_get_analog_edid(connector); psb_intel_sdvo_get_ddc_modes()
1464 struct psb_intel_sdvo_connector *psb_intel_sdvo_connector = to_psb_intel_sdvo_connector(connector); psb_intel_sdvo_get_ddc_modes()
1469 drm_mode_connector_update_edid_property(connector, edid); psb_intel_sdvo_get_ddc_modes()
1470 drm_add_edid_modes(connector, edid); psb_intel_sdvo_get_ddc_modes()
1542 static void psb_intel_sdvo_get_tv_modes(struct drm_connector *connector) psb_intel_sdvo_get_tv_modes() argument
1544 struct psb_intel_sdvo *psb_intel_sdvo = intel_attached_sdvo(connector); psb_intel_sdvo_get_tv_modes()
1570 nmode = drm_mode_duplicate(connector->dev, psb_intel_sdvo_get_tv_modes()
1573 drm_mode_probed_add(connector, nmode); psb_intel_sdvo_get_tv_modes()
1577 static void psb_intel_sdvo_get_lvds_modes(struct drm_connector *connector) psb_intel_sdvo_get_lvds_modes() argument
1579 struct psb_intel_sdvo *psb_intel_sdvo = intel_attached_sdvo(connector); psb_intel_sdvo_get_lvds_modes()
1580 struct drm_psb_private *dev_priv = connector->dev->dev_private; psb_intel_sdvo_get_lvds_modes()
1588 psb_intel_ddc_get_modes(connector, psb_intel_sdvo->i2c); psb_intel_sdvo_get_lvds_modes()
1589 if (list_empty(&connector->probed_modes) == false) psb_intel_sdvo_get_lvds_modes()
1594 newmode = drm_mode_duplicate(connector->dev, psb_intel_sdvo_get_lvds_modes()
1600 drm_mode_probed_add(connector, newmode); psb_intel_sdvo_get_lvds_modes()
1605 list_for_each_entry(newmode, &connector->probed_modes, head) { psb_intel_sdvo_get_lvds_modes()
1608 drm_mode_duplicate(connector->dev, newmode); psb_intel_sdvo_get_lvds_modes()
1620 static int psb_intel_sdvo_get_modes(struct drm_connector *connector) psb_intel_sdvo_get_modes() argument
1622 struct psb_intel_sdvo_connector *psb_intel_sdvo_connector = to_psb_intel_sdvo_connector(connector); psb_intel_sdvo_get_modes()
1625 psb_intel_sdvo_get_tv_modes(connector); psb_intel_sdvo_get_modes()
1627 psb_intel_sdvo_get_lvds_modes(connector); psb_intel_sdvo_get_modes()
1629 psb_intel_sdvo_get_ddc_modes(connector); psb_intel_sdvo_get_modes()
1631 return !list_empty(&connector->probed_modes); psb_intel_sdvo_get_modes()
1634 static void psb_intel_sdvo_destroy(struct drm_connector *connector) psb_intel_sdvo_destroy() argument
1636 drm_connector_unregister(connector); psb_intel_sdvo_destroy()
1637 drm_connector_cleanup(connector); psb_intel_sdvo_destroy()
1638 kfree(connector); psb_intel_sdvo_destroy()
1641 static bool psb_intel_sdvo_detect_hdmi_audio(struct drm_connector *connector) psb_intel_sdvo_detect_hdmi_audio() argument
1643 struct psb_intel_sdvo *psb_intel_sdvo = intel_attached_sdvo(connector); psb_intel_sdvo_detect_hdmi_audio()
1650 edid = psb_intel_sdvo_get_edid(connector); psb_intel_sdvo_detect_hdmi_audio()
1658 psb_intel_sdvo_set_property(struct drm_connector *connector, psb_intel_sdvo_set_property() argument
1662 struct psb_intel_sdvo *psb_intel_sdvo = intel_attached_sdvo(connector); psb_intel_sdvo_set_property()
1663 struct psb_intel_sdvo_connector *psb_intel_sdvo_connector = to_psb_intel_sdvo_connector(connector); psb_intel_sdvo_set_property()
1664 struct drm_psb_private *dev_priv = connector->dev->dev_private; psb_intel_sdvo_set_property()
1669 ret = drm_object_property_set_value(&connector->base, property, val); psb_intel_sdvo_set_property()
1683 has_audio = psb_intel_sdvo_detect_hdmi_audio(connector); psb_intel_sdvo_set_property()
1724 drm_object_property_set_value(&connector->base, psb_intel_sdvo_set_property()
1736 drm_object_property_set_value(&connector->base, psb_intel_sdvo_set_property()
1748 drm_object_property_set_value(&connector->base, psb_intel_sdvo_set_property()
1760 drm_object_property_set_value(&connector->base, psb_intel_sdvo_set_property()
1805 static void psb_intel_sdvo_save(struct drm_connector *connector) psb_intel_sdvo_save() argument
1807 struct drm_device *dev = connector->dev; psb_intel_sdvo_save()
1808 struct gma_encoder *gma_encoder = gma_attached_encoder(connector); psb_intel_sdvo_save()
1814 static void psb_intel_sdvo_restore(struct drm_connector *connector) psb_intel_sdvo_restore() argument
1816 struct drm_device *dev = connector->dev; psb_intel_sdvo_restore()
1817 struct drm_encoder *encoder = &gma_attached_encoder(connector)->base; psb_intel_sdvo_restore()
1825 if (connector->status == connector_status_connected) psb_intel_sdvo_restore()
2009 psb_intel_sdvo_connector_init(struct psb_intel_sdvo_connector *connector, psb_intel_sdvo_connector_init() argument
2013 &connector->base.base, psb_intel_sdvo_connector_init()
2015 connector->base.base.connector_type); psb_intel_sdvo_connector_init()
2017 drm_connector_helper_add(&connector->base.base, psb_intel_sdvo_connector_init()
2020 connector->base.base.interlace_allowed = 0; psb_intel_sdvo_connector_init()
2021 connector->base.base.doublescan_allowed = 0; psb_intel_sdvo_connector_init()
2022 connector->base.base.display_info.subpixel_order = SubPixelHorizontalRGB; psb_intel_sdvo_connector_init()
2024 gma_connector_attach_encoder(&connector->base, &encoder->base); psb_intel_sdvo_connector_init()
2025 drm_connector_register(&connector->base.base); psb_intel_sdvo_connector_init()
2029 psb_intel_sdvo_add_hdmi_properties(struct psb_intel_sdvo_connector *connector) psb_intel_sdvo_add_hdmi_properties() argument
2032 struct drm_device *dev = connector->base.base.dev; psb_intel_sdvo_add_hdmi_properties()
2034 intel_attach_force_audio_property(&connector->base.base); psb_intel_sdvo_add_hdmi_properties()
2035 intel_attach_broadcast_rgb_property(&connector->base.base); psb_intel_sdvo_add_hdmi_properties()
2043 struct drm_connector *connector; psb_intel_sdvo_dvi_init() local
2060 connector = &intel_connector->base; psb_intel_sdvo_dvi_init()
2061 // connector->polled = DRM_CONNECTOR_POLL_CONNECT | DRM_CONNECTOR_POLL_DISCONNECT; psb_intel_sdvo_dvi_init()
2063 connector->connector_type = DRM_MODE_CONNECTOR_DVID; psb_intel_sdvo_dvi_init()
2066 connector->connector_type = DRM_MODE_CONNECTOR_HDMIA; psb_intel_sdvo_dvi_init()
2083 struct drm_connector *connector; psb_intel_sdvo_tv_init() local
2092 connector = &intel_connector->base; psb_intel_sdvo_tv_init()
2094 connector->connector_type = DRM_MODE_CONNECTOR_SVIDEO; psb_intel_sdvo_tv_init()
2114 psb_intel_sdvo_destroy(connector); psb_intel_sdvo_tv_init()
2122 struct drm_connector *connector; psb_intel_sdvo_analog_init() local
2131 connector = &intel_connector->base; psb_intel_sdvo_analog_init()
2132 connector->polled = DRM_CONNECTOR_POLL_CONNECT; psb_intel_sdvo_analog_init()
2134 connector->connector_type = DRM_MODE_CONNECTOR_VGA; psb_intel_sdvo_analog_init()
2156 struct drm_connector *connector; psb_intel_sdvo_lvds_init() local
2165 connector = &intel_connector->base; psb_intel_sdvo_lvds_init()
2167 connector->connector_type = DRM_MODE_CONNECTOR_LVDS; psb_intel_sdvo_lvds_init()
2187 psb_intel_sdvo_destroy(connector); psb_intel_sdvo_lvds_init()
2304 drm_object_attach_property(&connector->base, \
2318 struct drm_connector *connector = &psb_intel_sdvo_connector->base.base; psb_intel_sdvo_create_enhance_property_tv() local
2341 drm_object_attach_property(&connector->base, psb_intel_sdvo_create_enhance_property_tv()
2350 drm_object_attach_property(&connector->base, psb_intel_sdvo_create_enhance_property_tv()
2377 drm_object_attach_property(&connector->base, psb_intel_sdvo_create_enhance_property_tv()
2386 drm_object_attach_property(&connector->base, psb_intel_sdvo_create_enhance_property_tv()
2418 drm_object_attach_property(&connector->base, psb_intel_sdvo_create_enhance_property_tv()
2433 struct drm_connector *connector = &psb_intel_sdvo_connector->base.base; psb_intel_sdvo_create_enhance_property_lvds() local
H A Dcdv_intel_lvds.c239 static void cdv_intel_lvds_save(struct drm_connector *connector) cdv_intel_lvds_save() argument
243 static void cdv_intel_lvds_restore(struct drm_connector *connector) cdv_intel_lvds_restore() argument
247 static int cdv_intel_lvds_mode_valid(struct drm_connector *connector, cdv_intel_lvds_mode_valid() argument
250 struct drm_device *dev = connector->dev; cdv_intel_lvds_mode_valid()
393 * This connector should only have
397 struct drm_connector *connector, bool force) cdv_intel_lvds_detect()
405 static int cdv_intel_lvds_get_modes(struct drm_connector *connector) cdv_intel_lvds_get_modes() argument
407 struct drm_device *dev = connector->dev; cdv_intel_lvds_get_modes()
409 struct gma_encoder *gma_encoder = gma_attached_encoder(connector); cdv_intel_lvds_get_modes()
413 ret = psb_intel_ddc_get_modes(connector, &gma_encoder->i2c_bus->adapter); cdv_intel_lvds_get_modes()
422 connector->display_info.min_vfreq = 0; cdv_intel_lvds_get_modes()
423 connector->display_info.max_vfreq = 200; cdv_intel_lvds_get_modes()
424 connector->display_info.min_hfreq = 0; cdv_intel_lvds_get_modes()
425 connector->display_info.max_hfreq = 200; cdv_intel_lvds_get_modes()
429 drm_mode_probed_add(connector, mode); cdv_intel_lvds_get_modes()
438 * @connector: connector to free
440 * Unregister the DDC bus for this connector then free the driver private
443 static void cdv_intel_lvds_destroy(struct drm_connector *connector) cdv_intel_lvds_destroy() argument
445 struct gma_encoder *gma_encoder = gma_attached_encoder(connector); cdv_intel_lvds_destroy()
449 drm_connector_unregister(connector); cdv_intel_lvds_destroy()
450 drm_connector_cleanup(connector); cdv_intel_lvds_destroy()
451 kfree(connector); cdv_intel_lvds_destroy()
454 static int cdv_intel_lvds_set_property(struct drm_connector *connector, cdv_intel_lvds_set_property() argument
458 struct drm_encoder *encoder = connector->encoder; cdv_intel_lvds_set_property()
478 if (drm_object_property_get_value(&connector->base, cdv_intel_lvds_set_property()
486 if (drm_object_property_set_value(&connector->base, cdv_intel_lvds_set_property()
501 if (drm_object_property_set_value(&connector->base, cdv_intel_lvds_set_property()
605 * Create the connector, register the LVDS DDC bus, and try to figure out what
614 struct drm_connector *connector; cdv_intel_lvds_init() local
645 connector = &gma_connector->base; cdv_intel_lvds_init()
649 drm_connector_init(dev, connector, cdv_intel_lvds_init()
662 drm_connector_helper_add(connector, cdv_intel_lvds_init()
664 connector->display_info.subpixel_order = SubPixelHorizontalRGB; cdv_intel_lvds_init()
665 connector->interlace_allowed = false; cdv_intel_lvds_init()
666 connector->doublescan_allowed = false; cdv_intel_lvds_init()
668 /*Attach connector properties*/ cdv_intel_lvds_init()
669 drm_object_attach_property(&connector->base, cdv_intel_lvds_init()
672 drm_object_attach_property(&connector->base, cdv_intel_lvds_init()
716 psb_intel_ddc_get_modes(connector, cdv_intel_lvds_init()
718 list_for_each_entry(scan, &connector->probed_modes, head) { cdv_intel_lvds_init()
777 drm_connector_register(connector); cdv_intel_lvds_init()
792 drm_connector_cleanup(connector); cdv_intel_lvds_init()
396 cdv_intel_lvds_detect( struct drm_connector *connector, bool force) cdv_intel_lvds_detect() argument
H A Dpsb_intel_drv.h208 int psb_intel_ddc_get_modes(struct drm_connector *connector,
230 extern struct drm_encoder *gma_best_encoder(struct drm_connector *connector);
231 extern void gma_connector_attach_encoder(struct gma_connector *connector,
235 struct drm_connector *connector) gma_attached_encoder()
237 return to_gma_connector(connector)->encoder; gma_attached_encoder()
246 extern int psb_intel_sdvo_supports_hotplug(struct drm_connector *connector);
247 extern void psb_intel_sdvo_set_hotplug(struct drm_connector *connector,
255 extern int psb_intel_lvds_mode_valid(struct drm_connector *connector,
257 extern int psb_intel_lvds_set_property(struct drm_connector *connector,
260 extern void psb_intel_lvds_destroy(struct drm_connector *connector);
276 extern void psb_intel_attach_force_audio_property(struct drm_connector *connector);
277 extern void psb_intel_attach_broadcast_rgb_property(struct drm_connector *connector);
283 extern void cdv_intel_attach_force_audio_property(struct drm_connector *connector);
284 extern void cdv_intel_attach_broadcast_rgb_property(struct drm_connector *connector);
234 gma_attached_encoder( struct drm_connector *connector) gma_attached_encoder() argument
H A Dpsb_device.c184 struct drm_connector *connector; psb_save_display_registers() local
204 list_for_each_entry(connector, &dev->mode_config.connector_list, head) psb_save_display_registers()
205 if (connector->funcs->save) psb_save_display_registers()
206 connector->funcs->save(connector); psb_save_display_registers()
222 struct drm_connector *connector; psb_restore_display_registers() local
243 list_for_each_entry(connector, &dev->mode_config.connector_list, head) psb_restore_display_registers()
244 if (connector->funcs->restore) psb_restore_display_registers()
245 connector->funcs->restore(connector); psb_restore_display_registers()
H A Dmdfld_dsi_output.h246 * DSI config, consists of one DSI connector, two DSI encoders.
254 struct mdfld_dsi_connector *connector; member in struct:mdfld_dsi_config
270 struct drm_connector *connector) mdfld_dsi_connector()
274 gma_connector = to_gma_connector(connector); mdfld_dsi_connector()
290 mdfld_dsi_get_config(struct mdfld_dsi_connector *connector) mdfld_dsi_get_config() argument
292 if (!connector) mdfld_dsi_get_config()
294 return (struct mdfld_dsi_config *)connector->private; mdfld_dsi_get_config()
304 dsi_connector = config->connector; mdfld_dsi_get_pkg_sender()
332 return config->connector; mdfld_dsi_encoder_get_connector()
349 struct mdfld_dsi_connector *connector; mdfld_dsi_encoder_get_pipe() local
354 connector = mdfld_dsi_encoder_get_connector(encoder); mdfld_dsi_encoder_get_pipe()
355 if (!connector) mdfld_dsi_encoder_get_pipe()
357 return connector->pipe; mdfld_dsi_encoder_get_pipe()
269 mdfld_dsi_connector( struct drm_connector *connector) mdfld_dsi_connector() argument
H A Dcdv_intel_dp.c509 cdv_intel_dp_mode_valid(struct drm_connector *connector, cdv_intel_dp_mode_valid() argument
512 struct gma_encoder *encoder = gma_attached_encoder(connector); cdv_intel_dp_mode_valid()
516 struct drm_psb_private *dev_priv = connector->dev->dev_private; cdv_intel_dp_mode_valid()
846 cdv_intel_dp_i2c_init(struct gma_connector *connector, cdv_intel_dp_i2c_init() argument
864 intel_dp->adapter.dev.parent = connector->base.kdev; cdv_intel_dp_i2c_init()
1728 cdv_intel_dp_detect(struct drm_connector *connector, bool force) cdv_intel_dp_detect() argument
1730 struct gma_encoder *encoder = gma_attached_encoder(connector); cdv_intel_dp_detect()
1750 edid = drm_get_edid(connector, &intel_dp->adapter); cdv_intel_dp_detect()
1762 static int cdv_intel_dp_get_modes(struct drm_connector *connector) cdv_intel_dp_get_modes() argument
1764 struct gma_encoder *intel_encoder = gma_attached_encoder(connector); cdv_intel_dp_get_modes()
1771 edid = drm_get_edid(connector, &intel_dp->adapter); cdv_intel_dp_get_modes()
1773 drm_mode_connector_update_edid_property(connector, edid); cdv_intel_dp_get_modes()
1774 ret = drm_add_edid_modes(connector, edid); cdv_intel_dp_get_modes()
1779 struct drm_device *dev = connector->dev; cdv_intel_dp_get_modes()
1786 list_for_each_entry(newmode, &connector->probed_modes, cdv_intel_dp_get_modes()
1809 drm_mode_probed_add(connector, mode); cdv_intel_dp_get_modes()
1818 cdv_intel_dp_detect_audio(struct drm_connector *connector) cdv_intel_dp_detect_audio() argument
1820 struct gma_encoder *encoder = gma_attached_encoder(connector); cdv_intel_dp_detect_audio()
1829 edid = drm_get_edid(connector, &intel_dp->adapter); cdv_intel_dp_detect_audio()
1841 cdv_intel_dp_set_property(struct drm_connector *connector, cdv_intel_dp_set_property() argument
1845 struct drm_psb_private *dev_priv = connector->dev->dev_private; cdv_intel_dp_set_property()
1846 struct gma_encoder *encoder = gma_attached_encoder(connector); cdv_intel_dp_set_property()
1850 ret = drm_object_property_set_value(&connector->base, property, val); cdv_intel_dp_set_property()
1864 has_audio = cdv_intel_dp_detect_audio(connector); cdv_intel_dp_set_property()
1897 cdv_intel_dp_destroy(struct drm_connector *connector) cdv_intel_dp_destroy() argument
1899 struct gma_encoder *gma_encoder = gma_attached_encoder(connector); cdv_intel_dp_destroy()
1903 /* cdv_intel_panel_destroy_backlight(connector->dev); */ cdv_intel_dp_destroy()
1910 drm_connector_unregister(connector); cdv_intel_dp_destroy()
1911 drm_connector_cleanup(connector); cdv_intel_dp_destroy()
1912 kfree(connector); cdv_intel_dp_destroy()
1947 static void cdv_intel_dp_add_properties(struct drm_connector *connector) cdv_intel_dp_add_properties() argument
1949 cdv_intel_attach_force_audio_property(connector); cdv_intel_dp_add_properties()
1950 cdv_intel_attach_broadcast_rgb_property(connector); cdv_intel_dp_add_properties()
2000 struct drm_connector *connector; cdv_intel_dp_init() local
2019 connector = &gma_connector->base; cdv_intel_dp_init()
2022 drm_connector_init(dev, connector, &cdv_intel_dp_connector_funcs, type); cdv_intel_dp_init()
2038 drm_connector_helper_add(connector, &cdv_intel_dp_connector_helper_funcs); cdv_intel_dp_init()
2040 connector->polled = DRM_CONNECTOR_POLL_HPD; cdv_intel_dp_init()
2041 connector->interlace_allowed = false; cdv_intel_dp_init()
2042 connector->doublescan_allowed = false; cdv_intel_dp_init()
2044 drm_connector_register(connector); cdv_intel_dp_init()
2062 cdv_intel_dp_add_properties(connector); cdv_intel_dp_init()
2127 cdv_intel_dp_destroy(connector); cdv_intel_dp_init()
H A Dcdv_device.c268 struct drm_connector *connector; cdv_save_display_registers() local
304 list_for_each_entry(connector, &dev->mode_config.connector_list, head) cdv_save_display_registers()
305 connector->funcs->dpms(connector, DRM_MODE_DPMS_OFF); cdv_save_display_registers()
322 struct drm_connector *connector; cdv_restore_display_registers() local
378 list_for_each_entry(connector, &dev->mode_config.connector_list, head) cdv_restore_display_registers()
379 connector->funcs->dpms(connector, DRM_MODE_DPMS_ON); cdv_restore_display_registers()
470 void cdv_intel_attach_force_audio_property(struct drm_connector *connector) cdv_intel_attach_force_audio_property() argument
472 struct drm_device *dev = connector->dev; cdv_intel_attach_force_audio_property()
490 drm_object_attach_property(&connector->base, prop, 0); cdv_intel_attach_force_audio_property()
499 void cdv_intel_attach_broadcast_rgb_property(struct drm_connector *connector) cdv_intel_attach_broadcast_rgb_property() argument
501 struct drm_device *dev = connector->dev; cdv_intel_attach_broadcast_rgb_property()
520 drm_object_attach_property(&connector->base, prop, 0); cdv_intel_attach_broadcast_rgb_property()
H A Doaktrail_hdmi.c512 static int oaktrail_hdmi_mode_valid(struct drm_connector *connector, oaktrail_hdmi_mode_valid() argument
527 oaktrail_hdmi_detect(struct drm_connector *connector, bool force) oaktrail_hdmi_detect() argument
530 struct drm_device *dev = connector->dev; oaktrail_hdmi_detect()
560 static int oaktrail_hdmi_get_modes(struct drm_connector *connector) oaktrail_hdmi_get_modes() argument
577 /* FIXME ? edid = drm_get_edid(connector, i2c_adap); */ oaktrail_hdmi_get_modes()
581 drm_mode_connector_update_edid_property(connector, edid); oaktrail_hdmi_get_modes()
582 ret = drm_add_edid_modes(connector, edid); oaktrail_hdmi_get_modes()
597 static void oaktrail_hdmi_destroy(struct drm_connector *connector) oaktrail_hdmi_destroy() argument
638 struct drm_connector *connector; oaktrail_hdmi_init() local
649 connector = &gma_connector->base; oaktrail_hdmi_init()
651 drm_connector_init(dev, connector, oaktrail_hdmi_init()
663 drm_connector_helper_add(connector, &oaktrail_hdmi_connector_helper_funcs); oaktrail_hdmi_init()
665 connector->display_info.subpixel_order = SubPixelHorizontalRGB; oaktrail_hdmi_init()
666 connector->interlace_allowed = false; oaktrail_hdmi_init()
667 connector->doublescan_allowed = false; oaktrail_hdmi_init()
668 drm_connector_register(connector); oaktrail_hdmi_init()
H A Dpsb_intel_display.c120 struct drm_connector *connector; psb_intel_crtc_mode_set() local
129 list_for_each_entry(connector, &mode_config->connector_list, head) { psb_intel_crtc_mode_set()
130 struct gma_encoder *gma_encoder = gma_attached_encoder(connector); psb_intel_crtc_mode_set()
132 if (!connector->encoder psb_intel_crtc_mode_set()
133 || connector->encoder->crtc != crtc) psb_intel_crtc_mode_set()
376 * i830PllIsValid() because it relies on the xf86_config connector psb_intel_crtc_clock_get()
574 struct drm_connector *connector; gma_connector_clones() local
577 list_for_each_entry(connector, &dev->mode_config.connector_list, gma_connector_clones()
579 struct gma_encoder *gma_encoder = gma_attached_encoder(connector); gma_connector_clones()
H A Doaktrail_crtc.c385 struct drm_connector *connector; oaktrail_crtc_mode_set() local
402 list_for_each_entry(connector, &mode_config->connector_list, head) { oaktrail_crtc_mode_set()
403 if (!connector->encoder || connector->encoder->crtc != crtc) oaktrail_crtc_mode_set()
406 gma_encoder = gma_attached_encoder(connector); oaktrail_crtc_mode_set()
435 drm_object_property_get_value(&connector->base, oaktrail_crtc_mode_set()
/linux-4.4.14/drivers/gpu/drm/tegra/
H A Doutput.c14 int tegra_output_connector_get_modes(struct drm_connector *connector) tegra_output_connector_get_modes() argument
16 struct tegra_output *output = connector_to_output(connector); tegra_output_connector_get_modes()
33 edid = drm_get_edid(connector, output->ddc); tegra_output_connector_get_modes()
35 drm_mode_connector_update_edid_property(connector, edid); tegra_output_connector_get_modes()
38 err = drm_add_edid_modes(connector, edid); tegra_output_connector_get_modes()
46 tegra_output_connector_best_encoder(struct drm_connector *connector) tegra_output_connector_best_encoder() argument
48 struct tegra_output *output = connector_to_output(connector); tegra_output_connector_best_encoder()
54 tegra_output_connector_detect(struct drm_connector *connector, bool force) tegra_output_connector_detect() argument
56 struct tegra_output *output = connector_to_output(connector); tegra_output_connector_detect()
81 void tegra_output_connector_destroy(struct drm_connector *connector) tegra_output_connector_destroy() argument
83 drm_connector_unregister(connector); tegra_output_connector_destroy()
84 drm_connector_cleanup(connector); tegra_output_connector_destroy()
96 if (output->connector.dev) hpd_irq()
97 drm_helper_hpd_irq_event(output->connector.dev); hpd_irq()
167 output->connector.polled = DRM_CONNECTOR_POLL_HPD; tegra_output_probe()
170 * Disable the interrupt until the connector has been tegra_output_probe()
196 err = drm_panel_attach(output->panel, &output->connector); tegra_output_init()
202 * The connector is now registered and ready to receive hotplug events tegra_output_init()
214 * The connector is going away, so the interrupt must be disabled to tegra_output_exit()
H A Ddrm.h215 struct drm_connector connector; member in struct:tegra_output
225 return container_of(c, struct tegra_output, connector); connector_to_output()
240 int tegra_output_connector_get_modes(struct drm_connector *connector);
242 tegra_output_connector_best_encoder(struct drm_connector *connector);
244 tegra_output_connector_detect(struct drm_connector *connector, bool force);
245 void tegra_output_connector_destroy(struct drm_connector *connector);
H A Drgb.c101 tegra_rgb_connector_mode_valid(struct drm_connector *connector, tegra_rgb_connector_mode_valid() argument
283 drm_connector_init(drm, &output->connector, &tegra_rgb_connector_funcs, tegra_dc_rgb_init()
285 drm_connector_helper_add(&output->connector, tegra_dc_rgb_init()
287 output->connector.dpms = DRM_MODE_DPMS_OFF; tegra_dc_rgb_init()
294 drm_mode_connector_attach_encoder(&output->connector, tegra_dc_rgb_init()
296 drm_connector_register(&output->connector); tegra_dc_rgb_init()
H A Ddsi.c104 return to_dsi_state(dsi->output.connector.state); tegra_dsi_get_state()
746 static void tegra_dsi_connector_reset(struct drm_connector *connector) tegra_dsi_connector_reset() argument
750 kfree(connector->state); tegra_dsi_connector_reset()
751 connector->state = NULL; tegra_dsi_connector_reset()
755 connector->state = &state->base; tegra_dsi_connector_reset()
759 tegra_dsi_connector_duplicate_state(struct drm_connector *connector) tegra_dsi_connector_duplicate_state() argument
761 struct tegra_dsi_state *state = to_dsi_state(connector->state); tegra_dsi_connector_duplicate_state()
782 tegra_dsi_connector_mode_valid(struct drm_connector *connector, tegra_dsi_connector_mode_valid() argument
1017 drm_connector_init(drm, &dsi->output.connector, tegra_dsi_init()
1020 drm_connector_helper_add(&dsi->output.connector, tegra_dsi_init()
1022 dsi->output.connector.dpms = DRM_MODE_DPMS_OFF; tegra_dsi_init()
1030 drm_mode_connector_attach_encoder(&dsi->output.connector, tegra_dsi_init()
1032 drm_connector_register(&dsi->output.connector); tegra_dsi_init()
1407 if (output->panel && output->connector.dev) { tegra_dsi_host_attach()
1408 drm_panel_attach(output->panel, &output->connector); tegra_dsi_host_attach()
1409 drm_helper_hpd_irq_event(output->connector.dev); tegra_dsi_host_attach()
1425 if (output->connector.dev) tegra_dsi_host_detach()
1426 drm_helper_hpd_irq_event(output->connector.dev); tegra_dsi_host_detach()
1480 dsi->output.connector.polled = DRM_CONNECTOR_POLL_HPD; tegra_dsi_probe()
/linux-4.4.14/drivers/gpu/drm/msm/hdmi/
H A Dhdmi_connector.c307 struct drm_connector *connector = &hdmi_connector->base; hotplug_work() local
308 drm_helper_hpd_irq_event(connector->dev); hotplug_work()
311 void hdmi_connector_irq(struct drm_connector *connector) hdmi_connector_irq() argument
313 struct hdmi_connector *hdmi_connector = to_hdmi_connector(connector); hdmi_connector_irq()
357 struct drm_connector *connector, bool force) hdmi_connector_detect()
359 struct hdmi_connector *hdmi_connector = to_hdmi_connector(connector); hdmi_connector_detect()
386 static void hdmi_connector_destroy(struct drm_connector *connector) hdmi_connector_destroy() argument
388 struct hdmi_connector *hdmi_connector = to_hdmi_connector(connector); hdmi_connector_destroy()
392 drm_connector_unregister(connector); hdmi_connector_destroy()
393 drm_connector_cleanup(connector); hdmi_connector_destroy()
398 static int hdmi_connector_get_modes(struct drm_connector *connector) hdmi_connector_get_modes() argument
400 struct hdmi_connector *hdmi_connector = to_hdmi_connector(connector); hdmi_connector_get_modes()
409 edid = drm_get_edid(connector, hdmi->i2c); hdmi_connector_get_modes()
414 drm_mode_connector_update_edid_property(connector, edid); hdmi_connector_get_modes()
417 ret = drm_add_edid_modes(connector, edid); hdmi_connector_get_modes()
424 static int hdmi_connector_mode_valid(struct drm_connector *connector, hdmi_connector_mode_valid() argument
427 struct hdmi_connector *hdmi_connector = to_hdmi_connector(connector); hdmi_connector_mode_valid()
430 struct msm_drm_private *priv = connector->dev->dev_private; hdmi_connector_mode_valid()
454 hdmi_connector_best_encoder(struct drm_connector *connector) hdmi_connector_best_encoder() argument
456 struct hdmi_connector *hdmi_connector = to_hdmi_connector(connector); hdmi_connector_best_encoder()
476 /* initialize connector */ hdmi_connector_init()
479 struct drm_connector *connector = NULL; hdmi_connector_init() local
492 connector = &hdmi_connector->base; hdmi_connector_init()
494 drm_connector_init(hdmi->dev, connector, &hdmi_connector_funcs, hdmi_connector_init()
496 drm_connector_helper_add(connector, &hdmi_connector_helper_funcs); hdmi_connector_init()
498 connector->polled = DRM_CONNECTOR_POLL_CONNECT | hdmi_connector_init()
501 connector->interlace_allowed = 0; hdmi_connector_init()
502 connector->doublescan_allowed = 0; hdmi_connector_init()
504 drm_connector_register(connector); hdmi_connector_init()
512 drm_mode_connector_attach_encoder(connector, hdmi->encoder); hdmi_connector_init()
514 return connector; hdmi_connector_init()
517 if (connector) hdmi_connector_init()
518 hdmi_connector_destroy(connector); hdmi_connector_init()
356 hdmi_connector_detect( struct drm_connector *connector, bool force) hdmi_connector_detect() argument
H A Dhdmi.c52 hdmi_connector_irq(hdmi->connector); hdmi_irq()
274 hdmi->connector = hdmi_connector_init(hdmi); hdmi_modeset_init()
275 if (IS_ERR(hdmi->connector)) { hdmi_modeset_init()
276 ret = PTR_ERR(hdmi->connector); hdmi_modeset_init()
277 dev_err(dev->dev, "failed to create HDMI connector: %d\n", ret); hdmi_modeset_init()
278 hdmi->connector = NULL; hdmi_modeset_init()
301 priv->connectors[priv->num_connectors++] = hdmi->connector; hdmi_modeset_init()
313 if (hdmi->connector) { hdmi_modeset_init()
314 hdmi->connector->funcs->destroy(hdmi->connector); hdmi_modeset_init()
315 hdmi->connector = NULL; hdmi_modeset_init()
H A Dhdmi.h66 struct drm_connector *connector; member in struct:hdmi
173 * hdmi connector:
176 void hdmi_connector_irq(struct drm_connector *connector);
/linux-4.4.14/drivers/gpu/drm/atmel-hlcdc/
H A Datmel_hlcdc_output.c40 * Atmel HLCDC RGB connector structure
44 * @connector: DRM connector
50 struct drm_connector connector; member in struct:atmel_hlcdc_rgb_output
57 drm_connector_to_atmel_hlcdc_rgb_output(struct drm_connector *connector) drm_connector_to_atmel_hlcdc_rgb_output() argument
59 return container_of(connector, struct atmel_hlcdc_rgb_output, drm_connector_to_atmel_hlcdc_rgb_output()
60 connector); drm_connector_to_atmel_hlcdc_rgb_output()
122 struct drm_display_info *info = &rgb->connector.display_info; atmel_hlcdc_rgb_encoder_mode_set()
166 static int atmel_hlcdc_panel_get_modes(struct drm_connector *connector) atmel_hlcdc_panel_get_modes() argument
169 drm_connector_to_atmel_hlcdc_rgb_output(connector); atmel_hlcdc_panel_get_modes()
175 static int atmel_hlcdc_rgb_mode_valid(struct drm_connector *connector, atmel_hlcdc_rgb_mode_valid() argument
179 drm_connector_to_atmel_hlcdc_rgb_output(connector); atmel_hlcdc_rgb_mode_valid()
187 atmel_hlcdc_rgb_best_encoder(struct drm_connector *connector) atmel_hlcdc_rgb_best_encoder() argument
190 drm_connector_to_atmel_hlcdc_rgb_output(connector); atmel_hlcdc_rgb_best_encoder()
202 atmel_hlcdc_panel_connector_detect(struct drm_connector *connector, bool force) atmel_hlcdc_panel_connector_detect() argument
208 atmel_hlcdc_panel_connector_destroy(struct drm_connector *connector) atmel_hlcdc_panel_connector_destroy() argument
211 drm_connector_to_atmel_hlcdc_rgb_output(connector); atmel_hlcdc_panel_connector_destroy()
215 drm_connector_cleanup(connector); atmel_hlcdc_panel_connector_destroy()
263 panel->base.connector.dpms = DRM_MODE_DPMS_OFF; atmel_hlcdc_create_panel_output()
264 panel->base.connector.polled = DRM_CONNECTOR_POLL_CONNECT; atmel_hlcdc_create_panel_output()
265 drm_connector_helper_add(&panel->base.connector, atmel_hlcdc_create_panel_output()
267 ret = drm_connector_init(dev, &panel->base.connector, atmel_hlcdc_create_panel_output()
273 drm_mode_connector_attach_encoder(&panel->base.connector, atmel_hlcdc_create_panel_output()
277 drm_panel_attach(p, &panel->base.connector); atmel_hlcdc_create_panel_output()
H A Datmel_hlcdc_dc.c584 struct drm_connector *connector, *failed; atmel_hlcdc_dc_connector_plug_all() local
588 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { atmel_hlcdc_dc_connector_plug_all()
589 ret = drm_connector_register(connector); atmel_hlcdc_dc_connector_plug_all()
591 failed = connector; atmel_hlcdc_dc_connector_plug_all()
599 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { atmel_hlcdc_dc_connector_plug_all()
600 if (failed == connector) atmel_hlcdc_dc_connector_plug_all()
603 drm_connector_unregister(connector); atmel_hlcdc_dc_connector_plug_all()
/linux-4.4.14/drivers/gpu/drm/exynos/
H A Dexynos_drm_dpi.c31 struct drm_connector connector; member in struct:exynos_dpi
36 #define connector_to_dpi(c) container_of(c, struct exynos_dpi, connector)
44 exynos_dpi_detect(struct drm_connector *connector, bool force) exynos_dpi_detect() argument
46 struct exynos_dpi *ctx = connector_to_dpi(connector); exynos_dpi_detect()
48 if (ctx->panel && !ctx->panel->connector) exynos_dpi_detect()
49 drm_panel_attach(ctx->panel, &ctx->connector); exynos_dpi_detect()
54 static void exynos_dpi_connector_destroy(struct drm_connector *connector) exynos_dpi_connector_destroy() argument
56 drm_connector_unregister(connector); exynos_dpi_connector_destroy()
57 drm_connector_cleanup(connector); exynos_dpi_connector_destroy()
70 static int exynos_dpi_get_modes(struct drm_connector *connector) exynos_dpi_get_modes() argument
72 struct exynos_dpi *ctx = connector_to_dpi(connector); exynos_dpi_get_modes()
78 mode = drm_mode_create(connector->dev); exynos_dpi_get_modes()
85 drm_mode_probed_add(connector, mode); exynos_dpi_get_modes()
96 exynos_dpi_best_encoder(struct drm_connector *connector) exynos_dpi_best_encoder() argument
98 struct exynos_dpi *ctx = connector_to_dpi(connector); exynos_dpi_best_encoder()
111 struct drm_connector *connector = &ctx->connector; exynos_dpi_create_connector() local
114 connector->polled = DRM_CONNECTOR_POLL_HPD; exynos_dpi_create_connector()
116 ret = drm_connector_init(encoder->dev, connector, exynos_dpi_create_connector()
120 DRM_ERROR("failed to initialize connector with drm\n"); exynos_dpi_create_connector()
124 drm_connector_helper_add(connector, &exynos_dpi_connector_helper_funcs); exynos_dpi_create_connector()
125 drm_connector_register(connector); exynos_dpi_create_connector()
126 drm_mode_connector_attach_encoder(connector, encoder); exynos_dpi_create_connector()
318 DRM_ERROR("failed to create connector ret = %d\n", ret); exynos_dpi_bind()
H A Dexynos_drm_vidi.c35 connector)
42 struct drm_connector connector; member in struct:vidi_context
316 static enum drm_connector_status vidi_detect(struct drm_connector *connector, vidi_detect() argument
319 struct vidi_context *ctx = ctx_from_connector(connector); vidi_detect()
329 static void vidi_connector_destroy(struct drm_connector *connector) vidi_connector_destroy() argument
343 static int vidi_get_modes(struct drm_connector *connector) vidi_get_modes() argument
345 struct vidi_context *ctx = ctx_from_connector(connector); vidi_get_modes()
365 drm_mode_connector_update_edid_property(connector, edid); vidi_get_modes()
367 return drm_add_edid_modes(connector, edid); vidi_get_modes()
370 static struct drm_encoder *vidi_best_encoder(struct drm_connector *connector) vidi_best_encoder() argument
372 struct vidi_context *ctx = ctx_from_connector(connector); vidi_best_encoder()
385 struct drm_connector *connector = &ctx->connector; vidi_create_connector() local
388 connector->polled = DRM_CONNECTOR_POLL_HPD; vidi_create_connector()
390 ret = drm_connector_init(ctx->drm_dev, connector, vidi_create_connector()
393 DRM_ERROR("Failed to initialize connector with drm\n"); vidi_create_connector()
397 drm_connector_helper_add(connector, &vidi_connector_helper_funcs); vidi_create_connector()
398 drm_connector_register(connector); vidi_create_connector()
399 drm_mode_connector_attach_encoder(connector, encoder); vidi_create_connector()
482 DRM_ERROR("failed to create connector ret = %d\n", ret); vidi_bind()
H A Dexynos_drm_drv.c310 struct drm_connector *connector; exynos_drm_suspend() local
313 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { exynos_drm_suspend()
314 int old_dpms = connector->dpms; exynos_drm_suspend()
316 if (connector->funcs->dpms) exynos_drm_suspend()
317 connector->funcs->dpms(connector, DRM_MODE_DPMS_OFF); exynos_drm_suspend()
319 /* Set the old mode back to the connector for resume */ exynos_drm_suspend()
320 connector->dpms = old_dpms; exynos_drm_suspend()
329 struct drm_connector *connector; exynos_drm_resume() local
332 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { exynos_drm_resume()
333 if (connector->funcs->dpms) { exynos_drm_resume()
334 int dpms = connector->dpms; exynos_drm_resume()
336 connector->dpms = DRM_MODE_DPMS_OFF; exynos_drm_resume()
337 connector->funcs->dpms(connector, dpms); exynos_drm_resume()
511 * because connector requires pipe number of its crtc during initialization.
H A Dexynos_hdmi.c104 struct drm_connector connector; member in struct:hdmi_context
135 return container_of(c, struct hdmi_context, connector); connector_to_hdmi()
942 static enum drm_connector_status hdmi_detect(struct drm_connector *connector, hdmi_detect() argument
945 struct hdmi_context *hdata = connector_to_hdmi(connector); hdmi_detect()
953 static void hdmi_connector_destroy(struct drm_connector *connector) hdmi_connector_destroy() argument
955 drm_connector_unregister(connector); hdmi_connector_destroy()
956 drm_connector_cleanup(connector); hdmi_connector_destroy()
969 static int hdmi_get_modes(struct drm_connector *connector) hdmi_get_modes() argument
971 struct hdmi_context *hdata = connector_to_hdmi(connector); hdmi_get_modes()
978 edid = drm_get_edid(connector, hdata->ddc_adpt); hdmi_get_modes()
987 drm_mode_connector_update_edid_property(connector, edid); hdmi_get_modes()
989 ret = drm_add_edid_modes(connector, edid); hdmi_get_modes()
1008 static int hdmi_mode_valid(struct drm_connector *connector, hdmi_mode_valid() argument
1011 struct hdmi_context *hdata = connector_to_hdmi(connector); hdmi_mode_valid()
1026 static struct drm_encoder *hdmi_best_encoder(struct drm_connector *connector) hdmi_best_encoder() argument
1028 struct hdmi_context *hdata = connector_to_hdmi(connector); hdmi_best_encoder()
1042 struct drm_connector *connector = &hdata->connector; hdmi_create_connector() local
1045 connector->interlace_allowed = true; hdmi_create_connector()
1046 connector->polled = DRM_CONNECTOR_POLL_HPD; hdmi_create_connector()
1048 ret = drm_connector_init(hdata->drm_dev, connector, hdmi_create_connector()
1051 DRM_ERROR("Failed to initialize connector with drm\n"); hdmi_create_connector()
1055 drm_connector_helper_add(connector, &hdmi_connector_helper_funcs); hdmi_create_connector()
1056 drm_connector_register(connector); hdmi_create_connector()
1057 drm_mode_connector_attach_encoder(connector, encoder); hdmi_create_connector()
1067 struct drm_connector *connector; hdmi_mode_fixup() local
1073 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { hdmi_mode_fixup()
1074 if (connector->encoder == encoder) hdmi_mode_fixup()
1078 if (connector->encoder != encoder) hdmi_mode_fixup()
1081 mode_ok = hdmi_mode_valid(connector, adjusted_mode); hdmi_mode_fixup()
1091 list_for_each_entry(m, &connector->modes, head) { hdmi_mode_fixup()
1092 mode_ok = hdmi_mode_valid(connector, m); hdmi_mode_fixup()
1802 DRM_ERROR("failed to create connector ret = %d\n", ret); hdmi_bind()
H A Dexynos_dp_core.c38 connector)
945 struct drm_connector *connector, bool force) exynos_dp_detect()
950 static void exynos_dp_connector_destroy(struct drm_connector *connector) exynos_dp_connector_destroy() argument
952 drm_connector_unregister(connector); exynos_dp_connector_destroy()
953 drm_connector_cleanup(connector); exynos_dp_connector_destroy()
966 static int exynos_dp_get_modes(struct drm_connector *connector) exynos_dp_get_modes() argument
968 struct exynos_dp_device *dp = ctx_from_connector(connector); exynos_dp_get_modes()
974 mode = drm_mode_create(connector->dev); exynos_dp_get_modes()
983 connector->display_info.width_mm = mode->width_mm; exynos_dp_get_modes()
984 connector->display_info.height_mm = mode->height_mm; exynos_dp_get_modes()
988 drm_mode_probed_add(connector, mode); exynos_dp_get_modes()
994 struct drm_connector *connector) exynos_dp_best_encoder()
996 struct exynos_dp_device *dp = ctx_from_connector(connector); exynos_dp_best_encoder()
1026 struct drm_connector *connector = &dp->connector; exynos_dp_create_connector() local
1029 /* Pre-empt DP connector creation if there's a bridge */ exynos_dp_create_connector()
1036 connector->polled = DRM_CONNECTOR_POLL_HPD; exynos_dp_create_connector()
1038 ret = drm_connector_init(dp->drm_dev, connector, exynos_dp_create_connector()
1041 DRM_ERROR("Failed to initialize connector with drm\n"); exynos_dp_create_connector()
1045 drm_connector_helper_add(connector, &exynos_dp_connector_helper_funcs); exynos_dp_create_connector()
1046 drm_connector_register(connector); exynos_dp_create_connector()
1047 drm_mode_connector_attach_encoder(connector, encoder); exynos_dp_create_connector()
1050 ret = drm_panel_attach(dp->panel, &dp->connector); exynos_dp_create_connector()
1322 DRM_ERROR("failed to create connector ret = %d\n", ret); exynos_dp_bind()
944 exynos_dp_detect( struct drm_connector *connector, bool force) exynos_dp_detect() argument
993 exynos_dp_best_encoder( struct drm_connector *connector) exynos_dp_best_encoder() argument
H A Dexynos_drm_dsi.c264 struct drm_connector connector; member in struct:exynos_dsi
296 #define connector_to_dsi(c) container_of(c, struct exynos_dsi, connector)
1383 if (dsi->connector.dev) exynos_dsi_host_attach()
1384 drm_helper_hpd_irq_event(dsi->connector.dev); exynos_dsi_host_attach()
1398 if (dsi->connector.dev) exynos_dsi_host_detach()
1399 drm_helper_hpd_irq_event(dsi->connector.dev); exynos_dsi_host_detach()
1576 exynos_dsi_detect(struct drm_connector *connector, bool force) exynos_dsi_detect() argument
1578 struct exynos_dsi *dsi = connector_to_dsi(connector); exynos_dsi_detect()
1583 drm_panel_attach(dsi->panel, &dsi->connector); exynos_dsi_detect()
1599 static void exynos_dsi_connector_destroy(struct drm_connector *connector) exynos_dsi_connector_destroy() argument
1601 drm_connector_unregister(connector); exynos_dsi_connector_destroy()
1602 drm_connector_cleanup(connector); exynos_dsi_connector_destroy()
1603 connector->dev = NULL; exynos_dsi_connector_destroy()
1616 static int exynos_dsi_get_modes(struct drm_connector *connector) exynos_dsi_get_modes() argument
1618 struct exynos_dsi *dsi = connector_to_dsi(connector); exynos_dsi_get_modes()
1627 exynos_dsi_best_encoder(struct drm_connector *connector) exynos_dsi_best_encoder() argument
1629 struct exynos_dsi *dsi = connector_to_dsi(connector); exynos_dsi_best_encoder()
1642 struct drm_connector *connector = &dsi->connector; exynos_dsi_create_connector() local
1645 connector->polled = DRM_CONNECTOR_POLL_HPD; exynos_dsi_create_connector()
1647 ret = drm_connector_init(encoder->dev, connector, exynos_dsi_create_connector()
1651 DRM_ERROR("Failed to initialize connector with drm\n"); exynos_dsi_create_connector()
1655 drm_connector_helper_add(connector, &exynos_dsi_connector_helper_funcs); exynos_dsi_create_connector()
1656 drm_connector_register(connector); exynos_dsi_create_connector()
1657 drm_mode_connector_attach_encoder(connector, encoder); exynos_dsi_create_connector()
1840 DRM_ERROR("failed to create connector ret = %d\n", ret); exynos_dsi_bind()
/linux-4.4.14/drivers/gpu/drm/msm/dsi/
H A Ddsi_manager.c135 static inline int dsi_mgr_connector_get_id(struct drm_connector *connector) dsi_mgr_connector_get_id() argument
137 struct dsi_connector *dsi_connector = to_dsi_connector(connector); dsi_mgr_connector_get_id()
148 struct drm_connector *connector, bool force) dsi_mgr_connector_detect()
150 int id = dsi_mgr_connector_get_id(connector); dsi_mgr_connector_detect()
153 struct msm_drm_private *priv = connector->dev->dev_private; dsi_mgr_connector_detect()
172 drm_object_attach_property(&connector->base, dsi_mgr_connector_detect()
173 connector->dev->mode_config.tile_property, 0); dsi_mgr_connector_detect()
199 static void dsi_mgr_connector_destroy(struct drm_connector *connector) dsi_mgr_connector_destroy() argument
202 drm_connector_unregister(connector); dsi_mgr_connector_destroy()
203 drm_connector_cleanup(connector); dsi_mgr_connector_destroy()
206 static void dsi_dual_connector_fix_modes(struct drm_connector *connector) dsi_dual_connector_fix_modes() argument
211 list_for_each_entry_safe(mode, m, &connector->probed_modes, head) { dsi_dual_connector_fix_modes()
222 struct drm_connector *connector, int id) dsi_dual_connector_tile_init()
228 if (connector->tile_group) { dsi_dual_connector_tile_init()
234 mode = list_first_entry(&connector->probed_modes, dsi_dual_connector_tile_init()
240 connector->tile_group = drm_mode_get_tile_group( dsi_dual_connector_tile_init()
241 connector->dev, topo_id); dsi_dual_connector_tile_init()
242 if (!connector->tile_group) dsi_dual_connector_tile_init()
243 connector->tile_group = drm_mode_create_tile_group( dsi_dual_connector_tile_init()
244 connector->dev, topo_id); dsi_dual_connector_tile_init()
245 if (!connector->tile_group) { dsi_dual_connector_tile_init()
250 connector->has_tile = true; dsi_dual_connector_tile_init()
251 connector->tile_is_single_monitor = true; dsi_dual_connector_tile_init()
254 connector->tile_h_size = mode->hdisplay; dsi_dual_connector_tile_init()
255 connector->tile_v_size = mode->vdisplay; dsi_dual_connector_tile_init()
258 connector->num_h_tile = 2; dsi_dual_connector_tile_init()
259 connector->num_v_tile = 1; dsi_dual_connector_tile_init()
261 connector->tile_v_loc = 0; dsi_dual_connector_tile_init()
262 connector->tile_h_loc = (id == DSI_RIGHT) ? 1 : 0; dsi_dual_connector_tile_init()
267 static int dsi_mgr_connector_get_modes(struct drm_connector *connector) dsi_mgr_connector_get_modes() argument
269 int id = dsi_mgr_connector_get_id(connector); dsi_mgr_connector_get_modes()
278 * panel should not attach to any connector. dsi_mgr_connector_get_modes()
279 * Only temporarily attach panel to the current connector here, dsi_mgr_connector_get_modes()
280 * to let panel set mode to this connector. dsi_mgr_connector_get_modes()
282 drm_panel_attach(panel, connector); dsi_mgr_connector_get_modes()
290 dsi_dual_connector_fix_modes(connector); dsi_mgr_connector_get_modes()
291 ret = dsi_dual_connector_tile_init(connector, id); dsi_mgr_connector_get_modes()
294 ret = drm_mode_connector_set_tile_property(connector); dsi_mgr_connector_get_modes()
305 static int dsi_mgr_connector_mode_valid(struct drm_connector *connector, dsi_mgr_connector_mode_valid() argument
308 int id = dsi_mgr_connector_get_id(connector); dsi_mgr_connector_mode_valid()
311 struct msm_drm_private *priv = connector->dev->dev_private; dsi_mgr_connector_mode_valid()
327 dsi_mgr_connector_best_encoder(struct drm_connector *connector) dsi_mgr_connector_best_encoder() argument
329 int id = dsi_mgr_connector_get_id(connector); dsi_mgr_connector_best_encoder()
533 /* initialize connector when we're connected to a drm_panel */ msm_dsi_manager_connector_init()
537 struct drm_connector *connector = NULL; msm_dsi_manager_connector_init() local
550 connector = &dsi_connector->base; msm_dsi_manager_connector_init()
552 ret = drm_connector_init(msm_dsi->dev, connector, msm_dsi_manager_connector_init()
557 drm_connector_helper_add(connector, &dsi_mgr_conn_helper_funcs); msm_dsi_manager_connector_init()
562 connector->polled = DRM_CONNECTOR_POLL_HPD; msm_dsi_manager_connector_init()
565 connector->interlace_allowed = 0; msm_dsi_manager_connector_init()
566 connector->doublescan_allowed = 0; msm_dsi_manager_connector_init()
568 ret = drm_connector_register(connector); msm_dsi_manager_connector_init()
573 drm_mode_connector_attach_encoder(connector, msm_dsi_manager_connector_init()
576 return connector; msm_dsi_manager_connector_init()
579 if (connector) msm_dsi_manager_connector_init()
580 dsi_mgr_connector_destroy(connector); msm_dsi_manager_connector_init()
624 struct drm_connector *connector; msm_dsi_manager_ext_bridge_init() local
649 * priv->connector[] list, mainly for msm_fbdev_init() msm_dsi_manager_ext_bridge_init()
653 list_for_each_entry(connector, connector_list, head) { list_for_each_entry()
657 if (connector->encoder_ids[i] == encoder->base.id) list_for_each_entry()
658 return connector; list_for_each_entry()
147 dsi_mgr_connector_detect( struct drm_connector *connector, bool force) dsi_mgr_connector_detect() argument
221 dsi_dual_connector_tile_init( struct drm_connector *connector, int id) dsi_dual_connector_tile_init() argument
H A Ddsi.c223 * external bridge. We create a connector only if we're connected to a msm_dsi_modeset_init()
225 * assume that the drm_bridge driver will create the connector itself. msm_dsi_modeset_init()
230 msm_dsi->connector = msm_dsi_modeset_init()
233 msm_dsi->connector = msm_dsi_modeset_init()
236 if (IS_ERR(msm_dsi->connector)) { msm_dsi_modeset_init()
237 ret = PTR_ERR(msm_dsi->connector); msm_dsi_modeset_init()
239 "failed to create dsi connector: %d\n", ret); msm_dsi_modeset_init()
240 msm_dsi->connector = NULL; msm_dsi_modeset_init()
245 priv->connectors[priv->num_connectors++] = msm_dsi->connector; msm_dsi_modeset_init()
250 /* bridge/connector are normally destroyed by drm: */ msm_dsi_modeset_init()
256 /* don't destroy connector if we didn't make it */ msm_dsi_modeset_init()
257 if (msm_dsi->connector && !msm_dsi->external_bridge) msm_dsi_modeset_init()
258 msm_dsi->connector->funcs->destroy(msm_dsi->connector); msm_dsi_modeset_init()
260 msm_dsi->connector = NULL; msm_dsi_modeset_init()
H A Ddsi.h57 /* connector managed by us when we're connected to a drm_panel */
58 struct drm_connector *connector; member in struct:msm_dsi
/linux-4.4.14/drivers/gpu/drm/imx/
H A Dparallel-display.c28 #define con_to_imxpd(x) container_of(x, struct imx_parallel_display, connector)
32 struct drm_connector connector; member in struct:imx_parallel_display
44 struct drm_connector *connector, bool force) imx_pd_connector_detect()
49 static int imx_pd_connector_get_modes(struct drm_connector *connector) imx_pd_connector_get_modes() argument
51 struct imx_parallel_display *imxpd = con_to_imxpd(connector); imx_pd_connector_get_modes()
57 struct drm_display_info *di = &connector->display_info; imx_pd_connector_get_modes()
67 drm_mode_connector_update_edid_property(connector, imxpd->edid); imx_pd_connector_get_modes()
68 num_modes = drm_add_edid_modes(connector, imxpd->edid); imx_pd_connector_get_modes()
72 struct drm_display_mode *mode = drm_mode_create(connector->dev); imx_pd_connector_get_modes()
78 drm_mode_probed_add(connector, mode); imx_pd_connector_get_modes()
83 struct drm_display_mode *mode = drm_mode_create(connector->dev); imx_pd_connector_get_modes()
90 drm_mode_probed_add(connector, mode); imx_pd_connector_get_modes()
98 struct drm_connector *connector) imx_pd_connector_best_encoder()
100 struct imx_parallel_display *imxpd = con_to_imxpd(connector); imx_pd_connector_best_encoder()
186 /* set the connector's dpms to OFF so that imx_pd_register()
191 imxpd->connector.dpms = DRM_MODE_DPMS_OFF; imx_pd_register()
197 drm_connector_helper_add(&imxpd->connector, imx_pd_register()
199 drm_connector_init(drm, &imxpd->connector, &imx_pd_connector_funcs, imx_pd_register()
203 drm_panel_attach(imxpd->panel, &imxpd->connector); imx_pd_register()
205 drm_mode_connector_attach_encoder(&imxpd->connector, &imxpd->encoder); imx_pd_register()
207 imxpd->connector.encoder = &imxpd->encoder; imx_pd_register()
274 imxpd->connector.funcs->destroy(&imxpd->connector); imx_pd_unbind()
43 imx_pd_connector_detect( struct drm_connector *connector, bool force) imx_pd_connector_detect() argument
97 imx_pd_connector_best_encoder( struct drm_connector *connector) imx_pd_connector_best_encoder() argument
H A Dimx-ldb.c50 #define con_to_imx_ldb_ch(x) container_of(x, struct imx_ldb_channel, connector)
57 struct drm_connector connector; member in struct:imx_ldb_channel
88 struct drm_connector *connector, bool force) imx_ldb_connector_detect()
93 static int imx_ldb_connector_get_modes(struct drm_connector *connector) imx_ldb_connector_get_modes() argument
95 struct imx_ldb_channel *imx_ldb_ch = con_to_imx_ldb_ch(connector); imx_ldb_connector_get_modes()
100 struct drm_display_info *di = &connector->display_info; imx_ldb_connector_get_modes()
110 drm_mode_connector_update_edid_property(connector, imx_ldb_connector_get_modes()
112 num_modes = drm_add_edid_modes(connector, imx_ldb_ch->edid); imx_ldb_connector_get_modes()
118 mode = drm_mode_create(connector->dev); imx_ldb_connector_get_modes()
123 drm_mode_probed_add(connector, mode); imx_ldb_connector_get_modes()
131 struct drm_connector *connector) imx_ldb_connector_best_encoder()
133 struct imx_ldb_channel *imx_ldb_ch = con_to_imx_ldb_ch(connector); imx_ldb_connector_best_encoder()
427 drm_connector_helper_add(&imx_ldb_ch->connector, imx_ldb_register()
429 drm_connector_init(drm, &imx_ldb_ch->connector, imx_ldb_register()
433 drm_panel_attach(imx_ldb_ch->panel, &imx_ldb_ch->connector); imx_ldb_register()
435 drm_mode_connector_attach_encoder(&imx_ldb_ch->connector, imx_ldb_register()
650 if (!channel->connector.funcs) imx_ldb_unbind()
653 channel->connector.funcs->destroy(&channel->connector); imx_ldb_unbind()
87 imx_ldb_connector_detect( struct drm_connector *connector, bool force) imx_ldb_connector_detect() argument
130 imx_ldb_connector_best_encoder( struct drm_connector *connector) imx_ldb_connector_best_encoder() argument
H A Dimx-tve.c100 #define con_to_tve(x) container_of(x, struct imx_tve, connector)
109 struct drm_connector connector; member in struct:imx_tve
224 struct drm_connector *connector, bool force) imx_tve_connector_detect()
229 static int imx_tve_connector_get_modes(struct drm_connector *connector) imx_tve_connector_get_modes() argument
231 struct imx_tve *tve = con_to_tve(connector); imx_tve_connector_get_modes()
238 edid = drm_get_edid(connector, tve->ddc); imx_tve_connector_get_modes()
240 drm_mode_connector_update_edid_property(connector, edid); imx_tve_connector_get_modes()
241 ret = drm_add_edid_modes(connector, edid); imx_tve_connector_get_modes()
248 static int imx_tve_connector_mode_valid(struct drm_connector *connector, imx_tve_connector_mode_valid() argument
251 struct imx_tve *tve = con_to_tve(connector); imx_tve_connector_mode_valid()
271 struct drm_connector *connector) imx_tve_connector_best_encoder()
273 struct imx_tve *tve = con_to_tve(connector); imx_tve_connector_best_encoder()
513 drm_connector_helper_add(&tve->connector, imx_tve_register()
515 drm_connector_init(drm, &tve->connector, &imx_tve_connector_funcs, imx_tve_register()
518 drm_mode_connector_attach_encoder(&tve->connector, &tve->encoder); imx_tve_register()
697 tve->connector.funcs->destroy(&tve->connector); imx_tve_unbind()
223 imx_tve_connector_detect( struct drm_connector *connector, bool force) imx_tve_connector_detect() argument
270 imx_tve_connector_best_encoder( struct drm_connector *connector) imx_tve_connector_best_encoder() argument
H A Dimx-drm-core.c203 void imx_drm_connector_destroy(struct drm_connector *connector) imx_drm_connector_destroy() argument
205 drm_connector_unregister(connector); imx_drm_connector_destroy()
206 drm_connector_cleanup(connector); imx_drm_connector_destroy()
237 struct drm_connector *connector; imx_drm_driver_load() local
291 * All components are now added, we can publish the connector sysfs imx_drm_driver_load()
295 list_for_each_entry(connector, &drm->mode_config.connector_list, head) { imx_drm_driver_load()
296 ret = drm_connector_register(connector); imx_drm_driver_load()
300 connector->base.id, imx_drm_driver_load()
301 connector->name, ret); imx_drm_driver_load()
H A Dimx-drm.h54 void imx_drm_connector_destroy(struct drm_connector *connector);
/linux-4.4.14/drivers/gpu/drm/bridge/
H A Dnxp-ptn3460.c40 struct drm_connector connector; member in struct:ptn3460_bridge
58 connector_to_ptn3460(struct drm_connector *connector) connector_to_ptn3460() argument
60 return container_of(connector, struct ptn3460_bridge, connector); connector_to_ptn3460()
198 static int ptn3460_get_modes(struct drm_connector *connector) ptn3460_get_modes() argument
205 ptn_bridge = connector_to_ptn3460(connector); ptn3460_get_modes()
208 return drm_add_edid_modes(connector, ptn_bridge->edid); ptn3460_get_modes()
227 drm_mode_connector_update_edid_property(connector, ptn_bridge->edid); ptn3460_get_modes()
229 num_modes = drm_add_edid_modes(connector, ptn_bridge->edid); ptn3460_get_modes()
238 static struct drm_encoder *ptn3460_best_encoder(struct drm_connector *connector) ptn3460_best_encoder() argument
240 struct ptn3460_bridge *ptn_bridge = connector_to_ptn3460(connector); ptn3460_best_encoder()
250 static enum drm_connector_status ptn3460_detect(struct drm_connector *connector, ptn3460_detect() argument
256 static void ptn3460_connector_destroy(struct drm_connector *connector) ptn3460_connector_destroy() argument
258 drm_connector_cleanup(connector); ptn3460_connector_destroy()
281 ptn_bridge->connector.polled = DRM_CONNECTOR_POLL_HPD; ptn3460_bridge_attach()
282 ret = drm_connector_init(bridge->dev, &ptn_bridge->connector, ptn3460_bridge_attach()
285 DRM_ERROR("Failed to initialize connector with drm\n"); ptn3460_bridge_attach()
288 drm_connector_helper_add(&ptn_bridge->connector, ptn3460_bridge_attach()
290 drm_connector_register(&ptn_bridge->connector); ptn3460_bridge_attach()
291 drm_mode_connector_attach_encoder(&ptn_bridge->connector, ptn3460_bridge_attach()
295 drm_panel_attach(ptn_bridge->panel, &ptn_bridge->connector); ptn3460_bridge_attach()
297 drm_helper_hpd_irq_event(ptn_bridge->connector.dev); ptn3460_bridge_attach()
H A Dparade-ps8622.c55 struct drm_connector connector; member in struct:ps8622_bridge
78 connector_to_ps8622(struct drm_connector *connector) connector_to_ps8622() argument
80 return container_of(connector, struct ps8622_bridge, connector); connector_to_ps8622()
468 static int ps8622_get_modes(struct drm_connector *connector) ps8622_get_modes() argument
472 ps8622 = connector_to_ps8622(connector); ps8622_get_modes()
477 static struct drm_encoder *ps8622_best_encoder(struct drm_connector *connector) ps8622_best_encoder() argument
481 ps8622 = connector_to_ps8622(connector); ps8622_best_encoder()
491 static enum drm_connector_status ps8622_detect(struct drm_connector *connector, ps8622_detect() argument
497 static void ps8622_connector_destroy(struct drm_connector *connector) ps8622_connector_destroy() argument
499 drm_connector_cleanup(connector); ps8622_connector_destroy()
522 ps8622->connector.polled = DRM_CONNECTOR_POLL_HPD; ps8622_attach()
523 ret = drm_connector_init(bridge->dev, &ps8622->connector, ps8622_attach()
526 DRM_ERROR("Failed to initialize connector with drm\n"); ps8622_attach()
529 drm_connector_helper_add(&ps8622->connector, ps8622_attach()
531 drm_connector_register(&ps8622->connector); ps8622_attach()
532 drm_mode_connector_attach_encoder(&ps8622->connector, ps8622_attach()
536 drm_panel_attach(ps8622->panel, &ps8622->connector); ps8622_attach()
538 drm_helper_hpd_irq_event(ps8622->connector.dev); ps8622_attach()
H A Ddw_hdmi.c104 struct drm_connector connector; member in struct:dw_hdmi
1428 dw_hdmi_connector_detect(struct drm_connector *connector, bool force) dw_hdmi_connector_detect() argument
1430 struct dw_hdmi *hdmi = container_of(connector, struct dw_hdmi, dw_hdmi_connector_detect()
1431 connector); dw_hdmi_connector_detect()
1443 static int dw_hdmi_connector_get_modes(struct drm_connector *connector) dw_hdmi_connector_get_modes() argument
1445 struct dw_hdmi *hdmi = container_of(connector, struct dw_hdmi, dw_hdmi_connector_get_modes()
1446 connector); dw_hdmi_connector_get_modes()
1453 edid = drm_get_edid(connector, hdmi->ddc); dw_hdmi_connector_get_modes()
1460 drm_mode_connector_update_edid_property(connector, edid); dw_hdmi_connector_get_modes()
1461 ret = drm_add_edid_modes(connector, edid); dw_hdmi_connector_get_modes()
1463 drm_edid_to_eld(connector, edid); dw_hdmi_connector_get_modes()
1473 dw_hdmi_connector_mode_valid(struct drm_connector *connector, dw_hdmi_connector_mode_valid() argument
1476 struct dw_hdmi *hdmi = container_of(connector, dw_hdmi_connector_mode_valid()
1477 struct dw_hdmi, connector); dw_hdmi_connector_mode_valid()
1485 mode_status = hdmi->plat_data->mode_valid(connector, mode); dw_hdmi_connector_mode_valid()
1491 *connector) dw_hdmi_connector_best_encoder()
1493 struct dw_hdmi *hdmi = container_of(connector, struct dw_hdmi, dw_hdmi_connector_best_encoder()
1494 connector); dw_hdmi_connector_best_encoder()
1499 static void dw_hdmi_connector_destroy(struct drm_connector *connector) dw_hdmi_connector_destroy() argument
1501 drm_connector_unregister(connector); dw_hdmi_connector_destroy()
1502 drm_connector_cleanup(connector); dw_hdmi_connector_destroy()
1505 static void dw_hdmi_connector_force(struct drm_connector *connector) dw_hdmi_connector_force() argument
1507 struct dw_hdmi *hdmi = container_of(connector, struct dw_hdmi, dw_hdmi_connector_force()
1508 connector); dw_hdmi_connector_force()
1511 hdmi->force = connector->force; dw_hdmi_connector_force()
1644 hdmi->connector.polled = DRM_CONNECTOR_POLL_HPD; dw_hdmi_register()
1646 drm_connector_helper_add(&hdmi->connector, dw_hdmi_register()
1648 drm_connector_init(drm, &hdmi->connector, &dw_hdmi_connector_funcs, dw_hdmi_register()
1651 hdmi->connector.encoder = encoder; dw_hdmi_register()
1653 drm_mode_connector_attach_encoder(&hdmi->connector, encoder); dw_hdmi_register()
1676 hdmi->connector.interlace_allowed = 1; dw_hdmi_bind()
1803 audio.eld = hdmi->connector.eld; dw_hdmi_bind()
1835 hdmi->connector.funcs->destroy(&hdmi->connector); dw_hdmi_unbind()
1490 dw_hdmi_connector_best_encoder(struct drm_connector *connector) dw_hdmi_connector_best_encoder() argument
/linux-4.4.14/drivers/gpu/drm/rockchip/
H A Drockchip_drm_drv.c135 struct drm_connector *connector; rockchip_drm_load() local
179 * All components are now added, we can publish the connector sysfs rockchip_drm_load()
183 list_for_each_entry(connector, &drm_dev->mode_config.connector_list, rockchip_drm_load()
185 ret = drm_connector_register(connector); rockchip_drm_load()
189 connector->base.id, rockchip_drm_load()
190 connector->name, ret); rockchip_drm_load()
310 struct drm_connector *connector; rockchip_drm_sys_suspend() local
316 list_for_each_entry(connector, &drm->mode_config.connector_list, head) { rockchip_drm_sys_suspend()
317 int old_dpms = connector->dpms; rockchip_drm_sys_suspend()
319 if (connector->funcs->dpms) rockchip_drm_sys_suspend()
320 connector->funcs->dpms(connector, DRM_MODE_DPMS_OFF); rockchip_drm_sys_suspend()
322 /* Set the old mode back to the connector for resume */ rockchip_drm_sys_suspend()
323 connector->dpms = old_dpms; rockchip_drm_sys_suspend()
333 struct drm_connector *connector; rockchip_drm_sys_resume() local
341 list_for_each_entry(connector, &drm->mode_config.connector_list, head) { rockchip_drm_sys_resume()
342 int desired_mode = connector->dpms; rockchip_drm_sys_resume()
345 * at suspend time, we save dpms to connector->dpms, rockchip_drm_sys_resume()
346 * restore the old_dpms, and at current time, the connector rockchip_drm_sys_resume()
349 connector->dpms = DRM_MODE_DPMS_OFF; rockchip_drm_sys_resume()
352 * If the connector has been disconnected during suspend, rockchip_drm_sys_resume()
357 status = connector->funcs->detect(connector, true); rockchip_drm_sys_resume()
359 connector->encoder = NULL; rockchip_drm_sys_resume()
360 connector->status = status; rockchip_drm_sys_resume()
365 if (connector->funcs->dpms) rockchip_drm_sys_resume()
366 connector->funcs->dpms(connector, desired_mode); rockchip_drm_sys_resume()
/linux-4.4.14/drivers/gpu/drm/nouveau/dispnv04/
H A Ddisp.c40 struct drm_connector *connector, *ct; nv04_display_create() local
66 connector = nouveau_connector_create(dev, dcbent->connector); nv04_display_create()
67 if (IS_ERR(connector)) nv04_display_create()
72 ret = nv04_dac_create(connector, dcbent); nv04_display_create()
76 ret = nv04_dfp_create(connector, dcbent); nv04_display_create()
80 ret = nv17_tv_create(connector, dcbent); nv04_display_create()
82 ret = nv04_tv_create(connector, dcbent); nv04_display_create()
93 list_for_each_entry_safe(connector, ct, nv04_display_create()
95 if (!connector->encoder_ids[0]) { nv04_display_create()
97 connector->name); nv04_display_create()
98 connector->funcs->destroy(connector); nv04_display_create()
H A Dtvnv17.c144 nv17_tv_detect(struct drm_encoder *encoder, struct drm_connector *connector) nv17_tv_detect() argument
185 drm_object_property_set_value(&connector->base, nv17_tv_detect()
201 struct drm_connector *connector) nv17_tv_get_ld_modes()
223 drm_mode_probed_add(connector, mode); nv17_tv_get_ld_modes()
231 struct drm_connector *connector) nv17_tv_get_hd_modes()
285 drm_mode_probed_add(connector, mode); nv17_tv_get_hd_modes()
293 struct drm_connector *connector) nv17_tv_get_modes()
298 return nv17_tv_get_hd_modes(encoder, connector); nv17_tv_get_modes()
300 return nv17_tv_get_ld_modes(encoder, connector); nv17_tv_get_modes()
635 struct drm_connector *connector) nv17_tv_create_resources()
661 drm_object_attach_property(&connector->base, nv17_tv_create_resources()
664 drm_object_attach_property(&connector->base, nv17_tv_create_resources()
667 drm_object_attach_property(&connector->base, nv17_tv_create_resources()
670 drm_object_attach_property(&connector->base, nv17_tv_create_resources()
673 drm_object_attach_property(&connector->base, nv17_tv_create_resources()
676 drm_object_attach_property(&connector->base, nv17_tv_create_resources()
679 drm_object_attach_property(&connector->base, nv17_tv_create_resources()
687 struct drm_connector *connector, nv17_tv_set_property()
729 if (connector->dpms != DRM_MODE_DPMS_OFF) nv17_tv_set_property()
748 drm_helper_probe_single_connector_modes(connector, 0, 0); nv17_tv_set_property()
795 nv17_tv_create(struct drm_connector *connector, struct dcb_output *entry) nv17_tv_create() argument
797 struct drm_device *dev = connector->dev; nv17_tv_create()
826 nv17_tv_create_resources(encoder, connector); nv17_tv_create()
827 drm_mode_connector_attach_encoder(connector, encoder); nv17_tv_create()
200 nv17_tv_get_ld_modes(struct drm_encoder *encoder, struct drm_connector *connector) nv17_tv_get_ld_modes() argument
230 nv17_tv_get_hd_modes(struct drm_encoder *encoder, struct drm_connector *connector) nv17_tv_get_hd_modes() argument
292 nv17_tv_get_modes(struct drm_encoder *encoder, struct drm_connector *connector) nv17_tv_get_modes() argument
634 nv17_tv_create_resources(struct drm_encoder *encoder, struct drm_connector *connector) nv17_tv_create_resources() argument
686 nv17_tv_set_property(struct drm_encoder *encoder, struct drm_connector *connector, struct drm_property *property, uint64_t val) nv17_tv_set_property() argument
H A Dtvnv04.c205 nv04_tv_create(struct drm_connector *connector, struct dcb_output *entry) nv04_tv_create() argument
209 struct drm_device *dev = connector->dev; nv04_tv_create()
243 /* Attach it to the specified connector. */ nv04_tv_create()
244 get_slave_funcs(encoder)->create_resources(encoder, connector); nv04_tv_create()
245 drm_mode_connector_attach_encoder(connector, encoder); nv04_tv_create()
H A Ddfp.c292 struct drm_connector *connector = &nv_connector->base; nv04_dfp_mode_set() local
418 encoder->crtc->primary->fb->depth > connector->display_info.bpc * 3)) { nv04_dfp_mode_set()
592 struct nouveau_connector *connector = nv04_dfp_restore() local
595 if (connector && connector->native_mode) nv04_dfp_restore()
598 connector->native_mode->clock); nv04_dfp_restore()
680 nv04_dfp_create(struct drm_connector *connector, struct dcb_output *entry) nv04_dfp_create() argument
709 drm_encoder_init(connector->dev, encoder, &nv04_dfp_funcs, type); nv04_dfp_create()
719 drm_mode_connector_attach_encoder(connector, encoder); nv04_dfp_create()
/linux-4.4.14/include/drm/
H A Ddrm_atomic.h57 struct drm_connector *connector);
58 int drm_atomic_connector_set_property(struct drm_connector *connector,
93 * drm_atomic_get_existing_connector_state - get connector state, if it exists
95 * @connector: connector to grab
97 * This function returns the connector state for the given connector,
98 * or NULL if the connector is not part of the global atomic state.
102 struct drm_connector *connector) drm_atomic_get_existing_connector_state()
104 int index = drm_connector_index(connector); drm_atomic_get_existing_connector_state()
146 #define for_each_connector_in_state(state, connector, connector_state, __i) \
149 ((connector) = (state)->connectors[__i], \
152 if (connector)
101 drm_atomic_get_existing_connector_state(struct drm_atomic_state *state, struct drm_connector *connector) drm_atomic_get_existing_connector_state() argument
H A Ddrm_crtc_helper.h120 * @save: save connector state
121 * @restore: restore connector state
122 * @mode_fixup: try to fixup proposed mode for this connector
157 struct drm_connector *connector);
170 * @get_modes: get mode list for this connector
171 * @mode_valid: is this mode valid on the given connector? (optional)
172 * @best_encoder: return the preferred encoder for this connector
178 int (*get_modes)(struct drm_connector *connector);
179 enum drm_mode_status (*mode_valid)(struct drm_connector *connector,
181 struct drm_encoder *(*best_encoder)(struct drm_connector *connector);
182 struct drm_encoder *(*atomic_best_encoder)(struct drm_connector *connector,
195 extern int drm_helper_connector_dpms(struct drm_connector *connector, int mode);
214 static inline void drm_connector_helper_add(struct drm_connector *connector, drm_connector_helper_add() argument
217 connector->helper_private = funcs; drm_connector_helper_add()
230 *connector, uint32_t maxX,
233 *connector,
H A Ddrm_crtc.h102 DRM_FORCE_ON_DIGITAL, /* for DVI-I use digital connector */
480 * struct drm_connector_state - mutable connector state
481 * @connector: backpointer to the connector
482 * @crtc: CRTC to connect connector to, NULL if disabled
487 struct drm_connector *connector; member in struct:drm_connector_state
499 * @save: save connector state
500 * @restore: restore connector state
501 * @reset: reset connector after state has been invalidated (e.g. resume)
502 * @detect: is this connector active?
503 * @fill_modes: fill mode list for this connector
504 * @set_property: property for this connector may need an update
506 * @force: notify the driver that the connector is forced on
507 * @atomic_duplicate_state: duplicate the atomic state for this connector
508 * @atomic_destroy_state: destroy an atomic state for this connector
509 * @atomic_set_property: set a property on an atomic state for this connector
511 * @atomic_get_property: get a property on an atomic state for this connector
519 int (*dpms)(struct drm_connector *connector, int mode);
520 void (*save)(struct drm_connector *connector);
521 void (*restore)(struct drm_connector *connector);
522 void (*reset)(struct drm_connector *connector);
524 /* Check to see if anything is attached to the connector.
526 * connector due to user request. @force can be used by the driver
530 enum drm_connector_status (*detect)(struct drm_connector *connector,
532 int (*fill_modes)(struct drm_connector *connector, uint32_t max_width, uint32_t max_height);
533 int (*set_property)(struct drm_connector *connector, struct drm_property *property,
535 void (*destroy)(struct drm_connector *connector);
536 void (*force)(struct drm_connector *connector);
539 struct drm_connector_state *(*atomic_duplicate_state)(struct drm_connector *connector);
540 void (*atomic_destroy_state)(struct drm_connector *connector,
542 int (*atomic_set_property)(struct drm_connector *connector,
546 int (*atomic_get_property)(struct drm_connector *connector,
581 * appropriate for a given connector or set of connectors.
599 /* should we poll this connector for connects and disconnects */
611 * struct drm_connector - central DRM connector control structure
617 * @name: connector name
619 * @connector_type_id: index into connector type enum
620 * @interlace_allowed: can this connector handle interlaced modes?
621 * @doublescan_allowed: can this connector handle doublescan?
622 * @stereo_allowed: can this connector handle stereo modes?
623 * @modes: modes available on this connector (from fill_modes() + user)
627 * @funcs: connector control functions
629 * @properties: property tracking for this connector
634 * @cmdline_mode: mode line parsed from the kernel cmdline for this connector
637 * @encoder_ids: valid encoders for this connector
638 * @encoder: encoder driving this connector, if any
648 * @debugfs_entry: debugfs directory for this connector
649 * @state: current atomic state for this connector
650 * @has_tile: is this connector connected to a tiled monitor
660 * Each connector may be connected to one or more CRTCs, or may be clonable by
661 * another connector if they can share a CRTC. Each connector also has a specific
679 struct list_head modes; /* list of modes on this connector */
703 /* forced on connector */
931 * @connectors: pointer to array of connector pointers
932 * @connector_states: pointer to array of connector states pointers
989 * Some global (i.e. not per-CRTC, connector, etc) mode setting functions that
1011 * @connection_mutex: ww mutex protecting connector state and routing
1020 * @connector_list: list of connector objects
1053 struct drm_modeset_lock connection_mutex; /* protects connector->encoder and encoder->crtc links */
1056 struct idr crtc_idr; /* use this idr for all IDs, fb, crtc, connector, modes - just makes life easier */
1057 struct idr tile_idr; /* use this idr for all IDs, fb, crtc, connector, modes - just makes life easier */
1209 struct drm_connector *connector,
1212 int drm_connector_register(struct drm_connector *connector);
1213 void drm_connector_unregister(struct drm_connector *connector);
1215 extern void drm_connector_cleanup(struct drm_connector *connector);
1216 extern unsigned int drm_connector_index(struct drm_connector *connector);
1293 extern struct edid *drm_get_edid(struct drm_connector *connector,
1296 extern int drm_add_edid_modes(struct drm_connector *connector, struct edid *edid);
1301 extern int drm_mode_connector_set_path_property(struct drm_connector *connector,
1303 int drm_mode_connector_set_tile_property(struct drm_connector *connector);
1304 extern int drm_mode_connector_update_edid_property(struct drm_connector *connector,
1391 extern int drm_mode_connector_attach_encoder(struct drm_connector *connector,
1453 extern int drm_add_modes_noedid(struct drm_connector *connector,
1455 extern void drm_set_preferred_mode(struct drm_connector *connector,
1558 * The connector hotadd/remove code currently grabs both locks when assert_drm_connector_list_read_locked()
1568 #define drm_for_each_connector(connector, dev) \
1570 connector = list_first_entry(&(dev)->mode_config.connector_list, \
1572 &connector->head != (&(dev)->mode_config.connector_list); \
1573 connector = list_next_entry(connector, head))
H A Ddrm_atomic_helper.h90 int drm_atomic_helper_connector_set_property(struct drm_connector *connector,
97 int drm_atomic_helper_connector_dpms(struct drm_connector *connector,
121 void drm_atomic_helper_connector_reset(struct drm_connector *connector);
123 __drm_atomic_helper_connector_duplicate_state(struct drm_connector *connector,
126 drm_atomic_helper_connector_duplicate_state(struct drm_connector *connector);
131 __drm_atomic_helper_connector_destroy_state(struct drm_connector *connector,
133 void drm_atomic_helper_connector_destroy_state(struct drm_connector *connector,
H A Ddrm_dp_mst_helper.h62 * @connector: DRM connector this port is connected to.
87 struct drm_connector *connector; member in struct:drm_dp_mst_port
375 /* create a connector for a port */
377 void (*register_connector)(struct drm_connector *connector);
379 struct drm_connector *connector);
400 * @cbs: callbacks for connector addition and destruction.
402 * @aux: aux channel for the DP connector.
404 * @conn_base_id: DRM connector ID this mgr is connected to.
414 * There should be one instance of this for every MST capable DP connector
478 enum drm_connector_status drm_dp_mst_detect_port(struct drm_connector *connector, struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port);
480 struct edid *drm_dp_mst_get_edid(struct drm_connector *connector, struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port);
H A Ddrm_encoder_slave.h46 * if the encoder is the currently selected one for the connector.
66 struct drm_connector *connector);
68 struct drm_connector *connector);
70 struct drm_connector *connector);
72 struct drm_connector *connector,
177 struct drm_connector *connector);
H A Ddrm_modes.h31 * Note on terminology: here, for brevity and convenience, we refer to connector
32 * control chips as 'CRTCs'. They can control any type of connector, VGA, LVDS,
34 * may span multiple monitors (and therefore multiple CRTC and connector
189 void drm_mode_probed_add(struct drm_connector *connector, struct drm_display_mode *mode);
235 void drm_mode_connector_list_update(struct drm_connector *connector, bool merge_type_bits);
240 struct drm_connector *connector,
H A Ddrm_fb_helper.h104 struct drm_connector *connector; member in struct:drm_fb_helper_connector
211 int drm_fb_helper_add_one_connector(struct drm_fb_helper *fb_helper, struct drm_connector *connector);
213 struct drm_connector *connector);
386 struct drm_connector *connector) drm_fb_helper_add_one_connector()
393 struct drm_connector *connector) drm_fb_helper_remove_one_connector()
385 drm_fb_helper_add_one_connector(struct drm_fb_helper *fb_helper, struct drm_connector *connector) drm_fb_helper_add_one_connector() argument
392 drm_fb_helper_remove_one_connector(struct drm_fb_helper *fb_helper, struct drm_connector *connector) drm_fb_helper_remove_one_connector() argument
H A Ddrm_edid.h325 void drm_edid_to_eld(struct drm_connector *connector, struct edid *edid);
328 int drm_av_sync_delay(struct drm_connector *connector,
331 int drm_load_edid_firmware(struct drm_connector *connector);
406 struct edid *drm_do_get_edid(struct drm_connector *connector,
/linux-4.4.14/drivers/gpu/drm/vc4/
H A Dvc4_hdmi.c44 struct drm_connector *connector; member in struct:vc4_hdmi
72 /* VC4 HDMI connector KMS struct */
76 /* Since the connector is attached to just the one encoder,
84 to_vc4_hdmi_connector(struct drm_connector *connector) to_vc4_hdmi_connector() argument
86 return container_of(connector, struct vc4_hdmi_connector, base); to_vc4_hdmi_connector()
162 vc4_hdmi_connector_detect(struct drm_connector *connector, bool force) vc4_hdmi_connector_detect() argument
164 struct drm_device *dev = connector->dev; vc4_hdmi_connector_detect()
180 static void vc4_hdmi_connector_destroy(struct drm_connector *connector) vc4_hdmi_connector_destroy() argument
182 drm_connector_unregister(connector); vc4_hdmi_connector_destroy()
183 drm_connector_cleanup(connector); vc4_hdmi_connector_destroy()
186 static int vc4_hdmi_connector_get_modes(struct drm_connector *connector) vc4_hdmi_connector_get_modes() argument
189 to_vc4_hdmi_connector(connector); vc4_hdmi_connector_get_modes()
192 struct drm_device *dev = connector->dev; vc4_hdmi_connector_get_modes()
197 edid = drm_get_edid(connector, vc4->hdmi->ddc); vc4_hdmi_connector_get_modes()
202 drm_mode_connector_update_edid_property(connector, edid); vc4_hdmi_connector_get_modes()
203 ret = drm_add_edid_modes(connector, edid); vc4_hdmi_connector_get_modes()
209 vc4_hdmi_connector_best_encoder(struct drm_connector *connector) vc4_hdmi_connector_best_encoder() argument
212 to_vc4_hdmi_connector(connector); vc4_hdmi_connector_best_encoder()
234 struct drm_connector *connector = NULL; vc4_hdmi_connector_init() local
244 connector = &hdmi_connector->base; vc4_hdmi_connector_init()
248 drm_connector_init(dev, connector, &vc4_hdmi_connector_funcs, vc4_hdmi_connector_init()
250 drm_connector_helper_add(connector, &vc4_hdmi_connector_helper_funcs); vc4_hdmi_connector_init()
252 connector->polled = (DRM_CONNECTOR_POLL_CONNECT | vc4_hdmi_connector_init()
255 connector->interlace_allowed = 0; vc4_hdmi_connector_init()
256 connector->doublescan_allowed = 0; vc4_hdmi_connector_init()
258 drm_mode_connector_attach_encoder(connector, encoder); vc4_hdmi_connector_init()
260 return connector; vc4_hdmi_connector_init()
263 if (connector) vc4_hdmi_connector_init()
264 vc4_hdmi_connector_destroy(connector); vc4_hdmi_connector_init()
525 hdmi->connector = vc4_hdmi_connector_init(drm, hdmi->encoder); vc4_hdmi_bind()
526 if (IS_ERR(hdmi->connector)) { vc4_hdmi_bind()
527 ret = PTR_ERR(hdmi->connector); vc4_hdmi_bind()
552 vc4_hdmi_connector_destroy(hdmi->connector); vc4_hdmi_unbind()
H A Dvc4_drv.c154 struct drm_connector *connector; vc4_drm_bind() local
189 list_for_each_entry(connector, &drm->mode_config.connector_list, head) { vc4_drm_bind()
190 ret = drm_connector_register(connector); vc4_drm_bind()
/linux-4.4.14/drivers/gpu/drm/shmobile/
H A Dshmob_drm_backlight.c23 struct shmob_drm_device *sdev = scon->connector.dev->dev_private; shmob_drm_backlight_update()
37 struct shmob_drm_device *sdev = scon->connector.dev->dev_private; shmob_drm_backlight_get_brightness()
61 struct shmob_drm_device *sdev = scon->connector.dev->dev_private; shmob_drm_backlight_init()
63 struct drm_connector *connector = &scon->connector; shmob_drm_backlight_init() local
64 struct drm_device *dev = connector->dev; shmob_drm_backlight_init()
H A Dshmob_drm_crtc.c540 struct shmob_drm_connector *scon = &sdev->connector; shmob_drm_encoder_dpms()
556 struct drm_connector *connector = &sdev->connector.connector; shmob_drm_encoder_mode_fixup() local
559 if (list_empty(&connector->modes)) { shmob_drm_encoder_mode_fixup()
565 panel_mode = list_first_entry(&connector->modes, shmob_drm_encoder_mode_fixup()
646 container_of(c, struct shmob_drm_connector, connector)
648 static int shmob_drm_connector_get_modes(struct drm_connector *connector) shmob_drm_connector_get_modes() argument
650 struct shmob_drm_device *sdev = connector->dev->dev_private; shmob_drm_connector_get_modes()
653 mode = drm_mode_create(connector->dev); shmob_drm_connector_get_modes()
670 drm_mode_probed_add(connector, mode); shmob_drm_connector_get_modes()
672 connector->display_info.width_mm = sdev->pdata->panel.width_mm; shmob_drm_connector_get_modes()
673 connector->display_info.height_mm = sdev->pdata->panel.height_mm; shmob_drm_connector_get_modes()
679 shmob_drm_connector_best_encoder(struct drm_connector *connector) shmob_drm_connector_best_encoder() argument
681 struct shmob_drm_connector *scon = to_shmob_connector(connector); shmob_drm_connector_best_encoder()
691 static void shmob_drm_connector_destroy(struct drm_connector *connector) shmob_drm_connector_destroy() argument
693 struct shmob_drm_connector *scon = to_shmob_connector(connector); shmob_drm_connector_destroy()
696 drm_connector_unregister(connector); shmob_drm_connector_destroy()
697 drm_connector_cleanup(connector); shmob_drm_connector_destroy()
701 shmob_drm_connector_detect(struct drm_connector *connector, bool force) shmob_drm_connector_detect() argument
716 struct drm_connector *connector = &sdev->connector.connector; shmob_drm_connector_create() local
719 sdev->connector.encoder = encoder; shmob_drm_connector_create()
721 connector->display_info.width_mm = sdev->pdata->panel.width_mm; shmob_drm_connector_create()
722 connector->display_info.height_mm = sdev->pdata->panel.height_mm; shmob_drm_connector_create()
724 ret = drm_connector_init(sdev->ddev, connector, &connector_funcs, shmob_drm_connector_create()
729 drm_connector_helper_add(connector, &connector_helper_funcs); shmob_drm_connector_create()
730 ret = drm_connector_register(connector); shmob_drm_connector_create()
734 ret = shmob_drm_backlight_init(&sdev->connector); shmob_drm_connector_create()
738 ret = drm_mode_connector_attach_encoder(connector, encoder); shmob_drm_connector_create()
742 connector->encoder = encoder; shmob_drm_connector_create()
744 drm_helper_connector_dpms(connector, DRM_MODE_DPMS_OFF); shmob_drm_connector_create()
745 drm_object_property_set_value(&connector->base, shmob_drm_connector_create()
751 shmob_drm_backlight_exit(&sdev->connector); shmob_drm_connector_create()
753 drm_connector_unregister(connector); shmob_drm_connector_create()
755 drm_connector_cleanup(connector); shmob_drm_connector_create()
H A Dshmob_drm_crtc.h42 struct drm_connector connector; member in struct:shmob_drm_connector
H A Dshmob_drm_drv.h44 struct shmob_drm_connector connector; member in struct:shmob_drm_device
/linux-4.4.14/drivers/gpu/drm/virtio/
H A Dvirtgpu_display.c306 static int virtio_gpu_conn_get_modes(struct drm_connector *connector) virtio_gpu_conn_get_modes() argument
309 drm_connector_to_virtio_gpu_output(connector); virtio_gpu_conn_get_modes()
315 count = drm_add_modes_noedid(connector, XRES_MAX, YRES_MAX); virtio_gpu_conn_get_modes()
320 drm_set_preferred_mode(connector, XRES_DEF, YRES_DEF); virtio_gpu_conn_get_modes()
323 mode = drm_cvt_mode(connector->dev, width, height, 60, virtio_gpu_conn_get_modes()
326 drm_mode_probed_add(connector, mode); virtio_gpu_conn_get_modes()
333 static int virtio_gpu_conn_mode_valid(struct drm_connector *connector, virtio_gpu_conn_mode_valid() argument
337 drm_connector_to_virtio_gpu_output(connector); virtio_gpu_conn_mode_valid()
356 virtio_gpu_best_encoder(struct drm_connector *connector) virtio_gpu_best_encoder() argument
359 drm_connector_to_virtio_gpu_output(connector); virtio_gpu_best_encoder()
377 static void virtio_gpu_conn_save(struct drm_connector *connector) virtio_gpu_conn_save() argument
382 static void virtio_gpu_conn_restore(struct drm_connector *connector) virtio_gpu_conn_restore() argument
388 struct drm_connector *connector, virtio_gpu_conn_detect()
392 drm_connector_to_virtio_gpu_output(connector); virtio_gpu_conn_detect()
400 static void virtio_gpu_conn_destroy(struct drm_connector *connector) virtio_gpu_conn_destroy() argument
403 drm_connector_to_virtio_gpu_output(connector); virtio_gpu_conn_destroy()
405 drm_connector_unregister(connector); virtio_gpu_conn_destroy()
406 drm_connector_cleanup(connector); virtio_gpu_conn_destroy()
430 struct drm_connector *connector = &output->conn; vgdev_output_init() local
451 drm_connector_init(dev, connector, &virtio_gpu_connector_funcs, vgdev_output_init()
453 drm_connector_helper_add(connector, &virtio_gpu_conn_helper_funcs); vgdev_output_init()
460 drm_mode_connector_attach_encoder(connector, encoder); vgdev_output_init()
461 drm_connector_register(connector); vgdev_output_init()
387 virtio_gpu_conn_detect( struct drm_connector *connector, bool force) virtio_gpu_conn_detect() argument
/linux-4.4.14/drivers/gpu/drm/vmwgfx/
H A Dvmwgfx_ldu.c37 container_of(x, struct vmw_legacy_display_unit, base.connector)
214 struct drm_connector *connector; vmw_ldu_crtc_set_config() local
239 set->connectors[0] != &ldu->base.connector) { vmw_ldu_crtc_set_config()
240 DRM_ERROR("connector doesn't match %p %p\n", vmw_ldu_crtc_set_config()
241 set->connectors[0], &ldu->base.connector); vmw_ldu_crtc_set_config()
255 connector = &ldu->base.connector; vmw_ldu_crtc_set_config()
261 connector->encoder = NULL; vmw_ldu_crtc_set_config()
286 connector->encoder = encoder; vmw_ldu_crtc_set_config()
322 * Legacy Display Unit connector functions
325 static void vmw_ldu_connector_destroy(struct drm_connector *connector) vmw_ldu_connector_destroy() argument
327 vmw_ldu_destroy(vmw_connector_to_ldu(connector)); vmw_ldu_connector_destroy()
344 struct drm_connector *connector; vmw_ldu_init() local
355 connector = &ldu->base.connector; vmw_ldu_init()
365 drm_connector_init(dev, connector, &vmw_legacy_connector_funcs, vmw_ldu_init()
367 connector->status = vmw_du_connector_detect(connector, true); vmw_ldu_init()
371 drm_mode_connector_attach_encoder(connector, encoder); vmw_ldu_init()
375 (void) drm_connector_register(connector); vmw_ldu_init()
381 drm_object_attach_property(&connector->base, vmw_ldu_init()
H A Dvmwgfx_kms.h144 * Since the SVGA hw doesn't have a concept of a crtc, encoder or connector
151 struct drm_connector connector; member in struct:vmw_display_unit
186 container_of(x, struct vmw_display_unit, connector)
202 int vmw_du_connector_dpms(struct drm_connector *connector, int mode);
203 void vmw_du_connector_save(struct drm_connector *connector);
204 void vmw_du_connector_restore(struct drm_connector *connector);
206 vmw_du_connector_detect(struct drm_connector *connector, bool force);
207 int vmw_du_connector_fill_modes(struct drm_connector *connector,
209 int vmw_du_connector_set_property(struct drm_connector *connector,
H A Dvmwgfx_stdu.c37 container_of(x, struct vmw_screen_target_display_unit, base.connector)
419 struct drm_connector *connector; vmw_stdu_crtc_set_config() local
441 set->connectors[0] != &stdu->base.connector) { vmw_stdu_crtc_set_config()
443 set->connectors[0], &stdu->base.connector); vmw_stdu_crtc_set_config()
449 connector = &stdu->base.connector; vmw_stdu_crtc_set_config()
473 connector->encoder = NULL; vmw_stdu_crtc_set_config()
604 connector->encoder = encoder; vmw_stdu_crtc_set_config()
1065 * vmwgfx cleans up crtc/encoder/connector all at the same time so technically
1088 * @connector: used to get the containing STDU
1090 * vmwgfx cleans up crtc/encoder/connector all at the same time so technically
1095 static void vmw_stdu_connector_destroy(struct drm_connector *connector) vmw_stdu_connector_destroy() argument
1097 vmw_stdu_destroy(vmw_connector_to_stdu(connector)); vmw_stdu_connector_destroy()
1122 * out encoder and connector, they are represented as part of the STDU as well.
1128 struct drm_connector *connector; vmw_stdu_init() local
1140 connector = &stdu->base.connector; vmw_stdu_init()
1147 drm_connector_init(dev, connector, &vmw_stdu_connector_funcs, vmw_stdu_init()
1149 connector->status = vmw_du_connector_detect(connector, false); vmw_stdu_init()
1153 drm_mode_connector_attach_encoder(connector, encoder); vmw_stdu_init()
1157 (void) drm_connector_register(connector); vmw_stdu_init()
1163 drm_object_attach_property(&connector->base, vmw_stdu_init()
H A Dvmwgfx_scrn.c37 container_of(x, struct vmw_screen_object_unit, base.connector)
294 struct drm_connector *connector; vmw_sou_crtc_set_config() local
320 set->connectors[0] != &sou->base.connector) { vmw_sou_crtc_set_config()
322 set->connectors[0], &sou->base.connector); vmw_sou_crtc_set_config()
337 connector = &sou->base.connector; vmw_sou_crtc_set_config()
347 connector->encoder = NULL; vmw_sou_crtc_set_config()
408 connector->encoder = NULL; vmw_sou_crtc_set_config()
420 connector->encoder = encoder; vmw_sou_crtc_set_config()
558 * Screen Object Display Unit connector functions
561 static void vmw_sou_connector_destroy(struct drm_connector *connector) vmw_sou_connector_destroy() argument
563 vmw_sou_destroy(vmw_connector_to_sou(connector)); vmw_sou_connector_destroy()
580 struct drm_connector *connector; vmw_sou_init() local
591 connector = &sou->base.connector; vmw_sou_init()
601 drm_connector_init(dev, connector, &vmw_sou_connector_funcs, vmw_sou_init()
603 connector->status = vmw_du_connector_detect(connector, true); vmw_sou_init()
607 drm_mode_connector_attach_encoder(connector, encoder); vmw_sou_init()
611 (void) drm_connector_register(connector); vmw_sou_init()
617 drm_object_attach_property(&connector->base, vmw_sou_init()
/linux-4.4.14/drivers/gpu/drm/bochs/
H A Dbochs_kms.c204 int bochs_connector_get_modes(struct drm_connector *connector) bochs_connector_get_modes() argument
208 count = drm_add_modes_noedid(connector, 8192, 8192); bochs_connector_get_modes()
209 drm_set_preferred_mode(connector, defx, defy); bochs_connector_get_modes()
213 static int bochs_connector_mode_valid(struct drm_connector *connector, bochs_connector_mode_valid() argument
217 container_of(connector, struct bochs_device, connector); bochs_connector_mode_valid()
233 bochs_connector_best_encoder(struct drm_connector *connector) bochs_connector_best_encoder() argument
235 int enc_id = connector->encoder_ids[0]; bochs_connector_best_encoder()
238 return drm_encoder_find(connector->dev, enc_id); bochs_connector_best_encoder()
243 *connector, bool force) bochs_connector_detect()
264 struct drm_connector *connector = &bochs->connector; bochs_connector_init() local
266 drm_connector_init(dev, connector, &bochs_connector_connector_funcs, bochs_connector_init()
268 drm_connector_helper_add(connector, bochs_connector_init()
270 drm_connector_register(connector); bochs_connector_init()
291 drm_mode_connector_attach_encoder(&bochs->connector, bochs_kms_init()
242 bochs_connector_detect(struct drm_connector *connector, bool force) bochs_connector_detect() argument
/linux-4.4.14/sound/pci/mixart/
H A Dmixart_hwdep.c146 struct mixart_enum_connector_resp *connector; mixart_enum_connectors() local
150 connector = kmalloc(sizeof(*connector), GFP_KERNEL); mixart_enum_connectors()
153 if (! connector || ! audio_info_req || ! audio_info) { mixart_enum_connectors()
167 err = snd_mixart_send_msg(mgr, &request, sizeof(*connector), connector); mixart_enum_connectors()
168 if((err < 0) || (connector->error_code) || (connector->uid_count > MIXART_MAX_PHYS_CONNECTORS)) { mixart_enum_connectors()
175 for(k=0; k < connector->uid_count; k++) { mixart_enum_connectors()
184 pipe->uid_right_connector = connector->uid[k]; /* odd */ mixart_enum_connectors()
186 pipe->uid_left_connector = connector->uid[k]; /* even */ mixart_enum_connectors()
189 /* dev_dbg(&mgr->pci->dev, "playback connector[%d].object_id = %x\n", k, connector->uid[k].object_id); */ mixart_enum_connectors()
191 /* TODO: really need send_msg MSG_CONNECTOR_GET_AUDIO_INFO for each connector ? perhaps for analog level caps ? */ mixart_enum_connectors()
193 request.uid = connector->uid[k]; mixart_enum_connectors()
211 err = snd_mixart_send_msg(mgr, &request, sizeof(*connector), connector); mixart_enum_connectors()
212 if((err < 0) || (connector->error_code) || (connector->uid_count > MIXART_MAX_PHYS_CONNECTORS)) { mixart_enum_connectors()
219 for(k=0; k < connector->uid_count; k++) { mixart_enum_connectors()
228 pipe->uid_right_connector = connector->uid[k]; /* odd */ mixart_enum_connectors()
230 pipe->uid_left_connector = connector->uid[k]; /* even */ mixart_enum_connectors()
233 /* dev_dbg(&mgr->pci->dev, "capture connector[%d].object_id = %x\n", k, connector->uid[k].object_id); */ mixart_enum_connectors()
235 /* TODO: really need send_msg MSG_CONNECTOR_GET_AUDIO_INFO for each connector ? perhaps for analog level caps ? */ mixart_enum_connectors()
237 request.uid = connector->uid[k]; mixart_enum_connectors()
252 kfree(connector); mixart_enum_connectors()
/linux-4.4.14/arch/arm/mach-pxa/include/mach/
H A Dh5000.h61 #define H5000_GPIO_COM_RXD (34) /* connected to cradle/cable connector */
62 #define H5000_GPIO_COM_CTS (35) /* connected to cradle/cable connector */
63 #define H5000_GPIO_COM_DCD (36) /* connected to cradle/cable connector */
64 #define H5000_GPIO_COM_DSR (37) /* connected to cradle/cable connector */
65 #define H5000_GPIO_COM_RI (38) /* connected to cradle/cable connector */
66 #define H5000_GPIO_COM_TXD (39) /* connected to cradle/cable connector */
67 #define H5000_GPIO_COM_DTR (40) /* connected to cradle/cable connector */
68 #define H5000_GPIO_COM_RTS (41) /* connected to cradle/cable connector */
/linux-4.4.14/drivers/gpu/drm/sti/
H A Dsti_dvo.c285 static int sti_dvo_connector_get_modes(struct drm_connector *connector) sti_dvo_connector_get_modes() argument
288 = to_sti_dvo_connector(connector); sti_dvo_connector_get_modes()
299 static int sti_dvo_connector_mode_valid(struct drm_connector *connector, sti_dvo_connector_mode_valid() argument
307 = to_sti_dvo_connector(connector); sti_dvo_connector_mode_valid()
323 struct drm_encoder *sti_dvo_best_encoder(struct drm_connector *connector) sti_dvo_best_encoder() argument
326 = to_sti_dvo_connector(connector); sti_dvo_best_encoder()
328 /* Best encoder is the one associated during connector creation */ sti_dvo_best_encoder()
340 sti_dvo_connector_detect(struct drm_connector *connector, bool force) sti_dvo_connector_detect() argument
343 = to_sti_dvo_connector(connector); sti_dvo_connector_detect()
352 if (!drm_panel_attach(dvo->panel, connector)) sti_dvo_connector_detect()
358 static void sti_dvo_connector_destroy(struct drm_connector *connector) sti_dvo_connector_destroy() argument
361 = to_sti_dvo_connector(connector); sti_dvo_connector_destroy()
363 drm_connector_unregister(connector); sti_dvo_connector_destroy()
364 drm_connector_cleanup(connector); sti_dvo_connector_destroy()
395 struct sti_dvo_connector *connector; sti_dvo_bind() local
407 connector = devm_kzalloc(dev, sizeof(*connector), GFP_KERNEL); sti_dvo_bind()
408 if (!connector) sti_dvo_bind()
411 connector->dvo = dvo; sti_dvo_bind()
434 connector->encoder = encoder; sti_dvo_bind()
437 drm_connector = (struct drm_connector *)connector; sti_dvo_bind()
452 DRM_ERROR("Failed to attach a connector to a encoder\n"); sti_dvo_bind()
H A Dsti_hdmi.c139 * @arg: connector structure
167 * @arg: connector structure
539 /* Copy the drm display mode in the connector local structure */ sti_hdmi_set_mode()
570 static int sti_hdmi_connector_get_modes(struct drm_connector *connector) sti_hdmi_connector_get_modes() argument
573 = to_sti_hdmi_connector(connector); sti_hdmi_connector_get_modes()
580 edid = drm_get_edid(connector, hdmi->ddc_adapt); sti_hdmi_connector_get_modes()
584 count = drm_add_edid_modes(connector, edid); sti_hdmi_connector_get_modes()
585 drm_mode_connector_update_edid_property(connector, edid); sti_hdmi_connector_get_modes()
597 static int sti_hdmi_connector_mode_valid(struct drm_connector *connector, sti_hdmi_connector_mode_valid() argument
605 = to_sti_hdmi_connector(connector); sti_hdmi_connector_mode_valid()
622 struct drm_encoder *sti_hdmi_best_encoder(struct drm_connector *connector) sti_hdmi_best_encoder() argument
625 = to_sti_hdmi_connector(connector); sti_hdmi_best_encoder()
627 /* Best encoder is the one associated during connector creation */ sti_hdmi_best_encoder()
640 sti_hdmi_connector_detect(struct drm_connector *connector, bool force) sti_hdmi_connector_detect() argument
643 = to_sti_hdmi_connector(connector); sti_hdmi_connector_detect()
657 static void sti_hdmi_connector_destroy(struct drm_connector *connector) sti_hdmi_connector_destroy() argument
660 = to_sti_hdmi_connector(connector); sti_hdmi_connector_destroy()
662 drm_connector_unregister(connector); sti_hdmi_connector_destroy()
663 drm_connector_cleanup(connector); sti_hdmi_connector_destroy()
694 struct sti_hdmi_connector *connector; sti_hdmi_bind() local
706 connector = devm_kzalloc(dev, sizeof(*connector), GFP_KERNEL); sti_hdmi_bind()
707 if (!connector) sti_hdmi_bind()
710 connector->hdmi = hdmi; sti_hdmi_bind()
721 connector->encoder = encoder; sti_hdmi_bind()
723 drm_connector = (struct drm_connector *)connector; sti_hdmi_bind()
738 DRM_ERROR("Failed to attach a connector to a encoder\n"); sti_hdmi_bind()
H A Dsti_hda.c520 static int sti_hda_connector_get_modes(struct drm_connector *connector) sti_hda_connector_get_modes() argument
525 = to_sti_hda_connector(connector); sti_hda_connector_get_modes()
542 drm_mode_probed_add(connector, mode); sti_hda_connector_get_modes()
546 drm_mode_sort(&connector->modes); sti_hda_connector_get_modes()
553 static int sti_hda_connector_mode_valid(struct drm_connector *connector, sti_hda_connector_mode_valid() argument
562 = to_sti_hda_connector(connector); sti_hda_connector_mode_valid()
583 struct drm_encoder *sti_hda_best_encoder(struct drm_connector *connector) sti_hda_best_encoder() argument
586 = to_sti_hda_connector(connector); sti_hda_best_encoder()
588 /* Best encoder is the one associated during connector creation */ sti_hda_best_encoder()
600 sti_hda_connector_detect(struct drm_connector *connector, bool force) sti_hda_connector_detect() argument
605 static void sti_hda_connector_destroy(struct drm_connector *connector) sti_hda_connector_destroy() argument
608 = to_sti_hda_connector(connector); sti_hda_connector_destroy()
610 drm_connector_unregister(connector); sti_hda_connector_destroy()
611 drm_connector_cleanup(connector); sti_hda_connector_destroy()
642 struct sti_hda_connector *connector; sti_hda_bind() local
654 connector = devm_kzalloc(dev, sizeof(*connector), GFP_KERNEL); sti_hda_bind()
655 if (!connector) sti_hda_bind()
658 connector->hda = hda; sti_hda_bind()
669 connector->encoder = encoder; sti_hda_bind()
671 drm_connector = (struct drm_connector *)connector; sti_hda_bind()
686 DRM_ERROR("Failed to attach a connector to a encoder\n"); sti_hda_bind()
/linux-4.4.14/drivers/gpu/drm/cirrus/
H A Dcirrus_mode.c499 static int cirrus_vga_get_modes(struct drm_connector *connector) cirrus_vga_get_modes() argument
505 count = drm_add_modes_noedid(connector, 1280, 1024); cirrus_vga_get_modes()
506 drm_set_preferred_mode(connector, 1024, 768); cirrus_vga_get_modes()
508 count = drm_add_modes_noedid(connector, 800, 600); cirrus_vga_get_modes()
509 drm_set_preferred_mode(connector, 800, 600); cirrus_vga_get_modes()
515 *connector) cirrus_connector_best_encoder()
517 int enc_id = connector->encoder_ids[0]; cirrus_connector_best_encoder()
520 return drm_encoder_find(connector->dev, enc_id); cirrus_connector_best_encoder()
525 *connector, bool force) cirrus_vga_detect()
530 static void cirrus_connector_destroy(struct drm_connector *connector) cirrus_connector_destroy() argument
532 drm_connector_cleanup(connector); cirrus_connector_destroy()
533 kfree(connector); cirrus_connector_destroy()
550 struct drm_connector *connector; cirrus_vga_init() local
557 connector = &cirrus_connector->base; cirrus_vga_init()
559 drm_connector_init(dev, connector, cirrus_vga_init()
562 drm_connector_helper_add(connector, &cirrus_vga_connector_helper_funcs); cirrus_vga_init()
564 drm_connector_register(connector); cirrus_vga_init()
565 return connector; cirrus_vga_init()
572 struct drm_connector *connector; cirrus_modeset_init() local
594 connector = cirrus_vga_init(cdev->dev); cirrus_modeset_init()
595 if (!connector) { cirrus_modeset_init()
600 drm_mode_connector_attach_encoder(connector, encoder); cirrus_modeset_init()
514 cirrus_connector_best_encoder(struct drm_connector *connector) cirrus_connector_best_encoder() argument
524 cirrus_vga_detect(struct drm_connector *connector, bool force) cirrus_vga_detect() argument
/linux-4.4.14/include/uapi/linux/
H A Dconnector.h2 * connector.h
28 * Process Events connector unique ids -- used for message routing
54 * Maximum connector's message size.
61 * must be registered in connector.h for in-kernel usage.
H A Dcn_proc.h2 * cn_proc.h - process events connector
25 * for events on the connector.
/linux-4.4.14/include/linux/platform_data/
H A Dleds-s3c24xx.h6 * S3C24XX - LEDs GPIO connector
H A Dusb-omap1.h15 * - "A" connector (rectagular)
17 * - "B" connector (squarish) or "Mini-B"
19 * - "Mini-AB" connector (very similar to Mini-B)
/linux-4.4.14/drivers/gpu/drm/i2c/
H A Dch7006_drv.c178 struct drm_connector *connector) ch7006_encoder_detect()
217 drm_object_property_set_value(&connector->base, ch7006_encoder_detect()
226 struct drm_connector *connector) ch7006_encoder_get_modes()
237 drm_mode_probed_add(connector, ch7006_encoder_get_modes()
247 struct drm_connector *connector) ch7006_encoder_create_resources()
257 drm_object_attach_property(&connector->base, conf->tv_select_subconnector_property, ch7006_encoder_create_resources()
259 drm_object_attach_property(&connector->base, conf->tv_subconnector_property, ch7006_encoder_create_resources()
261 drm_object_attach_property(&connector->base, conf->tv_left_margin_property, ch7006_encoder_create_resources()
263 drm_object_attach_property(&connector->base, conf->tv_bottom_margin_property, ch7006_encoder_create_resources()
265 drm_object_attach_property(&connector->base, conf->tv_mode_property, ch7006_encoder_create_resources()
267 drm_object_attach_property(&connector->base, conf->tv_brightness_property, ch7006_encoder_create_resources()
269 drm_object_attach_property(&connector->base, conf->tv_contrast_property, ch7006_encoder_create_resources()
271 drm_object_attach_property(&connector->base, conf->tv_flicker_reduction_property, ch7006_encoder_create_resources()
273 drm_object_attach_property(&connector->base, priv->scale_property, ch7006_encoder_create_resources()
280 struct drm_connector *connector, ch7006_encoder_set_property()
317 if (connector->dpms != DRM_MODE_DPMS_OFF) ch7006_encoder_set_property()
346 if (connector->dpms != DRM_MODE_DPMS_OFF) ch7006_encoder_set_property()
358 drm_helper_probe_single_connector_modes(connector, 0, 0); ch7006_encoder_set_property()
177 ch7006_encoder_detect(struct drm_encoder *encoder, struct drm_connector *connector) ch7006_encoder_detect() argument
225 ch7006_encoder_get_modes(struct drm_encoder *encoder, struct drm_connector *connector) ch7006_encoder_get_modes() argument
246 ch7006_encoder_create_resources(struct drm_encoder *encoder, struct drm_connector *connector) ch7006_encoder_create_resources() argument
279 ch7006_encoder_set_property(struct drm_encoder *encoder, struct drm_connector *connector, struct drm_property *property, uint64_t val) ch7006_encoder_set_property() argument
H A Dtda998x_drv.c54 struct drm_connector connector; member in struct:tda998x_priv
58 container_of(x, struct tda998x_priv, connector)
878 static int tda998x_connector_mode_valid(struct drm_connector *connector, tda998x_connector_mode_valid() argument
1083 tda998x_connector_detect(struct drm_connector *connector, bool force) tda998x_connector_detect() argument
1085 struct tda998x_priv *priv = conn_to_tda998x_priv(connector); tda998x_connector_detect()
1148 static int tda998x_connector_get_modes(struct drm_connector *connector) tda998x_connector_get_modes() argument
1150 struct tda998x_priv *priv = conn_to_tda998x_priv(connector); tda998x_connector_get_modes()
1165 edid = drm_do_get_edid(connector, read_edid_block, priv); tda998x_connector_get_modes()
1175 drm_mode_connector_update_edid_property(connector, edid); tda998x_connector_get_modes()
1176 n = drm_add_edid_modes(connector, edid); tda998x_connector_get_modes()
1184 struct drm_connector *connector) tda998x_encoder_set_polling()
1187 connector->polled = DRM_CONNECTOR_POLL_HPD; tda998x_encoder_set_polling()
1189 connector->polled = DRM_CONNECTOR_POLL_CONNECT | tda998x_encoder_set_polling()
1375 tda998x_connector_best_encoder(struct drm_connector *connector) tda998x_connector_best_encoder() argument
1377 struct tda998x_priv *priv = conn_to_tda998x_priv(connector); tda998x_connector_best_encoder()
1389 static void tda998x_connector_destroy(struct drm_connector *connector) tda998x_connector_destroy() argument
1391 drm_connector_unregister(connector); tda998x_connector_destroy()
1392 drm_connector_cleanup(connector); tda998x_connector_destroy()
1426 priv->connector.interlace_allowed = 1; tda998x_bind()
1436 tda998x_encoder_set_polling(priv, &priv->connector); tda998x_bind()
1444 drm_connector_helper_add(&priv->connector, tda998x_bind()
1446 ret = drm_connector_init(drm, &priv->connector, tda998x_bind()
1452 ret = drm_connector_register(&priv->connector); tda998x_bind()
1456 priv->connector.encoder = &priv->encoder; tda998x_bind()
1457 drm_mode_connector_attach_encoder(&priv->connector, &priv->encoder); tda998x_bind()
1462 drm_connector_cleanup(&priv->connector); tda998x_bind()
1475 drm_connector_cleanup(&priv->connector); tda998x_unbind()
1183 tda998x_encoder_set_polling(struct tda998x_priv *priv, struct drm_connector *connector) tda998x_encoder_set_polling() argument
H A Dadv7511.c234 struct drm_connector *connector, adv7511_set_config_csc()
258 if ((connector->display_info.color_formats & adv7511_set_config_csc()
562 struct drm_connector *connector) adv7511_get_modes()
579 edid = drm_do_get_edid(connector, adv7511_get_edid_block, adv7511); adv7511_get_modes()
591 drm_mode_connector_update_edid_property(connector, edid); adv7511_get_modes()
592 count = drm_add_edid_modes(connector, edid); adv7511_get_modes()
594 adv7511_set_config_csc(adv7511, connector, adv7511->rgb); adv7511_get_modes()
611 struct drm_connector *connector) adv7511_encoder_detect()
637 adv7511_get_modes(encoder, connector); adv7511_encoder_detect()
233 adv7511_set_config_csc(struct adv7511 *adv7511, struct drm_connector *connector, bool rgb) adv7511_set_config_csc() argument
561 adv7511_get_modes(struct drm_encoder *encoder, struct drm_connector *connector) adv7511_get_modes() argument
610 adv7511_encoder_detect(struct drm_encoder *encoder, struct drm_connector *connector) adv7511_encoder_detect() argument
H A Dsil164_drv.c299 struct drm_connector *connector) sil164_encoder_detect()
311 struct drm_connector *connector) sil164_encoder_get_modes()
318 struct drm_connector *connector) sil164_encoder_create_resources()
325 struct drm_connector *connector, sil164_encoder_set_property()
298 sil164_encoder_detect(struct drm_encoder *encoder, struct drm_connector *connector) sil164_encoder_detect() argument
310 sil164_encoder_get_modes(struct drm_encoder *encoder, struct drm_connector *connector) sil164_encoder_get_modes() argument
317 sil164_encoder_create_resources(struct drm_encoder *encoder, struct drm_connector *connector) sil164_encoder_create_resources() argument
324 sil164_encoder_set_property(struct drm_encoder *encoder, struct drm_connector *connector, struct drm_property *property, uint64_t val) sil164_encoder_set_property() argument
/linux-4.4.14/drivers/gpu/drm/qxl/
H A Dqxl_display.c107 struct drm_connector *connector; qxl_update_offset_props() local
111 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { qxl_update_offset_props()
112 output = drm_connector_to_qxl_output(connector); qxl_update_offset_props()
116 drm_object_property_set_value(&connector->base, qxl_update_offset_props()
118 drm_object_property_set_value(&connector->base, qxl_update_offset_props()
142 static int qxl_add_monitors_config_modes(struct drm_connector *connector, qxl_add_monitors_config_modes() argument
146 struct drm_device *dev = connector->dev; qxl_add_monitors_config_modes()
148 struct qxl_output *output = drm_connector_to_qxl_output(connector); qxl_add_monitors_config_modes()
162 drm_mode_probed_add(connector, mode); qxl_add_monitors_config_modes()
192 static int qxl_add_common_modes(struct drm_connector *connector, qxl_add_common_modes() argument
196 struct drm_device *dev = connector->dev; qxl_add_common_modes()
204 drm_mode_probed_add(connector, mode); qxl_add_common_modes()
820 static int qxl_conn_get_modes(struct drm_connector *connector) qxl_conn_get_modes() argument
823 struct qxl_device *qdev = connector->dev->dev_private; qxl_conn_get_modes()
831 ret = qxl_add_monitors_config_modes(connector, &pwidth, &pheight); qxl_conn_get_modes()
835 ret += qxl_add_common_modes(connector, pwidth, pheight); qxl_conn_get_modes()
839 static int qxl_conn_mode_valid(struct drm_connector *connector, qxl_conn_mode_valid() argument
842 struct drm_device *ddev = connector->dev; qxl_conn_mode_valid()
860 static struct drm_encoder *qxl_best_encoder(struct drm_connector *connector) qxl_best_encoder() argument
863 drm_connector_to_qxl_output(connector); qxl_best_encoder()
884 static void qxl_conn_save(struct drm_connector *connector) qxl_conn_save() argument
889 static void qxl_conn_restore(struct drm_connector *connector) qxl_conn_restore() argument
895 struct drm_connector *connector, qxl_conn_detect()
899 drm_connector_to_qxl_output(connector); qxl_conn_detect()
900 struct drm_device *ddev = connector->dev; qxl_conn_detect()
920 static int qxl_conn_set_property(struct drm_connector *connector, qxl_conn_set_property() argument
928 static void qxl_conn_destroy(struct drm_connector *connector) qxl_conn_destroy() argument
931 drm_connector_to_qxl_output(connector); qxl_conn_destroy()
933 drm_connector_unregister(connector); qxl_conn_destroy()
934 drm_connector_cleanup(connector); qxl_conn_destroy()
973 struct drm_connector *connector; qdev_output_init() local
982 connector = &qxl_output->base; qdev_output_init()
991 connector->polled = DRM_CONNECTOR_POLL_HPD; qdev_output_init()
996 drm_connector_helper_add(connector, &qxl_connector_helper_funcs); qdev_output_init()
998 drm_object_attach_property(&connector->base, qdev_output_init()
1000 drm_object_attach_property(&connector->base, qdev_output_init()
1002 drm_object_attach_property(&connector->base, qdev_output_init()
1004 drm_connector_register(connector); qdev_output_init()
894 qxl_conn_detect( struct drm_connector *connector, bool force) qxl_conn_detect() argument
/linux-4.4.14/drivers/gpu/drm/mgag200/
H A Dmgag200_mode.c1472 * the connector. It's responsible for ensuring that the digital
1548 static int mga_vga_get_modes(struct drm_connector *connector) mga_vga_get_modes() argument
1550 struct mga_connector *mga_connector = to_mga_connector(connector); mga_vga_get_modes()
1554 edid = drm_get_edid(connector, &mga_connector->i2c->adapter); mga_vga_get_modes()
1556 drm_mode_connector_update_edid_property(connector, edid); mga_vga_get_modes()
1557 ret = drm_add_edid_modes(connector, edid); mga_vga_get_modes()
1589 static int mga_vga_mode_valid(struct drm_connector *connector, mga_vga_mode_valid() argument
1592 struct drm_device *dev = connector->dev; mga_vga_mode_valid()
1649 if (connector->cmdline_mode.specified) { mga_vga_mode_valid()
1650 if (connector->cmdline_mode.bpp_specified) mga_vga_mode_valid()
1651 bpp = connector->cmdline_mode.bpp; mga_vga_mode_valid()
1655 if (connector->cmdline_mode.specified) mga_vga_mode_valid()
1656 connector->cmdline_mode.specified = false; mga_vga_mode_valid()
1664 *connector) mga_connector_best_encoder()
1666 int enc_id = connector->encoder_ids[0]; mga_connector_best_encoder()
1669 return drm_encoder_find(connector->dev, enc_id); mga_connector_best_encoder()
1674 *connector, bool force) mga_vga_detect()
1679 static void mga_connector_destroy(struct drm_connector *connector) mga_connector_destroy() argument
1681 struct mga_connector *mga_connector = to_mga_connector(connector); mga_connector_destroy()
1683 drm_connector_cleanup(connector); mga_connector_destroy()
1684 kfree(connector); mga_connector_destroy()
1702 struct drm_connector *connector; mga_vga_init() local
1709 connector = &mga_connector->base; mga_vga_init()
1711 drm_connector_init(dev, connector, mga_vga_init()
1714 drm_connector_helper_add(connector, &mga_vga_connector_helper_funcs); mga_vga_init()
1716 drm_connector_register(connector); mga_vga_init()
1722 return connector; mga_vga_init()
1729 struct drm_connector *connector; mgag200_modeset_init() local
1747 connector = mga_vga_init(mdev->dev); mgag200_modeset_init()
1748 if (!connector) { mgag200_modeset_init()
1753 drm_mode_connector_attach_encoder(connector, encoder); mgag200_modeset_init()
1663 mga_connector_best_encoder(struct drm_connector *connector) mga_connector_best_encoder() argument
1673 mga_vga_detect(struct drm_connector *connector, bool force) mga_vga_detect() argument
/linux-4.4.14/drivers/gpu/drm/nouveau/nvkm/engine/disp/
H A Dbase.c358 hpd = max(hpd, (u8)(dcbE.connector + 1)); nvkm_disp_ctor()
361 /* create connector objects based on the outputs we support */ nvkm_disp_ctor()
364 data = nvbios_connEp(bios, outp->info.connector, &ver, &hdr, nvkm_disp_ctor()
367 /* no bios connector data... */ nvkm_disp_ctor()
370 * considered to be on the same connector, any nvkm_disp_ctor()
372 * be put on its own connector nvkm_disp_ctor()
384 /* connector shared with another output path */ nvkm_disp_ctor()
392 i = outp->info.connector; nvkm_disp_ctor()
395 /* check that we haven't already created this connector */ nvkm_disp_ctor()
397 if (conn->index == outp->info.connector) { nvkm_disp_ctor()
/linux-4.4.14/drivers/gpu/drm/ast/
H A Dast_mode.c694 static struct drm_encoder *ast_best_single_encoder(struct drm_connector *connector) ast_best_single_encoder() argument
696 int enc_id = connector->encoder_ids[0]; ast_best_single_encoder()
699 return drm_encoder_find(connector->dev, enc_id); ast_best_single_encoder()
761 static int ast_get_modes(struct drm_connector *connector) ast_get_modes() argument
763 struct ast_connector *ast_connector = to_ast_connector(connector); ast_get_modes()
764 struct ast_private *ast = connector->dev->dev_private; ast_get_modes()
774 flags = ast_dp501_read_edid(connector->dev, (u8 *)edid); ast_get_modes()
776 ast->dp501_maxclk = ast_get_dp501_max_clk(connector->dev); ast_get_modes()
781 edid = drm_get_edid(connector, &ast_connector->i2c->adapter); ast_get_modes()
784 ret = drm_add_edid_modes(connector, edid); ast_get_modes()
792 static int ast_mode_valid(struct drm_connector *connector, ast_mode_valid() argument
795 struct ast_private *ast = connector->dev->dev_private; ast_mode_valid()
847 static void ast_connector_destroy(struct drm_connector *connector) ast_connector_destroy() argument
849 struct ast_connector *ast_connector = to_ast_connector(connector); ast_connector_destroy()
851 drm_connector_unregister(connector); ast_connector_destroy()
852 drm_connector_cleanup(connector); ast_connector_destroy()
853 kfree(connector); ast_connector_destroy()
857 ast_connector_detect(struct drm_connector *connector, bool force) ast_connector_detect() argument
878 struct drm_connector *connector; ast_connector_init() local
885 connector = &ast_connector->base; ast_connector_init()
886 drm_connector_init(dev, connector, &ast_connector_funcs, DRM_MODE_CONNECTOR_VGA); ast_connector_init()
888 drm_connector_helper_add(connector, &ast_connector_helper_funcs); ast_connector_init()
890 connector->interlace_allowed = 0; ast_connector_init()
891 connector->doublescan_allowed = 0; ast_connector_init()
893 drm_connector_register(connector); ast_connector_init()
895 connector->polled = DRM_CONNECTOR_POLL_CONNECT; ast_connector_init()
898 drm_mode_connector_attach_encoder(connector, encoder); ast_connector_init()
902 DRM_ERROR("failed to add ddc bus for connector\n"); ast_connector_init()
/linux-4.4.14/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/
H A Ddcb.h21 uint8_t connector; member in struct:dcb_output
/linux-4.4.14/include/linux/usb/
H A Dmusb.h13 /* The USB role is defined by the connector used on the board, so long as
18 MUSB_HOST, /* A or Mini-A connector */
19 MUSB_PERIPHERAL, /* B or Mini-B connector */
20 MUSB_OTG /* Mini-AB connector */
H A Dchipidea.h14 * struct ci_hdrc_cable - structure for external connector cable state tracking
/linux-4.4.14/arch/mips/include/asm/mach-cobalt/
H A Dirq.h22 * 15 - IDE1(no connector on board)
/linux-4.4.14/arch/arm/mach-omap2/
H A Dboard-rx51-video.c40 .name = "connector-analog-tv",
/linux-4.4.14/include/linux/
H A Dconnector.h2 * connector.h
31 #include <uapi/linux/connector.h>
H A Dextcon.h2 * External connector (extcon) class driver
36 /* USB external connector */
40 /* Charging external connector */
48 /* Jack external connector */
58 /* Display external connector */
64 /* Miscellaneous external connector */
74 * struct extcon_dev - An extcon device represents one external connector.
H A Dcn_proc.h2 * cn_proc.h - process events connector
/linux-4.4.14/drivers/gpu/drm/panel/
H A Dpanel-lg-lg4573.c214 struct drm_connector *connector = panel->connector; lg4573_get_modes() local
228 drm_mode_probed_add(connector, mode); lg4573_get_modes()
230 panel->connector->display_info.width_mm = 61; lg4573_get_modes()
231 panel->connector->display_info.height_mm = 103; lg4573_get_modes()
H A Dpanel-simple.c94 struct drm_connector *connector = panel->base.connector; panel_simple_get_fixed_modes() local
117 drm_mode_probed_add(connector, mode); panel_simple_get_fixed_modes()
133 drm_mode_probed_add(connector, mode); panel_simple_get_fixed_modes()
137 connector->display_info.bpc = panel->desc->bpc; panel_simple_get_fixed_modes()
138 connector->display_info.width_mm = panel->desc->size.width; panel_simple_get_fixed_modes()
139 connector->display_info.height_mm = panel->desc->size.height; panel_simple_get_fixed_modes()
141 drm_display_info_set_bus_formats(&connector->display_info, panel_simple_get_fixed_modes()
239 struct edid *edid = drm_get_edid(panel->connector, p->ddc); panel_simple_get_modes()
240 drm_mode_connector_update_edid_property(panel->connector, edid); panel_simple_get_modes()
242 num += drm_add_edid_modes(panel->connector, edid); panel_simple_get_modes()
H A Dpanel-samsung-ld9040.c265 struct drm_connector *connector = panel->connector; ld9040_get_modes() local
269 mode = drm_mode_create(connector->dev); ld9040_get_modes()
278 connector->display_info.width_mm = mode->width_mm; ld9040_get_modes()
279 connector->display_info.height_mm = mode->height_mm; ld9040_get_modes()
282 drm_mode_probed_add(connector, mode); ld9040_get_modes()
/linux-4.4.14/drivers/connector/
H A Dconnector.c2 * connector.c
28 #include <linux/connector.h>
38 MODULE_DESCRIPTION("Generic userspace <-> kernelspace connector.");
300 proc_create("connector", S_IRUGO, init_net.proc_net, &cn_file_ops); cn_init()
311 remove_proc_entry("connector", init_net.proc_net); cn_fini()
H A Dcn_proc.c2 * cn_proc.c - process events connector
29 #include <linux/connector.h>
333 * @data: message sent from userspace via the connector
379 * Adds the connector callback to the connector driver.
/linux-4.4.14/arch/arm/mach-integrator/
H A Dimpd1.c97 .connector = IMPD1_CTRL_DISP_VGA,
124 .connector = IMPD1_CTRL_DISP_VGA,
154 .connector = IMPD1_CTRL_DISP_LCD,
186 .connector = IMPD1_CTRL_DISP_LCD,
201 * Enable the relevant connector on the interface module.
206 fb->panel->connector | IMPD1_CTRL_DISP_ENABLE); impd1fb_clcd_enable()
/linux-4.4.14/drivers/tty/
H A Drocket.h88 #define MODEL_RP8SNI 0x0008 /* RP 8 port w/ DB78 SNI connector */
89 #define MODEL_RP16SNI 0x0009 /* RP 16 port w/ DB78 SNI connector */
/linux-4.4.14/drivers/hv/
H A Dhv_utils_transport.h21 #include <linux/connector.h>
/linux-4.4.14/drivers/media/dvb-frontends/
H A Dtda826x.h35 * @param has_loopthrough Set to 1 if the card has a loopthrough RF connector.
/linux-4.4.14/include/drm/bridge/
H A Ddw_hdmi.h55 enum drm_mode_status (*mode_valid)(struct drm_connector *connector,
/linux-4.4.14/include/linux/extcon/
H A Dextcon-gpio.h27 * @extcon_id: The unique id of specific external connector.
/linux-4.4.14/arch/sh/boards/mach-highlander/
H A Dirq-r7780mp.c30 /* external bus connector */
H A Dirq-r7785rp.c28 /* external bus connector */
/linux-4.4.14/arch/sh/drivers/pci/
H A Dfixups-sdk7786.c21 * (the horizontal edge connector) will disable slot 3 entirely.
/linux-4.4.14/drivers/staging/comedi/drivers/
H A Damplc_dio200.c90 * connector. (N.B. for other values, the counter channel's CLKn
91 * pin on the SK1 connector is an output!)
99 * the SK1 connector. This pin is shared by all three counter
114 * connector. (N.B. for other values, the counter channel's GATn
115 * pin on the SK1 connector is an output!)
/linux-4.4.14/drivers/gpu/drm/msm/mdp/mdp5/
H A Dmdp5_encoder.c129 struct drm_connector *connector; mdp5_encoder_mode_set() local
162 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { mdp5_encoder_mode_set()
163 if (connector->encoder == encoder) { mdp5_encoder_mode_set()
164 switch (connector->display_info.bpc) { mdp5_encoder_mode_set()
253 * the (connector) source of the vsync's gets disabled, mdp5_encoder_disable()
/linux-4.4.14/drivers/usb/core/
H A Dhub.h88 * @peer: related usb2 and usb3 ports (share the same connector)
91 * @location: opaque representation of platform connector location
/linux-4.4.14/Documentation/connector/
H A Dcn_test.c31 #include <linux/connector.h>
49 * connector user registration
H A Ducon.c42 #include <linux/connector.h>
47 /* Hopefully your userspace connector.h matches this kernel */
/linux-4.4.14/drivers/w1/
H A Dw1_netlink.h26 #include <linux/connector.h>
73 * The netlink connector data sequence is, struct nlmsghdr, struct cn_msg,
/linux-4.4.14/arch/avr32/boards/atstk1000/
H A Datstk1004.c127 /* USART 2/unused: expansion connector */ setup_board()
/linux-4.4.14/arch/arm/mach-davinci/
H A Dusb.c46 /* OTG requires a Mini-AB connector */
/linux-4.4.14/arch/arm/mach-ixp4xx/
H A Dgtwx5715-pci.c39 * Slot 0 isn't actually populated with a card connector but

Completed in 6037 milliseconds

123