[PATCH 06/17] drm/i915: Add support functions in debugfs for handling Displayport compliance configuration

Todd Previte
2014-12-10T23:54:05Z

This patch was previously part of "[PATCH 05/10] drm/i915: Add debugfs interface
for Displayport debug and compliance testing". Adds two support functions for
handling Displayport configuration parameters that are used for compliance
testing.

Signed-off-by: Todd Previte <tprevite@gmail.com>
---
drivers/gpu/drm/i915/i915_debugfs.c | 48 +++++++++++++++++++++++++++++++++++++
1 file changed, 48 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
index feae100..ce091c1 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -3694,6 +3694,54 @@ static const struct file_operations i915_display_crc_ctl_fops = {
.write = display_crc_ctl_write
};

+enum dp_config_param displayport_get_config_param_type(char *input_string)
+{
+ enum dp_config_param param_type = DP_CONFIG_PARAM_INVALID;
+ int i = 0;
+
+ for (i = 0; i < DP_PARAMETER_COUNT; i++) {
+ if (strncmp(input_string, dp_conf_tokens[i],
+ strlen(dp_conf_tokens[i])) == 0) {
+ param_type = (enum dp_config_param) i;
+ break;
+ }
+ }
+ return param_type;
+}
+
+int value_for_config_param(enum dp_config_param param,
+ char *input_string,
+ void *output_value)
+{
+ int status = 0;
+ unsigned int *out_ptr = (unsigned int *)output_value;
+ char *index = input_string;
+
+ switch (param) {
+ case DP_CONFIG_PARAM_CONNECTOR:
+ output_value = (char *)index;
+ break;
+ case DP_CONFIG_PARAM_LINK_RATE:
+ case DP_CONFIG_PARAM_LANE_COUNT:
+ case DP_CONFIG_PARAM_VOLTAGE_SWING:
+ case DP_CONFIG_PARAM_PREEMPHASIS:
+ status = kstrtol(index, 16, (long *)out_ptr);
+ break;
+ case DP_CONFIG_PARAM_HRES:
+ case DP_CONFIG_PARAM_VRES:
+ case DP_CONFIG_PARAM_BPP:
+ status = kstrtol(index, 10, (long *)out_ptr);
+ break;
+ default:
+ /* Unhandled case */
+ status = -EINVAL;
+ *out_ptr = 0;
+ break;
+ }
+
+ return status;
+}
+
static int displayport_config_ctl_open(struct inode *inode,
struct file *file)
{
--
1.9.1