Lines Matching refs:connector

78 	struct drm_connector *connector;  member
1018 static void drm_get_displayid(struct drm_connector *connector,
1219 struct edid *drm_do_get_edid(struct drm_connector *connector, in drm_do_get_edid() argument
1226 bool print_bad_edid = !connector->bad_edid_counter || (drm_debug & DRM_UT_KMS); in drm_do_get_edid()
1238 connector->null_edid_counter++; in drm_do_get_edid()
1267 dev_warn(connector->dev->dev, in drm_do_get_edid()
1269 connector->name, j); in drm_do_get_edid()
1271 connector->bad_edid_counter++; in drm_do_get_edid()
1288 dev_warn(connector->dev->dev, "%s: EDID block %d invalid.\n", in drm_do_get_edid()
1289 connector->name, j); in drm_do_get_edid()
1291 connector->bad_edid_counter++; in drm_do_get_edid()
1324 struct edid *drm_get_edid(struct drm_connector *connector, in drm_get_edid() argument
1332 edid = drm_do_get_edid(connector, drm_do_probe_ddc_edid, adapter); in drm_get_edid()
1334 drm_get_displayid(connector, edid); in drm_get_edid()
1405 static void edid_fixup_preferred(struct drm_connector *connector, in edid_fixup_preferred() argument
1412 if (list_empty(&connector->probed_modes)) in edid_fixup_preferred()
1420 preferred_mode = list_first_entry(&connector->probed_modes, in edid_fixup_preferred()
1423 list_for_each_entry_safe(cur_mode, t, &connector->probed_modes, head) { in edid_fixup_preferred()
1656 drm_mode_std(struct drm_connector *connector, struct edid *edid, in drm_mode_std() argument
1659 struct drm_device *dev = connector->dev; in drm_mode_std()
1703 list_for_each_entry(m, &connector->probed_modes, head) in drm_mode_std()
1992 static bool valid_inferred_mode(const struct drm_connector *connector, in valid_inferred_mode() argument
1998 list_for_each_entry(m, &connector->probed_modes, head) { in valid_inferred_mode()
2011 drm_dmt_modes_for_range(struct drm_connector *connector, struct edid *edid, in drm_dmt_modes_for_range() argument
2016 struct drm_device *dev = connector->dev; in drm_dmt_modes_for_range()
2020 valid_inferred_mode(connector, drm_dmt_modes + i)) { in drm_dmt_modes_for_range()
2023 drm_mode_probed_add(connector, newmode); in drm_dmt_modes_for_range()
2046 drm_gtf_modes_for_range(struct drm_connector *connector, struct edid *edid, in drm_gtf_modes_for_range() argument
2051 struct drm_device *dev = connector->dev; in drm_gtf_modes_for_range()
2061 !valid_inferred_mode(connector, newmode)) { in drm_gtf_modes_for_range()
2066 drm_mode_probed_add(connector, newmode); in drm_gtf_modes_for_range()
2074 drm_cvt_modes_for_range(struct drm_connector *connector, struct edid *edid, in drm_cvt_modes_for_range() argument
2079 struct drm_device *dev = connector->dev; in drm_cvt_modes_for_range()
2090 !valid_inferred_mode(connector, newmode)) { in drm_cvt_modes_for_range()
2095 drm_mode_probed_add(connector, newmode); in drm_cvt_modes_for_range()
2112 closure->modes += drm_dmt_modes_for_range(closure->connector, in do_inferred_modes()
2122 closure->modes += drm_gtf_modes_for_range(closure->connector, in do_inferred_modes()
2130 closure->modes += drm_cvt_modes_for_range(closure->connector, in do_inferred_modes()
2141 add_inferred_modes(struct drm_connector *connector, struct edid *edid) in add_inferred_modes() argument
2144 .connector = connector, in add_inferred_modes()
2156 drm_est3_modes(struct drm_connector *connector, struct detailed_timing *timing) in drm_est3_modes() argument
2168 mode = drm_mode_find_dmt(connector->dev, in drm_est3_modes()
2174 drm_mode_probed_add(connector, mode); in drm_est3_modes()
2191 closure->modes += drm_est3_modes(closure->connector, timing); in do_established_modes()
2203 add_established_modes(struct drm_connector *connector, struct edid *edid) in add_established_modes() argument
2205 struct drm_device *dev = connector->dev; in add_established_modes()
2211 .connector = connector, in add_established_modes()
2220 drm_mode_probed_add(connector, newmode); in add_established_modes()
2238 struct drm_connector *connector = closure->connector; in do_standard_modes() local
2248 newmode = drm_mode_std(connector, edid, std); in do_standard_modes()
2250 drm_mode_probed_add(connector, newmode); in do_standard_modes()
2266 add_standard_modes(struct drm_connector *connector, struct edid *edid) in add_standard_modes() argument
2270 .connector = connector, in add_standard_modes()
2277 newmode = drm_mode_std(connector, edid, in add_standard_modes()
2280 drm_mode_probed_add(connector, newmode); in add_standard_modes()
2294 static int drm_cvt_modes(struct drm_connector *connector, in drm_cvt_modes() argument
2299 struct drm_device *dev = connector->dev; in drm_cvt_modes()
2333 drm_mode_probed_add(connector, newmode); in drm_cvt_modes()
2350 closure->modes += drm_cvt_modes(closure->connector, timing); in do_cvt_mode()
2354 add_cvt_modes(struct drm_connector *connector, struct edid *edid) in add_cvt_modes() argument
2357 .connector = connector, in add_cvt_modes()
2376 newmode = drm_mode_detailed(closure->connector->dev, in do_detailed_mode()
2385 drm_mode_probed_add(closure->connector, newmode); in do_detailed_mode()
2398 add_detailed_modes(struct drm_connector *connector, struct edid *edid, in add_detailed_modes() argument
2402 .connector = connector, in add_detailed_modes()
2583 add_alternate_cea_modes(struct drm_connector *connector, struct edid *edid) in add_alternate_cea_modes() argument
2585 struct drm_device *dev = connector->dev; in add_alternate_cea_modes()
2598 list_for_each_entry(mode, &connector->probed_modes, head) { in add_alternate_cea_modes()
2647 drm_mode_probed_add(connector, mode); in add_alternate_cea_modes()
2655 drm_display_mode_from_vic_index(struct drm_connector *connector, in drm_display_mode_from_vic_index() argument
2659 struct drm_device *dev = connector->dev; in drm_display_mode_from_vic_index()
2681 do_cea_modes(struct drm_connector *connector, const u8 *db, u8 len) in do_cea_modes() argument
2687 mode = drm_display_mode_from_vic_index(connector, db, len, i); in do_cea_modes()
2689 drm_mode_probed_add(connector, mode); in do_cea_modes()
2727 static int add_hdmi_mandatory_stereo_modes(struct drm_connector *connector) in add_hdmi_mandatory_stereo_modes() argument
2729 struct drm_device *dev = connector->dev; in add_hdmi_mandatory_stereo_modes()
2736 list_for_each_entry(mode, &connector->probed_modes, head) { in add_hdmi_mandatory_stereo_modes()
2756 list_splice_tail(&stereo_modes, &connector->probed_modes); in add_hdmi_mandatory_stereo_modes()
2761 static int add_hdmi_mode(struct drm_connector *connector, u8 vic) in add_hdmi_mode() argument
2763 struct drm_device *dev = connector->dev; in add_hdmi_mode()
2776 drm_mode_probed_add(connector, newmode); in add_hdmi_mode()
2781 static int add_3d_struct_modes(struct drm_connector *connector, u16 structure, in add_3d_struct_modes() argument
2788 newmode = drm_display_mode_from_vic_index(connector, video_db, in add_3d_struct_modes()
2793 drm_mode_probed_add(connector, newmode); in add_3d_struct_modes()
2798 newmode = drm_display_mode_from_vic_index(connector, video_db, in add_3d_struct_modes()
2803 drm_mode_probed_add(connector, newmode); in add_3d_struct_modes()
2808 newmode = drm_display_mode_from_vic_index(connector, video_db, in add_3d_struct_modes()
2813 drm_mode_probed_add(connector, newmode); in add_3d_struct_modes()
2831 do_hdmi_vsdb_modes(struct drm_connector *connector, const u8 *db, u8 len, in do_hdmi_vsdb_modes() argument
2862 modes += add_hdmi_mandatory_stereo_modes(connector); in do_hdmi_vsdb_modes()
2876 modes += add_hdmi_mode(connector, vic); in do_hdmi_vsdb_modes()
2905 modes += add_3d_struct_modes(connector, in do_hdmi_vsdb_modes()
2944 newmode = drm_display_mode_from_vic_index(connector, in do_hdmi_vsdb_modes()
2951 drm_mode_probed_add(connector, newmode); in do_hdmi_vsdb_modes()
3014 add_cea_modes(struct drm_connector *connector, struct edid *edid) in add_cea_modes() argument
3034 modes += do_cea_modes(connector, video, dbl); in add_cea_modes()
3048 modes += do_hdmi_vsdb_modes(connector, hdmi, hdmi_len, video, in add_cea_modes()
3055 parse_hdmi_vsdb(struct drm_connector *connector, const u8 *db) in parse_hdmi_vsdb() argument
3060 connector->eld[5] |= (db[6] >> 7) << 1; /* Supports_AI */ in parse_hdmi_vsdb()
3061 connector->dvi_dual = db[6] & 1; in parse_hdmi_vsdb()
3064 connector->max_tmds_clock = db[7] * 5; in parse_hdmi_vsdb()
3066 connector->latency_present[0] = db[8] >> 7; in parse_hdmi_vsdb()
3067 connector->latency_present[1] = (db[8] >> 6) & 1; in parse_hdmi_vsdb()
3070 connector->video_latency[0] = db[9]; in parse_hdmi_vsdb()
3072 connector->audio_latency[0] = db[10]; in parse_hdmi_vsdb()
3074 connector->video_latency[1] = db[11]; in parse_hdmi_vsdb()
3076 connector->audio_latency[1] = db[12]; in parse_hdmi_vsdb()
3083 connector->dvi_dual, in parse_hdmi_vsdb()
3084 connector->max_tmds_clock, in parse_hdmi_vsdb()
3085 (int) connector->latency_present[0], in parse_hdmi_vsdb()
3086 (int) connector->latency_present[1], in parse_hdmi_vsdb()
3087 connector->video_latency[0], in parse_hdmi_vsdb()
3088 connector->video_latency[1], in parse_hdmi_vsdb()
3089 connector->audio_latency[0], in parse_hdmi_vsdb()
3090 connector->audio_latency[1]); in parse_hdmi_vsdb()
3109 void drm_edid_to_eld(struct drm_connector *connector, struct edid *edid) in drm_edid_to_eld() argument
3111 uint8_t *eld = connector->eld; in drm_edid_to_eld()
3119 memset(eld, 0, sizeof(connector->eld)); in drm_edid_to_eld()
3171 parse_hdmi_vsdb(connector, db); in drm_edid_to_eld()
3311 int drm_av_sync_delay(struct drm_connector *connector, in drm_av_sync_delay() argument
3317 if (!connector->latency_present[0]) in drm_av_sync_delay()
3319 if (!connector->latency_present[1]) in drm_av_sync_delay()
3322 a = connector->audio_latency[i]; in drm_av_sync_delay()
3323 v = connector->video_latency[i]; in drm_av_sync_delay()
3358 struct drm_connector *connector; in drm_select_eld() local
3364 list_for_each_entry(connector, &dev->mode_config.connector_list, head) in drm_select_eld()
3365 if (connector->encoder == encoder && connector->eld[0]) in drm_select_eld()
3366 return connector; in drm_select_eld()
3500 struct drm_connector *connector) in drm_assign_hdmi_deep_color_info() argument
3531 connector->name); in drm_assign_hdmi_deep_color_info()
3538 connector->name); in drm_assign_hdmi_deep_color_info()
3545 connector->name); in drm_assign_hdmi_deep_color_info()
3550 connector->name, dc_bpc); in drm_assign_hdmi_deep_color_info()
3564 connector->name); in drm_assign_hdmi_deep_color_info()
3573 connector->name); in drm_assign_hdmi_deep_color_info()
3580 connector->name); in drm_assign_hdmi_deep_color_info()
3600 struct drm_connector *connector) in drm_add_display_info() argument
3631 drm_assign_hdmi_deep_color_info(edid, info, connector); in drm_add_display_info()
3663 connector->name, info->bpc); in drm_add_display_info()
3681 int drm_add_edid_modes(struct drm_connector *connector, struct edid *edid) in drm_add_edid_modes() argument
3690 dev_warn(connector->dev->dev, "%s: EDID invalid.\n", in drm_add_edid_modes()
3691 connector->name); in drm_add_edid_modes()
3711 num_modes += add_detailed_modes(connector, edid, quirks); in drm_add_edid_modes()
3712 num_modes += add_cvt_modes(connector, edid); in drm_add_edid_modes()
3713 num_modes += add_standard_modes(connector, edid); in drm_add_edid_modes()
3714 num_modes += add_established_modes(connector, edid); in drm_add_edid_modes()
3716 num_modes += add_inferred_modes(connector, edid); in drm_add_edid_modes()
3717 num_modes += add_cea_modes(connector, edid); in drm_add_edid_modes()
3718 num_modes += add_alternate_cea_modes(connector, edid); in drm_add_edid_modes()
3721 edid_fixup_preferred(connector, quirks); in drm_add_edid_modes()
3723 drm_add_display_info(edid, &connector->display_info, connector); in drm_add_edid_modes()
3726 connector->display_info.bpc = 8; in drm_add_edid_modes()
3729 connector->display_info.bpc = 12; in drm_add_edid_modes()
3746 int drm_add_modes_noedid(struct drm_connector *connector, in drm_add_modes_noedid() argument
3751 struct drm_device *dev = connector->dev; in drm_add_modes_noedid()
3775 drm_mode_probed_add(connector, mode); in drm_add_modes_noedid()
3792 void drm_set_preferred_mode(struct drm_connector *connector, in drm_set_preferred_mode() argument
3797 list_for_each_entry(mode, &connector->probed_modes, head) { in drm_set_preferred_mode()
3923 static int drm_parse_display_id(struct drm_connector *connector, in drm_parse_display_id() argument
3974 connector->has_tile = true; in drm_parse_display_id()
3976 connector->tile_is_single_monitor = true; in drm_parse_display_id()
3978 connector->num_h_tile = num_h_tile + 1; in drm_parse_display_id()
3979 connector->num_v_tile = num_v_tile + 1; in drm_parse_display_id()
3980 connector->tile_h_loc = tile_h_loc; in drm_parse_display_id()
3981 connector->tile_v_loc = tile_v_loc; in drm_parse_display_id()
3982 connector->tile_h_size = w + 1; in drm_parse_display_id()
3983 connector->tile_v_size = h + 1; in drm_parse_display_id()
3991 tg = drm_mode_get_tile_group(connector->dev, tile->topology_id); in drm_parse_display_id()
3993 tg = drm_mode_create_tile_group(connector->dev, tile->topology_id); in drm_parse_display_id()
3998 if (connector->tile_group != tg) { in drm_parse_display_id()
4001 if (connector->tile_group) { in drm_parse_display_id()
4002 drm_mode_put_tile_group(connector->dev, connector->tile_group); in drm_parse_display_id()
4004 connector->tile_group = tg; in drm_parse_display_id()
4007 drm_mode_put_tile_group(connector->dev, tg); in drm_parse_display_id()
4017 static void drm_get_displayid(struct drm_connector *connector, in drm_get_displayid() argument
4022 connector->has_tile = false; in drm_get_displayid()
4029 ret = drm_parse_display_id(connector, displayid, EDID_LENGTH, true); in drm_get_displayid()
4032 if (!connector->has_tile) in drm_get_displayid()
4036 if (connector->tile_group) { in drm_get_displayid()
4037 drm_mode_put_tile_group(connector->dev, connector->tile_group); in drm_get_displayid()
4038 connector->tile_group = NULL; in drm_get_displayid()