diff mbox series

[v6,3/3] drm/i915/dp: Expose connector VRR monitor range via debugfs

Message ID 20200612230444.10121-4-manasi.d.navare@intel.com (mailing list archive)
State New, archived
Headers show
Series VRR capable attach prop in i915, DPCD helper, VRR debugfs | expand

Commit Message

Navare, Manasi June 12, 2020, 11:04 p.m. UTC
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(+)

Comments

kernel test robot June 13, 2020, 2 a.m. UTC | #1
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
kernel test robot June 13, 2020, 5:41 a.m. UTC | #2
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
kernel test robot June 16, 2020, 5:43 a.m. UTC | #3
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
diff mbox series

Patch

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)) &&