From: Heikki Krogerus <heikki.krogerus@linux.intel.com>
To: Sebastian Reichel <sebastian.reichel@collabora.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Dmitry Baryshkov <lumag@kernel.org>,
Alexey Charkov <alchark@gmail.com>,
linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org,
kernel@collabora.com
Subject: Re: [PATCH] usb: typec: fusb302: add DRM DP HPD bridge support
Date: Wed, 11 Mar 2026 15:43:55 +0200 [thread overview]
Message-ID: <abFxm8i6swona50j@kuha> (raw)
In-Reply-To: <20260310-fusb302-drm-dp-hpd-bridge-v1-1-ffd41ef9afe3@collabora.com>
Tue, Mar 10, 2026 at 06:17:34PM +0100, Sebastian Reichel kirjoitti:
> Add support to use fusb302 based USB-C connectors with the DP altmode
> helper code on devicetree based platforms. To get this working there
> must be a DRM bridge chain from the DisplayPort controller to the USB-C
> connector. E.g. on Rockchip RK3576:
>
> root@rk3576 # cat /sys/kernel/debug/dri/0/encoder-0/bridges
> bridge[0]: dw_dp_bridge_funcs
> refcount: 7
> type: [10] DP
> OF: /soc/dp@27e40000:rockchip,rk3576-dp
> ops: [0x47] detect edid hpd
> bridge[1]: drm_aux_bridge_funcs
> refcount: 4
> type: [0] Unknown
> OF: /soc/phy@2b010000:rockchip,rk3576-usbdp-phy
> ops: [0x0]
> bridge[2]: drm_aux_hpd_bridge_funcs
> refcount: 5
> type: [10] DP
> OF: /soc/i2c@2ac50000/typec-portc@22/connector:usb-c-connector
> ops: [0x4] hpd
>
> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Acked-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
> ---
> To make this usable on Rockchip RK3588 and RK3576 platforms as shown in
> the commit message, the Designware DP driver and the USBDP PHY driver
> also need changes. Those are being send separately as the fusb302 patch
> can be merged completley independently.
> ---
> drivers/usb/typec/tcpm/Kconfig | 2 ++
> drivers/usb/typec/tcpm/fusb302.c | 13 +++++++++++++
> 2 files changed, 15 insertions(+)
>
> diff --git a/drivers/usb/typec/tcpm/Kconfig b/drivers/usb/typec/tcpm/Kconfig
> index 8cdd84ca5d6f..00baa7503d45 100644
> --- a/drivers/usb/typec/tcpm/Kconfig
> +++ b/drivers/usb/typec/tcpm/Kconfig
> @@ -58,6 +58,8 @@ config TYPEC_FUSB302
> tristate "Fairchild FUSB302 Type-C chip driver"
> depends on I2C
> depends on EXTCON || !EXTCON
> + depends on DRM || DRM=n
> + select DRM_AUX_HPD_BRIDGE if DRM_BRIDGE && OF
> help
> The Fairchild FUSB302 Type-C chip driver that works with
> Type-C Port Controller Manager to provide USB PD and USB
> diff --git a/drivers/usb/typec/tcpm/fusb302.c b/drivers/usb/typec/tcpm/fusb302.c
> index 19ff8217818e..ce7069fb4be6 100644
> --- a/drivers/usb/typec/tcpm/fusb302.c
> +++ b/drivers/usb/typec/tcpm/fusb302.c
> @@ -5,6 +5,7 @@
> * Fairchild FUSB302 Type-C Chip Driver
> */
>
> +#include <drm/bridge/aux-bridge.h>
> #include <linux/debugfs.h>
> #include <linux/delay.h>
> #include <linux/errno.h>
> @@ -1689,6 +1690,7 @@ static int fusb302_probe(struct i2c_client *client)
> {
> struct fusb302_chip *chip;
> struct i2c_adapter *adapter = client->adapter;
> + struct auxiliary_device *bridge_dev;
> struct device *dev = &client->dev;
> const char *name;
> int ret = 0;
> @@ -1747,6 +1749,13 @@ static int fusb302_probe(struct i2c_client *client)
> goto destroy_workqueue;
> }
>
> + bridge_dev = devm_drm_dp_hpd_bridge_alloc(chip->dev, to_of_node(chip->tcpc_dev.fwnode));
> + if (IS_ERR(bridge_dev)) {
> + ret = PTR_ERR(bridge_dev);
> + dev_err_probe(chip->dev, ret, "failed to alloc bridge\n");
> + goto destroy_workqueue;
> + }
> +
> chip->tcpm_port = tcpm_register_port(&client->dev, &chip->tcpc_dev);
> if (IS_ERR(chip->tcpm_port)) {
> fwnode_handle_put(chip->tcpc_dev.fwnode);
> @@ -1764,6 +1773,10 @@ static int fusb302_probe(struct i2c_client *client)
> enable_irq_wake(chip->gpio_int_n_irq);
> i2c_set_clientdata(client, chip);
>
> + ret = devm_drm_dp_hpd_bridge_add(chip->dev, bridge_dev);
> + if (ret)
> + return ret;
> +
> return ret;
>
> tcpm_unregister_port:
>
> ---
> base-commit: 6de23f81a5e08be8fbf5e8d7e9febc72a5b5f27f
> change-id: 20260310-fusb302-drm-dp-hpd-bridge-00f6c9aec3ab
>
> Best regards,
> --
> Sebastian Reichel <sebastian.reichel@collabora.com>
--
heikki
next prev parent reply other threads:[~2026-03-11 13:44 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-10 17:17 [PATCH] usb: typec: fusb302: add DRM DP HPD bridge support Sebastian Reichel
2026-03-11 13:43 ` Heikki Krogerus [this message]
2026-03-13 8:15 ` Alexey Charkov
2026-03-13 15:23 ` Sebastian Reichel
2026-03-13 18:09 ` Dmitry Baryshkov
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=abFxm8i6swona50j@kuha \
--to=heikki.krogerus@linux.intel.com \
--cc=alchark@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=kernel@collabora.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=lumag@kernel.org \
--cc=sebastian.reichel@collabora.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.