History log of /freebsd-10.3-release/sys/dev/usb/controller/ehci_pci.c
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
# 296373 04-Mar-2016 marius

- Copy stable/10@296371 to releng/10.3 in preparation for 10.3-RC1
builds.
- Update newvers.sh to reflect RC1.
- Update __FreeBSD_version to reflect 10.3.
- Update default pkg(8) configuration to use the quarterly branch.

Approved by: re (implicit)

# 278278 05-Feb-2015 hselasky

MFC r266969 and r276717:
Add 64-bit DMA support in the XHCI controller driver.
- Fix some comments and whitespaces while at it.
- Add support for PAE.


# 276968 11-Jan-2015 hselasky

MFC r271156 and r273376:
- Add IDs for Intel Patsburg USB 2.0 controller.
- Add the Intel BayTrail USB device which needs port routing for USB 3.0.


# 275439 03-Dec-2014 mav

MFC r275101:
Add bunch of PCI IDs of Intel Wildcat Point (9 Series) chipsets.


# 269864 12-Aug-2014 hselasky

MFC r257594:
Add description of two EHCI PCI IDs.


# 260348 05-Jan-2014 mav

MFC r258162:
Add some more IDs for Intel ATA, AHCI and USB controllers.


# 256281 10-Oct-2013 gjb

Copy head (r256279) to stable/10 as part of the 10.0-RELEASE cycle.

Approved by: re (implicit)
Sponsored by: The FreeBSD Foundation


# 254438 17-Aug-2013 hselasky

Fix some USB controller names according to pciconf output.

MFC after: 1 week
Submitted by: Dmitry Luhtionov <dmitryluhtionov@gmail.com>


# 238015 02-Jul-2012 mav

Add IDs for some USB controllers I have around. Just a cosmetics.

MFC after: 3 days


# 236073 26-May-2012 marius

Make the VIA workaround application somewhat more consistent with the
ATI one.


# 236069 26-May-2012 marius

Make the VIA workaround actually do its intended job.

MFC after: 3 days


# 228483 14-Dec-2011 hselasky

Implement better support for USB controller suspend and resume.

This patch should remove the need for kldunload of USB
controller drivers at suspend and kldload of USB controller
drivers at resume.

This patch also fixes some build issues in avr32dci.c

MFC after: 2 weeks


# 227849 22-Nov-2011 hselasky

Rename device_delete_all_children() into device_delete_children().

Suggested by: jhb @ and marius @
MFC after: 1 week


# 227843 22-Nov-2011 marius

- There's no need to overwrite the default device method with the default
one. Interestingly, these are actually the default for quite some time
(bus_generic_driver_added(9) since r52045 and bus_generic_print_child(9)
since r52045) but even recently added device drivers do this unnecessarily.
Discussed with: jhb, marcel
- While at it, use DEVMETHOD_END.
Discussed with: jhb
- Also while at it, use __FBSDID.


# 220558 12-Apr-2011 hselasky

We don't need to call EOWRITE4(sc, EHCI_USBINTR, 0) directly from each EHCI
bus driver at detach, hence ehci_detach() does exactly this since r199718.

Submitted by: Luiz Otavio O Souza
MFC after: 7 days
Approved by: thompsa (mentor)


# 220303 03-Apr-2011 hselasky

- Correct EHCI interrupt disabling at detach.

Submitted by: Luiz Otavio O Souza
MFC after: 7 days
Approved by: thompsa (mentor)


# 217265 11-Jan-2011 jhb

Remove unneeded includes of <sys/linker_set.h>. Other headers that use
it internally contain nested includes.

Reviewed by: bde


# 213871 14-Oct-2010 hselasky

Remove unused EHCI register definition.
Define reserved EHCI register.

Approved by: thompsa (mentor)


# 205802 28-Mar-2010 thompsa

Add PCI IDs for two more nForce controllers.

Submitted by: Dmitry Luhtionov @ gmail.com


# 204632 03-Mar-2010 joel

The NetBSD Foundation has granted permission to remove clause 3 and 4 from
their software.

Obtained from: NetBSD


# 203693 09-Feb-2010 thompsa

Disable the use of the IAAD usb doorbell on NVidia controllers as it can cause
the hardware to stall.

Submitted by: Hans Petter Selasky


# 200822 22-Dec-2009 thompsa

Add more EHCI pci ids.

Submitted by: Hans Petter Selasky


# 200305 09-Dec-2009 thompsa

Correct name, 82801IJ -> 82801JI

Submitted by: mitya_cabletv.dp.ua


# 200087 03-Dec-2009 thompsa

Add uhci/ehci controller ids.

Submitted by: mitya_cabletv.dp.ua


# 199058 08-Nov-2009 thompsa

