xhci: Update the times for usb command timeouts.

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>
ehci: Update usb command timeouts to use usb_xfer_time()

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
uhci: Update usb command timeouts to use usb_xfer_time()

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
ohci: Update usb command timeouts to use usb_xfer_time()

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Run all hard drive ops in 32 bit.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Run keyboard and mouse commands always in 32bit mode.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Run all hardware interrupt handlers in 32bit mode.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Implement call32 mechanism using SMIs.

This is a work in progress.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>