Lines Matching full: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()
62 if (helper->mode_valid(connector, mode) != MODE_OK || in nouveau_conn_native_mode()
97 nouveau_conn_atomic_get_property(struct drm_connector *connector, in nouveau_conn_atomic_get_property() argument
102 struct nouveau_display *disp = nouveau_display(connector->dev); in nouveau_conn_atomic_get_property()
103 struct drm_device *dev = connector->dev; in nouveau_conn_atomic_get_property()
128 nouveau_conn_atomic_set_property(struct drm_connector *connector, in nouveau_conn_atomic_set_property() argument
132 struct drm_device *dev = connector->dev; in nouveau_conn_atomic_set_property()
147 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
248 struct nouveau_connector *nv_connector = nouveau_connector(connector); in nouveau_conn_reset()
251 if (drm_drv_uses_atomic_modeset(connector->dev)) { in nouveau_conn_reset()
255 if (connector->state) in nouveau_conn_reset()
256 nouveau_conn_atomic_destroy_state(connector, in nouveau_conn_reset()
257 connector->state); in nouveau_conn_reset()
259 __drm_atomic_helper_connector_reset(connector, &asyc->state); in nouveau_conn_reset()
271 if (nouveau_display(connector->dev)->disp.object.oclass < NV50_DISP) { in nouveau_conn_reset()
272 switch (connector->connector_type) { in nouveau_conn_reset()
284 nouveau_conn_attach_properties(struct drm_connector *connector) in nouveau_conn_attach_properties() argument
286 struct drm_device *dev = connector->dev; in nouveau_conn_attach_properties()
288 struct nouveau_connector *nv_connector = nouveau_connector(connector); in nouveau_conn_attach_properties()
291 if (drm_drv_uses_atomic_modeset(connector->dev)) in nouveau_conn_attach_properties()
292 armc = nouveau_conn_atom(connector->state); in nouveau_conn_attach_properties()
297 if (connector->connector_type == DRM_MODE_CONNECTOR_DVII) in nouveau_conn_attach_properties()
298 drm_object_attach_property(&connector->base, dev->mode_config. in nouveau_conn_attach_properties()
303 (connector->connector_type == DRM_MODE_CONNECTOR_DVID || in nouveau_conn_attach_properties()
304 connector->connector_type == DRM_MODE_CONNECTOR_DVII || in nouveau_conn_attach_properties()
305 connector->connector_type == DRM_MODE_CONNECTOR_HDMIA || in nouveau_conn_attach_properties()
306 connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort)) { in nouveau_conn_attach_properties()
307 drm_object_attach_property(&connector->base, in nouveau_conn_attach_properties()
310 drm_object_attach_property(&connector->base, in nouveau_conn_attach_properties()
312 drm_object_attach_property(&connector->base, in nouveau_conn_attach_properties()
318 drm_object_attach_property(&connector->base, in nouveau_conn_attach_properties()
322 drm_object_attach_property(&connector->base, in nouveau_conn_attach_properties()
327 switch (connector->connector_type) { in nouveau_conn_attach_properties()
335 drm_object_attach_property(&connector->base, dev->mode_config. in nouveau_conn_attach_properties()
342 switch (connector->connector_type) { in nouveau_conn_attach_properties()
348 drm_object_attach_property(&connector->base, in nouveau_conn_attach_properties()
353 drm_object_attach_property(&connector->base, in nouveau_conn_attach_properties()
378 find_encoder(struct drm_connector *connector, int type) in find_encoder() argument
383 drm_connector_for_each_possible_encoder(connector, enc) { in find_encoder()
395 nouveau_connector_destroy(struct drm_connector *connector) in nouveau_connector_destroy() argument
397 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()
406 kfree(connector); in nouveau_connector_destroy()
410 nouveau_connector_ddc_detect(struct drm_connector *connector) in nouveau_connector_ddc_detect() argument
412 struct drm_device *dev = connector->dev; in nouveau_connector_ddc_detect()
414 struct nouveau_connector *conn = nouveau_connector(connector); in nouveau_connector_ddc_detect()
420 drm_connector_for_each_possible_encoder(connector, encoder) { in nouveau_connector_ddc_detect()
473 nouveau_connector_of_detect(struct drm_connector *connector) in nouveau_connector_of_detect() argument
476 struct drm_device *dev = connector->dev; in nouveau_connector_of_detect()
477 struct nouveau_connector *nv_connector = nouveau_connector(connector); in nouveau_connector_of_detect()
483 !((nv_encoder = find_encoder(connector, DCB_OUTPUT_TMDS)) || in nouveau_connector_of_detect()
484 (nv_encoder = find_encoder(connector, DCB_OUTPUT_ANALOG)))) in nouveau_connector_of_detect()
503 nouveau_connector_set_encoder(struct drm_connector *connector, in nouveau_connector_set_encoder() argument
506 struct nouveau_connector *nv_connector = nouveau_connector(connector); in nouveau_connector_set_encoder()
507 struct nouveau_drm *drm = nouveau_drm(connector->dev); in nouveau_connector_set_encoder()
508 struct drm_device *dev = connector->dev; in nouveau_connector_set_encoder()
517 connector->interlace_allowed = in nouveau_connector_set_encoder()
520 connector->interlace_allowed = in nouveau_connector_set_encoder()
522 connector->doublescan_allowed = true; in nouveau_connector_set_encoder()
526 connector->doublescan_allowed = false; in nouveau_connector_set_encoder()
527 connector->interlace_allowed = false; in nouveau_connector_set_encoder()
529 connector->doublescan_allowed = true; in nouveau_connector_set_encoder()
535 connector->interlace_allowed = false; in nouveau_connector_set_encoder()
537 connector->interlace_allowed = true; in nouveau_connector_set_encoder()
541 drm_object_property_set_value(&connector->base, in nouveau_connector_set_encoder()
563 nouveau_connector_detect(struct drm_connector *connector, bool force) in nouveau_connector_detect() argument
565 struct drm_device *dev = connector->dev; in nouveau_connector_detect()
567 struct nouveau_connector *nv_connector = nouveau_connector(connector); in nouveau_connector_detect()
591 nv_encoder = nouveau_connector_ddc_detect(connector); in nouveau_connector_detect()
598 new_edid = drm_get_edid_switcheroo(connector, nv_encoder->i2c); in nouveau_connector_detect()
600 new_edid = drm_get_edid(connector, nv_encoder->i2c); in nouveau_connector_detect()
610 connector->name); in nouveau_connector_detect()
621 nv_partner = find_encoder(connector, DCB_OUTPUT_ANALOG); in nouveau_connector_detect()
623 nv_partner = find_encoder(connector, DCB_OUTPUT_TMDS); in nouveau_connector_detect()
634 nv_encoder = find_encoder(connector, type); in nouveau_connector_detect()
637 nouveau_connector_set_encoder(connector, nv_encoder); in nouveau_connector_detect()
648 nv_encoder = nouveau_connector_of_detect(connector); in nouveau_connector_detect()
650 nouveau_connector_set_encoder(connector, nv_encoder); in nouveau_connector_detect()
656 nv_encoder = find_encoder(connector, DCB_OUTPUT_ANALOG); in nouveau_connector_detect()
658 nv_encoder = find_encoder(connector, DCB_OUTPUT_TV); in nouveau_connector_detect()
664 if (helper->detect(encoder, connector) == in nouveau_connector_detect()
666 nouveau_connector_set_encoder(connector, nv_encoder); in nouveau_connector_detect()
683 nouveau_connector_detect_lvds(struct drm_connector *connector, bool force) in nouveau_connector_detect_lvds() argument
685 struct drm_device *dev = connector->dev; in nouveau_connector_detect_lvds()
687 struct nouveau_connector *nv_connector = nouveau_connector(connector); in nouveau_connector_detect_lvds()
692 nv_encoder = find_encoder(connector, DCB_OUTPUT_LVDS); in nouveau_connector_detect_lvds()
698 status = nouveau_connector_detect(connector, force); in nouveau_connector_detect_lvds()
715 edid = nouveau_acpi_edid(dev, connector); in nouveau_connector_detect_lvds()
754 nouveau_connector_set_encoder(connector, nv_encoder); in nouveau_connector_detect_lvds()
759 nouveau_connector_force(struct drm_connector *connector) in nouveau_connector_force() argument
761 struct nouveau_drm *drm = nouveau_drm(connector->dev); in nouveau_connector_force()
762 struct nouveau_connector *nv_connector = nouveau_connector(connector); in nouveau_connector_force()
767 if (connector->force == DRM_FORCE_ON_DIGITAL) in nouveau_connector_force()
774 nv_encoder = find_encoder(connector, type); in nouveau_connector_force()
777 connector->name); in nouveau_connector_force()
781 nouveau_connector_set_encoder(connector, nv_encoder); in nouveau_connector_force()
785 nouveau_connector_set_property(struct drm_connector *connector, in nouveau_connector_set_property() argument
788 struct nouveau_connector *nv_connector = nouveau_connector(connector); in nouveau_connector_set_property()
794 ret = connector->funcs->atomic_set_property(&nv_connector->base, in nouveau_connector_set_property()
800 encoder, connector, property, value); in nouveau_connector_set_property()
807 if (connector->encoder && connector->encoder->crtc) { in nouveau_connector_set_property()
808 ret = drm_crtc_helper_set_mode(connector->encoder->crtc, in nouveau_connector_set_property()
809 &connector->encoder->crtc->mode, in nouveau_connector_set_property()
810 connector->encoder->crtc->x, in nouveau_connector_set_property()
811 connector->encoder->crtc->y, in nouveau_connector_set_property()
844 nouveau_connector_scaler_modes_add(struct drm_connector *connector) in nouveau_connector_scaler_modes_add() argument
846 struct nouveau_connector *nv_connector = nouveau_connector(connector); in nouveau_connector_scaler_modes_add()
848 struct drm_device *dev = connector->dev; in nouveau_connector_scaler_modes_add()
866 drm_mode_probed_add(connector, m); in nouveau_connector_scaler_modes_add()
877 nouveau_connector_detect_depth(struct drm_connector *connector) in nouveau_connector_detect_depth() argument
879 struct nouveau_drm *drm = nouveau_drm(connector->dev); in nouveau_connector_detect_depth()
880 struct nouveau_connector *nv_connector = nouveau_connector(connector); in nouveau_connector_detect_depth()
887 if (nv_connector->edid && connector->display_info.bpc) in nouveau_connector_detect_depth()
892 connector->display_info.bpc = 6; in nouveau_connector_detect_depth()
898 connector->display_info.bpc = 8; in nouveau_connector_detect_depth()
902 connector->display_info.bpc = 6; in nouveau_connector_detect_depth()
907 connector->display_info.bpc = 8; in nouveau_connector_detect_depth()
922 connector->display_info.bpc = 8; in nouveau_connector_detect_depth()
926 nouveau_connector_late_register(struct drm_connector *connector) in nouveau_connector_late_register() argument
930 ret = nouveau_backlight_init(connector); in nouveau_connector_late_register()
934 if (connector->connector_type == DRM_MODE_CONNECTOR_eDP || in nouveau_connector_late_register()
935 connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort) { in nouveau_connector_late_register()
936 ret = drm_dp_aux_register(&nouveau_connector(connector)->aux); in nouveau_connector_late_register()
943 nouveau_backlight_fini(connector); in nouveau_connector_late_register()
948 nouveau_connector_early_unregister(struct drm_connector *connector) in nouveau_connector_early_unregister() argument
950 if (connector->connector_type == DRM_MODE_CONNECTOR_eDP || in nouveau_connector_early_unregister()
951 connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort) in nouveau_connector_early_unregister()
952 drm_dp_aux_unregister(&nouveau_connector(connector)->aux); in nouveau_connector_early_unregister()
954 nouveau_backlight_fini(connector); in nouveau_connector_early_unregister()
958 nouveau_connector_get_modes(struct drm_connector *connector) in nouveau_connector_get_modes() argument
960 struct drm_device *dev = connector->dev; in nouveau_connector_get_modes()
962 struct nouveau_connector *nv_connector = nouveau_connector(connector); in nouveau_connector_get_modes()
975 ret = drm_add_edid_modes(connector, nv_connector->edid); in nouveau_connector_get_modes()
989 if (connector->connector_type != DRM_MODE_CONNECTOR_LVDS) in nouveau_connector_get_modes()
990 nouveau_connector_detect_depth(connector); in nouveau_connector_get_modes()
997 nv_connector->native_mode = nouveau_conn_native_mode(connector); in nouveau_connector_get_modes()
1005 drm_mode_probed_add(connector, mode); in nouveau_connector_get_modes()
1013 if (connector->connector_type == DRM_MODE_CONNECTOR_LVDS && nv_connector->native_mode) in nouveau_connector_get_modes()
1014 nouveau_connector_detect_depth(connector); in nouveau_connector_get_modes()
1017 ret = get_slave_funcs(encoder)->get_modes(encoder, connector); in nouveau_connector_get_modes()
1022 ret += nouveau_connector_scaler_modes_add(connector); in nouveau_connector_get_modes()
1028 get_tmds_link_bandwidth(struct drm_connector *connector) in get_tmds_link_bandwidth() argument
1030 struct nouveau_connector *nv_connector = nouveau_connector(connector); in get_tmds_link_bandwidth()
1032 struct nouveau_drm *drm = nouveau_drm(connector->dev); in get_tmds_link_bandwidth()
1075 nouveau_connector_mode_valid(struct drm_connector *connector, in nouveau_connector_mode_valid() argument
1078 struct nouveau_connector *nv_connector = nouveau_connector(connector); in nouveau_connector_mode_valid()
1094 max_clock = get_tmds_link_bandwidth(connector); in nouveau_connector_mode_valid()
1122 nouveau_connector_best_encoder(struct drm_connector *connector) in nouveau_connector_best_encoder() argument
1124 struct nouveau_connector *nv_connector = nouveau_connector(connector); in nouveau_connector_best_encoder()
1133 nouveau_connector_atomic_check(struct drm_connector *connector, struct drm_atomic_state *state) in nouveau_connector_atomic_check() argument
1135 struct nouveau_connector *nv_conn = nouveau_connector(connector); in nouveau_connector_atomic_check()
1137 drm_atomic_get_new_connector_state(state, connector); in nouveau_connector_atomic_check()
1284 struct drm_connector *connector; in nouveau_connector_create() local
1290 nouveau_for_each_non_mst_connector_iter(connector, &conn_iter) { in nouveau_connector_create()
1291 nv_connector = nouveau_connector(connector); in nouveau_connector_create()
1294 return connector; in nouveau_connector_create()
1303 connector = &nv_connector->base; in nouveau_connector_create()
1338 /* attempt to parse vbios connector type and hotplug gpio */ in nouveau_connector_create()
1342 NV_WARN(drm, "unknown connector type %02x\n", in nouveau_connector_create()
1348 /* no vbios data, or an unknown dcb connector type - attempt to in nouveau_connector_create()
1358 if (dcbt->entry[i].connector == nv_connector->index) in nouveau_connector_create()
1382 drm_connector_init(dev, connector, &nouveau_connector_funcs_lvds, type); in nouveau_connector_create()
1384 drm_connector_init(dev, connector, &nouveau_connector_funcs, type); in nouveau_connector_create()
1398 nv_connector->aux.dev = connector->kdev; in nouveau_connector_create()
1401 nv_connector->aux.name = connector->name; in nouveau_connector_create()
1413 connector->stereo_allowed = true; in nouveau_connector_create()
1416 connector->interlace_allowed = false; in nouveau_connector_create()
1417 connector->doublescan_allowed = false; in nouveau_connector_create()
1419 drm_connector_helper_add(connector, &nouveau_connector_helper_funcs); in nouveau_connector_create()
1420 connector->polled = DRM_CONNECTOR_POLL_CONNECT; in nouveau_connector_create()
1428 connector->polled = DRM_CONNECTOR_POLL_HPD; in nouveau_connector_create()
1442 connector->funcs->reset(connector); in nouveau_connector_create()
1443 nouveau_conn_attach_properties(connector); in nouveau_connector_create()
1479 drm_dp_cec_register_connector(&nv_connector->aux, connector); in nouveau_connector_create()
1483 drm_connector_register(connector); in nouveau_connector_create()
1484 return connector; in nouveau_connector_create()
1487 drm_connector_cleanup(connector); in nouveau_connector_create()