usb: gadget: automatic remote wakeup on hid write

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

We have a use case to remote control a pc through a composite gadget
consisting of keyboard, mouse and tablet functions.
The problem we face is that when the pc is sent to sleep, we cannot
wake it by writing to the hid device, which is what you
would expect to work.

We're running on Xilinx Zynqmp soc/DWC3 290A.

We have set the bmAttributes ch9 USB_CONFIG_ATT_WAKEUP bit and do see
the set_feature request to enable remote
wakeup, just before the pc goes to sleep.

We noticed the recent relevant work
https://lore.kernel.org/linux-usb/1679694482-16430-1-git-send-email-quic_eserrao@xxxxxxxxxxx/,
regarding function suspend/resume and remote wakeup improvements.

However, the main question we have is: what would be the right place
in the gadget framework to fix the issue where a hid write
doesn't trigger a remote wake up when the usb device is suspended and
the host has enabled remote wakeup.

Some further context:
DWC3_DEVICE_EVENT_LINK_STATUS_CHANGE are disabled by default
(https://github.com/torvalds/linux/commit/799e9dc82968c66d6f8faf96d0bd01e515b0b2f2#diff-5e9721ccc2bd0a326d3b1a8cbcd9d91130774b1a7d06533c39074ad67aee7e96L1540),
so dwc3 gadget driver isn't interrupted when host goes to sleep, but
it does get DWC3_DEVICE_EVENT_WAKEUP when it wakes up.
So the gadget device in turn is not suspended when the pc goes to sleep.

dwc3_send_gadget_ep_cmd does issue __dwc3_gadget_wakeup when cmd is
DWC3_DEPCMD_STARTTRANSFER.
It has no provision for doing the same when cmd is DWC3_DEPCMD_UPDATETRANSFER,
which is our current patch to make it work in a pragmatic way.

Sorry if the mail format isn't what you normally expect, this is my
first time posting...

Br,

Bart Van Severen




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux