Messages in this thread | | | Date | Tue, 14 Feb 2023 18:10:49 -0800 | Subject | Re: [PATCH v4 3/5] usb: gadget: Add function wakeup support | From | Elson Serrao <> |
| |
On 2/14/2023 4:55 PM, Thinh Nguyen wrote: > On Mon, Feb 13, 2023, Elson Roy Serrao wrote: >> A function which is in function suspend state has to send a >> function wake notification to the host in case it needs to >> exit from this state and resume data transfer. Add support to >> handle such requests by exposing a new gadget op. >> >> Signed-off-by: Elson Roy Serrao <quic_eserrao@quicinc.com> >> --- >> drivers/usb/gadget/composite.c | 24 ++++++++++++++++++++++++ >> drivers/usb/gadget/udc/core.c | 21 +++++++++++++++++++++ >> include/linux/usb/composite.h | 6 ++++++ >> include/linux/usb/gadget.h | 4 ++++ >> 4 files changed, 55 insertions(+) >> >> diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c >> index a37a8f4..51d6ee9 100644 >> --- a/drivers/usb/gadget/composite.c >> +++ b/drivers/usb/gadget/composite.c >> @@ -492,6 +492,30 @@ int usb_interface_id(struct usb_configuration *config, >> } >> EXPORT_SYMBOL_GPL(usb_interface_id); >> >> +int usb_func_wakeup(struct usb_function *func) >> +{ >> + int ret, id; >> + >> + if (!func->func_wakeup_armed) { >> + ERROR(func->config->cdev, "not armed for func remote wakeup\n"); >> + return -EINVAL; >> + } >> + >> + for (id = 0; id < MAX_CONFIG_INTERFACES; id++) >> + if (func->config->interface[id] == func) >> + break; >> + >> + if (id == MAX_CONFIG_INTERFACES) { >> + ERROR(func->config->cdev, "Invalid function id:%d\n", id); > > The print of id here is always MAX_CONFIG_INTERFACES right? > > Thanks, > Thinh > Thanks for catching this. Will rectify this in v5
>> + return -EINVAL; >> + } >> + >> + ret = usb_gadget_func_wakeup(func->config->cdev->gadget, id); >> + >> + return ret; >> +} >> +EXPORT_SYMBOL_GPL(usb_func_wakeup); >> +
| |