From patchwork Fri Apr 10 05:55:28 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hyungwon Hwang X-Patchwork-Id: 6191791 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.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 3BC3C9F2E9 for ; Fri, 10 Apr 2015 05:55:55 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 4DA2B20375 for ; Fri, 10 Apr 2015 05:55:54 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id 5B7452035E for ; Fri, 10 Apr 2015 05:55:53 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 5E7A96E894; Thu, 9 Apr 2015 22:55:40 -0700 (PDT) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mailout1.samsung.com (mailout1.samsung.com [203.254.224.24]) by gabe.freedesktop.org (Postfix) with ESMTP id A3EA36E88F for ; Thu, 9 Apr 2015 22:55:37 -0700 (PDT) Received: from epcpsbgr2.samsung.com (u142.gpu120.samsung.co.kr [203.254.230.142]) by mailout1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0NMK007O2TSO2W90@mailout1.samsung.com> for dri-devel@lists.freedesktop.org; Fri, 10 Apr 2015 14:55:36 +0900 (KST) Received: from epcpsbgm1.samsung.com ( [172.20.52.116]) by epcpsbgr2.samsung.com (EPCPMTA) with SMTP id 85.AB.28411.8D567255; Fri, 10 Apr 2015 14:55:36 +0900 (KST) X-AuditID: cbfee68e-f79c56d000006efb-83-552765d8c5a1 Received: from epmmp1.local.host ( [203.254.227.16]) by epcpsbgm1.samsung.com (EPCPMTA) with SMTP id 72.E3.25346.8D567255; Fri, 10 Apr 2015 14:55:36 +0900 (KST) Received: from localhost.localdomain ([10.252.82.145]) by mmp1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0NMK00MM0TSKKM40@mmp1.samsung.com>; Fri, 10 Apr 2015 14:55:36 +0900 (KST) From: Hyungwon Hwang To: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, inki.dae@samsung.com, daniel@fooishbar.org Subject: [PATCH v5 10/12] drm/exynos: dsi: add support for MIC driver as a bridge Date: Fri, 10 Apr 2015 14:55:28 +0900 Message-id: <1428645330-1043-11-git-send-email-human.hwang@samsung.com> X-Mailer: git-send-email 1.9.1 In-reply-to: <1428645330-1043-1-git-send-email-human.hwang@samsung.com> References: <1428645330-1043-1-git-send-email-human.hwang@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrPLMWRmVeSWpSXmKPExsWyRsSkRPdGqnqowa8mBYvrX56zWlxpnc5q Mf/IOVaL6+ftLK58fc9msXRGH6vFpPsTWCxe3LvIYjFj8ks2B06PF1+3MXvc7z7O5NG3ZRWj x+dNcgEsUVw2Kak5mWWpRfp2CVwZ995NYi7YJF/xbuVF1gbGZskuRg4OCQETiQ2/ebsYOYFM MYkL99azdTFycQgJLGWUWDHpNxNEwkTi/4aj7BCJRYwSj1c1MUE4PxglPrxaxg5SxSagJ7Hg 2g8wW0QgV6L/xQuwImaBHkaJxiuTWUASwgLBEgcW9YGNZRFQlTj3bxpYA6+Au8S+tVOh1slJ nDw2mRXkPE6g+NGtqSBhIQE3iY97trGCzJQQWMQu0dJ+hw1ijoDEt8mHWCDekZXYdIAZYoyk xMEVN1gmMAovYGRYxSiaWpBcUJyUXmSkV5yYW1yal66XnJ+7iREY7qf/PevbwXjzgPUhRgEO RiUe3oZY9VAh1sSy4srcQ4ymQBsmMkuJJucDoyqvJN7Q2MzIwtTE1NjI3NJMSZw3QepnsJBA emJJanZqakFqUXxRaU5q8SFGJg5OqQbGxmX9boWHcj3vbws13b52i7e853O5zxOS7E4wHtNe 03p6YuLls8cD437MfC2XwuF5/J/7kcRn6isnNXI29L71OiHyPbnissivGoX/DutOiNmmmV21 Z02ecy/K7c4dI1eWqZnp0T7iOvULIwJ3cz75fTNIbeuLXxr3jq0+NP+Elo7JLd+uV75zlViK MxINtZiLihMBv6NHCHICAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrFIsWRmVeSWpSXmKPExsVy+t9jAd0bqeqhBrM6xC2uf3nOanGldTqr xfwj51gtrp+3s7jy9T2bxdIZfawWk+5PYLF4ce8ii8WMyS/ZHDg9Xnzdxuxxv/s4k0ffllWM Hp83yQWwRDUw2mSkJqakFimk5iXnp2TmpdsqeQfHO8ebmhkY6hpaWpgrKeQl5qbaKrn4BOi6 ZeYA3aKkUJaYUwoUCkgsLlbSt8M0ITTETdcCpjFC1zckCK7HyAANJKxhzLj3bhJzwSb5incr L7I2MDZLdjFyckgImEj833CUHcIWk7hwbz1bFyMXh5DAIkaJx6uamCCcH4wSH14tA6tiE9CT WHDtB5gtIpAr0f/iBVgRs0APo0TjlcksIAlhgWCJA4v6mEBsFgFViXP/poE18Aq4S+xbO5UJ Yp2cxMljk1m7GDk4OIHiR7emgoSFBNwkPu7ZxjqBkXcBI8MqRtHUguSC4qT0XEO94sTc4tK8 dL3k/NxNjOB4eia1g3Flg8UhRgEORiUe3hvx6qFCrIllxZW5hxglOJiVRHgrY4FCvCmJlVWp RfnxRaU5qcWHGE2BjprILCWanA+M9bySeENjEzMjSyNzQwsjY3Mlcd45unKhQgLpiSWp2amp BalFMH1MHJxSDYwx5Q+n5k7i/3/4x80JeRHXAld7/zdeWbrNYfN7xbKJcj9XWSvdX2Gvubzo yIytGjkKrDsem8+aNb9dNHWG2OpUo2KVuBOv5wYUHdNfH1Z8u9dPI8JsT0vXXp6fgr6Pj+/P vqO+fO/SjJSuKaybeuZzn/D17Lr85l2PvFz78W7hHeJXb9dlFJsosRRnJBpqMRcVJwIAmdrm Jb0CAAA= DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Cc: dh09.lee@samsung.com, sw0312.kim@samsung.com, Hyungwon Hwang , cw00.choi@samsung.com X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_MED, 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 MIC must be initilized by MIPI DSI when it is being bound. Signed-off-by: Hyungwon Hwang --- Changes for v2: - None Changes for v3: - None Changes for v4: - None Changes for v5: - None .../devicetree/bindings/video/exynos_dsim.txt | 23 ++++++++++++++++++--- drivers/gpu/drm/exynos/exynos_drm_dsi.c | 24 ++++++++++++++++++++++ 2 files changed, 44 insertions(+), 3 deletions(-) -- 1.9.1 diff --git a/Documentation/devicetree/bindings/video/exynos_dsim.txt b/Documentation/devicetree/bindings/video/exynos_dsim.txt index 11ccac9..0be0362 100644 --- a/Documentation/devicetree/bindings/video/exynos_dsim.txt +++ b/Documentation/devicetree/bindings/video/exynos_dsim.txt @@ -32,10 +32,19 @@ Video interfaces: Device node can contain video interface port nodes according to [2]. The following are properties specific to those nodes: - port node: - - reg: (required) can be 0 for input RGB/I80 port or 1 for DSI port; + port node inbound: + - reg: (required) must be 0. + port node outbound: + - reg: (required) must be 1. - endpoint node of DSI port (reg = 1): + endpoint node connected from mic node (reg = 0): + - remote-endpoint: specifies the endpoint in mic node. This node is required + for Exynos5433 mipi dsi. So mic can access to panel node + thoughout this dsi node. + endpoint node connected to panel node (reg = 1): + - remote-endpoint: specifies the endpoint in panel node. This node is + required in all kinds of exynos mipi dsi to represent + the connection between mipi dsi and panel. - samsung,burst-clock-frequency: specifies DSI frequency in high-speed burst mode - samsung,esc-clock-frequency: specifies DSI frequency in escape mode @@ -74,7 +83,15 @@ Example: #address-cells = <1>; #size-cells = <0>; + port@0 { + reg = <0>; + decon_to_mic: endpoint { + remote-endpoint = <&mic_to_decon>; + }; + }; + port@1 { + reg = <1>; dsi_ep: endpoint { reg = <0>; samsung,burst-clock-frequency = <500000000>; diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c index ddcb77e..d5a3baf 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -286,6 +287,7 @@ struct exynos_dsi { struct list_head transfer_list; struct exynos_dsi_driver_data *driver_data; + struct device_node *bridge_node; }; #define host_to_dsi(host) container_of(host, struct exynos_dsi, dsi_host) @@ -1776,7 +1778,22 @@ static int exynos_dsi_parse_dt(struct exynos_dsi *dsi) ret = exynos_dsi_of_read_u32(ep, "samsung,esc-clock-frequency", &dsi->esc_clk_rate); + if (ret < 0) + goto end; + + of_node_put(ep); + + ep = of_graph_get_next_endpoint(node, NULL); + if (!ep) { + ret = -ENXIO; + goto end; + } + dsi->bridge_node = of_graph_get_remote_port_parent(ep); + if (!dsi->bridge_node) { + ret = -ENXIO; + goto end; + } end: of_node_put(ep); @@ -1789,6 +1806,7 @@ static int exynos_dsi_bind(struct device *dev, struct device *master, struct exynos_drm_display *display = dev_get_drvdata(dev); struct exynos_dsi *dsi = display_to_dsi(display); struct drm_device *drm_dev = data; + struct drm_bridge *bridge; int ret; ret = exynos_drm_create_enc_conn(drm_dev, display); @@ -1798,6 +1816,12 @@ static int exynos_dsi_bind(struct device *dev, struct device *master, return ret; } + bridge = of_drm_find_bridge(dsi->bridge_node); + if (bridge) { + display->encoder->bridge = bridge; + drm_bridge_attach(drm_dev, bridge); + } + return mipi_dsi_host_register(&dsi->dsi_host); }