It can be used when asynchronous packet handling is available. Some changes in
the non-async read and write code.
TODO: sector write timing, seek timing (similar to legacy floppy).
- deactivate seek timer when operation is cancelled.
- set async packet mode with a separate method at connection time.
- renamed some variables and prepared seek emulation for USB disk writes.
MSD / SCSI code.
TODO list (async packet and seek support):
- seek emulation for USB harddisk write commands
- seek emulation for floppy
- async packet support for UHCI and xHCI
- improve and clean up OHCI async packet code
- Common USB code prepared for async USB packet handling (ported from an earlier
Qemu version).
- Added simple async packet handling to OHCI (partly ported from earlier Qemu).
- Implemented USB cdrom seek emulation for hubs with async packet support. The
legacy code is still present for hubs without this feature.
- For UHCI and xHCI the callback is set to NULL to force the usage of the
legacy cdrom read code.
TODO: clean up OHCI code, async support for UHCI and xHCI, seek emulation for
USB harddisk and floppy.
- rewrite of usb_dump_packet(), execute code only if debug output is enabled.
- OHCI: removed packet dump, it should be done in the devices code if necessary.
- Add a special list to the MSD state and add pointers to the runtime-only
options for the cdrom. The restore handler of this list calls runtime_config()
to make sure the media path and status are correctly updated.
- Registering a runtime config handler for the USB cdrom is not necessary since
runtime_config() is always called from the hub it is connected to.
- Restore a string parameter value only if it's different from the initial one.
with devices conected at runtime.
- Added restore handler support for the bx_list_c class. If a handler is
registered, it will be called after restoring all of the list's members.
- USB hub: add special lists to the port state and add pointers to the
runtime-only options for each port. The restore handler of this list calls
init_device() to make sure all connected devices can be restored.
- Call restore_logopts() after restoring hardware to make sure all saved
modules have been created.
- TODO: the USB cdrom also needs a fix for it's runtime-only options.
- Removed USB device type handling from constructor and init code, since we
only the 'floppy' type here.
- Write commands now using the device buffer for one sector.
TODO: support for starting without media and runtime media change.
- The read buffer is now limited to 16 sectors and the read commands can fill
it multiple times until all sectors have been read.
- The write commands are currently not using the device buffer, so no panic
should happen here.
- bx_param_num_c: set the value returned from the handler.
- bx_param_string_c: set the new value after processing the handler.
- harddrv param handler: check lock state of cdrom and modify value if true.
- Force a status bar update after unregistering an item.
- Added status indicators for USB disk and cdrom.
- Handle USB device disconnect in the runtime config handler, too.
devices like USB disk, cdrom or floppy. Using this feature for the new USB
floppy. Removed static indicators for port activity from the USB HC code.
TODO: Implement status LEDs for USB disk and cdrom.
by Ben Lunt. To connect a USB floppy you can use the 'floppy' device with the
path to the image separated with a colon. VVFAT is also supported.
FIXME: The device detection fails on some recent Linux distributions.
FIXME: Only 1.44M media format is currently supported.
TODO: Media change without disconnect is not implemented yet.