Message ID | 20200619212356.19285-4-bhanuprakash.modem@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | VRR capable attach prop in i915, DPCD helper, VRR debugfs | expand |
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@intel.com> > Signed-off-by: Manasi Navare <manasi.d.navare@intel.com> > Cc: Jani Nikula <jani.nikula@linux.intel.com> > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > Cc: Harry Wentland <harry.wentland@amd.com> > --- > .../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@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel
> -----Original Message----- > From: Navare, Manasi D <manasi.d.navare@intel.com> > Sent: Saturday, June 20, 2020 12:13 AM > To: Modem, Bhanuprakash <bhanuprakash.modem@intel.com> > Cc: dri-devel@lists.freedesktop.org; intel-gfx@lists.freedesktop.org > Subject: Re: [v8 3/3] drm/debug: Expose connector VRR monitor range via > debugfs > > 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? [Bhanu] Yes, the vrr_range is exposing properly. I have verified the debugfs node manually and through IGT. > > 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@intel.com> > > Signed-off-by: Manasi Navare <manasi.d.navare@intel.com> > > Cc: Jani Nikula <jani.nikula@linux.intel.com> > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > > Cc: Harry Wentland <harry.wentland@amd.com> > > --- > > .../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. [Bhanu] Sure > > @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@lists.freedesktop.org > > https://lists.freedesktop.org/mailman/listinfo/dri-devel
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 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)