usb: typec: altmodes/displayport: add support for embedded DP cases
authorDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Thu, 17 Aug 2023 15:08:23 +0000 (18:08 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 22 Aug 2023 12:45:53 +0000 (14:45 +0200)
In the embedded cases, the DisplayPort connector is handled by the TCPM
itself. It was proposed to add the "displayport" OF property to the DT
bindings, but it  was rejected in favour of properly describing the
electrical signal path using of_graph.

Fallback to the controller fwnode for HPD notifications to
support such usecases without requiring additional DT properties.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Link: https://lore.kernel.org/r/20230817150824.14371-2-dmitry.baryshkov@linaro.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/typec/altmodes/displayport.c

index cdf8261e22dbd3ff45c9ff758bd00e493e737f36..426c88a516e5112b64d4aa7ebf03bd0757993333 100644 (file)
@@ -594,7 +594,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;