Received: by 10.223.176.5 with SMTP id f5csp350746wra; Tue, 30 Jan 2018 12:33:25 -0800 (PST) X-Google-Smtp-Source: AH8x2252M7oegG2CwhuDv04Sq4ZnK2v0Lbkn4Fus0oXdDUY+qsL4weOpDvTxwMa8I6u2x1Erp7Wc X-Received: by 10.98.47.193 with SMTP id v184mr30821307pfv.90.1517344404994; Tue, 30 Jan 2018 12:33:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1517344404; cv=none; d=google.com; s=arc-20160816; b=Urrg411mZOE7yfzX0qettxAdQDh6zTESTYAhOUgbmB62D1QmhDgm4Bksg8U9Er2dvI rbIb3Um/fB2cVzbBwTYhOyNwn89KSX8ciA4x3fRisTFv1iVefAculkqVqYJh9oyXFsi1 8bHSG0S7DJCUtByNRux7LsYju2BMlHjmB2EETloB9iYF6e26IWickyN9LpwaJQT25e6T DuSa2DqaqmxBiGCYGwlYWjenin3JhiCc4lpAoP2RA8v7Rc9Ov10Z1NHgZnDE+Ue6HrXo oXkKJwgA/oEEnB/CmBlbNAW1lqIVjbJJnWx0v2S50E9sN7bTnIWNKiIYwyNckQBgnNDi 6IRA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfert-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=hbyKC+XbbPN37btuYXBMrHi8nIZCP/nIAN9CsgrO854=; b=sUhIUbwMFHT6Jb/9QriqoCygeZmpgKWz3EPrcckvA5jBIDUUUwP98P6/sECcQYeS6h K7pALtISO9XgzwjdOkEWUVXBLqr0/xXh/6FIRStJ//pDNMd1ozNBd87fy/Xcvtttyv1c jh21ZcXCLZSEwdPenXSrWrtl8/gwlbQjPDPVqX8YWaKn5HcxtWAoUpHvXw8qXnlBHRVq HkgBOYK30j9ye3hys2GAWJXEAtpvfsgEGWxAijK+Sc3TMw8KWnsdo/thU6kpltDX6JLz K3hVmQjaPwlUnSF/7kjJ3N6gn8gFqGMNJ9FtW0eZjiN2cetnPWAyDokpAGf7Ovz0Ib+F Vx4g== 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=collabora.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e3-v6si287040plk.542.2018.01.30.12.33.10; Tue, 30 Jan 2018 12:33:24 -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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=collabora.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752992AbeA3UaC (ORCPT + 99 others); Tue, 30 Jan 2018 15:30:02 -0500 Received: from bhuna.collabora.co.uk ([46.235.227.227]:56482 "EHLO bhuna.collabora.co.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752645AbeA3UaA (ORCPT ); Tue, 30 Jan 2018 15:30:00 -0500 Received: from localhost.localdomain (unknown [IPv6:2a01:e35:8a7e:4790:1865:5d14:35de:d167]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: tescande) by bhuna.collabora.co.uk (Postfix) with ESMTPSA id 9EDB1273D9C; Tue, 30 Jan 2018 20:29:58 +0000 (GMT) From: Thierry Escande To: Archit Taneja , Inki Dae , Thierry Reding , Sandy Huang , Sean Paul , David Airlie , Tomasz Figa , Enric Balletbo i Serra Cc: Haixia Shi , =?UTF-8?q?=C3=98rjan=20Eide?= , Zain Wang , Yakir Yang , Lin Huang , Douglas Anderson , Mark Yao , linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, dri-devel@lists.freedesktop.org Subject: [PATCH v3 36/43] drm/rockchip: analogix_dp: Do not call Analogix code before bind Date: Tue, 30 Jan 2018 21:29:06 +0100 Message-Id: <20180130202913.28724-37-thierry.escande@collabora.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180130202913.28724-1-thierry.escande@collabora.com> References: <20180130202913.28724-1-thierry.escande@collabora.com> MIME-Version: 1.0 Content-Type: text/plain; charset = "utf-8" Content-Transfert-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Tomasz Figa Driver callbacks, such as system suspend or resume can be called any time, specifically they can be called before the component bind callback. Let's use dp->adp pointer as a safeguard and skip calling Analogix entry points if it is an ERR_PTR(). Signed-off-by: Tomasz Figa Signed-off-by: Thierry Escande --- drivers/gpu/drm/rockchip/analogix_dp-rockchip.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c index 23317a2269e1..6d45d62466b3 100644 --- a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c +++ b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c @@ -368,6 +368,8 @@ static void rockchip_dp_unbind(struct device *dev, struct device *master, analogix_dp_unbind(dp->adp); rockchip_drm_psr_unregister(&dp->encoder); dp->encoder.funcs->destroy(&dp->encoder); + + dp->adp = ERR_PTR(-ENODEV); } static const struct component_ops rockchip_dp_component_ops = { @@ -391,6 +393,7 @@ static int rockchip_dp_probe(struct platform_device *pdev) return -ENOMEM; dp->dev = dev; + dp->adp = ERR_PTR(-ENODEV); dp->plat_data.panel = panel; ret = rockchip_dp_of_probe(dp); @@ -414,6 +417,9 @@ static int rockchip_dp_suspend(struct device *dev) { struct rockchip_dp_device *dp = dev_get_drvdata(dev); + if (IS_ERR(dp->adp)) + return 0; + return analogix_dp_suspend(dp->adp); } @@ -421,6 +427,9 @@ static int rockchip_dp_resume(struct device *dev) { struct rockchip_dp_device *dp = dev_get_drvdata(dev); + if (IS_ERR(dp->adp)) + return 0; + return analogix_dp_resume(dp->adp); } #endif -- 2.14.1