Lines Matching refs:connector
78 struct drm_connector *connector; member
1050 static void drm_get_displayid(struct drm_connector *connector,
1267 struct edid *drm_do_get_edid(struct drm_connector *connector, in drm_do_get_edid() argument
1274 bool print_bad_edid = !connector->bad_edid_counter || (drm_debug & DRM_UT_KMS); in drm_do_get_edid()
1284 &connector->edid_corrupt)) in drm_do_get_edid()
1287 connector->null_edid_counter++; in drm_do_get_edid()
1319 dev_warn(connector->dev->dev, in drm_do_get_edid()
1321 connector->name, j); in drm_do_get_edid()
1323 connector->bad_edid_counter++; in drm_do_get_edid()
1340 dev_warn(connector->dev->dev, "%s: EDID block %d invalid.\n", in drm_do_get_edid()
1341 connector->name, j); in drm_do_get_edid()
1343 connector->bad_edid_counter++; in drm_do_get_edid()
1376 struct edid *drm_get_edid(struct drm_connector *connector, in drm_get_edid() argument
1384 edid = drm_do_get_edid(connector, drm_do_probe_ddc_edid, adapter); in drm_get_edid()
1386 drm_get_displayid(connector, edid); in drm_get_edid()
1457 static void edid_fixup_preferred(struct drm_connector *connector, in edid_fixup_preferred() argument
1464 if (list_empty(&connector->probed_modes)) in edid_fixup_preferred()
1472 preferred_mode = list_first_entry(&connector->probed_modes, in edid_fixup_preferred()
1475 list_for_each_entry_safe(cur_mode, t, &connector->probed_modes, head) { in edid_fixup_preferred()
1708 drm_mode_std(struct drm_connector *connector, struct edid *edid, in drm_mode_std() argument
1711 struct drm_device *dev = connector->dev; in drm_mode_std()
1755 list_for_each_entry(m, &connector->probed_modes, head) in drm_mode_std()
2044 static bool valid_inferred_mode(const struct drm_connector *connector, in valid_inferred_mode() argument
2050 list_for_each_entry(m, &connector->probed_modes, head) { in valid_inferred_mode()
2063 drm_dmt_modes_for_range(struct drm_connector *connector, struct edid *edid, in drm_dmt_modes_for_range() argument
2068 struct drm_device *dev = connector->dev; in drm_dmt_modes_for_range()
2072 valid_inferred_mode(connector, drm_dmt_modes + i)) { in drm_dmt_modes_for_range()
2075 drm_mode_probed_add(connector, newmode); in drm_dmt_modes_for_range()
2098 drm_gtf_modes_for_range(struct drm_connector *connector, struct edid *edid, in drm_gtf_modes_for_range() argument
2103 struct drm_device *dev = connector->dev; in drm_gtf_modes_for_range()
2113 !valid_inferred_mode(connector, newmode)) { in drm_gtf_modes_for_range()
2118 drm_mode_probed_add(connector, newmode); in drm_gtf_modes_for_range()
2126 drm_cvt_modes_for_range(struct drm_connector *connector, struct edid *edid, in drm_cvt_modes_for_range() argument
2131 struct drm_device *dev = connector->dev; in drm_cvt_modes_for_range()
2142 !valid_inferred_mode(connector, newmode)) { in drm_cvt_modes_for_range()
2147 drm_mode_probed_add(connector, newmode); in drm_cvt_modes_for_range()
2164 closure->modes += drm_dmt_modes_for_range(closure->connector, in do_inferred_modes()
2174 closure->modes += drm_gtf_modes_for_range(closure->connector, in do_inferred_modes()
2182 closure->modes += drm_cvt_modes_for_range(closure->connector, in do_inferred_modes()
2193 add_inferred_modes(struct drm_connector *connector, struct edid *edid) in add_inferred_modes() argument
2196 .connector = connector, in add_inferred_modes()
2208 drm_est3_modes(struct drm_connector *connector, struct detailed_timing *timing) in drm_est3_modes() argument
2220 mode = drm_mode_find_dmt(connector->dev, in drm_est3_modes()
2226 drm_mode_probed_add(connector, mode); in drm_est3_modes()
2243 closure->modes += drm_est3_modes(closure->connector, timing); in do_established_modes()
2255 add_established_modes(struct drm_connector *connector, struct edid *edid) in add_established_modes() argument
2257 struct drm_device *dev = connector->dev; in add_established_modes()
2263 .connector = connector, in add_established_modes()
2272 drm_mode_probed_add(connector, newmode); in add_established_modes()
2290 struct drm_connector *connector = closure->connector; in do_standard_modes() local
2300 newmode = drm_mode_std(connector, edid, std); in do_standard_modes()
2302 drm_mode_probed_add(connector, newmode); in do_standard_modes()
2318 add_standard_modes(struct drm_connector *connector, struct edid *edid) in add_standard_modes() argument
2322 .connector = connector, in add_standard_modes()
2329 newmode = drm_mode_std(connector, edid, in add_standard_modes()
2332 drm_mode_probed_add(connector, newmode); in add_standard_modes()
2346 static int drm_cvt_modes(struct drm_connector *connector, in drm_cvt_modes() argument
2351 struct drm_device *dev = connector->dev; in drm_cvt_modes()
2385 drm_mode_probed_add(connector, newmode); in drm_cvt_modes()
2402 closure->modes += drm_cvt_modes(closure->connector, timing); in do_cvt_mode()
2406 add_cvt_modes(struct drm_connector *connector, struct edid *edid) in add_cvt_modes() argument
2409 .connector = connector, in add_cvt_modes()
2430 newmode = drm_mode_detailed(closure->connector->dev, in do_detailed_mode()
2446 drm_mode_probed_add(closure->connector, newmode); in do_detailed_mode()
2459 add_detailed_modes(struct drm_connector *connector, struct edid *edid, in add_detailed_modes() argument
2463 .connector = connector, in add_detailed_modes()
2644 add_alternate_cea_modes(struct drm_connector *connector, struct edid *edid) in add_alternate_cea_modes() argument
2646 struct drm_device *dev = connector->dev; in add_alternate_cea_modes()
2659 list_for_each_entry(mode, &connector->probed_modes, head) { in add_alternate_cea_modes()
2708 drm_mode_probed_add(connector, mode); in add_alternate_cea_modes()
2716 drm_display_mode_from_vic_index(struct drm_connector *connector, in drm_display_mode_from_vic_index() argument
2720 struct drm_device *dev = connector->dev; in drm_display_mode_from_vic_index()
2742 do_cea_modes(struct drm_connector *connector, const u8 *db, u8 len) in do_cea_modes() argument
2748 mode = drm_display_mode_from_vic_index(connector, db, len, i); in do_cea_modes()
2750 drm_mode_probed_add(connector, mode); in do_cea_modes()
2788 static int add_hdmi_mandatory_stereo_modes(struct drm_connector *connector) in add_hdmi_mandatory_stereo_modes() argument
2790 struct drm_device *dev = connector->dev; in add_hdmi_mandatory_stereo_modes()
2797 list_for_each_entry(mode, &connector->probed_modes, head) { in add_hdmi_mandatory_stereo_modes()
2817 list_splice_tail(&stereo_modes, &connector->probed_modes); in add_hdmi_mandatory_stereo_modes()
2822 static int add_hdmi_mode(struct drm_connector *connector, u8 vic) in add_hdmi_mode() argument
2824 struct drm_device *dev = connector->dev; in add_hdmi_mode()
2837 drm_mode_probed_add(connector, newmode); in add_hdmi_mode()
2842 static int add_3d_struct_modes(struct drm_connector *connector, u16 structure, in add_3d_struct_modes() argument
2849 newmode = drm_display_mode_from_vic_index(connector, video_db, in add_3d_struct_modes()
2854 drm_mode_probed_add(connector, newmode); in add_3d_struct_modes()
2859 newmode = drm_display_mode_from_vic_index(connector, video_db, in add_3d_struct_modes()
2864 drm_mode_probed_add(connector, newmode); in add_3d_struct_modes()
2869 newmode = drm_display_mode_from_vic_index(connector, video_db, in add_3d_struct_modes()
2874 drm_mode_probed_add(connector, newmode); in add_3d_struct_modes()
2892 do_hdmi_vsdb_modes(struct drm_connector *connector, const u8 *db, u8 len, in do_hdmi_vsdb_modes() argument
2923 modes += add_hdmi_mandatory_stereo_modes(connector); in do_hdmi_vsdb_modes()
2937 modes += add_hdmi_mode(connector, vic); in do_hdmi_vsdb_modes()
2966 modes += add_3d_struct_modes(connector, in do_hdmi_vsdb_modes()
3005 newmode = drm_display_mode_from_vic_index(connector, in do_hdmi_vsdb_modes()
3012 drm_mode_probed_add(connector, newmode); in do_hdmi_vsdb_modes()
3075 add_cea_modes(struct drm_connector *connector, struct edid *edid) in add_cea_modes() argument
3095 modes += do_cea_modes(connector, video, dbl); in add_cea_modes()
3109 modes += do_hdmi_vsdb_modes(connector, hdmi, hdmi_len, video, in add_cea_modes()
3155 parse_hdmi_vsdb(struct drm_connector *connector, const u8 *db) in parse_hdmi_vsdb() argument
3160 connector->eld[5] |= (db[6] >> 7) << 1; /* Supports_AI */ in parse_hdmi_vsdb()
3161 connector->dvi_dual = db[6] & 1; in parse_hdmi_vsdb()
3164 connector->max_tmds_clock = db[7] * 5; in parse_hdmi_vsdb()
3166 connector->latency_present[0] = db[8] >> 7; in parse_hdmi_vsdb()
3167 connector->latency_present[1] = (db[8] >> 6) & 1; in parse_hdmi_vsdb()
3170 connector->video_latency[0] = db[9]; in parse_hdmi_vsdb()
3172 connector->audio_latency[0] = db[10]; in parse_hdmi_vsdb()
3174 connector->video_latency[1] = db[11]; in parse_hdmi_vsdb()
3176 connector->audio_latency[1] = db[12]; in parse_hdmi_vsdb()
3183 connector->dvi_dual, in parse_hdmi_vsdb()
3184 connector->max_tmds_clock, in parse_hdmi_vsdb()
3185 (int) connector->latency_present[0], in parse_hdmi_vsdb()
3186 (int) connector->latency_present[1], in parse_hdmi_vsdb()
3187 connector->video_latency[0], in parse_hdmi_vsdb()
3188 connector->video_latency[1], in parse_hdmi_vsdb()
3189 connector->audio_latency[0], in parse_hdmi_vsdb()
3190 connector->audio_latency[1]); in parse_hdmi_vsdb()
3209 void drm_edid_to_eld(struct drm_connector *connector, struct edid *edid) in drm_edid_to_eld() argument
3211 uint8_t *eld = connector->eld; in drm_edid_to_eld()
3219 memset(eld, 0, sizeof(connector->eld)); in drm_edid_to_eld()
3271 parse_hdmi_vsdb(connector, db); in drm_edid_to_eld()
3411 int drm_av_sync_delay(struct drm_connector *connector, in drm_av_sync_delay() argument
3417 if (!connector->latency_present[0]) in drm_av_sync_delay()
3419 if (!connector->latency_present[1]) in drm_av_sync_delay()
3422 a = connector->audio_latency[i]; in drm_av_sync_delay()
3423 v = connector->video_latency[i]; in drm_av_sync_delay()
3456 struct drm_connector *connector; in drm_select_eld() local
3462 drm_for_each_connector(connector, dev) in drm_select_eld()
3463 if (connector->encoder == encoder && connector->eld[0]) in drm_select_eld()
3464 return connector; in drm_select_eld()
3598 struct drm_connector *connector) in drm_assign_hdmi_deep_color_info() argument
3629 connector->name); in drm_assign_hdmi_deep_color_info()
3636 connector->name); in drm_assign_hdmi_deep_color_info()
3643 connector->name); in drm_assign_hdmi_deep_color_info()
3648 connector->name, dc_bpc); in drm_assign_hdmi_deep_color_info()
3662 connector->name); in drm_assign_hdmi_deep_color_info()
3671 connector->name); in drm_assign_hdmi_deep_color_info()
3678 connector->name); in drm_assign_hdmi_deep_color_info()
3698 struct drm_connector *connector) in drm_add_display_info() argument
3729 drm_assign_hdmi_deep_color_info(edid, info, connector); in drm_add_display_info()
3761 connector->name, info->bpc); in drm_add_display_info()
3779 int drm_add_edid_modes(struct drm_connector *connector, struct edid *edid) in drm_add_edid_modes() argument
3788 dev_warn(connector->dev->dev, "%s: EDID invalid.\n", in drm_add_edid_modes()
3789 connector->name); in drm_add_edid_modes()
3809 num_modes += add_detailed_modes(connector, edid, quirks); in drm_add_edid_modes()
3810 num_modes += add_cvt_modes(connector, edid); in drm_add_edid_modes()
3811 num_modes += add_standard_modes(connector, edid); in drm_add_edid_modes()
3812 num_modes += add_established_modes(connector, edid); in drm_add_edid_modes()
3813 num_modes += add_cea_modes(connector, edid); in drm_add_edid_modes()
3814 num_modes += add_alternate_cea_modes(connector, edid); in drm_add_edid_modes()
3816 num_modes += add_inferred_modes(connector, edid); in drm_add_edid_modes()
3819 edid_fixup_preferred(connector, quirks); in drm_add_edid_modes()
3821 drm_add_display_info(edid, &connector->display_info, connector); in drm_add_edid_modes()
3824 connector->display_info.bpc = 8; in drm_add_edid_modes()
3827 connector->display_info.bpc = 12; in drm_add_edid_modes()
3844 int drm_add_modes_noedid(struct drm_connector *connector, in drm_add_modes_noedid() argument
3849 struct drm_device *dev = connector->dev; in drm_add_modes_noedid()
3873 drm_mode_probed_add(connector, mode); in drm_add_modes_noedid()
3890 void drm_set_preferred_mode(struct drm_connector *connector, in drm_set_preferred_mode() argument
3895 list_for_each_entry(mode, &connector->probed_modes, head) { in drm_set_preferred_mode()
4021 static int drm_parse_display_id(struct drm_connector *connector, in drm_parse_display_id() argument
4072 connector->has_tile = true; in drm_parse_display_id()
4074 connector->tile_is_single_monitor = true; in drm_parse_display_id()
4076 connector->num_h_tile = num_h_tile + 1; in drm_parse_display_id()
4077 connector->num_v_tile = num_v_tile + 1; in drm_parse_display_id()
4078 connector->tile_h_loc = tile_h_loc; in drm_parse_display_id()
4079 connector->tile_v_loc = tile_v_loc; in drm_parse_display_id()
4080 connector->tile_h_size = w + 1; in drm_parse_display_id()
4081 connector->tile_v_size = h + 1; in drm_parse_display_id()
4089 tg = drm_mode_get_tile_group(connector->dev, tile->topology_id); in drm_parse_display_id()
4091 tg = drm_mode_create_tile_group(connector->dev, tile->topology_id); in drm_parse_display_id()
4096 if (connector->tile_group != tg) { in drm_parse_display_id()
4099 if (connector->tile_group) { in drm_parse_display_id()
4100 drm_mode_put_tile_group(connector->dev, connector->tile_group); in drm_parse_display_id()
4102 connector->tile_group = tg; in drm_parse_display_id()
4105 drm_mode_put_tile_group(connector->dev, tg); in drm_parse_display_id()
4115 static void drm_get_displayid(struct drm_connector *connector, in drm_get_displayid() argument
4120 connector->has_tile = false; in drm_get_displayid()
4127 ret = drm_parse_display_id(connector, displayid, EDID_LENGTH, true); in drm_get_displayid()
4130 if (!connector->has_tile) in drm_get_displayid()
4134 if (connector->tile_group) { in drm_get_displayid()
4135 drm_mode_put_tile_group(connector->dev, connector->tile_group); in drm_get_displayid()
4136 connector->tile_group = NULL; in drm_get_displayid()