Lines Matching refs:nv_connector
248 struct nouveau_connector *nv_connector = nouveau_connector(connector);
261 asyc = &nv_connector->properties_state;
288 struct nouveau_connector *nv_connector = nouveau_connector(connector);
294 armc = &nv_connector->properties_state;
397 struct nouveau_connector *nv_connector = nouveau_connector(connector);
398 nvif_event_dtor(&nv_connector->irq);
399 nvif_event_dtor(&nv_connector->hpd);
400 kfree(nv_connector->edid);
403 if (nv_connector->aux.transfer)
404 drm_dp_cec_unregister_connector(&nv_connector->aux);
405 nvif_conn_dtor(&nv_connector->conn);
477 struct nouveau_connector *nv_connector = nouveau_connector(connector);
493 nv_connector->edid =
506 struct nouveau_connector *nv_connector = nouveau_connector(connector);
511 if (nv_connector->detected_encoder == nv_encoder)
513 nv_connector->detected_encoder = nv_encoder;
540 if (nv_connector->type == DCB_CONNECTOR_DVI_I) {
550 nouveau_connector_set_edid(struct nouveau_connector *nv_connector,
553 if (nv_connector->edid != edid) {
554 struct edid *old_edid = nv_connector->edid;
556 drm_connector_update_edid_property(&nv_connector->base, edid);
558 nv_connector->edid = edid;
567 struct nouveau_connector *nv_connector = nouveau_connector(connector);
586 nouveau_connector_set_edid(nv_connector, NULL);
597 nv_connector->type == DCB_CONNECTOR_LVDS)
607 nouveau_connector_set_edid(nv_connector, new_edid);
608 if (!nv_connector->edid) {
629 if (nv_connector->edid->input & DRM_EDID_INPUT_DIGITAL)
641 drm_dp_cec_set_edid(&nv_connector->aux, nv_connector->edid);
645 nouveau_connector_set_edid(nv_connector, NULL);
673 if (!nv_connector->edid)
674 drm_dp_cec_unset_edid(&nv_connector->aux);
687 struct nouveau_connector *nv_connector = nouveau_connector(connector);
700 edid = nv_connector->edid;
752 nouveau_connector_set_edid(nv_connector, edid);
762 struct nouveau_connector *nv_connector = nouveau_connector(connector);
766 if (nv_connector->type == DCB_CONNECTOR_DVI_I) {
788 struct nouveau_connector *nv_connector = nouveau_connector(connector);
789 struct nouveau_encoder *nv_encoder = nv_connector->detected_encoder;
790 struct nouveau_conn_atom *asyc = &nv_connector->properties_state;
794 ret = connector->funcs->atomic_set_property(&nv_connector->base,
806 nv_connector->scaling_mode = asyc->scaler.mode;
807 nv_connector->dithering_mode = asyc->dither.mode;
848 struct nouveau_connector *nv_connector = nouveau_connector(connector);
849 struct drm_display_mode *native = nv_connector->native_mode, *m;
882 struct nouveau_connector *nv_connector = nouveau_connector(connector);
883 struct nouveau_encoder *nv_encoder = nv_connector->detected_encoder;
885 struct drm_display_mode *mode = nv_connector->native_mode;
889 if (nv_connector->edid && connector->display_info.bpc)
893 if (nv_connector->type == DCB_CONNECTOR_eDP) {
916 if (nv_connector->edid &&
917 nv_connector->type == DCB_CONNECTOR_LVDS_SPWG)
918 duallink = ((u8 *)nv_connector->edid)[121] == 2;
964 struct nouveau_connector *nv_connector = nouveau_connector(connector);
965 struct nouveau_encoder *nv_encoder = nv_connector->detected_encoder;
971 if (nv_connector->native_mode) {
972 drm_mode_destroy(dev, nv_connector->native_mode);
973 nv_connector->native_mode = NULL;
976 if (nv_connector->edid)
977 ret = drm_add_edid_modes(connector, nv_connector->edid);
985 nv_connector->native_mode = drm_mode_duplicate(dev, &mode);
998 if (!nv_connector->native_mode)
999 nv_connector->native_mode = nouveau_conn_native_mode(connector);
1000 if (ret == 0 && nv_connector->native_mode) {
1003 mode = drm_mode_duplicate(dev, nv_connector->native_mode);
1015 if (connector->connector_type == DRM_MODE_CONNECTOR_LVDS && nv_connector->native_mode)
1021 if (nv_connector->type == DCB_CONNECTOR_LVDS ||
1022 nv_connector->type == DCB_CONNECTOR_LVDS_SPWG ||
1023 nv_connector->type == DCB_CONNECTOR_eDP)
1032 struct nouveau_connector *nv_connector = nouveau_connector(connector);
1033 struct nouveau_encoder *nv_encoder = nv_connector->detected_encoder;
1035 struct dcb_output *dcb = nv_connector->detected_encoder->dcb;
1040 if (nv_connector->base.display_info.is_hdmi) {
1041 info = &nv_connector->base.display_info;
1080 struct nouveau_connector *nv_connector = nouveau_connector(connector);
1081 struct nouveau_encoder *nv_encoder = nv_connector->detected_encoder;
1087 if (nv_connector->native_mode &&
1088 (mode->hdisplay > nv_connector->native_mode->hdisplay ||
1089 mode->vdisplay > nv_connector->native_mode->vdisplay))
1126 struct nouveau_connector *nv_connector = nouveau_connector(connector);
1128 if (nv_connector->detected_encoder)
1129 return to_drm_encoder(nv_connector->detected_encoder);
1190 nouveau_connector_hpd(struct nouveau_connector *nv_connector, u64 bits)
1192 struct nouveau_drm *drm = nouveau_drm(nv_connector->base.dev);
1193 u32 mask = drm_connector_mask(&nv_connector->base);
1198 nv_connector->hpd_pending |= bits;
1208 struct nouveau_connector *nv_connector = container_of(event, typeof(*nv_connector), irq);
1210 schedule_work(&nv_connector->irq_work);
1217 struct nouveau_connector *nv_connector = container_of(event, typeof(*nv_connector), hpd);
1220 nouveau_connector_hpd(nv_connector, rep->types);
1227 struct nouveau_connector *nv_connector =
1228 container_of(obj, typeof(*nv_connector), aux);
1233 nv_encoder = find_encoder(&nv_connector->base, DCB_OUTPUT_DP);
1285 struct nouveau_connector *nv_connector = NULL;
1293 nv_connector = nouveau_connector(connector);
1294 if (nv_connector->index == index) {
1301 nv_connector = kzalloc(sizeof(*nv_connector), GFP_KERNEL);
1302 if (!nv_connector)
1305 connector = &nv_connector->base;
1306 nv_connector->index = index;
1307 INIT_WORK(&nv_connector->irq_work, nouveau_dp_irq);
1309 if (disp->disp.conn_mask & BIT(nv_connector->index)) {
1310 ret = nvif_conn_ctor(&disp->disp, nv_connector->base.name, nv_connector->index,
1311 &nv_connector->conn);
1313 kfree(nv_connector);
1317 switch (nv_connector->conn.info.type) {
1331 nv_connector->type = type;
1333 u8 *dcb = olddcb_conn(dev, nv_connector->index);
1336 nv_connector->type = dcb[0];
1338 nv_connector->type = DCB_CONNECTOR_NONE;
1341 if (nv_connector->type != DCB_CONNECTOR_NONE) {
1342 if (drm_conntype_from_dcb(nv_connector->type) ==
1345 nv_connector->type);
1346 nv_connector->type = DCB_CONNECTOR_NONE;
1353 if (nv_connector->type == DCB_CONNECTOR_NONE &&
1360 if (dcbt->entry[i].connector == nv_connector->index)
1366 nv_connector->type = DCB_CONNECTOR_DVI_I;
1368 nv_connector->type = DCB_CONNECTOR_DVI_D;
1371 nv_connector->type = DCB_CONNECTOR_VGA;
1374 nv_connector->type = DCB_CONNECTOR_LVDS;
1377 nv_connector->type = DCB_CONNECTOR_TV_0;
1382 type = drm_conntype_from_dcb(nv_connector->type);
1393 kfree(nv_connector);
1400 nv_connector->aux.dev = connector->kdev;
1401 nv_connector->aux.drm_dev = dev;
1402 nv_connector->aux.transfer = nouveau_connector_aux_xfer;
1403 nv_connector->aux.name = connector->name;
1405 nv_connector->aux.no_zero_sized = true;
1406 drm_dp_aux_init(&nv_connector->aux);
1426 if (nvif_object_constructed(&nv_connector->conn.object)) {
1427 ret = nvif_conn_event_ctor(&nv_connector->conn, "kmsHotplug",
1430 &nv_connector->hpd);
1434 if (nv_connector->aux.transfer) {
1435 ret = nvif_conn_event_ctor(&nv_connector->conn, "kmsDpIrq",
1437 &nv_connector->irq);
1439 nvif_event_dtor(&nv_connector->hpd);
1440 nvif_conn_dtor(&nv_connector->conn);
1450 switch (nv_connector->type) {
1456 nv_connector->scaling_mode = DRM_MODE_SCALE_FULLSCREEN;
1459 nv_connector->scaling_mode = DRM_MODE_SCALE_NONE;
1462 nv_connector->scaling_mode = DRM_MODE_SCALE_NONE;
1467 switch (nv_connector->type) {
1474 nv_connector->dithering_mode = DITHERING_MODE_AUTO;
1480 nv_connector->dp_encoder = find_encoder(&nv_connector->base, DCB_OUTPUT_DP);
1483 drm_dp_cec_register_connector(&nv_connector->aux, connector);
1492 kfree(nv_connector);