Received: by 10.223.148.5 with SMTP id 5csp7403422wrq; Thu, 18 Jan 2018 05:08:37 -0800 (PST) X-Google-Smtp-Source: ACJfBouvUsEQiSZX/afv7ipLr7NigGppX5jfeR6iLJRZQS3qb1CA15WA3mLKDgbmsfMgdgAeimWu X-Received: by 10.101.81.141 with SMTP id h13mr21454548pgq.241.1516280917524; Thu, 18 Jan 2018 05:08:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516280917; cv=none; d=google.com; s=arc-20160816; b=zelBPNL4oLgFvi+5FeQEflhHaWoU1eBMR781Ikb47au+4Ck7rQb0KgNQkX7agFhBhi Hn4d3X6M1UwBA8jSDaGakoo8a7KP/F18JCSRh+ww4tM3wMYV8VNU37E3yzF+Mxir3SyH WHnhh83k9X/aP3s4CvgWIv//WrH4Bv/ddOrCfVur11Yn3yuV+LUho5YtTsP5KEu5EalS agePitHwhEJSJ25V+XJuGPZf02F3g/OuxIroPtDavFD31vojXwaE8gZjkVe5PCVhAEws 5z0JUQERknuF+mUOTnTrZt0hp+ZQOVZ5TrLoPl/EqM/B8C9jJbmmFW+8g9l5XdZbkrcs qLaQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:organization:from:references:cc:to:subject :dkim-signature:arc-authentication-results; bh=S/nUIDLcOJsDkbt6/aq3NE9zZu9eYXx39WdvKlRFClc=; b=WUSd6CWkNlWrES9IJAyxk5qCltJJjScC7ccHRFRN6+hWffiHp2Wf/OHkzpVMh//zDO 1BDCgJjdNIo+k3x8FYYBodfPCB5Hhn0jRoO2YvMY29yfReHA8qg3MWrFkY+MBDPi9MeC qYr6oNzo+vyPCyeugcbpPnI9ZewqnnqR38LmdfEiZNALSicyMpoA/SilH51t3ba68/L8 fM04bDBoo/ibaRnj5OkraqLc+PxCCOHi8BpkDA3wazE7L0R1EWgvhVbLNJ/2dw1QanzT qkKOYRfrwBk7L2OJPKN/3fw9obF1gFyFoA+G66enIr4smvsUIgbi/LP2ejMmc1814ZRu By6Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20150623.gappssmtp.com header.s=20150623 header.b=sBxqdFwB; 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 k74si228125pfb.69.2018.01.18.05.08.23; Thu, 18 Jan 2018 05:08:37 -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; dkim=pass header.i=@baylibre-com.20150623.gappssmtp.com header.s=20150623 header.b=sBxqdFwB; 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 S1755962AbeARNEO (ORCPT + 99 others); Thu, 18 Jan 2018 08:04:14 -0500 Received: from mail-wm0-f66.google.com ([74.125.82.66]:33051 "EHLO mail-wm0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754973AbeARNEL (ORCPT ); Thu, 18 Jan 2018 08:04:11 -0500 Received: by mail-wm0-f66.google.com with SMTP id x4so2650171wmc.0 for ; Thu, 18 Jan 2018 05:04:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=subject:to:cc:references:from:organization:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=S/nUIDLcOJsDkbt6/aq3NE9zZu9eYXx39WdvKlRFClc=; b=sBxqdFwBHJLrGMWF+KmBtO03TyDa//oNyIdasISpS+jzFplICbwjvnyXd9zjWYwLzF Q/ylbDROwCbwuPoF+v0cLVi6J7ISZcHRXIv0zn2k36iCBT/Vx9psxFsnJvN3dEvU6l9p adbMI6qfwqLlbKvvPzdR+Ruvve83UOWj694GPgQZ+buanlfJI7SfCBJU8qcVk+otUjWb YKYOo6kTnhZb5Gor6JS3DmMnWnS6iHq+mGF+pyJRKPAhqZzppOlr/WOPdysJJ4nr3jOV nZ4oKpXFL7VJ6N6p9nhfEvNle99TbgHt+LQeGhmucx7iBn1HLycVs/aYZmNQECFuN4A9 OTfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:organization :message-id:date:user-agent:mime-version:in-reply-to :content-language:content-transfer-encoding; bh=S/nUIDLcOJsDkbt6/aq3NE9zZu9eYXx39WdvKlRFClc=; b=kU+mHPmkLZuUplQywKZ3wMRCQgL3tskzrZUgpIXb1zO5bWgirYbdHX3LfZBuQWQWhw t8qJzOEqIYFy+SAvnsdUXjKPKsD1ezYQzIRymM7pTHvYQ70Qgg6Lf3NGW4mIlsYLTVfx EYFSDfB9pDD3iWpoRwMo1YaM49+46+6zcZu0GgjKBTTM4RIp1/OR6q20/CXqKUq5D0b6 92Tuv4O0+LXtClYb7IL3G1BhWF77M6bqmcOMxAXlTMn8EWt1EcyjaA/pfnYYgDvHM+jH D1ucsV8jPrmhImwSjFA2flx8j0kAPJMaFJnnsr9BriUuQ447srYv6GntCUIOFHXzS9H7 Dq7w== X-Gm-Message-State: AKwxytevCiNNbnIgEcU0VTszAi9KLv5rYyTxno9+VVW8Q/VSAjnttiRM q/lTq5Bm4ehi6rW0ybIZMaquKQ== X-Received: by 10.28.154.195 with SMTP id c186mr5533245wme.82.1516280650182; Thu, 18 Jan 2018 05:04:10 -0800 (PST) Received: from [10.1.2.12] ([90.63.244.31]) by smtp.gmail.com with ESMTPSA id 4sm2770075wmz.31.2018.01.18.05.04.08 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 18 Jan 2018 05:04:09 -0800 (PST) Subject: Re: [PATCH v3 05/12] drm/bridge/synopsys: dw-hdmi: don't clobber drvdata To: Jernej Skrabec , maxime.ripard@free-electrons.com, airlied@linux.ie, robh+dt@kernel.org, mark.rutland@arm.com, wens@csie.org, architt@codeaurora.org, a.hajda@samsung.com, Laurent.pinchart@ideasonboard.com Cc: mturquette@baylibre.com, sboyd@codeaurora.org, Jose.Abreu@synopsys.com, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-sunxi@googlegroups.com, p.zabel@pengutronix.de, hjc@rock-chips.com, heiko@sntech.de References: <20180117201421.25954-1-jernej.skrabec@siol.net> <20180117201421.25954-6-jernej.skrabec@siol.net> From: Neil Armstrong Organization: Baylibre Message-ID: <91cd3ffd-e5cc-8149-2c57-6f93da55a0e4@baylibre.com> Date: Thu, 18 Jan 2018 14:04:08 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.0 MIME-Version: 1.0 In-Reply-To: <20180117201421.25954-6-jernej.skrabec@siol.net> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 17/01/2018 21:14, Jernej Skrabec wrote: > dw_hdmi shouldn't set drvdata since some drivers might need to store > it's own data there. Rework dw_hdmi in a way to return struct dw_hdmi > instead to store it in drvdata. This way drivers are responsible to > store and pass structure when needed. > > Idea was taken from the following commit: > 8242ecbd597d ("drm/bridge/synopsys: stop clobbering drvdata") > > Cc: p.zabel@pengutronix.de > Cc: narmstrong@baylibre.com > Cc: Laurent.pinchart@ideasonboard.com > Cc: hjc@rock-chips.com > Cc: heiko@sntech.de > Signed-off-by: Jernej Skrabec > --- > drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 31 ++++++++++++----------------- > drivers/gpu/drm/imx/dw_hdmi-imx.c | 13 +++++++++--- > drivers/gpu/drm/meson/meson_dw_hdmi.c | 14 +++++++++---- > drivers/gpu/drm/rcar-du/rcar_dw_hdmi.c | 12 +++++++++-- > drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 13 +++++++++--- > include/drm/bridge/dw_hdmi.h | 13 ++++++------ > 6 files changed, 60 insertions(+), 36 deletions(-) > [...] > diff --git a/drivers/gpu/drm/meson/meson_dw_hdmi.c b/drivers/gpu/drm/meson/meson_dw_hdmi.c > index e8c3ef8a94ce..d49af17310c9 100644 > --- a/drivers/gpu/drm/meson/meson_dw_hdmi.c > +++ b/drivers/gpu/drm/meson/meson_dw_hdmi.c > @@ -140,6 +140,7 @@ struct meson_dw_hdmi { > struct clk *venci_clk; > struct regulator *hdmi_supply; > u32 irq_stat; > + struct dw_hdmi *hdmi; > }; > #define encoder_to_meson_dw_hdmi(x) \ > container_of(x, struct meson_dw_hdmi, encoder) > @@ -878,9 +879,12 @@ static int meson_dw_hdmi_bind(struct device *dev, struct device *master, > dw_plat_data->input_bus_format = MEDIA_BUS_FMT_YUV8_1X24; > dw_plat_data->input_bus_encoding = V4L2_YCBCR_ENC_709; > > - ret = dw_hdmi_bind(pdev, encoder, &meson_dw_hdmi->dw_plat_data); > - if (ret) > - return ret; > + platform_set_drvdata(pdev, meson_dw_hdmi); > + > + meson_dw_hdmi->hdmi = dw_hdmi_bind(pdev, encoder, > + &meson_dw_hdmi->dw_plat_data); > + if (IS_ERR(meson_dw_hdmi->hdmi)) > + return PTR_ERR(meson_dw_hdmi->hdmi); > > DRM_DEBUG_DRIVER("HDMI controller initialized\n"); > > @@ -890,7 +894,9 @@ static int meson_dw_hdmi_bind(struct device *dev, struct device *master, > static void meson_dw_hdmi_unbind(struct device *dev, struct device *master, > void *data) > { > - dw_hdmi_unbind(dev); > + struct meson_dw_hdmi *meson_dw_hdmi = dev_get_drvdata(dev); > + > + dw_hdmi_unbind(meson_dw_hdmi->hdmi); > } > > static const struct component_ops meson_dw_hdmi_ops = { [..] > diff --git a/include/drm/bridge/dw_hdmi.h b/include/drm/bridge/dw_hdmi.h > index f3f3f0e1b2d3..dd2a8cf7d20b 100644 > --- a/include/drm/bridge/dw_hdmi.h > +++ b/include/drm/bridge/dw_hdmi.h > @@ -143,12 +143,13 @@ struct dw_hdmi_plat_data { > unsigned long mpixelclock); > }; > > -int dw_hdmi_probe(struct platform_device *pdev, > - const struct dw_hdmi_plat_data *plat_data); > -void dw_hdmi_remove(struct platform_device *pdev); > -void dw_hdmi_unbind(struct device *dev); > -int dw_hdmi_bind(struct platform_device *pdev, struct drm_encoder *encoder, > - const struct dw_hdmi_plat_data *plat_data); > +struct dw_hdmi *dw_hdmi_probe(struct platform_device *pdev, > + const struct dw_hdmi_plat_data *plat_data); > +void dw_hdmi_remove(struct dw_hdmi *hdmi); > +void dw_hdmi_unbind(struct dw_hdmi *hdmi); > +struct dw_hdmi *dw_hdmi_bind(struct platform_device *pdev, > + struct drm_encoder *encoder, > + const struct dw_hdmi_plat_data *plat_data); > > void dw_hdmi_setup_rx_sense(struct device *dev, bool hpd, bool rx_sense); > > For meson-drm and dw-hdmi bridge changes : Acked-by: Neil Armstrong