From: Fangzhi Zuo <jerry....@amd.com>

1. Catch invalid link_rate and link_count settings
2. Call dc interface to overwrite preferred link settings, and wait
until next stream update to apply the new settings.

Signed-off-by: Fangzhi Zuo <jerry....@amd.com>
Reviewed-by: Nicholas Kazlauskas <nicholas.kazlaus...@amd.com>
Acked-by: Solomon Chiu <solomon.c...@amd.com>
---
 .../drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c 
b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
index 927de7678a4f..f6f10a8c3e43 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
@@ -149,7 +149,7 @@ static int parse_write_buffer_into_params(char *wr_buf, 
uint32_t wr_buf_size,
  *
  * --- to get dp configuration
  *
- * cat link_settings
+ * cat /sys/kernel/debug/dri/0/DP-x/link_settings
  *
  * It will list current, verified, reported, preferred dp configuration.
  * current -- for current video mode
@@ -162,7 +162,7 @@ static int parse_write_buffer_into_params(char *wr_buf, 
uint32_t wr_buf_size,
  * echo <lane_count>  <link_rate> > link_settings
  *
  * for example, to force to  2 lane, 2.7GHz,
- * echo 4 0xa > link_settings
+ * echo 4 0xa > /sys/kernel/debug/dri/0/DP-x/link_settings
  *
  * spread_spectrum could not be changed dynamically.
  *
@@ -170,7 +170,7 @@ static int parse_write_buffer_into_params(char *wr_buf, 
uint32_t wr_buf_size,
  * done. please check link settings after force operation to see if HW get
  * programming.
  *
- * cat link_settings
+ * cat /sys/kernel/debug/dri/0/DP-x/link_settings
  *
  * check current and preferred settings.
  *
@@ -254,7 +254,7 @@ static ssize_t dp_link_settings_write(struct file *f, const 
char __user *buf,
        int max_param_num = 2;
        uint8_t param_nums = 0;
        long param[2];
-       bool valid_input = false;
+       bool valid_input = true;
 
        if (size == 0)
                return -EINVAL;
@@ -281,9 +281,9 @@ static ssize_t dp_link_settings_write(struct file *f, const 
char __user *buf,
        case LANE_COUNT_ONE:
        case LANE_COUNT_TWO:
        case LANE_COUNT_FOUR:
-               valid_input = true;
                break;
        default:
+               valid_input = false;
                break;
        }
 
@@ -293,9 +293,9 @@ static ssize_t dp_link_settings_write(struct file *f, const 
char __user *buf,
        case LINK_RATE_RBR2:
        case LINK_RATE_HIGH2:
        case LINK_RATE_HIGH3:
-               valid_input = true;
                break;
        default:
+               valid_input = false;
                break;
        }
 
@@ -309,10 +309,11 @@ static ssize_t dp_link_settings_write(struct file *f, 
const char __user *buf,
         * spread spectrum will not be changed
         */
        prefer_link_settings.link_spread = link->cur_link_settings.link_spread;
+       prefer_link_settings.use_link_rate_set = false;
        prefer_link_settings.lane_count = param[0];
        prefer_link_settings.link_rate = param[1];
 
-       dc_link_set_preferred_link_settings(dc, &prefer_link_settings, link);
+       dc_link_set_preferred_training_settings(dc, &prefer_link_settings, 
NULL, link, true);
 
        kfree(wr_buf);
        return size;
-- 
2.29.0

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to