Messages in this thread | | | Subject | Re: [RFC PATCHv2] usb: USB Type-C Connector Class | From | Guenter Roeck <> | Date | Wed, 25 May 2016 06:12:02 -0700 |
| |
On 05/25/2016 04:30 AM, Heikki Krogerus wrote: > 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. >
I'll send a follow-up patch hopefully later today which fixes all the problems I have found so far.
Guenter
| |