From: Chaoyi Chen <kernel@airkyi.com>
To: Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>, Vinod Koul <vkoul@kernel.org>,
Kishon Vijay Abraham I <kishon@kernel.org>,
Heiko Stuebner <heiko@sntech.de>,
Sandy Huang <hjc@rock-chips.com>,
Andy Yan <andy.yan@rock-chips.com>,
Yubing Zhang <yubing.zhang@rock-chips.com>,
Frank Wang <frank.wang@rock-chips.com>,
Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
Maxime Ripard <mripard@kernel.org>,
Thomas Zimmermann <tzimmermann@suse.de>,
David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>,
Amit Sunil Dhamne <amitsd@google.com>,
Heikki Krogerus <heikki.krogerus@linux.intel.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Chaoyi Chen <chaoyi.chen@rock-chips.com>,
Dragan Simic <dsimic@manjaro.org>,
Johan Jonker <jbx6244@gmail.com>,
Diederik de Haas <didi.debian@cknow.org>,
Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>,
Peter Robinson <pbrobinson@gmail.com>
Cc: linux-usb@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org,
linux-arm-kernel@lists.infradead.org,
linux-rockchip@lists.infradead.org,
dri-devel@lists.freedesktop.org
Subject: [PATCH v5 1/8] usb: typec: Add default HPD device when register DisplayPort altmode
Date: Sat, 11 Oct 2025 11:32:26 +0800 [thread overview]
Message-ID: <20251011033233.97-2-kernel@airkyi.com> (raw)
In-Reply-To: <20251011033233.97-1-kernel@airkyi.com>
From: Chaoyi Chen <chaoyi.chen@rock-chips.com>
Add default DRM AUX HPD bridge device when register DisplayPort
altmode. That makes it redundant for each Type-C driver to implement
a similar registration process in embedded scenarios.
Signed-off-by: Chaoyi Chen <chaoyi.chen@rock-chips.com>
---
Changes in v5:
- Remove the calls related to `drm_aux_hpd_bridge_notify()`.
- Place the helper functions in the same compilation unit.
- Add more comments about parent device.
drivers/usb/typec/class.c | 26 ++++++++++++++++++++++++++
include/linux/usb/typec_altmode.h | 2 ++
2 files changed, 28 insertions(+)
diff --git a/drivers/usb/typec/class.c b/drivers/usb/typec/class.c
index 67a533e35150..e9d7772d1a8f 100644
--- a/drivers/usb/typec/class.c
+++ b/drivers/usb/typec/class.c
@@ -8,14 +8,18 @@
#include <linux/module.h>
#include <linux/mutex.h>
+#include <linux/of.h>
#include <linux/property.h>
#include <linux/slab.h>
#include <linux/string_choices.h>
#include <linux/usb/pd_vdo.h>
+#include <linux/usb/typec_dp.h>
#include <linux/usb/typec_mux.h>
#include <linux/usb/typec_retimer.h>
#include <linux/usb.h>
+#include <drm/bridge/aux-bridge.h>
+
#include "bus.h"
#include "class.h"
#include "pd.h"
@@ -538,6 +542,21 @@ const struct device_type typec_altmode_dev_type = {
.release = typec_altmode_release,
};
+static void dp_altmode_hpd_device_register(struct typec_altmode *alt)
+{
+ if (alt->svid != USB_TYPEC_DP_SID)
+ return;
+
+ /*
+ * alt->dev.parent->parent : USB-C controller device
+ * alt->dev.parent : USB-C connector device
+ */
+ alt->hpd_dev = drm_dp_hpd_bridge_register(alt->dev.parent->parent,
+ to_of_node(alt->dev.parent->fwnode));
+ if (IS_ERR(alt->hpd_dev))
+ alt->hpd_dev = NULL;
+}
+
static struct typec_altmode *
typec_register_altmode(struct device *parent,
const struct typec_altmode_desc *desc)
@@ -600,6 +619,13 @@ typec_register_altmode(struct device *parent,
return ERR_PTR(ret);
}
+ /*
+ * It is too late to register the HPD device when the DisplayPort
+ * altmode device becomes ready. If the current altmode is DP,
+ * register a static HPD device.
+ */
+ dp_altmode_hpd_device_register(&alt->adev);
+
return &alt->adev;
}
diff --git a/include/linux/usb/typec_altmode.h b/include/linux/usb/typec_altmode.h
index b3c0866ea70f..acb0af1b9d5d 100644
--- a/include/linux/usb/typec_altmode.h
+++ b/include/linux/usb/typec_altmode.h
@@ -21,6 +21,7 @@ struct typec_altmode_ops;
* @desc: Optional human readable description of the mode
* @ops: Operations vector from the driver
* @cable_ops: Cable operations vector from the driver.
+ * @hpd_dev: HPD device for DisplayPort
*/
struct typec_altmode {
struct device dev;
@@ -32,6 +33,7 @@ struct typec_altmode {
char *desc;
const struct typec_altmode_ops *ops;
const struct typec_cable_ops *cable_ops;
+ struct device *hpd_dev;
};
#define to_typec_altmode(d) container_of(d, struct typec_altmode, dev)
--
2.49.0
WARNING: multiple messages have this Message-ID (diff)
From: Chaoyi Chen <kernel@airkyi.com>
To: Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>, Vinod Koul <vkoul@kernel.org>,
Kishon Vijay Abraham I <kishon@kernel.org>,
Heiko Stuebner <heiko@sntech.de>,
Sandy Huang <hjc@rock-chips.com>,
Andy Yan <andy.yan@rock-chips.com>,
Yubing Zhang <yubing.zhang@rock-chips.com>,
Frank Wang <frank.wang@rock-chips.com>,
Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
Maxime Ripard <mripard@kernel.org>,
Thomas Zimmermann <tzimmermann@suse.de>,
David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>,
Amit Sunil Dhamne <amitsd@google.com>,
Heikki Krogerus <heikki.krogerus@linux.intel.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Chaoyi Chen <chaoyi.chen@rock-chips.com>,
Dragan Simic <dsimic@manjaro.org>,
Johan Jonker <jbx6244@gmail.com>,
Diederik de Haas <didi.debian@cknow.org>,
Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>,
Peter Robinson <pbrobinson@gmail.com>
Cc: linux-usb@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org,
linux-arm-kernel@lists.infradead.org,
linux-rockchip@lists.infradead.org,
dri-devel@lists.freedesktop.org
Subject: [PATCH v5 1/8] usb: typec: Add default HPD device when register DisplayPort altmode
Date: Sat, 11 Oct 2025 11:32:26 +0800 [thread overview]
Message-ID: <20251011033233.97-2-kernel@airkyi.com> (raw)
In-Reply-To: <20251011033233.97-1-kernel@airkyi.com>
From: Chaoyi Chen <chaoyi.chen@rock-chips.com>
Add default DRM AUX HPD bridge device when register DisplayPort
altmode. That makes it redundant for each Type-C driver to implement
a similar registration process in embedded scenarios.
Signed-off-by: Chaoyi Chen <chaoyi.chen@rock-chips.com>
---
Changes in v5:
- Remove the calls related to `drm_aux_hpd_bridge_notify()`.
- Place the helper functions in the same compilation unit.
- Add more comments about parent device.
drivers/usb/typec/class.c | 26 ++++++++++++++++++++++++++
include/linux/usb/typec_altmode.h | 2 ++
2 files changed, 28 insertions(+)
diff --git a/drivers/usb/typec/class.c b/drivers/usb/typec/class.c
index 67a533e35150..e9d7772d1a8f 100644
--- a/drivers/usb/typec/class.c
+++ b/drivers/usb/typec/class.c
@@ -8,14 +8,18 @@
#include <linux/module.h>
#include <linux/mutex.h>
+#include <linux/of.h>
#include <linux/property.h>
#include <linux/slab.h>
#include <linux/string_choices.h>
#include <linux/usb/pd_vdo.h>
+#include <linux/usb/typec_dp.h>
#include <linux/usb/typec_mux.h>
#include <linux/usb/typec_retimer.h>
#include <linux/usb.h>
+#include <drm/bridge/aux-bridge.h>
+
#include "bus.h"
#include "class.h"
#include "pd.h"
@@ -538,6 +542,21 @@ const struct device_type typec_altmode_dev_type = {
.release = typec_altmode_release,
};
+static void dp_altmode_hpd_device_register(struct typec_altmode *alt)
+{
+ if (alt->svid != USB_TYPEC_DP_SID)
+ return;
+
+ /*
+ * alt->dev.parent->parent : USB-C controller device
+ * alt->dev.parent : USB-C connector device
+ */
+ alt->hpd_dev = drm_dp_hpd_bridge_register(alt->dev.parent->parent,
+ to_of_node(alt->dev.parent->fwnode));
+ if (IS_ERR(alt->hpd_dev))
+ alt->hpd_dev = NULL;
+}
+
static struct typec_altmode *
typec_register_altmode(struct device *parent,
const struct typec_altmode_desc *desc)
@@ -600,6 +619,13 @@ typec_register_altmode(struct device *parent,
return ERR_PTR(ret);
}
+ /*
+ * It is too late to register the HPD device when the DisplayPort
+ * altmode device becomes ready. If the current altmode is DP,
+ * register a static HPD device.
+ */
+ dp_altmode_hpd_device_register(&alt->adev);
+
return &alt->adev;
}
diff --git a/include/linux/usb/typec_altmode.h b/include/linux/usb/typec_altmode.h
index b3c0866ea70f..acb0af1b9d5d 100644
--- a/include/linux/usb/typec_altmode.h
+++ b/include/linux/usb/typec_altmode.h
@@ -21,6 +21,7 @@ struct typec_altmode_ops;
* @desc: Optional human readable description of the mode
* @ops: Operations vector from the driver
* @cable_ops: Cable operations vector from the driver.
+ * @hpd_dev: HPD device for DisplayPort
*/
struct typec_altmode {
struct device dev;
@@ -32,6 +33,7 @@ struct typec_altmode {
char *desc;
const struct typec_altmode_ops *ops;
const struct typec_cable_ops *cable_ops;
+ struct device *hpd_dev;
};
#define to_typec_altmode(d) container_of(d, struct typec_altmode, dev)
--
2.49.0
--
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy
WARNING: multiple messages have this Message-ID (diff)
From: Chaoyi Chen <kernel@airkyi.com>
To: Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>, Vinod Koul <vkoul@kernel.org>,
Kishon Vijay Abraham I <kishon@kernel.org>,
Heiko Stuebner <heiko@sntech.de>,
Sandy Huang <hjc@rock-chips.com>,
Andy Yan <andy.yan@rock-chips.com>,
Yubing Zhang <yubing.zhang@rock-chips.com>,
Frank Wang <frank.wang@rock-chips.com>,
Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
Maxime Ripard <mripard@kernel.org>,
Thomas Zimmermann <tzimmermann@suse.de>,
David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>,
Amit Sunil Dhamne <amitsd@google.com>,
Heikki Krogerus <heikki.krogerus@linux.intel.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Chaoyi Chen <chaoyi.chen@rock-chips.com>,
Dragan Simic <dsimic@manjaro.org>,
Johan Jonker <jbx6244@gmail.com>,
Diederik de Haas <didi.debian@cknow.org>,
Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>,
Peter Robinson <pbrobinson@gmail.com>
Cc: linux-usb@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org,
linux-arm-kernel@lists.infradead.org,
linux-rockchip@lists.infradead.org,
dri-devel@lists.freedesktop.org
Subject: [PATCH v5 1/8] usb: typec: Add default HPD device when register DisplayPort altmode
Date: Sat, 11 Oct 2025 11:32:26 +0800 [thread overview]
Message-ID: <20251011033233.97-2-kernel@airkyi.com> (raw)
In-Reply-To: <20251011033233.97-1-kernel@airkyi.com>
From: Chaoyi Chen <chaoyi.chen@rock-chips.com>
Add default DRM AUX HPD bridge device when register DisplayPort
altmode. That makes it redundant for each Type-C driver to implement
a similar registration process in embedded scenarios.
Signed-off-by: Chaoyi Chen <chaoyi.chen@rock-chips.com>
---
Changes in v5:
- Remove the calls related to `drm_aux_hpd_bridge_notify()`.
- Place the helper functions in the same compilation unit.
- Add more comments about parent device.
drivers/usb/typec/class.c | 26 ++++++++++++++++++++++++++
include/linux/usb/typec_altmode.h | 2 ++
2 files changed, 28 insertions(+)
diff --git a/drivers/usb/typec/class.c b/drivers/usb/typec/class.c
index 67a533e35150..e9d7772d1a8f 100644
--- a/drivers/usb/typec/class.c
+++ b/drivers/usb/typec/class.c
@@ -8,14 +8,18 @@
#include <linux/module.h>
#include <linux/mutex.h>
+#include <linux/of.h>
#include <linux/property.h>
#include <linux/slab.h>
#include <linux/string_choices.h>
#include <linux/usb/pd_vdo.h>
+#include <linux/usb/typec_dp.h>
#include <linux/usb/typec_mux.h>
#include <linux/usb/typec_retimer.h>
#include <linux/usb.h>
+#include <drm/bridge/aux-bridge.h>
+
#include "bus.h"
#include "class.h"
#include "pd.h"
@@ -538,6 +542,21 @@ const struct device_type typec_altmode_dev_type = {
.release = typec_altmode_release,
};
+static void dp_altmode_hpd_device_register(struct typec_altmode *alt)
+{
+ if (alt->svid != USB_TYPEC_DP_SID)
+ return;
+
+ /*
+ * alt->dev.parent->parent : USB-C controller device
+ * alt->dev.parent : USB-C connector device
+ */
+ alt->hpd_dev = drm_dp_hpd_bridge_register(alt->dev.parent->parent,
+ to_of_node(alt->dev.parent->fwnode));
+ if (IS_ERR(alt->hpd_dev))
+ alt->hpd_dev = NULL;
+}
+
static struct typec_altmode *
typec_register_altmode(struct device *parent,
const struct typec_altmode_desc *desc)
@@ -600,6 +619,13 @@ typec_register_altmode(struct device *parent,
return ERR_PTR(ret);
}
+ /*
+ * It is too late to register the HPD device when the DisplayPort
+ * altmode device becomes ready. If the current altmode is DP,
+ * register a static HPD device.
+ */
+ dp_altmode_hpd_device_register(&alt->adev);
+
return &alt->adev;
}
diff --git a/include/linux/usb/typec_altmode.h b/include/linux/usb/typec_altmode.h
index b3c0866ea70f..acb0af1b9d5d 100644
--- a/include/linux/usb/typec_altmode.h
+++ b/include/linux/usb/typec_altmode.h
@@ -21,6 +21,7 @@ struct typec_altmode_ops;
* @desc: Optional human readable description of the mode
* @ops: Operations vector from the driver
* @cable_ops: Cable operations vector from the driver.
+ * @hpd_dev: HPD device for DisplayPort
*/
struct typec_altmode {
struct device dev;
@@ -32,6 +33,7 @@ struct typec_altmode {
char *desc;
const struct typec_altmode_ops *ops;
const struct typec_cable_ops *cable_ops;
+ struct device *hpd_dev;
};
#define to_typec_altmode(d) container_of(d, struct typec_altmode, dev)
--
2.49.0
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
next prev parent reply other threads:[~2025-10-11 3:33 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-11 3:32 [PATCH v5 0/8] Add Type-C DP support for RK3399 EVB IND board Chaoyi Chen
2025-10-11 3:32 ` Chaoyi Chen
2025-10-11 3:32 ` Chaoyi Chen
2025-10-11 3:32 ` Chaoyi Chen [this message]
2025-10-11 3:32 ` [PATCH v5 1/8] usb: typec: Add default HPD device when register DisplayPort altmode Chaoyi Chen
2025-10-11 3:32 ` Chaoyi Chen
2025-10-11 16:51 ` Dmitry Baryshkov
2025-10-11 16:51 ` Dmitry Baryshkov
2025-10-11 16:51 ` Dmitry Baryshkov
2025-10-13 1:31 ` Chaoyi Chen
2025-10-13 1:31 ` Chaoyi Chen
2025-10-13 1:31 ` Chaoyi Chen
2025-10-11 3:32 ` [PATCH v5 2/8] dt-bindings: phy: rockchip: rk3399-typec-phy: Support mode-switch Chaoyi Chen
2025-10-11 3:32 ` Chaoyi Chen
2025-10-11 3:32 ` Chaoyi Chen
2025-10-11 3:32 ` [PATCH v5 3/8] phy: rockchip: phy-rockchip-typec: Add typec_mux/typec_switch support Chaoyi Chen
2025-10-11 3:32 ` Chaoyi Chen
2025-10-11 3:32 ` Chaoyi Chen
2025-10-11 16:57 ` Dmitry Baryshkov
2025-10-11 16:57 ` Dmitry Baryshkov
2025-10-11 16:57 ` Dmitry Baryshkov
2025-10-13 1:15 ` Chaoyi Chen
2025-10-13 1:15 ` Chaoyi Chen
2025-10-13 1:15 ` Chaoyi Chen
2025-10-11 3:32 ` [PATCH v5 4/8] phy: rockchip: phy-rockchip-typec: Add DRM AUX bridge Chaoyi Chen
2025-10-11 3:32 ` Chaoyi Chen
2025-10-11 3:32 ` Chaoyi Chen
2025-10-11 17:07 ` Dmitry Baryshkov
2025-10-11 17:07 ` Dmitry Baryshkov
2025-10-11 17:07 ` Dmitry Baryshkov
2025-10-13 16:00 ` kernel test robot
2025-10-13 16:00 ` kernel test robot
2025-10-13 16:00 ` kernel test robot
2025-10-11 3:32 ` [PATCH v5 5/8] drm/rockchip: cdn-dp: Support handle lane info without extcon Chaoyi Chen
2025-10-11 3:32 ` Chaoyi Chen
2025-10-11 3:32 ` Chaoyi Chen
2025-10-11 3:32 ` [PATCH v5 6/8] drm/rockchip: cdn-dp: Add multiple bridges to support PHY port selection Chaoyi Chen
2025-10-11 3:32 ` Chaoyi Chen
2025-10-11 3:32 ` Chaoyi Chen
2025-10-11 18:52 ` Dmitry Baryshkov
2025-10-11 18:52 ` Dmitry Baryshkov
2025-10-11 18:52 ` Dmitry Baryshkov
2025-10-13 1:26 ` Chaoyi Chen
2025-10-13 1:26 ` Chaoyi Chen
2025-10-13 1:26 ` Chaoyi Chen
2025-10-13 2:11 ` Dmitry Baryshkov
2025-10-13 2:11 ` Dmitry Baryshkov
2025-10-13 2:11 ` Dmitry Baryshkov
2025-10-13 2:44 ` Chaoyi Chen
2025-10-13 2:44 ` Chaoyi Chen
2025-10-13 2:44 ` Chaoyi Chen
2025-10-11 3:32 ` [PATCH v5 7/8] arm64: dts: rockchip: Add missing dp_out port for RK3399 CDN-DP Chaoyi Chen
2025-10-11 3:32 ` Chaoyi Chen
2025-10-11 3:32 ` Chaoyi Chen
2025-10-11 3:32 ` [PATCH v5 8/8] arm64: dts: rockchip: rk3399-evb-ind: Add support for DisplayPort Chaoyi Chen
2025-10-11 3:32 ` Chaoyi Chen
2025-10-11 3:32 ` Chaoyi Chen
2025-10-13 12:15 ` [PATCH v5 0/8] Add Type-C DP support for RK3399 EVB IND board Rob Herring (Arm)
2025-10-13 12:15 ` Rob Herring (Arm)
2025-10-13 12:15 ` Rob Herring (Arm)
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251011033233.97-2-kernel@airkyi.com \
--to=kernel@airkyi.com \
--cc=airlied@gmail.com \
--cc=amitsd@google.com \
--cc=andy.yan@rock-chips.com \
--cc=chaoyi.chen@rock-chips.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=didi.debian@cknow.org \
--cc=dmitry.baryshkov@oss.qualcomm.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=dsimic@manjaro.org \
--cc=frank.wang@rock-chips.com \
--cc=gregkh@linuxfoundation.org \
--cc=heikki.krogerus@linux.intel.com \
--cc=heiko@sntech.de \
--cc=hjc@rock-chips.com \
--cc=jbx6244@gmail.com \
--cc=kishon@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-phy@lists.infradead.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=linux-usb@vger.kernel.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mripard@kernel.org \
--cc=pbrobinson@gmail.com \
--cc=robh@kernel.org \
--cc=simona@ffwll.ch \
--cc=tzimmermann@suse.de \
--cc=vkoul@kernel.org \
--cc=yubing.zhang@rock-chips.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.