From patchwork Thu Oct 10 22:26:17 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Paul X-Patchwork-Id: 3019351 Return-Path: X-Original-To: patchwork-dri-devel@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 AD9159F243 for ; Thu, 10 Oct 2013 22:31:25 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id DF8A4201B6 for ; Thu, 10 Oct 2013 22:31:24 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id 0D6FA201BF for ; Thu, 10 Oct 2013 22:31:24 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id E00C1E7AA6 for ; Thu, 10 Oct 2013 15:31:23 -0700 (PDT) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-pd0-f171.google.com (mail-pd0-f171.google.com [209.85.192.171]) by gabe.freedesktop.org (Postfix) with ESMTP id C3191435B5 for ; Thu, 10 Oct 2013 15:26:40 -0700 (PDT) Received: by mail-pd0-f171.google.com with SMTP id g10so3308435pdj.16 for ; Thu, 10 Oct 2013 15:26:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=tmcF6OK/FxJQcxD5V1Bni1b9SuadDFWJvVSZZWJuaTs=; b=Ks2WMvZY9uw7VnwdWnF0XXm78fxmwOC9lUDGCQveBi9IF5qxDTxgP1DyLZeHIrHonr tbOP4TDAEl0KmSL+8a3MFsp6O5h9kaXvuLyu5EfS518kNizcJufwsmNPC8XccyJNHvvg MsgCb6deOiVSlkz6PgHP/YVZvpZHKt0L9u8Bw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=tmcF6OK/FxJQcxD5V1Bni1b9SuadDFWJvVSZZWJuaTs=; b=K7/Fb6+qXZ6PFRFJrDB9+Q1JNgifMIOhByNvKPNgolefuyI/tMlGAIoItJNYUff8B4 m7BYp1S4HNy9REzlUQHLYdqKRkbWVptZtYmaOw2sI5LY6BtveUknDmXzyI0VJsWeyPS7 5BWOgZTnpas3h8yL0rYoOoSBB8Rqtnah1itGS/6bPfxQkXKOI99eFY4ry863E2qRkEkf ZnLkxqKZmsCCRT7nxzo/CIxwf02jwg8b2IhV89VFH+oRStMusB7dtA1Wct5XatEJKccE Us+cTinlC629IQQus8570G2spa/rEfEPC27D5KIlXHAZTt7tVbuVkiVTbDUDNe9S//e6 TGvQ== X-Gm-Message-State: ALoCoQn2rP2UszIz4GYjskugaPslruwmYmr9v8nC8iDrXmtSmYDLOpD2Guew0pnrlxGJPQftH7n1 X-Received: by 10.66.175.133 with SMTP id ca5mr18411884pac.40.1381444000621; Thu, 10 Oct 2013 15:26:40 -0700 (PDT) Received: from seanpaul-glaptop.corp.google.com (dhcp-172-19-29-233.mtv.corp.google.com [172.19.29.233]) by mx.google.com with ESMTPSA id f2sm55418619pbg.44.1969.12.31.16.00.00 (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Thu, 10 Oct 2013 15:26:39 -0700 (PDT) From: Sean Paul To: kgene.kim@samsung.com, dri-devel@lists.freedesktop.org, linux-samsung-soc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, devicetree@vger.kernel.org, inki.dae@samsung.com Subject: [PATCH v3 4/5] drm/exynos: Initialize ptn3460 if present Date: Thu, 10 Oct 2013 18:26:17 -0400 Message-Id: <1381443978-5654-5-git-send-email-seanpaul@chromium.org> X-Mailer: git-send-email 1.8.4 In-Reply-To: <1381443978-5654-1-git-send-email-seanpaul@chromium.org> References: <1380839303-4834-1-git-send-email-seanpaul@chromium.org> <1381443978-5654-1-git-send-email-seanpaul@chromium.org> X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: dri-devel-bounces+patchwork-dri-devel=patchwork.kernel.org@lists.freedesktop.org Errors-To: dri-devel-bounces+patchwork-dri-devel=patchwork.kernel.org@lists.freedesktop.org X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_MED,RP_MATCHES_RCVD,T_DKIM_INVALID,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 adds code to look for the ptn3460 in the device tree file on exynos initialization. If ptn node is found, the driver will initialize the ptn3460 driver and skip creating a DP connector (since the bridge driver will register its own connector). Signed-off-by: Sean Paul --- v2: - Changed include from of_i2c.h to i2c.h - Changed of_find_by_name to of_find_compatible v3: No changes drivers/gpu/drm/exynos/exynos_drm_core.c | 44 +++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/exynos/exynos_drm_core.c b/drivers/gpu/drm/exynos/exynos_drm_core.c index 1bef6dc..08ca4f9 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_core.c +++ b/drivers/gpu/drm/exynos/exynos_drm_core.c @@ -12,7 +12,9 @@ * option) any later version. */ +#include #include +#include #include "exynos_drm_drv.h" #include "exynos_drm_encoder.h" #include "exynos_drm_connector.h" @@ -20,6 +22,40 @@ static LIST_HEAD(exynos_drm_subdrv_list); +struct bridge_init { + struct i2c_client *client; + struct device_node *node; +}; + +static bool find_bridge(const char *compat, struct bridge_init *bridge) +{ + bridge->client = NULL; + bridge->node = of_find_compatible_node(NULL, NULL, compat); + if (!bridge->node) + return false; + + bridge->client = of_find_i2c_device_by_node(bridge->node); + if (!bridge->client) + return false; + + return true; +} + +/* returns the number of bridges attached */ +static int exynos_drm_attach_lcd_bridge(struct drm_device *dev, + struct drm_encoder *encoder) +{ + struct bridge_init bridge; + int ret; + + if (find_bridge("nxp,ptn3460", &bridge)) { + ret = ptn3460_init(dev, encoder, bridge.client, bridge.node); + if (!ret) + return 1; + } + return 0; +} + static int exynos_drm_create_enc_conn(struct drm_device *dev, struct exynos_drm_subdrv *subdrv) { @@ -36,6 +72,13 @@ static int exynos_drm_create_enc_conn(struct drm_device *dev, DRM_ERROR("failed to create encoder\n"); return -EFAULT; } + subdrv->encoder = encoder; + + if (subdrv->manager->display_ops->type == EXYNOS_DISPLAY_TYPE_LCD) { + ret = exynos_drm_attach_lcd_bridge(dev, encoder); + if (ret) + return 0; + } /* * create and initialize a connector for this sub driver and @@ -48,7 +91,6 @@ static int exynos_drm_create_enc_conn(struct drm_device *dev, goto err_destroy_encoder; } - subdrv->encoder = encoder; subdrv->connector = connector; return 0;