Message ID | 20191001094858.68643-7-heikki.krogerus@linux.intel.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | usb: typec: Small API improvement | expand |
On 10/1/19 2:48 AM, Heikki Krogerus wrote: > Supplying the operation callbacks as part of a struct > typec_operations instead of as part of struct > typec_capability during port registration. > > Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> Reviewed-by: Guenter Roeck <linux@roeck-us.net> > --- > drivers/usb/typec/ucsi/ucsi.c | 22 +++++++++++----------- > 1 file changed, 11 insertions(+), 11 deletions(-) > > diff --git a/drivers/usb/typec/ucsi/ucsi.c b/drivers/usb/typec/ucsi/ucsi.c > index ba288b964dc8..edd722fb88b8 100644 > --- a/drivers/usb/typec/ucsi/ucsi.c > +++ b/drivers/usb/typec/ucsi/ucsi.c > @@ -17,9 +17,6 @@ > #include "ucsi.h" > #include "trace.h" > > -#define to_ucsi_connector(_cap_) container_of(_cap_, struct ucsi_connector, \ > - typec_cap) > - > /* > * UCSI_TIMEOUT_MS - PPM communication timeout > * > @@ -713,10 +710,9 @@ static int ucsi_role_cmd(struct ucsi_connector *con, struct ucsi_control *ctrl) > return ret; > } > > -static int > -ucsi_dr_swap(const struct typec_capability *cap, enum typec_data_role role) > +static int ucsi_dr_swap(struct typec_port *port, enum typec_data_role role) > { > - struct ucsi_connector *con = to_ucsi_connector(cap); > + struct ucsi_connector *con = typec_get_drvdata(port); > struct ucsi_control ctrl; > int ret = 0; > > @@ -748,10 +744,9 @@ ucsi_dr_swap(const struct typec_capability *cap, enum typec_data_role role) > return ret < 0 ? ret : 0; > } > > -static int > -ucsi_pr_swap(const struct typec_capability *cap, enum typec_role role) > +static int ucsi_pr_swap(struct typec_port *port, enum typec_role role) > { > - struct ucsi_connector *con = to_ucsi_connector(cap); > + struct ucsi_connector *con = typec_get_drvdata(port); > struct ucsi_control ctrl; > int ret = 0; > > @@ -788,6 +783,11 @@ ucsi_pr_swap(const struct typec_capability *cap, enum typec_role role) > return ret; > } > > +static const struct typec_operations ucsi_ops = { > + .dr_set = ucsi_dr_swap, > + .pr_set = ucsi_pr_swap > +}; > + > static struct fwnode_handle *ucsi_find_fwnode(struct ucsi_connector *con) > { > struct fwnode_handle *fwnode; > @@ -843,8 +843,8 @@ static int ucsi_register_port(struct ucsi *ucsi, int index) > *accessory = TYPEC_ACCESSORY_DEBUG; > > cap->fwnode = ucsi_find_fwnode(con); > - cap->dr_set = ucsi_dr_swap; > - cap->pr_set = ucsi_pr_swap; > + cap->driver_data = con; > + cap->ops = &ucsi_ops; > > /* Register the connector */ > con->port = typec_register_port(ucsi->dev, cap); >
diff --git a/drivers/usb/typec/ucsi/ucsi.c b/drivers/usb/typec/ucsi/ucsi.c index ba288b964dc8..edd722fb88b8 100644 --- a/drivers/usb/typec/ucsi/ucsi.c +++ b/drivers/usb/typec/ucsi/ucsi.c @@ -17,9 +17,6 @@ #include "ucsi.h" #include "trace.h" -#define to_ucsi_connector(_cap_) container_of(_cap_, struct ucsi_connector, \ - typec_cap) - /* * UCSI_TIMEOUT_MS - PPM communication timeout * @@ -713,10 +710,9 @@ static int ucsi_role_cmd(struct ucsi_connector *con, struct ucsi_control *ctrl) return ret; } -static int -ucsi_dr_swap(const struct typec_capability *cap, enum typec_data_role role) +static int ucsi_dr_swap(struct typec_port *port, enum typec_data_role role) { - struct ucsi_connector *con = to_ucsi_connector(cap); + struct ucsi_connector *con = typec_get_drvdata(port); struct ucsi_control ctrl; int ret = 0; @@ -748,10 +744,9 @@ ucsi_dr_swap(const struct typec_capability *cap, enum typec_data_role role) return ret < 0 ? ret : 0; } -static int -ucsi_pr_swap(const struct typec_capability *cap, enum typec_role role) +static int ucsi_pr_swap(struct typec_port *port, enum typec_role role) { - struct ucsi_connector *con = to_ucsi_connector(cap); + struct ucsi_connector *con = typec_get_drvdata(port); struct ucsi_control ctrl; int ret = 0; @@ -788,6 +783,11 @@ ucsi_pr_swap(const struct typec_capability *cap, enum typec_role role) return ret; } +static const struct typec_operations ucsi_ops = { + .dr_set = ucsi_dr_swap, + .pr_set = ucsi_pr_swap +}; + static struct fwnode_handle *ucsi_find_fwnode(struct ucsi_connector *con) { struct fwnode_handle *fwnode; @@ -843,8 +843,8 @@ static int ucsi_register_port(struct ucsi *ucsi, int index) *accessory = TYPEC_ACCESSORY_DEBUG; cap->fwnode = ucsi_find_fwnode(con); - cap->dr_set = ucsi_dr_swap; - cap->pr_set = ucsi_pr_swap; + cap->driver_data = con; + cap->ops = &ucsi_ops; /* Register the connector */ con->port = typec_register_port(ucsi->dev, cap);
Supplying the operation callbacks as part of a struct typec_operations instead of as part of struct typec_capability during port registration. Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> --- drivers/usb/typec/ucsi/ucsi.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-)