linux-usb.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 0/2] usb: typec: qcom-pmic-typec: enable DP support
@ 2023-07-28 10:08 Dmitry Baryshkov
  2023-07-28 10:08 ` [PATCH v3 1/2] usb: typec: altmodes/displayport: add support for embedded DP cases Dmitry Baryshkov
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Dmitry Baryshkov @ 2023-07-28 10:08 UTC (permalink / raw)
  To: Heikki Krogerus, Greg Kroah-Hartman, Bryan O'Donoghue,
	Guenter Roeck, Andy Gross, Bjorn Andersson, Konrad Dybcio
  Cc: linux-usb, linux-kernel, linux-arm-msm

To enable DisplayPort on the platforms supported by qcom-pmic-typec
driver, we need to register a corresponding drm_bridge for this device
to be able to receive the OOB hotplug event sent to the corresponding
DRM connector.

Reception of the hotplug event is implemented by [1], but there is no
direct dependency on that patchset. This series implements the remaining
parts: registration of the drm_bridge and setting of the proper
destination for the OOB hotplug event.

[1] https://patchwork.freedesktop.org/series/120393/

Changes since v2:
- Reworded commit message for the first patch to explicitly mention that
  the "displayport" OF property was rejected (Bjorn)
- Removed several #ifdefs from the qcom-pmic-typec patch (Bryan, Konrad,
  Greg K-H)

Changes since v1:
- Properly handle CONFIG_DRM dependency. Disallow building DRM as a
  module if qcom-pmic-typec driver is built-in (Bryan).

Dmitry Baryshkov (2):
  usb: typec: altmodes/displayport: add support for embedded DP cases
  usb: typec: qcom-pmic-typec: register drm_bridge

 drivers/usb/typec/altmodes/displayport.c      |  5 ++-
 drivers/usb/typec/tcpm/Kconfig                |  1 +
 drivers/usb/typec/tcpm/qcom/qcom_pmic_typec.c | 35 +++++++++++++++++++
 3 files changed, 40 insertions(+), 1 deletion(-)

-- 
2.39.2


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v3 1/2] usb: typec: altmodes/displayport: add support for embedded DP cases
  2023-07-28 10:08 [PATCH v3 0/2] usb: typec: qcom-pmic-typec: enable DP support Dmitry Baryshkov
@ 2023-07-28 10:08 ` Dmitry Baryshkov
  2023-07-28 10:08 ` [PATCH v3 2/2] usb: typec: qcom-pmic-typec: register drm_bridge Dmitry Baryshkov
  2023-07-28 10:14 ` [PATCH v3 0/2] usb: typec: qcom-pmic-typec: enable DP support Guenter Roeck
  2 siblings, 0 replies; 6+ messages in thread
