aboutsummaryrefslogtreecommitdiff
path: root/src/hw
AgeCommit message (Collapse)AuthorFilesLines
2014-12-29scsi: Don't export cdb_* functionsKevin O'Connor2-16/+7
The low-level cdb_* functions are now only used from within cmdblock.c, so don't export them. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-12-29scsi: Move process_scsi_op() to hw/blockcmd.c and renameKevin O'Connor2-0/+20
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-12-29scsi: Move cdb_* functions above scsi_* functionsKevin O'Connor1-88/+98
This is just code movement - no code changes. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-12-29sdcard: Initial support for SD cards on PCI SDHCI controllers on QEMUKevin O'Connor1-0/+321
This adds basic read/write support for SD cards emulated by QEMU. This code is not expected to work on real hardware, because the current controller and card initialization is not robust. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-12-15usb: Update USB hub code to support super speed hubsKevin O'Connor2-3/+39
Super speed hubs (usb3 spec) have specific initialization requirements. Add the code necessary to detect and initialize these hubs. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-12-03floppy: Make sure to yield() during floppy PIOKevin O'Connor1-0/+2
The floppy Programmed IO code really should yield while the controller is busy. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-11-12Minor - move PORT_PS2_CTRLB from hw/ps2port.h to hw/timer.cKevin O'Connor2-2/+1
The PORT_PS2_CTRLB port is only used by timers - it's just a historical artifact that it was part of the original ps2 controller. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-11-10megasas: read addional PCI I/O barHannes Reinecke1-0/+4
Some newer cards have the I/O bar at BAR 0, so we need to check that, too, if we cannot get an address for BAR 2. Without this patch the new 'megasas-gen2' emulation in qemu is not detected. Signed-off-by: Hannes Reinecke <hare@suse.de> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2014-10-16usb: Use usb_realloc_pipe for pipe alloc, update, and free.Kevin O'Connor2-36/+30
Now that the usb controller drivers all support the realloc method, use that for all pipe allocations, reallocations, and freeing. This gives the driver more control over the pipe life cycle. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-10-16ehci: Export ehci_realloc_pipe() instead of ehci_alloc_pipe()Kevin O'Connor3-5/+9
Support alloc, update, and free from the single exported function. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-10-16ohci: Export ohci_realloc_pipe() instead of ohci_alloc_pipe()Kevin O'Connor3-5/+9
Support alloc, update, and free from the single exported function. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-10-16uhci: Export uhci_realloc_pipe() instead of uhci_alloc_pipe()Kevin O'Connor3-5/+9
Support alloc, update, and free from the single exported function. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-10-16xhci: Change xhci_update_pipe() to xhci_realloc_pipe() and use for alloc tooKevin O'Connor3-12/+14
Instead of exporting both xhci_alloc_pipe() and xhci_update_pipe(), export only xhci_realloc_pipe() and support alloc, update, and free from it. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-10-16usb: Clarify usb freelist manipulationsKevin O'Connor5-12/+29
Rename usb_getFreePipe() to usb_get_freelist(). Add usb_is_freelist() and usb_add_freelist() functions. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-10-16usb: Rename free_pipe() to usb_free_pipe()Kevin O'Connor4-11/+11
Also, pass in usbdev to usb_free_pipe(). Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-10-16usb: Rename send_default_control() to usb_send_default_control()Kevin O'Connor5-16/+16
This is just function renaming - no code implementation changes. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-10-16usb: Rename findEndPointDesc() to usb_find_desc()Kevin O'Connor4-7/+7
This is just function renaming - no code implementation changes. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-10-16usb: Rename usb_getFrameExp() to usb_get_period()Kevin O'Connor6-8/+8
This is just function renaming - no code implementation changes. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-10-16usb: Rename ?hci_control() to ?hci_send_control()Kevin O'Connor9-24/+24
This is just function renaming - no code implementation changes. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-10-15Move a20 code from system.c and ps2port.h to x86.hKevin O'Connor1-11/+3
Although the a20 functionality was originally implemented in the ps2 controller, that is just a historical artifact. It's a core feature of modern x86 cpus and the code is better located in the x86.h header. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-09-16ehci: Fix bug in hub port assignmentKevin O'Connor1-1/+1
The usbdev->port field is zero indexed, while the USB spec expects the port values to start at one. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-09-16usb: Perform device detect polling on all usb controllers.Kevin O'Connor7-60/+35
Move the 100ms (USB_TIME_SIGATT) device detect polling from the ohci/uhci/usb-hub code to the generic usb_hub_port_setup() code. This extends the 100ms polling to ehci and xhci controllers. The code in usb_hub_port_setup() now compares USB_TIME_SIGATT to the start of usb_enumerate(), which may make boots faster when threads are disabled. This patch also changes the meaning of the return code for hub->op->detect() calls. Now 1 indicates device found, 0 indicates device not found, and -1 indicates permanent failure. Also, the xhci controller generic delay of 100ms is replaced with a 20ms root hub power stabilize time. This in combination with the 100ms for USB_TIME_SIGATT should be closer to the USB2 spec (the USB3 spec does not seem to declare an equivalent of USB_TIME_SIGATT). Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-09-16ehci: Stall uhci/ohci init only until default port routing is done.Kevin O'Connor1-18/+13
Now that uhci and ohci will continually poll for a device connect, the ehci controller only needs to ensure that the default routing is setup properly before allowing uhci and ohci to be initialized. This also fixes two error paths in configure_ehci() that were not properly updating PendingEHCIPorts. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-09-16ohci: Repeatedly poll for device detect for 100ms.Kevin O'Connor1-4/+11
According to the USB2 specification, a device may take up to 100ms (USB_TIME_SIGATT) after port power stabilizes to be detected. So, continually recheck for a device connection event. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-09-16uhci: Repeatedly poll for device detect for 100ms.Kevin O'Connor1-4/+11
According to the USB2 specification, a device may take up to 100ms (USB_TIME_SIGATT) after port power stabilizes to be detected. So, continually recheck for a device connection event. Technically, the uhci root hub ports are always powered up, but it's not possible to know how long the machine has been on, so it's better to be safe here. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-09-10xhci: Change xhci_hub_detect() to use connect status instead of link state.Kevin O'Connor1-9/+1
Use the connect status bit to determine if a device is connected instead of the port link state state machine status. This makes the driver more similar to the other drivers and may help diagnose devices that take longer to boot up. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-09-10usb-hub: Enable power to all ports prior to calling usb_enumerate().Kevin O'Connor2-11/+12
Don't perform port power up in the detect code. Instead do it prior to calling usb_enumerate(). This makes the code more similar to the usb root hub drivers. It can also reduce the total boot time when threads are disabled. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-09-10ehci: Move port power up from ehci_hub_detect() to check_ehci_ports().Kevin O'Connor1-13/+12
Don't perform port power up in the detect code. Instead do it prior to calling usb_enumerate(). This makes the code more similar to the ohci and xhci drivers. It can also reduce the total boot time when threads are disabled. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-09-10xhci: Add xhci_check_ports() and xhci_free_pipes() functions.Kevin O'Connor1-10/+27
Add these two functions so that the xhci code is more similar to the other USB controllers. Also, store the temporary hub structure on the stack instead of in struct usb_xhci_s. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-09-10xhci: Move root hub and setup code to top of file.Kevin O'Connor1-285/+290
Move the setup code to the top of the file so that like code is together and to make the code layout more similar to the other usb controllers. This change is purely code movement. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-09-10xhci: Use high memory instead of low memory for internal storage.Kevin O'Connor1-3/+3
Now that the driver runs exclusively in 32bit mode, avoid using the scarce low memory resource. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-09-10xhci: Remove 16bit code wrappers.Kevin O'Connor1-70/+48
The usb-xhci.c file is only compiled in 32bit mode now, so remove all the 16bit macros. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-09-09xhci: Call usb_desc2pipe() on xhci_update_pipe().Kevin O'Connor1-17/+20
Make sure to call usb_desc2pipe() when updating a pipe settings. This ensures that pipe->devaddr is properly updated. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-09-09usb: Fix usb_xfer_time() to work when called in 16bit mode.Kevin O'Connor1-1/+1
Make sure to wrap accesses to the usb_pipe struct with GET_LOWFLAT so that it works in 16bit mode. This bug impacts both ehci and uhci usb controllers (it should not impact ohci and xhci as those never call the function in 16bit mode). Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-06-14ohci: Update usb command timeouts to use usb_xfer_time()Kevin O'Connor1-4/+3
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-06-14uhci: Update usb command timeouts to use usb_xfer_time()Kevin O'Connor1-7/+6
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-06-14ehci: Update usb command timeouts to use usb_xfer_time()Kevin O'Connor1-5/+6
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-06-14xhci: Update the times for usb command timeouts.Kevin O'Connor3-2/+20
The xhci controller had a hardcoded 1 second timeout for both bulk and control transfers. The 1 second bulk timeout is too small for some real devices. Increase both times to 5.1 seconds - according to the USB spec, the maximum time a command should take is 5 seconds. However, have the set_address command only wait for 150ms (spec says set_address should take no more than 50ms). Introduce usb_xfer_time() to calculate maximum command time. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-06-04Move most of the VAR16FIXED() defs to misc.c.Kevin O'Connor1-2/+0
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-05-08xhci: Use msleep() instead of mdelay() for port status delay.Kevin O'Connor1-1/+1
Use msleep() so that interrupts and other threads can occur during the delay. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-04-16hw/pci: check if pci2pci bridges implement optional limit registersMarcel Apfelbaum2-0/+35
<I/O Base Register, I/O Limit Register> pair and <Prefetchable Memory Base Register, Prefetchable Memory Limit Register> pair are both optional. Do not reserve ranges if the above registers are not implemented. Signed-off-by: Marcel Apfelbaum <marcel.a@redhat.com>
2014-04-16hw/pci: reserve IO and mem for pci-2-pci bridges with no devices attachedMarcel Apfelbaum2-0/+20
If a pci-2-pci bridge supports hot-plug functionality but there are no devices connected to it, reserve IO/mem in order to be able to attach devices later. Do not waste space, use minimum allowed. Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Marcel Apfelbaum <marcel.a@redhat.com>
2014-04-11Minor - replace some tab characters that slipped into the code.Kevin O'Connor1-2/+2
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-04-08Minor - remove unused includes from pci.c.Kevin O'Connor1-5/+1
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-04-05usb: Only disable HID devices if both USB_MOUSE and USB_KEYBOARD are off.Kevin O'Connor1-1/+1
Fix typo in code causing both CONFIG_USB_MOUSE and CONFIG_USB_KEYBOARD to be effectively disabled if either is disabled. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-03-20vp_init_simple: enable PCI bus-mastering before relying on DMA.Eric Northup1-0/+1
An analogous change was made in the LSI scsi driver, commit 7d052575258ad2fc487ca3f9a6b62eff1b767900. Qemu works around guests that don't correctly enable PCI bus mastering before using virtio queues' DMA (search for VIRTIO_PCI_BUG_BUS_MASTER / VIRTIO_PCI_FLAG_BUS_MASTER_BUG ), but it'd be better to be correct. Signed-off-by: Eric Northup <digitaleric@google.com>
2014-03-20init_virtio_blk, init_virtio_scsi: reset HBA on errorEric Northup2-3/+3
Extend commit 5f2d17d35b2339526f3b3d580b279ea78e406a25: reset on all error paths, and also for virtio_blk not just virtio_scsi. Signed-off-by: Eric Northup <digitaleric@google.com>
2014-01-29xhci: Add copyright notice to usb-xhci.cKevin O'Connor1-0/+7
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-01-29xhci: Use the same endpoint initialization code in xhci_alloc_pipe()Kevin O'Connor1-45/+29
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-01-29usb: Move default pipe max packet size code from xhci to main code.Kevin O'Connor2-10/+10
Also, the max packet size for super speed devices is 512 bytes (not 256 bytes). Signed-off-by: Kevin O'Connor <kevin@koconnor.net>