Integrate lost interrupts patch from the old USB stack.

Some EHCI chips from VIA / ATI seem to trigger interrupts before writing back
the qTD status, or miss signalling occasionally under heavy load. If the host
machine is too fast, we can miss transaction completion - when we scan the
active list the transaction still seems to be active. This generally exhibits
itself as a umass stall that never recovers.

We work around this behaviour by setting up this callback after any softintr
that completes with transactions still pending, giving us another chance to
check for completion after the writeback has taken place

Submitted by: Alexander Nedotsuko
MFC after: 3 days


# 199057 08-Nov-2009 thompsa

ehci_init() will do reset and set the usbrev flag. Fix problem where
ehci_reset() was called before ehci_init().

PR: usb/140242
Submitted by: Sebastian Huber


# 198501 26-Oct-2009 thompsa

Revert r198500 for now, this will break situations when
hw.pci.usb_early_takeover is set to zero and the SMM release
is never done.

Pointed out by: marcel


# 198500 26-Oct-2009 thompsa

Remove usb controller takeover code now that it is handled by the pci code.

Reminded by: jhb
Reviewed by: HPS


# 198151 15-Oct-2009 thompsa

Workaround buggy BIOS code in USB regard. By doing the BIOS to OS handover for
all host controllers at the same time, we avoid problems where the BIOS will
actually write to the USB registers of all the USB host controllers every time
we handover one of them, and consequently reset the OS programmed values.

Submitted by: avg
Reviewed by: jhb


# 197554 28-Sep-2009 thompsa

Import two PCI quirks from Linux

- Add quirk for ATI SB600 and SB700 to free SMB controller
- Correct schedule sleep time to 10us on the VIA ehci controller

Reported by: Dorian B<FC>ttner, Andriy Gapon
Submitted by: Hans Petter Selasky


# 196219 14-Aug-2009 jhb

Purge mergeinfo from files that were temporarily renamed while USB2 was
imported into the tree alongside USB.

Approved by: re (mergeinfo blanket)


# 195958 30-Jul-2009 alfred

USB controller:
- patch from Alexander Motin <mav@freebsd.org>
- add more ID's
- P4 ID: 165805

Submitted by: hps
Approved by: re


# 194677 23-Jun-2009 thompsa

- Make struct usb_xfer opaque so that drivers can not access the internals
- Reduce the number of headers needed for a usb driver, the common case is just usb.h and usbdi.h


# 194228 15-Jun-2009 thompsa

s/usb2_/usb_|usbd_/ on all function names for the USB stack.


# 190755 06-Apr-2009 thompsa

Remove usb_sw_transfer.[ch] which are now empty after r190735.


# 190749 05-Apr-2009 piso

Remove pointeless mergeinfo that crept in from r190633.


# 190633 01-Apr-2009 piso

Implement an ipfw action to reassemble ip packets: reass.


# 190581 30-Mar-2009 mav

Integrate user/mav/ata branch:

Add ch_suspend/ch_resume methods for PCI controllers and implement them
for AHCI. Refactor AHCI channel initialization according to it.

Fix Port Multipliers operation. It is far from perfect yet, but works now.
Tested with JMicron JMB363 AHCI + SiI 3726 PMP pair.
Previous version was also tested with SiI 4726 PMP.

Hardware sponsored by: Vitsch Electronics / VEHosting.nl


# 190183 20-Mar-2009 thompsa

MFp4 //depot/projects/usb @159479,159502,159516,159522,159529

Workaround for buggy USB hardware not handling new SETUP packet before STATUS
stage is complete, this allows xfers to endpoint0 to return a short frame.

Submitted by: Hans Petter Selasky
Reported by: me


# 190174 20-Mar-2009 thompsa

MFp4 //depot/projects/usb @159430

- Move tunable defines into usb_core.h and dependancy towards usb_defs.h
- Leave hardcoded defines in "usb_defs.h".
- Allow overriding all tunable defines.
- Add more customisable typedefs.
- Correct maximum device number.

Submitted by: Hans Petter Selasky


# 189575 09-Mar-2009 imp

remove now-redunant cardbus attachment.


# 188942 23-Feb-2009 thompsa

Move the new USB stack into its new home.


# 188409 09-Feb-2009 thompsa

MFp4 //depot/projects/usb; 157069,157296,157375,157384,157430

- Change "usb2_pause_mtx" so that it takes the timeout value in ticks
- USB controller: EHCI High Speed Interrupt endpoint fix.
- Fix OHCI and EHCI counting bug when multiple TD's are involved in
a short USB transfer and a short packet happens on the non-last TD in the
USB transfer frame.
- USB process naming cleanup.

Submitted by: Hans Petter Selasky


