On Thu, Jan 31, 2019 at 11:54:11AM +0800, Kyle Tso wrote: > Provide a function to get the partner Source Capabilities. > > Signed-off-by: Kyle Tso <kyletso@xxxxxxxxxx> > --- > drivers/usb/typec/tcpm/tcpm.c | 23 +++++++++++++++++++++++ > include/linux/usb/tcpm.h | 1 + > 2 files changed, 24 insertions(+) > > diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c > index f1d3e54210df..29cd84ba9960 100644 > --- a/drivers/usb/typec/tcpm/tcpm.c > +++ b/drivers/usb/typec/tcpm/tcpm.c > @@ -4494,6 +4494,29 @@ int tcpm_update_sink_capabilities(struct tcpm_port *port, const u32 *pdo, > } > EXPORT_SYMBOL_GPL(tcpm_update_sink_capabilities); > > +/* > + * Don't call this function in interrupt context. Caller needs to free the > + * memory itself. > + */ > +int tcpm_get_partner_src_caps(struct tcpm_port *port, u32 **src_pdo) > +{ > + unsigned int nr_pdo; > + > + if (port->nr_source_caps == 0) > + return -ENODATA; > + > + *src_pdo = kcalloc(port->nr_source_caps, sizeof(u32), GFP_KERNEL); > + if (!src_pdo) > + return -ENOMEM; > + > + mutex_lock(&port->lock); > + nr_pdo = tcpm_copy_pdos(*src_pdo, port->source_caps, > + port->nr_source_caps); > + mutex_unlock(&port->lock); > + return nr_pdo; > +} > +EXPORT_SYMBOL_GPL(tcpm_get_partner_src_caps); We don't add new functions that no one uses :(