Received: by 10.223.164.202 with SMTP id h10csp782819wrb; Thu, 30 Nov 2017 19:59:05 -0800 (PST) X-Google-Smtp-Source: AGs4zMYLFkHweRGT9TOJiksZzb0VxxlDw57anuLrO2S9dTWXNM0Bgg6O2wYR/Js9BzXisAAiRb+a X-Received: by 10.159.203.202 with SMTP id r10mr4808925plo.431.1512100745200; Thu, 30 Nov 2017 19:59:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1512100745; cv=none; d=google.com; s=arc-20160816; b=MwsxLB1k86lNy7atn7+A6ga+JBkj6DuEdrVEMzJEWu66c07TJNfoabcn1d9gvbGiyJ Aix7seag0M6DDjjUj8HAp4smEGJHRefP8UT+jqAnbizUpP0GOzhj2FysHxC340R9g6WU 399W8Y7L4T+axQVa1p1u6jwgFcLlhmnRFkXgX3tY8Hd0IsEgeAyQ2/6aoz7XltpashWd NSmjNKY+8p4p9K6koJaYb3v+y1WH/oMZhKjKYxWKOoZI9nDa1nCMUx9EUqSPzX2ZHIU1 Ak5gYf4eVPQtAyYQU6cGXXo8W7+HNl8SFEpv2MFm6kQC+58Fpqe+rWQ81oEFi9WDJmQ6 BhJA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=szKpHV9J/eMG2mJFns8XLe/CxvqNNrZ3gt5ND7MECKY=; b=jahA7aDXWqDFdke6ysmUIISwj2rUGn82Hd7j3+QXyLLn+n/MFRaFnM2g5C4SO1Bdk/ A2zlbFkTik3Sf52GxMM6oe4vcf0b5MH1bIyELyGi01xN1B2mKyanvhvkYt0i9gw/4GWA L5eW0Dx86No6W/mbn8Ybcf9wGDIneLGUp5B1xoV3WDt29AfaY1XP5GWFhWuvAjyvoR8b lf3tTBsJc1FAbzlI0QVxVro3FFflw1clncjF61O4noNPbxVnVvvxS8TSV3OaVkdzncjs aGJFAMv5zD+oZ025f/u6ea6N31z50ucKc0g9/BcDl8CbDuyXam+dZauGM0IzSjLTlrj3 0lQw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id k23si4418285pff.141.2017.11.30.19.58.51; Thu, 30 Nov 2017 19:59:05 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752449AbdLAD60 (ORCPT + 99 others); Thu, 30 Nov 2017 22:58:26 -0500 Received: from mail-pg0-f67.google.com ([74.125.83.67]:34791 "EHLO mail-pg0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752374AbdLAD6Y (ORCPT ); Thu, 30 Nov 2017 22:58:24 -0500 Received: by mail-pg0-f67.google.com with SMTP id j4so3949822pgp.1 for ; Thu, 30 Nov 2017 19:58:24 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=szKpHV9J/eMG2mJFns8XLe/CxvqNNrZ3gt5ND7MECKY=; b=LARO+JgceQdgeaXCwjumVmsO7NNX6gyGoog5i9RO2AtJ+yZUzFX59hH9RFsjkzFtX3 TX0J8wRiwz9xBbLjD2ftYNNwDkQXBwNDyC5tBV8d0OFMb6KB8+k8RguWjS9vnETh+17y R47mqgSDKuYkeKyntpZqPDTxf6qwMmNENPX4G/FAIQg43OpyB9ZneIa71pDm1g7I0PHG nbK6osFi0msyuuT1EiA4gBu3dWYgmrJbUDxL++beRYSw8w1lNXFu7O2EbqwrMqwrfRv0 +q++j+ZJMlbF0p+5LiDxQ+ITjC0QbbX6Kny3Wk2CgRCJU4aMTEaGP0VP7Q6jeBVAjp2n HUYQ== X-Gm-Message-State: AJaThX74YvBxtqCn0jlHVjJD9QlMcl1T14OqqPXUU7kTODVLjHBn9B6B 7sKCAWz4pC9Sn1WHKXB4mzQ= X-Received: by 10.101.78.18 with SMTP id r18mr4501424pgt.289.1512100703667; Thu, 30 Nov 2017 19:58:23 -0800 (PST) Received: from Y480.lan ([103.29.142.67]) by smtp.gmail.com with ESMTPSA id 67sm9003397pfz.171.2017.11.30.19.58.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 30 Nov 2017 19:58:23 -0800 (PST) From: Nickey Yang To: robh+dt@kernel.org, heiko@sntech.de, mark.rutland@arm.com, airlied@linux.ie Cc: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, laurent.pinchart@ideasonboard.com, seanpaul@chromium.org, briannorris@chromium.org, mka@chromium.org, hoegsberg@gmail.com, architt@codeaurora.org, philippe.cornu@st.com, yannick.fertre@st.com, hl@rock-chips.com, zyw@rock-chips.com, xbl@rock-chips.com, nickey.yang@rock-chips.com Subject: [PATCH v4 1/3] drm/bridge/synopsys: dsi: stop clobbering drvdata Date: Fri, 1 Dec 2017 11:58:03 +0800 Message-Id: <1512100685-4015-2-git-send-email-nickey.yang@rock-chips.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1512100685-4015-1-git-send-email-nickey.yang@rock-chips.com> References: <1512100685-4015-1-git-send-email-nickey.yang@rock-chips.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Brian Norris Bridge drivers/helpers shouldn't be clobbering the drvdata, since a parent driver might need to own this. Instead, let's return our 'dw_mipi_dsi' object and have callers pass that back to us for removal. Signed-off-by: Brian Norris Signed-off-by: Nickey Yang Reviewed-by: Matthias Kaehlcke Reviewed-by: Archit Taneja Acked-by: Philippe Cornu Link:https://patchwork.kernel.org/patch/10078493/ --- Changes in v4: - Add From tag,update subject line - keep patch "drm/stm: dsi: Adjust dw_mipi_dsi_probe and remove" in this piece together. drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c | 36 ++++++++++----------------- drivers/gpu/drm/stm/dw_mipi_dsi-stm.c | 8 +++--- include/drm/bridge/dw_mipi_dsi.h | 17 ++++++++----- 3 files changed, 29 insertions(+), 32 deletions(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c index d9cca4f..c39c7dc 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c @@ -922,8 +922,6 @@ static int dw_mipi_dsi_bridge_attach(struct drm_bridge *bridge) dsi->bridge.of_node = pdev->dev.of_node; #endif - dev_set_drvdata(dev, dsi); - return dsi; } @@ -935,23 +933,16 @@ static void __dw_mipi_dsi_remove(struct dw_mipi_dsi *dsi) /* * Probe/remove API, used from platforms based on the DRM bridge API. */ -int dw_mipi_dsi_probe(struct platform_device *pdev, - const struct dw_mipi_dsi_plat_data *plat_data) +struct dw_mipi_dsi * +dw_mipi_dsi_probe(struct platform_device *pdev, + const struct dw_mipi_dsi_plat_data *plat_data) { - struct dw_mipi_dsi *dsi; - - dsi = __dw_mipi_dsi_probe(pdev, plat_data); - if (IS_ERR(dsi)) - return PTR_ERR(dsi); - - return 0; + return __dw_mipi_dsi_probe(pdev, plat_data); } EXPORT_SYMBOL_GPL(dw_mipi_dsi_probe); -void dw_mipi_dsi_remove(struct platform_device *pdev) +void dw_mipi_dsi_remove(struct dw_mipi_dsi *dsi) { - struct dw_mipi_dsi *dsi = platform_get_drvdata(pdev); - mipi_dsi_host_unregister(&dsi->dsi_host); __dw_mipi_dsi_remove(dsi); @@ -961,31 +952,30 @@ void dw_mipi_dsi_remove(struct platform_device *pdev) /* * Bind/unbind API, used from platforms based on the component framework. */ -int dw_mipi_dsi_bind(struct platform_device *pdev, struct drm_encoder *encoder, - const struct dw_mipi_dsi_plat_data *plat_data) +struct dw_mipi_dsi * +dw_mipi_dsi_bind(struct platform_device *pdev, struct drm_encoder *encoder, + const struct dw_mipi_dsi_plat_data *plat_data) { struct dw_mipi_dsi *dsi; int ret; dsi = __dw_mipi_dsi_probe(pdev, plat_data); if (IS_ERR(dsi)) - return PTR_ERR(dsi); + return dsi; ret = drm_bridge_attach(encoder, &dsi->bridge, NULL); if (ret) { - dw_mipi_dsi_remove(pdev); + dw_mipi_dsi_remove(dsi); DRM_ERROR("Failed to initialize bridge with drm\n"); - return ret; + return ERR_PTR(ret); } - return 0; + return dsi; } EXPORT_SYMBOL_GPL(dw_mipi_dsi_bind); -void dw_mipi_dsi_unbind(struct device *dev) +void dw_mipi_dsi_unbind(struct dw_mipi_dsi *dsi) { - struct dw_mipi_dsi *dsi = dev_get_drvdata(dev); - __dw_mipi_dsi_remove(dsi); } EXPORT_SYMBOL_GPL(dw_mipi_dsi_unbind); diff --git a/drivers/gpu/drm/stm/dw_mipi_dsi-stm.c b/drivers/gpu/drm/stm/dw_mipi_dsi-stm.c index e5b6310..80f9950 100644 --- a/drivers/gpu/drm/stm/dw_mipi_dsi-stm.c +++ b/drivers/gpu/drm/stm/dw_mipi_dsi-stm.c @@ -66,6 +66,7 @@ enum dsi_color { struct dw_mipi_dsi_stm { void __iomem *base; struct clk *pllref_clk; + struct dw_mipi_dsi *dmd; }; static inline void dsi_write(struct dw_mipi_dsi_stm *dsi, u32 reg, u32 val) @@ -318,10 +319,11 @@ static int dw_mipi_dsi_stm_probe(struct platform_device *pdev) dw_mipi_dsi_stm_plat_data.base = dsi->base; dw_mipi_dsi_stm_plat_data.priv_data = dsi; - ret = dw_mipi_dsi_probe(pdev, &dw_mipi_dsi_stm_plat_data); - if (ret) { + dsi->dmd = dw_mipi_dsi_probe(pdev, &dw_mipi_dsi_stm_plat_data); + if (IS_ERR(dsi->dmd)) { DRM_ERROR("Failed to initialize mipi dsi host\n"); clk_disable_unprepare(dsi->pllref_clk); + return PTR_ERR(dsi->dmd); } return ret; @@ -332,7 +334,7 @@ static int dw_mipi_dsi_stm_remove(struct platform_device *pdev) struct dw_mipi_dsi_stm *dsi = dw_mipi_dsi_stm_plat_data.priv_data; clk_disable_unprepare(dsi->pllref_clk); - dw_mipi_dsi_remove(pdev); + dw_mipi_dsi_remove(dsi->dmd); return 0; } diff --git a/include/drm/bridge/dw_mipi_dsi.h b/include/drm/bridge/dw_mipi_dsi.h index 9b30fec..d9c6d54 100644 --- a/include/drm/bridge/dw_mipi_dsi.h +++ b/include/drm/bridge/dw_mipi_dsi.h @@ -10,6 +10,8 @@ #ifndef __DW_MIPI_DSI__ #define __DW_MIPI_DSI__ +struct dw_mipi_dsi; + struct dw_mipi_dsi_phy_ops { int (*init)(void *priv_data); int (*get_lane_mbps)(void *priv_data, struct drm_display_mode *mode, @@ -29,11 +31,14 @@ struct dw_mipi_dsi_plat_data { void *priv_data; }; -int dw_mipi_dsi_probe(struct platform_device *pdev, - const struct dw_mipi_dsi_plat_data *plat_data); -void dw_mipi_dsi_remove(struct platform_device *pdev); -int dw_mipi_dsi_bind(struct platform_device *pdev, struct drm_encoder *encoder, - const struct dw_mipi_dsi_plat_data *plat_data); -void dw_mipi_dsi_unbind(struct device *dev); +struct dw_mipi_dsi *dw_mipi_dsi_probe(struct platform_device *pdev, + const struct dw_mipi_dsi_plat_data + *plat_data); +void dw_mipi_dsi_remove(struct dw_mipi_dsi *dsi); +struct dw_mipi_dsi *dw_mipi_dsi_bind(struct platform_device *pdev, + struct drm_encoder *encoder, + const struct dw_mipi_dsi_plat_data + *plat_data); +void dw_mipi_dsi_unbind(struct dw_mipi_dsi *dsi); #endif /* __DW_MIPI_DSI__ */ -- 1.9.1 From 1586137486307584634@xxx Thu Dec 07 14:56:22 +0000 2017 X-GM-THRID: 1580304871236582169 X-Gmail-Labels: Inbox,Category Forums,HistoricalUnread