From patchwork Fri Jun 26 07:45:11 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Archit Taneja X-Patchwork-Id: 6678641 X-Patchwork-Delegate: agross@codeaurora.org Return-Path: X-Original-To: patchwork-linux-arm-msm@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 8FBAA9F402 for ; Fri, 26 Jun 2015 07:45:32 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 76A5520712 for ; Fri, 26 Jun 2015 07:45:31 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 62FD7206E8 for ; Fri, 26 Jun 2015 07:45:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751776AbbFZHp3 (ORCPT ); Fri, 26 Jun 2015 03:45:29 -0400 Received: from smtp.codeaurora.org ([198.145.29.96]:56163 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751655AbbFZHp3 (ORCPT ); Fri, 26 Jun 2015 03:45:29 -0400 Received: from smtp.codeaurora.org (localhost [127.0.0.1]) by smtp.codeaurora.org (Postfix) with ESMTP id 14347140DBE; Fri, 26 Jun 2015 07:45:29 +0000 (UTC) Received: by smtp.codeaurora.org (Postfix, from userid 486) id F3F37140DC2; Fri, 26 Jun 2015 07:45:28 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Spam-Level: X-Spam-Status: No, score=-8.3 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 Received: from localhost (unknown [202.46.23.61]) (using TLSv1.2 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) (Authenticated sender: architt@smtp.codeaurora.org) by smtp.codeaurora.org (Postfix) with ESMTPSA id 36387140DC0; Fri, 26 Jun 2015 07:45:27 +0000 (UTC) From: Archit Taneja To: dri-devel@lists.freedesktop.org Cc: robdclark@gmail.com, linux-arm-msm@vger.kernel.org, hali@codeaurora.org, wentaox@codeaurora.org, sviau@codeaurora.org, jilaiw@codeaurora.org, Archit Taneja Subject: [PATCH 2/5] drm/msm/dsi: Refer to connected device as 'device' instead of 'panel' Date: Fri, 26 Jun 2015 13:15:11 +0530 Message-Id: <1435304714-4684-3-git-send-email-architt@codeaurora.org> X-Mailer: git-send-email 1.8.2.1 In-Reply-To: <1435304714-4684-1-git-send-email-architt@codeaurora.org> References: <1435304714-4684-1-git-send-email-architt@codeaurora.org> X-Virus-Scanned: ClamAV using ClamSMTP Sender: linux-arm-msm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP We currently support only panels connected to dsi output. We're going to also support external bridge chips now. Change 'panel_node' to 'device_node' in the struct msm_dsi_host and 'panel_flags' to 'device_flags' in msm_dsi. This makes things sound a bit more generic. Signed-off-by: Archit Taneja --- drivers/gpu/drm/msm/dsi/dsi.c | 2 +- drivers/gpu/drm/msm/dsi/dsi.h | 2 +- drivers/gpu/drm/msm/dsi/dsi_host.c | 31 +++++++++++++++++-------------- drivers/gpu/drm/msm/dsi/dsi_manager.c | 4 ++-- 4 files changed, 21 insertions(+), 18 deletions(-) diff --git a/drivers/gpu/drm/msm/dsi/dsi.c b/drivers/gpu/drm/msm/dsi/dsi.c index 1f2561e..9f5fe59 100644 --- a/drivers/gpu/drm/msm/dsi/dsi.c +++ b/drivers/gpu/drm/msm/dsi/dsi.c @@ -18,7 +18,7 @@ struct drm_encoder *msm_dsi_get_encoder(struct msm_dsi *msm_dsi) if (!msm_dsi || !msm_dsi->panel) return NULL; - return (msm_dsi->panel_flags & MIPI_DSI_MODE_VIDEO) ? + return (msm_dsi->device_flags & MIPI_DSI_MODE_VIDEO) ? msm_dsi->encoders[MSM_DSI_VIDEO_ENCODER_ID] : msm_dsi->encoders[MSM_DSI_CMD_ENCODER_ID]; } diff --git a/drivers/gpu/drm/msm/dsi/dsi.h b/drivers/gpu/drm/msm/dsi/dsi.h index 5e29aad..2bf4859 100644 --- a/drivers/gpu/drm/msm/dsi/dsi.h +++ b/drivers/gpu/drm/msm/dsi/dsi.h @@ -59,7 +59,7 @@ struct msm_dsi { struct mipi_dsi_host *host; struct msm_dsi_phy *phy; struct drm_panel *panel; - unsigned long panel_flags; + unsigned long device_flags; struct device *phy_dev; bool phy_enabled; diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c index 3785083f..e5a44e7 100644 --- a/drivers/gpu/drm/msm/dsi/dsi_host.c +++ b/drivers/gpu/drm/msm/dsi/dsi_host.c @@ -213,8 +213,8 @@ struct msm_dsi_host { struct drm_display_mode *mode; - /* Panel info */ - struct device_node *panel_node; + /* connected device info */ + struct device_node *device_node; unsigned int channel; unsigned int lanes; enum mipi_dsi_pixel_format format; @@ -1385,7 +1385,7 @@ static int dsi_host_attach(struct mipi_dsi_host *host, msm_host->format = dsi->format; msm_host->mode_flags = dsi->mode_flags; - WARN_ON(dsi->dev.of_node != msm_host->panel_node); + WARN_ON(dsi->dev.of_node != msm_host->device_node); /* Some gpios defined in panel DT need to be controlled by host */ ret = dsi_host_init_panel_gpios(msm_host, &dsi->dev); @@ -1404,7 +1404,7 @@ static int dsi_host_detach(struct mipi_dsi_host *host, { struct msm_dsi_host *msm_host = to_msm_dsi_host(host); - msm_host->panel_node = NULL; + msm_host->device_node = NULL; DBG("id=%d", msm_host->id); if (msm_host->dev) @@ -1439,7 +1439,7 @@ static int msm_dsi_host_parse_dt(struct msm_dsi_host *msm_host) { struct device *dev = &msm_host->pdev->dev; struct device_node *np = dev->of_node; - struct device_node *endpoint, *panel_node; + struct device_node *endpoint, *device_node; int ret; ret = of_property_read_u32(np, "qcom,dsi-host-index", &msm_host->id); @@ -1451,7 +1451,7 @@ static int msm_dsi_host_parse_dt(struct msm_dsi_host *msm_host) /* * get the first endpoint node. in our case, dsi has one output port - * to which the panel is connected. + * to which the device is connected. */ endpoint = of_graph_get_next_endpoint(np, NULL); if (IS_ERR(endpoint)) { @@ -1459,18 +1459,21 @@ static int msm_dsi_host_parse_dt(struct msm_dsi_host *msm_host) return PTR_ERR(endpoint); } - /* get panel node from the output port's endpoint data */ - panel_node = of_graph_get_remote_port_parent(endpoint); - if (IS_ERR(panel_node)) { + /* + * get connected device(panel/bridge) node from the output port's + * endpoint data + */ + device_node = of_graph_get_remote_port_parent(endpoint); + if (IS_ERR(device_node)) { dev_err(dev, "%s: no valid device\n", __func__); of_node_put(endpoint); - return PTR_ERR(panel_node); + return PTR_ERR(device_node); } of_node_put(endpoint); - of_node_put(panel_node); + of_node_put(device_node); - msm_host->panel_node = panel_node; + msm_host->device_node = device_node; return 0; } @@ -1622,7 +1625,7 @@ int msm_dsi_host_register(struct mipi_dsi_host *host, bool check_defer) * create framebuffer. */ if (check_defer) { - if (!of_drm_find_panel(msm_host->panel_node)) + if (!of_drm_find_panel(msm_host->device_node)) return -EPROBE_DEFER; } } @@ -2032,7 +2035,7 @@ struct drm_panel *msm_dsi_host_get_panel(struct mipi_dsi_host *host, struct msm_dsi_host *msm_host = to_msm_dsi_host(host); struct drm_panel *panel; - panel = of_drm_find_panel(msm_host->panel_node); + panel = of_drm_find_panel(msm_host->device_node); if (panel_flags) *panel_flags = msm_host->mode_flags; diff --git a/drivers/gpu/drm/msm/dsi/dsi_manager.c b/drivers/gpu/drm/msm/dsi/dsi_manager.c index bd247b7..ec8db80 100644 --- a/drivers/gpu/drm/msm/dsi/dsi_manager.c +++ b/drivers/gpu/drm/msm/dsi/dsi_manager.c @@ -156,7 +156,7 @@ static enum drm_connector_status dsi_mgr_connector_detect( DBG("id=%d", id); if (!msm_dsi->panel) { msm_dsi->panel = msm_dsi_host_get_panel(msm_dsi->host, - &msm_dsi->panel_flags); + &msm_dsi->device_flags); /* There is only 1 panel in the global panel list * for dual DSI mode. Therefore slave dsi should get @@ -177,7 +177,7 @@ static enum drm_connector_status dsi_mgr_connector_detect( */ if (msm_dsi->panel && IS_DUAL_DSI() && other_dsi && other_dsi->panel) { - bool cmd_mode = !(msm_dsi->panel_flags & + bool cmd_mode = !(msm_dsi->device_flags & MIPI_DSI_MODE_VIDEO); struct drm_encoder *encoder = msm_dsi_get_encoder( dsi_mgr_get_dsi(DSI_ENCODER_MASTER));