Lines Matching refs:nv_connector
248 struct nouveau_connector *nv_connector = nouveau_connector(connector); in nouveau_conn_reset() local
261 asyc = &nv_connector->properties_state; in nouveau_conn_reset()
288 struct nouveau_connector *nv_connector = nouveau_connector(connector); in nouveau_conn_attach_properties() local
294 armc = &nv_connector->properties_state; in nouveau_conn_attach_properties()
397 struct nouveau_connector *nv_connector = nouveau_connector(connector); in nouveau_connector_destroy() local
398 nvif_event_dtor(&nv_connector->irq); in nouveau_connector_destroy()
399 nvif_event_dtor(&nv_connector->hpd); in nouveau_connector_destroy()
400 kfree(nv_connector->edid); in nouveau_connector_destroy()
403 if (nv_connector->aux.transfer) { in nouveau_connector_destroy()
404 drm_dp_cec_unregister_connector(&nv_connector->aux); in nouveau_connector_destroy()
405 kfree(nv_connector->aux.name); in nouveau_connector_destroy()
407 nvif_conn_dtor(&nv_connector->conn); in nouveau_connector_destroy()
463 struct nouveau_connector *nv_connector = nouveau_connector(connector); in nouveau_connector_of_detect() local
479 nv_connector->edid = in nouveau_connector_of_detect()
493 struct nouveau_connector *nv_connector = nouveau_connector(connector); in nouveau_connector_set_encoder() local
498 if (nv_connector->detected_encoder == nv_encoder) in nouveau_connector_set_encoder()
500 nv_connector->detected_encoder = nv_encoder; in nouveau_connector_set_encoder()
527 if (nv_connector->type == DCB_CONNECTOR_DVI_I) { in nouveau_connector_set_encoder()
537 nouveau_connector_set_edid(struct nouveau_connector *nv_connector, in nouveau_connector_set_edid() argument
540 if (nv_connector->edid != edid) { in nouveau_connector_set_edid()
541 struct edid *old_edid = nv_connector->edid; in nouveau_connector_set_edid()
543 drm_connector_update_edid_property(&nv_connector->base, edid); in nouveau_connector_set_edid()
545 nv_connector->edid = edid; in nouveau_connector_set_edid()
554 struct nouveau_connector *nv_connector = nouveau_connector(connector); in nouveau_connector_detect() local
574 nouveau_connector_set_edid(nv_connector, NULL); in nouveau_connector_detect()
585 nv_connector->type == DCB_CONNECTOR_LVDS) in nouveau_connector_detect()
590 nouveau_connector_set_edid(nv_connector, new_edid); in nouveau_connector_detect()
591 if (!nv_connector->edid) { in nouveau_connector_detect()
612 if (nv_connector->edid->input & DRM_EDID_INPUT_DIGITAL) in nouveau_connector_detect()
624 drm_dp_cec_set_edid(&nv_connector->aux, nv_connector->edid); in nouveau_connector_detect()
628 nouveau_connector_set_edid(nv_connector, NULL); in nouveau_connector_detect()
656 if (!nv_connector->edid) in nouveau_connector_detect()
657 drm_dp_cec_unset_edid(&nv_connector->aux); in nouveau_connector_detect()
670 struct nouveau_connector *nv_connector = nouveau_connector(connector); in nouveau_connector_detect_lvds() local
683 edid = nv_connector->edid; in nouveau_connector_detect_lvds()
735 nouveau_connector_set_edid(nv_connector, edid); in nouveau_connector_detect_lvds()
745 struct nouveau_connector *nv_connector = nouveau_connector(connector); in nouveau_connector_force() local
749 if (nv_connector->type == DCB_CONNECTOR_DVI_I) { in nouveau_connector_force()
772 struct nouveau_connector *nv_connector = nouveau_connector(connector); in nouveau_connector_set_property() local
773 struct nouveau_encoder *nv_encoder = nv_connector->detected_encoder; in nouveau_connector_set_property()
774 struct nouveau_conn_atom *asyc = &nv_connector->properties_state; in nouveau_connector_set_property()
778 ret = connector->funcs->atomic_set_property(&nv_connector->base, in nouveau_connector_set_property()
788 nv_connector->scaling_mode = asyc->scaler.mode; in nouveau_connector_set_property()
789 nv_connector->dithering_mode = asyc->dither.mode; in nouveau_connector_set_property()
830 struct nouveau_connector *nv_connector = nouveau_connector(connector); in nouveau_connector_scaler_modes_add() local
831 struct drm_display_mode *native = nv_connector->native_mode, *m; in nouveau_connector_scaler_modes_add()
864 struct nouveau_connector *nv_connector = nouveau_connector(connector); in nouveau_connector_detect_depth() local
865 struct nouveau_encoder *nv_encoder = nv_connector->detected_encoder; in nouveau_connector_detect_depth()
867 struct drm_display_mode *mode = nv_connector->native_mode; in nouveau_connector_detect_depth()
871 if (nv_connector->edid && connector->display_info.bpc) in nouveau_connector_detect_depth()
875 if (nv_connector->type == DCB_CONNECTOR_eDP) { in nouveau_connector_detect_depth()
898 if (nv_connector->edid && in nouveau_connector_detect_depth()
899 nv_connector->type == DCB_CONNECTOR_LVDS_SPWG) in nouveau_connector_detect_depth()
900 duallink = ((u8 *)nv_connector->edid)[121] == 2; in nouveau_connector_detect_depth()
946 struct nouveau_connector *nv_connector = nouveau_connector(connector); in nouveau_connector_get_modes() local
947 struct nouveau_encoder *nv_encoder = nv_connector->detected_encoder; in nouveau_connector_get_modes()
953 if (nv_connector->native_mode) { in nouveau_connector_get_modes()
954 drm_mode_destroy(dev, nv_connector->native_mode); in nouveau_connector_get_modes()
955 nv_connector->native_mode = NULL; in nouveau_connector_get_modes()
958 if (nv_connector->edid) in nouveau_connector_get_modes()
959 ret = drm_add_edid_modes(connector, nv_connector->edid); in nouveau_connector_get_modes()
967 nv_connector->native_mode = drm_mode_duplicate(dev, &mode); in nouveau_connector_get_modes()
980 if (!nv_connector->native_mode) in nouveau_connector_get_modes()
981 nv_connector->native_mode = nouveau_conn_native_mode(connector); in nouveau_connector_get_modes()
982 if (ret == 0 && nv_connector->native_mode) { in nouveau_connector_get_modes()
985 mode = drm_mode_duplicate(dev, nv_connector->native_mode); in nouveau_connector_get_modes()
994 if (connector->connector_type == DRM_MODE_CONNECTOR_LVDS && nv_connector->native_mode) in nouveau_connector_get_modes()
1000 if (nv_connector->type == DCB_CONNECTOR_LVDS || in nouveau_connector_get_modes()
1001 nv_connector->type == DCB_CONNECTOR_LVDS_SPWG || in nouveau_connector_get_modes()
1002 nv_connector->type == DCB_CONNECTOR_eDP) in nouveau_connector_get_modes()
1011 struct nouveau_connector *nv_connector = nouveau_connector(connector); in get_tmds_link_bandwidth() local
1012 struct nouveau_encoder *nv_encoder = nv_connector->detected_encoder; in get_tmds_link_bandwidth()
1014 struct dcb_output *dcb = nv_connector->detected_encoder->dcb; in get_tmds_link_bandwidth()
1019 if (drm_detect_hdmi_monitor(nv_connector->edid)) { in get_tmds_link_bandwidth()
1020 info = &nv_connector->base.display_info; in get_tmds_link_bandwidth()
1059 struct nouveau_connector *nv_connector = nouveau_connector(connector); in nouveau_connector_mode_valid() local
1060 struct nouveau_encoder *nv_encoder = nv_connector->detected_encoder; in nouveau_connector_mode_valid()
1066 if (nv_connector->native_mode && in nouveau_connector_mode_valid()
1067 (mode->hdisplay > nv_connector->native_mode->hdisplay || in nouveau_connector_mode_valid()
1068 mode->vdisplay > nv_connector->native_mode->vdisplay)) in nouveau_connector_mode_valid()
1105 struct nouveau_connector *nv_connector = nouveau_connector(connector); in nouveau_connector_best_encoder() local
1107 if (nv_connector->detected_encoder) in nouveau_connector_best_encoder()
1108 return to_drm_encoder(nv_connector->detected_encoder); in nouveau_connector_best_encoder()
1169 nouveau_connector_hpd(struct nouveau_connector *nv_connector, u64 bits) in nouveau_connector_hpd() argument
1171 struct nouveau_drm *drm = nouveau_drm(nv_connector->base.dev); in nouveau_connector_hpd()
1172 u32 mask = drm_connector_mask(&nv_connector->base); in nouveau_connector_hpd()
1177 nv_connector->hpd_pending |= bits; in nouveau_connector_hpd()
1187 struct nouveau_connector *nv_connector = container_of(event, typeof(*nv_connector), irq); in nouveau_connector_irq() local
1189 schedule_work(&nv_connector->irq_work); in nouveau_connector_irq()
1196 struct nouveau_connector *nv_connector = container_of(event, typeof(*nv_connector), hpd); in nouveau_connector_hotplug() local
1199 nouveau_connector_hpd(nv_connector, rep->types); in nouveau_connector_hotplug()
1206 struct nouveau_connector *nv_connector = in nouveau_connector_aux_xfer() local
1207 container_of(obj, typeof(*nv_connector), aux); in nouveau_connector_aux_xfer()
1213 nv_encoder = find_encoder(&nv_connector->base, DCB_OUTPUT_DP); in nouveau_connector_aux_xfer()
1272 struct nouveau_connector *nv_connector = NULL; in nouveau_connector_create() local
1282 nv_connector = nouveau_connector(connector); in nouveau_connector_create()
1283 if (nv_connector->index == index) { in nouveau_connector_create()
1290 nv_connector = kzalloc(sizeof(*nv_connector), GFP_KERNEL); in nouveau_connector_create()
1291 if (!nv_connector) in nouveau_connector_create()
1294 connector = &nv_connector->base; in nouveau_connector_create()
1295 nv_connector->index = index; in nouveau_connector_create()
1296 INIT_WORK(&nv_connector->irq_work, nouveau_dp_irq); in nouveau_connector_create()
1299 nv_connector->dcb = olddcb_conn(dev, index); in nouveau_connector_create()
1300 if (nv_connector->dcb) { in nouveau_connector_create()
1301 u32 entry = ROM16(nv_connector->dcb[0]); in nouveau_connector_create()
1303 entry |= (u32)ROM16(nv_connector->dcb[2]) << 16; in nouveau_connector_create()
1305 nv_connector->type = nv_connector->dcb[0]; in nouveau_connector_create()
1306 if (drm_conntype_from_dcb(nv_connector->type) == in nouveau_connector_create()
1309 nv_connector->type); in nouveau_connector_create()
1310 nv_connector->type = DCB_CONNECTOR_NONE; in nouveau_connector_create()
1315 if (nv_connector->type == DCB_CONNECTOR_HDMI_1) in nouveau_connector_create()
1316 nv_connector->type = DCB_CONNECTOR_DVI_I; in nouveau_connector_create()
1321 if (nv_connector->type == DCB_CONNECTOR_HDMI_1) in nouveau_connector_create()
1322 nv_connector->type = DCB_CONNECTOR_DVI_I; in nouveau_connector_create()
1325 nv_connector->type = DCB_CONNECTOR_NONE; in nouveau_connector_create()
1331 if (nv_connector->type == DCB_CONNECTOR_NONE) { in nouveau_connector_create()
1338 if (dcbt->entry[i].connector == nv_connector->index) in nouveau_connector_create()
1344 nv_connector->type = DCB_CONNECTOR_DP; in nouveau_connector_create()
1346 nv_connector->type = DCB_CONNECTOR_eDP; in nouveau_connector_create()
1350 nv_connector->type = DCB_CONNECTOR_DVI_I; in nouveau_connector_create()
1352 nv_connector->type = DCB_CONNECTOR_DVI_D; in nouveau_connector_create()
1355 nv_connector->type = DCB_CONNECTOR_VGA; in nouveau_connector_create()
1358 nv_connector->type = DCB_CONNECTOR_LVDS; in nouveau_connector_create()
1361 nv_connector->type = DCB_CONNECTOR_TV_0; in nouveau_connector_create()
1365 switch ((type = drm_conntype_from_dcb(nv_connector->type))) { in nouveau_connector_create()
1370 kfree(nv_connector); in nouveau_connector_create()
1378 nv_connector->aux.dev = connector->kdev; in nouveau_connector_create()
1379 nv_connector->aux.drm_dev = dev; in nouveau_connector_create()
1380 nv_connector->aux.transfer = nouveau_connector_aux_xfer; in nouveau_connector_create()
1383 nv_connector->aux.name = kstrdup(aux_name, GFP_KERNEL); in nouveau_connector_create()
1384 if (!nv_connector->aux.name) { in nouveau_connector_create()
1385 kfree(nv_connector); in nouveau_connector_create()
1388 drm_dp_aux_init(&nv_connector->aux); in nouveau_connector_create()
1410 if (nv_connector->dcb && (disp->disp.conn_mask & BIT(nv_connector->index))) { in nouveau_connector_create()
1411 ret = nvif_conn_ctor(&disp->disp, nv_connector->base.name, nv_connector->index, in nouveau_connector_create()
1412 &nv_connector->conn); in nouveau_connector_create()
1417 ret = nvif_conn_event_ctor(&nv_connector->conn, "kmsHotplug", in nouveau_connector_create()
1420 &nv_connector->hpd); in nouveau_connector_create()
1424 if (nv_connector->aux.transfer) { in nouveau_connector_create()
1425 ret = nvif_conn_event_ctor(&nv_connector->conn, "kmsDpIrq", in nouveau_connector_create()
1427 &nv_connector->irq); in nouveau_connector_create()
1429 nvif_event_dtor(&nv_connector->hpd); in nouveau_connector_create()
1430 nvif_conn_dtor(&nv_connector->conn); in nouveau_connector_create()
1440 switch (nv_connector->type) { in nouveau_connector_create()
1446 nv_connector->scaling_mode = DRM_MODE_SCALE_FULLSCREEN; in nouveau_connector_create()
1449 nv_connector->scaling_mode = DRM_MODE_SCALE_NONE; in nouveau_connector_create()
1452 nv_connector->scaling_mode = DRM_MODE_SCALE_NONE; in nouveau_connector_create()
1457 switch (nv_connector->type) { in nouveau_connector_create()
1464 nv_connector->dithering_mode = DITHERING_MODE_AUTO; in nouveau_connector_create()
1470 nv_connector->dp_encoder = find_encoder(&nv_connector->base, DCB_OUTPUT_DP); in nouveau_connector_create()
1473 drm_dp_cec_register_connector(&nv_connector->aux, connector); in nouveau_connector_create()
1482 kfree(nv_connector); in nouveau_connector_create()