From: "Oleg Ilyasov via groups.io" <OlegI=ami.com@groups.io>
To: "devel@edk2.groups.io" <devel@edk2.groups.io>
Subject: [edk2-devel] RFC: UsbIo extensions
Date: Thu, 24 Oct 2024 18:22:06 +0000 [thread overview]
Message-ID: <BL3PR10MB616496E03BBB80D2FAD18D8EB84E2@BL3PR10MB6164.namprd10.prod.outlook.com> (raw)
[-- Attachment #1.1: Type: text/plain, Size: 2497 bytes --]
Hi, All
As currently defined, UsbIo protocol performs USB transfers on an interface as well as it returns various descriptors data for the selected device configuration.
This functionality is sufficient for common device drivers - mass storage, keyboard/mouse. However, more complex devices implement several types of descriptors that are not supported by UsbIo. These are Class Specific interface and endpoint descriptors, as well as interface association descriptors.
Also, when an interface descriptor contains multiple alternate settings, currently it is impossible to retrieve the data of non-default setting without selecting this setting. And this selection involves USB transaction with SET_INTERFACE command. Issuing this command might change the device state and may not be desirable.
The list of such "complex" devices includes USB cameras, audio devices, communication devices, modems, network controllers. Writing UEFI device driver for these using existing UsbIo is challenging.
A new protocol UsbIoExt extends the functionality of UsbDxeBus and aims to overcome the above mentioned problems.
PR: https://github.com/tianocore/edk2/pull/6368
It implements a protocol that 1) retrieves class specific descriptors 2) allows to get data from different alt setting without switching to this setting
Interface Association descriptor support will be a different PR that makes use of this UsbIoExt protocol.
Please review and respond.
[cid:image001.png@01DB2620.1A038990]
Oleg Ilyasov
BIOS Core Group
American Megatrends International LLC.
+1(770)246-8798
-The information contained in this message may be confidential and proprietary to American Megatrends (AMI). This communication is intended to be read only by the individual or entity to whom it is addressed or by their designee. If the reader of this message is not the intended recipient, you are on notice that any distribution of this message, in any form, is strictly prohibited. Please promptly notify the sender by reply e-mail or by telephone at 770-246-8600, and then delete or destroy all copies of the transmission.
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#120683): https://edk2.groups.io/g/devel/message/120683
Mute This Topic: https://groups.io/mt/109195507/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-
[-- Attachment #1.2: Type: text/html, Size: 6818 bytes --]
[-- Attachment #2: image001.png --]
[-- Type: image/png, Size: 5507 bytes --]
next reply other threads:[~2024-10-24 18:51 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-24 18:22 Oleg Ilyasov via groups.io [this message]
2024-10-25 15:06 ` [edk2-devel] RFC: UsbIo extensions olegi via groups.io
2024-11-12 15:42 ` olegi via groups.io
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-list 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=BL3PR10MB616496E03BBB80D2FAD18D8EB84E2@BL3PR10MB6164.namprd10.prod.outlook.com \
--to=devel@edk2.groups.io \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox