Hi, There is now a check in ucsi_exec_command() that makes sure we do not call ucsi_read_error() with UCSI_GET_ERROR_STATUS command. That should prevent endless recursion from happening. The original cover letter: The first patches in this series (patches 1-8) introduce a small change to the USB Type-C Connector Class API. Guenter was kind enough to go over those already. Patches 10-15 improve the ucsi driver API by introducing more traditional read and write routines, and the rest is more generic optimisations and improvements to the ucsi drivers. Let me know if there is anything you want to be changed. thanks, Heikki Krogerus (18): usb: typec: Copy everything from struct typec_capability during registration usb: typec: Introduce typec_get_drvdata() usb: typec: Separate the operations vector usb: typec: tcpm: Start using struct typec_operations usb: typec: tps6598x: Start using struct typec_operations usb: typec: ucsi: Start using struct typec_operations usb: typec: hd3ss3220: Start using struct typec_operations usb: typec: Remove the callback members from struct typec_capability usb: typec: Remove unused members from struct typec_capability usb: typec: hd3ss3220: Give the connector fwnode to the port device usb: typec: ucsi: Simplified registration and I/O API usb: typec: ucsi: acpi: Move to the new API usb: typec: ucsi: ccg: Move to the new API usb: typec: ucsi: Remove the old API usb: typec: ucsi: Remove struct ucsi_control usb: typec: ucsi: Remove all bit-fields usb: typec: ucsi: New error codes usb: typec: ucsi: Optimise ucsi_unregister() drivers/usb/typec/class.c | 42 +- drivers/usb/typec/hd3ss3220.c | 36 +- drivers/usb/typec/tcpm/tcpm.c | 45 +- drivers/usb/typec/tps6598x.c | 49 ++- drivers/usb/typec/ucsi/displayport.c | 40 +- drivers/usb/typec/ucsi/trace.c | 11 - drivers/usb/typec/ucsi/trace.h | 79 +--- drivers/usb/typec/ucsi/ucsi.c | 609 ++++++++++++++------------- drivers/usb/typec/ucsi/ucsi.h | 417 +++++++----------- drivers/usb/typec/ucsi/ucsi_acpi.c | 94 ++++- drivers/usb/typec/ucsi/ucsi_ccg.c | 170 ++++---- include/linux/usb/typec.h | 41 +- 12 files changed, 777 insertions(+), 856 deletions(-) -- 2.23.0