support USB 3.2 function remote wake
Chunfeng Yun
chunfeng.yun at mediatek.com
Sat Jul 2 02:09:30 PDT 2022
On Wed, 2022-06-29 at 12:22 +0200, Greg Kroah-Hartman wrote:
> On Wed, Jun 29, 2022 at 05:02:54PM +0800, Chunfeng Yun wrote:
> > Hi,
> >
> > I plan to support function remote wakeup on our usb3 device
> > controller
> > driver.
>
> Is this based on dwc3 or some new silicon?
Based on mtu3;
>
> > A function may signal that it wants to exit from Function Suspend
> > by
> > sending a Function Wake Notification to the host, and the
> > notification
> > need knows the first interface number in this function.
> > But the current gadget ops:
> > int (*wakeup)(struct usb_gadget *);
> > does not provide information about interface number;
>
> Why would the interface matter as you need to do this for the whole
> device, not just one interface, right?
Yes, it is, but usb3.2 only supports function remote wakeup.
I look at the code of core/hub.c, as described in function
usb_enable_remote_wakeup():
" For USB-3 devices: Assume there's only one function on the device and
enable remote wake for the first interface. FIXME if the interface
association descriptor shows there's more than one function.
"
It assume the interface number is 0, and don't support multi-function
devices with IAD.
>
> > There seems to be two ways:
> > 1. add a new parameter as below,
> > int (*wakeup)(struct usb_gadget *, u8 intf);
> > 2. add a new ops, such as,
> > int (*function_wakeup)(struct usb_gadget *, u8 intf);
> >
> > Do you have any suggestions?
>
> Look at what the existing ones do,
Yes, I looked at all existing ones that support remote wakeup, but
seems no one support function wakeup (maybe also assume the interface
number is 0 if it does);
If we also follow the ways of host, no need change ops.
but there is also limitation for composite device with IAD;
> I do not think you have different
> suspend levels per USB interface, but rather the whole device.
> Try it
> and see.
>
> thanks,
>
> greg k-h
More information about the Linux-mediatek
mailing list