Message ID | 20191008111350.68581-3-heikki.krogerus@linux.intel.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | usb: typec: Small API improvement | expand |
On Tue, Oct 08, 2019 at 02:13:43PM +0300, Heikki Krogerus wrote: > Leaving the private driver_data pointer of the port device > to the port drivers. > > Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> Reviewed-by: Guenter Roeck <linux@roeck-us.net> > --- > drivers/usb/typec/class.c | 11 +++++++++++ > include/linux/usb/typec.h | 4 ++++ > 2 files changed, 15 insertions(+) > > diff --git a/drivers/usb/typec/class.c b/drivers/usb/typec/class.c > index 0bbf10c8ad58..89ffe370e426 100644 > --- a/drivers/usb/typec/class.c > +++ b/drivers/usb/typec/class.c > @@ -1488,6 +1488,16 @@ EXPORT_SYMBOL_GPL(typec_set_mode); > > /* --------------------------------------- */ > > +/** > + * typec_get_drvdata - Return private driver data pointer > + * @port: USB Type-C port > + */ > +void *typec_get_drvdata(struct typec_port *port) > +{ > + return dev_get_drvdata(&port->dev); > +} > +EXPORT_SYMBOL_GPL(typec_get_drvdata); > + > /** > * typec_port_register_altmode - Register USB Type-C Port Alternate Mode > * @port: USB Type-C Port that supports the alternate mode > @@ -1592,6 +1602,7 @@ struct typec_port *typec_register_port(struct device *parent, > port->dev.fwnode = cap->fwnode; > port->dev.type = &typec_port_dev_type; > dev_set_name(&port->dev, "port%d", id); > + dev_set_drvdata(&port->dev, cap->driver_data); > > port->sw = typec_switch_get(&port->dev); > if (IS_ERR(port->sw)) { > diff --git a/include/linux/usb/typec.h b/include/linux/usb/typec.h > index 7df4ecabc78a..8b90cd77331c 100644 > --- a/include/linux/usb/typec.h > +++ b/include/linux/usb/typec.h > @@ -179,6 +179,7 @@ struct typec_partner_desc { > * @sw: Cable plug orientation switch > * @mux: Multiplexer switch for Alternate/Accessory Modes > * @fwnode: Optional fwnode of the port > + * @driver_data: Private pointer for driver specific info > * @try_role: Set data role preference for DRP port > * @dr_set: Set Data Role > * @pr_set: Set Power Role > @@ -198,6 +199,7 @@ struct typec_capability { > struct typec_switch *sw; > struct typec_mux *mux; > struct fwnode_handle *fwnode; > + void *driver_data; > > int (*try_role)(const struct typec_capability *, > int role); > @@ -241,6 +243,8 @@ int typec_set_orientation(struct typec_port *port, > enum typec_orientation typec_get_orientation(struct typec_port *port); > int typec_set_mode(struct typec_port *port, int mode); > > +void *typec_get_drvdata(struct typec_port *port); > + > int typec_find_port_power_role(const char *name); > int typec_find_power_role(const char *name); > int typec_find_port_data_role(const char *name); > -- > 2.23.0 >
diff --git a/drivers/usb/typec/class.c b/drivers/usb/typec/class.c index 0bbf10c8ad58..89ffe370e426 100644 --- a/drivers/usb/typec/class.c +++ b/drivers/usb/typec/class.c @@ -1488,6 +1488,16 @@ EXPORT_SYMBOL_GPL(typec_set_mode); /* --------------------------------------- */ +/** + * typec_get_drvdata - Return private driver data pointer + * @port: USB Type-C port + */ +void *typec_get_drvdata(struct typec_port *port) +{ + return dev_get_drvdata(&port->dev); +} +EXPORT_SYMBOL_GPL(typec_get_drvdata); + /** * typec_port_register_altmode - Register USB Type-C Port Alternate Mode * @port: USB Type-C Port that supports the alternate mode @@ -1592,6 +1602,7 @@ struct typec_port *typec_register_port(struct device *parent, port->dev.fwnode = cap->fwnode; port->dev.type = &typec_port_dev_type; dev_set_name(&port->dev, "port%d", id); + dev_set_drvdata(&port->dev, cap->driver_data); port->sw = typec_switch_get(&port->dev); if (IS_ERR(port->sw)) { diff --git a/include/linux/usb/typec.h b/include/linux/usb/typec.h index 7df4ecabc78a..8b90cd77331c 100644 --- a/include/linux/usb/typec.h +++ b/include/linux/usb/typec.h @@ -179,6 +179,7 @@ struct typec_partner_desc { * @sw: Cable plug orientation switch * @mux: Multiplexer switch for Alternate/Accessory Modes * @fwnode: Optional fwnode of the port + * @driver_data: Private pointer for driver specific info * @try_role: Set data role preference for DRP port * @dr_set: Set Data Role * @pr_set: Set Power Role @@ -198,6 +199,7 @@ struct typec_capability { struct typec_switch *sw; struct typec_mux *mux; struct fwnode_handle *fwnode; + void *driver_data; int (*try_role)(const struct typec_capability *, int role); @@ -241,6 +243,8 @@ int typec_set_orientation(struct typec_port *port, enum typec_orientation typec_get_orientation(struct typec_port *port); int typec_set_mode(struct typec_port *port, int mode); +void *typec_get_drvdata(struct typec_port *port); + int typec_find_port_power_role(const char *name); int typec_find_power_role(const char *name); int typec_find_port_data_role(const char *name);
Leaving the private driver_data pointer of the port device to the port drivers. Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> --- drivers/usb/typec/class.c | 11 +++++++++++ include/linux/usb/typec.h | 4 ++++ 2 files changed, 15 insertions(+)