Lines Matching full:link
48 struct dp_link_info *link) in dp_aux_link_power_up() argument
53 if (link->revision < 0x11) in dp_aux_link_power_up()
73 struct dp_link_info *link) in dp_aux_link_power_down() argument
78 if (link->revision < 0x11) in dp_aux_link_power_down()
95 static int dp_link_get_period(struct dp_link_private *link, int const addr) in dp_link_get_period() argument
102 if (drm_dp_dpcd_readb(link->aux, addr, &data) < 0) { in dp_link_get_period()
121 static int dp_link_parse_audio_channel_period(struct dp_link_private *link) in dp_link_parse_audio_channel_period() argument
124 struct dp_link_test_audio *req = &link->dp_link.test_audio; in dp_link_parse_audio_channel_period()
126 ret = dp_link_get_period(link, DP_TEST_AUDIO_PERIOD_CH1); in dp_link_parse_audio_channel_period()
133 ret = dp_link_get_period(link, DP_TEST_AUDIO_PERIOD_CH2); in dp_link_parse_audio_channel_period()
141 ret = dp_link_get_period(link, DP_TEST_AUDIO_PERIOD_CH3); in dp_link_parse_audio_channel_period()
148 ret = dp_link_get_period(link, DP_TEST_AUDIO_PERIOD_CH4); in dp_link_parse_audio_channel_period()
155 ret = dp_link_get_period(link, DP_TEST_AUDIO_PERIOD_CH5); in dp_link_parse_audio_channel_period()
162 ret = dp_link_get_period(link, DP_TEST_AUDIO_PERIOD_CH6); in dp_link_parse_audio_channel_period()
169 ret = dp_link_get_period(link, DP_TEST_AUDIO_PERIOD_CH7); in dp_link_parse_audio_channel_period()
176 ret = dp_link_get_period(link, DP_TEST_AUDIO_PERIOD_CH8); in dp_link_parse_audio_channel_period()
186 static int dp_link_parse_audio_pattern_type(struct dp_link_private *link) in dp_link_parse_audio_pattern_type() argument
193 rlen = drm_dp_dpcd_readb(link->aux, in dp_link_parse_audio_pattern_type()
196 DRM_ERROR("failed to read link audio mode. rlen=%zd\n", rlen); in dp_link_parse_audio_pattern_type()
207 link->dp_link.test_audio.test_audio_pattern_type = data; in dp_link_parse_audio_pattern_type()
213 static int dp_link_parse_audio_mode(struct dp_link_private *link) in dp_link_parse_audio_mode() argument
223 rlen = drm_dp_dpcd_readb(link->aux, DP_TEST_AUDIO_MODE, &data); in dp_link_parse_audio_mode()
225 DRM_ERROR("failed to read link audio mode. rlen=%zd\n", rlen); in dp_link_parse_audio_mode()
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()
255 static int dp_link_parse_audio_pattern_params(struct dp_link_private *link) in dp_link_parse_audio_pattern_params() argument
259 ret = dp_link_parse_audio_mode(link); in dp_link_parse_audio_pattern_params()
263 ret = dp_link_parse_audio_pattern_type(link); in dp_link_parse_audio_pattern_params()
267 ret = dp_link_parse_audio_channel_period(link); in dp_link_parse_audio_pattern_params()
305 static int dp_link_parse_timing_params1(struct dp_link_private *link, in dp_link_parse_timing_params1() argument
314 /* Read the requested video link pattern (Byte 0x221). */ in dp_link_parse_timing_params1()
315 rlen = drm_dp_dpcd_read(link->aux, addr, bp, len); in dp_link_parse_timing_params1()
326 static int dp_link_parse_timing_params2(struct dp_link_private *link, in dp_link_parse_timing_params2() argument
336 /* Read the requested video link pattern (Byte 0x221). */ in dp_link_parse_timing_params2()
337 rlen = drm_dp_dpcd_read(link->aux, addr, bp, len); in dp_link_parse_timing_params2()
349 static int dp_link_parse_timing_params3(struct dp_link_private *link, in dp_link_parse_timing_params3() argument
356 rlen = drm_dp_dpcd_read(link->aux, addr, &bp, len); in dp_link_parse_timing_params3()
368 * @link: Display Port Driver data
370 * Returns 0 if it successfully parses the video link pattern and the link
373 static int dp_link_parse_video_pattern_params(struct dp_link_private *link) in dp_link_parse_video_pattern_params() argument
379 rlen = drm_dp_dpcd_readb(link->aux, DP_TEST_PATTERN, &bp); in dp_link_parse_video_pattern_params()
381 DRM_ERROR("failed to read link video pattern. rlen=%zd\n", in dp_link_parse_video_pattern_params()
387 DRM_ERROR("invalid link video pattern = 0x%x\n", bp); in dp_link_parse_video_pattern_params()
392 link->dp_link.test_video.test_video_pattern = bp; in dp_link_parse_video_pattern_params()
395 rlen = drm_dp_dpcd_readb(link->aux, DP_TEST_MISC0, &bp); in dp_link_parse_video_pattern_params()
397 DRM_ERROR("failed to read link bit depth. rlen=%zd\n", rlen); in dp_link_parse_video_pattern_params()
402 link->dp_link.test_video.test_dyn_range = in dp_link_parse_video_pattern_params()
408 DRM_ERROR("invalid link bit depth = 0x%x\n", bp); in dp_link_parse_video_pattern_params()
413 link->dp_link.test_video.test_bit_depth = bp; in dp_link_parse_video_pattern_params()
416 ret = dp_link_parse_timing_params1(link, DP_TEST_H_TOTAL_HI, 2, in dp_link_parse_video_pattern_params()
417 &link->dp_link.test_video.test_h_total); in dp_link_parse_video_pattern_params()
423 ret = dp_link_parse_timing_params1(link, DP_TEST_V_TOTAL_HI, 2, in dp_link_parse_video_pattern_params()
424 &link->dp_link.test_video.test_v_total); in dp_link_parse_video_pattern_params()
430 ret = dp_link_parse_timing_params1(link, DP_TEST_H_START_HI, 2, in dp_link_parse_video_pattern_params()
431 &link->dp_link.test_video.test_h_start); in dp_link_parse_video_pattern_params()
437 ret = dp_link_parse_timing_params1(link, DP_TEST_V_START_HI, 2, in dp_link_parse_video_pattern_params()
438 &link->dp_link.test_video.test_v_start); in dp_link_parse_video_pattern_params()
444 ret = dp_link_parse_timing_params2(link, DP_TEST_HSYNC_HI, 2, 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()
452 ret = dp_link_parse_timing_params2(link, DP_TEST_VSYNC_HI, 2, 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()
460 ret = dp_link_parse_timing_params1(link, DP_TEST_H_WIDTH_HI, 2, in dp_link_parse_video_pattern_params()
461 &link->dp_link.test_video.test_h_width); in dp_link_parse_video_pattern_params()
467 ret = dp_link_parse_timing_params1(link, DP_TEST_V_HEIGHT_HI, 2, in dp_link_parse_video_pattern_params()
468 &link->dp_link.test_video.test_v_height); in dp_link_parse_video_pattern_params()
474 ret = dp_link_parse_timing_params3(link, DP_TEST_MISC1, 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()
482 ret = dp_link_parse_timing_params3(link, DP_TEST_REFRESH_RATE_NUMERATOR, in dp_link_parse_video_pattern_params()
483 &link->dp_link.test_video.test_rr_n); in dp_link_parse_video_pattern_params()
489 DRM_DEBUG_DP("link video pattern = 0x%x\n" in dp_link_parse_video_pattern_params()
490 "link dynamic range = 0x%x\n" in dp_link_parse_video_pattern_params()
491 "link bit depth = 0x%x\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()
522 * dp_link_parse_link_training_params() - parses link training parameters from
524 * @link: Display Port Driver data
526 * Returns 0 if it successfully parses the link rate (Byte 0x219) and lane
529 static int dp_link_parse_link_training_params(struct dp_link_private *link) in dp_link_parse_link_training_params() argument
534 rlen = drm_dp_dpcd_readb(link->aux, DP_TEST_LINK_RATE, &bp); in dp_link_parse_link_training_params()
536 DRM_ERROR("failed to read link rate. rlen=%zd\n", rlen); in dp_link_parse_link_training_params()
541 DRM_ERROR("invalid link rate = 0x%x\n", bp); in dp_link_parse_link_training_params()
545 link->request.test_link_rate = bp; in dp_link_parse_link_training_params()
546 DRM_DEBUG_DP("link rate = 0x%x\n", link->request.test_link_rate); in dp_link_parse_link_training_params()
548 rlen = drm_dp_dpcd_readb(link->aux, DP_TEST_LANE_COUNT, &bp); in dp_link_parse_link_training_params()
560 link->request.test_lane_count = bp; in dp_link_parse_link_training_params()
561 DRM_DEBUG_DP("lane count = 0x%x\n", link->request.test_lane_count); in dp_link_parse_link_training_params()
566 * dp_parse_phy_test_params() - parses the phy link parameters
567 * @link: Display Port Driver data
569 * Parses the DPCD (Byte 0x248) for the DP PHY link pattern that is being
572 static int dp_link_parse_phy_test_params(struct dp_link_private *link) in dp_link_parse_phy_test_params() argument
577 rlen = drm_dp_dpcd_readb(link->aux, DP_PHY_TEST_PATTERN, in dp_link_parse_phy_test_params()
580 DRM_ERROR("failed to read phy link pattern. rlen=%zd\n", rlen); in dp_link_parse_phy_test_params()
584 link->dp_link.phy_params.phy_test_pattern_sel = data & 0x07; in dp_link_parse_phy_test_params()
603 * dp_link_is_video_audio_test_requested() - checks for audio/video link request
604 * @link: link requested by the sink
606 * Returns true if the requested link is a permitted audio/video link.
608 static bool dp_link_is_video_audio_test_requested(u32 link) in dp_link_is_video_audio_test_requested() argument
614 return ((link & video_audio_test) && in dp_link_is_video_audio_test_requested()
615 !(link & ~video_audio_test)); in dp_link_is_video_audio_test_requested()
619 * dp_link_parse_request() - parses link request parameters from sink
620 * @link: Display Port Driver data
622 * Parses the DPCD to check if an automated link is requested (Byte 0x201),
623 * and what type of link automation is being requested (Byte 0x218).
625 static int dp_link_parse_request(struct dp_link_private *link) in dp_link_parse_request() argument
633 * whether an automated link has been requested by the sink. in dp_link_parse_request()
635 rlen = drm_dp_dpcd_readb(link->aux, in dp_link_parse_request()
650 * Read the link request byte (Byte 0x218) to determine what type in dp_link_parse_request()
651 * of automated link has been requested by the sink. in dp_link_parse_request()
653 rlen = drm_dp_dpcd_readb(link->aux, DP_TEST_REQUEST, &data); in dp_link_parse_request()
660 DRM_DEBUG_DP("link 0x%x not supported\n", data); in dp_link_parse_request()
665 link->request.test_requested = data; in dp_link_parse_request()
666 if (link->request.test_requested == DP_TEST_LINK_PHY_TEST_PATTERN) { in dp_link_parse_request()
667 ret = dp_link_parse_phy_test_params(link); in dp_link_parse_request()
670 ret = dp_link_parse_link_training_params(link); in dp_link_parse_request()
675 if (link->request.test_requested == DP_TEST_LINK_TRAINING) { in dp_link_parse_request()
676 ret = dp_link_parse_link_training_params(link); in dp_link_parse_request()
682 link->request.test_requested)) { in dp_link_parse_request()
683 ret = dp_link_parse_video_pattern_params(link); in dp_link_parse_request()
687 ret = dp_link_parse_audio_pattern_params(link); in dp_link_parse_request()
691 * Send a DP_TEST_ACK if all link parameters are valid, otherwise send in dp_link_parse_request()
695 link->dp_link.test_response = DP_TEST_NAK; in dp_link_parse_request()
697 if (link->request.test_requested != DP_TEST_LINK_EDID_READ) 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()
709 * @dp_link: pointer to link module data
720 struct dp_link_private *link = container_of(dp_link, in dp_link_parse_sink_count() local
723 rlen = drm_dp_dpcd_readb(link->aux, DP_SINK_COUNT, 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()
740 static void dp_link_parse_sink_status_field(struct dp_link_private *link) in dp_link_parse_sink_status_field() argument
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()
747 len = drm_dp_dpcd_read_link_status(link->aux, in dp_link_parse_sink_status_field()
748 link->link_status); in dp_link_parse_sink_status_field()
750 DRM_ERROR("DP link status read failed\n"); in dp_link_parse_sink_status_field()
751 dp_link_parse_request(link); in dp_link_parse_sink_status_field()
756 * @link: Display Port link data
758 * This function will handle new link training requests that are initiated by
759 * the sink. In particular, it will update the requested lane count and link
760 * rate, and then trigger the link retraining procedure.
762 * The function will return 0 if a link training request has been processed,
765 static int dp_link_process_link_training_request(struct dp_link_private *link) in dp_link_process_link_training_request() argument
767 if (link->request.test_requested != DP_TEST_LINK_TRAINING) in dp_link_process_link_training_request()
770 DRM_DEBUG_DP("Test:0x%x link rate = 0x%x, lane count = 0x%x\n", in dp_link_process_link_training_request()
772 link->request.test_link_rate, in dp_link_process_link_training_request()
773 link->request.test_lane_count); in dp_link_process_link_training_request()
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()
783 struct dp_link_private *link = NULL; in dp_link_send_test_response() local
791 link = container_of(dp_link, struct dp_link_private, dp_link); in dp_link_send_test_response()
793 ret = drm_dp_dpcd_writeb(link->aux, DP_TEST_RESPONSE, in dp_link_send_test_response()
802 struct dp_link_private *link = NULL; in dp_link_psm_config() local
810 link = container_of(dp_link, struct dp_link_private, dp_link); in dp_link_psm_config()
812 mutex_lock(&link->psm_mutex); in dp_link_psm_config()
814 ret = dp_aux_link_power_down(link->aux, link_info); in dp_link_psm_config()
816 ret = dp_aux_link_power_up(link->aux, link_info); in dp_link_psm_config()
824 mutex_unlock(&link->psm_mutex); in dp_link_psm_config()
830 struct dp_link_private *link = NULL; in dp_link_send_edid_checksum() local
838 link = container_of(dp_link, struct dp_link_private, dp_link); in dp_link_send_edid_checksum()
840 ret = drm_dp_dpcd_writeb(link->aux, DP_TEST_EDID_CHECKSUM, in dp_link_send_edid_checksum()
845 static int dp_link_parse_vx_px(struct dp_link_private *link) in dp_link_parse_vx_px() argument
850 drm_dp_get_adjust_request_voltage(link->link_status, 0), in dp_link_parse_vx_px()
851 drm_dp_get_adjust_request_voltage(link->link_status, 1), in dp_link_parse_vx_px()
852 drm_dp_get_adjust_request_voltage(link->link_status, 2), in dp_link_parse_vx_px()
853 drm_dp_get_adjust_request_voltage(link->link_status, 3)); in dp_link_parse_vx_px()
856 drm_dp_get_adjust_request_pre_emphasis(link->link_status, 0), in dp_link_parse_vx_px()
857 drm_dp_get_adjust_request_pre_emphasis(link->link_status, 1), in dp_link_parse_vx_px()
858 drm_dp_get_adjust_request_pre_emphasis(link->link_status, 2), in dp_link_parse_vx_px()
859 drm_dp_get_adjust_request_pre_emphasis(link->link_status, 3)); in dp_link_parse_vx_px()
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()
869 drm_dp_get_adjust_request_voltage(link->link_status, 0); in dp_link_parse_vx_px()
870 link->dp_link.phy_params.p_level = in dp_link_parse_vx_px()
871 drm_dp_get_adjust_request_pre_emphasis(link->link_status, 0); 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()
880 * dp_link_process_phy_test_pattern_request() - process new phy link requests
881 * @link: Display Port Driver data
883 * This function will handle new phy link pattern requests that are initiated
884 * by the sink. The function will return 0 if a phy link pattern has been
888 struct dp_link_private *link) in dp_link_process_phy_test_pattern_request() argument
892 if (!(link->request.test_requested & DP_TEST_LINK_PHY_TEST_PATTERN)) { in dp_link_process_phy_test_pattern_request()
897 if (!is_link_rate_valid(link->request.test_link_rate) || in dp_link_process_phy_test_pattern_request()
898 !is_lane_count_valid(link->request.test_lane_count)) { in dp_link_process_phy_test_pattern_request()
899 DRM_ERROR("Invalid: link rate = 0x%x,lane count = 0x%x\n", in dp_link_process_phy_test_pattern_request()
900 link->request.test_link_rate, in dp_link_process_phy_test_pattern_request()
901 link->request.test_lane_count); in dp_link_process_phy_test_pattern_request()
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()
910 link->request.test_link_rate, in dp_link_process_phy_test_pattern_request()
911 link->request.test_lane_count); 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()
916 ret = dp_link_parse_vx_px(link); in dp_link_process_phy_test_pattern_request()
930 * dp_link_process_link_status_update() - processes link status updates
931 * @link: Display Port link module data
933 * This function will check for changes in the link status, e.g. clock
934 * recovery done on all lanes, and trigger link training if there is a
935 * failure/error on the link.
937 * The function will return 0 if the a link status update has been processed,
940 static int dp_link_process_link_status_update(struct dp_link_private *link) in dp_link_process_link_status_update() argument
942 if (!(get_link_status(link->link_status, in dp_link_process_link_status_update()
945 (drm_dp_clock_recovery_ok(link->link_status, in dp_link_process_link_status_update()
946 link->dp_link.link_params.num_lanes) && in dp_link_process_link_status_update()
947 drm_dp_channel_eq_ok(link->link_status, in dp_link_process_link_status_update()
948 link->dp_link.link_params.num_lanes))) in dp_link_process_link_status_update()
952 drm_dp_clock_recovery_ok(link->link_status, in dp_link_process_link_status_update()
953 link->dp_link.link_params.num_lanes), in dp_link_process_link_status_update()
954 drm_dp_clock_recovery_ok(link->link_status, in dp_link_process_link_status_update()
955 link->dp_link.link_params.num_lanes)); in dp_link_process_link_status_update()
962 * @link: Display Port Driver data
971 static int dp_link_process_ds_port_status_change(struct dp_link_private *link) in dp_link_process_ds_port_status_change() argument
973 if (get_link_status(link->link_status, DP_LANE_ALIGN_STATUS_UPDATED) & in dp_link_process_ds_port_status_change()
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()
987 static bool dp_link_is_video_pattern_requested(struct dp_link_private *link) in dp_link_is_video_pattern_requested() argument
989 return (link->request.test_requested & DP_TEST_LINK_VIDEO_PATTERN) in dp_link_is_video_pattern_requested()
990 && !(link->request.test_requested & in dp_link_is_video_pattern_requested()
994 static bool dp_link_is_audio_pattern_requested(struct dp_link_private *link) in dp_link_is_audio_pattern_requested() argument
996 return (link->request.test_requested & DP_TEST_LINK_AUDIO_PATTERN); in dp_link_is_audio_pattern_requested()
999 static void dp_link_reset_data(struct dp_link_private *link) in dp_link_reset_data() argument
1001 link->request = (const struct dp_link_request){ 0 }; in dp_link_reset_data()
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()
1012 * @dp_link: pointer to link module data
1016 * the start of a new link training request or sink status update.
1021 struct dp_link_private *link; in dp_link_process_request() local
1028 link = container_of(dp_link, struct dp_link_private, dp_link); in dp_link_process_request()
1030 dp_link_reset_data(link); in dp_link_process_request()
1032 dp_link_parse_sink_status_field(link); in dp_link_process_request()
1034 if (link->request.test_requested == DP_TEST_LINK_EDID_READ) { in dp_link_process_request()
1039 ret = dp_link_process_ds_port_status_change(link); in dp_link_process_request()
1045 ret = dp_link_process_link_training_request(link); in dp_link_process_request()
1051 ret = dp_link_process_phy_test_pattern_request(link); in dp_link_process_request()
1057 ret = dp_link_process_link_status_update(link); in dp_link_process_request()
1063 if (dp_link_is_video_pattern_requested(link)) { in dp_link_process_request()
1068 if (dp_link_is_audio_pattern_requested(link)) { in dp_link_process_request()
1079 struct dp_link_private *link; in dp_link_get_colorimetry_config() local
1086 link = container_of(dp_link, struct dp_link_private, dp_link); in dp_link_get_colorimetry_config()
1092 if (dp_link_is_video_pattern_requested(link)) in dp_link_get_colorimetry_config()
1093 cc = link->dp_link.test_video.test_dyn_range; in dp_link_get_colorimetry_config()
1191 struct dp_link_private *link; in dp_link_get() local
1199 link = devm_kzalloc(dev, sizeof(*link), GFP_KERNEL); in dp_link_get()
1200 if (!link) in dp_link_get()
1203 link->dev = dev; in dp_link_get()
1204 link->aux = aux; in dp_link_get()
1206 mutex_init(&link->psm_mutex); in dp_link_get()
1207 dp_link = &link->dp_link; in dp_link_get()