diff options
Diffstat (limited to 'drivers/gpu/drm/i915/display/intel_display_debugfs.c')
| -rw-r--r-- | drivers/gpu/drm/i915/display/intel_display_debugfs.c | 197 | 
1 files changed, 2 insertions, 195 deletions
diff --git a/drivers/gpu/drm/i915/display/intel_display_debugfs.c b/drivers/gpu/drm/i915/display/intel_display_debugfs.c index a3f9514f69ea..484be08048cf 100644 --- a/drivers/gpu/drm/i915/display/intel_display_debugfs.c +++ b/drivers/gpu/drm/i915/display/intel_display_debugfs.c @@ -27,6 +27,7 @@  #include "intel_dp.h"  #include "intel_dp_link_training.h"  #include "intel_dp_mst.h" +#include "intel_dp_test.h"  #include "intel_drrs.h"  #include "intel_fb.h"  #include "intel_fbc.h" @@ -792,198 +793,6 @@ static int i915_dp_mst_info(struct seq_file *m, void *unused)  	return 0;  } -static ssize_t i915_displayport_test_active_write(struct file *file, -						  const char __user *ubuf, -						  size_t len, loff_t *offp) -{ -	char *input_buffer; -	int status = 0; -	struct drm_device *dev; -	struct drm_connector *connector; -	struct drm_connector_list_iter conn_iter; -	struct intel_dp *intel_dp; -	int val = 0; - -	dev = ((struct seq_file *)file->private_data)->private; - -	if (len == 0) -		return 0; - -	input_buffer = memdup_user_nul(ubuf, len); -	if (IS_ERR(input_buffer)) -		return PTR_ERR(input_buffer); - -	drm_dbg(dev, "Copied %d bytes from user\n", (unsigned int)len); - -	drm_connector_list_iter_begin(dev, &conn_iter); -	drm_for_each_connector_iter(connector, &conn_iter) { -		struct intel_encoder *encoder; - -		if (connector->connector_type != -		    DRM_MODE_CONNECTOR_DisplayPort) -			continue; - -		encoder = to_intel_encoder(connector->encoder); -		if (encoder && encoder->type == INTEL_OUTPUT_DP_MST) -			continue; - -		if (encoder && connector->status == connector_status_connected) { -			intel_dp = enc_to_intel_dp(encoder); -			status = kstrtoint(input_buffer, 10, &val); -			if (status < 0) -				break; -			drm_dbg(dev, "Got %d for test active\n", val); -			/* To prevent erroneous activation of the compliance -			 * testing code, only accept an actual value of 1 here -			 */ -			if (val == 1) -				intel_dp->compliance.test_active = true; -			else -				intel_dp->compliance.test_active = false; -		} -	} -	drm_connector_list_iter_end(&conn_iter); -	kfree(input_buffer); -	if (status < 0) -		return status; - -	*offp += len; -	return len; -} - -static int i915_displayport_test_active_show(struct seq_file *m, void *data) -{ -	struct drm_i915_private *dev_priv = m->private; -	struct drm_connector *connector; -	struct drm_connector_list_iter conn_iter; -	struct intel_dp *intel_dp; - -	drm_connector_list_iter_begin(&dev_priv->drm, &conn_iter); -	drm_for_each_connector_iter(connector, &conn_iter) { -		struct intel_encoder *encoder; - -		if (connector->connector_type != -		    DRM_MODE_CONNECTOR_DisplayPort) -			continue; - -		encoder = to_intel_encoder(connector->encoder); -		if (encoder && encoder->type == INTEL_OUTPUT_DP_MST) -			continue; - -		if (encoder && connector->status == connector_status_connected) { -			intel_dp = enc_to_intel_dp(encoder); -			if (intel_dp->compliance.test_active) -				seq_puts(m, "1"); -			else -				seq_puts(m, "0"); -		} else -			seq_puts(m, "0"); -	} -	drm_connector_list_iter_end(&conn_iter); - -	return 0; -} - -static int i915_displayport_test_active_open(struct inode *inode, -					     struct file *file) -{ -	return single_open(file, i915_displayport_test_active_show, -			   inode->i_private); -} - -static const struct file_operations i915_displayport_test_active_fops = { -	.owner = THIS_MODULE, -	.open = i915_displayport_test_active_open, -	.read = seq_read, -	.llseek = seq_lseek, -	.release = single_release, -	.write = i915_displayport_test_active_write -}; - -static int i915_displayport_test_data_show(struct seq_file *m, void *data) -{ -	struct drm_i915_private *dev_priv = m->private; -	struct drm_connector *connector; -	struct drm_connector_list_iter conn_iter; -	struct intel_dp *intel_dp; - -	drm_connector_list_iter_begin(&dev_priv->drm, &conn_iter); -	drm_for_each_connector_iter(connector, &conn_iter) { -		struct intel_encoder *encoder; - -		if (connector->connector_type != -		    DRM_MODE_CONNECTOR_DisplayPort) -			continue; - -		encoder = to_intel_encoder(connector->encoder); -		if (encoder && encoder->type == INTEL_OUTPUT_DP_MST) -			continue; - -		if (encoder && connector->status == connector_status_connected) { -			intel_dp = enc_to_intel_dp(encoder); -			if (intel_dp->compliance.test_type == -			    DP_TEST_LINK_EDID_READ) -				seq_printf(m, "%lx", -					   intel_dp->compliance.test_data.edid); -			else if (intel_dp->compliance.test_type == -				 DP_TEST_LINK_VIDEO_PATTERN) { -				seq_printf(m, "hdisplay: %d\n", -					   intel_dp->compliance.test_data.hdisplay); -				seq_printf(m, "vdisplay: %d\n", -					   intel_dp->compliance.test_data.vdisplay); -				seq_printf(m, "bpc: %u\n", -					   intel_dp->compliance.test_data.bpc); -			} else if (intel_dp->compliance.test_type == -				   DP_TEST_LINK_PHY_TEST_PATTERN) { -				seq_printf(m, "pattern: %d\n", -					   intel_dp->compliance.test_data.phytest.phy_pattern); -				seq_printf(m, "Number of lanes: %d\n", -					   intel_dp->compliance.test_data.phytest.num_lanes); -				seq_printf(m, "Link Rate: %d\n", -					   intel_dp->compliance.test_data.phytest.link_rate); -				seq_printf(m, "level: %02x\n", -					   intel_dp->train_set[0]); -			} -		} else -			seq_puts(m, "0"); -	} -	drm_connector_list_iter_end(&conn_iter); - -	return 0; -} -DEFINE_SHOW_ATTRIBUTE(i915_displayport_test_data); - -static int i915_displayport_test_type_show(struct seq_file *m, void *data) -{ -	struct drm_i915_private *dev_priv = m->private; -	struct drm_connector *connector; -	struct drm_connector_list_iter conn_iter; -	struct intel_dp *intel_dp; - -	drm_connector_list_iter_begin(&dev_priv->drm, &conn_iter); -	drm_for_each_connector_iter(connector, &conn_iter) { -		struct intel_encoder *encoder; - -		if (connector->connector_type != -		    DRM_MODE_CONNECTOR_DisplayPort) -			continue; - -		encoder = to_intel_encoder(connector->encoder); -		if (encoder && encoder->type == INTEL_OUTPUT_DP_MST) -			continue; - -		if (encoder && connector->status == connector_status_connected) { -			intel_dp = enc_to_intel_dp(encoder); -			seq_printf(m, "%02lx\n", intel_dp->compliance.test_type); -		} else -			seq_puts(m, "0"); -	} -	drm_connector_list_iter_end(&conn_iter); - -	return 0; -} -DEFINE_SHOW_ATTRIBUTE(i915_displayport_test_type); -  static ssize_t  i915_fifo_underrun_reset_write(struct file *filp,  			       const char __user *ubuf, @@ -1062,9 +871,6 @@ static const struct {  	const struct file_operations *fops;  } intel_display_debugfs_files[] = {  	{"i915_fifo_underrun_reset", &i915_fifo_underrun_reset_ops}, -	{"i915_dp_test_data", &i915_displayport_test_data_fops}, -	{"i915_dp_test_type", &i915_displayport_test_type_fops}, -	{"i915_dp_test_active", &i915_displayport_test_active_fops},  };  void intel_display_debugfs_register(struct drm_i915_private *i915) @@ -1088,6 +894,7 @@ void intel_display_debugfs_register(struct drm_i915_private *i915)  	intel_bios_debugfs_register(display);  	intel_cdclk_debugfs_register(display);  	intel_dmc_debugfs_register(display); +	intel_dp_test_debugfs_register(display);  	intel_fbc_debugfs_register(display);  	intel_hpd_debugfs_register(i915);  	intel_opregion_debugfs_register(display);  | 
