Lines Matching refs:connector

53 nouveau_conn_native_mode(struct drm_connector *connector)  in nouveau_conn_native_mode()  argument
55 const struct drm_connector_helper_funcs *helper = connector->helper_private; in nouveau_conn_native_mode()
56 struct nouveau_drm *drm = nouveau_drm(connector->dev); in nouveau_conn_native_mode()
57 struct drm_device *dev = connector->dev; in nouveau_conn_native_mode()
61 list_for_each_entry(mode, &connector->probed_modes, head) { in nouveau_conn_native_mode()
63 if (helper->mode_valid(connector, mode) != MODE_OK || in nouveau_conn_native_mode()
98 nouveau_conn_atomic_get_property(struct drm_connector *connector, in nouveau_conn_atomic_get_property() argument
103 struct nouveau_display *disp = nouveau_display(connector->dev); in nouveau_conn_atomic_get_property()
104 struct drm_device *dev = connector->dev; in nouveau_conn_atomic_get_property()
129 nouveau_conn_atomic_set_property(struct drm_connector *connector, in nouveau_conn_atomic_set_property() argument
133 struct drm_device *dev = connector->dev; in nouveau_conn_atomic_set_property()
148 switch (connector->connector_type) { in nouveau_conn_atomic_set_property()
222 nouveau_conn_atomic_destroy_state(struct drm_connector *connector, in nouveau_conn_atomic_destroy_state() argument
231 nouveau_conn_atomic_duplicate_state(struct drm_connector *connector) in nouveau_conn_atomic_duplicate_state() argument
233 struct nouveau_conn_atom *armc = nouveau_conn_atom(connector->state); in nouveau_conn_atomic_duplicate_state()
237 __drm_atomic_helper_connector_duplicate_state(connector, &asyc->state); in nouveau_conn_atomic_duplicate_state()
246 nouveau_conn_reset(struct drm_connector *connector) in nouveau_conn_reset() argument
253 if (connector->state) in nouveau_conn_reset()
254 nouveau_conn_atomic_destroy_state(connector, connector->state); in nouveau_conn_reset()
255 __drm_atomic_helper_connector_reset(connector, &asyc->state); in nouveau_conn_reset()
263 if (nouveau_display(connector->dev)->disp.object.oclass < NV50_DISP) { in nouveau_conn_reset()
264 switch (connector->connector_type) { in nouveau_conn_reset()
276 nouveau_conn_attach_properties(struct drm_connector *connector) in nouveau_conn_attach_properties() argument
278 struct drm_device *dev = connector->dev; in nouveau_conn_attach_properties()
279 struct nouveau_conn_atom *armc = nouveau_conn_atom(connector->state); in nouveau_conn_attach_properties()
283 if (connector->connector_type == DRM_MODE_CONNECTOR_DVII) in nouveau_conn_attach_properties()
284 drm_object_attach_property(&connector->base, dev->mode_config. in nouveau_conn_attach_properties()
289 (connector->connector_type == DRM_MODE_CONNECTOR_DVID || in nouveau_conn_attach_properties()
290 connector->connector_type == DRM_MODE_CONNECTOR_DVII || in nouveau_conn_attach_properties()
291 connector->connector_type == DRM_MODE_CONNECTOR_HDMIA || in nouveau_conn_attach_properties()
292 connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort)) { in nouveau_conn_attach_properties()
293 drm_object_attach_property(&connector->base, in nouveau_conn_attach_properties()
296 drm_object_attach_property(&connector->base, in nouveau_conn_attach_properties()
298 drm_object_attach_property(&connector->base, in nouveau_conn_attach_properties()
304 drm_object_attach_property(&connector->base, in nouveau_conn_attach_properties()
308 drm_object_attach_property(&connector->base, in nouveau_conn_attach_properties()
313 switch (connector->connector_type) { in nouveau_conn_attach_properties()
321 drm_object_attach_property(&connector->base, dev->mode_config. in nouveau_conn_attach_properties()
328 switch (connector->connector_type) { in nouveau_conn_attach_properties()
334 drm_object_attach_property(&connector->base, in nouveau_conn_attach_properties()
339 drm_object_attach_property(&connector->base, in nouveau_conn_attach_properties()
364 find_encoder(struct drm_connector *connector, int type) in find_encoder() argument
370 drm_connector_for_each_possible_encoder(connector, enc, i) { in find_encoder()
396 nouveau_connector_destroy(struct drm_connector *connector) in nouveau_connector_destroy() argument
398 struct nouveau_connector *nv_connector = nouveau_connector(connector); in nouveau_connector_destroy()
401 drm_connector_unregister(connector); in nouveau_connector_destroy()
402 drm_connector_cleanup(connector); in nouveau_connector_destroy()
408 kfree(connector); in nouveau_connector_destroy()
412 nouveau_connector_ddc_detect(struct drm_connector *connector) in nouveau_connector_ddc_detect() argument
414 struct drm_device *dev = connector->dev; in nouveau_connector_ddc_detect()
420 drm_connector_for_each_possible_encoder(connector, encoder, i) { in nouveau_connector_ddc_detect()
457 nouveau_connector_of_detect(struct drm_connector *connector) in nouveau_connector_of_detect() argument
460 struct drm_device *dev = connector->dev; in nouveau_connector_of_detect()
461 struct nouveau_connector *nv_connector = nouveau_connector(connector); in nouveau_connector_of_detect()
466 !((nv_encoder = find_encoder(connector, DCB_OUTPUT_TMDS)) || in nouveau_connector_of_detect()
467 (nv_encoder = find_encoder(connector, DCB_OUTPUT_ANALOG)))) in nouveau_connector_of_detect()
487 nouveau_connector_set_encoder(struct drm_connector *connector, in nouveau_connector_set_encoder() argument
490 struct nouveau_connector *nv_connector = nouveau_connector(connector); in nouveau_connector_set_encoder()
491 struct nouveau_drm *drm = nouveau_drm(connector->dev); in nouveau_connector_set_encoder()
492 struct drm_device *dev = connector->dev; in nouveau_connector_set_encoder()
499 connector->interlace_allowed = true; in nouveau_connector_set_encoder()
500 connector->doublescan_allowed = true; in nouveau_connector_set_encoder()
504 connector->doublescan_allowed = false; in nouveau_connector_set_encoder()
505 connector->interlace_allowed = false; in nouveau_connector_set_encoder()
507 connector->doublescan_allowed = true; in nouveau_connector_set_encoder()
513 connector->interlace_allowed = false; in nouveau_connector_set_encoder()
515 connector->interlace_allowed = true; in nouveau_connector_set_encoder()
519 drm_object_property_set_value(&connector->base, in nouveau_connector_set_encoder()
528 nouveau_connector_detect(struct drm_connector *connector, bool force) in nouveau_connector_detect() argument
530 struct drm_device *dev = connector->dev; in nouveau_connector_detect()
532 struct nouveau_connector *nv_connector = nouveau_connector(connector); in nouveau_connector_detect()
542 drm_connector_update_edid_property(connector, NULL); in nouveau_connector_detect()
561 nv_encoder = nouveau_connector_ddc_detect(connector); in nouveau_connector_detect()
566 nv_connector->edid = drm_get_edid_switcheroo(connector, in nouveau_connector_detect()
569 nv_connector->edid = drm_get_edid(connector, i2c); in nouveau_connector_detect()
571 drm_connector_update_edid_property(connector, in nouveau_connector_detect()
575 connector->name); in nouveau_connector_detect()
586 nv_partner = find_encoder(connector, DCB_OUTPUT_ANALOG); in nouveau_connector_detect()
588 nv_partner = find_encoder(connector, DCB_OUTPUT_TMDS); in nouveau_connector_detect()
599 nv_encoder = find_encoder(connector, type); in nouveau_connector_detect()
602 nouveau_connector_set_encoder(connector, nv_encoder); in nouveau_connector_detect()
608 nv_encoder = nouveau_connector_of_detect(connector); in nouveau_connector_detect()
610 nouveau_connector_set_encoder(connector, nv_encoder); in nouveau_connector_detect()
616 nv_encoder = find_encoder(connector, DCB_OUTPUT_ANALOG); in nouveau_connector_detect()
618 nv_encoder = find_encoder(connector, DCB_OUTPUT_TV); in nouveau_connector_detect()
624 if (helper->detect(encoder, connector) == in nouveau_connector_detect()
626 nouveau_connector_set_encoder(connector, nv_encoder); in nouveau_connector_detect()
642 nouveau_connector_detect_lvds(struct drm_connector *connector, bool force) in nouveau_connector_detect_lvds() argument
644 struct drm_device *dev = connector->dev; in nouveau_connector_detect_lvds()
646 struct nouveau_connector *nv_connector = nouveau_connector(connector); in nouveau_connector_detect_lvds()
652 drm_connector_update_edid_property(connector, NULL); in nouveau_connector_detect_lvds()
657 nv_encoder = find_encoder(connector, DCB_OUTPUT_LVDS); in nouveau_connector_detect_lvds()
663 status = nouveau_connector_detect(connector, force); in nouveau_connector_detect_lvds()
678 if ((nv_connector->edid = nouveau_acpi_edid(dev, connector))) { in nouveau_connector_detect_lvds()
716 drm_connector_update_edid_property(connector, nv_connector->edid); in nouveau_connector_detect_lvds()
717 nouveau_connector_set_encoder(connector, nv_encoder); in nouveau_connector_detect_lvds()
722 nouveau_connector_force(struct drm_connector *connector) in nouveau_connector_force() argument
724 struct nouveau_drm *drm = nouveau_drm(connector->dev); in nouveau_connector_force()
725 struct nouveau_connector *nv_connector = nouveau_connector(connector); in nouveau_connector_force()
730 if (connector->force == DRM_FORCE_ON_DIGITAL) in nouveau_connector_force()
737 nv_encoder = find_encoder(connector, type); in nouveau_connector_force()
740 connector->name); in nouveau_connector_force()
741 connector->status = connector_status_disconnected; in nouveau_connector_force()
745 nouveau_connector_set_encoder(connector, nv_encoder); in nouveau_connector_force()
749 nouveau_connector_set_property(struct drm_connector *connector, in nouveau_connector_set_property() argument
752 struct nouveau_conn_atom *asyc = nouveau_conn_atom(connector->state); in nouveau_connector_set_property()
753 struct nouveau_connector *nv_connector = nouveau_connector(connector); in nouveau_connector_set_property()
758 ret = connector->funcs->atomic_set_property(&nv_connector->base, in nouveau_connector_set_property()
764 encoder, connector, property, value); in nouveau_connector_set_property()
771 if (connector->encoder && connector->encoder->crtc) { in nouveau_connector_set_property()
772 ret = drm_crtc_helper_set_mode(connector->encoder->crtc, in nouveau_connector_set_property()
773 &connector->encoder->crtc->mode, in nouveau_connector_set_property()
774 connector->encoder->crtc->x, in nouveau_connector_set_property()
775 connector->encoder->crtc->y, in nouveau_connector_set_property()
808 nouveau_connector_scaler_modes_add(struct drm_connector *connector) in nouveau_connector_scaler_modes_add() argument
810 struct nouveau_connector *nv_connector = nouveau_connector(connector); in nouveau_connector_scaler_modes_add()
812 struct drm_device *dev = connector->dev; in nouveau_connector_scaler_modes_add()
830 drm_mode_probed_add(connector, m); in nouveau_connector_scaler_modes_add()
841 nouveau_connector_detect_depth(struct drm_connector *connector) in nouveau_connector_detect_depth() argument
843 struct nouveau_drm *drm = nouveau_drm(connector->dev); in nouveau_connector_detect_depth()
844 struct nouveau_connector *nv_connector = nouveau_connector(connector); in nouveau_connector_detect_depth()
851 if (nv_connector->edid && connector->display_info.bpc) in nouveau_connector_detect_depth()
856 connector->display_info.bpc = 6; in nouveau_connector_detect_depth()
862 connector->display_info.bpc = 8; in nouveau_connector_detect_depth()
866 connector->display_info.bpc = 6; in nouveau_connector_detect_depth()
871 connector->display_info.bpc = 8; in nouveau_connector_detect_depth()
886 connector->display_info.bpc = 8; in nouveau_connector_detect_depth()
890 nouveau_connector_late_register(struct drm_connector *connector) in nouveau_connector_late_register() argument
894 ret = nouveau_backlight_init(connector); in nouveau_connector_late_register()
900 nouveau_connector_early_unregister(struct drm_connector *connector) in nouveau_connector_early_unregister() argument
902 nouveau_backlight_fini(connector); in nouveau_connector_early_unregister()
906 nouveau_connector_get_modes(struct drm_connector *connector) in nouveau_connector_get_modes() argument
908 struct drm_device *dev = connector->dev; in nouveau_connector_get_modes()
910 struct nouveau_connector *nv_connector = nouveau_connector(connector); in nouveau_connector_get_modes()
923 ret = drm_add_edid_modes(connector, nv_connector->edid); in nouveau_connector_get_modes()
937 if (connector->connector_type != DRM_MODE_CONNECTOR_LVDS) in nouveau_connector_get_modes()
938 nouveau_connector_detect_depth(connector); in nouveau_connector_get_modes()
945 nv_connector->native_mode = nouveau_conn_native_mode(connector); in nouveau_connector_get_modes()
950 drm_mode_probed_add(connector, mode); in nouveau_connector_get_modes()
958 if (connector->connector_type == DRM_MODE_CONNECTOR_LVDS) in nouveau_connector_get_modes()
959 nouveau_connector_detect_depth(connector); in nouveau_connector_get_modes()
962 ret = get_slave_funcs(encoder)->get_modes(encoder, connector); in nouveau_connector_get_modes()
967 ret += nouveau_connector_scaler_modes_add(connector); in nouveau_connector_get_modes()
973 get_tmds_link_bandwidth(struct drm_connector *connector) in get_tmds_link_bandwidth() argument
975 struct nouveau_connector *nv_connector = nouveau_connector(connector); in get_tmds_link_bandwidth()
977 struct nouveau_drm *drm = nouveau_drm(connector->dev); in get_tmds_link_bandwidth()
1020 nouveau_connector_mode_valid(struct drm_connector *connector, in nouveau_connector_mode_valid() argument
1023 struct nouveau_connector *nv_connector = nouveau_connector(connector); in nouveau_connector_mode_valid()
1040 max_clock = get_tmds_link_bandwidth(connector); in nouveau_connector_mode_valid()
1052 clock = clock * (connector->display_info.bpc * 3) / 10; in nouveau_connector_mode_valid()
1072 nouveau_connector_best_encoder(struct drm_connector *connector) in nouveau_connector_best_encoder() argument
1074 struct nouveau_connector *nv_connector = nouveau_connector(connector); in nouveau_connector_best_encoder()
1128 struct drm_connector *connector = &nv_connector->base; in nouveau_connector_hotplug() local
1129 struct nouveau_drm *drm = nouveau_drm(connector->dev); in nouveau_connector_hotplug()
1131 const char *name = connector->name; in nouveau_connector_hotplug()
1157 if ((nv_encoder = find_encoder(connector, DCB_OUTPUT_DP))) in nouveau_connector_hotplug()
1165 if ((nv_encoder = find_encoder(connector, DCB_OUTPUT_DP))) { in nouveau_connector_hotplug()
1170 drm_helper_hpd_irq_event(connector->dev); in nouveau_connector_hotplug()
1247 struct drm_connector *connector; in nouveau_connector_create() local
1250 int index = dcbe->connector; in nouveau_connector_create()
1255 nouveau_for_each_non_mst_connector_iter(connector, &conn_iter) { in nouveau_connector_create()
1256 nv_connector = nouveau_connector(connector); in nouveau_connector_create()
1259 return connector; in nouveau_connector_create()
1268 connector = &nv_connector->base; in nouveau_connector_create()
1311 if (dcbt->entry[i].connector == nv_connector->index) in nouveau_connector_create()
1351 nv_connector->aux.dev = connector->kdev; in nouveau_connector_create()
1374 connector->stereo_allowed = true; in nouveau_connector_create()
1377 connector->interlace_allowed = false; in nouveau_connector_create()
1378 connector->doublescan_allowed = false; in nouveau_connector_create()
1380 drm_connector_init(dev, connector, funcs, type); in nouveau_connector_create()
1381 drm_connector_helper_add(connector, &nouveau_connector_helper_funcs); in nouveau_connector_create()
1383 connector->funcs->reset(connector); in nouveau_connector_create()
1384 nouveau_conn_attach_properties(connector); in nouveau_connector_create()
1419 connector->name, dev->dev); in nouveau_connector_create()
1433 connector->polled = DRM_CONNECTOR_POLL_CONNECT; in nouveau_connector_create()
1435 connector->polled = DRM_CONNECTOR_POLL_HPD; in nouveau_connector_create()
1437 drm_connector_register(connector); in nouveau_connector_create()
1438 return connector; in nouveau_connector_create()