From: Dmitry Baryshkov @ 2023-07-28 10:08 UTC (permalink / raw)
  To: Heikki Krogerus, Greg Kroah-Hartman, Bryan O'Donoghue,
	Guenter Roeck, Andy Gross, Bjorn Andersson, Konrad Dybcio
  Cc: linux-usb, linux-kernel, linux-arm-msm

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>
---
 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 dc2d3a83dc26..76c3e2f8e117 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


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v3 2/2] usb: typec: qcom-pmic-typec: register drm_bridge
  2023-07-28 10:08 [PATCH v3 0/2] usb: typec: qcom-pmic-typec: enable DP support Dmitry Baryshkov
  2023-07-28 10:08 ` [PATCH v3 1/2] usb: typec: altmodes/displayport: add support for embedded DP cases Dmitry Baryshkov
@ 2023-07-28 10:08 ` Dmitry Baryshkov
  2023-07-28 10:14 ` [PATCH v3 0/2] usb: typec: qcom-pmic-typec: enable DP support Guenter Roeck
  2 siblings, 0 replies; 6+ messages in thread
From: Dmitry Baryshkov @ 2023-07-28 10:08 UTC (permalink / raw)
  To: Heikki Krogerus, Greg Kroah-Hartman, Bryan O'Donoghue,
	Guenter Roeck, Andy Gross, Bjorn Andersson, Konrad Dybcio
  Cc: linux-usb, linux-kernel, linux-arm-msm

The current approach to handling DP on bridge-enabled platforms requires
a chain of DP bridges up to the USB-C connector. Register a last DRM
bridge for such chain.

Acked-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
---
 drivers/usb/typec/tcpm/Kconfig                |  1 +
 drivers/usb/typec/tcpm/qcom/qcom_pmic_typec.c | 35 +++++++++++++++++++
 2 files changed, 36 insertions(+)

diff --git a/drivers/usb/typec/tcpm/Kconfig b/drivers/usb/typec/tcpm/Kconfig
index 5d393f520fc2..0b2993fef564 100644
--- a/drivers/usb/typec/tcpm/Kconfig
+++ b/drivers/usb/typec/tcpm/Kconfig
@@ -79,6 +79,7 @@ config TYPEC_WCOVE
 config TYPEC_QCOM_PMIC
 	tristate "Qualcomm PMIC USB Type-C Port Controller Manager driver"
 	depends on ARCH_QCOM || COMPILE_TEST
+	depends on DRM || DRM=n
 	help
 	  A Type-C port and Power Delivery driver which aggregates two
 	  discrete pieces of silicon in the PM8150b PMIC block: the
diff --git a/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec.c b/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec.c
index af44ee4e6e86..bf6f504d2160 100644
--- a/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec.c
+++ b/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec.c
@@ -17,6 +17,9 @@
 #include <linux/usb/role.h>
 #include <linux/usb/tcpm.h>
 #include <linux/usb/typec_mux.h>
+
+#include <drm/drm_bridge.h>
+
 #include "qcom_pmic_typec_pdphy.h"
 #include "qcom_pmic_typec_port.h"
 
@@ -33,6 +36,7 @@ struct pmic_typec {
 	struct pmic_typec_port	*pmic_typec_port;
 	bool			vbus_enabled;
 	struct mutex		lock;		/* VBUS state serialization */
+	struct drm_bridge	bridge;
 };
 
 #define tcpc_to_tcpm(_tcpc_) container_of(_tcpc_, struct pmic_typec, tcpc)
@@ -146,6 +150,33 @@ static int qcom_pmic_typec_init(struct tcpc_dev *tcpc)
 	return 0;
 }
 
+#ifdef CONFIG_DRM
+static int qcom_pmic_typec_attach(struct drm_bridge *bridge,
+				     enum drm_bridge_attach_flags flags)
+{
+	return flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR ? 0 : -EINVAL;
+}
+
+static const struct drm_bridge_funcs qcom_pmic_typec_bridge_funcs = {
+	.attach = qcom_pmic_typec_attach,
+};
+
+static int qcom_pmic_typec_init_drm(struct pmic_typec *tcpm)
+{
+	tcpm->bridge.funcs = &qcom_pmic_typec_bridge_funcs;
+	tcpm->bridge.of_node = of_get_child_by_name(tcpm->dev->of_node, "connector");
+	tcpm->bridge.ops = DRM_BRIDGE_OP_HPD;
+	tcpm->bridge.type = DRM_MODE_CONNECTOR_USB;
+
+	return devm_drm_bridge_add(tcpm->dev, &tcpm->bridge);
+}
+#else
+static int qcom_pmic_typec_init_drm(struct pmic_typec *tcpm)
+{
+	return 0;
+}
+#endif
+
 static int qcom_pmic_typec_probe(struct platform_device *pdev)
 {
 	struct pmic_typec *tcpm;
@@ -208,6 +239,10 @@ static int qcom_pmic_typec_probe(struct platform_device *pdev)
 	mutex_init(&tcpm->lock);
 	platform_set_drvdata(pdev, tcpm);
 
+	ret = qcom_pmic_typec_init_drm(tcpm);
+	if (ret)
+		return ret;
+
 	tcpm->tcpc.fwnode = device_get_named_child_node(tcpm->dev, "connector");
 	if (!tcpm->tcpc.fwnode)
 		return -EINVAL;
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v3 0/2] usb: typec: qcom-pmic-typec: enable DP support
  2023-07-28 10:08 [PATCH v3 0/2] usb: typec: qcom-pmic-typec: enable DP support Dmitry Baryshkov
  2023-07-28 10:08 ` [PATCH v3 1/2] usb: typec: altmodes/displayport: add support for embedded DP cases Dmitry Baryshkov
  2023-07-28 10:08 ` [PATCH v3 2/2] usb: typec: qcom-pmic-typec: register drm_bridge Dmitry Baryshkov
@ 2023-07-28 10:14 ` Guenter Roeck
  2023-07-28 10:19   ` Dmitry Baryshkov
  2 siblings, 1 reply; 6+ messages in thread
From: Guenter Roeck @ 2023-07-28 10:14 UTC (permalink / raw)
  To: Dmitry Baryshkov, Heikki Krogerus, Greg Kroah-Hartman,
	Bryan O'Donoghue, Andy Gross, Bjorn Andersson, Konrad Dybcio
  Cc: linux-usb, linux-kernel, linux-arm-msm

On 7/28/23 03:08, Dmitry Baryshkov wrote:
> To enable DisplayPort on the platforms supported by qcom-pmic-typec
> driver, we need to register a corresponding drm_bridge for this device
> to be able to receive the OOB hotplug event sent to the corresponding
> DRM connector.
> 
> Reception of the hotplug event is implemented by [1], but there is no
> direct dependency on that patchset. This series implements the remaining
> parts: registration of the drm_bridge and setting of the proper
> destination for the OOB hotplug event.
> 
> [1] https://patchwork.freedesktop.org/series/120393/
> 
> Changes since v2:
> - Reworded commit message for the first patch to explicitly mention that
>    the "displayport" OF property was rejected (Bjorn)
> - Removed several #ifdefs from the qcom-pmic-typec patch (Bryan, Konrad,
>    Greg K-H)
> 
> Changes since v1:
> - Properly handle CONFIG_DRM dependency. Disallow building DRM as a
>    module if qcom-pmic-typec driver is built-in (Bryan).

  config TYPEC_QCOM_PMIC
  	tristate "Qualcomm PMIC USB Type-C Port Controller Manager driver"
  	depends on ARCH_QCOM || COMPILE_TEST
+	depends on DRM || DRM=n

This disallows building TYPEC_QCOM_PMIC into the kernel if DRM is built
as module, which is pretty much the opposite of what is claimed above.
It does not affect DRM at all.

Not that it matters much, but I find it confusing if the change log
claims to do the opposite of what the code is doing.

Guenter

> 
> Dmitry Baryshkov (2):
>    usb: typec: altmodes/displayport: add support for embedded DP cases
>    usb: typec: qcom-pmic-typec: register drm_bridge
> 
>   drivers/usb/typec/altmodes/displayport.c      |  5 ++-
>   drivers/usb/typec/tcpm/Kconfig                |  1 +
>   drivers/usb/typec/tcpm/qcom/qcom_pmic_typec.c | 35 +++++++++++++++++++
>   3 files changed, 40 insertions(+), 1 deletion(-)
> 


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v3 0/2] usb: typec: qcom-pmic-typec: enable DP support
  2023-07-28 10:14 ` [PATCH v3 0/2] usb: typec: qcom-pmic-typec: enable DP support Guenter Roeck
