Lines Matching refs:dp_link
40 struct dp_link dp_link; member
124 struct dp_link_test_audio *req = &link->dp_link.test_audio; in dp_link_parse_audio_channel_period()
207 link->dp_link.test_audio.test_audio_pattern_type = data; in dp_link_parse_audio_pattern_type()
247 link->dp_link.test_audio.test_audio_sampling_rate = sampling_rate; in dp_link_parse_audio_mode()
248 link->dp_link.test_audio.test_audio_channel_count = channel_count; in dp_link_parse_audio_mode()
392 link->dp_link.test_video.test_video_pattern = bp; in dp_link_parse_video_pattern_params()
402 link->dp_link.test_video.test_dyn_range = in dp_link_parse_video_pattern_params()
413 link->dp_link.test_video.test_bit_depth = bp; in dp_link_parse_video_pattern_params()
417 &link->dp_link.test_video.test_h_total); in dp_link_parse_video_pattern_params()
424 &link->dp_link.test_video.test_v_total); in dp_link_parse_video_pattern_params()
431 &link->dp_link.test_video.test_h_start); in dp_link_parse_video_pattern_params()
438 &link->dp_link.test_video.test_v_start); in dp_link_parse_video_pattern_params()
445 &link->dp_link.test_video.test_hsync_pol, in dp_link_parse_video_pattern_params()
446 &link->dp_link.test_video.test_hsync_width); in dp_link_parse_video_pattern_params()
453 &link->dp_link.test_video.test_vsync_pol, in dp_link_parse_video_pattern_params()
454 &link->dp_link.test_video.test_vsync_width); in dp_link_parse_video_pattern_params()
461 &link->dp_link.test_video.test_h_width); in dp_link_parse_video_pattern_params()
468 &link->dp_link.test_video.test_v_height); in dp_link_parse_video_pattern_params()
475 &link->dp_link.test_video.test_rr_d); in dp_link_parse_video_pattern_params()
476 link->dp_link.test_video.test_rr_d &= DP_TEST_REFRESH_DENOMINATOR; in dp_link_parse_video_pattern_params()
483 &link->dp_link.test_video.test_rr_n); in dp_link_parse_video_pattern_params()
502 link->dp_link.test_video.test_video_pattern, in dp_link_parse_video_pattern_params()
503 link->dp_link.test_video.test_dyn_range, in dp_link_parse_video_pattern_params()
504 link->dp_link.test_video.test_bit_depth, in dp_link_parse_video_pattern_params()
505 link->dp_link.test_video.test_h_total, in dp_link_parse_video_pattern_params()
506 link->dp_link.test_video.test_v_total, in dp_link_parse_video_pattern_params()
507 link->dp_link.test_video.test_h_start, in dp_link_parse_video_pattern_params()
508 link->dp_link.test_video.test_v_start, in dp_link_parse_video_pattern_params()
509 link->dp_link.test_video.test_hsync_pol, in dp_link_parse_video_pattern_params()
510 link->dp_link.test_video.test_hsync_width, in dp_link_parse_video_pattern_params()
511 link->dp_link.test_video.test_vsync_pol, in dp_link_parse_video_pattern_params()
512 link->dp_link.test_video.test_vsync_width, in dp_link_parse_video_pattern_params()
513 link->dp_link.test_video.test_h_width, in dp_link_parse_video_pattern_params()
514 link->dp_link.test_video.test_v_height, in dp_link_parse_video_pattern_params()
515 link->dp_link.test_video.test_rr_d, in dp_link_parse_video_pattern_params()
516 link->dp_link.test_video.test_rr_n); in dp_link_parse_video_pattern_params()
584 link->dp_link.phy_params.phy_test_pattern_sel = data & 0x07; in dp_link_parse_phy_test_params()
695 link->dp_link.test_response = DP_TEST_NAK; in dp_link_parse_request()
698 link->dp_link.test_response = DP_TEST_ACK; in dp_link_parse_request()
700 link->dp_link.test_response = in dp_link_parse_request()
715 static int dp_link_parse_sink_count(struct dp_link *dp_link) in dp_link_parse_sink_count() argument
720 struct dp_link_private *link = container_of(dp_link, in dp_link_parse_sink_count()
721 struct dp_link_private, dp_link); in dp_link_parse_sink_count()
724 &link->dp_link.sink_count); in dp_link_parse_sink_count()
730 cp_ready = link->dp_link.sink_count & DP_SINK_CP_READY; in dp_link_parse_sink_count()
732 link->dp_link.sink_count = in dp_link_parse_sink_count()
733 DP_GET_SINK_COUNT(link->dp_link.sink_count); in dp_link_parse_sink_count()
736 link->dp_link.sink_count, cp_ready); in dp_link_parse_sink_count()
744 link->prev_sink_count = link->dp_link.sink_count; in dp_link_parse_sink_status_field()
745 dp_link_parse_sink_count(&link->dp_link); in dp_link_parse_sink_status_field()
775 link->dp_link.link_params.num_lanes = link->request.test_lane_count; in dp_link_process_link_training_request()
776 link->dp_link.link_params.rate = link->request.test_link_rate; in dp_link_process_link_training_request()
781 bool dp_link_send_test_response(struct dp_link *dp_link) in dp_link_send_test_response() argument
786 if (!dp_link) { in dp_link_send_test_response()
791 link = container_of(dp_link, struct dp_link_private, dp_link); in dp_link_send_test_response()
794 dp_link->test_response); in dp_link_send_test_response()
799 int dp_link_psm_config(struct dp_link *dp_link, in dp_link_psm_config() argument
805 if (!dp_link) { in dp_link_psm_config()
810 link = container_of(dp_link, struct dp_link_private, dp_link); in dp_link_psm_config()
822 dp_link->psm_enabled = enable; in dp_link_psm_config()
828 bool dp_link_send_edid_checksum(struct dp_link *dp_link, u8 checksum) in dp_link_send_edid_checksum() argument
833 if (!dp_link) { in dp_link_send_edid_checksum()
838 link = container_of(dp_link, struct dp_link_private, dp_link); in dp_link_send_edid_checksum()
866 link->dp_link.phy_params.v_level, in dp_link_parse_vx_px()
867 link->dp_link.phy_params.p_level); in dp_link_parse_vx_px()
868 link->dp_link.phy_params.v_level = in dp_link_parse_vx_px()
870 link->dp_link.phy_params.p_level = in dp_link_parse_vx_px()
873 link->dp_link.phy_params.v_level, in dp_link_parse_vx_px()
874 link->dp_link.phy_params.p_level); in dp_link_parse_vx_px()
906 link->dp_link.link_params.rate, in dp_link_process_phy_test_pattern_request()
907 link->dp_link.link_params.num_lanes); in dp_link_process_phy_test_pattern_request()
913 link->dp_link.link_params.num_lanes = link->request.test_lane_count; in dp_link_process_phy_test_pattern_request()
914 link->dp_link.link_params.rate = link->request.test_link_rate; in dp_link_process_phy_test_pattern_request()
946 link->dp_link.link_params.num_lanes) && in dp_link_process_link_status_update()
948 link->dp_link.link_params.num_lanes))) in dp_link_process_link_status_update()
953 link->dp_link.link_params.num_lanes), in dp_link_process_link_status_update()
955 link->dp_link.link_params.num_lanes)); in dp_link_process_link_status_update()
977 if (link->prev_sink_count == link->dp_link.sink_count) in dp_link_process_ds_port_status_change()
982 link->prev_sink_count = link->dp_link.sink_count; in dp_link_process_ds_port_status_change()
1002 link->dp_link.test_video = (const struct dp_link_test_video){ 0 }; in dp_link_reset_data()
1003 link->dp_link.test_video.test_bit_depth = DP_TEST_BIT_DEPTH_UNKNOWN; in dp_link_reset_data()
1004 link->dp_link.test_audio = (const struct dp_link_test_audio){ 0 }; in dp_link_reset_data()
1005 link->dp_link.phy_params.phy_test_pattern_sel = 0; in dp_link_reset_data()
1006 link->dp_link.sink_request = 0; in dp_link_reset_data()
1007 link->dp_link.test_response = 0; in dp_link_reset_data()
1018 int dp_link_process_request(struct dp_link *dp_link) in dp_link_process_request() argument
1023 if (!dp_link) { in dp_link_process_request()
1028 link = container_of(dp_link, struct dp_link_private, dp_link); in dp_link_process_request()
1035 dp_link->sink_request |= DP_TEST_LINK_EDID_READ; in dp_link_process_request()
1041 dp_link->sink_request |= DS_PORT_STATUS_CHANGED; in dp_link_process_request()
1047 dp_link->sink_request |= DP_TEST_LINK_TRAINING; in dp_link_process_request()
1053 dp_link->sink_request |= DP_TEST_LINK_PHY_TEST_PATTERN; in dp_link_process_request()
1059 dp_link->sink_request |= DP_LINK_STATUS_UPDATED; in dp_link_process_request()
1065 dp_link->sink_request |= DP_TEST_LINK_VIDEO_PATTERN; in dp_link_process_request()
1069 dp_link->sink_request |= DP_TEST_LINK_AUDIO_PATTERN; in dp_link_process_request()
1076 int dp_link_get_colorimetry_config(struct dp_link *dp_link) in dp_link_get_colorimetry_config() argument
1081 if (!dp_link) { in dp_link_get_colorimetry_config()
1086 link = container_of(dp_link, struct dp_link_private, dp_link); in dp_link_get_colorimetry_config()
1093 cc = link->dp_link.test_video.test_dyn_range; in dp_link_get_colorimetry_config()
1100 int dp_link_adjust_levels(struct dp_link *dp_link, u8 *link_status) in dp_link_adjust_levels() argument
1105 if (!dp_link) { in dp_link_adjust_levels()
1111 for (i = 0; i < dp_link->link_params.num_lanes; i++) { in dp_link_adjust_levels()
1123 dp_link->phy_params.v_level = v_max >> DP_TRAIN_VOLTAGE_SWING_SHIFT; in dp_link_adjust_levels()
1124 dp_link->phy_params.p_level = p_max >> DP_TRAIN_PRE_EMPHASIS_SHIFT; in dp_link_adjust_levels()
1130 if (dp_link->phy_params.v_level > DP_TRAIN_VOLTAGE_SWING_MAX) { in dp_link_adjust_levels()
1132 dp_link->phy_params.v_level, in dp_link_adjust_levels()
1134 dp_link->phy_params.v_level = DP_TRAIN_VOLTAGE_SWING_MAX; in dp_link_adjust_levels()
1137 if (dp_link->phy_params.p_level > DP_TRAIN_PRE_EMPHASIS_MAX) { in dp_link_adjust_levels()
1139 dp_link->phy_params.p_level, in dp_link_adjust_levels()
1141 dp_link->phy_params.p_level = DP_TRAIN_PRE_EMPHASIS_MAX; in dp_link_adjust_levels()
1144 if ((dp_link->phy_params.p_level > DP_TRAIN_PRE_EMPHASIS_LVL_1) in dp_link_adjust_levels()
1145 && (dp_link->phy_params.v_level == in dp_link_adjust_levels()
1148 dp_link->phy_params.p_level, in dp_link_adjust_levels()
1150 dp_link->phy_params.p_level = DP_TRAIN_PRE_EMPHASIS_LVL_1; in dp_link_adjust_levels()
1154 dp_link->phy_params.v_level, dp_link->phy_params.p_level); in dp_link_adjust_levels()
1159 u32 dp_link_get_test_bits_depth(struct dp_link *dp_link, u32 bpp) in dp_link_get_test_bits_depth() argument
1189 struct dp_link *dp_link_get(struct device *dev, struct drm_dp_aux *aux) in dp_link_get()
1192 struct dp_link *dp_link; in dp_link_get() local
1207 dp_link = &link->dp_link; in dp_link_get()
1209 return dp_link; in dp_link_get()