Hi, On Tue, May 24, 2016 at 06:42:09AM -0700, Guenter Roeck wrote: > > +struct typec_capability { > > + enum typec_data_role role; > > + unsigned int usb_pd:1; > > + struct typec_altmode *alt_modes; > > + unsigned int audio_accessory:1; > > + unsigned int debug_accessory:1; > > + > > + int (*fix_role)(struct typec_port *, > > + enum typec_data_role); > > + > > + int (*dr_swap)(struct typec_port *); > > + int (*pr_swap)(struct typec_port *); > > + int (*vconn_swap)(struct typec_port *); > > + > > The function parameter in those calls is all but useless to the caller. > It needs to store the typec_port returned from typec_register(), create a > list of ports, and then search through this list each time one of the > functions is called. This is quite expensive for no good reason. > > Previously, with typec_port exported, the called code could use the stored > caps pointer to map to its internal data structures. This is no longer > possible. True, the API now is in practice broken. > I think it would be useful to provide a better means for the called function > to identify its context. Maybe provide a pointer to the private data in > the registration function and use it as parameter in the callback functions ? Sounds reasonable. Thanks, -- heikki -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html