@ 2023-07-28 10:19   ` Dmitry Baryshkov
  2023-08-04 12:34     ` Greg Kroah-Hartman
  0 siblings, 1 reply; 6+ messages in thread
From: Dmitry Baryshkov @ 2023-07-28 10:19 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: Heikki Krogerus, Greg Kroah-Hartman, Bryan O'Donoghue,
	Andy Gross, Bjorn Andersson, Konrad Dybcio, linux-usb,
	linux-kernel, linux-arm-msm

On Fri, 28 Jul 2023 at 13:14, Guenter Roeck <linux@roeck-us.net> wrote:
>
> On 7/28/23 03:08, Dmitry Baryshkov wrote:
> > To enable DisplayPort on the platforms supported by qcom-pmic-typec
> > driver, we need to register a corresponding drm_bridge for this device
> > to be able to receive the OOB hotplug event sent to the corresponding
> > DRM connector.
> >
> > Reception of the hotplug event is implemented by [1], but there is no
> > direct dependency on that patchset. This series implements the remaining
> > parts: registration of the drm_bridge and setting of the proper
> > destination for the OOB hotplug event.
> >
> > [1] https://patchwork.freedesktop.org/series/120393/
> >
> > Changes since v2:
> > - Reworded commit message for the first patch to explicitly mention that
> >    the "displayport" OF property was rejected (Bjorn)
> > - Removed several #ifdefs from the qcom-pmic-typec patch (Bryan, Konrad,
> >    Greg K-H)
> >
> > Changes since v1:
> > - Properly handle CONFIG_DRM dependency. Disallow building DRM as a
> >    module if qcom-pmic-typec driver is built-in (Bryan).
>
>   config TYPEC_QCOM_PMIC
>         tristate "Qualcomm PMIC USB Type-C Port Controller Manager driver"
>         depends on ARCH_QCOM || COMPILE_TEST
> +       depends on DRM || DRM=n
>
> This disallows building TYPEC_QCOM_PMIC into the kernel if DRM is built
> as module, which is pretty much the opposite of what is claimed above.
> It does not affect DRM at all.
>
> Not that it matters much, but I find it confusing if the change log
> claims to do the opposite of what the code is doing.

