Hi Bhanu, Thanks for the patch, functionality wise looks good. Have you tested this with kms_vrr IGT, do we see the vrr_range properly exposed? Also please find some comments below On Sat, Jun 20, 2020 at 02:53:56AM +0530, Bhanuprakash Modem wrote: > [Why] > It's useful to know the min and max vrr range for IGT testing. > > [How] > Expose the min and max vfreq for the connector via a debugfs file > on the connector, "vrr_range". > > Example usage: cat /sys/kernel/debug/dri/0/DP-1/vrr_range > > v2: > * Fix the typo in max_vfreq (Manasi) > * Change the name of node to i915_vrr_info so we can add > other vrr info for more debug info (Manasi) > * Change the VRR capable to display Yes or No (Manasi) > * Fix indentation checkpatch errors (Manasi) > v3: > * Remove the unnecessary debug print (Manasi) > v4: > * Rebase > v5: > * Rename to vrr_range to match AMD debugfs > v6: > * Rebase (manasi) > v7: > * Fix cmpilation due to rebase > v8: > * Move debugfs node creation logic to DRM (Emil) > * Remove AMD specific logic (Emil) > > Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@xxxxxxxxx> > Signed-off-by: Manasi Navare <manasi.d.navare@xxxxxxxxx> > Cc: Jani Nikula <jani.nikula@xxxxxxxxxxxxxxx> > Cc: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > Cc: Harry Wentland <harry.wentland@xxxxxxx> > --- > .../amd/display/amdgpu_dm/amdgpu_dm_debugfs.c | 20 ----------------- > drivers/gpu/drm/drm_debugfs.c | 22 +++++++++++++++++++ > 2 files changed, 22 insertions(+), 20 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 076af267b488..71387d2af2ed 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 > @@ -820,24 +820,6 @@ static int output_bpc_show(struct seq_file *m, void *data) > return res; > } > > -/* > - * Returns the min and max vrr vfreq through the connector's debugfs file. > - * Example usage: cat /sys/kernel/debug/dri/0/DP-1/vrr_range > - */ > -static int vrr_range_show(struct seq_file *m, void *data) > -{ > - struct drm_connector *connector = m->private; > - struct amdgpu_dm_connector *aconnector = to_amdgpu_dm_connector(connector); > - > - if (connector->status != connector_status_connected) > - return -ENODEV; > - > - seq_printf(m, "Min: %u\n", (unsigned int)aconnector->min_vfreq); > - seq_printf(m, "Max: %u\n", (unsigned int)aconnector->max_vfreq); > - > - return 0; > -} > - > #ifdef CONFIG_DRM_AMD_DC_HDCP > /* > * Returns the HDCP capability of the Display (1.4 for now). > @@ -1001,7 +983,6 @@ static ssize_t dp_dpcd_data_read(struct file *f, char __user *buf, > DEFINE_SHOW_ATTRIBUTE(dmub_fw_state); > DEFINE_SHOW_ATTRIBUTE(dmub_tracebuffer); > DEFINE_SHOW_ATTRIBUTE(output_bpc); > -DEFINE_SHOW_ATTRIBUTE(vrr_range); > #ifdef CONFIG_DRM_AMD_DC_HDCP > DEFINE_SHOW_ATTRIBUTE(hdcp_sink_capability); > #endif > @@ -1059,7 +1040,6 @@ static const struct { > {"phy_settings", &dp_phy_settings_debugfs_fop}, > {"test_pattern", &dp_phy_test_pattern_fops}, > {"output_bpc", &output_bpc_fops}, > - {"vrr_range", &vrr_range_fops}, > #ifdef CONFIG_DRM_AMD_DC_HDCP > {"hdcp_sink_capability", &hdcp_sink_capability_fops}, > #endif I think the AMD sepecific debugfs removal should be in a separate patch follwing the drm_debugfs addition patch because from merging pov that patch will get merged through AMD tree and drm patch will get merged through drm_misc Also cc the amd dev mailing list for that patch. @Harry does that sound okay from merging pov? Manasi > diff --git a/drivers/gpu/drm/drm_debugfs.c b/drivers/gpu/drm/drm_debugfs.c > index bfe4602f206b..3d7182001004 100644 > --- a/drivers/gpu/drm/drm_debugfs.c > +++ b/drivers/gpu/drm/drm_debugfs.c > @@ -376,6 +376,24 @@ static ssize_t edid_write(struct file *file, const char __user *ubuf, > return (ret) ? ret : len; > } > > +/* > + * Returns the min and max vrr vfreq through the connector's debugfs file. > + * Example usage: cat /sys/kernel/debug/dri/0/DP-1/vrr_range > + */ > +static int vrr_range_show(struct seq_file *m, void *data) > +{ > + struct drm_connector *connector = m->private; > + > + if (connector->status != connector_status_connected) > + return -ENODEV; > + > + seq_printf(m, "Min: %u\n", (u8)connector->display_info.monitor_range.min_vfreq); > + seq_printf(m, "Max: %u\n", (u8)connector->display_info.monitor_range.max_vfreq); > + > + return 0; > +} > +DEFINE_SHOW_ATTRIBUTE(vrr_range); > + > static const struct file_operations drm_edid_fops = { > .owner = THIS_MODULE, > .open = edid_open, > @@ -413,6 +431,10 @@ void drm_debugfs_connector_add(struct drm_connector *connector) > /* edid */ > debugfs_create_file("edid_override", S_IRUGO | S_IWUSR, root, connector, > &drm_edid_fops); > + > + /* vrr range */ > + debugfs_create_file("vrr_range", S_IRUGO, root, connector, > + &vrr_range_fops); > } > > void drm_debugfs_connector_remove(struct drm_connector *connector) > -- > 2.20.1 > > _______________________________________________ > dri-devel mailing list > dri-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/dri-devel _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel