* [PATCH 0/3] Add HDMI for Gameforce Ace
@ 2025-11-06 18:09 Chris Morgan
2025-11-06 18:09 ` [PATCH 1/3] dt-bindings: display: rockchip: Add no-hpd for dw-hdmi-qp controller Chris Morgan
` (2 more replies)
0 siblings, 3 replies; 8+ messages in thread
From: Chris Morgan @ 2025-11-06 18:09 UTC (permalink / raw)
To: linux-rockchip
Cc: devicetree, dri-devel, cristian.ciocaltea, sebastian.reichel,
jernej.skrabec, jonas, Laurent.pinchart, rfoss, neil.armstrong,
andrzej.hajda, conor+dt, krzk+dt, robh, tzimmermann, mripard,
andy.yan, heiko, Chris Morgan
From: Chris Morgan <macromorgan@hotmail.com>
Add support for the micro HDMI port for the Gameforce Ace. This port does
not have a HPD pin so it requires making changes to the HDMI controller
to support this configuration.
Chris Morgan (3):
dt-bindings: display: rockchip: Add no-hpd for dw-hdmi-qp controller
drm/bridge: dw-hdmi-qp: Add support for missing HPD
arm64: dts: rockchip: Add HDMI to Gameforce Ace
.../rockchip/rockchip,rk3588-dw-hdmi-qp.yaml | 6 ++
.../dts/rockchip/rk3588s-gameforce-ace.dts | 63 +++++++++++++++++++
drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c | 35 +++++++++--
3 files changed, 100 insertions(+), 4 deletions(-)
--
2.43.0
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/3] dt-bindings: display: rockchip: Add no-hpd for dw-hdmi-qp controller
2025-11-06 18:09 [PATCH 0/3] Add HDMI for Gameforce Ace Chris Morgan
@ 2025-11-06 18:09 ` Chris Morgan
2025-11-07 17:26 ` Conor Dooley
2025-11-06 18:09 ` [PATCH 2/3] drm/bridge: dw-hdmi-qp: Add support for missing HPD Chris Morgan
2025-11-06 18:09 ` [PATCH 3/3] arm64: dts: rockchip: Add HDMI to Gameforce Ace Chris Morgan
2 siblings, 1 reply; 8+ messages in thread
From: Chris Morgan @ 2025-11-06 18:09 UTC (permalink / raw)
To: linux-rockchip
Cc: devicetree, dri-devel, cristian.ciocaltea, sebastian.reichel,
jernej.skrabec, jonas, Laurent.pinchart, rfoss, neil.armstrong,
andrzej.hajda, conor+dt, krzk+dt, robh, tzimmermann, mripard,
andy.yan, heiko, Chris Morgan
From: Chris Morgan <macromorgan@hotmail.com>
Add an attribute of "no-hpd" for the Rockchip dw-hdmi-qp controller.
This is used to describe implementations where the HPD pin is not
connected or used for other purposes, such as in the RK3588S based
Gameforce Ace which repurposed the GPIO for an additional face
button.
The "no-hpd" option was chosen to be consistent with other devices
which already define this parameter for broken or missing hpd
functionality.
Signed-off-by: Chris Morgan <macromorgan@hotmail.com>
---
.../display/rockchip/rockchip,rk3588-dw-hdmi-qp.yaml | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/Documentation/devicetree/bindings/display/rockchip/rockchip,rk3588-dw-hdmi-qp.yaml b/Documentation/devicetree/bindings/display/rockchip/rockchip,rk3588-dw-hdmi-qp.yaml
index 96b4b088eebe..07342838cd52 100644
--- a/Documentation/devicetree/bindings/display/rockchip/rockchip,rk3588-dw-hdmi-qp.yaml
+++ b/Documentation/devicetree/bindings/display/rockchip/rockchip,rk3588-dw-hdmi-qp.yaml
@@ -69,6 +69,12 @@ properties:
- const: main
- const: hpd
+ no-hpd:
+ type: boolean
+ description:
+ The HPD pin is not present or used for another purpose, and the EDID
+ must be polled instead to determine if a device is attached.
+
phys:
maxItems: 1
description: The HDMI/eDP PHY
--
2.43.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/3] drm/bridge: dw-hdmi-qp: Add support for missing HPD
2025-11-06 18:09 [PATCH 0/3] Add HDMI for Gameforce Ace Chris Morgan
2025-11-06 18:09 ` [PATCH 1/3] dt-bindings: display: rockchip: Add no-hpd for dw-hdmi-qp controller Chris Morgan
@ 2025-11-06 18:09 ` Chris Morgan
2025-11-06 19:40 ` Heiko Stuebner
2025-11-06 18:09 ` [PATCH 3/3] arm64: dts: rockchip: Add HDMI to Gameforce Ace Chris Morgan
2 siblings, 1 reply; 8+ messages in thread
From: Chris Morgan @ 2025-11-06 18:09 UTC (permalink / raw)
To: linux-rockchip
Cc: devicetree, dri-devel, cristian.ciocaltea, sebastian.reichel,
jernej.skrabec, jonas, Laurent.pinchart, rfoss, neil.armstrong,
andrzej.hajda, conor+dt, krzk+dt, robh, tzimmermann, mripard,
andy.yan, heiko, Chris Morgan
From: Chris Morgan <macromorgan@hotmail.com>
Add support for the dw-hdmi-qp driver to handle devices with missing
HPD pins.
Since in this situation we are now polling for the EDID data via i2c
change the error message to a debug message when we are unable to
complete an i2c read, as a disconnected device would otherwise fill
dmesg with i2c read errors.
Signed-off-by: Chris Morgan <macromorgan@hotmail.com>
---
drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c | 35 +++++++++++++++++---
1 file changed, 31 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c
index 39332c57f2c5..b221f797de3d 100644
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c
@@ -145,6 +145,7 @@ struct dw_hdmi_qp {
struct regmap *regm;
unsigned long tmds_char_rate;
+ bool no_hpd;
};
static void dw_hdmi_qp_write(struct dw_hdmi_qp *hdmi, unsigned int val,
@@ -520,6 +521,11 @@ static int dw_hdmi_qp_i2c_read(struct dw_hdmi_qp *hdmi,
i2c->is_regaddr = true;
}
+ /*
+ * Mark errors as debug messages when using no_hpd so no device
+ * attached does not fill up dmesg.
+ */
+
while (length--) {
reinit_completion(&i2c->cmp);
@@ -535,14 +541,20 @@ static int dw_hdmi_qp_i2c_read(struct dw_hdmi_qp *hdmi,
stat = wait_for_completion_timeout(&i2c->cmp, HZ / 10);
if (!stat) {
- dev_err(hdmi->dev, "i2c read timed out\n");
+ if (hdmi->no_hpd)
+ dev_dbg(hdmi->dev, "i2c read timed out\n");
+ else
+ dev_err(hdmi->dev, "i2c read timed out\n");
dw_hdmi_qp_write(hdmi, 0x01, I2CM_CONTROL0);
return -EAGAIN;
}
/* Check for error condition on the bus */
if (i2c->stat & I2CM_NACK_RCVD_IRQ) {
- dev_err(hdmi->dev, "i2c read error\n");
+ if (hdmi->no_hpd)
+ dev_dbg(hdmi->dev, "i2c read error\n");
+ else
+ dev_err(hdmi->dev, "i2c read error\n");
dw_hdmi_qp_write(hdmi, 0x01, I2CM_CONTROL0);
return -EIO;
}
@@ -879,6 +891,15 @@ static enum drm_connector_status
dw_hdmi_qp_bridge_detect(struct drm_bridge *bridge, struct drm_connector *connector)
{
struct dw_hdmi_qp *hdmi = bridge->driver_private;
+ const struct drm_edid *drm_edid;
+
+ if (hdmi->no_hpd) {
+ drm_edid = drm_edid_read_ddc(connector, bridge->ddc);
+ if (drm_edid)
+ return connector_status_connected;
+ else
+ return connector_status_disconnected;
+ }
return hdmi->phy.ops->read_hpd(hdmi, hdmi->phy.data);
}
@@ -1074,12 +1095,18 @@ struct dw_hdmi_qp *dw_hdmi_qp_bind(struct platform_device *pdev,
if (ret)
return ERR_PTR(ret);
+ if (of_property_present(pdev->dev.of_node, "no-hpd"))
+ hdmi->no_hpd = 1;
+ else
+ hdmi->no_hpd = 0;
+
hdmi->bridge.driver_private = hdmi;
hdmi->bridge.ops = DRM_BRIDGE_OP_DETECT |
DRM_BRIDGE_OP_EDID |
DRM_BRIDGE_OP_HDMI |
- DRM_BRIDGE_OP_HDMI_AUDIO |
- DRM_BRIDGE_OP_HPD;
+ DRM_BRIDGE_OP_HDMI_AUDIO;
+ if (!hdmi->no_hpd)
+ hdmi->bridge.ops |= DRM_BRIDGE_OP_HPD;
hdmi->bridge.of_node = pdev->dev.of_node;
hdmi->bridge.type = DRM_MODE_CONNECTOR_HDMIA;
hdmi->bridge.vendor = "Synopsys";
--
2.43.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 3/3] arm64: dts: rockchip: Add HDMI to Gameforce Ace
2025-11-06 18:09 [PATCH 0/3] Add HDMI for Gameforce Ace Chris Morgan
2025-11-06 18:09 ` [PATCH 1/3] dt-bindings: display: rockchip: Add no-hpd for dw-hdmi-qp controller Chris Morgan
2025-11-06 18:09 ` [PATCH 2/3] drm/bridge: dw-hdmi-qp: Add support for missing HPD Chris Morgan
@ 2025-11-06 18:09 ` Chris Morgan
2 siblings, 0 replies; 8+ messages in thread
From: Chris Morgan @ 2025-11-06 18:09 UTC (permalink / raw)
To: linux-rockchip
Cc: devicetree, dri-devel, cristian.ciocaltea, sebastian.reichel,
jernej.skrabec, jonas, Laurent.pinchart, rfoss, neil.armstrong,
andrzej.hajda, conor+dt, krzk+dt, robh, tzimmermann, mripard,
andy.yan, heiko, Chris Morgan
From: Chris Morgan <macromorgan@hotmail.com>
Add support for the HDMI port for the Gameforce Ace. The HDMI port
has no HPD pin present (the manufacturer's devicetree states the pin
is reused for an additional face button) so add the attribute of
no_hpd to poll for connected devices.
Signed-off-by: Chris Morgan <macromorgan@hotmail.com>
---
.../dts/rockchip/rk3588s-gameforce-ace.dts | 63 +++++++++++++++++++
1 file changed, 63 insertions(+)
diff --git a/arch/arm64/boot/dts/rockchip/rk3588s-gameforce-ace.dts b/arch/arm64/boot/dts/rockchip/rk3588s-gameforce-ace.dts
index f5894672fcbd..b98e1a3369dc 100644
--- a/arch/arm64/boot/dts/rockchip/rk3588s-gameforce-ace.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3588s-gameforce-ace.dts
@@ -300,6 +300,20 @@ amp_headphone: headphone-amplifier {
sound-name-prefix = "Headphones Amplifier";
};
+ hdmi0-con {
+ compatible = "hdmi-connector";
+ ddc-en-gpios = <&gpio4 RK_PB3 GPIO_ACTIVE_HIGH>;
+ pinctrl-0 = <&hdmi0_en>;
+ pinctrl-names = "default";
+ type = "d";
+
+ port {
+ hdmi0_con_in: endpoint {
+ remote-endpoint = <&hdmi0_out_con>;
+ };
+ };
+ };
+
pwm_fan: pwm-fan {
compatible = "pwm-fan";
#cooling-cells = <2>;
@@ -498,6 +512,34 @@ &gpu {
status = "okay";
};
+&hdmi0 {
+ no-hpd;
+ pinctrl-0 = <&hdmim0_tx0_cec>, <&hdmim0_tx0_scl>,
+ <&hdmim0_tx0_sda>;
+ pinctrl-names = "default";
+ status = "okay";
+};
+
+&hdmi0_in {
+ hdmi0_in_vp0: endpoint {
+ remote-endpoint = <&vp0_out_hdmi0>;
+ };
+};
+
+&hdmi0_out {
+ hdmi0_out_con: endpoint {
+ remote-endpoint = <&hdmi0_con_in>;
+ };
+};
+
+&hdmi0_sound {
+ status = "okay";
+};
+
+&hdptxphy0 {
+ status = "okay";
+};
+
&i2c0 {
pinctrl-0 = <&i2c0m2_xfer>;
pinctrl-names = "default";
@@ -746,6 +788,10 @@ &i2s0_sdi0
status = "okay";
};
+&i2s5_8ch {
+ status = "okay";
+};
+
&mipidcphy0 {
status = "okay";
};
@@ -842,6 +888,13 @@ charger_int_h: charger-int-h {
};
};
+ hdmi {
+ hdmi0_en: hdmi0-en {
+ rockchip,pins =
+ <4 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
+ };
+ };
+
hym8563 {
hym8563_int: hym8563-int {
rockchip,pins =
@@ -1416,6 +1469,16 @@ &vop_mmu {
status = "okay";
};
+&vp0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ vp0_out_hdmi0: endpoint@ROCKCHIP_VOP2_EP_HDMI0 {
+ reg = <ROCKCHIP_VOP2_EP_HDMI0>;
+ remote-endpoint = <&hdmi0_in_vp0>;
+ };
+};
+
&vp3 {
#address-cells = <1>;
#size-cells = <0>;
--
2.43.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 2/3] drm/bridge: dw-hdmi-qp: Add support for missing HPD
2025-11-06 18:09 ` [PATCH 2/3] drm/bridge: dw-hdmi-qp: Add support for missing HPD Chris Morgan
@ 2025-11-06 19:40 ` Heiko Stuebner
2025-11-06 23:46 ` Chris Morgan
2025-11-07 10:08 ` Sebastian Reichel
0 siblings, 2 replies; 8+ messages in thread
From: Heiko Stuebner @ 2025-11-06 19:40 UTC (permalink / raw)
To: linux-rockchip, Chris Morgan
Cc: devicetree, dri-devel, cristian.ciocaltea, sebastian.reichel,
jernej.skrabec, jonas, Laurent.pinchart, rfoss, neil.armstrong,
andrzej.hajda, conor+dt, krzk+dt, robh, tzimmermann, mripard,
andy.yan, Chris Morgan
Am Donnerstag, 6. November 2025, 19:09:13 Mitteleuropäische Normalzeit schrieb Chris Morgan:
> From: Chris Morgan <macromorgan@hotmail.com>
>
> Add support for the dw-hdmi-qp driver to handle devices with missing
> HPD pins.
>
> Since in this situation we are now polling for the EDID data via i2c
> change the error message to a debug message when we are unable to
> complete an i2c read, as a disconnected device would otherwise fill
> dmesg with i2c read errors.
>
> Signed-off-by: Chris Morgan <macromorgan@hotmail.com>
> @@ -1074,12 +1095,18 @@ struct dw_hdmi_qp *dw_hdmi_qp_bind(struct platform_device *pdev,
> if (ret)
> return ERR_PTR(ret);
>
> + if (of_property_present(pdev->dev.of_node, "no-hpd"))
> + hdmi->no_hpd = 1;
> + else
> + hdmi->no_hpd = 0;
> +
what is the argument against
hdmi->no_hpd = of_property_read_bool(pdev->dev.of_node, "no-hpd")); ?
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/3] drm/bridge: dw-hdmi-qp: Add support for missing HPD
2025-11-06 19:40 ` Heiko Stuebner
@ 2025-11-06 23:46 ` Chris Morgan
2025-11-07 10:08 ` Sebastian Reichel
1 sibling, 0 replies; 8+ messages in thread
From: Chris Morgan @ 2025-11-06 23:46 UTC (permalink / raw)
To: Heiko Stuebner
Cc: linux-rockchip, Chris Morgan, devicetree, dri-devel,
cristian.ciocaltea, sebastian.reichel, jernej.skrabec, jonas,
Laurent.pinchart, rfoss, neil.armstrong, andrzej.hajda, conor+dt,
krzk+dt, robh, tzimmermann, mripard, andy.yan
On Thu, Nov 06, 2025 at 08:40:55PM +0100, Heiko Stuebner wrote:
> Am Donnerstag, 6. November 2025, 19:09:13 Mitteleuropäische Normalzeit schrieb Chris Morgan:
> > From: Chris Morgan <macromorgan@hotmail.com>
> >
> > Add support for the dw-hdmi-qp driver to handle devices with missing
> > HPD pins.
> >
> > Since in this situation we are now polling for the EDID data via i2c
> > change the error message to a debug message when we are unable to
> > complete an i2c read, as a disconnected device would otherwise fill
> > dmesg with i2c read errors.
> >
> > Signed-off-by: Chris Morgan <macromorgan@hotmail.com>
>
> > @@ -1074,12 +1095,18 @@ struct dw_hdmi_qp *dw_hdmi_qp_bind(struct platform_device *pdev,
> > if (ret)
> > return ERR_PTR(ret);
> >
> > + if (of_property_present(pdev->dev.of_node, "no-hpd"))
> > + hdmi->no_hpd = 1;
> > + else
> > + hdmi->no_hpd = 0;
> > +
>
> what is the argument against
>
> hdmi->no_hpd = of_property_read_bool(pdev->dev.of_node, "no-hpd")); ?
>
I'm a self taught and not always that efficient? :-p
I'll make the change for the next version.
Thank you,
Chris
>
>
>
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/3] drm/bridge: dw-hdmi-qp: Add support for missing HPD
2025-11-06 19:40 ` Heiko Stuebner
2025-11-06 23:46 ` Chris Morgan
@ 2025-11-07 10:08 ` Sebastian Reichel
1 sibling, 0 replies; 8+ messages in thread
From: Sebastian Reichel @ 2025-11-07 10:08 UTC (permalink / raw)
To: Heiko Stuebner
Cc: linux-rockchip, Chris Morgan, devicetree, dri-devel,
cristian.ciocaltea, jernej.skrabec, jonas, Laurent.pinchart,
rfoss, neil.armstrong, andrzej.hajda, conor+dt, krzk+dt, robh,
tzimmermann, mripard, andy.yan, Chris Morgan
[-- Attachment #1: Type: text/plain, Size: 1223 bytes --]
Hi,
On Thu, Nov 06, 2025 at 08:40:55PM +0100, Heiko Stuebner wrote:
> Am Donnerstag, 6. November 2025, 19:09:13 Mitteleuropäische Normalzeit schrieb Chris Morgan:
> > From: Chris Morgan <macromorgan@hotmail.com>
> >
> > Add support for the dw-hdmi-qp driver to handle devices with missing
> > HPD pins.
> >
> > Since in this situation we are now polling for the EDID data via i2c
> > change the error message to a debug message when we are unable to
> > complete an i2c read, as a disconnected device would otherwise fill
> > dmesg with i2c read errors.
> >
> > Signed-off-by: Chris Morgan <macromorgan@hotmail.com>
>
> > @@ -1074,12 +1095,18 @@ struct dw_hdmi_qp *dw_hdmi_qp_bind(struct platform_device *pdev,
> > if (ret)
> > return ERR_PTR(ret);
> >
> > + if (of_property_present(pdev->dev.of_node, "no-hpd"))
> > + hdmi->no_hpd = 1;
> > + else
> > + hdmi->no_hpd = 0;
> > +
>
> what is the argument against
>
> hdmi->no_hpd = of_property_read_bool(pdev->dev.of_node, "no-hpd")); ?
Would be even better to use this, which avoids adding DT specific
code to the bridge driver:
hdmi->no_hpd = device_property_read_bool(pdev->dev, "no-hpd");
Greetings,
-- Sebastian
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/3] dt-bindings: display: rockchip: Add no-hpd for dw-hdmi-qp controller
2025-11-06 18:09 ` [PATCH 1/3] dt-bindings: display: rockchip: Add no-hpd for dw-hdmi-qp controller Chris Morgan
@ 2025-11-07 17:26 ` Conor Dooley
0 siblings, 0 replies; 8+ messages in thread
From: Conor Dooley @ 2025-11-07 17:26 UTC (permalink / raw)
To: Chris Morgan
Cc: linux-rockchip, devicetree, dri-devel, cristian.ciocaltea,
sebastian.reichel, jernej.skrabec, jonas, Laurent.pinchart, rfoss,
neil.armstrong, andrzej.hajda, conor+dt, krzk+dt, robh,
tzimmermann, mripard, andy.yan, heiko, Chris Morgan
[-- Attachment #1: Type: text/plain, Size: 738 bytes --]
On Thu, Nov 06, 2025 at 12:09:12PM -0600, Chris Morgan wrote:
> From: Chris Morgan <macromorgan@hotmail.com>
>
> Add an attribute of "no-hpd" for the Rockchip dw-hdmi-qp controller.
> This is used to describe implementations where the HPD pin is not
> connected or used for other purposes, such as in the RK3588S based
> Gameforce Ace which repurposed the GPIO for an additional face
> button.
>
> The "no-hpd" option was chosen to be consistent with other devices
> which already define this parameter for broken or missing hpd
> functionality.
Glad you mentioned this, so we could avoid the "why have you no vendor
prefix" conversation :)
Acked-by: Conor Dooley <conor.dooley@microchip.com>
pw-bot: not-applicable
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2025-11-07 17:26 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-11-06 18:09 [PATCH 0/3] Add HDMI for Gameforce Ace Chris Morgan
2025-11-06 18:09 ` [PATCH 1/3] dt-bindings: display: rockchip: Add no-hpd for dw-hdmi-qp controller Chris Morgan
2025-11-07 17:26 ` Conor Dooley
2025-11-06 18:09 ` [PATCH 2/3] drm/bridge: dw-hdmi-qp: Add support for missing HPD Chris Morgan
2025-11-06 19:40 ` Heiko Stuebner
2025-11-06 23:46 ` Chris Morgan
2025-11-07 10:08 ` Sebastian Reichel
2025-11-06 18:09 ` [PATCH 3/3] arm64: dts: rockchip: Add HDMI to Gameforce Ace Chris Morgan
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).