* support USB 3.2 function remote wake
@ 2022-06-29 9:02 Chunfeng Yun
2022-06-29 10:22 ` Greg Kroah-Hartman
0 siblings, 1 reply; 3+ messages in thread
From: Chunfeng Yun @ 2022-06-29 9:02 UTC (permalink / raw)
To: Felipe Balbi; +Cc: Greg Kroah-Hartman, Alan Stern, linux-usb, linux-mediatek
Hi,
I plan to support function remote wakeup on our usb3 device controller
driver.
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;
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?
Thanks a lot
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: support USB 3.2 function remote wake
2022-06-29 9:02 support USB 3.2 function remote wake Chunfeng Yun
@ 2022-06-29 10:22 ` Greg Kroah-Hartman
2022-07-02 9:09 ` Chunfeng Yun
0 siblings, 1 reply; 3+ messages in thread
From: Greg Kroah-Hartman @ 2022-06-29 10:22 UTC (permalink / raw)
To: Chunfeng Yun; +Cc: Felipe Balbi, Alan Stern, linux-usb, linux-mediatek
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?
> 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?
> 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, 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
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: support USB 3.2 function remote wake
2022-06-29 10:22 ` Greg Kroah-Hartman
@ 2022-07-02 9:09 ` Chunfeng Yun
0 siblings, 0 replies; 3+ messages in thread
From: Chunfeng Yun @ 2022-07-02 9:09 UTC (permalink / raw)
To: Greg Kroah-Hartman; +Cc: Felipe Balbi, Alan Stern, linux-usb, linux-mediatek
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
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2022-07-02 9:09 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-29 9:02 support USB 3.2 function remote wake Chunfeng Yun
2022-06-29 10:22 ` Greg Kroah-Hartman
2022-07-02 9:09 ` Chunfeng Yun
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.