From patchwork Thu Oct 3 22:28:22 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Paul X-Patchwork-Id: 2986451 Return-Path: X-Original-To: patchwork-linux-arm@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 197A29F288 for ; Thu, 3 Oct 2013 22:36:06 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 3EABF20204 for ; Thu, 3 Oct 2013 22:36:05 +0000 (UTC) Received: from casper.infradead.org (casper.infradead.org [85.118.1.10]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 504EB200E0 for ; Thu, 3 Oct 2013 22:36:04 +0000 (UTC) Received: from merlin.infradead.org ([2001:4978:20e::2]) by casper.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1VRrTm-0004iN-BY; Thu, 03 Oct 2013 22:34:43 +0000 Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1VRrOm-0002jK-Po; Thu, 03 Oct 2013 22:29:32 +0000 Received: from mail-qe0-x22f.google.com ([2607:f8b0:400d:c02::22f]) by merlin.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1VRrOH-0002cU-Ch for linux-arm-kernel@lists.infradead.org; Thu, 03 Oct 2013 22:29:03 +0000 Received: by mail-qe0-f47.google.com with SMTP id b4so2287634qen.6 for ; Thu, 03 Oct 2013 15:28: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=ifB8xnBIJfd5ECmIMaYmXn2A9U276YIlnI/ph1IIcDE=; b=a2lhRHwxCKQLE5YRcyio4XNaCVpBaPbIIxpfjUav+GI+9znis+EGBjTukDgTgdFxEL mOx0MY1RiomyJIrK7hOU1Maa3XykwQynjI6rXQ5J3a08rfbZZnEpjHi3v0RhMTuAH3nZ mRV0WiJ7ZdiuBwRPDai44/pFEBvw7+RVwCeLc= 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=ifB8xnBIJfd5ECmIMaYmXn2A9U276YIlnI/ph1IIcDE=; b=Uw+mGvzGEWKOS6DFZla2hfZvCRKRYAltjMS5WU2z2iY+WgAPAhZxISooQsYl+7ViiJ COWvHSpBHKAm1BT7yC1ZVux1cePmrNfPrFMl3XuRwCWlVAkrR6+BOaM0iC9I/XG3LNep Kg7JyU4d8ouU5rxsbVf/VnNNsqWUuDm+lNTHiIXjQq7Lsi5+LENARKTki3Xo8toS0rPr bNXNKN4O4xgVFv7fSa7NbaJik4iwTzAMJNB2D4DnPkkvwrsx+h8fmg2k/0s0oi9aDagb NQSxX8LWhpZrRiFy+srhmHoSa6SNWXe7qMnMF1mqv2nI6B3knSIDrQ54IES5Bw3FO4aP qtHw== X-Gm-Message-State: ALoCoQlQFuRQt4ybgm+Dk/RAe81N5fnB4CszxUOdJCECHI0lcm6d1OdhgGRRzymfWhb5d+jorh+C X-Received: by 10.224.4.70 with SMTP id 6mr13533601qaq.86.1380839320118; Thu, 03 Oct 2013 15:28:40 -0700 (PDT) Received: from seanpaul-glaptop.roam.corp.google.com (cpe-173-095-180-236.nc.res.rr.com. [173.95.180.236]) by mx.google.com with ESMTPSA id fx6sm17610020qeb.1.1969.12.31.16.00.00 (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Thu, 03 Oct 2013 15:28: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 v2 4/5] drm/exynos: Initialize ptn3460 if present Date: Thu, 3 Oct 2013 18:28:22 -0400 Message-Id: <1380839303-4834-5-git-send-email-seanpaul@chromium.org> X-Mailer: git-send-email 1.8.4 In-Reply-To: <1380839303-4834-1-git-send-email-seanpaul@chromium.org> References: <1380670860-17621-1-git-send-email-seanpaul@chromium.org> <1380839303-4834-1-git-send-email-seanpaul@chromium.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20131003_182901_636498_0E2C9A5E X-CRM114-Status: GOOD ( 14.74 ) X-Spam-Score: -2.0 (--) Cc: airlied@linux.ie, Sean Paul 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 X-Spam-Status: No, score=-4.7 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 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;