From nobody Wed Dec 17 18:01:27 2025 Received: from mail-m15574.qiye.163.com (mail-m15574.qiye.163.com [101.71.155.74]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 96EDE227E89; Mon, 10 Mar 2025 10:47:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=101.71.155.74 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741603629; cv=none; b=ZPe13rpCq/RFvX3uDJLEwKPDGFlNI31gZmrG+tlZmozlmGj9PDXSLC3YCliNNpGIEY3Bq+qRMbJQWPMGvmMTYTlDfXeF6FiC/I4wqPAesl9qXawndSejc8ES1RH4x9Czbe+jwTBoam8wdz5KXFxeSQIXLCCxKRLNcaeFA4/mLCc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741603629; c=relaxed/simple; bh=XOx9QWf+/hIaWo0gPfHQNr0sUq00VgongRmLPH1X7J0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=bxFRg5HsEAyGp5MFrP/NRIwu8wSMUZdW0uPgNEBOVFulRkX3HONIzOd0j8wm1gzmGSxHoYxG41qMee2K4lPauQoQTnUgRUzpbR1vqlS85rELkC/lVHK8ZULCQMxDvlPIgwV4P91c/yO9FJGxquQr43F/ZgG8zLm5o2yYrusbBwU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rock-chips.com; spf=pass smtp.mailfrom=rock-chips.com; dkim=pass (1024-bit key) header.d=rock-chips.com header.i=@rock-chips.com header.b=CD0Drn0Z; arc=none smtp.client-ip=101.71.155.74 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rock-chips.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rock-chips.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=rock-chips.com header.i=@rock-chips.com header.b="CD0Drn0Z" Received: from zyb-HP-ProDesk-680-G2-MT.. (unknown [58.22.7.114]) by smtp.qiye.163.com (Hmail) with ESMTP id dc18821c; Mon, 10 Mar 2025 18:41:54 +0800 (GMT+08:00) From: Damon Ding To: heiko@sntech.de Cc: andy.yan@rock-chips.com, hjc@rock-chips.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, andrzej.hajda@intel.com, neil.armstrong@linaro.org, rfoss@kernel.org, Laurent.pinchart@ideasonboard.com, jonas@kwiboo.se, jernej.skrabec@gmail.com, dmitry.baryshkov@linaro.org, dianders@chromium.org, sebastian.reichel@collabora.com, cristian.ciocaltea@collabora.com, boris.brezillon@collabora.com, l.stach@pengutronix.de, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, Damon Ding Subject: [PATCH v8 01/13] drm/bridge: analogix_dp: Add irq flag IRQF_NO_AUTOEN instead of calling disable_irq() Date: Mon, 10 Mar 2025 18:41:02 +0800 Message-Id: <20250310104114.2608063-2-damon.ding@rock-chips.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250310104114.2608063-1-damon.ding@rock-chips.com> References: <20250310104114.2608063-1-damon.ding@rock-chips.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-HM-Spam-Status: e1kfGhgUHx5ZQUpXWQgPGg8OCBgUHx5ZQUlOS1dZFg8aDwILHllBWSg2Ly tZV1koWUFDSUNOT01LS0k3V1ktWUFJV1kPCRoVCBIfWUFZQ0JJH1ZDQx5KH0tPTE1LT0xWFRQJFh oXVRMBExYaEhckFA4PWVdZGBILWUFZTkNVSUlVTFVKSk9ZV1kWGg8SFR0UWUFZT0tIVUpLSUhCS0 NVSktLVUpCWQY+ X-HM-Tid: 0a957fa59b2003a3kunmdc18821c X-HM-MType: 1 X-HM-Sender-Digest: e1kMHhlZQR0aFwgeV1kSHx4VD1lBWUc6MhA6PCo6OTJCMiNOSj81PT1C K1YKChdVSlVKTE9KTUtISEpNTkhKVTMWGhIXVR8aFhQVVR8SFRw7CRQYEFYYExILCFUYFBZFWVdZ EgtZQVlOQ1VJSVVMVUpKT1lXWQgBWUFKTkNCNwY+ DKIM-Signature: a=rsa-sha256; b=CD0Drn0ZAsnZI1F2EtQ8+1DsVhJ5NdU/2kJ6OWoE0ztftqb828JW0L/7VV9PEJhbo98VDLbowO0FKOJFO+HHJnAmhrNPzxH8CvE5G27qtEjOItCpWjCd/Bc9/u8I6q5c+trV/weHnq2ED9XuMuJXlS6EDQFdBYC3n7K52uu8o/Y=; s=default; c=relaxed/relaxed; d=rock-chips.com; v=1; bh=wRX2UV7UIbMXXJUCACRskX22cpHmCmmZGazxoGSyC3I=; h=date:mime-version:subject:message-id:from; Content-Type: text/plain; charset="utf-8" The IRQF_NO_AUTOEN can be used for the drivers that don't want interrupts to be enabled automatically via devm_request_threaded_irq(). Using this flag can provide be more robust compared to the way of calling disable_irq() after devm_request_threaded_irq() without the IRQF_NO_AUTOEN flag. Suggested-by: Douglas Anderson Reviewed-by: Douglas Anderson Signed-off-by: Damon Ding --- drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/g= pu/drm/bridge/analogix/analogix_dp_core.c index 817070613b03..5ef6bb6010ca 100644 --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c @@ -1630,10 +1630,10 @@ analogix_dp_probe(struct device *dev, struct analog= ix_dp_plat_data *plat_data) * that we can get the current state of the GPIO. */ dp->irq =3D gpiod_to_irq(dp->hpd_gpiod); - irq_flags =3D IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING; + irq_flags =3D IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING | IRQF_NO_AUTOE= N; } else { dp->irq =3D platform_get_irq(pdev, 0); - irq_flags =3D 0; + irq_flags =3D IRQF_NO_AUTOEN; } =20 if (dp->irq =3D=3D -ENXIO) { @@ -1649,7 +1649,6 @@ analogix_dp_probe(struct device *dev, struct analogix= _dp_plat_data *plat_data) dev_err(&pdev->dev, "failed to request irq\n"); return ERR_PTR(ret); } - disable_irq(dp->irq); =20 return dp; } --=20 2.34.1 From nobody Wed Dec 17 18:01:27 2025 Received: from mail-m155100.qiye.163.com (mail-m155100.qiye.163.com [101.71.155.100]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A065B223714 for ; Mon, 10 Mar 2025 11:57:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=101.71.155.100 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741607866; cv=none; b=aZUO5FmdQSXqmQIthIJkRV9z/XbzZcLl1xbZHGmQE7NFhM35EhbJAuG0FKacoKdPOoOEkMt+TLE09fLzCUdj9GoYB9K7W7C+3930A3S80m6fN4SMX7RmCfQux7FjYDCe+sh8/jVNvkTy7v0SwLiOs/x6WAF3U3BmFJDgTdXIoqU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741607866; c=relaxed/simple; bh=AdxLrQzqBscCTKkejnwaSwj08GVPd3vDGmIIDON4d2U=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=QHveCnI6JWgB6tyuMFipvJSA2Bu7quIrwqZwjniJLIXu7juuLNIVPiqdsXQg1ek5tpd1kDZnhUQQ5+FgvOqrwKvhMcg2unn9OILK1aYJyVwDLYTU0TcGLSRpRrok7CdEhXlWwuUMKw7qP7KC1F5mBE/8MdM55Dx3bDco94bkD8Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rock-chips.com; spf=pass smtp.mailfrom=rock-chips.com; dkim=pass (1024-bit key) header.d=rock-chips.com header.i=@rock-chips.com header.b=VYOsnT6J; arc=none smtp.client-ip=101.71.155.100 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rock-chips.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rock-chips.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=rock-chips.com header.i=@rock-chips.com header.b="VYOsnT6J" Received: from zyb-HP-ProDesk-680-G2-MT.. (unknown [58.22.7.114]) by smtp.qiye.163.com (Hmail) with ESMTP id dc18823a; Mon, 10 Mar 2025 18:42:02 +0800 (GMT+08:00) From: Damon Ding To: heiko@sntech.de Cc: andy.yan@rock-chips.com, hjc@rock-chips.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, andrzej.hajda@intel.com, neil.armstrong@linaro.org, rfoss@kernel.org, Laurent.pinchart@ideasonboard.com, jonas@kwiboo.se, jernej.skrabec@gmail.com, dmitry.baryshkov@linaro.org, dianders@chromium.org, sebastian.reichel@collabora.com, cristian.ciocaltea@collabora.com, boris.brezillon@collabora.com, l.stach@pengutronix.de, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, Damon Ding Subject: [PATCH v8 02/13] drm/bridge: analogix_dp: Remove CONFIG_PM related check in analogix_dp_bind()/analogix_dp_unbind() Date: Mon, 10 Mar 2025 18:41:03 +0800 Message-Id: <20250310104114.2608063-3-damon.ding@rock-chips.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250310104114.2608063-1-damon.ding@rock-chips.com> References: <20250310104114.2608063-1-damon.ding@rock-chips.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-HM-Spam-Status: e1kfGhgUHx5ZQUpXWQgPGg8OCBgUHx5ZQUlOS1dZFg8aDwILHllBWSg2Ly tZV1koWUFDSUNOT01LS0k3V1ktWUFJV1kPCRoVCBIfWUFZQkxCGVZLHk9JSEhLHUIfGB1WFRQJFh oXVRMBExYaEhckFA4PWVdZGBILWUFZTkNVSUlVTFVKSk9ZV1kWGg8SFR0UWUFZT0tIVUpLSUhCS0 NVSktLVUpCWQY+ X-HM-Tid: 0a957fa5b8dd03a3kunmdc18823a X-HM-MType: 1 X-HM-Sender-Digest: e1kMHhlZQR0aFwgeV1kSHx4VD1lBWUc6P1E6PDo4MTJCSSMoSjgcPSIM FxUwCQ9VSlVKTE9KTUtISElPSkNNVTMWGhIXVR8aFhQVVR8SFRw7CRQYEFYYExILCFUYFBZFWVdZ EgtZQVlOQ1VJSVVMVUpKT1lXWQgBWUFJTk5LNwY+ DKIM-Signature: a=rsa-sha256; b=VYOsnT6Ja2VKhSsLUWSlwRHMvNr6gwrBySdASLWoptmXt83W/2Oi24QMcWPbNhKtbRpI0pnxZ78oy1LLjaH1OdMgR7V06hSdZizAkhMxL7oYOWUcNthjbpg6hoCV25L/SarEaAGBCb2Zfz8fnwpj9Yl6VS20pAmf+lIc9TKV/cU=; s=default; c=relaxed/relaxed; d=rock-chips.com; v=1; bh=9OCG75VloqK6xG08wglt4g4zZcLDORHRr9mvaU8aN+c=; h=date:mime-version:subject:message-id:from; Content-Type: text/plain; charset="utf-8" Remove the check related to CONFIG_PM in order to make the code more concise, as the CONFIG_PM should be a required option for many drivers. In addition, it is preferable to use devm_pm_runtime_enable() instead of manually invoking pm_runtime_enable() followed by pm_runtime_disable(). Suggested-by: Douglas Anderson Reviewed-by: Douglas Anderson Signed-off-by: Damon Ding --- .../drm/bridge/analogix/analogix_dp_core.c | 30 ++++--------------- 1 file changed, 6 insertions(+), 24 deletions(-) diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/g= pu/drm/bridge/analogix/analogix_dp_core.c index 5ef6bb6010ca..132f8513f93f 100644 --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c @@ -1695,15 +1695,11 @@ int analogix_dp_bind(struct analogix_dp_device *dp,= struct drm_device *drm_dev) dp->drm_dev =3D drm_dev; dp->encoder =3D dp->plat_data->encoder; =20 - if (IS_ENABLED(CONFIG_PM)) { - pm_runtime_use_autosuspend(dp->dev); - pm_runtime_set_autosuspend_delay(dp->dev, 100); - pm_runtime_enable(dp->dev); - } else { - ret =3D analogix_dp_resume(dp); - if (ret) - return ret; - } + pm_runtime_use_autosuspend(dp->dev); + pm_runtime_set_autosuspend_delay(dp->dev, 100); + ret =3D devm_pm_runtime_enable(dp->dev); + if (ret) + return ret; =20 dp->aux.name =3D "DP-AUX"; dp->aux.transfer =3D analogix_dpaux_transfer; @@ -1713,7 +1709,7 @@ int analogix_dp_bind(struct analogix_dp_device *dp, s= truct drm_device *drm_dev) ret =3D drm_dp_aux_register(&dp->aux); if (ret) { DRM_ERROR("failed to register AUX (%d)\n", ret); - goto err_disable_pm_runtime; + return ret; } =20 ret =3D analogix_dp_create_bridge(drm_dev, dp); @@ -1726,13 +1722,6 @@ int analogix_dp_bind(struct analogix_dp_device *dp, = struct drm_device *drm_dev) =20 err_unregister_aux: drm_dp_aux_unregister(&dp->aux); -err_disable_pm_runtime: - if (IS_ENABLED(CONFIG_PM)) { - pm_runtime_dont_use_autosuspend(dp->dev); - pm_runtime_disable(dp->dev); - } else { - analogix_dp_suspend(dp); - } =20 return ret; } @@ -1749,13 +1738,6 @@ void analogix_dp_unbind(struct analogix_dp_device *d= p) } =20 drm_dp_aux_unregister(&dp->aux); - - if (IS_ENABLED(CONFIG_PM)) { - pm_runtime_dont_use_autosuspend(dp->dev); - pm_runtime_disable(dp->dev); - } else { - analogix_dp_suspend(dp); - } } EXPORT_SYMBOL_GPL(analogix_dp_unbind); =20 --=20 2.34.1 From nobody Wed Dec 17 18:01:27 2025 Received: from mail-m155110.qiye.163.com (mail-m155110.qiye.163.com [101.71.155.110]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7E016221579 for ; Mon, 10 Mar 2025 11:57:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=101.71.155.110 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741607868; cv=none; b=GXHlsnqn0oO3IEjj7Cyqi1Q8X1SL+cj0jOCMTfaSN9eaRatZYbN23QDgeT18fzFV1gdvzwtHtS8v3TCX7qjHbyG393XdZPxhTeC7lmtY/KbyrrLzLBNaN0YwUE93L540apt0rwW0VJBE95VvFddRv2/JrxU5O+fNbnqfqT4db3M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741607868; c=relaxed/simple; bh=VK8F2EYMBh7/T1gibbfRXjnJb0kroHA9n8Q+J3Qtmtc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=HXA7TRIOSZdBUSbrRzMJflBsAItPvlfyRSK6UWdTRnX/Y4SOBa68/zNW86ahd+oRlGyDtTQn9aBaigKU16bO8I2fH5/4yLI3KAQmySbFmiMUei6xeHTjX0CI02X5Pg6ju8YCegcrGD7U3xKw7Su4iVlejRXMRGXY7YuzPT+tUpE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rock-chips.com; spf=pass smtp.mailfrom=rock-chips.com; dkim=pass (1024-bit key) header.d=rock-chips.com header.i=@rock-chips.com header.b=ivs0dG58; arc=none smtp.client-ip=101.71.155.110 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rock-chips.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rock-chips.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=rock-chips.com header.i=@rock-chips.com header.b="ivs0dG58" Received: from zyb-HP-ProDesk-680-G2-MT.. (unknown [58.22.7.114]) by smtp.qiye.163.com (Hmail) with ESMTP id dc18824d; Mon, 10 Mar 2025 18:42:05 +0800 (GMT+08:00) From: Damon Ding To: heiko@sntech.de Cc: andy.yan@rock-chips.com, hjc@rock-chips.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, andrzej.hajda@intel.com, neil.armstrong@linaro.org, rfoss@kernel.org, Laurent.pinchart@ideasonboard.com, jonas@kwiboo.se, jernej.skrabec@gmail.com, dmitry.baryshkov@linaro.org, dianders@chromium.org, sebastian.reichel@collabora.com, cristian.ciocaltea@collabora.com, boris.brezillon@collabora.com, l.stach@pengutronix.de, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, Damon Ding Subject: [PATCH v8 03/13] drm/bridge: analogix_dp: Add support for phy configuration. Date: Mon, 10 Mar 2025 18:41:04 +0800 Message-Id: <20250310104114.2608063-4-damon.ding@rock-chips.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250310104114.2608063-1-damon.ding@rock-chips.com> References: <20250310104114.2608063-1-damon.ding@rock-chips.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-HM-Spam-Status: e1kfGhgUHx5ZQUpXWQgPGg8OCBgUHx5ZQUlOS1dZFg8aDwILHllBWSg2Ly tZV1koWUFDSUNOT01LS0k3V1ktWUFJV1kPCRoVCBIfWUFZQkhJT1ZOQxpJGkxMS09ITEpWFRQJFh oXVRMBExYaEhckFA4PWVdZGBILWUFZTkNVSUlVTFVKSk9ZV1kWGg8SFR0UWUFZT0tIVUpLSUhCS0 NVSktLVUpCWQY+ X-HM-Tid: 0a957fa5c76d03a3kunmdc18824d X-HM-MType: 1 X-HM-Sender-Digest: e1kMHhlZQR0aFwgeV1kSHx4VD1lBWUc6Nhg6Nzo4ETJOTSMCFTg3PRkL HAgaCStVSlVKTE9KTUtISElMQ0lNVTMWGhIXVR8aFhQVVR8SFRw7CRQYEFYYExILCFUYFBZFWVdZ EgtZQVlOQ1VJSVVMVUpKT1lXWQgBWUFPQ0lJNwY+ DKIM-Signature: a=rsa-sha256; b=ivs0dG58vpZiig22THB9poGiIjFmNLYA18AeWERuuN9+XlD87+4F1ClSYUi3iNsjhcXmZN3HHaR9oKuctDzWSzAbXAoM+Qdin9/NWYo66WclEll0uNA+2jc5f4A6qrEmsb6+N7kAP0v8a+h39dZKcp6tfqvWMcvN5fqaTDmW4Cc=; s=default; c=relaxed/relaxed; d=rock-chips.com; v=1; bh=3n/kcww+h6WAKm2K/06MkJC8hDnbaiui4+vRIqMhQwg=; h=date:mime-version:subject:message-id:from; Content-Type: text/plain; charset="utf-8" Add support to configurate link rate, lane count, voltage swing and pre-emphasis with phy_configure(). It is helpful in application scenarios where analogix controller is mixed with the phy of other vendors. Reviewed-by: Dmitry Baryshkov Signed-off-by: Damon Ding --- Changes in v2: - remove needless assignments for phy_configure() - remove unnecessary changes for phy_power_on()/phy_power_off() Changes in v4: - remove unnecessary &phy_configure_opts_dp.lanes assignments in analogix_dp_set_link_bandwidth() - remove needless &phy_configure_opts_dp.lanes and &phy_configure_opts_dp.link_rate assignments in analogix_dp_set_lane_link_training() Changes in v5: - include for dev_err() - use drm_err() instead of dev_err() Changes in v6: - Pass 'dp' in drm_...() rather than 'dp->drm_dev' Changes in v7: - For the new error logs, use dev_err() as with the other error logs --- .../drm/bridge/analogix/analogix_dp_core.c | 1 + .../gpu/drm/bridge/analogix/analogix_dp_reg.c | 52 +++++++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/g= pu/drm/bridge/analogix/analogix_dp_core.c index 132f8513f93f..d5bbc8843a56 100644 --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c @@ -1680,6 +1680,7 @@ int analogix_dp_resume(struct analogix_dp_device *dp) if (dp->plat_data->power_on) dp->plat_data->power_on(dp->plat_data); =20 + phy_set_mode(dp->phy, PHY_MODE_DP); phy_power_on(dp->phy); =20 analogix_dp_init_dp(dp); diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c b/drivers/gp= u/drm/bridge/analogix/analogix_dp_reg.c index 3afc73c858c4..38fd8d5014d2 100644 --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c @@ -11,6 +11,7 @@ #include #include #include +#include =20 #include =20 @@ -513,10 +514,24 @@ void analogix_dp_enable_sw_function(struct analogix_d= p_device *dp) void analogix_dp_set_link_bandwidth(struct analogix_dp_device *dp, u32 bwt= ype) { u32 reg; + int ret; =20 reg =3D bwtype; if ((bwtype =3D=3D DP_LINK_BW_2_7) || (bwtype =3D=3D DP_LINK_BW_1_62)) writel(reg, dp->reg_base + ANALOGIX_DP_LINK_BW_SET); + + if (dp->phy) { + union phy_configure_opts phy_cfg =3D {0}; + + phy_cfg.dp.link_rate =3D + drm_dp_bw_code_to_link_rate(dp->link_train.link_rate) / 100; + phy_cfg.dp.set_rate =3D true; + ret =3D phy_configure(dp->phy, &phy_cfg); + if (ret && ret !=3D -EOPNOTSUPP) { + dev_err(dp->dev, "%s: phy_configure() failed: %d\n", __func__, ret); + return; + } + } } =20 void analogix_dp_get_link_bandwidth(struct analogix_dp_device *dp, u32 *bw= type) @@ -530,9 +545,22 @@ void analogix_dp_get_link_bandwidth(struct analogix_dp= _device *dp, u32 *bwtype) void analogix_dp_set_lane_count(struct analogix_dp_device *dp, u32 count) { u32 reg; + int ret; =20 reg =3D count; writel(reg, dp->reg_base + ANALOGIX_DP_LANE_COUNT_SET); + + if (dp->phy) { + union phy_configure_opts phy_cfg =3D {0}; + + phy_cfg.dp.lanes =3D dp->link_train.lane_count; + phy_cfg.dp.set_lanes =3D true; + ret =3D phy_configure(dp->phy, &phy_cfg); + if (ret && ret !=3D -EOPNOTSUPP) { + dev_err(dp->dev, "%s: phy_configure() failed: %d\n", __func__, ret); + return; + } + } } =20 void analogix_dp_get_lane_count(struct analogix_dp_device *dp, u32 *count) @@ -546,10 +574,34 @@ void analogix_dp_get_lane_count(struct analogix_dp_de= vice *dp, u32 *count) void analogix_dp_set_lane_link_training(struct analogix_dp_device *dp) { u8 lane; + int ret; =20 for (lane =3D 0; lane < dp->link_train.lane_count; lane++) writel(dp->link_train.training_lane[lane], dp->reg_base + ANALOGIX_DP_LN0_LINK_TRAINING_CTL + 4 * lane); + + if (dp->phy) { + union phy_configure_opts phy_cfg =3D {0}; + + for (lane =3D 0; lane < dp->link_train.lane_count; lane++) { + u8 training_lane =3D dp->link_train.training_lane[lane]; + u8 vs, pe; + + vs =3D (training_lane & DP_TRAIN_VOLTAGE_SWING_MASK) >> + DP_TRAIN_VOLTAGE_SWING_SHIFT; + pe =3D (training_lane & DP_TRAIN_PRE_EMPHASIS_MASK) >> + DP_TRAIN_PRE_EMPHASIS_SHIFT; + phy_cfg.dp.voltage[lane] =3D vs; + phy_cfg.dp.pre[lane] =3D pe; + } + + phy_cfg.dp.set_voltages =3D true; + ret =3D phy_configure(dp->phy, &phy_cfg); + if (ret && ret !=3D -EOPNOTSUPP) { + dev_err(dp->dev, "%s: phy_configure() failed: %d\n", __func__, ret); + return; + } + } } =20 u32 analogix_dp_get_lane_link_training(struct analogix_dp_device *dp, u8 l= ane) --=20 2.34.1 From nobody Wed Dec 17 18:01:27 2025 Received: from mail-m3287.qiye.163.com (mail-m3287.qiye.163.com [220.197.32.87]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3237E22EE4 for ; Mon, 10 Mar 2025 11:17:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=220.197.32.87 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741605467; cv=none; b=P8+/n6v0AQmoRBnA2V42AM2Nro9f9MmuoNqt8R1SS+8OlG0BXlx/se/GNeucXm/lGks0/IGGbl1xmV9ydYS/hFWSnnKaUg6Gmx/FlivvgMlWnSZ3HQZMRlB2eU0g6Whmt3Y4WKlCQBS8O0WlywET0kB5AEJPjTkO1FBYXgbeIuM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741605467; c=relaxed/simple; bh=C56MrLlhWcU08ZYkafZUUuJbyZi0cMLonjZabttx9/Y=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=uDw4thhwDX4MFjmjRD1VIm4vDcGxgMHwqzNWUXSAVZeFjETSW8qMDBZ/GP/M3q/+oWqLzpxZaIKxhdeYvKLLerDjbZH4quAWSL0uh/Z7k6ozVJMnpBby+ULC5B2Kz1q5lhhfYdY6pgGlXKiaiiaLZoj7F5Ile97MWUKdLp21UyQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rock-chips.com; spf=pass smtp.mailfrom=rock-chips.com; dkim=pass (1024-bit key) header.d=rock-chips.com header.i=@rock-chips.com header.b=V0t69bDt; arc=none smtp.client-ip=220.197.32.87 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rock-chips.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rock-chips.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=rock-chips.com header.i=@rock-chips.com header.b="V0t69bDt" Received: from zyb-HP-ProDesk-680-G2-MT.. (unknown [58.22.7.114]) by smtp.qiye.163.com (Hmail) with ESMTP id dc18825e; Mon, 10 Mar 2025 18:42:08 +0800 (GMT+08:00) From: Damon Ding To: heiko@sntech.de Cc: andy.yan@rock-chips.com, hjc@rock-chips.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, andrzej.hajda@intel.com, neil.armstrong@linaro.org, rfoss@kernel.org, Laurent.pinchart@ideasonboard.com, jonas@kwiboo.se, jernej.skrabec@gmail.com, dmitry.baryshkov@linaro.org, dianders@chromium.org, sebastian.reichel@collabora.com, cristian.ciocaltea@collabora.com, boris.brezillon@collabora.com, l.stach@pengutronix.de, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, Damon Ding , Krzysztof Kozlowski Subject: [PATCH v8 04/13] dt-bindings: display: rockchip: analogix-dp: Add support to get panel from the DP AUX bus Date: Mon, 10 Mar 2025 18:41:05 +0800 Message-Id: <20250310104114.2608063-5-damon.ding@rock-chips.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250310104114.2608063-1-damon.ding@rock-chips.com> References: <20250310104114.2608063-1-damon.ding@rock-chips.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-HM-Spam-Status: e1kfGhgUHx5ZQUpXWQgPGg8OCBgUHx5ZQUlOS1dZFg8aDwILHllBWSg2Ly tZV1koWUFDSUNOT01LS0k3V1ktWUFJV1kPCRoVCBIfWUFZQ0sZTFZJT0kfHR8YSUpITEtWFRQJFh oXVRMBExYaEhckFA4PWVdZGBILWUFZTkNVSUlVTFVKSk9ZV1kWGg8SFR0UWUFZT0tIVUpLSUhCS0 NVSktLVUpCWQY+ X-HM-Tid: 0a957fa5d22703a3kunmdc18825e X-HM-MType: 1 X-HM-Sender-Digest: e1kMHhlZQR0aFwgeV1kSHx4VD1lBWUc6Pgw6Hio*IzIBTSMIIzo3PS0t TBoaCw9VSlVKTE9KTUtISEhLTEpDVTMWGhIXVR8aFhQVVR8SFRw7CRQYEFYYExILCFUYFBZFWVdZ EgtZQVlOQ1VJSVVMVUpKT1lXWQgBWUFKSkpINwY+ DKIM-Signature: a=rsa-sha256; b=V0t69bDtUofCXFl9NUeSycvv3bm4JooxgM8eTr8UERMsGAd2BsT2W1H3fjCr1zowcQwGLwEL64vJtwNGyxLJQ8gi4N/bhYvnq3ofM0vqPnEeq51NyZrZQnrjlhZWj2JkfLkCD7JTKxCxQqNi2PFIvfD/6zT7EccqJKKoPJFudQk=; s=default; c=relaxed/relaxed; d=rock-chips.com; v=1; bh=MCo0uAKS6QHvo55swHDZpLkV/TNxwwhILy3rryJVjxs=; h=date:mime-version:subject:message-id:from; Content-Type: text/plain; charset="utf-8" According to Documentation/devicetree/bindings/display/dp-aux-bus.yaml, it is a good way to get panel through the DP AUX bus. Acked-by: Krzysztof Kozlowski Signed-off-by: Damon Ding --- Changes in v4: - Move the dt-bindings commit before related driver commits Changes in v5: - Remove the unexpected change logs in commit message --- .../bindings/display/rockchip/rockchip,analogix-dp.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Documentation/devicetree/bindings/display/rockchip/rockchip,an= alogix-dp.yaml b/Documentation/devicetree/bindings/display/rockchip/rockchi= p,analogix-dp.yaml index 60dedf9b2be7..eaf4e67e232e 100644 --- a/Documentation/devicetree/bindings/display/rockchip/rockchip,analogix-= dp.yaml +++ b/Documentation/devicetree/bindings/display/rockchip/rockchip,analogix-= dp.yaml @@ -41,6 +41,9 @@ properties: description: This SoC makes use of GRF regs. =20 + aux-bus: + $ref: /schemas/display/dp-aux-bus.yaml# + required: - compatible - clocks --=20 2.34.1 From nobody Wed Dec 17 18:01:27 2025 Received: from mail-m49225.qiye.163.com (mail-m49225.qiye.163.com [45.254.49.225]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 90470227BAA for ; Mon, 10 Mar 2025 10:57:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=45.254.49.225 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741604252; cv=none; b=hLQ78IFvhxRILf/0NB/9qeEJZ41VSPrHrSf5aaeKv1kQGqdlnJJCYVQyoNU+GrzWISaJZHZVpsN9QTMG29nldhA3vomAtTYSodi/8vJusStjuGLSHvJGWBkTAHY5LBPotTEDi22f9K76uqV08hnci0uqf4lSKngMOBWiahV/ryU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741604252; c=relaxed/simple; bh=aD06Fbbe9EMC6Hx8Zi16tcAO/wSri7Ge/ZU2T6oRbwk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=m7HmuU0ioNxqBrrEA3FnctxYJnYoOpuck46BijxVsw6QCsVaEkrzjsDbPqNbv4sF9/24U9+2I9SM+yCp6d8fZBrTzaoeP3J90dcpwXqTQ8xxPB5kdRMQrMrA+7fx/AsaxGnkjC3LhcWEnC6eRLceD6fjA9piexHYplmuha4oLwE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rock-chips.com; spf=pass smtp.mailfrom=rock-chips.com; dkim=pass (1024-bit key) header.d=rock-chips.com header.i=@rock-chips.com header.b=cx/5/rIf; arc=none smtp.client-ip=45.254.49.225 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rock-chips.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rock-chips.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=rock-chips.com header.i=@rock-chips.com header.b="cx/5/rIf" Received: from zyb-HP-ProDesk-680-G2-MT.. (unknown [58.22.7.114]) by smtp.qiye.163.com (Hmail) with ESMTP id dc18826a; Mon, 10 Mar 2025 18:42:10 +0800 (GMT+08:00) From: Damon Ding To: heiko@sntech.de Cc: andy.yan@rock-chips.com, hjc@rock-chips.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, andrzej.hajda@intel.com, neil.armstrong@linaro.org, rfoss@kernel.org, Laurent.pinchart@ideasonboard.com, jonas@kwiboo.se, jernej.skrabec@gmail.com, dmitry.baryshkov@linaro.org, dianders@chromium.org, sebastian.reichel@collabora.com, cristian.ciocaltea@collabora.com, boris.brezillon@collabora.com, l.stach@pengutronix.de, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, Damon Ding Subject: [PATCH v8 05/13] drm/bridge: analogix_dp: Support to get &analogix_dp_device.plat_data and &analogix_dp_device.aux Date: Mon, 10 Mar 2025 18:41:06 +0800 Message-Id: <20250310104114.2608063-6-damon.ding@rock-chips.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250310104114.2608063-1-damon.ding@rock-chips.com> References: <20250310104114.2608063-1-damon.ding@rock-chips.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-HM-Spam-Status: e1kfGhgUHx5ZQUpXWQgPGg8OCBgUHx5ZQUlOS1dZFg8aDwILHllBWSg2Ly tZV1koWUFDSUNOT01LS0k3V1ktWUFJV1kPCRoVCBIfWUFZQ0pDH1YeGhpOS0xOSh5MHkNWFRQJFh oXVRMBExYaEhckFA4PWVdZGBILWUFZTkNVSUlVTFVKSk9ZV1kWGg8SFR0UWUFZT0tIVUpLSUhCS0 NVSktLVUpCWQY+ X-HM-Tid: 0a957fa5db1303a3kunmdc18826a X-HM-MType: 1 X-HM-Sender-Digest: e1kMHhlZQR0aFwgeV1kSHx4VD1lBWUc6NzY6IQw4NzJOSSMRMzkSPShL UTZPFAlVSlVKTE9KTUtISEhJQk1IVTMWGhIXVR8aFhQVVR8SFRw7CRQYEFYYExILCFUYFBZFWVdZ EgtZQVlOQ1VJSVVMVUpKT1lXWQgBWUFJSEhJNwY+ DKIM-Signature: a=rsa-sha256; b=cx/5/rIf8YViD47f5CCZTK5rwAEg9fCuUgxCgxRPiT7Re0DJYrb/E7fOSXVCOlOQDscOtEkimyXIdtNJkLW4XWn5L20Vm/4aJHuVN4nYvlxLZdV8knI+f+NZGIF8DeW3tzt4fiDPpzS2yEeO0Iu4rqu7in+mxVX7uzElLw0WAzQ=; s=default; c=relaxed/relaxed; d=rock-chips.com; v=1; bh=WiJhY8PG8AgEQhlaFruZbMXxvourhl/iCjB/6RJP8bw=; h=date:mime-version:subject:message-id:from; Content-Type: text/plain; charset="utf-8" Add two new functions: one to find &analogix_dp_device.plat_data via &drm_dp_aux, and the other to get &analogix_dp_device.aux. Both of them serve for the function of getting panel from DP AUX bus, which is why they are included in a single commit. Reviewed-by: Dmitry Baryshkov Signed-off-by: Damon Ding --- Changes in v7: - Use the forward-declare struct drm_dp_aux instead of including the relevant header file. --- drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 14 ++++++++++++++ include/drm/bridge/analogix_dp.h | 4 ++++ 2 files changed, 18 insertions(+) diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/g= pu/drm/bridge/analogix/analogix_dp_core.c index d5bbc8843a56..dd91760c4b1c 100644 --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c @@ -1764,6 +1764,20 @@ int analogix_dp_stop_crc(struct drm_connector *conne= ctor) } EXPORT_SYMBOL_GPL(analogix_dp_stop_crc); =20 +struct analogix_dp_plat_data *analogix_dp_aux_to_plat_data(struct drm_dp_a= ux *aux) +{ + struct analogix_dp_device *dp =3D to_dp(aux); + + return dp->plat_data; +} +EXPORT_SYMBOL_GPL(analogix_dp_aux_to_plat_data); + +struct drm_dp_aux *analogix_dp_get_aux(struct analogix_dp_device *dp) +{ + return &dp->aux; +} +EXPORT_SYMBOL_GPL(analogix_dp_get_aux); + MODULE_AUTHOR("Jingoo Han "); MODULE_DESCRIPTION("Analogix DP Core Driver"); MODULE_LICENSE("GPL v2"); diff --git a/include/drm/bridge/analogix_dp.h b/include/drm/bridge/analogix= _dp.h index 6002c5666031..e19b0bbc57d6 100644 --- a/include/drm/bridge/analogix_dp.h +++ b/include/drm/bridge/analogix_dp.h @@ -10,6 +10,7 @@ #include =20 struct analogix_dp_device; +struct drm_dp_aux; =20 enum analogix_dp_devtype { EXYNOS_DP, @@ -48,4 +49,7 @@ void analogix_dp_unbind(struct analogix_dp_device *dp); int analogix_dp_start_crc(struct drm_connector *connector); int analogix_dp_stop_crc(struct drm_connector *connector); =20 +struct analogix_dp_plat_data *analogix_dp_aux_to_plat_data(struct drm_dp_a= ux *aux); +struct drm_dp_aux *analogix_dp_get_aux(struct analogix_dp_device *dp); + #endif /* _ANALOGIX_DP_H_ */ --=20 2.34.1 From nobody Wed Dec 17 18:01:27 2025 Received: from mail-m49231.qiye.163.com (mail-m49231.qiye.163.com [45.254.49.231]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A664122A4FB; Mon, 10 Mar 2025 10:47:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=45.254.49.231 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741603648; cv=none; b=LV7kivedRBoro6ASSIN9V6DJUOE5Ord6GJuGMgE2Q1bW9GsjAec0U9xbb8Pn2djE4avbLO521mGLJFxxECmtQae/+S9tNEyQuGazZ1cA+IvxlXOO4Rd82KO7pFdqvMUATxC/ahn7U3JcR/SOFKZGtU6fY1JuPDLlDFe9C6QLluo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741603648; c=relaxed/simple; bh=BSpB9zsF3EpNXZc+dbwg181g4nLCQwLhSCE1P5bu3ro=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=k91oqFib0Y7PqkoZfX6bO6zskJecDMUbOMnYxLuvDVdXAjPy9eSf6Rct6YVoOY/6snmWN3IAhHbXx0dEuyXBKxSEK5n2bGGcpDwrdXrb7w+xr9Eq/z9Xt4OlWORPeYi8Gmp7QHoJ0A+s5OA5o6bfmuE6kptxjkOn61nsX5tHTjA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rock-chips.com; spf=pass smtp.mailfrom=rock-chips.com; dkim=pass (1024-bit key) header.d=rock-chips.com header.i=@rock-chips.com header.b=SyqnXcx5; arc=none smtp.client-ip=45.254.49.231 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rock-chips.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rock-chips.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=rock-chips.com header.i=@rock-chips.com header.b="SyqnXcx5" Received: from zyb-HP-ProDesk-680-G2-MT.. (unknown [58.22.7.114]) by smtp.qiye.163.com (Hmail) with ESMTP id dc188276; Mon, 10 Mar 2025 18:42:13 +0800 (GMT+08:00) From: Damon Ding To: heiko@sntech.de Cc: andy.yan@rock-chips.com, hjc@rock-chips.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, andrzej.hajda@intel.com, neil.armstrong@linaro.org, rfoss@kernel.org, Laurent.pinchart@ideasonboard.com, jonas@kwiboo.se, jernej.skrabec@gmail.com, dmitry.baryshkov@linaro.org, dianders@chromium.org, sebastian.reichel@collabora.com, cristian.ciocaltea@collabora.com, boris.brezillon@collabora.com, l.stach@pengutronix.de, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, Damon Ding Subject: [PATCH v8 06/13] drm/bridge: analogix_dp: Add support to get panel from the DP AUX bus Date: Mon, 10 Mar 2025 18:41:07 +0800 Message-Id: <20250310104114.2608063-7-damon.ding@rock-chips.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250310104114.2608063-1-damon.ding@rock-chips.com> References: <20250310104114.2608063-1-damon.ding@rock-chips.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-HM-Spam-Status: e1kfGhgUHx5ZQUpXWQgPGg8OCBgUHx5ZQUlOS1dZFg8aDwILHllBWSg2Ly tZV1koWUFDSUNOT01LS0k3V1ktWUFJV1kPCRoVCBIfWUFZGRlPS1ZCSkwaSxlDGUpOHklWFRQJFh oXVRMBExYaEhckFA4PWVdZGBILWUFZTkNVSUlVTFVKSk9ZV1kWGg8SFR0UWUFZT0tIVUpLSUhCS0 NVSktLVUpCWQY+ X-HM-Tid: 0a957fa5e3da03a3kunmdc188276 X-HM-MType: 1 X-HM-Sender-Digest: e1kMHhlZQR0aFwgeV1kSHx4VD1lBWUc6NCI6Iio4FTJMHCMXMzoTPR4d Lx9PFBpVSlVKTE9KTUtISEhOSU5LVTMWGhIXVR8aFhQVVR8SFRw7CRQYEFYYExILCFUYFBZFWVdZ EgtZQVlOQ1VJSVVMVUpKT1lXWQgBWUFJTUtINwY+ DKIM-Signature: a=rsa-sha256; b=SyqnXcx5LoHD5wKranbdzL/uLV4monKu3+GvLzJszfSpIYP8gXm3AXFJ7eOES6jgCcw40ZuT5P1eNmUj3SMa2nXeTCXhMYmk6lnWiTYPayjSeQCwvk8bcgzcyWSwQnHrkIrr6UVA35XwFRvZIOvWzYyT4aZadNSy9Z9SyXtjpqQ=; s=default; c=relaxed/relaxed; d=rock-chips.com; v=1; bh=PrzE4PXYA+y/tPMc43/nU1rxnuyoWCfIKQHOq/5i0Cs=; h=date:mime-version:subject:message-id:from; Content-Type: text/plain; charset="utf-8" The main modification is moving the DP AUX initialization from function analogix_dp_bind() to analogix_dp_probe(). In order to get the EDID of eDP panel during probing, it is also needed to advance PM operations to ensure that eDP controller and phy are prepared for AUX transmission. Signed-off-by: Damon Ding Reviewed-by: Dmitry Baryshkov Reviewed-by: Douglas Anderson --- Changes in v4: - Use done_probing() to call drm_of_find_panel_or_bridge() and component_add() when getting panel from the DP AUX bus Changes in v5: - Advance PM operations to make eDP AUX work well Changes in v6: - Use devm_pm_runtime_enable() instead of devm_add_action_or_reset() - Add a new function analogix_dp_remove() to ensure symmetry for PM operations Changes in v7: - Fix the misspelling of word 'operations' in commit message - Remove the check related to CONFIG_PM - Remove the unnecessary call to pm_runtime_dont_use_autosuspend() if devm_pm_runtime_enable() fails - Remove unnecessary function analogix_dp_remove() - Add new function analogix_dpaux_wait_hpd_asserted() Changes in v8: - Move the addition of the analogix_dpaux_wait_hpd_asserted() to the other patch --- .../drm/bridge/analogix/analogix_dp_core.c | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/g= pu/drm/bridge/analogix/analogix_dp_core.c index dd91760c4b1c..2b76a9cf3bcb 100644 --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c @@ -1650,6 +1650,17 @@ analogix_dp_probe(struct device *dev, struct analogi= x_dp_plat_data *plat_data) return ERR_PTR(ret); } =20 + dp->aux.name =3D "DP-AUX"; + dp->aux.transfer =3D analogix_dpaux_transfer; + dp->aux.dev =3D dp->dev; + drm_dp_aux_init(&dp->aux); + + pm_runtime_use_autosuspend(dp->dev); + pm_runtime_set_autosuspend_delay(dp->dev, 100); + ret =3D devm_pm_runtime_enable(dp->dev); + if (ret) + return ERR_PTR(ret); + return dp; } EXPORT_SYMBOL_GPL(analogix_dp_probe); @@ -1696,15 +1707,6 @@ int analogix_dp_bind(struct analogix_dp_device *dp, = struct drm_device *drm_dev) dp->drm_dev =3D drm_dev; dp->encoder =3D dp->plat_data->encoder; =20 - pm_runtime_use_autosuspend(dp->dev); - pm_runtime_set_autosuspend_delay(dp->dev, 100); - ret =3D devm_pm_runtime_enable(dp->dev); - if (ret) - return ret; - - dp->aux.name =3D "DP-AUX"; - dp->aux.transfer =3D analogix_dpaux_transfer; - dp->aux.dev =3D dp->dev; dp->aux.drm_dev =3D drm_dev; =20 ret =3D drm_dp_aux_register(&dp->aux); --=20 2.34.1 From nobody Wed Dec 17 18:01:27 2025 Received: from mail-m49209.qiye.163.com (mail-m49209.qiye.163.com [45.254.49.209]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7A5C2225403 for ; Mon, 10 Mar 2025 11:57:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=45.254.49.209 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741607869; cv=none; b=FKTQF+6rjWklzAtP1J9NuVAOHvClz4QSo+CkVVHA7gwZsAto49qQF4163iFkBuZLD4ABD4GXV/YI+Kcvc1cTGLCJfut1KAv1YYXPAnZk/MlrXcb8YhuEmP0PN6YgknNVtHDKtuXvuT2P2OshRvwS9MOyzf718N2xORyOqXiWf0A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741607869; c=relaxed/simple; bh=TYe3xrGfI+KEZAuyZkB1/CZgZPIVN3GYQKn1jtaT7jc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=KQtjAKL9vXSccTufM94TT0bmzOQmnIhqga2RgJGVVuEzcAYbxksnHEVwUuOMDGbvFB2pJdeDZqGHOiMLIaOoAGqOw3gR31m1Y87kPRi8JnKFy6iFCNZhAUrlPaj3ty1A3Q1+whSLerMAn3ARKDwlB+pkj2fxix/wdAqQyuJGeS0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rock-chips.com; spf=pass smtp.mailfrom=rock-chips.com; dkim=pass (1024-bit key) header.d=rock-chips.com header.i=@rock-chips.com header.b=Mt07XzW9; arc=none smtp.client-ip=45.254.49.209 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rock-chips.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rock-chips.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=rock-chips.com header.i=@rock-chips.com header.b="Mt07XzW9" Received: from zyb-HP-ProDesk-680-G2-MT.. (unknown [58.22.7.114]) by smtp.qiye.163.com (Hmail) with ESMTP id dc188280; Mon, 10 Mar 2025 18:42:15 +0800 (GMT+08:00) From: Damon Ding To: heiko@sntech.de Cc: andy.yan@rock-chips.com, hjc@rock-chips.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, andrzej.hajda@intel.com, neil.armstrong@linaro.org, rfoss@kernel.org, Laurent.pinchart@ideasonboard.com, jonas@kwiboo.se, jernej.skrabec@gmail.com, dmitry.baryshkov@linaro.org, dianders@chromium.org, sebastian.reichel@collabora.com, cristian.ciocaltea@collabora.com, boris.brezillon@collabora.com, l.stach@pengutronix.de, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, Damon Ding Subject: [PATCH v8 07/13] drm/bridge: analogix_dp: Add support for &drm_dp_aux.wait_hpd_asserted() Date: Mon, 10 Mar 2025 18:41:08 +0800 Message-Id: <20250310104114.2608063-8-damon.ding@rock-chips.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250310104114.2608063-1-damon.ding@rock-chips.com> References: <20250310104114.2608063-1-damon.ding@rock-chips.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-HM-Spam-Status: e1kfGhgUHx5ZQUpXWQgPGg8OCBgUHx5ZQUlOS1dZFg8aDwILHllBWSg2Ly tZV1koWUFDSUNOT01LS0k3V1ktWUFJV1kPCRoVCBIfWUFZQ0IeSVZCQ0IeSU1DS04YH0tWFRQJFh oXVRMBExYaEhckFA4PWVdZGBILWUFZTkNVSUlVTFVKSk9ZV1kWGg8SFR0UWUFZT0tIVUpLSEpPSE xVSktLVUpCS0tZBg++ X-HM-Tid: 0a957fa5eccb03a3kunmdc188280 X-HM-MType: 1 X-HM-Sender-Digest: e1kMHhlZQR0aFwgeV1kSHx4VD1lBWUc6NSo6ASo*VjJJTSMXIzlIPSM3 EkwwCzVVSlVKTE9KTUtISEhMT0NCVTMWGhIXVR8aFhQVVR8SFRw7CRQYEFYYExILCFUYFBZFWVdZ EgtZQVlOQ1VJSVVMVUpKT1lXWQgBWUFKTk9CNwY+ DKIM-Signature: a=rsa-sha256; b=Mt07XzW9yyoQKwh7HWb8UUDlKK48215FQ8+zwOAvEjW/6i2X8B7LTNSNDWp2a4oUrRRdd7nRYUE47XZlU2LToe9susyb7WRcMe6vZyMQ1NONQwAwRRVfB6d5TZiNMmmtHsTOAEIl/qP5dTJyuvU2w4WFwA2FV2eWQzqK6ofRiA0=; s=default; c=relaxed/relaxed; d=rock-chips.com; v=1; bh=C5wB+9893I7lZTyFWnjEKSPI75uW0Q31vE5+3MAp5eA=; h=date:mime-version:subject:message-id:from; Content-Type: text/plain; charset="utf-8" Add analogix_dpaux_wait_hpd_asserted() to help confirm the HPD state before doing AUX transfers. Signed-off-by: Damon Ding Reviewed-by: Dmitry Baryshkov Reviewed-by: Douglas Anderson --- .../drm/bridge/analogix/analogix_dp_core.c | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/g= pu/drm/bridge/analogix/analogix_dp_core.c index 2b76a9cf3bcb..b7e143b3ff75 100644 --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c @@ -1548,6 +1548,26 @@ static ssize_t analogix_dpaux_transfer(struct drm_dp= _aux *aux, return ret; } =20 +static int analogix_dpaux_wait_hpd_asserted(struct drm_dp_aux *aux, unsign= ed long wait_us) +{ + struct analogix_dp_device *dp =3D to_dp(aux); + int val; + int ret; + + if (dp->force_hpd) + return 0; + + pm_runtime_get_sync(dp->dev); + + ret =3D readx_poll_timeout(analogix_dp_get_plug_in_status, dp, val, !val, + wait_us / 100, wait_us); + + pm_runtime_mark_last_busy(dp->dev); + pm_runtime_put_autosuspend(dp->dev); + + return ret; +} + struct analogix_dp_device * analogix_dp_probe(struct device *dev, struct analogix_dp_plat_data *plat_d= ata) { @@ -1652,6 +1672,7 @@ analogix_dp_probe(struct device *dev, struct analogix= _dp_plat_data *plat_data) =20 dp->aux.name =3D "DP-AUX"; dp->aux.transfer =3D analogix_dpaux_transfer; + dp->aux.wait_hpd_asserted =3D analogix_dpaux_wait_hpd_asserted; dp->aux.dev =3D dp->dev; drm_dp_aux_init(&dp->aux); =20 --=20 2.34.1 From nobody Wed Dec 17 18:01:27 2025 Received: from mail-m1973171.qiye.163.com (mail-m1973171.qiye.163.com [220.197.31.71]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7510A227E88 for ; Mon, 10 Mar 2025 10:49:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=220.197.31.71 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741603760; cv=none; b=qyJC8lzYeF5KMWsh0J/VDgmVpHIhjWEXm3CN3JTDA5sMX/+fqAE3tR4VEOzSz1TTPEpUzLp7XJfT/kt3/eylpHLqKL6HIH816aczVF+Dxpg/6LtlF1oRAY+TeC7g1x3xHjNpQKe7ueC3d0BU2/FlNepiii/r6tH/wws4UXvoRlo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741603760; c=relaxed/simple; bh=R2HqBJbNLoGnDO/WdzUTS+J2NQU1gsqalx+ojF6QZu8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=s2IRlyDdn48BM8o+RyGVGAlLrLhmDvQu0V2m0JdE7NpPZ8UZi18mCcjdF8KD9IyMJWF5Zr2yq82ottRjv6QPqd/WVi5flRVrpAd5hdLjdVsYzuWrSxLGNuCbUjsIJjRno0cdpRjO5XnRNjpuU8DbASNcLa26ywHi41yVrFpi5vI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rock-chips.com; spf=pass smtp.mailfrom=rock-chips.com; dkim=pass (1024-bit key) header.d=rock-chips.com header.i=@rock-chips.com header.b=SNZrux65; arc=none smtp.client-ip=220.197.31.71 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rock-chips.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rock-chips.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=rock-chips.com header.i=@rock-chips.com header.b="SNZrux65" Received: from zyb-HP-ProDesk-680-G2-MT.. (unknown [58.22.7.114]) by smtp.qiye.163.com (Hmail) with ESMTP id dc18828a; Mon, 10 Mar 2025 18:42:17 +0800 (GMT+08:00) From: Damon Ding To: heiko@sntech.de Cc: andy.yan@rock-chips.com, hjc@rock-chips.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, andrzej.hajda@intel.com, neil.armstrong@linaro.org, rfoss@kernel.org, Laurent.pinchart@ideasonboard.com, jonas@kwiboo.se, jernej.skrabec@gmail.com, dmitry.baryshkov@linaro.org, dianders@chromium.org, sebastian.reichel@collabora.com, cristian.ciocaltea@collabora.com, boris.brezillon@collabora.com, l.stach@pengutronix.de, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, Damon Ding Subject: [PATCH v8 08/13] drm/rockchip: analogix_dp: Add support to get panel from the DP AUX bus Date: Mon, 10 Mar 2025 18:41:09 +0800 Message-Id: <20250310104114.2608063-9-damon.ding@rock-chips.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250310104114.2608063-1-damon.ding@rock-chips.com> References: <20250310104114.2608063-1-damon.ding@rock-chips.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-HM-Spam-Status: e1kfGhgUHx5ZQUpXWQgPGg8OCBgUHx5ZQUlOS1dZFg8aDwILHllBWSg2Ly tZV1koWUFDSUNOT01LS0k3V1ktWUFJV1kPCRoVCBIfWUFZGkxITlZCSE9OSRpJSEkaTkpWFRQJFh oXVRMBExYaEhckFA4PWVdZGBILWUFZTkNVSUlVTFVKSk9ZV1kWGg8SFR0UWUFZT0tIVUpLSUhCS0 NVSktLVUpCWQY+ X-HM-Tid: 0a957fa5f58803a3kunmdc18828a X-HM-MType: 1 X-HM-Sender-Digest: e1kMHhlZQR0aFwgeV1kSHx4VD1lBWUc6ODI6CRw5CjJOIiM0Izk2PS8* Th1PFAxVSlVKTE9KTUtISEhCTUhIVTMWGhIXVR8aFhQVVR8SFRw7CRQYEFYYExILCFUYFBZFWVdZ EgtZQVlOQ1VJSVVMVUpKT1lXWQgBWUFOSUJMNwY+ DKIM-Signature: a=rsa-sha256; b=SNZrux65+2z148itasgWITDP2C9eY8vwJWr1tfFV3Uwq5Mu2RoVjBD/Aq+DwQDmf+XCeT5y/Twn9iVU4TJc5Ze77RUVWt8pw23xnzjBpGm7cPlaD4xPWp34MFHs9VFmq3Z4hIgBnuyd2goMISudWcRh7MJWwaKnTajQV1xTy7YE=; s=default; c=relaxed/relaxed; d=rock-chips.com; v=1; bh=BjjaUkr/z4Q0qZiPadymcyXjqL+DalxJAT81z/wxaYs=; h=date:mime-version:subject:message-id:from; Content-Type: text/plain; charset="utf-8" Move drm_of_find_panel_or_bridge() a little later and combine it with component_add() into a new function rockchip_dp_link_panel(). The function will serve as done_probing() callback of devm_of_dp_aux_populate_bus(), aiding to support for obtaining the eDP panel via the DP AUX bus. If failed to get the panel from the DP AUX bus, it will then try the other way to get panel information through the platform bus. Reviewed-by: Dmitry Baryshkov Signed-off-by: Damon Ding Reviewed-by: Douglas Anderson --- Changes in v4: - Use done_probing() to call drm_of_find_panel_or_bridge() and component_add() when getting panel from the DP AUX bus Changes in v5: - Use the functions exported by the Analogix side to get the pointers of struct analogix_dp_plat_data and struct drm_dp_aux. - Use dev_err() instead of drm_err() in rockchip_dp_poweron(). Changes in v6: - Keep drm_err() in rockchip_dp_poweron() - Pass 'dp' in drm_...() rather than 'dp->drm_dev' Changes in v7: - Include the drm_dp_aux_bus.h for devm_of_dp_aux_populate_bus() - Use dev_err_probe() for the return value check of devm_of_dp_aux_populate_bus() - Select DRM_DISPLAY_DP_AUX_BUS if ROCKCHIP_ANALOGIX_DP - Restore the error check for drm_of_find_panel_or_bridge() which was removed by mistake Changes in v8: - Add comments when drm_of_find_panel_or_bridge() returns -ENODEV - Remove some redundant return cases - Add comments when devm_of_dp_aux_populate_bus() returns -ENODEV --- drivers/gpu/drm/rockchip/Kconfig | 1 + .../gpu/drm/rockchip/analogix_dp-rockchip.c | 42 +++++++++++++++---- 2 files changed, 34 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/rockchip/Kconfig b/drivers/gpu/drm/rockchip/Kc= onfig index 26c4410b2407..f9d7776a859a 100644 --- a/drivers/gpu/drm/rockchip/Kconfig +++ b/drivers/gpu/drm/rockchip/Kconfig @@ -8,6 +8,7 @@ config DRM_ROCKCHIP select DRM_PANEL select VIDEOMODE_HELPERS select DRM_ANALOGIX_DP if ROCKCHIP_ANALOGIX_DP + select DRM_DISPLAY_DP_AUX_BUS if ROCKCHIP_ANALOGIX_DP select DRM_DW_HDMI if ROCKCHIP_DW_HDMI select DRM_DW_HDMI_QP if ROCKCHIP_DW_HDMI_QP select DRM_DW_MIPI_DSI if ROCKCHIP_DW_MIPI_DSI diff --git a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c b/drivers/gpu/= drm/rockchip/analogix_dp-rockchip.c index a8265a1bf9ff..5632b7e3e122 100644 --- a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c +++ b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c @@ -21,6 +21,7 @@ #include