From patchwork Thu May 16 19:27:59 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Russell King X-Patchwork-Id: 2580141 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from casper.infradead.org (casper.infradead.org [85.118.1.10]) by patchwork1.kernel.org (Postfix) with ESMTP id 660373FE1F for ; Thu, 16 May 2013 20:59:43 +0000 (UTC) Received: from merlin.infradead.org ([2001:4978:20e::2]) by casper.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1Ud5FW-0002B8-Gt; Thu, 16 May 2013 20:58:09 +0000 Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1Ud5F0-0000Wn-VF; Thu, 16 May 2013 20:57:34 +0000 Received: from caramon.arm.linux.org.uk ([78.32.30.218]) by merlin.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1Ud4cf-0004lx-W5 for linux-arm-kernel@lists.infradead.org; Thu, 16 May 2013 20:17:58 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=arm.linux.org.uk; s=caramon; h=Date:Sender:Message-Id:Subject:Cc:To:From:References:In-Reply-To; bh=3q7jU9PGA1TgqKgeJcjSB4Yk/dwTzosxKxxry7d6CFg=; b=BD3ycCJJEJFtRQxkQvDKcMxyJD+RhPRC3PS8D0BXywToQz8NwakkJLGbVHC2qifRdfV2Rl/11RLZY6oPl3ZxFC2skjHoIUxFyUoIYqM/eObzRbV8URtzUKJ1Kx81mKsm4yM42knXA4NUjGPFFjyfpVzQYiSmtQjRC+TFnn7+S1Y=; Received: from e0022681537dd.dyn.arm.linux.org.uk ([2002:4e20:1eda:1:222:68ff:fe15:37dd]:34773 helo=rmk-PC.arm.linux.org.uk) by caramon.arm.linux.org.uk with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.76) (envelope-from ) id 1Ud4cG-0007vZ-V3; Thu, 16 May 2013 21:17:33 +0100 Received: from rmk by rmk-PC.arm.linux.org.uk with local (Exim 4.76) (envelope-from ) id 1Ud3qJ-0001rA-3q; Thu, 16 May 2013 20:27:59 +0100 In-Reply-To: <20130516192510.GV18614@n2100.arm.linux.org.uk> References: <20130516192510.GV18614@n2100.arm.linux.org.uk> From: Russell King To: linux-arm-kernel@lists.infradead.org Subject: [RFC 8/8] DRM: dove: provide a couple of generic slave encoder helpers Message-Id: Date: Thu, 16 May 2013 20:27:59 +0100 X-Bad-Reply: References and In-Reply-To but no 'Re:' in Subject. X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20130516_161758_563845_24859500 X-CRM114-Status: GOOD ( 12.02 ) X-Spam-Score: -4.9 (----) X-Spam-Report: SpamAssassin version 3.3.2 on merlin.infradead.org summary: Content analysis details: (-4.9 points) pts rule name description ---- ---------------------- -------------------------------------------------- -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at http://www.dnswl.org/, medium trust [78.32.30.218 listed in list.dnswl.org] -0.6 RP_MATCHES_RCVD Envelope sender domain matches handover relay domain -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature X-Mailman-Approved-At: Thu, 16 May 2013 16:56:34 -0400 Cc: Jason Cooper , David Airlie , dri-devel@lists.freedesktop.org, Rob Clark , Darren Etheridge , Sebastian Hesselbarth X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org Signed-off-by: Russell King --- drivers/gpu/drm/dove/dove_output.c | 20 ++++++++++++++++++++ drivers/gpu/drm/dove/dove_output.h | 6 ++++++ drivers/gpu/drm/dove/dove_tda19988.c | 23 ++--------------------- 3 files changed, 28 insertions(+), 21 deletions(-) diff --git a/drivers/gpu/drm/dove/dove_output.c b/drivers/gpu/drm/dove/dove_output.c index 7cd7d35..470ce80 100644 --- a/drivers/gpu/drm/dove/dove_output.c +++ b/drivers/gpu/drm/dove/dove_output.c @@ -9,6 +9,7 @@ #include "drm_crtc_helper.h" #include "drm_edid.h" #include "drm_helper.h" +#include "drm_encoder_slave.h" #include "dove_output.h" #include "dove_drm.h" @@ -76,6 +77,25 @@ void dove_drm_encoder_commit(struct drm_encoder *encoder) funcs->dpms(encoder, DRM_MODE_DPMS_ON); } +/* Shouldn't this be a generic helper function? */ +int dove_drm_slave_encoder_mode_valid(struct drm_connector *conn, + struct drm_display_mode *mode) +{ + struct drm_encoder *encoder = conn->encoder; + struct drm_encoder_slave *slave = to_encoder_slave(encoder); + + return slave->slave_funcs->mode_valid(encoder, mode); +} + +int dove_drm_slave_encoder_set_property(struct drm_connector *conn, + struct drm_property *property, uint64_t value) +{ + struct drm_encoder *encoder = conn->encoder; + struct drm_encoder_slave *slave = to_encoder_slave(encoder); + + return slave->slave_funcs->set_property(encoder, conn, property, value); +} + struct drm_connector *dove_output_create(struct drm_device *dev, const struct dove_output_type *type) { diff --git a/drivers/gpu/drm/dove/dove_output.h b/drivers/gpu/drm/dove/dove_output.h index 1b12890..d504ef0 100644 --- a/drivers/gpu/drm/dove/dove_output.h +++ b/drivers/gpu/drm/dove/dove_output.h @@ -20,6 +20,12 @@ struct drm_encoder *dove_drm_connector_best_encoder(struct drm_connector *conn); void dove_drm_encoder_prepare(struct drm_encoder *encoder); void dove_drm_encoder_commit(struct drm_encoder *encoder); +int dove_drm_slave_encoder_mode_valid(struct drm_connector *conn, + struct drm_display_mode *mode); + +int dove_drm_slave_encoder_set_property(struct drm_connector *conn, + struct drm_property *property, uint64_t value); + struct drm_connector *dove_output_create(struct drm_device *dev, const struct dove_output_type *); diff --git a/drivers/gpu/drm/dove/dove_tda19988.c b/drivers/gpu/drm/dove/dove_tda19988.c index 26ef2a2..0b179d7 100644 --- a/drivers/gpu/drm/dove/dove_tda19988.c +++ b/drivers/gpu/drm/dove/dove_tda19988.c @@ -20,15 +20,6 @@ struct dove_drm_tda19988_encoder { }; #define to_tda19988_encoder(enc) container_of(to_encoder_slave(enc), struct dove_drm_tda19988_encoder, slave) -static int dove_drm_connector_tda19988_mode_valid(struct drm_connector *conn, - struct drm_display_mode *mode) -{ - struct drm_encoder *enc = conn->encoder; - struct dove_drm_tda19988_encoder *tenc = to_tda19988_encoder(enc); - - return tenc->slave.slave_funcs->mode_valid(enc, mode); -} - static int dove_drm_connector_tda19988_get_modes(struct drm_connector *conn) { struct drm_display_mode *mode; @@ -96,7 +87,7 @@ static const struct drm_encoder_funcs dove_drm_tda19988_enc_funcs = { static const struct drm_connector_helper_funcs dove_drm_conn_tda19988_helper_funcs = { .get_modes = dove_drm_connector_tda19988_get_modes, - .mode_valid = dove_drm_connector_tda19988_mode_valid, + .mode_valid = dove_drm_slave_encoder_mode_valid, .best_encoder = dove_drm_connector_best_encoder, }; @@ -225,22 +216,12 @@ static int dove_drm_conn_tda19988_create(struct drm_connector *conn, return ret; } -static int dove_drm_conn_tda19988_set_property(struct drm_connector *conn, - struct drm_property *property, uint64_t value) -{ - struct dove_drm_tda19988_encoder *tenc = - to_tda19988_encoder(conn->encoder); - struct drm_encoder_slave_funcs *sfuncs = tenc->slave.slave_funcs; - - return sfuncs->set_property(&tenc->slave.base, conn, property, value); -} - static const struct dove_output_type dove_drm_conn_tda19988 = { .connector_type = DRM_MODE_CONNECTOR_HDMIA, .polled = DRM_CONNECTOR_POLL_HPD, .detect = dove_drm_conn_tda19988_detect, .create = dove_drm_conn_tda19988_create, - .set_property = dove_drm_conn_tda19988_set_property, + .set_property = dove_drm_slave_encoder_set_property, }; struct drm_connector *dove_drm_tda19988_create(struct drm_device *dev)