From nobody Mon May 25 04:35:17 2026 Received: from smtp.forwardemail.net (smtp.forwardemail.net [149.28.215.223]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 331E038236E for ; Mon, 18 May 2026 19:38:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=149.28.215.223 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779133088; cv=none; b=NSKUm0rMypYBwZ8EfsxjUon6M0x8eGNpbMTChwTUC5WPuA2WJcUQxfZESEXmzzkG26Ud2m804NY3/tzI0sWALu+amYv6VrltRo5hbj8tZ9/ooOD+vCf/uHQROkqSkDxB/wCXFXIN5bz76oLvAjFJ5VWGcs9mJQfyZALYiYTR4qw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779133088; c=relaxed/simple; bh=IcbGfuGmlaDP/5ffbljBBBKxaFhsh5q6xiENpH8QNOA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=h6/iUlPAJrnxBjXEcjaTPVKu13k2IzTW+t0V3hMI2s1srPBAAdsF4VdW5MWAwveYQiprWNn0+PiMQ2Dz8eyJuYz3VzrlK2bzvCQKUKGntwDgpx8x/UzIb/O7RwkugdqkIY6rjw6jIQ9es+gbPb+f1Ej3iYriBvlmXYXUTDIL2yc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=kwiboo.se; spf=pass smtp.mailfrom=fe-bounces.kwiboo.se; dkim=pass (2048-bit key) header.d=kwiboo.se header.i=@kwiboo.se header.b=ad8XU+PE; arc=none smtp.client-ip=149.28.215.223 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=kwiboo.se Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fe-bounces.kwiboo.se Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kwiboo.se header.i=@kwiboo.se header.b="ad8XU+PE" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kwiboo.se; h=Content-Transfer-Encoding: MIME-Version: References: In-Reply-To: Message-ID: Date: Subject: Cc: To: From; q=dns/txt; s=fe-e1b5cab7be; t=1779133086; bh=2z4VxKDs/PdZygrKT0+7hbj3H+IMEjk3pxkj8X3h2NE=; b=ad8XU+PE+3MVu2S5bEr0pzGFwEfRTBZfILY4sp6nRD8Dw4QC66rMVYmqlJhGLs5jItuJvaOI1 tMqgRaYvtVeE084JAphWQX4TBYJ6fOc4UPSSWQhSX/YeYU8jGsqlT3F/JqoS/JvTOzA0FDIz2Xp Kc2AvfRDjYpI/lJeAOzSd/8/yUqFXdC7g7PvDmOW4wBN2iJs3SuZmO2LnOCYYD/53sgYjS4DHEm teWO053jxd8AonHf8FPcB8nVYhjwOSdxZ6Xz15dACZwnS0P6m86hfZEIxzH8dkhr16qYm2Dc2mw XcfqTPOYZnrz4zcSwA0Ytr96ULskU2cN82fFUznblYcQ== X-Forward-Email-ID: 6a0b6a96486b4b38b826f9ba X-Forward-Email-Sender: rfc822; jonas@kwiboo.se, smtp.forwardemail.net, 149.28.215.223 X-Forward-Email-Version: 2.8.12 X-Forward-Email-Website: https://forwardemail.net X-Complaints-To: abuse@forwardemail.net X-Report-Abuse: abuse@forwardemail.net X-Report-Abuse-To: abuse@forwardemail.net From: Jonas Karlman To: =?UTF-8?q?Heiko=20St=C3=BCbner?= , Sandy Huang , Andy Yan , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Cc: dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Jonas Karlman Subject: [PATCH v2 01/11] drm/rockchip: dw_hdmi: Use of_device_get_match_data() to get match data Date: Mon, 18 May 2026 19:37:35 +0000 Message-ID: <20260518193748.2482823-2-jonas@kwiboo.se> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260518193748.2482823-1-jonas@kwiboo.se> References: <20260518193748.2482823-1-jonas@kwiboo.se> 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 Content-Type: text/plain; charset="utf-8" Change to use of_device_get_match_data() to get match data prior to allocating private data. All current entries in the of_device_id match table provide match data, so no functional change is intended. Signed-off-by: Jonas Karlman Tested-by: Heiko Stuebner #rk3328 --- v2: No change --- drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/= rockchip/dw_hdmi-rockchip.c index 40df6d1be2bf..fd7cc1572a40 100644 --- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c +++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c @@ -536,8 +536,8 @@ static int dw_hdmi_rockchip_bind(struct device *dev, st= ruct device *master, { struct platform_device *pdev =3D to_platform_device(dev); struct device_node *np =3D dev_of_node(dev); + const struct dw_hdmi_plat_data *drv_data; struct dw_hdmi_plat_data *plat_data; - const struct of_device_id *match; struct drm_device *drm =3D data; struct drm_encoder *encoder; struct rockchip_hdmi *hdmi; @@ -546,13 +546,16 @@ static int dw_hdmi_rockchip_bind(struct device *dev, = struct device *master, if (!np) return -ENODEV; =20 + drv_data =3D of_device_get_match_data(dev); + if (!drv_data) + return -ENODEV; + hdmi =3D devm_kzalloc(&pdev->dev, sizeof(*hdmi), GFP_KERNEL); if (!hdmi) return -ENOMEM; =20 - match =3D of_match_node(dw_hdmi_rockchip_dt_ids, np); - plat_data =3D devm_kmemdup(&pdev->dev, match->data, - sizeof(*plat_data), GFP_KERNEL); + plat_data =3D devm_kmemdup(&pdev->dev, drv_data, + sizeof(*drv_data), GFP_KERNEL); if (!plat_data) return -ENOMEM; =20 --=20 2.54.0 From nobody Mon May 25 04:35:17 2026 Received: from smtp.forwardemail.net (smtp.forwardemail.net [121.127.44.73]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 474242236EE for ; Mon, 18 May 2026 19:38:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=121.127.44.73 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779133087; cv=none; b=OXpGAmSRCvopf04vhF+5B+Omf5V4cEa04JQVduPXbNNvCzK4aMLvvAshgRC8yLk+4xywUaJc3iEAwr4dMOODIuFFQL4kkNOAHgTT1YEXX4Ubt0WT3gTMBR+J+KrE/eRiiC+0/FR+J5Xww3yu2dd3aXNmCiyAg8Yy3xUfk3eCS5E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779133087; c=relaxed/simple; bh=p0GV4kjGB0rtlv8x1A+pz78IB2jd22bBHN7Ti0L3e/k=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=GWJ8gai6utax7i+hV4+bt8yrrGt+tltjNQGL4E9dJe75i+TRr1EVkQB/VAm5nSveqF+ROZdNAmWgDPM1edLwKX8b+09FkkXWi4FLSq3Tr9Bt/BV8C8iJmeQ2nUp66xpEfQcJkZHnNeHtuE/4ibIttsDsocUuFQOgYetUTJL0qVk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=kwiboo.se; spf=pass smtp.mailfrom=fe-bounces.kwiboo.se; dkim=pass (2048-bit key) header.d=kwiboo.se header.i=@kwiboo.se header.b=0HDgiar4; arc=none smtp.client-ip=121.127.44.73 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=kwiboo.se Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fe-bounces.kwiboo.se Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kwiboo.se header.i=@kwiboo.se header.b="0HDgiar4" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kwiboo.se; h=Content-Transfer-Encoding: MIME-Version: References: In-Reply-To: Message-ID: Date: Subject: Cc: To: From; q=dns/txt; s=fe-e1b5cab7be; t=1779133084; bh=pzma+IDa02TNdDXAZyn/iNzxfLzVJhTpHCwYXbJ3+Ac=; b=0HDgiar4cscDgX+9MptMjy68FR6llsTO108gFRQGQKkSCsQdjMhvJ804A2nUhDjpPr3vU7qUS ENi+tCQGt7miYxcfD/a/4k23wRLVqcIVEiC5AuW0DoV4//mKw1zEOmmHdNQXkpe1boGQQ6pETY3 pfha2Qn8YyF5YVnTOt6ytqsupCxCCrFgoQWxZRrNa2qnGCTYl0XCQfkswueRTaEfx3NxfnnysSp w2oRyRRHmaEopKLyusg0pJ1aVdudxxtCgiT+//N+YYxe1l9j9rSmp0os07E045j6QM1JVM1YRhQ VE5GGfuj6zn+Bla5tXyZW9Kq/7gk4rM/1Q577hZRd7fA== X-Forward-Email-ID: 6a0b6a9a486b4b38b826f9d5 X-Forward-Email-Sender: rfc822; jonas@kwiboo.se, smtp.forwardemail.net, 121.127.44.73 X-Forward-Email-Version: 2.8.12 X-Forward-Email-Website: https://forwardemail.net X-Complaints-To: abuse@forwardemail.net X-Report-Abuse: abuse@forwardemail.net X-Report-Abuse-To: abuse@forwardemail.net From: Jonas Karlman To: =?UTF-8?q?Heiko=20St=C3=BCbner?= , Sandy Huang , Andy Yan , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Cc: dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Jonas Karlman Subject: [PATCH v2 02/11] drm/rockchip: dw_hdmi: Use local dev variable consistently in bind() Date: Mon, 18 May 2026 19:37:36 +0000 Message-ID: <20260518193748.2482823-3-jonas@kwiboo.se> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260518193748.2482823-1-jonas@kwiboo.se> References: <20260518193748.2482823-1-jonas@kwiboo.se> 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 Content-Type: text/plain; charset="utf-8" Replace indirect struct device accesses via hdmi->dev and pdev->dev with the local dev parameter already available in dw_hdmi_rockchip_bind(), for consistency and readability. Signed-off-by: Jonas Karlman Tested-by: Heiko Stuebner #rk3328 --- v2: No change --- drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/= rockchip/dw_hdmi-rockchip.c index fd7cc1572a40..0d5d60c315c6 100644 --- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c +++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c @@ -550,16 +550,15 @@ static int dw_hdmi_rockchip_bind(struct device *dev, = struct device *master, if (!drv_data) return -ENODEV; =20 - hdmi =3D devm_kzalloc(&pdev->dev, sizeof(*hdmi), GFP_KERNEL); + hdmi =3D devm_kzalloc(dev, sizeof(*hdmi), GFP_KERNEL); if (!hdmi) return -ENOMEM; =20 - plat_data =3D devm_kmemdup(&pdev->dev, drv_data, - sizeof(*drv_data), GFP_KERNEL); + plat_data =3D devm_kmemdup(dev, drv_data, sizeof(*drv_data), GFP_KERNEL); if (!plat_data) return -ENOMEM; =20 - hdmi->dev =3D &pdev->dev; + hdmi->dev =3D dev; hdmi->plat_data =3D plat_data; hdmi->chip_data =3D plat_data->phy_data; plat_data->phy_data =3D hdmi; @@ -581,13 +580,13 @@ static int dw_hdmi_rockchip_bind(struct device *dev, = struct device *master, =20 ret =3D rockchip_hdmi_parse_dt(hdmi); if (ret) { - return dev_err_probe(hdmi->dev, ret, "Unable to parse OF data\n"); + return dev_err_probe(dev, ret, "Unable to parse OF data\n"); } =20 hdmi->phy =3D devm_phy_optional_get(dev, "hdmi"); if (IS_ERR(hdmi->phy)) { ret =3D PTR_ERR(hdmi->phy); - return dev_err_probe(hdmi->dev, ret, "failed to get phy\n"); + return dev_err_probe(dev, ret, "failed to get phy\n"); } =20 index =3D of_property_match_string(np, "phy-names", "hdmi"); --=20 2.54.0 From nobody Mon May 25 04:35:17 2026 Received: from smtp.forwardemail.net (smtp.forwardemail.net [121.127.44.66]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E69E039183A for ; Mon, 18 May 2026 19:38:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=121.127.44.66 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779133091; cv=none; b=qae9uEaFSqQGhllHhP9+6hQzBfl/RPUu9QcJ/k9d2N65oEID120HZvi291k9hzbyVOK3uSBmaxrBLjuhKfl3AOsrBWjTtC4rHUZaebmf7GKQBLXSH3UvflYX3sNVyjV80pDmdvLXe/4hfzWtcay1YNnkC2L6YZ7xMSB+CDdc5rs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779133091; c=relaxed/simple; bh=UJHHzAt9NzGV39c6ekt5fawcJoJwecvnO8R6XS/cCoA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=L7NMXBbsVwFW+RZehkcIybRmtGg10/crRJZbk5EKce8EQIO6fCBUm2JzfE5ITYIUwT3qGmYCjzohA+2Ds2rIPmvalJdJOAZZAUNzqcfbpBRDgaM4NlFaxMk20JNJIF2lmoT7LdM4rI8LFVEsjhFvMEBRknS3TU92/MO7I8eTtU0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=kwiboo.se; spf=pass smtp.mailfrom=fe-bounces.kwiboo.se; dkim=pass (2048-bit key) header.d=kwiboo.se header.i=@kwiboo.se header.b=syCMpMd7; arc=none smtp.client-ip=121.127.44.66 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=kwiboo.se Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fe-bounces.kwiboo.se Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kwiboo.se header.i=@kwiboo.se header.b="syCMpMd7" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kwiboo.se; h=Content-Transfer-Encoding: MIME-Version: References: In-Reply-To: Message-ID: Date: Subject: Cc: To: From; q=dns/txt; s=fe-e1b5cab7be; t=1779133089; bh=ThbLfdSHfpoHWBkpdG7GEcedzyok/O/FgpfO8mmac0M=; b=syCMpMd7V4ZeV3x3PiezY27IHLCLmLWb3TQ6KyeE1qY96YqdtLf2Lye6c+DrdpD8RWn0xjy1m l3ScYlTS9nmzZ5lweHs7nhrnpyvNkcJOrcDNmL92W11ofY4PBj0/csaF2lQjHmulyt4Wb+xfnIW H4N+DVTCGKxHEEIdr0OdaPGsLbJ/bLQKGarpbK5c/xZs6YLmRJ/ygSfKNvSMT9WqJaVplda3djE aBp0I/R8bOqsgiYfkumGGyDnhFVMn1MmKGmhYc2KvmE21mkMsc/llmUrJUgdMQakfSGCWagWaes h6PutMeMQD/Ay48RqZ4hLMw+DaARhveihC+tdMLhI5jg== X-Forward-Email-ID: 6a0b6a9e486b4b38b826f9f0 X-Forward-Email-Sender: rfc822; jonas@kwiboo.se, smtp.forwardemail.net, 121.127.44.66 X-Forward-Email-Version: 2.8.12 X-Forward-Email-Website: https://forwardemail.net X-Complaints-To: abuse@forwardemail.net X-Report-Abuse: abuse@forwardemail.net X-Report-Abuse-To: abuse@forwardemail.net From: Jonas Karlman To: =?UTF-8?q?Heiko=20St=C3=BCbner?= , Sandy Huang , Andy Yan , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Cc: dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Jonas Karlman Subject: [PATCH v2 03/11] drm/rockchip: dw_hdmi: Use drmres helpers for encoder resources Date: Mon, 18 May 2026 19:37:37 +0000 Message-ID: <20260518193748.2482823-4-jonas@kwiboo.se> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260518193748.2482823-1-jonas@kwiboo.se> References: <20260518193748.2482823-1-jonas@kwiboo.se> 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 Content-Type: text/plain; charset="utf-8" Change to use drmres helpers drmm_kzalloc() to allocate driver data and drmm_encoder_init() to initialize the encoder. With use of drmres the manual encoder cleanup in failure path and unbind is also removed. Signed-off-by: Jonas Karlman Tested-by: Heiko Stuebner #rk3328 --- v2: Adjust error message related to dw-hdmi bridge --- drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 29 ++++++++------------- 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/= rockchip/dw_hdmi-rockchip.c index 0d5d60c315c6..12a7c989c4ee 100644 --- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c +++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c @@ -14,6 +14,7 @@ =20 #include #include +#include #include #include #include @@ -550,13 +551,14 @@ static int dw_hdmi_rockchip_bind(struct device *dev, = struct device *master, if (!drv_data) return -ENODEV; =20 - hdmi =3D devm_kzalloc(dev, sizeof(*hdmi), GFP_KERNEL); + hdmi =3D drmm_kzalloc(drm, sizeof(*hdmi), GFP_KERNEL); if (!hdmi) return -ENOMEM; =20 - plat_data =3D devm_kmemdup(dev, drv_data, sizeof(*drv_data), GFP_KERNEL); + plat_data =3D drmm_kzalloc(drm, sizeof(*drv_data), GFP_KERNEL); if (!plat_data) return -ENOMEM; + memcpy(plat_data, drv_data, sizeof(*drv_data)); =20 hdmi->dev =3D dev; hdmi->plat_data =3D plat_data; @@ -608,28 +610,20 @@ static int dw_hdmi_rockchip_bind(struct device *dev, = struct device *master, FIELD_PREP_WM16(RK3568_HDMI_SCLIN_MSK, 1)); } =20 + ret =3D drmm_encoder_init(drm, encoder, NULL, DRM_MODE_ENCODER_TMDS, NULL= ); + if (ret) + return dev_err_probe(dev, ret, "failed to init encoder\n"); + drm_encoder_helper_add(encoder, &dw_hdmi_rockchip_encoder_helper_funcs); - drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_TMDS); =20 platform_set_drvdata(pdev, hdmi); =20 hdmi->hdmi =3D dw_hdmi_bind(pdev, encoder, plat_data); - - /* - * If dw_hdmi_bind() fails we'll never call dw_hdmi_unbind(), - * which would have called the encoder cleanup. Do it manually. - */ - if (IS_ERR(hdmi->hdmi)) { - ret =3D PTR_ERR(hdmi->hdmi); - goto err_bind; - } + if (IS_ERR(hdmi->hdmi)) + return dev_err_probe(dev, PTR_ERR(hdmi->hdmi), + "failed to probe dw-hdmi bridge\n"); =20 return 0; - -err_bind: - drm_encoder_cleanup(encoder); - - return ret; } =20 static void dw_hdmi_rockchip_unbind(struct device *dev, struct device *mas= ter, @@ -638,7 +632,6 @@ static void dw_hdmi_rockchip_unbind(struct device *dev,= struct device *master, struct rockchip_hdmi *hdmi =3D dev_get_drvdata(dev); =20 dw_hdmi_unbind(hdmi->hdmi); - drm_encoder_cleanup(&hdmi->encoder.encoder); } =20 static const struct component_ops dw_hdmi_rockchip_ops =3D { --=20 2.54.0 From nobody Mon May 25 04:35:17 2026 Received: from smtp.forwardemail.net (smtp.forwardemail.net [149.28.215.223]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BBD16390CB9 for ; Mon, 18 May 2026 19:38:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=149.28.215.223 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779133099; cv=none; b=sqoStOOPRFimLzPFRjzwFikBbF1pa+C1nLCZwalcRn7yLI4Tn4pVbAO2TAWZPZJiK+zEpsAvqC8f60qqcuqOVCkQsFkaBTPidJyadvMU7FVmLFmT0BxV0XDMXFRE4jBgNRWB5xpBzLBLfB7pY3DERAz1BLUk0dQeQE0e24LR9BU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779133099; c=relaxed/simple; bh=GOH6AozJRtZMvWndSMXDAUZHMMGAELe7gGrpHuwDypU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=YF4+dqSYd97rgNPynjSbto9DwonBG5syqWWXyEjso9H1kIdI9tJlOgVPNXa82FTc0eW/2ybIzM/xGEqHfW+gth+EE54hoQXezNmrRKOw4UD0asetb46sl7gdl/E68qiXd2pl2Q/G25sXFSEijnr9uKCzjOw56BB86adxtIhtKE0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=kwiboo.se; spf=pass smtp.mailfrom=fe-bounces.kwiboo.se; dkim=pass (2048-bit key) header.d=kwiboo.se header.i=@kwiboo.se header.b=FTnw84J7; arc=none smtp.client-ip=149.28.215.223 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=kwiboo.se Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fe-bounces.kwiboo.se Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kwiboo.se header.i=@kwiboo.se header.b="FTnw84J7" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kwiboo.se; h=Content-Transfer-Encoding: MIME-Version: References: In-Reply-To: Message-ID: Date: Subject: Cc: To: From; q=dns/txt; s=fe-e1b5cab7be; t=1779133097; bh=qoxUWyo9gdy2DESJxBXzDzmP4EJJbwI5fCPj+AITnn4=; b=FTnw84J7R0E8EcDA/Qxx3RDS4+5T7sAKTWSjjhMGlpp7etL9/MolJy1tN5BShIqGMHuvaqEZq xxSATLCz0cRNqhCZV/llgGRS4aTZE5wbiUtHpLRePYn6HtSIuNPuW6Sok427FQw4mYXbuDG6Hup udbwanOgB+USyR3srBs97iTiLq0QNbJUmqgjMa+m56qE2y5jc7BGFkYxK0kUit64SZgi2cJMRjF VTPyP1f8Bk0Tnr4F+Ztexy4x8prJm2o7A/6KaHZcjKKtQfoJhMxMK6HgFzGvjbdhbi9q1uC3GYT LnL5iSDtVSwiU7dNzvZ3ooamw73SrWqQwQMSqbGteS6w== X-Forward-Email-ID: 6a0b6aa1486b4b38b826fa0b X-Forward-Email-Sender: rfc822; jonas@kwiboo.se, smtp.forwardemail.net, 149.28.215.223 X-Forward-Email-Version: 2.8.12 X-Forward-Email-Website: https://forwardemail.net X-Complaints-To: abuse@forwardemail.net X-Report-Abuse: abuse@forwardemail.net X-Report-Abuse-To: abuse@forwardemail.net From: Jonas Karlman To: =?UTF-8?q?Heiko=20St=C3=BCbner?= , Sandy Huang , Andy Yan , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Cc: dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Jonas Karlman Subject: [PATCH v2 04/11] drm/rockchip: dw_hdmi: Inline resource lookup into bind() Date: Mon, 18 May 2026 19:37:38 +0000 Message-ID: <20260518193748.2482823-5-jonas@kwiboo.se> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260518193748.2482823-1-jonas@kwiboo.se> References: <20260518193748.2482823-1-jonas@kwiboo.se> 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 Content-Type: text/plain; charset="utf-8" Inline rockchip_hdmi_parse_dt() into dw_hdmi_rockchip_bind() so the probe path is easier to follow in one place. Also ensure failures in bind() use dev_err_probe() so probe deferrals and errors are reported consistently. Signed-off-by: Jonas Karlman Tested-by: Heiko Stuebner #rk3328 --- v2: No change --- drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 74 +++++++++------------ 1 file changed, 30 insertions(+), 44 deletions(-) diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/= rockchip/dw_hdmi-rockchip.c index 12a7c989c4ee..8c26223b70b5 100644 --- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c +++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c @@ -196,41 +196,6 @@ static const struct dw_hdmi_phy_config rockchip_phy_co= nfig[] =3D { { ~0UL, 0x0000, 0x0000, 0x0000} }; =20 -static int rockchip_hdmi_parse_dt(struct rockchip_hdmi *hdmi) -{ - struct device_node *np =3D hdmi->dev->of_node; - int ret; - - hdmi->regmap =3D syscon_regmap_lookup_by_phandle(np, "rockchip,grf"); - if (IS_ERR(hdmi->regmap)) { - dev_err(hdmi->dev, "Unable to get rockchip,grf\n"); - return PTR_ERR(hdmi->regmap); - } - - hdmi->ref_clk =3D devm_clk_get_optional_enabled(hdmi->dev, "ref"); - if (!hdmi->ref_clk) - hdmi->ref_clk =3D devm_clk_get_optional_enabled(hdmi->dev, "vpll"); - - if (IS_ERR(hdmi->ref_clk)) { - ret =3D PTR_ERR(hdmi->ref_clk); - return dev_err_probe(hdmi->dev, ret, "failed to get reference clock\n"); - } - - hdmi->grf_clk =3D devm_clk_get_optional(hdmi->dev, "grf"); - if (IS_ERR(hdmi->grf_clk)) { - ret =3D PTR_ERR(hdmi->grf_clk); - return dev_err_probe(hdmi->dev, ret, "failed to get grf clock\n"); - } - - ret =3D devm_regulator_get_enable(hdmi->dev, "avdd-0v9"); - if (ret) - return ret; - - ret =3D devm_regulator_get_enable(hdmi->dev, "avdd-1v8"); - - return ret; -} - static enum drm_mode_status dw_hdmi_rockchip_mode_valid(struct dw_hdmi *dw_hdmi, void *data, const struct drm_display_info *info, @@ -578,18 +543,39 @@ static int dw_hdmi_rockchip_bind(struct device *dev, = struct device *master, * the required CRTC is added later. */ if (encoder->possible_crtcs =3D=3D 0) - return -EPROBE_DEFER; + return dev_err_probe(dev, -EPROBE_DEFER, + "failed to find possible crtcs\n"); =20 - ret =3D rockchip_hdmi_parse_dt(hdmi); - if (ret) { - return dev_err_probe(dev, ret, "Unable to parse OF data\n"); - } + hdmi->regmap =3D syscon_regmap_lookup_by_phandle(np, "rockchip,grf"); + if (IS_ERR(hdmi->regmap)) + return dev_err_probe(dev, PTR_ERR(hdmi->regmap), + "failed to get rockchip,grf\n"); + + hdmi->ref_clk =3D devm_clk_get_optional_enabled(dev, "ref"); + if (!hdmi->ref_clk) + hdmi->ref_clk =3D devm_clk_get_optional_enabled(dev, "vpll"); + + if (IS_ERR(hdmi->ref_clk)) + return dev_err_probe(dev, PTR_ERR(hdmi->ref_clk), + "failed to get reference clock\n"); + + hdmi->grf_clk =3D devm_clk_get_optional(dev, "grf"); + if (IS_ERR(hdmi->grf_clk)) + return dev_err_probe(dev, PTR_ERR(hdmi->grf_clk), + "failed to get grf clock\n"); + + ret =3D devm_regulator_get_enable(dev, "avdd-0v9"); + if (ret) + return dev_err_probe(dev, ret, "failed to enable avdd-0v9\n"); + + ret =3D devm_regulator_get_enable(dev, "avdd-1v8"); + if (ret) + return dev_err_probe(dev, ret, "failed to enable avdd-1v8\n"); =20 hdmi->phy =3D devm_phy_optional_get(dev, "hdmi"); - if (IS_ERR(hdmi->phy)) { - ret =3D PTR_ERR(hdmi->phy); - return dev_err_probe(dev, ret, "failed to get phy\n"); - } + if (IS_ERR(hdmi->phy)) + return dev_err_probe(dev, PTR_ERR(hdmi->phy), + "failed to get phy\n"); =20 index =3D of_property_match_string(np, "phy-names", "hdmi"); if (index >=3D 0) { --=20 2.54.0 From nobody Mon May 25 04:35:17 2026 Received: from smtp.forwardemail.net (smtp.forwardemail.net [121.127.44.73]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D516B3914E0 for ; Mon, 18 May 2026 19:38:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=121.127.44.73 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779133098; cv=none; b=AgIn9bh4ENu8SHCRs4agcp57qENnTKFJPfnj3HII1T45dtX7o7jB1BNxzIstqwCaFeSZ1y86LRze4GWQb2rV1MUhxCrp81L6FJ2A/4OM7JVjQH/l3/sWnjfwoLp49pN6xN1Wo94c4OcNYkMamvmyqTjYWINQc3eVTL4P8xqxX3s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779133098; c=relaxed/simple; bh=5ATB+7llGjsBOL6WpM6smGOSrdKxHZOSjB7b6T/5Ovo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=sooOw1hDg70Hdy7DAAfpDOTco3NWXoTpYSByuMS257ywTy8Ii0Kum8LV+X/XaIT7DonxXcFms3h81+sK5ViOhzMQUHFTPK3hnNwBtW2vpsjWWoWhRfHPPYhT6zZD6tBsG46PcWvjcFZ+7uIQhqhNXe/Rk9iJlj+35xZ7sNDMies= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=kwiboo.se; spf=pass smtp.mailfrom=fe-bounces.kwiboo.se; dkim=pass (2048-bit key) header.d=kwiboo.se header.i=@kwiboo.se header.b=eGVb+uOl; arc=none smtp.client-ip=121.127.44.73 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=kwiboo.se Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fe-bounces.kwiboo.se Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kwiboo.se header.i=@kwiboo.se header.b="eGVb+uOl" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kwiboo.se; h=Content-Transfer-Encoding: MIME-Version: References: In-Reply-To: Message-ID: Date: Subject: Cc: To: From; q=dns/txt; s=fe-e1b5cab7be; t=1779133096; bh=Ige+NfQAL/cmeNHtDcasRRc+phKqB217iKqo21sCGF4=; b=eGVb+uOlmGwnvFUXKw+G/qHK6CMvQhP9S4toOB4kGxLJl5bcK6WBMpsVH6lskTZ2T63Anl76B CL9BBja9I1AbYZd29/p9hRhijB0mgcyT4NdxoiW9cPwlaNIGxuaxmhXBmpiK8B08ogtxVHekSlZ WO7asVpjhNJ8K7CNPdYqVgkXFmK7NgbD1nh94o1qkbTD/wGmrwcLlkh2V2H+SHM14QH/kpJfzsC cUKxsBZzCXHinfZJTn1p+OL6d00pj8u/nrHgXG6e9SkqbCc3yNZacY+OGcsHpGj0BqsFY1fQqY6 hB04WivNOxyrQgk/B1vfsv1QmgaO+hy1UR/uH47bimwQ== X-Forward-Email-ID: 6a0b6aa5486b4b38b826fa26 X-Forward-Email-Sender: rfc822; jonas@kwiboo.se, smtp.forwardemail.net, 121.127.44.73 X-Forward-Email-Version: 2.8.12 X-Forward-Email-Website: https://forwardemail.net X-Complaints-To: abuse@forwardemail.net X-Report-Abuse: abuse@forwardemail.net X-Report-Abuse-To: abuse@forwardemail.net From: Jonas Karlman To: =?UTF-8?q?Heiko=20St=C3=BCbner?= , Sandy Huang , Andy Yan , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Cc: dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Jonas Karlman Subject: [PATCH v2 05/11] drm/rockchip: dw_hdmi: Hold a reference to the dw-hdmi bridge Date: Mon, 18 May 2026 19:37:39 +0000 Message-ID: <20260518193748.2482823-6-jonas@kwiboo.se> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260518193748.2482823-1-jonas@kwiboo.se> References: <20260518193748.2482823-1-jonas@kwiboo.se> 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 Content-Type: text/plain; charset="utf-8" Take a reference on the dw-hdmi bridge during bind and drop it again from unbind to ensure the bridge is kept alive for the lifetime of the encoder component. Signed-off-by: Jonas Karlman Tested-by: Heiko Stuebner #rk3328 --- v2: Use dw_hdmi_unbind() and adjust the error message --- drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/= rockchip/dw_hdmi-rockchip.c index 8c26223b70b5..538906e342d2 100644 --- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c +++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c @@ -79,6 +79,7 @@ struct rockchip_hdmi { struct clk *hdmiphy_clk; struct clk *ref_clk; struct clk *grf_clk; + struct drm_bridge *bridge; struct dw_hdmi *hdmi; struct phy *phy; }; @@ -609,6 +610,13 @@ static int dw_hdmi_rockchip_bind(struct device *dev, s= truct device *master, return dev_err_probe(dev, PTR_ERR(hdmi->hdmi), "failed to probe dw-hdmi bridge\n"); =20 + hdmi->bridge =3D of_drm_find_and_get_bridge(np); + if (!hdmi->bridge) { + dw_hdmi_unbind(hdmi->hdmi); + return dev_err_probe(dev, -ENODEV, + "failed to find dw-hdmi bridge\n"); + } + return 0; } =20 @@ -617,6 +625,7 @@ static void dw_hdmi_rockchip_unbind(struct device *dev,= struct device *master, { struct rockchip_hdmi *hdmi =3D dev_get_drvdata(dev); =20 + drm_bridge_put(hdmi->bridge); dw_hdmi_unbind(hdmi->hdmi); } =20 --=20 2.54.0 From nobody Mon May 25 04:35:17 2026 Received: from smtp.forwardemail.net (smtp.forwardemail.net [121.127.44.73]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B7421391E6D for ; Mon, 18 May 2026 19:38:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=121.127.44.73 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779133103; cv=none; b=qotAFecN613VUvXMhIfCAS4/mWzcQJlP+zMKlLddCCBWoiQtN4yMHqHEfBThqIuviQXm+JxR9DoThI9VZSSsMcM8UqQTZIqjymagsIQK2lUz0TVii0F7AHYkJKeUcD9myN3+YZV1uWV1bY4kvrU1xdwnFfHDtMoE7xixxv9B7+o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779133103; c=relaxed/simple; bh=anWpW6Ru9vCgQz7SvnwDIHDI4HJalBAIqbOvsF9Ak9I=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=IBsv3dnxAxDmeIqQRW5++seRHLMyXEHKIxwolWoWxtU86NS1ZJbDCsgnEHNpfufoAT0675wzU0/C53XBLOfwhZk3WAcyMMPP9i6H2WnjqXVlH/UWshvAXDH+vgemtH/E1P2pkyq5hLTBD7N6lMMkoXMOSr+ZaVri7srEZR+Zrmo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=kwiboo.se; spf=pass smtp.mailfrom=fe-bounces.kwiboo.se; dkim=pass (2048-bit key) header.d=kwiboo.se header.i=@kwiboo.se header.b=0r+MQ5Wc; arc=none smtp.client-ip=121.127.44.73 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=kwiboo.se Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fe-bounces.kwiboo.se Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kwiboo.se header.i=@kwiboo.se header.b="0r+MQ5Wc" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kwiboo.se; h=Content-Transfer-Encoding: MIME-Version: References: In-Reply-To: Message-ID: Date: Subject: Cc: To: From; q=dns/txt; s=fe-e1b5cab7be; t=1779133100; bh=Y61aEmdvGyw4vA5vqIRiaVFAr9v3XoVduGYp096gOyM=; b=0r+MQ5WcpJXL/w0R7O1ub9i/NX57t8MydKKM9zYqXPNcYDQMAFmVdN1MnScZv6ULe3x4b6IwD BKieNk+DhtkP8cR9LC3tsxinvnJd2Kj9SmjrfJwL4lsaHpHwH5ioB0lTVf32PmwIy1mD8P+1EZA IY1pdLB7sXktS6EX6qivhH9NJScJfPJ3V8NVpnDFZ663sb3VdLCQUdpgr1L4T575KM5bsh1kyXJ vOTW2CUdyod6lkDIxmrbpdYRjZyrCVYwenEFnmsPplMW8lJoFeOfu2Mc/zsLMCNiG6Cb15OiCCH hfWDN8T3z/EHjKKs8l+vHxruBoJYWKW8bMzwokBPB8zA== X-Forward-Email-ID: 6a0b6aa9486b4b38b826fa41 X-Forward-Email-Sender: rfc822; jonas@kwiboo.se, smtp.forwardemail.net, 121.127.44.73 X-Forward-Email-Version: 2.8.12 X-Forward-Email-Website: https://forwardemail.net X-Complaints-To: abuse@forwardemail.net X-Report-Abuse: abuse@forwardemail.net X-Report-Abuse-To: abuse@forwardemail.net From: Jonas Karlman To: =?UTF-8?q?Heiko=20St=C3=BCbner?= , Sandy Huang , Andy Yan , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Cc: dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Jonas Karlman Subject: [PATCH v2 06/11] drm/rockchip: dw_hdmi: Remove empty encoder helper funcs Date: Mon, 18 May 2026 19:37:40 +0000 Message-ID: <20260518193748.2482823-7-jonas@kwiboo.se> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260518193748.2482823-1-jonas@kwiboo.se> References: <20260518193748.2482823-1-jonas@kwiboo.se> 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 Content-Type: text/plain; charset="utf-8" Remove the empty disable() and static return true mode_fixup() encoder helper funcs as they do not provide any useful functionality. Signed-off-by: Jonas Karlman Tested-by: Heiko Stuebner #rk3328 --- v2: No change --- drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/= rockchip/dw_hdmi-rockchip.c index 538906e342d2..bd530321b49c 100644 --- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c +++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c @@ -226,18 +226,6 @@ dw_hdmi_rockchip_mode_valid(struct dw_hdmi *dw_hdmi, v= oid *data, return MODE_OK; } =20 -static void dw_hdmi_rockchip_encoder_disable(struct drm_encoder *encoder) -{ -} - -static bool -dw_hdmi_rockchip_encoder_mode_fixup(struct drm_encoder *encoder, - const struct drm_display_mode *mode, - struct drm_display_mode *adj_mode) -{ - return true; -} - static void dw_hdmi_rockchip_encoder_mode_set(struct drm_encoder *encoder, struct drm_display_mode *mode, struct drm_display_mode *adj_mode) @@ -290,10 +278,8 @@ dw_hdmi_rockchip_encoder_atomic_check(struct drm_encod= er *encoder, } =20 static const struct drm_encoder_helper_funcs dw_hdmi_rockchip_encoder_help= er_funcs =3D { - .mode_fixup =3D dw_hdmi_rockchip_encoder_mode_fixup, - .mode_set =3D dw_hdmi_rockchip_encoder_mode_set, - .enable =3D dw_hdmi_rockchip_encoder_enable, - .disable =3D dw_hdmi_rockchip_encoder_disable, + .mode_set =3D dw_hdmi_rockchip_encoder_mode_set, + .enable =3D dw_hdmi_rockchip_encoder_enable, .atomic_check =3D dw_hdmi_rockchip_encoder_atomic_check, }; =20 --=20 2.54.0 From nobody Mon May 25 04:35:17 2026 Received: from smtp.forwardemail.net (smtp.forwardemail.net [149.28.215.223]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6BC4C39023B for ; Mon, 18 May 2026 19:38:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=149.28.215.223 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779133140; cv=none; b=KyMxpGOGz2IMlRLL3r8l2D/DsA5ZeEByjcSLVuIK5MBeDZX3+Rio2+D6YTOHEoez5w/nHEEX5ZDM8YvrUBeaR0fQjLubd4Qhr4O+KVijhPl9ffhW7s1d3/DbO37dPJcxQwBMOqyUa95O9l5c4pgjLQql0buy3vo55eDjmg3tQXw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779133140; c=relaxed/simple; bh=QFLlpd4cP0yUT3YMksIMLEbwTtHfcFzD4lHn/QDJt9I=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=M3A9gRTfMOhBP/WT4w7aiIiX+KjRnCj9Gu8TfolCaNHEAE/ezRKmR9Z5HhUJgHs4RtPCp5S2ffmuvfZQIQfzYKNeX5jeTwPSBCqWyR9qdB6JOJgasoVMC1fnFOimItMvlWrjuRypEEVA1RqmrPJjoabEPSWxixg0486PFy0gzBo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=kwiboo.se; spf=pass smtp.mailfrom=fe-bounces.kwiboo.se; dkim=pass (2048-bit key) header.d=kwiboo.se header.i=@kwiboo.se header.b=qRMP4SAF; arc=none smtp.client-ip=149.28.215.223 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=kwiboo.se Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fe-bounces.kwiboo.se Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kwiboo.se header.i=@kwiboo.se header.b="qRMP4SAF" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kwiboo.se; h=Content-Transfer-Encoding: MIME-Version: References: In-Reply-To: Message-ID: Date: Subject: Cc: To: From; q=dns/txt; s=fe-e1b5cab7be; t=1779133134; bh=ZtDLujMYuaqr2SiPa1eP+PIvqx/feLGXDK/xQNhph9Y=; b=qRMP4SAFI5wS/imCVK/iPdNEklgCXYp+/dR1hvgLNUtGIQZORrZDRXclUVUw3aGmOed8mxmwz f0H7GMKHOsC0iGOGFW1xk6mZ5X2xeyBTRHKzEufV2DMmgi0oSVI9qvUXHvKAbS5U5Zwm6XeoB2s WTmDpHU1i8ggza06hSrp78pcxGib10liKPleR3yEl1/W7u6A6TWuWslyF6t7+v5H1nTPCeWk7qG eauguqo9eBSLR3KWFw2crJ1m9FrKIrtX4BBgEZ6/0PqSd7HD1LnpAaZ2aC+2UqNRDKWRqQ013Xx 6MSsqMHPMSxoPjLzCnhDQ9ii/c18xCOrOtxKdOKkLzIQ== X-Forward-Email-ID: 6a0b6aad486b4b38b826fa5c X-Forward-Email-Sender: rfc822; jonas@kwiboo.se, smtp.forwardemail.net, 149.28.215.223 X-Forward-Email-Version: 2.8.12 X-Forward-Email-Website: https://forwardemail.net X-Complaints-To: abuse@forwardemail.net X-Report-Abuse: abuse@forwardemail.net X-Report-Abuse-To: abuse@forwardemail.net From: Jonas Karlman To: =?UTF-8?q?Heiko=20St=C3=BCbner?= , Sandy Huang , Andy Yan , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Cc: dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Jonas Karlman Subject: [PATCH v2 07/11] drm/rockchip: dw_hdmi: Clean up whitespace Date: Mon, 18 May 2026 19:37:41 +0000 Message-ID: <20260518193748.2482823-8-jonas@kwiboo.se> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260518193748.2482823-1-jonas@kwiboo.se> References: <20260518193748.2482823-1-jonas@kwiboo.se> 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 Content-Type: text/plain; charset="utf-8" Move the blank line before the RK3328 definitions for readability and make the phy_config table spacing consistent with other tables. Signed-off-by: Jonas Karlman Tested-by: Heiko Stuebner #rk3328 --- v2: No change --- drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/= rockchip/dw_hdmi-rockchip.c index bd530321b49c..02ee606c648e 100644 --- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c +++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c @@ -31,8 +31,8 @@ =20 #define RK3288_GRF_SOC_CON6 0x025C #define RK3288_HDMI_LCDC_SEL BIT(4) -#define RK3328_GRF_SOC_CON2 0x0408 =20 +#define RK3328_GRF_SOC_CON2 0x0408 #define RK3328_HDMI_SDAIN_MSK BIT(11) #define RK3328_HDMI_SCLIN_MSK BIT(10) #define RK3328_HDMI_HPD_IOE BIT(2) @@ -190,11 +190,11 @@ static const struct dw_hdmi_curr_ctrl rockchip_cur_ct= r[] =3D { =20 static const struct dw_hdmi_phy_config rockchip_phy_config[] =3D { /*pixelclk symbol term vlev*/ - { 74250000, 0x8009, 0x0004, 0x0272}, - { 165000000, 0x802b, 0x0004, 0x0209}, - { 297000000, 0x8039, 0x0005, 0x028d}, - { 594000000, 0x8039, 0x0000, 0x019d}, - { ~0UL, 0x0000, 0x0000, 0x0000} + { 74250000, 0x8009, 0x0004, 0x0272 }, + { 165000000, 0x802b, 0x0004, 0x0209 }, + { 297000000, 0x8039, 0x0005, 0x028d }, + { 594000000, 0x8039, 0x0000, 0x019d }, + { ~0UL, 0x0000, 0x0000, 0x0000 }, }; =20 static enum drm_mode_status --=20 2.54.0 From nobody Mon May 25 04:35:17 2026 Received: from smtp.forwardemail.net (smtp.forwardemail.net [149.28.215.223]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 69C833815C6 for ; Mon, 18 May 2026 19:38:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=149.28.215.223 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779133140; cv=none; b=N8y/ZonNBo0OPrepKxVC46f/aFAaRYqOHZVERCZNw/VpCDXW3ykFW7buTQlb7LWyLX70dm5vg9AZxNodRFFFlQlyNGnIFmOcUHAErEH6YOfI1CUkF/P944ZaRv6pG3F2HCR6QuuiqpatgqsOUhYrHmVEGobw+xB0saVCRHEv7xk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779133140; c=relaxed/simple; bh=o1bD0HVC/Fd2LXIKhqXxwj5MCUYODe+Eb2YpiqVhDPg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=qQVW4MRYOVXxsskI9GDlhKdjTgn9ZsnIAn97R/WLKf7R4Kfz+Fk65/SXn+X6iCKVDbwL2EYgEXavKDBqPdfeanwhaoy+X29YASv9ThE8Bal/hDvcvIgTOPhfBrV4Bzyp8p5lDPRie/0dUdt3fklS0apbOuILvr7xjC4RGaxi3eg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=kwiboo.se; spf=pass smtp.mailfrom=fe-bounces.kwiboo.se; dkim=pass (2048-bit key) header.d=kwiboo.se header.i=@kwiboo.se header.b=VVCbvc+1; arc=none smtp.client-ip=149.28.215.223 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=kwiboo.se Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fe-bounces.kwiboo.se Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kwiboo.se header.i=@kwiboo.se header.b="VVCbvc+1" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kwiboo.se; h=Content-Transfer-Encoding: MIME-Version: References: In-Reply-To: Message-ID: Date: Subject: Cc: To: From; q=dns/txt; s=fe-e1b5cab7be; t=1779133130; bh=7lfieJ/EGL73t6zCSw5MfpEMZTviCbjtrDbmqYNxjp8=; b=VVCbvc+1drkj16ZsytggH8/zwKnThGJyB8sGFUOfCUqhST+CUmJ+B9rxCyoqvXbw8lrxp5SHE jcU0gsBKQfxKp/DlQSnWURltdeqyf8Y7/uL/LCISGcPEQUiDp/USwZSQmZUG3jjDluvw4iZD4pr UNeklqBXqH0ZlwMMFWBg+ZocCuyPit5lpfC3fmN8fvd5xfaDgVZdnRK19xAtxdDTMZq0Gp5j1ct /NvSk4exz8t6dZ3iviiKhnvZ35Eq4N+taBQOmQxxv/uLTFDTe6SEeXqg8XOXwOa9BdAQx/4LnLa Sx0PAXERYZdVoy7krz1xcXMC55sC1CmplDrB5I4pBlzQ== X-Forward-Email-ID: 6a0b6ab0486b4b38b826fa77 X-Forward-Email-Sender: rfc822; jonas@kwiboo.se, smtp.forwardemail.net, 149.28.215.223 X-Forward-Email-Version: 2.8.12 X-Forward-Email-Website: https://forwardemail.net X-Complaints-To: abuse@forwardemail.net X-Report-Abuse: abuse@forwardemail.net X-Report-Abuse-To: abuse@forwardemail.net From: Jonas Karlman To: =?UTF-8?q?Heiko=20St=C3=BCbner?= , Sandy Huang , Andy Yan , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Cc: dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Jonas Karlman Subject: [PATCH v2 08/11] drm/rockchip: dw_hdmi: Set output_port for RK3568/RK3566 Date: Mon, 18 May 2026 19:37:42 +0000 Message-ID: <20260518193748.2482823-9-jonas@kwiboo.se> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260518193748.2482823-1-jonas@kwiboo.se> References: <20260518193748.2482823-1-jonas@kwiboo.se> 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 Content-Type: text/plain; charset="utf-8" All in-tree RK3568/RK3566 device trees using HDMI also include the required hdmi-connector node at port@1 since their introduction. Define the output_port for RK3568 so that dw-hdmi bridge driver can pick up the display-connector bridge once the dw-hdmi connector is replaced with a bridge connector in a future change. Signed-off-by: Jonas Karlman Tested-by: Heiko Stuebner #rk3328 --- v2: No change --- drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/= rockchip/dw_hdmi-rockchip.c index 02ee606c648e..6c4923b9b659 100644 --- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c +++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c @@ -459,6 +459,7 @@ static const struct dw_hdmi_plat_data rk3568_hdmi_drv_d= ata =3D { .phy_config =3D rockchip_phy_config, .phy_data =3D &rk3568_chip_data, .use_drm_infoframe =3D true, + .output_port =3D 1, }; =20 static const struct of_device_id dw_hdmi_rockchip_dt_ids[] =3D { --=20 2.54.0 From nobody Mon May 25 04:35:17 2026 Received: from smtp.forwardemail.net (smtp.forwardemail.net [149.28.215.223]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 732A8391E55 for ; Mon, 18 May 2026 19:39:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=149.28.215.223 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779133148; cv=none; b=nfTN4z6ByWCqbX7Fmi892WefTeo2YKe4USh5M2ViVqX9UJKOQZrgKGtXZX4T3v3eLTEhBKBO9X/Y/l5NzOghAD7GovJp+EL7a37bZTdnPifL+qjjGHS0GJT6ajD+7Kxw+LtyN1ofU6DOYlQczW0r80w9UvLn3+Vb/uYJEK9Nsxc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779133148; c=relaxed/simple; bh=Y6gWsfGZv/cwkyEbJX2wrWOk5Yjhw7Qx+0CsC/CPnYM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=nJEfa2PCmgXCH3Epg3EHFrDAftRfs0BhOlo5F/b4YraK5ythWJ7DztBAPc6I2FKK8jDXLowzdXgyZ943OJVxm4NU48brvc1F1wuSv9ZCgLaLc/0ABHplyvBpNOSPqDdZ4hBmRlsJywh0CBqIARhJQj7jO7aN+DgNbinuO+38IDg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=kwiboo.se; spf=pass smtp.mailfrom=fe-bounces.kwiboo.se; dkim=pass (2048-bit key) header.d=kwiboo.se header.i=@kwiboo.se header.b=LuyV3UNY; arc=none smtp.client-ip=149.28.215.223 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=kwiboo.se Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fe-bounces.kwiboo.se Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kwiboo.se header.i=@kwiboo.se header.b="LuyV3UNY" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kwiboo.se; h=Content-Transfer-Encoding: MIME-Version: References: In-Reply-To: Message-ID: Date: Subject: Cc: To: From; q=dns/txt; s=fe-e1b5cab7be; t=1779133139; bh=Rmq5rXYq2R8CPfydo2bXTvXYgpGKdl/FCPluNApQXPM=; b=LuyV3UNY8RrWn1LUIKNCQjrI7ieqi0Bx3GKnueVy8jgo72ZdjMKUwYn0RdTjyQxaCNyNg6C73 Iuj0EEHWjHdfZl4DU1bY0wdvPP6UdgeB7wfh4sVTwhukZghQouz/uVb6Pyl6X5+X87u4AOyj3FO G9Y+cw8LDVsV4ador1ks0KiMKJjiZlsBFpdBRH7IrjEt9QRirwiHFNxw5xq3rQOAyk5jJf8qilT kyvFclElXmAr4xDpnp8TT05No1SzhyGmKBwjobqv/T3j6ZA5KlA3YVH3r4+hYuPxjMXs3o6wt9P EiURxpVmPKOM8LTDiWlhpFpNyk3tUDjJML500y1AXxmA== X-Forward-Email-ID: 6a0b6ab4486b4b38b826fa92 X-Forward-Email-Sender: rfc822; jonas@kwiboo.se, smtp.forwardemail.net, 149.28.215.223 X-Forward-Email-Version: 2.8.12 X-Forward-Email-Website: https://forwardemail.net X-Complaints-To: abuse@forwardemail.net X-Report-Abuse: abuse@forwardemail.net X-Report-Abuse-To: abuse@forwardemail.net From: Jonas Karlman To: =?UTF-8?q?Heiko=20St=C3=BCbner?= , Sandy Huang , Andy Yan , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Cc: dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Jonas Karlman Subject: [PATCH v2 09/11] drm/rockchip: dw_hdmi: Configure HDMI PHY in atomic_mode_set() Date: Mon, 18 May 2026 19:37:43 +0000 Message-ID: <20260518193748.2482823-10-jonas@kwiboo.se> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260518193748.2482823-1-jonas@kwiboo.se> References: <20260518193748.2482823-1-jonas@kwiboo.se> 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 Content-Type: text/plain; charset="utf-8" The HDMI helpers negotiated TMDS character rate and output bpc are available from the connector state. Change the encoder helper from mode_set() to atomic_mode_set() so these values can be used to configure the HDMI PHY using phy_configure(). This has no impact until the dw-hdmi bridge is fully converted into a HDMI bridge and HDMI helpers are used to assign hdmi.tmds_char_rate. Signed-off-by: Jonas Karlman Tested-by: Heiko Stuebner #rk3328 --- v2: No change --- drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 29 +++++++++++++++++---- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/= rockchip/dw_hdmi-rockchip.c index 6c4923b9b659..4e7fd4b80d76 100644 --- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c +++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c @@ -226,11 +226,22 @@ dw_hdmi_rockchip_mode_valid(struct dw_hdmi *dw_hdmi, = void *data, return MODE_OK; } =20 -static void dw_hdmi_rockchip_encoder_mode_set(struct drm_encoder *encoder, - struct drm_display_mode *mode, - struct drm_display_mode *adj_mode) +static void +dw_hdmi_rockchip_encoder_atomic_mode_set(struct drm_encoder *encoder, + struct drm_crtc_state *crtc_state, + struct drm_connector_state *conn_state) { struct rockchip_hdmi *hdmi =3D to_rockchip_hdmi(encoder); + struct drm_display_mode *adj_mode =3D &crtc_state->adjusted_mode; + + if (hdmi->phy && conn_state->hdmi.tmds_char_rate) { + union phy_configure_opts opts =3D {}; + + opts.hdmi.bpc =3D conn_state->hdmi.output_bpc; + opts.hdmi.tmds_char_rate =3D conn_state->hdmi.tmds_char_rate; + + phy_configure(hdmi->phy, &opts); + } =20 clk_set_rate(hdmi->ref_clk, adj_mode->clock * 1000); } @@ -270,15 +281,23 @@ dw_hdmi_rockchip_encoder_atomic_check(struct drm_enco= der *encoder, struct drm_connector_state *conn_state) { struct rockchip_crtc_state *s =3D to_rockchip_crtc_state(crtc_state); + struct rockchip_hdmi *hdmi =3D to_rockchip_hdmi(encoder); + union phy_configure_opts opts =3D {}; =20 s->output_mode =3D ROCKCHIP_OUT_MODE_AAAA; s->output_type =3D DRM_MODE_CONNECTOR_HDMIA; =20 - return 0; + if (!hdmi->phy || !conn_state->hdmi.tmds_char_rate) + return 0; + + opts.hdmi.bpc =3D conn_state->hdmi.output_bpc; + opts.hdmi.tmds_char_rate =3D conn_state->hdmi.tmds_char_rate; + + return phy_validate(hdmi->phy, PHY_MODE_HDMI, PHY_HDMI_MODE_TMDS, &opts); } =20 static const struct drm_encoder_helper_funcs dw_hdmi_rockchip_encoder_help= er_funcs =3D { - .mode_set =3D dw_hdmi_rockchip_encoder_mode_set, + .atomic_mode_set =3D dw_hdmi_rockchip_encoder_atomic_mode_set, .enable =3D dw_hdmi_rockchip_encoder_enable, .atomic_check =3D dw_hdmi_rockchip_encoder_atomic_check, }; --=20 2.54.0 From nobody Mon May 25 04:35:17 2026 Received: from smtp.forwardemail.net (smtp.forwardemail.net [121.127.44.73]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 87CCC3909A9 for ; Mon, 18 May 2026 19:38:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=121.127.44.73 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779133119; cv=none; b=aGk0kWMOIgoDNkanmUGqNtchdEAYqPWAP2bO9kdPj/264vjgeOxXco+Yc4uewWlI2BiQQgzZoXu0pexw/clSN3q7fEk/dLEWJLAlJzPhXteQPa9IvRQb/9SQqTTTlRHpO+rR1EkI8cxlnMsHRdG783tsugr1iCrfNXc6Su9YLx8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779133119; c=relaxed/simple; bh=b7PuPEya/IPMIcdzNrGkIYZ4xlHYWb/CNJMPjYcvkUs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=eTb4jurw4jeX6akcJS+1Vz8xsMyqgJyu3T7Ew19ErOAne1n0ItGjbM9sT4eoi0z7wGnyAv1Cfa4a6swpRh/ke1zc4gIck566QidYejeQE31codFf9gPTgmq+YK4dmpZzFkMuqDPYXgvysDq6dkEySNazruwJRbb2y+DEeROvSxc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=kwiboo.se; spf=pass smtp.mailfrom=fe-bounces.kwiboo.se; dkim=pass (2048-bit key) header.d=kwiboo.se header.i=@kwiboo.se header.b=hZzjNzKX; arc=none smtp.client-ip=121.127.44.73 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=kwiboo.se Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fe-bounces.kwiboo.se Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kwiboo.se header.i=@kwiboo.se header.b="hZzjNzKX" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kwiboo.se; h=Content-Transfer-Encoding: MIME-Version: References: In-Reply-To: Message-ID: Date: Subject: Cc: To: From; q=dns/txt; s=fe-e1b5cab7be; t=1779133116; bh=szs3Fi24AawsCdvDh+JSgiByUZb/uysg/b3saRWp/iE=; b=hZzjNzKXEyJJ1e/14kA48hMrzmaSkj1Du5miq/xIVEtgtJJVNu9MVOpNmZUb6AC2cs2O9dpbs ZeLoZV7ABzMT0jcZ1YDvCN+4B+mZxypMBIazBCBY2EaTYqFRCLb2LthC7eul9++OEspfIzgjsSD FJ/c2Tyj/OJOT2rcL6iSaLCZtsC5BCJdPmy7CNRisLxkhetrnwHBdF059UmZ+5TH25eMbNRZKYz nj2BAAOifEfP3+nSGRLCY/N7qwKoUMAa7pOYLG/yqBPt5BPOuZE3dDZBQUT/SsAEoDArfQ6+zPw lqat8LhABWIg1Z5XflKI1ITJMPUq7o3IGvWdAWv64YNQ== X-Forward-Email-ID: 6a0b6ab8486b4b38b826fac1 X-Forward-Email-Sender: rfc822; jonas@kwiboo.se, smtp.forwardemail.net, 121.127.44.73 X-Forward-Email-Version: 2.8.12 X-Forward-Email-Website: https://forwardemail.net X-Complaints-To: abuse@forwardemail.net X-Report-Abuse: abuse@forwardemail.net X-Report-Abuse-To: abuse@forwardemail.net From: Jonas Karlman To: =?UTF-8?q?Heiko=20St=C3=BCbner?= , Sandy Huang , Andy Yan , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Cc: dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Jonas Karlman Subject: [PATCH v2 10/11] drm/rockchip: dw_hdmi: Propagate bus format to display driver Date: Mon, 18 May 2026 19:37:44 +0000 Message-ID: <20260518193748.2482823-11-jonas@kwiboo.se> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260518193748.2482823-1-jonas@kwiboo.se> References: <20260518193748.2482823-1-jonas@kwiboo.se> 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 Content-Type: text/plain; charset="utf-8" The HDMI block is currently hardcoded to expect RGB output from the display controller. However, the VOP in some SoCs are capable of YCbCr output to the HDMI block. Read the negotiated bus format from the bridge state and propagate it to the CRCT state in form of output mode and bus format. Treat the format MEDIA_BUS_FMT_FIXED as RGB888 and reject any unsupported formats. This has no inpact until dw-hdmi bridge is fully converted to a HDMI bridge and also adds support for the "color format" connector property. Signed-off-by: Jonas Karlman Tested-by: Heiko Stuebner #rk3328 --- v2: No change --- drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 44 ++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/= rockchip/dw_hdmi-rockchip.c index 4e7fd4b80d76..0133a4b67b3b 100644 --- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c +++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c @@ -5,6 +5,7 @@ =20 #include #include +#include #include #include #include @@ -275,6 +276,26 @@ static void dw_hdmi_rockchip_encoder_enable(struct drm= _encoder *encoder) dev_dbg(hdmi->dev, "vop %s output to hdmi\n", ret ? "LIT" : "BIG"); } =20 +static u32 dw_hdmi_rockchip_get_bus_format(struct drm_encoder *encoder, + struct drm_connector_state *conn_state) +{ + struct drm_bridge *bridge __free(drm_bridge_put) =3D NULL; + struct drm_bridge_state *bridge_state; + + bridge =3D drm_bridge_chain_get_first_bridge(encoder); + if (!bridge) + return 0; + + bridge_state =3D drm_atomic_get_bridge_state(conn_state->state, bridge); + if (!bridge_state) + return 0; + + if (bridge_state->input_bus_cfg.format !=3D MEDIA_BUS_FMT_FIXED) + return bridge_state->input_bus_cfg.format; + + return bridge_state->output_bus_cfg.format; +} + static int dw_hdmi_rockchip_encoder_atomic_check(struct drm_encoder *encoder, struct drm_crtc_state *crtc_state, @@ -283,9 +304,30 @@ dw_hdmi_rockchip_encoder_atomic_check(struct drm_encod= er *encoder, struct rockchip_crtc_state *s =3D to_rockchip_crtc_state(crtc_state); struct rockchip_hdmi *hdmi =3D to_rockchip_hdmi(encoder); union phy_configure_opts opts =3D {}; + u32 bus_format; + + bus_format =3D dw_hdmi_rockchip_get_bus_format(encoder, conn_state); + + switch (bus_format) { + case MEDIA_BUS_FMT_FIXED: + bus_format =3D MEDIA_BUS_FMT_RGB888_1X24; + fallthrough; + case MEDIA_BUS_FMT_RGB888_1X24: + case MEDIA_BUS_FMT_RGB101010_1X30: + case MEDIA_BUS_FMT_YUV8_1X24: + case MEDIA_BUS_FMT_YUV10_1X30: + s->output_mode =3D ROCKCHIP_OUT_MODE_AAAA; + break; + case MEDIA_BUS_FMT_UYYVYY8_0_5X24: + case MEDIA_BUS_FMT_UYYVYY10_0_5X30: + s->output_mode =3D ROCKCHIP_OUT_MODE_YUV420; + break; + default: + return -EINVAL; + } =20 - s->output_mode =3D ROCKCHIP_OUT_MODE_AAAA; s->output_type =3D DRM_MODE_CONNECTOR_HDMIA; + s->bus_format =3D bus_format; =20 if (!hdmi->phy || !conn_state->hdmi.tmds_char_rate) return 0; --=20 2.54.0 From nobody Mon May 25 04:35:17 2026 Received: from smtp.forwardemail.net (smtp.forwardemail.net [121.127.44.66]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9817B38F947 for ; Mon, 18 May 2026 19:38:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=121.127.44.66 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779133124; cv=none; b=KZjgW56djK8xbFeyJwjuylGXhe5dBPCdWTcFCWDp9YgHULMf+lF+w87xJobhhe8mPXTw1f72pkwu002/PkO9Nhf1vqWfJ6V8mMfI9C3+ddQPUjv5tXGe8O+5YeBZ/IzQObratsJvasSZu1Vdwpp6MkqaDehV3teHdWGh3hzxlmw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779133124; c=relaxed/simple; bh=PPQeVW/kwCD+GFRkMbwJmF+8UhF9KamJiismIEZObpk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=P2RKmtOrTP29MrUOMnQMKWRLM+b1ZsKZ+oO6DZ+Ig+JcLMvnrrxcrMTyySgKdKGfPhU6blpqWKuwvFS/lgroip272qPdgOTjPNaPWo8iCIwuF+3FPLKJlJsGmEsqTYgcOjFhzyuIzf4QK/4hQ4brdAqVzO+UwbLxV5d3W0rYgNg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=kwiboo.se; spf=pass smtp.mailfrom=fe-bounces.kwiboo.se; dkim=pass (2048-bit key) header.d=kwiboo.se header.i=@kwiboo.se header.b=iq0rBncQ; arc=none smtp.client-ip=121.127.44.66 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=kwiboo.se Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fe-bounces.kwiboo.se Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kwiboo.se header.i=@kwiboo.se header.b="iq0rBncQ" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kwiboo.se; h=Content-Transfer-Encoding: MIME-Version: References: In-Reply-To: Message-ID: Date: Subject: Cc: To: From; q=dns/txt; s=fe-e1b5cab7be; t=1779133119; bh=XEwDdtys9FjJECYlrc2Okrnfg0gf3ND0lggi7Dw2M8o=; b=iq0rBncQVfMmWdaupMD277dVly8+SD0LaE2/Ul7AzJgW1Mphyzz5O/LVs0Escjq1rzqKr4Ltv g5H6N7zfYVGP4jNIhflYoT/v7glcrCg/k43Os2hs49kDRpJ3nqDZ63Q5zsc0N8X/erT3ENkBQHG tmTKS66zeFSbRe7jd5sPnoDp+yBnbifUmU3C0QSNlhqd6LbKYfZNcr7N82+8WAxrkH2AjT/Zb2I rjV3VwsVCi/8k90hQ9IKrYTrkJbr4X68o9hGxM8WvopuZjhKZuoPSMoOyTKXErku1Fi97UBj8se f07c/GdY4eLzeabjilvaZVpOMqq4ot5JBMmStNyrb4QQ== X-Forward-Email-ID: 6a0b6abb486b4b38b826fae7 X-Forward-Email-Sender: rfc822; jonas@kwiboo.se, smtp.forwardemail.net, 121.127.44.66 X-Forward-Email-Version: 2.8.12 X-Forward-Email-Website: https://forwardemail.net X-Complaints-To: abuse@forwardemail.net X-Report-Abuse: abuse@forwardemail.net X-Report-Abuse-To: abuse@forwardemail.net From: Jonas Karlman To: =?UTF-8?q?Heiko=20St=C3=BCbner?= , Sandy Huang , Andy Yan , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Cc: dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Jonas Karlman Subject: [PATCH v2 11/11] drm/rockchip: dw_hdmi: Use resume_early pm ops for system suspend Date: Mon, 18 May 2026 19:37:45 +0000 Message-ID: <20260518193748.2482823-12-jonas@kwiboo.se> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260518193748.2482823-1-jonas@kwiboo.se> References: <20260518193748.2482823-1-jonas@kwiboo.se> 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 Content-Type: text/plain; charset="utf-8" rockchip_drm_sys_resume()/drm_mode_config_helper_resume() is called before the resume pm ops of dw-hdmi. This result in an atomic_enable() before dw_hdmi_rockchip_resume()/dw_hdmi_resume() is called. Resume (without changes): - rockchip_drm_sys_resume() - drm_mode_config_helper_resume() - atomic_enable() - dw_hdmi_rockchip_resume() - dw_hdmi_resume() - dw_hdmi_init_hw() Change to use resume_early pm ops for system suspend to ensure pm ops for dw-hdmi is run before rockchip-drm pm ops. Also fix a possible NULL pointer dereference timing issue while at it. Resume (with changes): - dw_hdmi_rockchip_resume_early() - dw_hdmi_resume() - dw_hdmi_init_hw() - rockchip_drm_sys_resume() - drm_mode_config_helper_resume() - atomic_enable() Signed-off-by: Jonas Karlman Tested-by: Heiko Stuebner #rk3328 --- v2: New patch This can be tested using CONFIG_PM_DEBUG with a simulated suspend: echo N > /sys/module/printk/parameters/console_suspend echo 1 > /sys/power/pm_debug_messages echo platform > /sys/power/pm_test echo mem > /sys/power/state or using something like following for real suspend/resume: echo N > /sys/module/printk/parameters/console_suspend rtcwake -m mem -s 5 Note that RK356x has an issue related to EHCI/OHCI and a missing USBPHY clock reference during suspend, and GPU during resume (mainline TF-A). A separate patch to address the ECHI/OHCI issue will be sent. --- drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/= rockchip/dw_hdmi-rockchip.c index 0133a4b67b3b..ac6a48ce8642 100644 --- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c +++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c @@ -692,17 +692,18 @@ static void dw_hdmi_rockchip_remove(struct platform_d= evice *pdev) component_del(&pdev->dev, &dw_hdmi_rockchip_ops); } =20 -static int __maybe_unused dw_hdmi_rockchip_resume(struct device *dev) +static int __maybe_unused dw_hdmi_rockchip_resume_early(struct device *dev) { struct rockchip_hdmi *hdmi =3D dev_get_drvdata(dev); =20 - dw_hdmi_resume(hdmi->hdmi); + if (hdmi) + dw_hdmi_resume(hdmi->hdmi); =20 return 0; } =20 static const struct dev_pm_ops dw_hdmi_rockchip_pm =3D { - SET_SYSTEM_SLEEP_PM_OPS(NULL, dw_hdmi_rockchip_resume) + SET_LATE_SYSTEM_SLEEP_PM_OPS(NULL, dw_hdmi_rockchip_resume_early) }; =20 struct platform_driver dw_hdmi_rockchip_pltfm_driver =3D { --=20 2.54.0