* [PATCH v6 0/3] VRR capable attach prop in i915, DPCD helper, VRR debugfs
@ 2020-06-12 23:04 Manasi Navare
2020-06-12 23:04 ` [PATCH v6 1/3] drm/dp: DRM DP helper for reading Ignore MSA from DPCD Manasi Navare
` (6 more replies)
0 siblings, 7 replies; 17+ messages in thread
From: Manasi Navare @ 2020-06-12 23:04 UTC (permalink / raw)
To: intel-gfx, dri-devel; +Cc: Manasi Navare
This is an initial set of patches for enabling VRR support in i915.
This series has patches for:
1. adding a drm dpcd helper to read ignore MSA
bit in sink's DPCD indicating sink support for VRR
2. Attach and set VRR capable connector prop for Intel DP conn
3. Expose VRR min and max through debugfs
Aditya Swarup (1):
drm/i915/dp: Attach and set drm connector VRR property
Bhanuprakash Modem (1):
drm/i915/dp: Expose connector VRR monitor range via debugfs
Manasi Navare (1):
drm/dp: DRM DP helper for reading Ignore MSA from DPCD
.../drm/i915/display/intel_display_debugfs.c | 20 ++++++++++++++
drivers/gpu/drm/i915/display/intel_dp.c | 27 +++++++++++++++++++
drivers/gpu/drm/i915/display/intel_dp.h | 2 ++
include/drm/drm_dp_helper.h | 8 ++++++
4 files changed, 57 insertions(+)
--
2.19.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH v6 1/3] drm/dp: DRM DP helper for reading Ignore MSA from DPCD
2020-06-12 23:04 [PATCH v6 0/3] VRR capable attach prop in i915, DPCD helper, VRR debugfs Manasi Navare
@ 2020-06-12 23:04 ` Manasi Navare
2020-06-18 23:23 ` Manasi Navare
2020-06-12 23:04 ` [PATCH v6 2/3] drm/i915/dp: Attach and set drm connector VRR property Manasi Navare
` (5 subsequent siblings)
6 siblings, 1 reply; 17+ messages in thread
From: Manasi Navare @ 2020-06-12 23:04 UTC (permalink / raw)
To: intel-gfx, dri-devel; +Cc: Manasi Navare, Nicholas Kazlauskas
DP sink device sets the Ignore MSA bit in its
DP_DOWNSTREAM_PORT_COUNT register to indicate its ability to
ignore the MSA video timing parameters and its ability to support
seamless video timing change over a range of timing exposed by
DisplayID and EDID.
This is required for the sink to indicate that it is Adaptive sync
capable.
v3:
* Fi the typo in commit message (Manasi)
v2:
* Rename to describe what the function does (Jani Nikula)
Cc: Jani Nikula <jani.nikula@linux.intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Harry Wentland <harry.wentland@amd.com>
Cc: Nicholas Kazlauskas <Nicholas.Kazlauskas@amd.com>
Signed-off-by: Manasi Navare <manasi.d.navare@intel.com>
Reviewed-by: Harry Wentland <harry.wentland@amd.com>
---
include/drm/drm_dp_helper.h | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/include/drm/drm_dp_helper.h b/include/drm/drm_dp_helper.h
index 1165ec105638..e47dc22ebf50 100644
--- a/include/drm/drm_dp_helper.h
+++ b/include/drm/drm_dp_helper.h
@@ -1457,6 +1457,14 @@ drm_dp_alternate_scrambler_reset_cap(const u8 dpcd[DP_RECEIVER_CAP_SIZE])
DP_ALTERNATE_SCRAMBLER_RESET_CAP;
}
+/* Ignore MSA timing for Adaptive Sync support on DP 1.4 */
+static inline bool
+drm_dp_sink_can_do_video_without_timing_msa(const u8 dpcd[DP_RECEIVER_CAP_SIZE])
+{
+ return dpcd[DP_DOWN_STREAM_PORT_COUNT] &
+ DP_MSA_TIMING_PAR_IGNORED;
+}
+
/*
* DisplayPort AUX channel
*/
--
2.19.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH v6 2/3] drm/i915/dp: Attach and set drm connector VRR property
2020-06-12 23:04 [PATCH v6 0/3] VRR capable attach prop in i915, DPCD helper, VRR debugfs Manasi Navare
2020-06-12 23:04 ` [PATCH v6 1/3] drm/dp: DRM DP helper for reading Ignore MSA from DPCD Manasi Navare
@ 2020-06-12 23:04 ` Manasi Navare
2020-06-12 23:04 ` [PATCH v6 3/3] drm/i915/dp: Expose connector VRR monitor range via debugfs Manasi Navare
` (4 subsequent siblings)
6 siblings, 0 replies; 17+ messages in thread
From: Manasi Navare @ 2020-06-12 23:04 UTC (permalink / raw)
To: intel-gfx, dri-devel; +Cc: Manasi Navare, Aditya Swarup
From: Aditya Swarup <aditya.swarup@intel.com>
This function sets the VRR property for connector based
on the platform support, EDID monitor range and DP sink
DPCD capability of outputing video without msa
timing information.
v5:
* Fix the vrr prop not being set in kernel (Manasi)
* Unset the prop on connector disconnect (Manasi)
v4:
* Rebase (Mansi)
v3:
* intel_dp_is_vrr_capable can be used for debugfs, make it
non static (Manasi)
v2:
* Just set this in intel_dp_get_modes instead of new hook (Jani)
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Jani Nikula <jani.nikula@linux.intel.com>
Signed-off-by: Aditya Swarup <aditya.swarup@intel.com>
Signed-off-by: Manasi Navare <manasi.d.navare@intel.com>
---
drivers/gpu/drm/i915/display/intel_dp.c | 27 +++++++++++++++++++++++++
drivers/gpu/drm/i915/display/intel_dp.h | 2 ++
2 files changed, 29 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 42589cae766d..d0dba81cfb07 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -6149,6 +6149,9 @@ intel_dp_detect(struct drm_connector *connector,
if (status == connector_status_disconnected) {
memset(&intel_dp->compliance, 0, sizeof(intel_dp->compliance));
memset(intel_dp->dsc_dpcd, 0, sizeof(intel_dp->dsc_dpcd));
+ /*Reset the immutable VRR Capable property */
+ drm_connector_set_vrr_capable_property(connector,
+ false);
if (intel_dp->is_mst) {
drm_dbg_kms(&dev_priv->drm,
@@ -6256,6 +6259,23 @@ intel_dp_force(struct drm_connector *connector)
intel_display_power_put(dev_priv, aux_domain, wakeref);
}
+bool intel_dp_is_vrr_capable(struct drm_connector *connector)
+{
+ struct intel_dp *intel_dp = intel_attached_dp(to_intel_connector(connector));
+ const struct drm_display_info *info = &connector->display_info;
+ struct drm_i915_private *dev_priv = to_i915(connector->dev);
+
+ /*
+ * DP Sink is capable of Variable refresh video timings if
+ * Ignore MSA bit is set in DPCD.
+ * EDID monitor range also should be atleast 10 for reasonable
+ * Adaptive sync/ VRR end user experience.
+ */
+ return INTEL_GEN(dev_priv) >= 12 &&
+ drm_dp_sink_can_do_video_without_timing_msa(intel_dp->dpcd) &&
+ info->monitor_range.max_vfreq - info->monitor_range.min_vfreq > 10;
+}
+
static int intel_dp_get_modes(struct drm_connector *connector)
{
struct intel_connector *intel_connector = to_intel_connector(connector);
@@ -6264,6 +6284,10 @@ static int intel_dp_get_modes(struct drm_connector *connector)
edid = intel_connector->detect_edid;
if (edid) {
int ret = intel_connector_update_modes(connector, edid);
+
+ if (intel_dp_is_vrr_capable(connector))
+ drm_connector_set_vrr_capable_property(connector,
+ true);
if (ret)
return ret;
}
@@ -7325,6 +7349,9 @@ intel_dp_add_properties(struct intel_dp *intel_dp, struct drm_connector *connect
connector->state->scaling_mode = DRM_MODE_SCALE_ASPECT;
}
+
+ if (INTEL_GEN(dev_priv) >= 12)
+ drm_connector_attach_vrr_capable_property(connector);
}
static void intel_dp_init_panel_power_timestamps(struct intel_dp *intel_dp)
diff --git a/drivers/gpu/drm/i915/display/intel_dp.h b/drivers/gpu/drm/i915/display/intel_dp.h
index 0a8950f744f6..db895a3cd93f 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.h
+++ b/drivers/gpu/drm/i915/display/intel_dp.h
@@ -14,6 +14,7 @@ enum pipe;
enum port;
struct drm_connector_state;
struct drm_encoder;
+struct drm_connector;
struct drm_i915_private;
struct drm_modeset_acquire_ctx;
struct drm_dp_vsc_sdp;
@@ -120,6 +121,7 @@ void intel_read_dp_sdp(struct intel_encoder *encoder,
unsigned int type);
bool intel_digital_port_connected(struct intel_encoder *encoder);
void intel_dp_process_phy_request(struct intel_dp *intel_dp);
+bool intel_dp_is_vrr_capable(struct drm_connector *connector);
static inline unsigned int intel_dp_unused_lane_mask(int lane_count)
{
--
2.19.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH v6 3/3] drm/i915/dp: Expose connector VRR monitor range via debugfs
2020-06-12 23:04 [PATCH v6 0/3] VRR capable attach prop in i915, DPCD helper, VRR debugfs Manasi Navare
2020-06-12 23:04 ` [PATCH v6 1/3] drm/dp: DRM DP helper for reading Ignore MSA from DPCD Manasi Navare
2020-06-12 23:04 ` [PATCH v6 2/3] drm/i915/dp: Attach and set drm connector VRR property Manasi Navare
@ 2020-06-12 23:04 ` Manasi Navare
2020-06-12 23:56 ` [PATCH v7 " Manasi Navare
` (3 more replies)
2020-06-19 21:11 ` [v6 0/3] VRR capable attach prop in i915, DPCD helper, VRR debugfs Bhanuprakash Modem
` (3 subsequent siblings)
6 siblings, 4 replies; 17+ messages in thread
From: Manasi Navare @ 2020-06-12 23:04 UTC (permalink / raw)
To: intel-gfx, dri-devel; +Cc: Manasi Navare, Bhanuprakash Modem
From: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
[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
v6:
* Rebase (manasi)
v5:
* Rename to vrr_range to match AMD debugfs
v4:
* Rebase
v3:
* Remove the unnecessary debug print (Manasi)
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)
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>
Tested-by: Manasi Navare <manasi.d.navare@intel.com>
---
.../drm/i915/display/intel_display_debugfs.c | 20 +++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_display_debugfs.c b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
index 28dd717e943a..fc05d3468a7b 100644
--- a/drivers/gpu/drm/i915/display/intel_display_debugfs.c
+++ b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
@@ -2185,6 +2185,21 @@ static const struct file_operations i915_dsc_fec_support_fops = {
.write = i915_dsc_fec_support_write
};
+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, "Vrr_capable: %s\n", yesno(intel_dp_is_vrr_capable(connector)));
+ 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);
+
/**
* intel_connector_debugfs_add - add i915 specific connector debugfs files
* @connector: pointer to a registered drm_connector
@@ -2224,6 +2239,11 @@ int intel_connector_debugfs_add(struct drm_connector *connector)
debugfs_create_file("i915_dsc_fec_support", S_IRUGO, root,
connector, &i915_dsc_fec_support_fops);
+ if (INTEL_GEN(dev_priv) >= 12)
+ debugfs_create_file("vrr_range", S_IRUGO,
+ root, connector, &vrr_range_fops);
+ }
+
/* Legacy panels doesn't lpsp on any platform */
if ((INTEL_GEN(dev_priv) >= 9 || IS_HASWELL(dev_priv) ||
IS_BROADWELL(dev_priv)) &&
--
2.19.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH v7 3/3] drm/i915/dp: Expose connector VRR monitor range via debugfs
2020-06-12 23:04 ` [PATCH v6 3/3] drm/i915/dp: Expose connector VRR monitor range via debugfs Manasi Navare
@ 2020-06-12 23:56 ` Manasi Navare
2020-06-15 21:36 ` Emil Velikov
2020-06-13 2:00 ` [Intel-gfx] [PATCH v6 " kernel test robot
` (2 subsequent siblings)
3 siblings, 1 reply; 17+ messages in thread
From: Manasi Navare @ 2020-06-12 23:56 UTC (permalink / raw)
To: intel-gfx, dri-devel; +Cc: Manasi Navare, Bhanuprakash Modem
From: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
[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
v7:
* Fix cmpilation due to rebase
v6:
* Rebase (manasi)
v5:
* Rename to vrr_range to match AMD debugfs
v4:
* Rebase
v3:
* Remove the unnecessary debug print (Manasi)
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)
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>
Tested-by: Manasi Navare <manasi.d.navare@intel.com>
---
.../drm/i915/display/intel_display_debugfs.c | 22 ++++++++++++++++++-
1 file changed, 21 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display_debugfs.c b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
index 28dd717e943a..2921f7d2a26e 100644
--- a/drivers/gpu/drm/i915/display/intel_display_debugfs.c
+++ b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
@@ -2185,6 +2185,21 @@ static const struct file_operations i915_dsc_fec_support_fops = {
.write = i915_dsc_fec_support_write
};
+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, "Vrr_capable: %s\n", yesno(intel_dp_is_vrr_capable(connector)));
+ 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);
+
/**
* intel_connector_debugfs_add - add i915 specific connector debugfs files
* @connector: pointer to a registered drm_connector
@@ -2220,10 +2235,15 @@ int intel_connector_debugfs_add(struct drm_connector *connector)
if (INTEL_GEN(dev_priv) >= 10 &&
((connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort &&
!to_intel_connector(connector)->mst_port) ||
- connector->connector_type == DRM_MODE_CONNECTOR_eDP))
+ connector->connector_type == DRM_MODE_CONNECTOR_eDP)) {
debugfs_create_file("i915_dsc_fec_support", S_IRUGO, root,
connector, &i915_dsc_fec_support_fops);
+ if (INTEL_GEN(dev_priv) >= 12)
+ debugfs_create_file("vrr_range", S_IRUGO,
+ root, connector, &vrr_range_fops);
+ }
+
/* Legacy panels doesn't lpsp on any platform */
if ((INTEL_GEN(dev_priv) >= 9 || IS_HASWELL(dev_priv) ||
IS_BROADWELL(dev_priv)) &&
--
2.19.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [Intel-gfx] [PATCH v6 3/3] drm/i915/dp: Expose connector VRR monitor range via debugfs
2020-06-12 23:04 ` [PATCH v6 3/3] drm/i915/dp: Expose connector VRR monitor range via debugfs Manasi Navare
2020-06-12 23:56 ` [PATCH v7 " Manasi Navare
@ 2020-06-13 2:00 ` kernel test robot
2020-06-13 5:41 ` kernel test robot
2020-06-16 5:43 ` kernel test robot
3 siblings, 0 replies; 17+ messages in thread
From: kernel test robot @ 2020-06-13 2:00 UTC (permalink / raw)
To: Manasi Navare, intel-gfx, dri-devel; +Cc: kbuild-all, Bhanuprakash Modem
[-- Attachment #1: Type: text/plain, Size: 8455 bytes --]
Hi Manasi,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on drm-intel/for-linux-next]
[also build test ERROR on drm-tip/drm-tip drm-exynos/exynos-drm-next linus/master next-20200612]
[cannot apply to tegra-drm/drm/tegra/for-next drm/drm-next v5.7]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
url: https://github.com/0day-ci/linux/commits/Manasi-Navare/VRR-capable-attach-prop-in-i915-DPCD-helper-VRR-debugfs/20200613-070517
base: git://anongit.freedesktop.org/drm-intel for-linux-next
config: x86_64-rhel (attached as .config)
compiler: gcc-9 (Debian 9.3.0-13) 9.3.0
reproduce (this is a W=1 build):
# save the attached .config to linux build tree
make W=1 ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All error/warnings (new ones prefixed by >>, old ones prefixed by <<):
drivers/gpu/drm/i915/display/intel_display_debugfs.c: In function 'intel_connector_debugfs_add':
>> drivers/gpu/drm/i915/display/intel_display_debugfs.c:2235:2: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
2235 | if (INTEL_GEN(dev_priv) >= 10 &&
| ^~
drivers/gpu/drm/i915/display/intel_display_debugfs.c:2241:3: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
2241 | if (INTEL_GEN(dev_priv) >= 12)
| ^~
drivers/gpu/drm/i915/display/intel_display_debugfs.c: At top level:
>> drivers/gpu/drm/i915/display/intel_display_debugfs.c:2247:2: error: expected identifier or '(' before 'if'
2247 | if ((INTEL_GEN(dev_priv) >= 9 || IS_HASWELL(dev_priv) ||
| ^~
>> drivers/gpu/drm/i915/display/intel_display_debugfs.c:2257:2: error: expected identifier or '(' before 'return'
2257 | return 0;
| ^~~~~~
>> drivers/gpu/drm/i915/display/intel_display_debugfs.c:2258:1: error: expected identifier or '(' before '}' token
2258 | }
| ^
drivers/gpu/drm/i915/display/intel_display_debugfs.c: In function 'intel_connector_debugfs_add':
>> drivers/gpu/drm/i915/display/intel_display_debugfs.c:2244:2: warning: control reaches end of non-void function [-Wreturn-type]
2244 | }
| ^
In file included from include/drm/drm_debugfs.h:36,
from drivers/gpu/drm/i915/display/intel_display_debugfs.c:6:
At top level:
drivers/gpu/drm/i915/display/intel_display_debugfs.c:2081:23: warning: 'i915_lpsp_capability_fops' defined but not used [-Wunused-const-variable=]
2081 | DEFINE_SHOW_ATTRIBUTE(i915_lpsp_capability);
| ^~~~~~~~~~~~~~~~~~~~
include/linux/seq_file.h:154:37: note: in definition of macro 'DEFINE_SHOW_ATTRIBUTE'
154 | static const struct file_operations __name ## _fops = { | ^~~~~~
vim +2247 drivers/gpu/drm/i915/display/intel_display_debugfs.c
670af3cf7a3a36 Bhanuprakash Modem 2020-06-12 2202
926b005cd8c4e3 Jani Nikula 2020-02-11 2203 /**
926b005cd8c4e3 Jani Nikula 2020-02-11 2204 * intel_connector_debugfs_add - add i915 specific connector debugfs files
926b005cd8c4e3 Jani Nikula 2020-02-11 2205 * @connector: pointer to a registered drm_connector
926b005cd8c4e3 Jani Nikula 2020-02-11 2206 *
926b005cd8c4e3 Jani Nikula 2020-02-11 2207 * Cleanup will be done by drm_connector_unregister() through a call to
926b005cd8c4e3 Jani Nikula 2020-02-11 2208 * drm_debugfs_connector_remove().
926b005cd8c4e3 Jani Nikula 2020-02-11 2209 *
926b005cd8c4e3 Jani Nikula 2020-02-11 2210 * Returns 0 on success, negative error codes on error.
926b005cd8c4e3 Jani Nikula 2020-02-11 2211 */
926b005cd8c4e3 Jani Nikula 2020-02-11 2212 int intel_connector_debugfs_add(struct drm_connector *connector)
926b005cd8c4e3 Jani Nikula 2020-02-11 2213 {
926b005cd8c4e3 Jani Nikula 2020-02-11 2214 struct dentry *root = connector->debugfs_entry;
926b005cd8c4e3 Jani Nikula 2020-02-11 2215 struct drm_i915_private *dev_priv = to_i915(connector->dev);
926b005cd8c4e3 Jani Nikula 2020-02-11 2216
926b005cd8c4e3 Jani Nikula 2020-02-11 2217 /* The connector must have been registered beforehands. */
926b005cd8c4e3 Jani Nikula 2020-02-11 2218 if (!root)
926b005cd8c4e3 Jani Nikula 2020-02-11 2219 return -ENODEV;
926b005cd8c4e3 Jani Nikula 2020-02-11 2220
926b005cd8c4e3 Jani Nikula 2020-02-11 2221 if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) {
926b005cd8c4e3 Jani Nikula 2020-02-11 2222 debugfs_create_file("i915_panel_timings", S_IRUGO, root,
926b005cd8c4e3 Jani Nikula 2020-02-11 2223 connector, &i915_panel_fops);
926b005cd8c4e3 Jani Nikula 2020-02-11 2224 debugfs_create_file("i915_psr_sink_status", S_IRUGO, root,
926b005cd8c4e3 Jani Nikula 2020-02-11 2225 connector, &i915_psr_sink_status_fops);
926b005cd8c4e3 Jani Nikula 2020-02-11 2226 }
926b005cd8c4e3 Jani Nikula 2020-02-11 2227
926b005cd8c4e3 Jani Nikula 2020-02-11 2228 if (connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort ||
926b005cd8c4e3 Jani Nikula 2020-02-11 2229 connector->connector_type == DRM_MODE_CONNECTOR_HDMIA ||
926b005cd8c4e3 Jani Nikula 2020-02-11 2230 connector->connector_type == DRM_MODE_CONNECTOR_HDMIB) {
926b005cd8c4e3 Jani Nikula 2020-02-11 2231 debugfs_create_file("i915_hdcp_sink_capability", S_IRUGO, root,
926b005cd8c4e3 Jani Nikula 2020-02-11 2232 connector, &i915_hdcp_sink_capability_fops);
926b005cd8c4e3 Jani Nikula 2020-02-11 2233 }
926b005cd8c4e3 Jani Nikula 2020-02-11 2234
926b005cd8c4e3 Jani Nikula 2020-02-11 @2235 if (INTEL_GEN(dev_priv) >= 10 &&
926b005cd8c4e3 Jani Nikula 2020-02-11 2236 (connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort ||
926b005cd8c4e3 Jani Nikula 2020-02-11 2237 connector->connector_type == DRM_MODE_CONNECTOR_eDP))
926b005cd8c4e3 Jani Nikula 2020-02-11 2238 debugfs_create_file("i915_dsc_fec_support", S_IRUGO, root,
926b005cd8c4e3 Jani Nikula 2020-02-11 2239 connector, &i915_dsc_fec_support_fops);
926b005cd8c4e3 Jani Nikula 2020-02-11 2240
670af3cf7a3a36 Bhanuprakash Modem 2020-06-12 @2241 if (INTEL_GEN(dev_priv) >= 12)
670af3cf7a3a36 Bhanuprakash Modem 2020-06-12 2242 debugfs_create_file("vrr_range", S_IRUGO,
670af3cf7a3a36 Bhanuprakash Modem 2020-06-12 2243 root, connector, &vrr_range_fops);
670af3cf7a3a36 Bhanuprakash Modem 2020-06-12 @2244 }
670af3cf7a3a36 Bhanuprakash Modem 2020-06-12 2245
8806211fe7b306 Anshuman Gupta 2020-04-15 2246 /* Legacy panels doesn't lpsp on any platform */
8806211fe7b306 Anshuman Gupta 2020-04-15 @2247 if ((INTEL_GEN(dev_priv) >= 9 || IS_HASWELL(dev_priv) ||
8806211fe7b306 Anshuman Gupta 2020-04-15 2248 IS_BROADWELL(dev_priv)) &&
8806211fe7b306 Anshuman Gupta 2020-04-15 2249 (connector->connector_type == DRM_MODE_CONNECTOR_DSI ||
8806211fe7b306 Anshuman Gupta 2020-04-15 2250 connector->connector_type == DRM_MODE_CONNECTOR_eDP ||
8806211fe7b306 Anshuman Gupta 2020-04-15 2251 connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort ||
8806211fe7b306 Anshuman Gupta 2020-04-15 2252 connector->connector_type == DRM_MODE_CONNECTOR_HDMIA ||
8806211fe7b306 Anshuman Gupta 2020-04-15 2253 connector->connector_type == DRM_MODE_CONNECTOR_HDMIB))
8806211fe7b306 Anshuman Gupta 2020-04-15 2254 debugfs_create_file("i915_lpsp_capability", 0444, root,
8806211fe7b306 Anshuman Gupta 2020-04-15 2255 connector, &i915_lpsp_capability_fops);
8806211fe7b306 Anshuman Gupta 2020-04-15 2256
926b005cd8c4e3 Jani Nikula 2020-02-11 @2257 return 0;
926b005cd8c4e3 Jani Nikula 2020-02-11 @2258 }
:::::: The code at line 2247 was first introduced by commit
:::::: 8806211fe7b30696c1fcae54b73c94abfdf55893 drm/i915: Add i915_lpsp_capability debugfs
:::::: TO: Anshuman Gupta <anshuman.gupta@intel.com>
:::::: CC: Uma Shankar <uma.shankar@intel.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 44816 bytes --]
[-- Attachment #3: Type: text/plain, Size: 160 bytes --]
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Intel-gfx] [PATCH v6 3/3] drm/i915/dp: Expose connector VRR monitor range via debugfs
2020-06-12 23:04 ` [PATCH v6 3/3] drm/i915/dp: Expose connector VRR monitor range via debugfs Manasi Navare
2020-06-12 23:56 ` [PATCH v7 " Manasi Navare
2020-06-13 2:00 ` [Intel-gfx] [PATCH v6 " kernel test robot
@ 2020-06-13 5:41 ` kernel test robot
2020-06-16 5:43 ` kernel test robot
3 siblings, 0 replies; 17+ messages in thread
From: kernel test robot @ 2020-06-13 5:41 UTC (permalink / raw)
To: Manasi Navare, intel-gfx, dri-devel; +Cc: kbuild-all, Bhanuprakash Modem
[-- Attachment #1: Type: text/plain, Size: 19285 bytes --]
Hi Manasi,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on drm-intel/for-linux-next]
[also build test ERROR on drm-tip/drm-tip drm-exynos/exynos-drm-next linus/master next-20200612]
[cannot apply to tegra-drm/drm/tegra/for-next drm/drm-next v5.7]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
url: https://github.com/0day-ci/linux/commits/Manasi-Navare/VRR-capable-attach-prop-in-i915-DPCD-helper-VRR-debugfs/20200613-070517
base: git://anongit.freedesktop.org/drm-intel for-linux-next
config: x86_64-randconfig-a014-20200613 (attached as .config)
compiler: gcc-7 (Ubuntu 7.5.0-6ubuntu2) 7.5.0
reproduce (this is a W=1 build):
# save the attached .config to linux build tree
make W=1 ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>, old ones prefixed by <<):
drivers/gpu/drm/i915/display/intel_display_debugfs.c: In function 'intel_connector_debugfs_add':
>> drivers/gpu/drm/i915/display/intel_display_debugfs.c:2235:2: error: this 'if' clause does not guard... [-Werror=misleading-indentation]
if (INTEL_GEN(dev_priv) >= 10 &&
^~
drivers/gpu/drm/i915/display/intel_display_debugfs.c:2241:3: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
if (INTEL_GEN(dev_priv) >= 12)
^~
drivers/gpu/drm/i915/display/intel_display_debugfs.c: At top level:
drivers/gpu/drm/i915/display/intel_display_debugfs.c:2247:2: error: expected identifier or '(' before 'if'
if ((INTEL_GEN(dev_priv) >= 9 || IS_HASWELL(dev_priv) ||
^~
drivers/gpu/drm/i915/display/intel_display_debugfs.c:2257:2: error: expected identifier or '(' before 'return'
return 0;
^~~~~~
drivers/gpu/drm/i915/display/intel_display_debugfs.c:2258:1: error: expected identifier or '(' before '}' token
}
^
drivers/gpu/drm/i915/display/intel_display_debugfs.c: In function 'intel_connector_debugfs_add':
drivers/gpu/drm/i915/display/intel_display_debugfs.c:2244:2: error: control reaches end of non-void function [-Werror=return-type]
}
^
In file included from include/drm/drm_debugfs.h:36:0,
from drivers/gpu/drm/i915/display/intel_display_debugfs.c:6:
At top level:
>> drivers/gpu/drm/i915/display/intel_display_debugfs.c:2081:23: error: 'i915_lpsp_capability_fops' defined but not used [-Werror=unused-const-variable=]
DEFINE_SHOW_ATTRIBUTE(i915_lpsp_capability);
^
include/linux/seq_file.h:154:37: note: in definition of macro 'DEFINE_SHOW_ATTRIBUTE'
static const struct file_operations __name ## _fops = { ^~~~~~
cc1: all warnings being treated as errors
vim +/if +2235 drivers/gpu/drm/i915/display/intel_display_debugfs.c
926b005cd8c4e3 Jani Nikula 2020-02-11 2040
8806211fe7b306 Anshuman Gupta 2020-04-15 2041 #define LPSP_CAPABLE(COND) (COND ? seq_puts(m, "LPSP: capable\n") : \
8806211fe7b306 Anshuman Gupta 2020-04-15 2042 seq_puts(m, "LPSP: incapable\n"))
8806211fe7b306 Anshuman Gupta 2020-04-15 2043
8806211fe7b306 Anshuman Gupta 2020-04-15 2044 static int i915_lpsp_capability_show(struct seq_file *m, void *data)
8806211fe7b306 Anshuman Gupta 2020-04-15 2045 {
8806211fe7b306 Anshuman Gupta 2020-04-15 2046 struct drm_connector *connector = m->private;
8806211fe7b306 Anshuman Gupta 2020-04-15 2047 struct intel_encoder *encoder =
8806211fe7b306 Anshuman Gupta 2020-04-15 2048 intel_attached_encoder(to_intel_connector(connector));
8806211fe7b306 Anshuman Gupta 2020-04-15 2049 struct drm_i915_private *i915 = to_i915(connector->dev);
8806211fe7b306 Anshuman Gupta 2020-04-15 2050
8806211fe7b306 Anshuman Gupta 2020-04-15 2051 if (connector->status != connector_status_connected)
8806211fe7b306 Anshuman Gupta 2020-04-15 2052 return -ENODEV;
8806211fe7b306 Anshuman Gupta 2020-04-15 2053
8806211fe7b306 Anshuman Gupta 2020-04-15 2054 switch (INTEL_GEN(i915)) {
8806211fe7b306 Anshuman Gupta 2020-04-15 2055 case 12:
8806211fe7b306 Anshuman Gupta 2020-04-15 2056 /*
8806211fe7b306 Anshuman Gupta 2020-04-15 2057 * Actually TGL can drive LPSP on port till DDI_C
8806211fe7b306 Anshuman Gupta 2020-04-15 2058 * but there is no physical connected DDI_C on TGL sku's,
8806211fe7b306 Anshuman Gupta 2020-04-15 2059 * even driver is not initilizing DDI_C port for gen12.
8806211fe7b306 Anshuman Gupta 2020-04-15 2060 */
8806211fe7b306 Anshuman Gupta 2020-04-15 2061 LPSP_CAPABLE(encoder->port <= PORT_B);
8806211fe7b306 Anshuman Gupta 2020-04-15 2062 break;
8806211fe7b306 Anshuman Gupta 2020-04-15 2063 case 11:
8806211fe7b306 Anshuman Gupta 2020-04-15 2064 LPSP_CAPABLE(connector->connector_type == DRM_MODE_CONNECTOR_DSI ||
8806211fe7b306 Anshuman Gupta 2020-04-15 2065 connector->connector_type == DRM_MODE_CONNECTOR_eDP);
8806211fe7b306 Anshuman Gupta 2020-04-15 2066 break;
8806211fe7b306 Anshuman Gupta 2020-04-15 2067 case 10:
8806211fe7b306 Anshuman Gupta 2020-04-15 2068 case 9:
8806211fe7b306 Anshuman Gupta 2020-04-15 2069 LPSP_CAPABLE(encoder->port == PORT_A &&
8806211fe7b306 Anshuman Gupta 2020-04-15 2070 (connector->connector_type == DRM_MODE_CONNECTOR_DSI ||
8806211fe7b306 Anshuman Gupta 2020-04-15 2071 connector->connector_type == DRM_MODE_CONNECTOR_eDP ||
8806211fe7b306 Anshuman Gupta 2020-04-15 2072 connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort));
8806211fe7b306 Anshuman Gupta 2020-04-15 2073 break;
8806211fe7b306 Anshuman Gupta 2020-04-15 2074 default:
8806211fe7b306 Anshuman Gupta 2020-04-15 2075 if (IS_HASWELL(i915) || IS_BROADWELL(i915))
8806211fe7b306 Anshuman Gupta 2020-04-15 2076 LPSP_CAPABLE(connector->connector_type == DRM_MODE_CONNECTOR_eDP);
8806211fe7b306 Anshuman Gupta 2020-04-15 2077 }
8806211fe7b306 Anshuman Gupta 2020-04-15 2078
8806211fe7b306 Anshuman Gupta 2020-04-15 2079 return 0;
8806211fe7b306 Anshuman Gupta 2020-04-15 2080 }
8806211fe7b306 Anshuman Gupta 2020-04-15 @2081 DEFINE_SHOW_ATTRIBUTE(i915_lpsp_capability);
8806211fe7b306 Anshuman Gupta 2020-04-15 2082
926b005cd8c4e3 Jani Nikula 2020-02-11 2083 static int i915_dsc_fec_support_show(struct seq_file *m, void *data)
926b005cd8c4e3 Jani Nikula 2020-02-11 2084 {
926b005cd8c4e3 Jani Nikula 2020-02-11 2085 struct drm_connector *connector = m->private;
926b005cd8c4e3 Jani Nikula 2020-02-11 2086 struct drm_device *dev = connector->dev;
926b005cd8c4e3 Jani Nikula 2020-02-11 2087 struct drm_crtc *crtc;
926b005cd8c4e3 Jani Nikula 2020-02-11 2088 struct intel_dp *intel_dp;
926b005cd8c4e3 Jani Nikula 2020-02-11 2089 struct drm_modeset_acquire_ctx ctx;
926b005cd8c4e3 Jani Nikula 2020-02-11 2090 struct intel_crtc_state *crtc_state = NULL;
926b005cd8c4e3 Jani Nikula 2020-02-11 2091 int ret = 0;
926b005cd8c4e3 Jani Nikula 2020-02-11 2092 bool try_again = false;
926b005cd8c4e3 Jani Nikula 2020-02-11 2093
926b005cd8c4e3 Jani Nikula 2020-02-11 2094 drm_modeset_acquire_init(&ctx, DRM_MODESET_ACQUIRE_INTERRUPTIBLE);
926b005cd8c4e3 Jani Nikula 2020-02-11 2095
926b005cd8c4e3 Jani Nikula 2020-02-11 2096 do {
926b005cd8c4e3 Jani Nikula 2020-02-11 2097 try_again = false;
926b005cd8c4e3 Jani Nikula 2020-02-11 2098 ret = drm_modeset_lock(&dev->mode_config.connection_mutex,
926b005cd8c4e3 Jani Nikula 2020-02-11 2099 &ctx);
926b005cd8c4e3 Jani Nikula 2020-02-11 2100 if (ret) {
926b005cd8c4e3 Jani Nikula 2020-02-11 2101 if (ret == -EDEADLK && !drm_modeset_backoff(&ctx)) {
926b005cd8c4e3 Jani Nikula 2020-02-11 2102 try_again = true;
926b005cd8c4e3 Jani Nikula 2020-02-11 2103 continue;
926b005cd8c4e3 Jani Nikula 2020-02-11 2104 }
926b005cd8c4e3 Jani Nikula 2020-02-11 2105 break;
926b005cd8c4e3 Jani Nikula 2020-02-11 2106 }
926b005cd8c4e3 Jani Nikula 2020-02-11 2107 crtc = connector->state->crtc;
926b005cd8c4e3 Jani Nikula 2020-02-11 2108 if (connector->status != connector_status_connected || !crtc) {
926b005cd8c4e3 Jani Nikula 2020-02-11 2109 ret = -ENODEV;
926b005cd8c4e3 Jani Nikula 2020-02-11 2110 break;
926b005cd8c4e3 Jani Nikula 2020-02-11 2111 }
926b005cd8c4e3 Jani Nikula 2020-02-11 2112 ret = drm_modeset_lock(&crtc->mutex, &ctx);
926b005cd8c4e3 Jani Nikula 2020-02-11 2113 if (ret == -EDEADLK) {
926b005cd8c4e3 Jani Nikula 2020-02-11 2114 ret = drm_modeset_backoff(&ctx);
926b005cd8c4e3 Jani Nikula 2020-02-11 2115 if (!ret) {
926b005cd8c4e3 Jani Nikula 2020-02-11 2116 try_again = true;
926b005cd8c4e3 Jani Nikula 2020-02-11 2117 continue;
926b005cd8c4e3 Jani Nikula 2020-02-11 2118 }
926b005cd8c4e3 Jani Nikula 2020-02-11 2119 break;
926b005cd8c4e3 Jani Nikula 2020-02-11 2120 } else if (ret) {
926b005cd8c4e3 Jani Nikula 2020-02-11 2121 break;
926b005cd8c4e3 Jani Nikula 2020-02-11 2122 }
926b005cd8c4e3 Jani Nikula 2020-02-11 2123 intel_dp = intel_attached_dp(to_intel_connector(connector));
926b005cd8c4e3 Jani Nikula 2020-02-11 2124 crtc_state = to_intel_crtc_state(crtc->state);
926b005cd8c4e3 Jani Nikula 2020-02-11 2125 seq_printf(m, "DSC_Enabled: %s\n",
926b005cd8c4e3 Jani Nikula 2020-02-11 2126 yesno(crtc_state->dsc.compression_enable));
926b005cd8c4e3 Jani Nikula 2020-02-11 2127 seq_printf(m, "DSC_Sink_Support: %s\n",
926b005cd8c4e3 Jani Nikula 2020-02-11 2128 yesno(drm_dp_sink_supports_dsc(intel_dp->dsc_dpcd)));
926b005cd8c4e3 Jani Nikula 2020-02-11 2129 seq_printf(m, "Force_DSC_Enable: %s\n",
926b005cd8c4e3 Jani Nikula 2020-02-11 2130 yesno(intel_dp->force_dsc_en));
926b005cd8c4e3 Jani Nikula 2020-02-11 2131 if (!intel_dp_is_edp(intel_dp))
926b005cd8c4e3 Jani Nikula 2020-02-11 2132 seq_printf(m, "FEC_Sink_Support: %s\n",
926b005cd8c4e3 Jani Nikula 2020-02-11 2133 yesno(drm_dp_sink_supports_fec(intel_dp->fec_capable)));
926b005cd8c4e3 Jani Nikula 2020-02-11 2134 } while (try_again);
926b005cd8c4e3 Jani Nikula 2020-02-11 2135
926b005cd8c4e3 Jani Nikula 2020-02-11 2136 drm_modeset_drop_locks(&ctx);
926b005cd8c4e3 Jani Nikula 2020-02-11 2137 drm_modeset_acquire_fini(&ctx);
926b005cd8c4e3 Jani Nikula 2020-02-11 2138
926b005cd8c4e3 Jani Nikula 2020-02-11 2139 return ret;
926b005cd8c4e3 Jani Nikula 2020-02-11 2140 }
926b005cd8c4e3 Jani Nikula 2020-02-11 2141
926b005cd8c4e3 Jani Nikula 2020-02-11 2142 static ssize_t i915_dsc_fec_support_write(struct file *file,
926b005cd8c4e3 Jani Nikula 2020-02-11 2143 const char __user *ubuf,
926b005cd8c4e3 Jani Nikula 2020-02-11 2144 size_t len, loff_t *offp)
926b005cd8c4e3 Jani Nikula 2020-02-11 2145 {
926b005cd8c4e3 Jani Nikula 2020-02-11 2146 bool dsc_enable = false;
926b005cd8c4e3 Jani Nikula 2020-02-11 2147 int ret;
926b005cd8c4e3 Jani Nikula 2020-02-11 2148 struct drm_connector *connector =
926b005cd8c4e3 Jani Nikula 2020-02-11 2149 ((struct seq_file *)file->private_data)->private;
926b005cd8c4e3 Jani Nikula 2020-02-11 2150 struct intel_encoder *encoder = intel_attached_encoder(to_intel_connector(connector));
926b005cd8c4e3 Jani Nikula 2020-02-11 2151 struct drm_i915_private *i915 = to_i915(encoder->base.dev);
926b005cd8c4e3 Jani Nikula 2020-02-11 2152 struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
926b005cd8c4e3 Jani Nikula 2020-02-11 2153
926b005cd8c4e3 Jani Nikula 2020-02-11 2154 if (len == 0)
926b005cd8c4e3 Jani Nikula 2020-02-11 2155 return 0;
926b005cd8c4e3 Jani Nikula 2020-02-11 2156
926b005cd8c4e3 Jani Nikula 2020-02-11 2157 drm_dbg(&i915->drm,
926b005cd8c4e3 Jani Nikula 2020-02-11 2158 "Copied %zu bytes from user to force DSC\n", len);
926b005cd8c4e3 Jani Nikula 2020-02-11 2159
926b005cd8c4e3 Jani Nikula 2020-02-11 2160 ret = kstrtobool_from_user(ubuf, len, &dsc_enable);
926b005cd8c4e3 Jani Nikula 2020-02-11 2161 if (ret < 0)
926b005cd8c4e3 Jani Nikula 2020-02-11 2162 return ret;
926b005cd8c4e3 Jani Nikula 2020-02-11 2163
926b005cd8c4e3 Jani Nikula 2020-02-11 2164 drm_dbg(&i915->drm, "Got %s for DSC Enable\n",
926b005cd8c4e3 Jani Nikula 2020-02-11 2165 (dsc_enable) ? "true" : "false");
926b005cd8c4e3 Jani Nikula 2020-02-11 2166 intel_dp->force_dsc_en = dsc_enable;
926b005cd8c4e3 Jani Nikula 2020-02-11 2167
926b005cd8c4e3 Jani Nikula 2020-02-11 2168 *offp += len;
926b005cd8c4e3 Jani Nikula 2020-02-11 2169 return len;
926b005cd8c4e3 Jani Nikula 2020-02-11 2170 }
926b005cd8c4e3 Jani Nikula 2020-02-11 2171
926b005cd8c4e3 Jani Nikula 2020-02-11 2172 static int i915_dsc_fec_support_open(struct inode *inode,
926b005cd8c4e3 Jani Nikula 2020-02-11 2173 struct file *file)
926b005cd8c4e3 Jani Nikula 2020-02-11 2174 {
926b005cd8c4e3 Jani Nikula 2020-02-11 2175 return single_open(file, i915_dsc_fec_support_show,
926b005cd8c4e3 Jani Nikula 2020-02-11 2176 inode->i_private);
926b005cd8c4e3 Jani Nikula 2020-02-11 2177 }
926b005cd8c4e3 Jani Nikula 2020-02-11 2178
926b005cd8c4e3 Jani Nikula 2020-02-11 2179 static const struct file_operations i915_dsc_fec_support_fops = {
926b005cd8c4e3 Jani Nikula 2020-02-11 2180 .owner = THIS_MODULE,
926b005cd8c4e3 Jani Nikula 2020-02-11 2181 .open = i915_dsc_fec_support_open,
926b005cd8c4e3 Jani Nikula 2020-02-11 2182 .read = seq_read,
926b005cd8c4e3 Jani Nikula 2020-02-11 2183 .llseek = seq_lseek,
926b005cd8c4e3 Jani Nikula 2020-02-11 2184 .release = single_release,
926b005cd8c4e3 Jani Nikula 2020-02-11 2185 .write = i915_dsc_fec_support_write
926b005cd8c4e3 Jani Nikula 2020-02-11 2186 };
926b005cd8c4e3 Jani Nikula 2020-02-11 2187
670af3cf7a3a36 Bhanuprakash Modem 2020-06-12 2188 static int vrr_range_show(struct seq_file *m, void *data)
670af3cf7a3a36 Bhanuprakash Modem 2020-06-12 2189 {
670af3cf7a3a36 Bhanuprakash Modem 2020-06-12 2190 struct drm_connector *connector = m->private;
670af3cf7a3a36 Bhanuprakash Modem 2020-06-12 2191
670af3cf7a3a36 Bhanuprakash Modem 2020-06-12 2192 if (connector->status != connector_status_connected)
670af3cf7a3a36 Bhanuprakash Modem 2020-06-12 2193 return -ENODEV;
670af3cf7a3a36 Bhanuprakash Modem 2020-06-12 2194
670af3cf7a3a36 Bhanuprakash Modem 2020-06-12 2195 seq_printf(m, "Vrr_capable: %s\n", yesno(intel_dp_is_vrr_capable(connector)));
670af3cf7a3a36 Bhanuprakash Modem 2020-06-12 2196 seq_printf(m, "Min: %u\n", (u8)connector->display_info.monitor_range.min_vfreq);
670af3cf7a3a36 Bhanuprakash Modem 2020-06-12 2197 seq_printf(m, "Max: %u\n", (u8)connector->display_info.monitor_range.max_vfreq);
670af3cf7a3a36 Bhanuprakash Modem 2020-06-12 2198
670af3cf7a3a36 Bhanuprakash Modem 2020-06-12 2199 return 0;
670af3cf7a3a36 Bhanuprakash Modem 2020-06-12 2200 }
670af3cf7a3a36 Bhanuprakash Modem 2020-06-12 2201 DEFINE_SHOW_ATTRIBUTE(vrr_range);
670af3cf7a3a36 Bhanuprakash Modem 2020-06-12 2202
926b005cd8c4e3 Jani Nikula 2020-02-11 2203 /**
926b005cd8c4e3 Jani Nikula 2020-02-11 2204 * intel_connector_debugfs_add - add i915 specific connector debugfs files
926b005cd8c4e3 Jani Nikula 2020-02-11 2205 * @connector: pointer to a registered drm_connector
926b005cd8c4e3 Jani Nikula 2020-02-11 2206 *
926b005cd8c4e3 Jani Nikula 2020-02-11 2207 * Cleanup will be done by drm_connector_unregister() through a call to
926b005cd8c4e3 Jani Nikula 2020-02-11 2208 * drm_debugfs_connector_remove().
926b005cd8c4e3 Jani Nikula 2020-02-11 2209 *
926b005cd8c4e3 Jani Nikula 2020-02-11 2210 * Returns 0 on success, negative error codes on error.
926b005cd8c4e3 Jani Nikula 2020-02-11 2211 */
926b005cd8c4e3 Jani Nikula 2020-02-11 2212 int intel_connector_debugfs_add(struct drm_connector *connector)
926b005cd8c4e3 Jani Nikula 2020-02-11 2213 {
926b005cd8c4e3 Jani Nikula 2020-02-11 2214 struct dentry *root = connector->debugfs_entry;
926b005cd8c4e3 Jani Nikula 2020-02-11 2215 struct drm_i915_private *dev_priv = to_i915(connector->dev);
926b005cd8c4e3 Jani Nikula 2020-02-11 2216
926b005cd8c4e3 Jani Nikula 2020-02-11 2217 /* The connector must have been registered beforehands. */
926b005cd8c4e3 Jani Nikula 2020-02-11 2218 if (!root)
926b005cd8c4e3 Jani Nikula 2020-02-11 2219 return -ENODEV;
926b005cd8c4e3 Jani Nikula 2020-02-11 2220
926b005cd8c4e3 Jani Nikula 2020-02-11 2221 if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) {
926b005cd8c4e3 Jani Nikula 2020-02-11 2222 debugfs_create_file("i915_panel_timings", S_IRUGO, root,
926b005cd8c4e3 Jani Nikula 2020-02-11 2223 connector, &i915_panel_fops);
926b005cd8c4e3 Jani Nikula 2020-02-11 2224 debugfs_create_file("i915_psr_sink_status", S_IRUGO, root,
926b005cd8c4e3 Jani Nikula 2020-02-11 2225 connector, &i915_psr_sink_status_fops);
926b005cd8c4e3 Jani Nikula 2020-02-11 2226 }
926b005cd8c4e3 Jani Nikula 2020-02-11 2227
926b005cd8c4e3 Jani Nikula 2020-02-11 2228 if (connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort ||
926b005cd8c4e3 Jani Nikula 2020-02-11 2229 connector->connector_type == DRM_MODE_CONNECTOR_HDMIA ||
926b005cd8c4e3 Jani Nikula 2020-02-11 2230 connector->connector_type == DRM_MODE_CONNECTOR_HDMIB) {
926b005cd8c4e3 Jani Nikula 2020-02-11 2231 debugfs_create_file("i915_hdcp_sink_capability", S_IRUGO, root,
926b005cd8c4e3 Jani Nikula 2020-02-11 2232 connector, &i915_hdcp_sink_capability_fops);
926b005cd8c4e3 Jani Nikula 2020-02-11 2233 }
926b005cd8c4e3 Jani Nikula 2020-02-11 2234
926b005cd8c4e3 Jani Nikula 2020-02-11 @2235 if (INTEL_GEN(dev_priv) >= 10 &&
:::::: The code at line 2235 was first introduced by commit
:::::: 926b005cd8c4e325ab918edea0fbdd1d25d1ba28 drm/i915: split out display debugfs to a separate file
:::::: TO: Jani Nikula <jani.nikula@intel.com>
:::::: CC: Jani Nikula <jani.nikula@intel.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 31500 bytes --]
[-- Attachment #3: Type: text/plain, Size: 160 bytes --]
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v7 3/3] drm/i915/dp: Expose connector VRR monitor range via debugfs
2020-06-12 23:56 ` [PATCH v7 " Manasi Navare
@ 2020-06-15 21:36 ` Emil Velikov
2020-06-15 21:48 ` Manasi Navare
0 siblings, 1 reply; 17+ messages in thread
From: Emil Velikov @ 2020-06-15 21:36 UTC (permalink / raw)
To: Manasi Navare
Cc: Intel Graphics Development, ML dri-devel, Bhanuprakash Modem
Hi Manasi,
On Sat, 13 Jun 2020 at 00:55, Manasi Navare <manasi.d.navare@intel.com> wrote:
>
> From: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
>
> [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
>
> v7:
> * Fix cmpilation due to rebase
> v6:
> * Rebase (manasi)
> v5:
> * Rename to vrr_range to match AMD debugfs
> v4:
> * Rebase
> v3:
> * Remove the unnecessary debug print (Manasi)
> 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)
>
Nit: generally revision log is listed in v2 -> v6 order.
> 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>
> Tested-by: Manasi Navare <manasi.d.navare@intel.com>
> ---
> .../drm/i915/display/intel_display_debugfs.c | 22 ++++++++++++++++++-
> 1 file changed, 21 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display_debugfs.c b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> index 28dd717e943a..2921f7d2a26e 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> @@ -2185,6 +2185,21 @@ static const struct file_operations i915_dsc_fec_support_fops = {
> .write = i915_dsc_fec_support_write
> };
>
> +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, "Vrr_capable: %s\n", yesno(intel_dp_is_vrr_capable(connector)));
> + 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);
> +
> /**
> * intel_connector_debugfs_add - add i915 specific connector debugfs files
> * @connector: pointer to a registered drm_connector
> @@ -2220,10 +2235,15 @@ int intel_connector_debugfs_add(struct drm_connector *connector)
> if (INTEL_GEN(dev_priv) >= 10 &&
> ((connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort &&
> !to_intel_connector(connector)->mst_port) ||
> - connector->connector_type == DRM_MODE_CONNECTOR_eDP))
> + connector->connector_type == DRM_MODE_CONNECTOR_eDP)) {
> debugfs_create_file("i915_dsc_fec_support", S_IRUGO, root,
> connector, &i915_dsc_fec_support_fops);
>
> + if (INTEL_GEN(dev_priv) >= 12)
> + debugfs_create_file("vrr_range", S_IRUGO,
> + root, connector, &vrr_range_fops);
> + }
> +
I think this should be added by core drm. Ideally drm will add it
automatically for each connector that the driver has called
drm_connector_attach_vrr_capable_property() upon.
-Emil
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v7 3/3] drm/i915/dp: Expose connector VRR monitor range via debugfs
2020-06-15 21:36 ` Emil Velikov
@ 2020-06-15 21:48 ` Manasi Navare
2020-06-16 15:34 ` Emil Velikov
0 siblings, 1 reply; 17+ messages in thread
From: Manasi Navare @ 2020-06-15 21:48 UTC (permalink / raw)
To: Emil Velikov; +Cc: Intel Graphics Development, ML dri-devel, Bhanuprakash Modem
On Mon, Jun 15, 2020 at 10:36:28PM +0100, Emil Velikov wrote:
> Hi Manasi,
>
> On Sat, 13 Jun 2020 at 00:55, Manasi Navare <manasi.d.navare@intel.com> wrote:
> >
> > From: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
> >
> > [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
> >
> > v7:
> > * Fix cmpilation due to rebase
> > v6:
> > * Rebase (manasi)
> > v5:
> > * Rename to vrr_range to match AMD debugfs
> > v4:
> > * Rebase
> > v3:
> > * Remove the unnecessary debug print (Manasi)
> > 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)
> >
> Nit: generally revision log is listed in v2 -> v6 order.
Okay point noted. Will update this in the next rev
>
> > 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>
> > Tested-by: Manasi Navare <manasi.d.navare@intel.com>
> > ---
> > .../drm/i915/display/intel_display_debugfs.c | 22 ++++++++++++++++++-
> > 1 file changed, 21 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_display_debugfs.c b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> > index 28dd717e943a..2921f7d2a26e 100644
> > --- a/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> > +++ b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> > @@ -2185,6 +2185,21 @@ static const struct file_operations i915_dsc_fec_support_fops = {
> > .write = i915_dsc_fec_support_write
> > };
> >
> > +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, "Vrr_capable: %s\n", yesno(intel_dp_is_vrr_capable(connector)));
> > + 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);
> > +
> > /**
> > * intel_connector_debugfs_add - add i915 specific connector debugfs files
> > * @connector: pointer to a registered drm_connector
> > @@ -2220,10 +2235,15 @@ int intel_connector_debugfs_add(struct drm_connector *connector)
> > if (INTEL_GEN(dev_priv) >= 10 &&
> > ((connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort &&
> > !to_intel_connector(connector)->mst_port) ||
> > - connector->connector_type == DRM_MODE_CONNECTOR_eDP))
> > + connector->connector_type == DRM_MODE_CONNECTOR_eDP)) {
> > debugfs_create_file("i915_dsc_fec_support", S_IRUGO, root,
> > connector, &i915_dsc_fec_support_fops);
> >
> > + if (INTEL_GEN(dev_priv) >= 12)
> > + debugfs_create_file("vrr_range", S_IRUGO,
> > + root, connector, &vrr_range_fops);
> > + }
> > +
>
> I think this should be added by core drm. Ideally drm will add it
> automatically for each connector that the driver has called
> drm_connector_attach_vrr_capable_property() upon.
>
But in this case drm_connector_attach_vrr_capable_property() is called by individual
driver since its an optional connector property. So we call this inside i915.
Also currently AMD sets this debugfs inside AMD IMO, so setting this here for now.
But I agree that can be moved to drm core may be when drm_display_info gets populated
with min and max, thats where drm can add this?
Manasi
> -Emil
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Intel-gfx] [PATCH v6 3/3] drm/i915/dp: Expose connector VRR monitor range via debugfs
2020-06-12 23:04 ` [PATCH v6 3/3] drm/i915/dp: Expose connector VRR monitor range via debugfs Manasi Navare
` (2 preceding siblings ...)
2020-06-13 5:41 ` kernel test robot
@ 2020-06-16 5:43 ` kernel test robot
3 siblings, 0 replies; 17+ messages in thread
From: kernel test robot @ 2020-06-16 5:43 UTC (permalink / raw)
To: Manasi Navare, intel-gfx, dri-devel; +Cc: kbuild-all, Bhanuprakash Modem
Hi Manasi,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on drm-intel/for-linux-next]
[also build test WARNING on drm-tip/drm-tip drm-exynos/exynos-drm-next linus/master next-20200613]
[cannot apply to tegra-drm/drm/tegra/for-next drm/drm-next v5.7]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
url: https://github.com/0day-ci/linux/commits/Manasi-Navare/VRR-capable-attach-prop-in-i915-DPCD-helper-VRR-debugfs/20200613-070517
base: git://anongit.freedesktop.org/drm-intel for-linux-next
:::::: branch date: 2 days ago
:::::: commit date: 2 days ago
compiler: gcc-9 (Debian 9.3.0-13) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
cppcheck warnings: (new ones prefixed by >>)
>> drivers/gpu/drm/i915/display/intel_display_debugfs.c:2258:0: warning: Invalid number of character '{' when no macros are defined. [syntaxError]
^
>> drivers/gpu/drm/i915/display/intel_display_debugfs.c:2258:0: warning: Invalid number of character '{' when these macros are defined: 'CONFIG_DEBUG_FS'. [syntaxError]
^
>> drivers/gpu/drm/i915/display/intel_display_debugfs.c:2258:0: warning: Invalid number of character '{' when these macros are defined: 'CONFIG_DRM_FBDEV_EMULATION'. [syntaxError]
^
# https://github.com/0day-ci/linux/commit/670af3cf7a3a36bb87776fbfd7f913cd33681bbc
git remote add linux-review https://github.com/0day-ci/linux
git remote update linux-review
git checkout 670af3cf7a3a36bb87776fbfd7f913cd33681bbc
vim +2258 drivers/gpu/drm/i915/display/intel_display_debugfs.c
670af3cf7a3a36 Bhanuprakash Modem 2020-06-12 2202
926b005cd8c4e3 Jani Nikula 2020-02-11 2203 /**
926b005cd8c4e3 Jani Nikula 2020-02-11 2204 * intel_connector_debugfs_add - add i915 specific connector debugfs files
926b005cd8c4e3 Jani Nikula 2020-02-11 2205 * @connector: pointer to a registered drm_connector
926b005cd8c4e3 Jani Nikula 2020-02-11 2206 *
926b005cd8c4e3 Jani Nikula 2020-02-11 2207 * Cleanup will be done by drm_connector_unregister() through a call to
926b005cd8c4e3 Jani Nikula 2020-02-11 2208 * drm_debugfs_connector_remove().
926b005cd8c4e3 Jani Nikula 2020-02-11 2209 *
926b005cd8c4e3 Jani Nikula 2020-02-11 2210 * Returns 0 on success, negative error codes on error.
926b005cd8c4e3 Jani Nikula 2020-02-11 2211 */
926b005cd8c4e3 Jani Nikula 2020-02-11 2212 int intel_connector_debugfs_add(struct drm_connector *connector)
926b005cd8c4e3 Jani Nikula 2020-02-11 2213 {
926b005cd8c4e3 Jani Nikula 2020-02-11 2214 struct dentry *root = connector->debugfs_entry;
926b005cd8c4e3 Jani Nikula 2020-02-11 2215 struct drm_i915_private *dev_priv = to_i915(connector->dev);
926b005cd8c4e3 Jani Nikula 2020-02-11 2216
926b005cd8c4e3 Jani Nikula 2020-02-11 2217 /* The connector must have been registered beforehands. */
926b005cd8c4e3 Jani Nikula 2020-02-11 2218 if (!root)
926b005cd8c4e3 Jani Nikula 2020-02-11 2219 return -ENODEV;
926b005cd8c4e3 Jani Nikula 2020-02-11 2220
926b005cd8c4e3 Jani Nikula 2020-02-11 2221 if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) {
926b005cd8c4e3 Jani Nikula 2020-02-11 2222 debugfs_create_file("i915_panel_timings", S_IRUGO, root,
926b005cd8c4e3 Jani Nikula 2020-02-11 2223 connector, &i915_panel_fops);
926b005cd8c4e3 Jani Nikula 2020-02-11 2224 debugfs_create_file("i915_psr_sink_status", S_IRUGO, root,
926b005cd8c4e3 Jani Nikula 2020-02-11 2225 connector, &i915_psr_sink_status_fops);
926b005cd8c4e3 Jani Nikula 2020-02-11 2226 }
926b005cd8c4e3 Jani Nikula 2020-02-11 2227
926b005cd8c4e3 Jani Nikula 2020-02-11 2228 if (connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort ||
926b005cd8c4e3 Jani Nikula 2020-02-11 2229 connector->connector_type == DRM_MODE_CONNECTOR_HDMIA ||
926b005cd8c4e3 Jani Nikula 2020-02-11 2230 connector->connector_type == DRM_MODE_CONNECTOR_HDMIB) {
926b005cd8c4e3 Jani Nikula 2020-02-11 2231 debugfs_create_file("i915_hdcp_sink_capability", S_IRUGO, root,
926b005cd8c4e3 Jani Nikula 2020-02-11 2232 connector, &i915_hdcp_sink_capability_fops);
926b005cd8c4e3 Jani Nikula 2020-02-11 2233 }
926b005cd8c4e3 Jani Nikula 2020-02-11 2234
926b005cd8c4e3 Jani Nikula 2020-02-11 2235 if (INTEL_GEN(dev_priv) >= 10 &&
926b005cd8c4e3 Jani Nikula 2020-02-11 2236 (connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort ||
926b005cd8c4e3 Jani Nikula 2020-02-11 2237 connector->connector_type == DRM_MODE_CONNECTOR_eDP))
926b005cd8c4e3 Jani Nikula 2020-02-11 2238 debugfs_create_file("i915_dsc_fec_support", S_IRUGO, root,
926b005cd8c4e3 Jani Nikula 2020-02-11 2239 connector, &i915_dsc_fec_support_fops);
926b005cd8c4e3 Jani Nikula 2020-02-11 2240
670af3cf7a3a36 Bhanuprakash Modem 2020-06-12 2241 if (INTEL_GEN(dev_priv) >= 12)
670af3cf7a3a36 Bhanuprakash Modem 2020-06-12 2242 debugfs_create_file("vrr_range", S_IRUGO,
670af3cf7a3a36 Bhanuprakash Modem 2020-06-12 2243 root, connector, &vrr_range_fops);
670af3cf7a3a36 Bhanuprakash Modem 2020-06-12 2244 }
670af3cf7a3a36 Bhanuprakash Modem 2020-06-12 2245
8806211fe7b306 Anshuman Gupta 2020-04-15 2246 /* Legacy panels doesn't lpsp on any platform */
8806211fe7b306 Anshuman Gupta 2020-04-15 2247 if ((INTEL_GEN(dev_priv) >= 9 || IS_HASWELL(dev_priv) ||
8806211fe7b306 Anshuman Gupta 2020-04-15 2248 IS_BROADWELL(dev_priv)) &&
8806211fe7b306 Anshuman Gupta 2020-04-15 2249 (connector->connector_type == DRM_MODE_CONNECTOR_DSI ||
8806211fe7b306 Anshuman Gupta 2020-04-15 2250 connector->connector_type == DRM_MODE_CONNECTOR_eDP ||
8806211fe7b306 Anshuman Gupta 2020-04-15 2251 connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort ||
8806211fe7b306 Anshuman Gupta 2020-04-15 2252 connector->connector_type == DRM_MODE_CONNECTOR_HDMIA ||
8806211fe7b306 Anshuman Gupta 2020-04-15 2253 connector->connector_type == DRM_MODE_CONNECTOR_HDMIB))
8806211fe7b306 Anshuman Gupta 2020-04-15 2254 debugfs_create_file("i915_lpsp_capability", 0444, root,
8806211fe7b306 Anshuman Gupta 2020-04-15 2255 connector, &i915_lpsp_capability_fops);
8806211fe7b306 Anshuman Gupta 2020-04-15 2256
926b005cd8c4e3 Jani Nikula 2020-02-11 2257 return 0;
926b005cd8c4e3 Jani Nikula 2020-02-11 @2258 }
:::::: The code at line 2258 was first introduced by commit
:::::: 926b005cd8c4e325ab918edea0fbdd1d25d1ba28 drm/i915: split out display debugfs to a separate file
:::::: TO: Jani Nikula <jani.nikula@intel.com>
:::::: CC: Jani Nikula <jani.nikula@intel.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v7 3/3] drm/i915/dp: Expose connector VRR monitor range via debugfs
2020-06-15 21:48 ` Manasi Navare
@ 2020-06-16 15:34 ` Emil Velikov
2020-06-18 18:35 ` Manasi Navare
0 siblings, 1 reply; 17+ messages in thread
From: Emil Velikov @ 2020-06-16 15:34 UTC (permalink / raw)
To: Manasi Navare
Cc: Intel Graphics Development, ML dri-devel, Bhanuprakash Modem
On Mon, 15 Jun 2020 at 22:47, Manasi Navare <manasi.d.navare@intel.com> wrote:
>
> On Mon, Jun 15, 2020 at 10:36:28PM +0100, Emil Velikov wrote:
> > Hi Manasi,
> >
> > On Sat, 13 Jun 2020 at 00:55, Manasi Navare <manasi.d.navare@intel.com> wrote:
> > >
> > > From: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
> > >
> > > [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
> > >
> > > v7:
> > > * Fix cmpilation due to rebase
> > > v6:
> > > * Rebase (manasi)
> > > v5:
> > > * Rename to vrr_range to match AMD debugfs
> > > v4:
> > > * Rebase
> > > v3:
> > > * Remove the unnecessary debug print (Manasi)
> > > 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)
> > >
> > Nit: generally revision log is listed in v2 -> v6 order.
>
> Okay point noted. Will update this in the next rev
>
> >
> > > 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>
> > > Tested-by: Manasi Navare <manasi.d.navare@intel.com>
> > > ---
> > > .../drm/i915/display/intel_display_debugfs.c | 22 ++++++++++++++++++-
> > > 1 file changed, 21 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/drivers/gpu/drm/i915/display/intel_display_debugfs.c b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> > > index 28dd717e943a..2921f7d2a26e 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> > > +++ b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> > > @@ -2185,6 +2185,21 @@ static const struct file_operations i915_dsc_fec_support_fops = {
> > > .write = i915_dsc_fec_support_write
> > > };
> > >
> > > +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, "Vrr_capable: %s\n", yesno(intel_dp_is_vrr_capable(connector)));
> > > + 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);
> > > +
> > > /**
> > > * intel_connector_debugfs_add - add i915 specific connector debugfs files
> > > * @connector: pointer to a registered drm_connector
> > > @@ -2220,10 +2235,15 @@ int intel_connector_debugfs_add(struct drm_connector *connector)
> > > if (INTEL_GEN(dev_priv) >= 10 &&
> > > ((connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort &&
> > > !to_intel_connector(connector)->mst_port) ||
> > > - connector->connector_type == DRM_MODE_CONNECTOR_eDP))
> > > + connector->connector_type == DRM_MODE_CONNECTOR_eDP)) {
> > > debugfs_create_file("i915_dsc_fec_support", S_IRUGO, root,
> > > connector, &i915_dsc_fec_support_fops);
> > >
> > > + if (INTEL_GEN(dev_priv) >= 12)
> > > + debugfs_create_file("vrr_range", S_IRUGO,
> > > + root, connector, &vrr_range_fops);
> > > + }
> > > +
> >
> > I think this should be added by core drm. Ideally drm will add it
> > automatically for each connector that the driver has called
> > drm_connector_attach_vrr_capable_property() upon.
> >
>
> But in this case drm_connector_attach_vrr_capable_property() is called by individual
> driver since its an optional connector property. So we call this inside i915.
I'm _not_ suggesting that one moves the
drm_connector_attach_vrr_capable_property() call. Simply create the
debugfs file in drm itself.
> Also currently AMD sets this debugfs inside AMD IMO, so setting this here for now.
Let's do the better thing of a) make drm create the file, and b)
remove the AMDGPU specific one.
We're talking about 20-30 lines worth of a patch. Postponing it sounds silly.
> But I agree that can be moved to drm core may be when drm_display_info gets populated
> with min and max, thats where drm can add this?
>
Both min and max are already part of drm_display_info. On the question
of how - check the existing properties (edid_override, force) for
examples.
-Emil
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v7 3/3] drm/i915/dp: Expose connector VRR monitor range via debugfs
2020-06-16 15:34 ` Emil Velikov
@ 2020-06-18 18:35 ` Manasi Navare
0 siblings, 0 replies; 17+ messages in thread
From: Manasi Navare @ 2020-06-18 18:35 UTC (permalink / raw)
To: Emil Velikov; +Cc: Intel Graphics Development, ML dri-devel, Bhanuprakash Modem
On Tue, Jun 16, 2020 at 04:34:07PM +0100, Emil Velikov wrote:
> On Mon, 15 Jun 2020 at 22:47, Manasi Navare <manasi.d.navare@intel.com> wrote:
> >
> > On Mon, Jun 15, 2020 at 10:36:28PM +0100, Emil Velikov wrote:
> > > Hi Manasi,
> > >
> > > On Sat, 13 Jun 2020 at 00:55, Manasi Navare <manasi.d.navare@intel.com> wrote:
> > > >
> > > > From: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
> > > >
> > > > [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
> > > >
> > > > v7:
> > > > * Fix cmpilation due to rebase
> > > > v6:
> > > > * Rebase (manasi)
> > > > v5:
> > > > * Rename to vrr_range to match AMD debugfs
> > > > v4:
> > > > * Rebase
> > > > v3:
> > > > * Remove the unnecessary debug print (Manasi)
> > > > 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)
> > > >
> > > Nit: generally revision log is listed in v2 -> v6 order.
> >
> > Okay point noted. Will update this in the next rev
> >
> > >
> > > > 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>
> > > > Tested-by: Manasi Navare <manasi.d.navare@intel.com>
> > > > ---
> > > > .../drm/i915/display/intel_display_debugfs.c | 22 ++++++++++++++++++-
> > > > 1 file changed, 21 insertions(+), 1 deletion(-)
> > > >
> > > > diff --git a/drivers/gpu/drm/i915/display/intel_display_debugfs.c b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> > > > index 28dd717e943a..2921f7d2a26e 100644
> > > > --- a/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> > > > +++ b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> > > > @@ -2185,6 +2185,21 @@ static const struct file_operations i915_dsc_fec_support_fops = {
> > > > .write = i915_dsc_fec_support_write
> > > > };
> > > >
> > > > +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, "Vrr_capable: %s\n", yesno(intel_dp_is_vrr_capable(connector)));
> > > > + 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);
> > > > +
> > > > /**
> > > > * intel_connector_debugfs_add - add i915 specific connector debugfs files
> > > > * @connector: pointer to a registered drm_connector
> > > > @@ -2220,10 +2235,15 @@ int intel_connector_debugfs_add(struct drm_connector *connector)
> > > > if (INTEL_GEN(dev_priv) >= 10 &&
> > > > ((connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort &&
> > > > !to_intel_connector(connector)->mst_port) ||
> > > > - connector->connector_type == DRM_MODE_CONNECTOR_eDP))
> > > > + connector->connector_type == DRM_MODE_CONNECTOR_eDP)) {
> > > > debugfs_create_file("i915_dsc_fec_support", S_IRUGO, root,
> > > > connector, &i915_dsc_fec_support_fops);
> > > >
> > > > + if (INTEL_GEN(dev_priv) >= 12)
> > > > + debugfs_create_file("vrr_range", S_IRUGO,
> > > > + root, connector, &vrr_range_fops);
> > > > + }
> > > > +
> > >
> > > I think this should be added by core drm. Ideally drm will add it
> > > automatically for each connector that the driver has called
> > > drm_connector_attach_vrr_capable_property() upon.
> > >
> >
> > But in this case drm_connector_attach_vrr_capable_property() is called by individual
> > driver since its an optional connector property. So we call this inside i915.
>
> I'm _not_ suggesting that one moves the
> drm_connector_attach_vrr_capable_property() call. Simply create the
> debugfs file in drm itself.
>
> > Also currently AMD sets this debugfs inside AMD IMO, so setting this here for now.
> Let's do the better thing of a) make drm create the file, and b)
> remove the AMDGPU specific one.
>
> We're talking about 20-30 lines worth of a patch. Postponing it sounds silly.
>
> > But I agree that can be moved to drm core may be when drm_display_info gets populated
> > with min and max, thats where drm can add this?
> >
> Both min and max are already part of drm_display_info. On the question
> of how - check the existing properties (edid_override, force) for
> examples.
>
Okay makes sense. Will move the vrr_range to drm debugfs node.
Thanks for your feedback.
Regards
Manasi
> -Emil
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v6 1/3] drm/dp: DRM DP helper for reading Ignore MSA from DPCD
2020-06-12 23:04 ` [PATCH v6 1/3] drm/dp: DRM DP helper for reading Ignore MSA from DPCD Manasi Navare
@ 2020-06-18 23:23 ` Manasi Navare
0 siblings, 0 replies; 17+ messages in thread
From: Manasi Navare @ 2020-06-18 23:23 UTC (permalink / raw)
To: intel-gfx, dri-devel; +Cc: Nicholas Kazlauskas
@Jani N, could you give an ACK on this if this looks okay, addressed
your review comments regarding the name of the function.
Else I have a r-b functionality wise so good to get merged?
Regards
Manasi
On Fri, Jun 12, 2020 at 04:04:42PM -0700, Manasi Navare wrote:
> DP sink device sets the Ignore MSA bit in its
> DP_DOWNSTREAM_PORT_COUNT register to indicate its ability to
> ignore the MSA video timing parameters and its ability to support
> seamless video timing change over a range of timing exposed by
> DisplayID and EDID.
> This is required for the sink to indicate that it is Adaptive sync
> capable.
>
> v3:
> * Fi the typo in commit message (Manasi)
> v2:
> * Rename to describe what the function does (Jani Nikula)
>
> Cc: Jani Nikula <jani.nikula@linux.intel.com>
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Cc: Harry Wentland <harry.wentland@amd.com>
> Cc: Nicholas Kazlauskas <Nicholas.Kazlauskas@amd.com>
> Signed-off-by: Manasi Navare <manasi.d.navare@intel.com>
> Reviewed-by: Harry Wentland <harry.wentland@amd.com>
> ---
> include/drm/drm_dp_helper.h | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/include/drm/drm_dp_helper.h b/include/drm/drm_dp_helper.h
> index 1165ec105638..e47dc22ebf50 100644
> --- a/include/drm/drm_dp_helper.h
> +++ b/include/drm/drm_dp_helper.h
> @@ -1457,6 +1457,14 @@ drm_dp_alternate_scrambler_reset_cap(const u8 dpcd[DP_RECEIVER_CAP_SIZE])
> DP_ALTERNATE_SCRAMBLER_RESET_CAP;
> }
>
> +/* Ignore MSA timing for Adaptive Sync support on DP 1.4 */
> +static inline bool
> +drm_dp_sink_can_do_video_without_timing_msa(const u8 dpcd[DP_RECEIVER_CAP_SIZE])
> +{
> + return dpcd[DP_DOWN_STREAM_PORT_COUNT] &
> + DP_MSA_TIMING_PAR_IGNORED;
> +}
> +
> /*
> * DisplayPort AUX channel
> */
> --
> 2.19.1
>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 17+ messages in thread
* [v6 0/3] VRR capable attach prop in i915, DPCD helper, VRR debugfs
2020-06-12 23:04 [PATCH v6 0/3] VRR capable attach prop in i915, DPCD helper, VRR debugfs Manasi Navare
` (2 preceding siblings ...)
2020-06-12 23:04 ` [PATCH v6 3/3] drm/i915/dp: Expose connector VRR monitor range via debugfs Manasi Navare
@ 2020-06-19 21:11 ` Bhanuprakash Modem
2020-06-19 21:11 ` [v6 1/3] drm/dp: DRM DP helper for reading Ignore MSA from DPCD Bhanuprakash Modem
` (2 subsequent siblings)
6 siblings, 0 replies; 17+ messages in thread
From: Bhanuprakash Modem @ 2020-06-19 21:11 UTC (permalink / raw)
To: bhanuprakash.modem, dri-devel, intel-gfx
This is an initial set of patches for enabling VRR support in i915.
This series has patches for:
1. adding a drm dpcd helper to read ignore MSA
bit in sink's DPCD indicating sink support for VRR
2. Attach and set VRR capable connector prop for Intel DP conn
3. Expose VRR min and max through debugfs
Aditya Swarup (1):
drm/i915/dp: Attach and set drm connector VRR property
Bhanuprakash Modem (1):
drm/debug: Expose connector VRR monitor range via debugfs
Manasi Navare (1):
drm/dp: DRM DP helper for reading Ignore MSA from DPCD
.../amd/display/amdgpu_dm/amdgpu_dm_debugfs.c | 20 --------------
drivers/gpu/drm/drm_debugfs.c | 22 +++++++++++++++
drivers/gpu/drm/i915/display/intel_dp.c | 27 +++++++++++++++++++
drivers/gpu/drm/i915/display/intel_dp.h | 2 ++
include/drm/drm_dp_helper.h | 8 ++++++
5 files changed, 59 insertions(+), 20 deletions(-)
--
2.20.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 17+ messages in thread
* [v6 1/3] drm/dp: DRM DP helper for reading Ignore MSA from DPCD
2020-06-12 23:04 [PATCH v6 0/3] VRR capable attach prop in i915, DPCD helper, VRR debugfs Manasi Navare
` (3 preceding siblings ...)
2020-06-19 21:11 ` [v6 0/3] VRR capable attach prop in i915, DPCD helper, VRR debugfs Bhanuprakash Modem
@ 2020-06-19 21:11 ` Bhanuprakash Modem
2020-06-19 21:11 ` [v6 2/3] drm/i915/dp: Attach and set drm connector VRR property Bhanuprakash Modem
2020-06-19 21:11 ` [v8 3/3] drm/debug: Expose connector VRR monitor range via debugfs Bhanuprakash Modem
6 siblings, 0 replies; 17+ messages in thread
From: Bhanuprakash Modem @ 2020-06-19 21:11 UTC (permalink / raw)
To: bhanuprakash.modem, dri-devel, intel-gfx
From: Manasi Navare <manasi.d.navare@intel.com>
DP sink device sets the Ignore MSA bit in its
DP_DOWNSTREAM_PORT_COUNT register to indicate its ability to
ignore the MSA video timing parameters and its ability to support
seamless video timing change over a range of timing exposed by
DisplayID and EDID.
This is required for the sink to indicate that it is Adaptive sync
capable.
v3:
* Fi the typo in commit message (Manasi)
v2:
* Rename to describe what the function does (Jani Nikula)
Cc: Jani Nikula <jani.nikula@linux.intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Harry Wentland <harry.wentland@amd.com>
Cc: Nicholas Kazlauskas <Nicholas.Kazlauskas@amd.com>
Signed-off-by: Manasi Navare <manasi.d.navare@intel.com>
Reviewed-by: Harry Wentland <harry.wentland@amd.com>
---
include/drm/drm_dp_helper.h | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/include/drm/drm_dp_helper.h b/include/drm/drm_dp_helper.h
index 1165ec105638..e47dc22ebf50 100644
--- a/include/drm/drm_dp_helper.h
+++ b/include/drm/drm_dp_helper.h
@@ -1457,6 +1457,14 @@ drm_dp_alternate_scrambler_reset_cap(const u8 dpcd[DP_RECEIVER_CAP_SIZE])
DP_ALTERNATE_SCRAMBLER_RESET_CAP;
}
+/* Ignore MSA timing for Adaptive Sync support on DP 1.4 */
+static inline bool
+drm_dp_sink_can_do_video_without_timing_msa(const u8 dpcd[DP_RECEIVER_CAP_SIZE])
+{
+ return dpcd[DP_DOWN_STREAM_PORT_COUNT] &
+ DP_MSA_TIMING_PAR_IGNORED;
+}
+
/*
* DisplayPort AUX channel
*/
--
2.20.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [v6 2/3] drm/i915/dp: Attach and set drm connector VRR property
2020-06-12 23:04 [PATCH v6 0/3] VRR capable attach prop in i915, DPCD helper, VRR debugfs Manasi Navare
` (4 preceding siblings ...)
2020-06-19 21:11 ` [v6 1/3] drm/dp: DRM DP helper for reading Ignore MSA from DPCD Bhanuprakash Modem
@ 2020-06-19 21:11 ` Bhanuprakash Modem
2020-06-19 21:11 ` [v8 3/3] drm/debug: Expose connector VRR monitor range via debugfs Bhanuprakash Modem
6 siblings, 0 replies; 17+ messages in thread
From: Bhanuprakash Modem @ 2020-06-19 21:11 UTC (permalink / raw)
To: bhanuprakash.modem, dri-devel, intel-gfx
From: Aditya Swarup <aditya.swarup@intel.com>
This function sets the VRR property for connector based
on the platform support, EDID monitor range and DP sink
DPCD capability of outputing video without msa
timing information.
v5:
* Fix the vrr prop not being set in kernel (Manasi)
* Unset the prop on connector disconnect (Manasi)
v4:
* Rebase (Mansi)
v3:
* intel_dp_is_vrr_capable can be used for debugfs, make it
non static (Manasi)
v2:
* Just set this in intel_dp_get_modes instead of new hook (Jani)
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Jani Nikula <jani.nikula@linux.intel.com>
Signed-off-by: Aditya Swarup <aditya.swarup@intel.com>
Signed-off-by: Manasi Navare <manasi.d.navare@intel.com>
---
drivers/gpu/drm/i915/display/intel_dp.c | 27 +++++++++++++++++++++++++
drivers/gpu/drm/i915/display/intel_dp.h | 2 ++
2 files changed, 29 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 42589cae766d..d0dba81cfb07 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -6149,6 +6149,9 @@ intel_dp_detect(struct drm_connector *connector,
if (status == connector_status_disconnected) {
memset(&intel_dp->compliance, 0, sizeof(intel_dp->compliance));
memset(intel_dp->dsc_dpcd, 0, sizeof(intel_dp->dsc_dpcd));
+ /*Reset the immutable VRR Capable property */
+ drm_connector_set_vrr_capable_property(connector,
+ false);
if (intel_dp->is_mst) {
drm_dbg_kms(&dev_priv->drm,
@@ -6256,6 +6259,23 @@ intel_dp_force(struct drm_connector *connector)
intel_display_power_put(dev_priv, aux_domain, wakeref);
}
+bool intel_dp_is_vrr_capable(struct drm_connector *connector)
+{
+ struct intel_dp *intel_dp = intel_attached_dp(to_intel_connector(connector));
+ const struct drm_display_info *info = &connector->display_info;
+ struct drm_i915_private *dev_priv = to_i915(connector->dev);
+
+ /*
+ * DP Sink is capable of Variable refresh video timings if
+ * Ignore MSA bit is set in DPCD.
+ * EDID monitor range also should be atleast 10 for reasonable
+ * Adaptive sync/ VRR end user experience.
+ */
+ return INTEL_GEN(dev_priv) >= 12 &&
+ drm_dp_sink_can_do_video_without_timing_msa(intel_dp->dpcd) &&
+ info->monitor_range.max_vfreq - info->monitor_range.min_vfreq > 10;
+}
+
static int intel_dp_get_modes(struct drm_connector *connector)
{
struct intel_connector *intel_connector = to_intel_connector(connector);
@@ -6264,6 +6284,10 @@ static int intel_dp_get_modes(struct drm_connector *connector)
edid = intel_connector->detect_edid;
if (edid) {
int ret = intel_connector_update_modes(connector, edid);
+
+ if (intel_dp_is_vrr_capable(connector))
+ drm_connector_set_vrr_capable_property(connector,
+ true);
if (ret)
return ret;
}
@@ -7325,6 +7349,9 @@ intel_dp_add_properties(struct intel_dp *intel_dp, struct drm_connector *connect
connector->state->scaling_mode = DRM_MODE_SCALE_ASPECT;
}
+
+ if (INTEL_GEN(dev_priv) >= 12)
+ drm_connector_attach_vrr_capable_property(connector);
}
static void intel_dp_init_panel_power_timestamps(struct intel_dp *intel_dp)
diff --git a/drivers/gpu/drm/i915/display/intel_dp.h b/drivers/gpu/drm/i915/display/intel_dp.h
index 0a8950f744f6..db895a3cd93f 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.h
+++ b/drivers/gpu/drm/i915/display/intel_dp.h
@@ -14,6 +14,7 @@ enum pipe;
enum port;
struct drm_connector_state;
struct drm_encoder;
+struct drm_connector;
struct drm_i915_private;
struct drm_modeset_acquire_ctx;
struct drm_dp_vsc_sdp;
@@ -120,6 +121,7 @@ void intel_read_dp_sdp(struct intel_encoder *encoder,
unsigned int type);
bool intel_digital_port_connected(struct intel_encoder *encoder);
void intel_dp_process_phy_request(struct intel_dp *intel_dp);
+bool intel_dp_is_vrr_capable(struct drm_connector *connector);
static inline unsigned int intel_dp_unused_lane_mask(int lane_count)
{
--
2.20.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [v8 3/3] drm/debug: Expose connector VRR monitor range via debugfs
2020-06-12 23:04 [PATCH v6 0/3] VRR capable attach prop in i915, DPCD helper, VRR debugfs Manasi Navare
` (5 preceding siblings ...)
2020-06-19 21:11 ` [v6 2/3] drm/i915/dp: Attach and set drm connector VRR property Bhanuprakash Modem
@ 2020-06-19 21:11 ` Bhanuprakash Modem
6 siblings, 0 replies; 17+ messages in thread
From: Bhanuprakash Modem @ 2020-06-19 21:11 UTC (permalink / raw)
To: bhanuprakash.modem, dri-devel, intel-gfx
[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
* Remove AMD specific logic
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
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
^ permalink raw reply related [flat|nested] 17+ messages in thread
end of thread, other threads:[~2020-06-19 13:15 UTC | newest]
Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-12 23:04 [PATCH v6 0/3] VRR capable attach prop in i915, DPCD helper, VRR debugfs Manasi Navare
2020-06-12 23:04 ` [PATCH v6 1/3] drm/dp: DRM DP helper for reading Ignore MSA from DPCD Manasi Navare
2020-06-18 23:23 ` Manasi Navare
2020-06-12 23:04 ` [PATCH v6 2/3] drm/i915/dp: Attach and set drm connector VRR property Manasi Navare
2020-06-12 23:04 ` [PATCH v6 3/3] drm/i915/dp: Expose connector VRR monitor range via debugfs Manasi Navare
2020-06-12 23:56 ` [PATCH v7 " Manasi Navare
2020-06-15 21:36 ` Emil Velikov
2020-06-15 21:48 ` Manasi Navare
2020-06-16 15:34 ` Emil Velikov
2020-06-18 18:35 ` Manasi Navare
2020-06-13 2:00 ` [Intel-gfx] [PATCH v6 " kernel test robot
2020-06-13 5:41 ` kernel test robot
2020-06-16 5:43 ` kernel test robot
2020-06-19 21:11 ` [v6 0/3] VRR capable attach prop in i915, DPCD helper, VRR debugfs Bhanuprakash Modem
2020-06-19 21:11 ` [v6 1/3] drm/dp: DRM DP helper for reading Ignore MSA from DPCD Bhanuprakash Modem
2020-06-19 21:11 ` [v6 2/3] drm/i915/dp: Attach and set drm connector VRR property Bhanuprakash Modem
2020-06-19 21:11 ` [v8 3/3] drm/debug: Expose connector VRR monitor range via debugfs Bhanuprakash Modem
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).