Ack. If there is a v4 I'll fix the changelog to invert the condition.

>
> Guenter
>
> >
> > Dmitry Baryshkov (2):
> >    usb: typec: altmodes/displayport: add support for embedded DP cases
> >    usb: typec: qcom-pmic-typec: register drm_bridge
> >
> >   drivers/usb/typec/altmodes/displayport.c      |  5 ++-
> >   drivers/usb/typec/tcpm/Kconfig                |  1 +
> >   drivers/usb/typec/tcpm/qcom/qcom_pmic_typec.c | 35 +++++++++++++++++++
> >   3 files changed, 40 insertions(+), 1 deletion(-)
> >
>


-- 
With best wishes
Dmitry

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v3 0/2] usb: typec: qcom-pmic-typec: enable DP support
  2023-07-28 10:19   ` Dmitry Baryshkov
@ 2023-08-04 12:34     ` Greg Kroah-Hartman
  0 siblings, 0 replies; 6+ messages in thread
From: Greg Kroah-Hartman @ 2023-08-04 12:34 UTC (permalink / raw)
  To: Dmitry Baryshkov
  Cc: Guenter Roeck, Heikki Krogerus, Bryan O'Donoghue, Andy Gross,
	Bjorn Andersson, Konrad Dybcio, linux-usb, linux-kernel,
	linux-arm-msm

On Fri, Jul 28, 2023 at 01:19:36PM +0300, Dmitry Baryshkov wrote:
> On Fri, 28 Jul 2023 at 13:14, Guenter Roeck <linux@roeck-us.net> wrote:
> >
> > On 7/28/23 03:08, Dmitry Baryshkov wrote:
> > > To enable DisplayPort on the platforms supported by qcom-pmic-typec
> > > driver, we need to register a corresponding drm_bridge for this device
> > > to be able to receive the OOB hotplug event sent to the corresponding
> > > DRM connector.
> > >
> > > Reception of the hotplug event is implemented by [1], but there is no
> > > direct dependency on that patchset. This series implements the remaining
> > > parts: registration of the drm_bridge and setting of the proper
> > > destination for the OOB hotplug event.
> > >
> > > [1] https://patchwork.freedesktop.org/series/120393/
> > >
> > > Changes since v2:
> > > - Reworded commit message for the first patch to explicitly mention that
> > >    the "displayport" OF property was rejected (Bjorn)
> > > - Removed several #ifdefs from the qcom-pmic-typec patch (Bryan, Konrad,
> > >    Greg K-H)
> > >
> > > Changes since v1:
> > > - Properly handle CONFIG_DRM dependency. Disallow building DRM as a
> > >    module if qcom-pmic-typec driver is built-in (Bryan).
> >
> >   config TYPEC_QCOM_PMIC
> >         tristate "Qualcomm PMIC USB Type-C Port Controller Manager driver"
> >         depends on ARCH_QCOM || COMPILE_TEST
> > +       depends on DRM || DRM=n
> >
> > This disallows building TYPEC_QCOM_PMIC into the kernel if DRM is built
> > as module, which is pretty much the opposite of what is claimed above.
> > It does not affect DRM at all.
> >
> > Not that it matters much, but I find it confusing if the change log
> > claims to do the opposite of what the code is doing.
> 
> Ack. If there is a v4 I'll fix the changelog to invert the condition.

Please fix.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2023-08-04 12:34 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-07-28 10:08 [PATCH v3 0/2] usb: typec: qcom-pmic-typec: enable DP support Dmitry Baryshkov
2023-07-28 10:08 ` [PATCH v3 1/2] usb: typec: altmodes/displayport: add support for embedded DP cases Dmitry Baryshkov
2023-07-28 10:08 ` [PATCH v3 2/2] usb: typec: qcom-pmic-typec: register drm_bridge Dmitry Baryshkov
2023-07-28 10:14 ` [PATCH v3 0/2] usb: typec: qcom-pmic-typec: enable DP support Guenter Roeck
2023-07-28 10:19   ` Dmitry Baryshkov
2023-08-04 12:34     ` Greg Kroah-Hartman

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).