Controller descriptor. This structure represents the common (controller-independent) part of a controller for the USB code. The corresponding controller-dependent part *hci_controller is located immediately before usb_controller.
More...
Controller descriptor. This structure represents the common (controller-independent) part of a controller for the USB code. The corresponding controller-dependent part *hci_controller is located immediately before usb_controller.
- Source
- bus/usb/common.inc:180
◆ BulkLock
MUTEX usb_controller::BulkLock |
mutex which guards all operations with control queue
◆ ConnectedTime
rd usb_controller::ConnectedTime |
Bitmask for 128 bits; bit i is cleared <=> address i is free for allocating for new devices. Bit 0 is always set.
◆ ControlLock
MUTEX usb_controller::ControlLock |
bit mask of ports which are ready to be initialized
◆ DevicesByPort
rd usb_controller::DevicesByPort |
Time, in timer ticks, when the port i has signalled the connect event. Valid only if bit i in NewConnected is set.
◆ ExistingAddresses
rd usb_controller::ExistingAddresses |
Buffer for USB control command SET_ADDRESS.
◆ HardwareFunc
dd usb_controller::HardwareFunc |
◆ NewConnected
dd usb_controller::NewConnected |
Items of RemovingList* which were released by hardware and are ready for further processing. (Pointers to some items in WaitPipeList* or NULLs).
◆ NewDisconnected
dd usb_controller::NewDisconnected |
bit mask of recently connected ports of the root hub, bit set = a device was recently connected to the corresponding port; after USB_CONNECT_DELAY ticks of stable status these ports are moved to PendingPorts
◆ Next
Two following fields organize all controllers in the global linked list.
◆ NumPorts
dd usb_controller::NumPorts |
◆ PCICoordinates
dd usb_controller::PCICoordinates |
Number of ports in the root hub.
◆ PendingPorts
dd usb_controller::PendingPorts |
bit mask of disconnected ports of the root hub, bit set = a device in the corresponding port was disconnected, disconnect processing is required.
◆ PeriodicLock
MUTEX usb_controller::PeriodicLock |
mutex which guards all operations with bulk queue
◆ Prev
◆ ReadyPipeHeadAsync
dd usb_controller::ReadyPipeHeadAsync |
Pending request to hardware to refresh cache for items from WaitPipeList*. (Pointers to some items in WaitPipeList* or NULLs).
◆ ReadyPipeHeadPeriodic
dd usb_controller::ReadyPipeHeadPeriodic |
◆ ResetTime
dd usb_controller::ResetTime |
◆ ResettingHub
dd usb_controller::ResettingHub |
USB frame number when WaitPipeRequest* was registered.
◆ ResettingPort
db usb_controller::ResettingPort |
Pointer to usb_hub responsible for the currently resetting port, if any. NULL for the root hub.
◆ ResettingSpeed
db usb_controller::ResettingSpeed |
Port that is currently resetting, 0-based.
◆ ResettingStatus
db usb_controller::ResettingStatus |
Speed of currently resetting device.
◆ SetAddressBuffer
rb usb_controller::SetAddressBuffer |
Time when reset signalling or reset recovery has been started.
◆ StartWaitFrame
dd usb_controller::StartWaitFrame |
spinlock guarding WaitPipeRequest/ReadyPipeHead (but not WaitPipeList)
◆ WaitPipeListAsync
dd usb_controller::WaitPipeListAsync |
Device:function and bus number from PCI.
The hardware is allowed to cache some data from hardware structures. Regular operations are designed considering this, but sometimes it is required to wait for synchronization of hardware cache with modified structures in memory. The code keeps two queues of pipes waiting for synchronization, one for asynchronous (bulk/control) pipes, one for periodic pipes, hardware cache is invalidated under different conditions for those types. Both queues are organized in the same way, as single-linked lists. There are three special positions: the head of list (new pipes are added here), the first pipe to be synchronized at the current iteration, the tail of list (all pipes starting from here are synchronized).
◆ WaitPipeListPeriodic
dd usb_controller::WaitPipeListPeriodic |
◆ WaitPipeRequestAsync
dd usb_controller::WaitPipeRequestAsync |
◆ WaitPipeRequestPeriodic
dd usb_controller::WaitPipeRequestPeriodic |
The documentation for this struct was generated from the following file: