[Freedreno] [PATCH v2 2/7] drm/msm/dp: reduce link rate if failed at link training 1
Stephen Boyd
swboyd at chromium.org
Thu Jul 22 19:05:30 UTC 2021
Quoting Kuogee Hsieh (2021-07-13 08:54:02)
> diff --git a/drivers/gpu/drm/msm/dp/dp_ctrl.c b/drivers/gpu/drm/msm/dp/dp_ctrl.c
> index 27fb0f0..92cf331 100644
> --- a/drivers/gpu/drm/msm/dp/dp_ctrl.c
> +++ b/drivers/gpu/drm/msm/dp/dp_ctrl.c
> @@ -1634,6 +1617,24 @@ void dp_ctrl_handle_sink_request(struct dp_ctrl *dp_ctrl)
> }
> }
>
> +static bool dp_ctrl_clock_recovery_any_ok(
> + const u8 link_status[DP_LINK_STATUS_SIZE],
> + int lane_count)
> +{
> + int lane_cnt;
> +
> + /*
> + * only interested in the lane number after reduced
> + * lane_cnt = 4, then only interested in 2 lanes
> + * lane_cnt = 2, then only interested in 1 lane
> + */
> + lane_cnt = lane_count >> 1;
> + if (lane_cnt == 0)
> + return false;
> +
> + return drm_dp_clock_recovery_ok(link_status, lane_count);
This doesn't work? Because drm_dp_clock_recovery_ok() requires every
lane to be OK whereas this function wants any lane to be OK? It may make
sense to have drm_dp_clock_recovery_ok() return false if lane_count == 0
too.
> +}
> +
> int dp_ctrl_on_link(struct dp_ctrl *dp_ctrl)
> {
> int rc = 0;
More information about the Freedreno
mailing list