# 187970 01-Feb-2009 thompsa

Remove check for null softc in attach, it can never happen.


# 187186 13-Jan-2009 thompsa

Sync to p4 156093

- Add quirks for Parallels

These snuck in as part of a perforce IFC.


# 187172 13-Jan-2009 thompsa

MFp4: //depot/projects/usb@155834

Factor out roothub process into the USB bus structure for
all USB controller drivers. Essentially I am trying to
save some processes on the root HUB and get away
from the config thread pradigm. There will be a follow up
commit where the root HUB control and interrupt callback
will be moved over to run from the roothub process.
Total win: 3 processes become 1 for every USB controller.

Submitted by: Hans Petter Selasky


# 187170 13-Jan-2009 thompsa

MFp4: //depot/projects/usb@155820

USB memory usage reduction patch.

Submitted by: Hans Petter Selasky


# 186439 23-Dec-2008 thompsa

Name the bus mutex by the controller name, this allows each bus to be
distinguished in lock profiling, etc.


# 185950 11-Dec-2008 thompsa

Remove superfluous return statements from the end of void functions.


# 184824 10-Nov-2008 thompsa

Convert the two main locking areas into macros to make it clear on what we are
grabbing and why. These are now:

USB_BUS_LOCK/USB_BUS_UNLOCK
USB_XFER_LOCK/USB_XFER_UNLOCK

Reviewed by: alfred


# 184610 04-Nov-2008 alfred

Bring in USB4BSD, Hans Petter Selasky rework of the USB stack
that includes significant features and SMP safety.

This commit includes a more or less complete rewrite of the *BSD USB
stack, including Host Controller and Device Controller drivers and
updating all existing USB drivers to use the new USB API:

1) A brief feature list:

- A new and mutex enabled USB API.

- Many USB drivers are now running Giant free.

- Linux USB kernel compatibility layer.

- New UGEN backend and libusb library, finally solves the "driver
unloading" problem. The new BSD licensed libusb20 library is fully
compatible with libusb-0.1.12 from sourceforge.

- New "usbconfig" utility, for easy configuration of USB.

- Full support for Split transactions, which means you can use your
full speed USB audio device on a high speed USB HUB.

- Full support for HS ISOC transactions, which makes writing drivers
for various HS webcams possible, for example.

- Full support for USB on embedded platforms, mostly cache flushing
and buffer invalidating stuff.

- Safer parsing of USB descriptors.

- Autodetect of annoying USB install disks.

- Support for USB device side mode, also called USB gadget mode,
using the same API like the USB host side. In other words the new
USB stack is symmetric with regard to host and device side.

- Support for USB transfers like I/O vectors, means more throughput
and less interrupts.

- ... see the FreeBSD quarterly status reports under "USB project"

2) To enable the driver in the default kernel build:

2.a) Remove all existing USB device options from your kernel config
file.

2.b) Add the following USB device options to your kernel configuration
file:

# USB core support
device usb2_core

# USB controller support
device usb2_controller
device usb2_controller_ehci
device usb2_controller_ohci
device usb2_controller_uhci

# USB mass storage support
device usb2_storage
device usb2_storage_mass

# USB ethernet support, requires miibus
device usb2_ethernet
device usb2_ethernet_aue
device usb2_ethernet_axe
device usb2_ethernet_cdce
device usb2_ethernet_cue
device usb2_ethernet_kue
device usb2_ethernet_rue
device usb2_ethernet_dav

# USB wireless LAN support
device usb2_wlan
device usb2_wlan_rum
device usb2_wlan_ral
device usb2_wlan_zyd

# USB serial device support
device usb2_serial
device usb2_serial_ark
device usb2_serial_bsa
device usb2_serial_bser
device usb2_serial_chcom
device usb2_serial_cycom
device usb2_serial_foma
device usb2_serial_ftdi
device usb2_serial_gensa
device usb2_serial_ipaq
device usb2_serial_lpt
device usb2_serial_mct
device usb2_serial_modem
device usb2_serial_moscom
device usb2_serial_plcom
device usb2_serial_visor
device usb2_serial_vscom

# USB bluetooth support
device usb2_bluetooth
device usb2_bluetooth_ng

# USB input device support
device usb2_input
device usb2_input_hid
device usb2_input_kbd
device usb2_input_ms

# USB sound and MIDI device support
device usb2_sound

2) To enable the driver at runtime:

2.a) Unload all existing USB modules. If USB is compiled into the
kernel then you might have to build a new kernel.

2.b) Load the "usb2_xxx.ko" modules under /boot/kernel having the same
base name like the kernel device option.

Submitted by: Hans Petter Selasky hselasky at c2i dot net
Reviewed by: imp, alfred