All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chunfeng Yun <chunfeng.yun@mediatek.com>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Felipe Balbi <balbi@kernel.org>,
	Alan Stern <stern@rowland.harvard.edu>,
	<linux-usb@vger.kernel.org>, <linux-mediatek@lists.infradead.org>
Subject: Re: support USB 3.2 function remote wake
Date: Sat, 2 Jul 2022 17:09:30 +0800	[thread overview]
Message-ID: <f6f308d2ffe9a40d3182a923308162d7c4d80a6b.camel@mediatek.com> (raw)
In-Reply-To: <Yrwn6Y7OMdPtN+g/@kroah.com>

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


      reply	other threads:[~2022-07-02  9:09 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f6f308d2ffe9a40d3182a923308162d7c4d80a6b.camel@mediatek.com \
    --to=chunfeng.yun@mediatek.com \
    --cc=balbi@kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=stern@rowland.harvard.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.