mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 00:33:55 -06:00
usb: canokey fixes.
ui: better tab labels, cocoa fix, docs: convert fw_cfg to rst. -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEoDKM/7k6F6eZAf59TLbY7tPocTgFAmLCndwACgkQTLbY7tPo cTjNHA/+MT56crVXnjMTdgBRLOuq0cxYnIUptN0JPKx9DTJzdlXEyT+zYD7iIzUt W0xbOrTLVzU9hfJVh9/5V2HuFmc1eAhfl0BDTzd1TT0kdH6LyUkz5RWgotzo3nvH 7tnl/sBy48a7diSyQn6K2s8r35ubrX1GNJiJcCLWdVEqvzKKWDEqebs02PxbN/OJ 9UG9xtkM/QQ1+h74jq5BGKXf08xOhOZIjO274Sn5zievBC9JU6RVkCOlUXiBdk51 +vNTfKt3c864cstryXSTknYWyVv7zKzCqr7xR7c+fgbt3cN/HmLkM9LGytDMEDl/ IC0CtKiRN316GgVHHMDT8v8X2dVHNH9ZEEoXRKIbc5jD/tetJw7IIEO7blJphdpV WE4/bRpJwYVW9UHzig9rPRxsHLs3NSZbNCQEbGUvAbZzS2kq9hnDa/BBtFSYaf+X RIwR7rY7WhENfSrus1jR5rfWRU7n+q+fcNIFZetUakH1V6Idb0xQir3eM/yM6sBC nzQSzzLsd3Mwh2ahbnLZ1HkyybZV692usVylKsFLVwcUhCvk+VHccOF31QfrxO/j ogVzTYYtfrGM5kaknueIMg7XAhjQ04Av70+0b886kZawB3ZE5Ccare2TztHq1jcG dMdEm7DLaDRm2RXa9NtcbxsIrS0DT2EuFcBnQ1mHMCGql4MidzE= =Bhbw -----END PGP SIGNATURE----- Merge tag 'kraxel-20220704-pull-request' of https://gitlab.com/kraxel/qemu into staging usb: canokey fixes. ui: better tab labels, cocoa fix, docs: convert fw_cfg to rst. # -----BEGIN PGP SIGNATURE----- # # iQIzBAABCgAdFiEEoDKM/7k6F6eZAf59TLbY7tPocTgFAmLCndwACgkQTLbY7tPo # cTjNHA/+MT56crVXnjMTdgBRLOuq0cxYnIUptN0JPKx9DTJzdlXEyT+zYD7iIzUt # W0xbOrTLVzU9hfJVh9/5V2HuFmc1eAhfl0BDTzd1TT0kdH6LyUkz5RWgotzo3nvH # 7tnl/sBy48a7diSyQn6K2s8r35ubrX1GNJiJcCLWdVEqvzKKWDEqebs02PxbN/OJ # 9UG9xtkM/QQ1+h74jq5BGKXf08xOhOZIjO274Sn5zievBC9JU6RVkCOlUXiBdk51 # +vNTfKt3c864cstryXSTknYWyVv7zKzCqr7xR7c+fgbt3cN/HmLkM9LGytDMEDl/ # IC0CtKiRN316GgVHHMDT8v8X2dVHNH9ZEEoXRKIbc5jD/tetJw7IIEO7blJphdpV # WE4/bRpJwYVW9UHzig9rPRxsHLs3NSZbNCQEbGUvAbZzS2kq9hnDa/BBtFSYaf+X # RIwR7rY7WhENfSrus1jR5rfWRU7n+q+fcNIFZetUakH1V6Idb0xQir3eM/yM6sBC # nzQSzzLsd3Mwh2ahbnLZ1HkyybZV692usVylKsFLVwcUhCvk+VHccOF31QfrxO/j # ogVzTYYtfrGM5kaknueIMg7XAhjQ04Av70+0b886kZawB3ZE5Ccare2TztHq1jcG # dMdEm7DLaDRm2RXa9NtcbxsIrS0DT2EuFcBnQ1mHMCGql4MidzE= # =Bhbw # -----END PGP SIGNATURE----- # gpg: Signature made Mon 04 Jul 2022 01:29:24 PM +0530 # gpg: using RSA key A0328CFFB93A17A79901FE7D4CB6D8EED3E87138 # gpg: Good signature from "Gerd Hoffmann (work) <kraxel@redhat.com>" [undefined] # gpg: aka "Gerd Hoffmann <gerd@kraxel.org>" [undefined] # gpg: aka "Gerd Hoffmann (private) <kraxel@gmail.com>" [undefined] # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: A032 8CFF B93A 17A7 9901 FE7D 4CB6 D8EE D3E8 7138 * tag 'kraxel-20220704-pull-request' of https://gitlab.com/kraxel/qemu: hw: canokey: Remove HS support as not compliant to the spec docs/system/devices/usb/canokey: remove limitations on qemu-xhci hw/usb/canokey: fix compatibility of qemu-xhci hw/usb/canokey: Fix CCID ZLP ui/cocoa: Fix clipboard text release ui/console: allow display device to be labeled with given id Convert fw_cfg.rst to reStructuredText syntax Rename docs/specs/fw_cfg.txt to .rst Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
commit
dfe2382f06
7 changed files with 189 additions and 110 deletions
|
@ -56,7 +56,6 @@ static const USBDesc desc_canokey = {
|
|||
.iSerialNumber = STR_SERIALNUMBER,
|
||||
},
|
||||
.full = &desc_device_canokey,
|
||||
.high = &desc_device_canokey,
|
||||
.str = desc_strings,
|
||||
};
|
||||
|
||||
|
@ -103,17 +102,23 @@ int canokey_emu_transmit(
|
|||
pbuf, size);
|
||||
key->ep_in_size[ep_in] += size;
|
||||
key->ep_in_state[ep_in] = CANOKEY_EP_IN_READY;
|
||||
/*
|
||||
* wake up controller if we NAKed IN token before
|
||||
* Note: this is a quirk for CanoKey CTAPHID
|
||||
*/
|
||||
if (ep_in == CANOKEY_EMU_EP_CTAPHID) {
|
||||
usb_wakeup(usb_ep_get(&key->dev, USB_TOKEN_IN, ep_in), 0);
|
||||
}
|
||||
/*
|
||||
* ready for more data in device loop
|
||||
*
|
||||
* Note: this is a quirk for CanoKey CTAPHID
|
||||
* because it calls multiple emu_transmit in one device_loop
|
||||
* but w/o data_in it would stuck in device_loop
|
||||
* This has no side effect for CCID as it is strictly
|
||||
* OUT then IN transfer
|
||||
* However it has side effect for Control transfer
|
||||
* This has side effect for CCID since CCID can send ZLP
|
||||
* This also has side effect for Control transfer
|
||||
*/
|
||||
if (ep_in != 0) {
|
||||
if (ep_in == CANOKEY_EMU_EP_CTAPHID) {
|
||||
canokey_emu_data_in(ep_in);
|
||||
}
|
||||
return 0;
|
||||
|
@ -209,6 +214,22 @@ static void canokey_handle_data(USBDevice *dev, USBPacket *p)
|
|||
key->ep_out_size[ep_out] = out_len;
|
||||
canokey_emu_data_out(ep_out, NULL);
|
||||
}
|
||||
/*
|
||||
* Note: this is a quirk for CanoKey CTAPHID
|
||||
*
|
||||
* There is one code path that uses this device loop
|
||||
* INTR IN -> useful data_in and useless device_loop -> NAKed
|
||||
* INTR OUT -> useful device loop -> transmit -> wakeup
|
||||
* (useful thanks to both data_in and data_out having been called)
|
||||
* the next INTR IN -> actual data to guest
|
||||
*
|
||||
* if there is no such device loop, there would be no further
|
||||
* INTR IN, no device loop, no transmit hence no usb_wakeup
|
||||
* then qemu would hang
|
||||
*/
|
||||
if (ep_in == CANOKEY_EMU_EP_CTAPHID) {
|
||||
canokey_emu_device_loop(); /* may call transmit multiple times */
|
||||
}
|
||||
break;
|
||||
case USB_TOKEN_IN:
|
||||
if (key->ep_in_pos[ep_in] == 0) { /* first time IN */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue