From 37777f60a6510573c7f68be38476a2744731de44 Mon Sep 17 00:00:00 2001
From: Sebastian Reichel <sebastian.reichel@collabora.com>
Date: Fri, 18 Apr 2025 18:39:45 +0200
Subject: [PATCH] usb: typec: class: Improve error printing during probe

It's currently quite hard to understand why a USB-C controller
probe might run into probe defer. Let's improve that by adding
some error messages.

Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
---
 drivers/usb/typec/class.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/usb/typec/class.c b/drivers/usb/typec/class.c
index 9c76c3d0c6cff..0c3c03940d951 100644
--- a/drivers/usb/typec/class.c
+++ b/drivers/usb/typec/class.c
@@ -2646,6 +2646,7 @@ struct typec_port *typec_register_port(struct device *parent,
 	port->sw = typec_switch_get(&port->dev);
 	if (IS_ERR(port->sw)) {
 		ret = PTR_ERR(port->sw);
+		dev_err_probe(parent, ret, "failed to get switch\n");
 		put_device(&port->dev);
 		return ERR_PTR(ret);
 	}
@@ -2653,6 +2654,7 @@ struct typec_port *typec_register_port(struct device *parent,
 	port->mux = typec_mux_get(&port->dev);
 	if (IS_ERR(port->mux)) {
 		ret = PTR_ERR(port->mux);
+		dev_err_probe(parent, ret, "failed to get mux\n");
 		put_device(&port->dev);
 		return ERR_PTR(ret);
 	}
@@ -2660,6 +2662,7 @@ struct typec_port *typec_register_port(struct device *parent,
 	port->retimer = typec_retimer_get(&port->dev);
 	if (IS_ERR(port->retimer)) {
 		ret = PTR_ERR(port->retimer);
+		dev_err_probe(parent, ret, "failed to get retimer\n");
 		put_device(&port->dev);
 		return ERR_PTR(ret);
 	}
@@ -2675,7 +2678,7 @@ struct typec_port *typec_register_port(struct device *parent,
 
 	ret = usb_power_delivery_link_device(port->pd, &port->dev);
 	if (ret) {
-		dev_err(&port->dev, "failed to link pd\n");
+		dev_err_probe(parent, ret, "failed to link pd\n");
 		device_unregister(&port->dev);
 		return ERR_PTR(ret);
 	}
-- 
GitLab