Re: [PATCHv11 2/3] usb: USB Type-C connector class

From: Guenter Roeck
Date: Mon Nov 21 2016 - 10:33:54 EST


On 11/21/2016 06:23 AM, Heikki Krogerus wrote:
On Mon, Nov 21, 2016 at 03:11:03PM +0200, Heikki Krogerus wrote:
Hi Greg,

On Mon, Nov 21, 2016 at 11:35:28AM +0100, Greg KH wrote:
+static void typec_partner_release(struct device *dev)
+{
+ struct typec_port *port = to_typec_port(dev->parent);
+
+ typec_unregister_altmodes(dev);
+ port->partner = NULL;
+}

This doesn't feel right, why are you both exporting
typec_unregister_altmodes() and also calling it from release callbacks?
That implies there is two way to clean stuff up, so what is a driver
writer to use? Please simplify and force it to be one way or the other.

OK.

Guenter did you need to also remove the alternate modes in drivers, or
can we just do it here?


It is currently called explicitly on a data role change, when executing
a hard reset, on detach, and during error recovery. Most of those would
also unregister the partner, so I should be able to drop those calls
(or maybe I'll have to - I will see when testing), but I am not sure
how to handle data role changes.

Guenter