]> git.ipfire.org Git - thirdparty/ipxe.git/commit
[usb] Expose USB device descriptor and strings via settings
authorMichael Brown <mcb30@ipxe.org>
Fri, 18 Oct 2024 12:13:28 +0000 (13:13 +0100)
committerMichael Brown <mcb30@ipxe.org>
Fri, 18 Oct 2024 12:13:51 +0000 (13:13 +0100)
commitc69f9589cc7543baba08dbabdb5c30104fadaa34
tree15cb64369c6f7e50a399c5b43e7b1a3b917ee028
parentc219b5d8a9536cc87e9c53e8389e59c706ba3f8e
[usb] Expose USB device descriptor and strings via settings

Allow scripts to read basic information from USB device descriptors
via the settings mechanism.  For example:

  echo USB vendor ID: ${usb/${busloc}.8.2}
  echo USB device ID: ${usb/${busloc}.10.2}
  echo USB manufacturer name: ${usb/${busloc}.14.0}

The general syntax is

  usb/<bus:dev>.<offset>.<length>

where bus:dev is the USB bus:device address (as obtained via the
"usbscan" command, or from e.g. ${net0/busloc} for a USB network
device), and <offset> and <length> select the required portion of the
USB device descriptor.

Following the usage of SMBIOS settings tags, a <length> of zero may be
used to indicate that the byte at <offset> contains a USB string
descriptor index, and an <offset> of zero may be used to indicate that
the <length> contains a literal USB string descriptor index.

Since the byte at offset zero can never contain a string index, and a
literal string index can never be zero, the combination of both
<length> and <offset> being zero may be used to indicate that the
entire device descriptor is to be read as a raw hex dump.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/config/config_usb.c
src/config/settings.h
src/drivers/bus/usb.c
src/drivers/bus/usb_settings.c [new file with mode: 0644]
src/drivers/net/ecm.c
src/include/ipxe/errfile.h