In the embedded cases, the DisplayPort connector is handled by the TCPM
itself. Fallback to the controller fwnode for HPD notifications to
support such usecases without requiring additional DT properties.
Signed-off-by: Dmitry Baryshkov <[email protected]>
---
drivers/usb/typec/altmodes/displayport.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/usb/typec/altmodes/displayport.c b/drivers/usb/typec/altmodes/displayport.c
index 4e5aa17ce4c8..699438c7755e 100644
--- a/drivers/usb/typec/altmodes/displayport.c
+++ b/drivers/usb/typec/altmodes/displayport.c
@@ -578,7 +578,10 @@ int dp_altmode_probe(struct typec_altmode *alt)
alt->ops = &dp_altmode_ops;
fwnode = dev_fwnode(alt->dev.parent->parent); /* typec_port fwnode */
- dp->connector_fwnode = fwnode_find_reference(fwnode, "displayport", 0);
+ if (fwnode_property_present(fwnode, "displayport"))
+ dp->connector_fwnode = fwnode_find_reference(fwnode, "displayport", 0);
+ else
+ dp->connector_fwnode = fwnode_handle_get(fwnode); /* embedded DP */
if (IS_ERR(dp->connector_fwnode))
dp->connector_fwnode = NULL;
--
2.39.2
On Sun, Jul 09, 2023 at 11:13:08PM +0300, Dmitry Baryshkov wrote:
> In the embedded cases, the DisplayPort connector is handled by the TCPM
> itself. Fallback to the controller fwnode for HPD notifications to
> support such usecases without requiring additional DT properties.
>
More specific, the proposal of adding the "displayport" reference to the
DeviceTree binding was rejected, in favour of properly describing the
electrical signal path using of_graph.
Regards,
Bjorn
> Signed-off-by: Dmitry Baryshkov <[email protected]>
> ---
> drivers/usb/typec/altmodes/displayport.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/usb/typec/altmodes/displayport.c b/drivers/usb/typec/altmodes/displayport.c
> index 4e5aa17ce4c8..699438c7755e 100644
> --- a/drivers/usb/typec/altmodes/displayport.c
> +++ b/drivers/usb/typec/altmodes/displayport.c
> @@ -578,7 +578,10 @@ int dp_altmode_probe(struct typec_altmode *alt)
> alt->ops = &dp_altmode_ops;
>
> fwnode = dev_fwnode(alt->dev.parent->parent); /* typec_port fwnode */
> - dp->connector_fwnode = fwnode_find_reference(fwnode, "displayport", 0);
> + if (fwnode_property_present(fwnode, "displayport"))
> + dp->connector_fwnode = fwnode_find_reference(fwnode, "displayport", 0);
> + else
> + dp->connector_fwnode = fwnode_handle_get(fwnode); /* embedded DP */
> if (IS_ERR(dp->connector_fwnode))
> dp->connector_fwnode = NULL;
>
> --
> 2.39.2
>