From patchwork Wed Dec 10 23:53:10 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Todd Previte X-Patchwork-Id: 5473351 Return-Path: X-Original-To: patchwork-intel-gfx@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 51AB99F1D4 for ; Wed, 10 Dec 2014 23:54:18 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 7184F2018E for ; Wed, 10 Dec 2014 23:54:17 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id 75FD5201B9 for ; Wed, 10 Dec 2014 23:54:15 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id F2D6B6E717; Wed, 10 Dec 2014 15:54:14 -0800 (PST) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mail-pd0-f181.google.com (mail-pd0-f181.google.com [209.85.192.181]) by gabe.freedesktop.org (Postfix) with ESMTP id C817072082 for ; Wed, 10 Dec 2014 15:54:13 -0800 (PST) Received: by mail-pd0-f181.google.com with SMTP id v10so3708320pde.26 for ; Wed, 10 Dec 2014 15:54:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=quZReiNGT+ybatFyZ7cYUgEvJ8bnSo4RU3ppCj/zXiQ=; b=ic4y6MPpMssSMPN7dcSImcrjeSO0kvqTxd96hWftEthZOgy7pGQQ19PZQZxqjn9afQ 4yn15x4jSqDb+JZrc3VCsENFZUNtybpFusYK0+4uIZS3bCnCQOWlU15su2O0J18AhCJ/ KQa7Dv0H2MH22EMrfEVL5/1JAaHC8c6dBBiRAFkF0jPxFja6Ug3mJWwnQ3Vgs+vZ8qeM ebJaj9W04D8rMdWLod2sLIoBhxaGOaZiMZXX8XVlROUyk6GfyLV9v0br1Y1dglFGJ+5E 2NtkQC2sa2iBTQYLOmUvQc02PZrOX5Au8QMcDDPf9G7ObXCkMTazDcESkrUW0MiKIFp7 Gfgg== X-Received: by 10.70.89.68 with SMTP id bm4mr11549784pdb.15.1418255653579; Wed, 10 Dec 2014 15:54:13 -0800 (PST) Received: from localhost.localdomain (ip68-3-234-27.ph.ph.cox.net. [68.3.234.27]) by mx.google.com with ESMTPSA id gy10sm5164958pbd.67.2014.12.10.15.54.11 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 10 Dec 2014 15:54:12 -0800 (PST) From: Todd Previte To: intel-gfx@lists.freedesktop.org Date: Wed, 10 Dec 2014 16:53:10 -0700 Message-Id: <1418255597-4716-11-git-send-email-tprevite@gmail.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1418255597-4716-1-git-send-email-tprevite@gmail.com> References: <1418255597-4716-1-git-send-email-tprevite@gmail.com> Subject: [Intel-gfx] [PATCH 10/17] drm/i915: Implement the 'open' and 'write' debugfs functions for Displayport compliance X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" X-Spam-Status: No, score=-4.1 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_MED, T_DKIM_INVALID, T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This patch is a combination of sections out of the following two previous patches: [PATCH 05/10] drm/i915: Add debugfs interface for Displayport debug and compliance testing [PATCH 07/10] drm/i915: Add structures for Displayport compliance testing parameters This patch implements the debugfs functions for 'open' and 'write' as they are specified in the file ops structure. The 'open' function outputs Displayport data to the appropriate debugfs file while the 'write' function handles parsing of user data written to that same file. Signed-off-by: Todd Previte --- drivers/gpu/drm/i915/i915_debugfs.c | 66 +++++++++++++++++++++++++++++++++++-- 1 file changed, 64 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c index 55b6da5..5eb6c24 100644 --- a/drivers/gpu/drm/i915/i915_debugfs.c +++ b/drivers/gpu/drm/i915/i915_debugfs.c @@ -3958,14 +3958,76 @@ static int displayport_config_ctl_show(struct seq_file *m, void *data) static int displayport_config_ctl_open(struct inode *inode, struct file *file) { - return 0; + struct drm_device *dev = inode->i_private; + + return single_open(file, displayport_config_ctl_show, dev); } static ssize_t displayport_config_ctl_write(struct file *file, const char __user *ubuf, size_t len, loff_t *offp) { - return 0; + char *input_buffer; + int status = 0; + struct seq_file *m; + struct drm_device *dev; + struct drm_connector *connector; + struct drm_encoder *drm_enc; + struct intel_encoder *intel_encoder; + struct intel_connector *intel_connector; + struct intel_dp *intel_dp; + + m = file->private_data; + if (!m) { + status = -ENODEV; + return status; + } + dev = m->private; + + if (!dev) { + status = -ENODEV; + return status; + } + + if (len == 0) + return 0; + + input_buffer = kmalloc(len + 1, GFP_KERNEL); + if (!input_buffer) + return -ENOMEM; + + if (copy_from_user(input_buffer, ubuf, len)) { + status = -EFAULT; + goto out; + } + + input_buffer[len] = '\0'; + DRM_DEBUG_DRIVER("Copied %d bytes from user\n", (unsigned int)len); + + list_for_each_entry(connector, &dev->mode_config.connector_list, head) { + intel_connector = to_intel_connector(connector); + intel_encoder = intel_connector->encoder; + drm_enc = &intel_encoder->base; + if (connector->connector_type == + DRM_MODE_CONNECTOR_DisplayPort) { + if (intel_encoder->type == INTEL_OUTPUT_DISPLAYPORT || + intel_encoder->type == INTEL_OUTPUT_UNKNOWN) { + intel_dp = enc_to_intel_dp(drm_enc); + status = displayport_parse_config(input_buffer, + len, + intel_dp); + if (status < 0) + goto out; + } + } + } +out: + kfree(input_buffer); + if (status < 0) + return status; + + *offp += len; + return len; } static const struct file_operations i915_displayport_config_ctl_fops = {