From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.7 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A, SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 737DDC07E9C for ; Mon, 5 Jul 2021 11:48:06 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 58C5C61946 for ; Mon, 5 Jul 2021 11:48:06 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231296AbhGELum (ORCPT ); Mon, 5 Jul 2021 07:50:42 -0400 Received: from mailout2.w1.samsung.com ([210.118.77.12]:16870 "EHLO mailout2.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231340AbhGELul (ORCPT ); Mon, 5 Jul 2021 07:50:41 -0400 Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20210705114803euoutp029be67ae1854c157a74db67f082504c89~O4p4H8yjz1796217962euoutp02N for ; Mon, 5 Jul 2021 11:48:03 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20210705114803euoutp029be67ae1854c157a74db67f082504c89~O4p4H8yjz1796217962euoutp02N DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1625485683; bh=TWHebfNZHEMZzPcFEOQOODh5ZXY0IPXBMHUhGf0C9Bs=; h=Subject:To:Cc:From:Date:In-Reply-To:References:From; b=bPH2+UU1RfTxCpN6OHAG5Xy5k4iGXD16+05M8o8saPu/MmFA267udOpnS4HYWPaVY cpN5AGWAGdrcxhZ708BNxgBri4CFPS/EGKywI0SKqJ2Z8k/CMNOGWY0f0Y2r/CNOTy Ov3Rm19wQarIk1zoCBUuD/3OVe+LVSfLcF97SsXg= Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20210705114803eucas1p1b65a7543bb45d0a36be68adb206294fe~O4p3oSTzV0970609706eucas1p1M; Mon, 5 Jul 2021 11:48:03 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id 7E.90.42068.371F2E06; Mon, 5 Jul 2021 12:48:03 +0100 (BST) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20210705114757eucas1p279a0d3dd831dd8feb8ac772e88614220~O4pybBbyt0432304323eucas1p2S; Mon, 5 Jul 2021 11:47:57 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20210705114757eusmtrp2bfbc91708d36646fc674deac399d235d~O4pyaBdTn1711517115eusmtrp2M; Mon, 5 Jul 2021 11:47:57 +0000 (GMT) X-AuditID: cbfec7f4-c71ff7000002a454-26-60e2f1731460 Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id DD.4D.31287.D61F2E06; Mon, 5 Jul 2021 12:47:57 +0100 (BST) Received: from [106.210.134.192] (unknown [106.210.134.192]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20210705114756eusmtip2fc6d214d54fd08286f0a8fe13df43fa1~O4pxNN5Ps2165621656eusmtip2J; Mon, 5 Jul 2021 11:47:56 +0000 (GMT) Subject: Re: [RFC PATCH 03/17] drm/exynos: dsi: Use the drm_panel_bridge API To: Jagan Teki , Inki Dae , Joonyoung Shim , Seung-Woo Kim , Kyungmin Park , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Frieder Schrempf , Daniel Vetter , Marek Vasut , Krzysztof Kozlowski , Fabio Estevam Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-samsung-soc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, NXP Linux Team , linux-amarula From: Marek Szyprowski Message-ID: <7af964c7-0e92-f190-2a86-d7a061a05129@samsung.com> Date: Mon, 5 Jul 2021 13:47:56 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: <20210704090230.26489-4-jagan@amarulasolutions.com> Content-Transfer-Encoding: 8bit Content-Language: en-US X-Brightmail-Tracker: H4sIAAAAAAAAA01Sa0xTZxjed269kLJDRfnCcMvqLTjBSYg7G44gw+xk92wxGW6BVjkpBijY A+I2EzsYFTvAqmSWA6NuQIrOdqFDVgUaVzuqAeuG4ioCHcwwkEtT2hlwk63tmRv/nud9nvd7 3+fNJ0Slx4h44X5VKaNWKQplhBjr6ltyJ7H+CfnzVmMMNWxx45RpwIJSRmcI3frDR1DjQ29T tW0hdtKrx6igVU9QU2M/Y1TH3CJCXa+YFVDHTrQKKJPeTlDW327jlO7hWZQy3LAj1Kz2U0A5 6j6gFrjxUOnUNJERS5v9Xpz2eaoENKepJehm7ipGX+RGBXRjdQNOt/RMI7RzqAWnR273ELT3 cxdCf9d6hO6YtyF0Xec5QAesT78TvUe8I48p3H+QUW9Nl4vzuesjgpLga4ce9X+PaIBzhw6I hJBMhX1f3AVhLCXbAVw6tUkHxCEcBPDK0ATBk0BIqHeGXMJIx2kN4OsmAJvrXQhP/ADeCrRj 4adWkW9Ah3sSDwux5C8Y9PfaIgJKTgI44I3MI8htUDenI8JYQqZD218NEQ9GroftV5fxMF5N 7oO+ZgPOe2LgtYZ7EY+IzIA/Vj/6981nYOWFRpTHcXD4njGyESQXRLCjfgrjg2bB1gc3CR6v gvddnQIeJ8C/Lz5uqARw3G0W8KQGwJsVBsC70uCI+yERPgBKJsJvL23lyzvhwNgYxt8lGnrm YvglouHJrtMoX5bAaq2Ud2+EnMvy39gffhpE9UDGrYjGrYjDrYjD/T/3DMDOgTimjC1SMmyK iilPZhVFbJlKmbyvuMgKQr+1f9kVtAHTfX+yAyBC4ABQiMpiJbH1E3KpJE/x0ceMujhXXVbI sA7wlBCTxUn2dp7PlZJKRSlTwDAljPqxighF8Rok07Wgmt9p2miGtQcS3rJj3OqcKxc24XjK urX2tPjGS+buwaZgNvLrV8KvZ3KqsMxnC+Yvn89LK40yRW15UXtXqctK623rPjt7IkdgNnSB 4c3bm+/kOZRbagml6JuK544eLd1Q3tdtvtP7/u7Gwy0PUo17u1JykwxV7GBFvljr9qI+R/rg 4ZkvD05mLEpmlhK2w3ezLfrsNYqo1gXnkaSapt+pT44n7tqdZPQpX1m3LEfpkg32N8Haa1N7 wGj3GfK9GOazy/LyVH3/y0986HmyLaUys2fNS68uHtoVmD+O3CjQjb5Qt1TTHh/o+dOmEWRp X1+fON0rNhaXeDyWpujhAzKMzVds24yqWcU/8LkBiBwEAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprDKsWRmVeSWpSXmKPExsVy+t/xe7q5Hx8lGPx/o2xxa905VovlZ9Yx W8w/AmRd+fqezeLhVX+L3qVA3qT7E1gsvmyawGbx4t5FFouNb38wWZxtesNu0TlxCbvF8gn7 2Cw2Pb7GatH1ayWzxYzz+5gs3rQ1Mloc6ou2+DTrIVBo8ks2BxGPtR/vs3q8v9HK7jGroZfN Y96sEyweO2fdZfeY3TGT1WPxnpdMHkeuLmb1uHNtD5vH/e7jTB6bl9R7bHy3g8mjb8sqRo/P m+QC+KL0bIryS0tSFTLyi0tslaINLYz0DC0t9IxMLPUMjc1jrYxMlfTtbFJSczLLUov07RL0 MmadvcNe8MWr4u/p7UwNjEdsuhg5OCQETCSmNzB2MXJxCAksZZR4uPQlSxcjJ1BcRuLktAZW CFtY4s+1LjaIoveMErs+fgFLCAv4SBw694wVJCEicJtF4vKJ9cwgCWaBZ4wSd3+lQXScZJTo +DMRLMEmYCjR9RZkFCcHr4CdxI4/M8HWsQioSKw48Q9sqqhAssTP9e1QNYISJ2c+AavhFHCQ ONrxlwVigZnEvM0PoZbJSzRvnQ1li0vcejKfaQKj0Cwk7bOQtMxC0jILScsCRpZVjCKppcW5 6bnFhnrFibnFpXnpesn5uZsYgclk27Gfm3cwznv1Ue8QIxMH4yFGCQ5mJRFekSmPEoR4UxIr q1KL8uOLSnNSiw8xmgL9M5FZSjQ5H5jO8kriDc0MTA1NzCwNTC3NjJXEebfOXRMvJJCeWJKa nZpakFoE08fEwSnVwMTjEhK7lNlVNY9j2az7+h33/+cXSm69yM9rJc3PnX/gkoOxOVfWqUtt XgWVq6/5/nsuKqqy4l3Cp2kMJz49TJljOUHcc0feVCbZbouSaVkHHYs6PRn3hH0Kz0x1dGp+ lOIhzF0woYDJ9kXMXfHz8YKTu5sDnymJP4l3vdp1NPD8hAU3BKr7y23+850/k7jjkISlRf+W wzVv0kIWMtkcd5lwyeCFed926V0LFwp6pQeVLFv3Y3XEU0vp0Ogl0juzt1++3Sixvzilk8Vl 3qZN0xZ+v3raXPHxtMVhRVt3KG67ZeXuE+qvFrjyZu3C2ad8ljtdO50nIpj/r/VVXQBP8p7f yitdK79sVe1dwFvyRImlOCPRUIu5qDgRAKg+o6avAwAA X-CMS-MailID: 20210705114757eucas1p279a0d3dd831dd8feb8ac772e88614220 X-Msg-Generator: CA Content-Type: text/plain; charset="utf-8" X-RootMTR: 20210704090432eucas1p2fa4225336e35f3f5fd2fbf5da99001ff X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20210704090432eucas1p2fa4225336e35f3f5fd2fbf5da99001ff References: <20210704090230.26489-1-jagan@amarulasolutions.com> <20210704090230.26489-4-jagan@amarulasolutions.com> Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org On 04.07.2021 11:02, Jagan Teki wrote: > Use drm_panel_bridge to replace manual panel and > bridge_chain handling code. > > This makes the driver simpler to allow all components > in the display pipeline to be treated as bridges by > cleaning the way to generic connector handling. > > Signed-off-by: Jagan Teki This breaks Exysos DSI driver operation (Trats board worked fine with only patches 1-2): [    2.540066] exynos4-fb 11c00000.fimd: Adding to iommu group 0 [    2.554733] OF: graph: no port node found in /soc/fimd@11c00000 [    2.602819] [drm] Exynos DRM: using 11c00000.fimd device for DMA mapping operations [    2.609649] exynos-drm exynos-drm: bound 11c00000.fimd (ops fimd_component_ops) [    2.632558] exynos-drm exynos-drm: failed to bind 11c80000.dsi (ops exynos_dsi_component_ops): -22 [    2.642263] exynos-drm exynos-drm: master bind failed: -22 [    2.651017] exynos-drm: probe of exynos-drm failed with error -22 > --- > drivers/gpu/drm/exynos/exynos_drm_dsi.c | 167 ++++-------------------- > 1 file changed, 23 insertions(+), 144 deletions(-) > > diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c > index d7d60aee465b..24f0b082ac6d 100644 > --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c > +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c > @@ -254,9 +254,6 @@ struct exynos_dsi_driver_data { > struct exynos_dsi { > struct drm_encoder encoder; > struct mipi_dsi_host dsi_host; > - struct drm_connector connector; > - struct drm_panel *panel; > - struct list_head bridge_chain; > struct drm_bridge bridge; > struct drm_bridge *out_bridge; > struct drm_device *drm; > @@ -287,7 +284,6 @@ struct exynos_dsi { > }; > > #define host_to_dsi(host) container_of(host, struct exynos_dsi, dsi_host) > -#define connector_to_dsi(c) container_of(c, struct exynos_dsi, connector) > > static inline struct exynos_dsi *bridge_to_dsi(struct drm_bridge *b) > { > @@ -1379,7 +1375,6 @@ static void exynos_dsi_unregister_te_irq(struct exynos_dsi *dsi) > static void exynos_dsi_bridge_enable(struct drm_bridge *bridge) > { > struct exynos_dsi *dsi = bridge_to_dsi(bridge); > - struct drm_bridge *iter; > int ret; > > if (dsi->state & DSIM_STATE_ENABLED) > @@ -1393,134 +1388,51 @@ static void exynos_dsi_bridge_enable(struct drm_bridge *bridge) > > dsi->state |= DSIM_STATE_ENABLED; > > - if (dsi->panel) { > - ret = drm_panel_prepare(dsi->panel); > - if (ret < 0) > - goto err_put_sync; > - } else { > - list_for_each_entry_reverse(iter, &dsi->bridge_chain, > - chain_node) { > - if (iter->funcs->pre_enable) > - iter->funcs->pre_enable(iter); > - } > - } > - > exynos_dsi_set_display_mode(dsi); > exynos_dsi_set_display_enable(dsi, true); > > - if (dsi->panel) { > - ret = drm_panel_enable(dsi->panel); > - if (ret < 0) > - goto err_display_disable; > - } else { > - list_for_each_entry(iter, &dsi->bridge_chain, chain_node) { > - if (iter->funcs->enable) > - iter->funcs->enable(iter); > - } > - } > - > dsi->state |= DSIM_STATE_VIDOUT_AVAILABLE; > return; > - > -err_display_disable: > - exynos_dsi_set_display_enable(dsi, false); > - drm_panel_unprepare(dsi->panel); > - > -err_put_sync: > - dsi->state &= ~DSIM_STATE_ENABLED; > - pm_runtime_put(dsi->dev); > } > > static void exynos_dsi_bridge_disable(struct drm_bridge *bridge) > { > struct exynos_dsi *dsi = bridge_to_dsi(bridge); > - struct drm_bridge *iter; > > if (!(dsi->state & DSIM_STATE_ENABLED)) > return; > > dsi->state &= ~DSIM_STATE_VIDOUT_AVAILABLE; > > - drm_panel_disable(dsi->panel); > - > - list_for_each_entry_reverse(iter, &dsi->bridge_chain, chain_node) { > - if (iter->funcs->disable) > - iter->funcs->disable(iter); > - } > - > exynos_dsi_set_display_enable(dsi, false); > - drm_panel_unprepare(dsi->panel); > - > - list_for_each_entry(iter, &dsi->bridge_chain, chain_node) { > - if (iter->funcs->post_disable) > - iter->funcs->post_disable(iter); > - } > > dsi->state &= ~DSIM_STATE_ENABLED; > pm_runtime_put_sync(dsi->dev); > } > > -static enum drm_connector_status > -exynos_dsi_detect(struct drm_connector *connector, bool force) > -{ > - return connector->status; > -} > - > -static void exynos_dsi_connector_destroy(struct drm_connector *connector) > +static int exynos_dsi_panel_or_bridge(struct exynos_dsi *dsi, > + struct device_node *node) > { > - drm_connector_unregister(connector); > - drm_connector_cleanup(connector); > - connector->dev = NULL; > -} > - > -static const struct drm_connector_funcs exynos_dsi_connector_funcs = { > - .detect = exynos_dsi_detect, > - .fill_modes = drm_helper_probe_single_connector_modes, > - .destroy = exynos_dsi_connector_destroy, > - .reset = drm_atomic_helper_connector_reset, > - .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state, > - .atomic_destroy_state = drm_atomic_helper_connector_destroy_state, > -}; > - > -static int exynos_dsi_get_modes(struct drm_connector *connector) > -{ > - struct exynos_dsi *dsi = connector_to_dsi(connector); > - > - if (dsi->panel) > - return drm_panel_get_modes(dsi->panel, connector); > - > - return 0; > -} > + struct drm_bridge *panel_bridge; > + struct drm_panel *panel; > > -static const struct drm_connector_helper_funcs exynos_dsi_connector_helper_funcs = { > - .get_modes = exynos_dsi_get_modes, > -}; > + panel_bridge = of_drm_find_bridge(node); > + if (!panel_bridge) { > + panel = of_drm_find_panel(node); > + if (!IS_ERR(panel)) { > + panel_bridge = drm_panel_bridge_add(panel); > + if (IS_ERR(panel_bridge)) > + return PTR_ERR(panel_bridge); > + } > + } > > -static int exynos_dsi_create_connector(struct exynos_dsi *dsi, > - struct drm_device *drm) > -{ > - struct drm_encoder *encoder = &dsi->encoder; > - struct drm_connector *connector = &dsi->connector; > - int ret; > + of_node_put(node); > > - connector->polled = DRM_CONNECTOR_POLL_HPD; > + dsi->out_bridge = panel_bridge; > > - ret = drm_connector_init(drm, connector, &exynos_dsi_connector_funcs, > - DRM_MODE_CONNECTOR_DSI); > - if (ret) { > - DRM_DEV_ERROR(dsi->dev, > - "Failed to initialize connector with drm\n"); > - return ret; > - } > + if (!dsi->out_bridge) > + return -EPROBE_DEFER; > > - connector->status = connector_status_disconnected; > - drm_connector_helper_add(connector, &exynos_dsi_connector_helper_funcs); > - drm_connector_attach_encoder(connector, encoder); > - if (!drm->registered) > - return 0; > - > - connector->funcs->reset(connector); > - drm_connector_register(connector); > return 0; > } > > @@ -1531,7 +1443,8 @@ static int exynos_dsi_bridge_attach(struct drm_bridge *bridge, > > dsi->drm = bridge->dev; > > - return 0; > + return drm_bridge_attach(bridge->encoder, dsi->out_bridge, bridge, > + flags); > } > > static const struct drm_bridge_funcs exynos_dsi_bridge_funcs = { > @@ -1546,32 +1459,12 @@ static int exynos_dsi_host_attach(struct mipi_dsi_host *host, > struct mipi_dsi_device *device) > { > struct exynos_dsi *dsi = host_to_dsi(host); > - struct drm_encoder *encoder = &dsi->encoder; > struct drm_device *drm = dsi->drm; > - struct drm_bridge *out_bridge; > - > - out_bridge = of_drm_find_bridge(device->dev.of_node); > - if (out_bridge) { > - drm_bridge_attach(encoder, out_bridge, NULL, 0); > - dsi->out_bridge = out_bridge; > - list_splice_init(&encoder->bridge_chain, &dsi->bridge_chain); > - } else { > - int ret = exynos_dsi_create_connector(dsi, drm); > - > - if (ret) { > - DRM_DEV_ERROR(dsi->dev, > - "failed to create connector ret = %d\n", > - ret); > - drm_encoder_cleanup(encoder); > - return ret; > - } > + int ret; > > - dsi->panel = of_drm_find_panel(device->dev.of_node); > - if (IS_ERR(dsi->panel)) > - dsi->panel = NULL; > - else > - dsi->connector.status = connector_status_connected; > - } > + ret = exynos_dsi_panel_or_bridge(dsi, device->dev.of_node); > + if (ret) > + return ret; > > /* > * This is a temporary solution and should be made by more generic way. > @@ -1607,19 +1500,6 @@ static int exynos_dsi_host_detach(struct mipi_dsi_host *host, > struct exynos_dsi *dsi = host_to_dsi(host); > struct drm_device *drm = dsi->drm; > > - if (dsi->panel) { > - mutex_lock(&drm->mode_config.mutex); > - exynos_dsi_bridge_disable(&dsi->bridge); > - dsi->panel = NULL; > - dsi->connector.status = connector_status_disconnected; > - mutex_unlock(&drm->mode_config.mutex); > - } else { > - if (dsi->out_bridge->funcs->detach) > - dsi->out_bridge->funcs->detach(dsi->out_bridge); > - dsi->out_bridge = NULL; > - INIT_LIST_HEAD(&dsi->bridge_chain); > - } > - > if (drm->mode_config.poll_enabled) > drm_kms_helper_hotplug_event(drm); > > @@ -1770,7 +1650,6 @@ static int exynos_dsi_probe(struct platform_device *pdev) > init_completion(&dsi->completed); > spin_lock_init(&dsi->transfer_lock); > INIT_LIST_HEAD(&dsi->transfer_list); > - INIT_LIST_HEAD(&dsi->bridge_chain); > > dsi->dsi_host.ops = &exynos_dsi_ops; > dsi->dsi_host.dev = dev; Best regards -- Marek Szyprowski, PhD Samsung R&D Institute Poland From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.7 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D172AC07E99 for ; Mon, 5 Jul 2021 11:50:11 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 91C2E61261 for ; Mon, 5 Jul 2021 11:50:11 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 91C2E61261 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=samsung.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:References:In-Reply-To:MIME-Version: Date:Message-ID:From:Cc:To:Subject:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=5CztAjMp+uyJ7otEjq9lNY/Sl5RuJNot8dySXVYTlk4=; b=RIxVUvfUQuxQB4 O4i3KEbeHZYZMUvudHpiIWrrnM+xNEOqj0jAYQVi2EG3lC7izMBvTWymrDERcbJzaEH0aIdw6sZhW YTtCyxqH5ksga1fXyu4hAITw441Xm6DvxoLpEdueRbrW8ZD2/Fu74zuZz5cVwaG62Mgpi98a3hw3p Nz6y2CQvZWiaxY5S9fjjElGiWEoe7fFnRd6jJ0Tk20gDHIO8Cwyaf+7194X7EWIOLWE66t1rIKRy/ TfTk8CtouPNc9daisQF+Y8lNG4O5NiB4gvadXbFe+VwqcdV0cmEPu+ZT2L1Xi/MCE3C5PC6aUSwdu sOvxGL9IpbbTlveGurwQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1m0N59-008r3y-Bm; Mon, 05 Jul 2021 11:48:11 +0000 Received: from mailout2.w1.samsung.com ([210.118.77.12]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1m0N54-008r2S-37 for linux-arm-kernel@lists.infradead.org; Mon, 05 Jul 2021 11:48:08 +0000 Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20210705114803euoutp02704fa8ccdcc554780af7f11633d4d4b6~O4p4G48q21800218002euoutp02C for ; Mon, 5 Jul 2021 11:48:03 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20210705114803euoutp02704fa8ccdcc554780af7f11633d4d4b6~O4p4G48q21800218002euoutp02C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1625485683; bh=TWHebfNZHEMZzPcFEOQOODh5ZXY0IPXBMHUhGf0C9Bs=; h=Subject:To:Cc:From:Date:In-Reply-To:References:From; b=bPH2+UU1RfTxCpN6OHAG5Xy5k4iGXD16+05M8o8saPu/MmFA267udOpnS4HYWPaVY cpN5AGWAGdrcxhZ708BNxgBri4CFPS/EGKywI0SKqJ2Z8k/CMNOGWY0f0Y2r/CNOTy Ov3Rm19wQarIk1zoCBUuD/3OVe+LVSfLcF97SsXg= Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20210705114803eucas1p1b65a7543bb45d0a36be68adb206294fe~O4p3oSTzV0970609706eucas1p1M; Mon, 5 Jul 2021 11:48:03 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id 7E.90.42068.371F2E06; Mon, 5 Jul 2021 12:48:03 +0100 (BST) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20210705114757eucas1p279a0d3dd831dd8feb8ac772e88614220~O4pybBbyt0432304323eucas1p2S; Mon, 5 Jul 2021 11:47:57 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20210705114757eusmtrp2bfbc91708d36646fc674deac399d235d~O4pyaBdTn1711517115eusmtrp2M; Mon, 5 Jul 2021 11:47:57 +0000 (GMT) X-AuditID: cbfec7f4-c71ff7000002a454-26-60e2f1731460 Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id DD.4D.31287.D61F2E06; Mon, 5 Jul 2021 12:47:57 +0100 (BST) Received: from [106.210.134.192] (unknown [106.210.134.192]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20210705114756eusmtip2fc6d214d54fd08286f0a8fe13df43fa1~O4pxNN5Ps2165621656eusmtip2J; Mon, 5 Jul 2021 11:47:56 +0000 (GMT) Subject: Re: [RFC PATCH 03/17] drm/exynos: dsi: Use the drm_panel_bridge API To: Jagan Teki , Inki Dae , Joonyoung Shim , Seung-Woo Kim , Kyungmin Park , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Frieder Schrempf , Daniel Vetter , Marek Vasut , Krzysztof Kozlowski , Fabio Estevam Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-samsung-soc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, NXP Linux Team , linux-amarula From: Marek Szyprowski Message-ID: <7af964c7-0e92-f190-2a86-d7a061a05129@samsung.com> Date: Mon, 5 Jul 2021 13:47:56 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: <20210704090230.26489-4-jagan@amarulasolutions.com> Content-Language: en-US X-Brightmail-Tracker: H4sIAAAAAAAAA01Sa0xTZxjed269kLJDRfnCcMvqLTjBSYg7G44gw+xk92wxGW6BVjkpBijY A+I2EzsYFTvAqmSWA6NuQIrOdqFDVgUaVzuqAeuG4ioCHcwwkEtT2hlwk63tmRv/nud9nvd7 3+fNJ0Slx4h44X5VKaNWKQplhBjr6ltyJ7H+CfnzVmMMNWxx45RpwIJSRmcI3frDR1DjQ29T tW0hdtKrx6igVU9QU2M/Y1TH3CJCXa+YFVDHTrQKKJPeTlDW327jlO7hWZQy3LAj1Kz2U0A5 6j6gFrjxUOnUNJERS5v9Xpz2eaoENKepJehm7ipGX+RGBXRjdQNOt/RMI7RzqAWnR273ELT3 cxdCf9d6hO6YtyF0Xec5QAesT78TvUe8I48p3H+QUW9Nl4vzuesjgpLga4ce9X+PaIBzhw6I hJBMhX1f3AVhLCXbAVw6tUkHxCEcBPDK0ATBk0BIqHeGXMJIx2kN4OsmAJvrXQhP/ADeCrRj 4adWkW9Ah3sSDwux5C8Y9PfaIgJKTgI44I3MI8htUDenI8JYQqZD218NEQ9GroftV5fxMF5N 7oO+ZgPOe2LgtYZ7EY+IzIA/Vj/6981nYOWFRpTHcXD4njGyESQXRLCjfgrjg2bB1gc3CR6v gvddnQIeJ8C/Lz5uqARw3G0W8KQGwJsVBsC70uCI+yERPgBKJsJvL23lyzvhwNgYxt8lGnrm YvglouHJrtMoX5bAaq2Ud2+EnMvy39gffhpE9UDGrYjGrYjDrYjD/T/3DMDOgTimjC1SMmyK iilPZhVFbJlKmbyvuMgKQr+1f9kVtAHTfX+yAyBC4ABQiMpiJbH1E3KpJE/x0ceMujhXXVbI sA7wlBCTxUn2dp7PlZJKRSlTwDAljPqxighF8Rok07Wgmt9p2miGtQcS3rJj3OqcKxc24XjK urX2tPjGS+buwaZgNvLrV8KvZ3KqsMxnC+Yvn89LK40yRW15UXtXqctK623rPjt7IkdgNnSB 4c3bm+/kOZRbagml6JuK544eLd1Q3tdtvtP7/u7Gwy0PUo17u1JykwxV7GBFvljr9qI+R/rg 4ZkvD05mLEpmlhK2w3ezLfrsNYqo1gXnkaSapt+pT44n7tqdZPQpX1m3LEfpkg32N8Haa1N7 wGj3GfK9GOazy/LyVH3/y0986HmyLaUys2fNS68uHtoVmD+O3CjQjb5Qt1TTHh/o+dOmEWRp X1+fON0rNhaXeDyWpujhAzKMzVds24yqWcU/8LkBiBwEAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprDKsWRmVeSWpSXmKPExsVy+t/xe7q5Hx8lGPx/o2xxa905VovlZ9Yx W8w/AmRd+fqezeLhVX+L3qVA3qT7E1gsvmyawGbx4t5FFouNb38wWZxtesNu0TlxCbvF8gn7 2Cw2Pb7GatH1ayWzxYzz+5gs3rQ1Mloc6ou2+DTrIVBo8ks2BxGPtR/vs3q8v9HK7jGroZfN Y96sEyweO2fdZfeY3TGT1WPxnpdMHkeuLmb1uHNtD5vH/e7jTB6bl9R7bHy3g8mjb8sqRo/P m+QC+KL0bIryS0tSFTLyi0tslaINLYz0DC0t9IxMLPUMjc1jrYxMlfTtbFJSczLLUov07RL0 MmadvcNe8MWr4u/p7UwNjEdsuhg5OCQETCSmNzB2MXJxCAksZZR4uPQlSxcjJ1BcRuLktAZW CFtY4s+1LjaIoveMErs+fgFLCAv4SBw694wVJCEicJtF4vKJ9cwgCWaBZ4wSd3+lQXScZJTo +DMRLMEmYCjR9RZkFCcHr4CdxI4/M8HWsQioSKw48Q9sqqhAssTP9e1QNYISJ2c+AavhFHCQ ONrxlwVigZnEvM0PoZbJSzRvnQ1li0vcejKfaQKj0Cwk7bOQtMxC0jILScsCRpZVjCKppcW5 6bnFhnrFibnFpXnpesn5uZsYgclk27Gfm3cwznv1Ue8QIxMH4yFGCQ5mJRFekSmPEoR4UxIr q1KL8uOLSnNSiw8xmgL9M5FZSjQ5H5jO8kriDc0MTA1NzCwNTC3NjJXEebfOXRMvJJCeWJKa nZpakFoE08fEwSnVwMTjEhK7lNlVNY9j2az7+h33/+cXSm69yM9rJc3PnX/gkoOxOVfWqUtt XgWVq6/5/nsuKqqy4l3Cp2kMJz49TJljOUHcc0feVCbZbouSaVkHHYs6PRn3hH0Kz0x1dGp+ lOIhzF0woYDJ9kXMXfHz8YKTu5sDnymJP4l3vdp1NPD8hAU3BKr7y23+850/k7jjkISlRf+W wzVv0kIWMtkcd5lwyeCFed926V0LFwp6pQeVLFv3Y3XEU0vp0Ogl0juzt1++3Sixvzilk8Vl 3qZN0xZ+v3raXPHxtMVhRVt3KG67ZeXuE+qvFrjyZu3C2ad8ljtdO50nIpj/r/VVXQBP8p7f yitdK79sVe1dwFvyRImlOCPRUIu5qDgRAKg+o6avAwAA X-CMS-MailID: 20210705114757eucas1p279a0d3dd831dd8feb8ac772e88614220 X-Msg-Generator: CA X-RootMTR: 20210704090432eucas1p2fa4225336e35f3f5fd2fbf5da99001ff X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20210704090432eucas1p2fa4225336e35f3f5fd2fbf5da99001ff References: <20210704090230.26489-1-jagan@amarulasolutions.com> <20210704090230.26489-4-jagan@amarulasolutions.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210705_044806_492901_E2D1B108 X-CRM114-Status: GOOD ( 26.91 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gMDQuMDcuMjAyMSAxMTowMiwgSmFnYW4gVGVraSB3cm90ZToKPiBVc2UgZHJtX3BhbmVsX2Jy aWRnZSB0byByZXBsYWNlIG1hbnVhbCBwYW5lbCBhbmQKPiBicmlkZ2VfY2hhaW4gaGFuZGxpbmcg Y29kZS4KPgo+IFRoaXMgbWFrZXMgdGhlIGRyaXZlciBzaW1wbGVyIHRvIGFsbG93IGFsbCBjb21w b25lbnRzCj4gaW4gdGhlIGRpc3BsYXkgcGlwZWxpbmUgdG8gYmUgdHJlYXRlZCBhcyBicmlkZ2Vz IGJ5Cj4gY2xlYW5pbmcgdGhlIHdheSB0byBnZW5lcmljIGNvbm5lY3RvciBoYW5kbGluZy4KPgo+ IFNpZ25lZC1vZmYtYnk6IEphZ2FuIFRla2kgPGphZ2FuQGFtYXJ1bGFzb2x1dGlvbnMuY29tPgoK VGhpcyBicmVha3MgRXh5c29zIERTSSBkcml2ZXIgb3BlcmF0aW9uIChUcmF0cyBib2FyZCB3b3Jr ZWQgZmluZSB3aXRoIApvbmx5IHBhdGNoZXMgMS0yKToKClvCoMKgwqAgMi41NDAwNjZdIGV4eW5v czQtZmIgMTFjMDAwMDAuZmltZDogQWRkaW5nIHRvIGlvbW11IGdyb3VwIDAKW8KgwqDCoCAyLjU1 NDczM10gT0Y6IGdyYXBoOiBubyBwb3J0IG5vZGUgZm91bmQgaW4gL3NvYy9maW1kQDExYzAwMDAw ClvCoMKgwqAgMi42MDI4MTldIFtkcm1dIEV4eW5vcyBEUk06IHVzaW5nIDExYzAwMDAwLmZpbWQg ZGV2aWNlIGZvciBETUEgCm1hcHBpbmcgb3BlcmF0aW9ucwpbwqDCoMKgIDIuNjA5NjQ5XSBleHlu b3MtZHJtIGV4eW5vcy1kcm06IGJvdW5kIDExYzAwMDAwLmZpbWQgKG9wcyAKZmltZF9jb21wb25l bnRfb3BzKQpbwqDCoMKgIDIuNjMyNTU4XSBleHlub3MtZHJtIGV4eW5vcy1kcm06IGZhaWxlZCB0 byBiaW5kIDExYzgwMDAwLmRzaSAob3BzIApleHlub3NfZHNpX2NvbXBvbmVudF9vcHMpOiAtMjIK W8KgwqDCoCAyLjY0MjI2M10gZXh5bm9zLWRybSBleHlub3MtZHJtOiBtYXN0ZXIgYmluZCBmYWls ZWQ6IC0yMgpbwqDCoMKgIDIuNjUxMDE3XSBleHlub3MtZHJtOiBwcm9iZSBvZiBleHlub3MtZHJt IGZhaWxlZCB3aXRoIGVycm9yIC0yMgoKPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9leHlub3Mv ZXh5bm9zX2RybV9kc2kuYyB8IDE2NyArKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgIDEgZmls ZSBjaGFuZ2VkLCAyMyBpbnNlcnRpb25zKCspLCAxNDQgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2RzaS5jIGIvZHJpdmVycy9n cHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2RzaS5jCj4gaW5kZXggZDdkNjBhZWU0NjViLi4yNGYw YjA4MmFjNmQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJt X2RzaS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2RzaS5jCj4g QEAgLTI1NCw5ICsyNTQsNiBAQCBzdHJ1Y3QgZXh5bm9zX2RzaV9kcml2ZXJfZGF0YSB7Cj4gICBz dHJ1Y3QgZXh5bm9zX2RzaSB7Cj4gICAJc3RydWN0IGRybV9lbmNvZGVyIGVuY29kZXI7Cj4gICAJ c3RydWN0IG1pcGlfZHNpX2hvc3QgZHNpX2hvc3Q7Cj4gLQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciBj b25uZWN0b3I7Cj4gLQlzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbDsKPiAtCXN0cnVjdCBsaXN0X2hl YWQgYnJpZGdlX2NoYWluOwo+ICAgCXN0cnVjdCBkcm1fYnJpZGdlIGJyaWRnZTsKPiAgIAlzdHJ1 Y3QgZHJtX2JyaWRnZSAqb3V0X2JyaWRnZTsKPiAgIAlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtOwo+ IEBAIC0yODcsNyArMjg0LDYgQEAgc3RydWN0IGV4eW5vc19kc2kgewo+ICAgfTsKPiAgIAo+ICAg I2RlZmluZSBob3N0X3RvX2RzaShob3N0KSBjb250YWluZXJfb2YoaG9zdCwgc3RydWN0IGV4eW5v c19kc2ksIGRzaV9ob3N0KQo+IC0jZGVmaW5lIGNvbm5lY3Rvcl90b19kc2koYykgY29udGFpbmVy X29mKGMsIHN0cnVjdCBleHlub3NfZHNpLCBjb25uZWN0b3IpCj4gICAKPiAgIHN0YXRpYyBpbmxp bmUgc3RydWN0IGV4eW5vc19kc2kgKmJyaWRnZV90b19kc2koc3RydWN0IGRybV9icmlkZ2UgKmIp Cj4gICB7Cj4gQEAgLTEzNzksNyArMTM3NSw2IEBAIHN0YXRpYyB2b2lkIGV4eW5vc19kc2lfdW5y ZWdpc3Rlcl90ZV9pcnEoc3RydWN0IGV4eW5vc19kc2kgKmRzaSkKPiAgIHN0YXRpYyB2b2lkIGV4 eW5vc19kc2lfYnJpZGdlX2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+ICAgewo+ ICAgCXN0cnVjdCBleHlub3NfZHNpICpkc2kgPSBicmlkZ2VfdG9fZHNpKGJyaWRnZSk7Cj4gLQlz dHJ1Y3QgZHJtX2JyaWRnZSAqaXRlcjsKPiAgIAlpbnQgcmV0Owo+ICAgCj4gICAJaWYgKGRzaS0+ c3RhdGUgJiBEU0lNX1NUQVRFX0VOQUJMRUQpCj4gQEAgLTEzOTMsMTM0ICsxMzg4LDUxIEBAIHN0 YXRpYyB2b2lkIGV4eW5vc19kc2lfYnJpZGdlX2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJp ZGdlKQo+ICAgCj4gICAJZHNpLT5zdGF0ZSB8PSBEU0lNX1NUQVRFX0VOQUJMRUQ7Cj4gICAKPiAt CWlmIChkc2ktPnBhbmVsKSB7Cj4gLQkJcmV0ID0gZHJtX3BhbmVsX3ByZXBhcmUoZHNpLT5wYW5l bCk7Cj4gLQkJaWYgKHJldCA8IDApCj4gLQkJCWdvdG8gZXJyX3B1dF9zeW5jOwo+IC0JfSBlbHNl IHsKPiAtCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3JldmVyc2UoaXRlciwgJmRzaS0+YnJpZGdlX2No YWluLAo+IC0JCQkJCSAgICBjaGFpbl9ub2RlKSB7Cj4gLQkJCWlmIChpdGVyLT5mdW5jcy0+cHJl X2VuYWJsZSkKPiAtCQkJCWl0ZXItPmZ1bmNzLT5wcmVfZW5hYmxlKGl0ZXIpOwo+IC0JCX0KPiAt CX0KPiAtCj4gICAJZXh5bm9zX2RzaV9zZXRfZGlzcGxheV9tb2RlKGRzaSk7Cj4gICAJZXh5bm9z X2RzaV9zZXRfZGlzcGxheV9lbmFibGUoZHNpLCB0cnVlKTsKPiAgIAo+IC0JaWYgKGRzaS0+cGFu ZWwpIHsKPiAtCQlyZXQgPSBkcm1fcGFuZWxfZW5hYmxlKGRzaS0+cGFuZWwpOwo+IC0JCWlmIChy ZXQgPCAwKQo+IC0JCQlnb3RvIGVycl9kaXNwbGF5X2Rpc2FibGU7Cj4gLQl9IGVsc2Ugewo+IC0J CWxpc3RfZm9yX2VhY2hfZW50cnkoaXRlciwgJmRzaS0+YnJpZGdlX2NoYWluLCBjaGFpbl9ub2Rl KSB7Cj4gLQkJCWlmIChpdGVyLT5mdW5jcy0+ZW5hYmxlKQo+IC0JCQkJaXRlci0+ZnVuY3MtPmVu YWJsZShpdGVyKTsKPiAtCQl9Cj4gLQl9Cj4gLQo+ICAgCWRzaS0+c3RhdGUgfD0gRFNJTV9TVEFU RV9WSURPVVRfQVZBSUxBQkxFOwo+ICAgCXJldHVybjsKPiAtCj4gLWVycl9kaXNwbGF5X2Rpc2Fi bGU6Cj4gLQlleHlub3NfZHNpX3NldF9kaXNwbGF5X2VuYWJsZShkc2ksIGZhbHNlKTsKPiAtCWRy bV9wYW5lbF91bnByZXBhcmUoZHNpLT5wYW5lbCk7Cj4gLQo+IC1lcnJfcHV0X3N5bmM6Cj4gLQlk c2ktPnN0YXRlICY9IH5EU0lNX1NUQVRFX0VOQUJMRUQ7Cj4gLQlwbV9ydW50aW1lX3B1dChkc2kt PmRldik7Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyB2b2lkIGV4eW5vc19kc2lfYnJpZGdlX2Rpc2Fi bGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPiAgIHsKPiAgIAlzdHJ1Y3QgZXh5bm9zX2Rz aSAqZHNpID0gYnJpZGdlX3RvX2RzaShicmlkZ2UpOwo+IC0Jc3RydWN0IGRybV9icmlkZ2UgKml0 ZXI7Cj4gICAKPiAgIAlpZiAoIShkc2ktPnN0YXRlICYgRFNJTV9TVEFURV9FTkFCTEVEKSkKPiAg IAkJcmV0dXJuOwo+ICAgCj4gICAJZHNpLT5zdGF0ZSAmPSB+RFNJTV9TVEFURV9WSURPVVRfQVZB SUxBQkxFOwo+ICAgCj4gLQlkcm1fcGFuZWxfZGlzYWJsZShkc2ktPnBhbmVsKTsKPiAtCj4gLQls aXN0X2Zvcl9lYWNoX2VudHJ5X3JldmVyc2UoaXRlciwgJmRzaS0+YnJpZGdlX2NoYWluLCBjaGFp bl9ub2RlKSB7Cj4gLQkJaWYgKGl0ZXItPmZ1bmNzLT5kaXNhYmxlKQo+IC0JCQlpdGVyLT5mdW5j cy0+ZGlzYWJsZShpdGVyKTsKPiAtCX0KPiAtCj4gICAJZXh5bm9zX2RzaV9zZXRfZGlzcGxheV9l bmFibGUoZHNpLCBmYWxzZSk7Cj4gLQlkcm1fcGFuZWxfdW5wcmVwYXJlKGRzaS0+cGFuZWwpOwo+ IC0KPiAtCWxpc3RfZm9yX2VhY2hfZW50cnkoaXRlciwgJmRzaS0+YnJpZGdlX2NoYWluLCBjaGFp bl9ub2RlKSB7Cj4gLQkJaWYgKGl0ZXItPmZ1bmNzLT5wb3N0X2Rpc2FibGUpCj4gLQkJCWl0ZXIt PmZ1bmNzLT5wb3N0X2Rpc2FibGUoaXRlcik7Cj4gLQl9Cj4gICAKPiAgIAlkc2ktPnN0YXRlICY9 IH5EU0lNX1NUQVRFX0VOQUJMRUQ7Cj4gICAJcG1fcnVudGltZV9wdXRfc3luYyhkc2ktPmRldik7 Cj4gICB9Cj4gICAKPiAtc3RhdGljIGVudW0gZHJtX2Nvbm5lY3Rvcl9zdGF0dXMKPiAtZXh5bm9z X2RzaV9kZXRlY3Qoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgYm9vbCBmb3JjZSkK PiAtewo+IC0JcmV0dXJuIGNvbm5lY3Rvci0+c3RhdHVzOwo+IC19Cj4gLQo+IC1zdGF0aWMgdm9p ZCBleHlub3NfZHNpX2Nvbm5lY3Rvcl9kZXN0cm95KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25u ZWN0b3IpCj4gK3N0YXRpYyBpbnQgZXh5bm9zX2RzaV9wYW5lbF9vcl9icmlkZ2Uoc3RydWN0IGV4 eW5vc19kc2kgKmRzaSwKPiArCQkJCSAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSkKPiAg IHsKPiAtCWRybV9jb25uZWN0b3JfdW5yZWdpc3Rlcihjb25uZWN0b3IpOwo+IC0JZHJtX2Nvbm5l Y3Rvcl9jbGVhbnVwKGNvbm5lY3Rvcik7Cj4gLQljb25uZWN0b3ItPmRldiA9IE5VTEw7Cj4gLX0K PiAtCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyBleHlub3NfZHNp X2Nvbm5lY3Rvcl9mdW5jcyA9IHsKPiAtCS5kZXRlY3QgPSBleHlub3NfZHNpX2RldGVjdCwKPiAt CS5maWxsX21vZGVzID0gZHJtX2hlbHBlcl9wcm9iZV9zaW5nbGVfY29ubmVjdG9yX21vZGVzLAo+ IC0JLmRlc3Ryb3kgPSBleHlub3NfZHNpX2Nvbm5lY3Rvcl9kZXN0cm95LAo+IC0JLnJlc2V0ID0g ZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX3Jlc2V0LAo+IC0JLmF0b21pY19kdXBsaWNhdGVf c3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0YXRlLAo+IC0J LmF0b21pY19kZXN0cm95X3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2Rlc3Ry b3lfc3RhdGUsCj4gLX07Cj4gLQo+IC1zdGF0aWMgaW50IGV4eW5vc19kc2lfZ2V0X21vZGVzKHN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCj4gLXsKPiAtCXN0cnVjdCBleHlub3NfZHNp ICpkc2kgPSBjb25uZWN0b3JfdG9fZHNpKGNvbm5lY3Rvcik7Cj4gLQo+IC0JaWYgKGRzaS0+cGFu ZWwpCj4gLQkJcmV0dXJuIGRybV9wYW5lbF9nZXRfbW9kZXMoZHNpLT5wYW5lbCwgY29ubmVjdG9y KTsKPiAtCj4gLQlyZXR1cm4gMDsKPiAtfQo+ICsJc3RydWN0IGRybV9icmlkZ2UgKnBhbmVsX2Jy aWRnZTsKPiArCXN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsOwo+ICAgCj4gLXN0YXRpYyBjb25zdCBz dHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgZXh5bm9zX2RzaV9jb25uZWN0b3JfaGVs cGVyX2Z1bmNzID0gewo+IC0JLmdldF9tb2RlcyA9IGV4eW5vc19kc2lfZ2V0X21vZGVzLAo+IC19 Owo+ICsJcGFuZWxfYnJpZGdlID0gb2ZfZHJtX2ZpbmRfYnJpZGdlKG5vZGUpOwo+ICsJaWYgKCFw YW5lbF9icmlkZ2UpIHsKPiArCQlwYW5lbCA9IG9mX2RybV9maW5kX3BhbmVsKG5vZGUpOwo+ICsJ CWlmICghSVNfRVJSKHBhbmVsKSkgewo+ICsJCQlwYW5lbF9icmlkZ2UgPSBkcm1fcGFuZWxfYnJp ZGdlX2FkZChwYW5lbCk7Cj4gKwkJCWlmIChJU19FUlIocGFuZWxfYnJpZGdlKSkKPiArCQkJCXJl dHVybiBQVFJfRVJSKHBhbmVsX2JyaWRnZSk7Cj4gKwkJfQo+ICsJfQo+ICAgCj4gLXN0YXRpYyBp bnQgZXh5bm9zX2RzaV9jcmVhdGVfY29ubmVjdG9yKHN0cnVjdCBleHlub3NfZHNpICpkc2ksCj4g LQkJCQkgICAgICAgc3RydWN0IGRybV9kZXZpY2UgKmRybSkKPiAtewo+IC0Jc3RydWN0IGRybV9l bmNvZGVyICplbmNvZGVyID0gJmRzaS0+ZW5jb2RlcjsKPiAtCXN0cnVjdCBkcm1fY29ubmVjdG9y ICpjb25uZWN0b3IgPSAmZHNpLT5jb25uZWN0b3I7Cj4gLQlpbnQgcmV0Owo+ICsJb2Zfbm9kZV9w dXQobm9kZSk7Cj4gICAKPiAtCWNvbm5lY3Rvci0+cG9sbGVkID0gRFJNX0NPTk5FQ1RPUl9QT0xM X0hQRDsKPiArCWRzaS0+b3V0X2JyaWRnZSA9IHBhbmVsX2JyaWRnZTsKPiAgIAo+IC0JcmV0ID0g ZHJtX2Nvbm5lY3Rvcl9pbml0KGRybSwgY29ubmVjdG9yLCAmZXh5bm9zX2RzaV9jb25uZWN0b3Jf ZnVuY3MsCj4gLQkJCQkgRFJNX01PREVfQ09OTkVDVE9SX0RTSSk7Cj4gLQlpZiAocmV0KSB7Cj4g LQkJRFJNX0RFVl9FUlJPUihkc2ktPmRldiwKPiAtCQkJICAgICAgIkZhaWxlZCB0byBpbml0aWFs aXplIGNvbm5lY3RvciB3aXRoIGRybVxuIik7Cj4gLQkJcmV0dXJuIHJldDsKPiAtCX0KPiArCWlm ICghZHNpLT5vdXRfYnJpZGdlKQo+ICsJCXJldHVybiAtRVBST0JFX0RFRkVSOwo+ICAgCj4gLQlj b25uZWN0b3ItPnN0YXR1cyA9IGNvbm5lY3Rvcl9zdGF0dXNfZGlzY29ubmVjdGVkOwo+IC0JZHJt X2Nvbm5lY3Rvcl9oZWxwZXJfYWRkKGNvbm5lY3RvciwgJmV4eW5vc19kc2lfY29ubmVjdG9yX2hl bHBlcl9mdW5jcyk7Cj4gLQlkcm1fY29ubmVjdG9yX2F0dGFjaF9lbmNvZGVyKGNvbm5lY3Rvciwg ZW5jb2Rlcik7Cj4gLQlpZiAoIWRybS0+cmVnaXN0ZXJlZCkKPiAtCQlyZXR1cm4gMDsKPiAtCj4g LQljb25uZWN0b3ItPmZ1bmNzLT5yZXNldChjb25uZWN0b3IpOwo+IC0JZHJtX2Nvbm5lY3Rvcl9y ZWdpc3Rlcihjb25uZWN0b3IpOwo+ICAgCXJldHVybiAwOwo+ICAgfQo+ICAgCj4gQEAgLTE1MzEs NyArMTQ0Myw4IEBAIHN0YXRpYyBpbnQgZXh5bm9zX2RzaV9icmlkZ2VfYXR0YWNoKHN0cnVjdCBk cm1fYnJpZGdlICpicmlkZ2UsCj4gICAKPiAgIAlkc2ktPmRybSA9IGJyaWRnZS0+ZGV2Owo+ICAg Cj4gLQlyZXR1cm4gMDsKPiArCXJldHVybiBkcm1fYnJpZGdlX2F0dGFjaChicmlkZ2UtPmVuY29k ZXIsIGRzaS0+b3V0X2JyaWRnZSwgYnJpZGdlLAo+ICsJCQkJIGZsYWdzKTsKPiAgIH0KPiAgIAo+ ICAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fYnJpZGdlX2Z1bmNzIGV4eW5vc19kc2lfYnJpZGdl X2Z1bmNzID0gewo+IEBAIC0xNTQ2LDMyICsxNDU5LDEyIEBAIHN0YXRpYyBpbnQgZXh5bm9zX2Rz aV9ob3N0X2F0dGFjaChzdHJ1Y3QgbWlwaV9kc2lfaG9zdCAqaG9zdCwKPiAgIAkJCQkgIHN0cnVj dCBtaXBpX2RzaV9kZXZpY2UgKmRldmljZSkKPiAgIHsKPiAgIAlzdHJ1Y3QgZXh5bm9zX2RzaSAq ZHNpID0gaG9zdF90b19kc2koaG9zdCk7Cj4gLQlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIg PSAmZHNpLT5lbmNvZGVyOwo+ICAgCXN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBkc2ktPmRybTsK PiAtCXN0cnVjdCBkcm1fYnJpZGdlICpvdXRfYnJpZGdlOwo+IC0KPiAtCW91dF9icmlkZ2UgID0g b2ZfZHJtX2ZpbmRfYnJpZGdlKGRldmljZS0+ZGV2Lm9mX25vZGUpOwo+IC0JaWYgKG91dF9icmlk Z2UpIHsKPiAtCQlkcm1fYnJpZGdlX2F0dGFjaChlbmNvZGVyLCBvdXRfYnJpZGdlLCBOVUxMLCAw KTsKPiAtCQlkc2ktPm91dF9icmlkZ2UgPSBvdXRfYnJpZGdlOwo+IC0JCWxpc3Rfc3BsaWNlX2lu aXQoJmVuY29kZXItPmJyaWRnZV9jaGFpbiwgJmRzaS0+YnJpZGdlX2NoYWluKTsKPiAtCX0gZWxz ZSB7Cj4gLQkJaW50IHJldCA9IGV4eW5vc19kc2lfY3JlYXRlX2Nvbm5lY3Rvcihkc2ksIGRybSk7 Cj4gLQo+IC0JCWlmIChyZXQpIHsKPiAtCQkJRFJNX0RFVl9FUlJPUihkc2ktPmRldiwKPiAtCQkJ CSAgICAgICJmYWlsZWQgdG8gY3JlYXRlIGNvbm5lY3RvciByZXQgPSAlZFxuIiwKPiAtCQkJCSAg ICAgIHJldCk7Cj4gLQkJCWRybV9lbmNvZGVyX2NsZWFudXAoZW5jb2Rlcik7Cj4gLQkJCXJldHVy biByZXQ7Cj4gLQkJfQo+ICsJaW50IHJldDsKPiAgIAo+IC0JCWRzaS0+cGFuZWwgPSBvZl9kcm1f ZmluZF9wYW5lbChkZXZpY2UtPmRldi5vZl9ub2RlKTsKPiAtCQlpZiAoSVNfRVJSKGRzaS0+cGFu ZWwpKQo+IC0JCQlkc2ktPnBhbmVsID0gTlVMTDsKPiAtCQllbHNlCj4gLQkJCWRzaS0+Y29ubmVj dG9yLnN0YXR1cyA9IGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkOwo+IC0JfQo+ICsJcmV0ID0g ZXh5bm9zX2RzaV9wYW5lbF9vcl9icmlkZ2UoZHNpLCBkZXZpY2UtPmRldi5vZl9ub2RlKTsKPiAr CWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiAgIAo+ICAgCS8qCj4gICAJICogVGhpcyBpcyBh IHRlbXBvcmFyeSBzb2x1dGlvbiBhbmQgc2hvdWxkIGJlIG1hZGUgYnkgbW9yZSBnZW5lcmljIHdh eS4KPiBAQCAtMTYwNywxOSArMTUwMCw2IEBAIHN0YXRpYyBpbnQgZXh5bm9zX2RzaV9ob3N0X2Rl dGFjaChzdHJ1Y3QgbWlwaV9kc2lfaG9zdCAqaG9zdCwKPiAgIAlzdHJ1Y3QgZXh5bm9zX2RzaSAq ZHNpID0gaG9zdF90b19kc2koaG9zdCk7Cj4gICAJc3RydWN0IGRybV9kZXZpY2UgKmRybSA9IGRz aS0+ZHJtOwo+ICAgCj4gLQlpZiAoZHNpLT5wYW5lbCkgewo+IC0JCW11dGV4X2xvY2soJmRybS0+ bW9kZV9jb25maWcubXV0ZXgpOwo+IC0JCWV4eW5vc19kc2lfYnJpZGdlX2Rpc2FibGUoJmRzaS0+ YnJpZGdlKTsKPiAtCQlkc2ktPnBhbmVsID0gTlVMTDsKPiAtCQlkc2ktPmNvbm5lY3Rvci5zdGF0 dXMgPSBjb25uZWN0b3Jfc3RhdHVzX2Rpc2Nvbm5lY3RlZDsKPiAtCQltdXRleF91bmxvY2soJmRy bS0+bW9kZV9jb25maWcubXV0ZXgpOwo+IC0JfSBlbHNlIHsKPiAtCQlpZiAoZHNpLT5vdXRfYnJp ZGdlLT5mdW5jcy0+ZGV0YWNoKQo+IC0JCQlkc2ktPm91dF9icmlkZ2UtPmZ1bmNzLT5kZXRhY2go ZHNpLT5vdXRfYnJpZGdlKTsKPiAtCQlkc2ktPm91dF9icmlkZ2UgPSBOVUxMOwo+IC0JCUlOSVRf TElTVF9IRUFEKCZkc2ktPmJyaWRnZV9jaGFpbik7Cj4gLQl9Cj4gLQo+ICAgCWlmIChkcm0tPm1v ZGVfY29uZmlnLnBvbGxfZW5hYmxlZCkKPiAgIAkJZHJtX2ttc19oZWxwZXJfaG90cGx1Z19ldmVu dChkcm0pOwo+ICAgCj4gQEAgLTE3NzAsNyArMTY1MCw2IEBAIHN0YXRpYyBpbnQgZXh5bm9zX2Rz aV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICAgCWluaXRfY29tcGxldGlv bigmZHNpLT5jb21wbGV0ZWQpOwo+ICAgCXNwaW5fbG9ja19pbml0KCZkc2ktPnRyYW5zZmVyX2xv Y2spOwo+ICAgCUlOSVRfTElTVF9IRUFEKCZkc2ktPnRyYW5zZmVyX2xpc3QpOwo+IC0JSU5JVF9M SVNUX0hFQUQoJmRzaS0+YnJpZGdlX2NoYWluKTsKPiAgIAo+ICAgCWRzaS0+ZHNpX2hvc3Qub3Bz ID0gJmV4eW5vc19kc2lfb3BzOwo+ICAgCWRzaS0+ZHNpX2hvc3QuZGV2ID0gZGV2OwoKQmVzdCBy ZWdhcmRzCi0tIApNYXJlayBTenlwcm93c2tpLCBQaEQKU2Ftc3VuZyBSJkQgSW5zdGl0dXRlIFBv bGFuZAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxp bnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFk ZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4 LWFybS1rZXJuZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.1 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 22CA5C07E9E for ; Mon, 5 Jul 2021 11:48:08 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id C4196613FC for ; Mon, 5 Jul 2021 11:48:07 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C4196613FC Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=samsung.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 351AB89911; Mon, 5 Jul 2021 11:48:07 +0000 (UTC) Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by gabe.freedesktop.org (Postfix) with ESMTPS id C818789911 for ; Mon, 5 Jul 2021 11:48:05 +0000 (UTC) Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20210705114803euoutp01bc307931800185c4230305a018b3e9fd~O4p4G7UHw0089700897euoutp01g for ; Mon, 5 Jul 2021 11:48:03 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20210705114803euoutp01bc307931800185c4230305a018b3e9fd~O4p4G7UHw0089700897euoutp01g DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1625485683; bh=TWHebfNZHEMZzPcFEOQOODh5ZXY0IPXBMHUhGf0C9Bs=; h=Subject:To:Cc:From:Date:In-Reply-To:References:From; b=bPH2+UU1RfTxCpN6OHAG5Xy5k4iGXD16+05M8o8saPu/MmFA267udOpnS4HYWPaVY cpN5AGWAGdrcxhZ708BNxgBri4CFPS/EGKywI0SKqJ2Z8k/CMNOGWY0f0Y2r/CNOTy Ov3Rm19wQarIk1zoCBUuD/3OVe+LVSfLcF97SsXg= Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20210705114803eucas1p1b65a7543bb45d0a36be68adb206294fe~O4p3oSTzV0970609706eucas1p1M; Mon, 5 Jul 2021 11:48:03 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id 7E.90.42068.371F2E06; Mon, 5 Jul 2021 12:48:03 +0100 (BST) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20210705114757eucas1p279a0d3dd831dd8feb8ac772e88614220~O4pybBbyt0432304323eucas1p2S; Mon, 5 Jul 2021 11:47:57 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20210705114757eusmtrp2bfbc91708d36646fc674deac399d235d~O4pyaBdTn1711517115eusmtrp2M; Mon, 5 Jul 2021 11:47:57 +0000 (GMT) X-AuditID: cbfec7f4-c71ff7000002a454-26-60e2f1731460 Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id DD.4D.31287.D61F2E06; Mon, 5 Jul 2021 12:47:57 +0100 (BST) Received: from [106.210.134.192] (unknown [106.210.134.192]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20210705114756eusmtip2fc6d214d54fd08286f0a8fe13df43fa1~O4pxNN5Ps2165621656eusmtip2J; Mon, 5 Jul 2021 11:47:56 +0000 (GMT) Subject: Re: [RFC PATCH 03/17] drm/exynos: dsi: Use the drm_panel_bridge API To: Jagan Teki , Inki Dae , Joonyoung Shim , Seung-Woo Kim , Kyungmin Park , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Frieder Schrempf , Daniel Vetter , Marek Vasut , Krzysztof Kozlowski , Fabio Estevam From: Marek Szyprowski Message-ID: <7af964c7-0e92-f190-2a86-d7a061a05129@samsung.com> Date: Mon, 5 Jul 2021 13:47:56 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: <20210704090230.26489-4-jagan@amarulasolutions.com> Content-Transfer-Encoding: 8bit Content-Language: en-US X-Brightmail-Tracker: H4sIAAAAAAAAA01Sa0xTZxjed269kLJDRfnCcMvqLTjBSYg7G44gw+xk92wxGW6BVjkpBijY A+I2EzsYFTvAqmSWA6NuQIrOdqFDVgUaVzuqAeuG4ioCHcwwkEtT2hlwk63tmRv/nud9nvd7 3+fNJ0Slx4h44X5VKaNWKQplhBjr6ltyJ7H+CfnzVmMMNWxx45RpwIJSRmcI3frDR1DjQ29T tW0hdtKrx6igVU9QU2M/Y1TH3CJCXa+YFVDHTrQKKJPeTlDW327jlO7hWZQy3LAj1Kz2U0A5 6j6gFrjxUOnUNJERS5v9Xpz2eaoENKepJehm7ipGX+RGBXRjdQNOt/RMI7RzqAWnR273ELT3 cxdCf9d6hO6YtyF0Xec5QAesT78TvUe8I48p3H+QUW9Nl4vzuesjgpLga4ce9X+PaIBzhw6I hJBMhX1f3AVhLCXbAVw6tUkHxCEcBPDK0ATBk0BIqHeGXMJIx2kN4OsmAJvrXQhP/ADeCrRj 4adWkW9Ah3sSDwux5C8Y9PfaIgJKTgI44I3MI8htUDenI8JYQqZD218NEQ9GroftV5fxMF5N 7oO+ZgPOe2LgtYZ7EY+IzIA/Vj/6981nYOWFRpTHcXD4njGyESQXRLCjfgrjg2bB1gc3CR6v gvddnQIeJ8C/Lz5uqARw3G0W8KQGwJsVBsC70uCI+yERPgBKJsJvL23lyzvhwNgYxt8lGnrm YvglouHJrtMoX5bAaq2Ud2+EnMvy39gffhpE9UDGrYjGrYjDrYjD/T/3DMDOgTimjC1SMmyK iilPZhVFbJlKmbyvuMgKQr+1f9kVtAHTfX+yAyBC4ABQiMpiJbH1E3KpJE/x0ceMujhXXVbI sA7wlBCTxUn2dp7PlZJKRSlTwDAljPqxighF8Rok07Wgmt9p2miGtQcS3rJj3OqcKxc24XjK urX2tPjGS+buwaZgNvLrV8KvZ3KqsMxnC+Yvn89LK40yRW15UXtXqctK623rPjt7IkdgNnSB 4c3bm+/kOZRbagml6JuK544eLd1Q3tdtvtP7/u7Gwy0PUo17u1JykwxV7GBFvljr9qI+R/rg 4ZkvD05mLEpmlhK2w3ezLfrsNYqo1gXnkaSapt+pT44n7tqdZPQpX1m3LEfpkg32N8Haa1N7 wGj3GfK9GOazy/LyVH3/y0986HmyLaUys2fNS68uHtoVmD+O3CjQjb5Qt1TTHh/o+dOmEWRp X1+fON0rNhaXeDyWpujhAzKMzVds24yqWcU/8LkBiBwEAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprDKsWRmVeSWpSXmKPExsVy+t/xe7q5Hx8lGPx/o2xxa905VovlZ9Yx W8w/AmRd+fqezeLhVX+L3qVA3qT7E1gsvmyawGbx4t5FFouNb38wWZxtesNu0TlxCbvF8gn7 2Cw2Pb7GatH1ayWzxYzz+5gs3rQ1Mloc6ou2+DTrIVBo8ks2BxGPtR/vs3q8v9HK7jGroZfN Y96sEyweO2fdZfeY3TGT1WPxnpdMHkeuLmb1uHNtD5vH/e7jTB6bl9R7bHy3g8mjb8sqRo/P m+QC+KL0bIryS0tSFTLyi0tslaINLYz0DC0t9IxMLPUMjc1jrYxMlfTtbFJSczLLUov07RL0 MmadvcNe8MWr4u/p7UwNjEdsuhg5OCQETCSmNzB2MXJxCAksZZR4uPQlSxcjJ1BcRuLktAZW CFtY4s+1LjaIoveMErs+fgFLCAv4SBw694wVJCEicJtF4vKJ9cwgCWaBZ4wSd3+lQXScZJTo +DMRLMEmYCjR9RZkFCcHr4CdxI4/M8HWsQioSKw48Q9sqqhAssTP9e1QNYISJ2c+AavhFHCQ ONrxlwVigZnEvM0PoZbJSzRvnQ1li0vcejKfaQKj0Cwk7bOQtMxC0jILScsCRpZVjCKppcW5 6bnFhnrFibnFpXnpesn5uZsYgclk27Gfm3cwznv1Ue8QIxMH4yFGCQ5mJRFekSmPEoR4UxIr q1KL8uOLSnNSiw8xmgL9M5FZSjQ5H5jO8kriDc0MTA1NzCwNTC3NjJXEebfOXRMvJJCeWJKa nZpakFoE08fEwSnVwMTjEhK7lNlVNY9j2az7+h33/+cXSm69yM9rJc3PnX/gkoOxOVfWqUtt XgWVq6/5/nsuKqqy4l3Cp2kMJz49TJljOUHcc0feVCbZbouSaVkHHYs6PRn3hH0Kz0x1dGp+ lOIhzF0woYDJ9kXMXfHz8YKTu5sDnymJP4l3vdp1NPD8hAU3BKr7y23+850/k7jjkISlRf+W wzVv0kIWMtkcd5lwyeCFed926V0LFwp6pQeVLFv3Y3XEU0vp0Ogl0juzt1++3Sixvzilk8Vl 3qZN0xZ+v3raXPHxtMVhRVt3KG67ZeXuE+qvFrjyZu3C2ad8ljtdO50nIpj/r/VVXQBP8p7f yitdK79sVe1dwFvyRImlOCPRUIu5qDgRAKg+o6avAwAA X-CMS-MailID: 20210705114757eucas1p279a0d3dd831dd8feb8ac772e88614220 X-Msg-Generator: CA Content-Type: text/plain; charset="utf-8" X-RootMTR: 20210704090432eucas1p2fa4225336e35f3f5fd2fbf5da99001ff X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20210704090432eucas1p2fa4225336e35f3f5fd2fbf5da99001ff References: <20210704090230.26489-1-jagan@amarulasolutions.com> <20210704090230.26489-4-jagan@amarulasolutions.com> X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devicetree@vger.kernel.org, linux-samsung-soc@vger.kernel.org, dri-devel@lists.freedesktop.org, NXP Linux Team , linux-amarula , linux-arm-kernel@lists.infradead.org Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" On 04.07.2021 11:02, Jagan Teki wrote: > Use drm_panel_bridge to replace manual panel and > bridge_chain handling code. > > This makes the driver simpler to allow all components > in the display pipeline to be treated as bridges by > cleaning the way to generic connector handling. > > Signed-off-by: Jagan Teki This breaks Exysos DSI driver operation (Trats board worked fine with only patches 1-2): [    2.540066] exynos4-fb 11c00000.fimd: Adding to iommu group 0 [    2.554733] OF: graph: no port node found in /soc/fimd@11c00000 [    2.602819] [drm] Exynos DRM: using 11c00000.fimd device for DMA mapping operations [    2.609649] exynos-drm exynos-drm: bound 11c00000.fimd (ops fimd_component_ops) [    2.632558] exynos-drm exynos-drm: failed to bind 11c80000.dsi (ops exynos_dsi_component_ops): -22 [    2.642263] exynos-drm exynos-drm: master bind failed: -22 [    2.651017] exynos-drm: probe of exynos-drm failed with error -22 > --- > drivers/gpu/drm/exynos/exynos_drm_dsi.c | 167 ++++-------------------- > 1 file changed, 23 insertions(+), 144 deletions(-) > > diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c > index d7d60aee465b..24f0b082ac6d 100644 > --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c > +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c > @@ -254,9 +254,6 @@ struct exynos_dsi_driver_data { > struct exynos_dsi { > struct drm_encoder encoder; > struct mipi_dsi_host dsi_host; > - struct drm_connector connector; > - struct drm_panel *panel; > - struct list_head bridge_chain; > struct drm_bridge bridge; > struct drm_bridge *out_bridge; > struct drm_device *drm; > @@ -287,7 +284,6 @@ struct exynos_dsi { > }; > > #define host_to_dsi(host) container_of(host, struct exynos_dsi, dsi_host) > -#define connector_to_dsi(c) container_of(c, struct exynos_dsi, connector) > > static inline struct exynos_dsi *bridge_to_dsi(struct drm_bridge *b) > { > @@ -1379,7 +1375,6 @@ static void exynos_dsi_unregister_te_irq(struct exynos_dsi *dsi) > static void exynos_dsi_bridge_enable(struct drm_bridge *bridge) > { > struct exynos_dsi *dsi = bridge_to_dsi(bridge); > - struct drm_bridge *iter; > int ret; > > if (dsi->state & DSIM_STATE_ENABLED) > @@ -1393,134 +1388,51 @@ static void exynos_dsi_bridge_enable(struct drm_bridge *bridge) > > dsi->state |= DSIM_STATE_ENABLED; > > - if (dsi->panel) { > - ret = drm_panel_prepare(dsi->panel); > - if (ret < 0) > - goto err_put_sync; > - } else { > - list_for_each_entry_reverse(iter, &dsi->bridge_chain, > - chain_node) { > - if (iter->funcs->pre_enable) > - iter->funcs->pre_enable(iter); > - } > - } > - > exynos_dsi_set_display_mode(dsi); > exynos_dsi_set_display_enable(dsi, true); > > - if (dsi->panel) { > - ret = drm_panel_enable(dsi->panel); > - if (ret < 0) > - goto err_display_disable; > - } else { > - list_for_each_entry(iter, &dsi->bridge_chain, chain_node) { > - if (iter->funcs->enable) > - iter->funcs->enable(iter); > - } > - } > - > dsi->state |= DSIM_STATE_VIDOUT_AVAILABLE; > return; > - > -err_display_disable: > - exynos_dsi_set_display_enable(dsi, false); > - drm_panel_unprepare(dsi->panel); > - > -err_put_sync: > - dsi->state &= ~DSIM_STATE_ENABLED; > - pm_runtime_put(dsi->dev); > } > > static void exynos_dsi_bridge_disable(struct drm_bridge *bridge) > { > struct exynos_dsi *dsi = bridge_to_dsi(bridge); > - struct drm_bridge *iter; > > if (!(dsi->state & DSIM_STATE_ENABLED)) > return; > > dsi->state &= ~DSIM_STATE_VIDOUT_AVAILABLE; > > - drm_panel_disable(dsi->panel); > - > - list_for_each_entry_reverse(iter, &dsi->bridge_chain, chain_node) { > - if (iter->funcs->disable) > - iter->funcs->disable(iter); > - } > - > exynos_dsi_set_display_enable(dsi, false); > - drm_panel_unprepare(dsi->panel); > - > - list_for_each_entry(iter, &dsi->bridge_chain, chain_node) { > - if (iter->funcs->post_disable) > - iter->funcs->post_disable(iter); > - } > > dsi->state &= ~DSIM_STATE_ENABLED; > pm_runtime_put_sync(dsi->dev); > } > > -static enum drm_connector_status > -exynos_dsi_detect(struct drm_connector *connector, bool force) > -{ > - return connector->status; > -} > - > -static void exynos_dsi_connector_destroy(struct drm_connector *connector) > +static int exynos_dsi_panel_or_bridge(struct exynos_dsi *dsi, > + struct device_node *node) > { > - drm_connector_unregister(connector); > - drm_connector_cleanup(connector); > - connector->dev = NULL; > -} > - > -static const struct drm_connector_funcs exynos_dsi_connector_funcs = { > - .detect = exynos_dsi_detect, > - .fill_modes = drm_helper_probe_single_connector_modes, > - .destroy = exynos_dsi_connector_destroy, > - .reset = drm_atomic_helper_connector_reset, > - .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state, > - .atomic_destroy_state = drm_atomic_helper_connector_destroy_state, > -}; > - > -static int exynos_dsi_get_modes(struct drm_connector *connector) > -{ > - struct exynos_dsi *dsi = connector_to_dsi(connector); > - > - if (dsi->panel) > - return drm_panel_get_modes(dsi->panel, connector); > - > - return 0; > -} > + struct drm_bridge *panel_bridge; > + struct drm_panel *panel; > > -static const struct drm_connector_helper_funcs exynos_dsi_connector_helper_funcs = { > - .get_modes = exynos_dsi_get_modes, > -}; > + panel_bridge = of_drm_find_bridge(node); > + if (!panel_bridge) { > + panel = of_drm_find_panel(node); > + if (!IS_ERR(panel)) { > + panel_bridge = drm_panel_bridge_add(panel); > + if (IS_ERR(panel_bridge)) > + return PTR_ERR(panel_bridge); > + } > + } > > -static int exynos_dsi_create_connector(struct exynos_dsi *dsi, > - struct drm_device *drm) > -{ > - struct drm_encoder *encoder = &dsi->encoder; > - struct drm_connector *connector = &dsi->connector; > - int ret; > + of_node_put(node); > > - connector->polled = DRM_CONNECTOR_POLL_HPD; > + dsi->out_bridge = panel_bridge; > > - ret = drm_connector_init(drm, connector, &exynos_dsi_connector_funcs, > - DRM_MODE_CONNECTOR_DSI); > - if (ret) { > - DRM_DEV_ERROR(dsi->dev, > - "Failed to initialize connector with drm\n"); > - return ret; > - } > + if (!dsi->out_bridge) > + return -EPROBE_DEFER; > > - connector->status = connector_status_disconnected; > - drm_connector_helper_add(connector, &exynos_dsi_connector_helper_funcs); > - drm_connector_attach_encoder(connector, encoder); > - if (!drm->registered) > - return 0; > - > - connector->funcs->reset(connector); > - drm_connector_register(connector); > return 0; > } > > @@ -1531,7 +1443,8 @@ static int exynos_dsi_bridge_attach(struct drm_bridge *bridge, > > dsi->drm = bridge->dev; > > - return 0; > + return drm_bridge_attach(bridge->encoder, dsi->out_bridge, bridge, > + flags); > } > > static const struct drm_bridge_funcs exynos_dsi_bridge_funcs = { > @@ -1546,32 +1459,12 @@ static int exynos_dsi_host_attach(struct mipi_dsi_host *host, > struct mipi_dsi_device *device) > { > struct exynos_dsi *dsi = host_to_dsi(host); > - struct drm_encoder *encoder = &dsi->encoder; > struct drm_device *drm = dsi->drm; > - struct drm_bridge *out_bridge; > - > - out_bridge = of_drm_find_bridge(device->dev.of_node); > - if (out_bridge) { > - drm_bridge_attach(encoder, out_bridge, NULL, 0); > - dsi->out_bridge = out_bridge; > - list_splice_init(&encoder->bridge_chain, &dsi->bridge_chain); > - } else { > - int ret = exynos_dsi_create_connector(dsi, drm); > - > - if (ret) { > - DRM_DEV_ERROR(dsi->dev, > - "failed to create connector ret = %d\n", > - ret); > - drm_encoder_cleanup(encoder); > - return ret; > - } > + int ret; > > - dsi->panel = of_drm_find_panel(device->dev.of_node); > - if (IS_ERR(dsi->panel)) > - dsi->panel = NULL; > - else > - dsi->connector.status = connector_status_connected; > - } > + ret = exynos_dsi_panel_or_bridge(dsi, device->dev.of_node); > + if (ret) > + return ret; > > /* > * This is a temporary solution and should be made by more generic way. > @@ -1607,19 +1500,6 @@ static int exynos_dsi_host_detach(struct mipi_dsi_host *host, > struct exynos_dsi *dsi = host_to_dsi(host); > struct drm_device *drm = dsi->drm; > > - if (dsi->panel) { > - mutex_lock(&drm->mode_config.mutex); > - exynos_dsi_bridge_disable(&dsi->bridge); > - dsi->panel = NULL; > - dsi->connector.status = connector_status_disconnected; > - mutex_unlock(&drm->mode_config.mutex); > - } else { > - if (dsi->out_bridge->funcs->detach) > - dsi->out_bridge->funcs->detach(dsi->out_bridge); > - dsi->out_bridge = NULL; > - INIT_LIST_HEAD(&dsi->bridge_chain); > - } > - > if (drm->mode_config.poll_enabled) > drm_kms_helper_hotplug_event(drm); > > @@ -1770,7 +1650,6 @@ static int exynos_dsi_probe(struct platform_device *pdev) > init_completion(&dsi->completed); > spin_lock_init(&dsi->transfer_lock); > INIT_LIST_HEAD(&dsi->transfer_list); > - INIT_LIST_HEAD(&dsi->bridge_chain); > > dsi->dsi_host.ops = &exynos_dsi_ops; > dsi->dsi_host.dev = dev; Best regards -- Marek Szyprowski, PhD Samsung R&D Institute Poland