136 uint32_t fl_inactive_next_xact : 1 ;
137 uint32_t ep_number : 4 ;
138 uint32_t ep_speed : 2 ;
139 uint32_t data_toggle_control : 1 ;
140 uint32_t head_list_flag : 1 ;
141 uint32_t max_packet_size : 11 ;
142 uint32_t fl_ctrl_ep_flag : 1 ;
143 uint32_t nak_reload : 4 ;
146 uint32_t int_smask : 8 ;
147 uint32_t fl_int_cmask : 8 ;
148 uint32_t fl_hub_addr : 7 ;
149 uint32_t fl_hub_port : 7 ;
153 volatile uint32_t qtd_addr;
167 uint8_t TU_RESERVED[4];
171 uint32_t attached_buffer;
185 volatile uint32_t
offset : 12 ;
186 volatile uint32_t page_select : 3 ;
187 uint32_t int_on_complete : 1 ;
188 volatile uint32_t length : 12 ;
191 volatile uint32_t error : 1 ;
192 volatile uint32_t babble_err : 1 ;
193 volatile uint32_t buffer_err : 1 ;
194 volatile uint32_t active : 1 ;
198 uint32_t BufferPointer[7];
218 uint32_t ep_number : 4;
220 uint32_t hub_addr : 7;
222 uint32_t port_number : 7;
223 uint32_t direction : 1;
227 uint8_t fl_int_cmask;
232 volatile uint32_t : 1 ;
233 volatile uint32_t split_state : 1 ;
234 volatile uint32_t missed_uframe : 1 ;
235 volatile uint32_t xact_err : 1 ;
236 volatile uint32_t babble_err : 1 ;
237 volatile uint32_t buffer_err : 1 ;
238 volatile uint32_t error : 1 ;
239 volatile uint32_t active : 1 ;
241 volatile uint32_t cmask_progress : 8 ;
243 volatile uint32_t : 4 ;
244 volatile uint32_t page_select : 1 ;
245 uint32_t int_on_complete : 1 ;
257 uint8_t reserved2[2];
318typedef volatile struct
369 uint32_t usb_error : 1 ;
370 uint32_t port_change_detect : 1 ;
371 uint32_t framelist_rollover : 1 ;
372 uint32_t pci_host_system_error : 1 ;
373 uint32_t async_adv : 1 ;
375 uint32_t nxp_int_sof : 1 ;
377 uint32_t nxp_int_async : 1 ;
378 uint32_t nxp_int_period : 1 ;
388 uint32_t reserved[8] ;
417 uint32_t TU_RESERVED : 4;
425typedef volatile struct {
440 uint32_t TU_RESERVED : 3;
443 uint32_t TU_RESERVED : 4;
453 uint32_t TU_RESERVED : 1;
456 uint32_t TU_RESERVED : 16;
@ EHCI_USBCMD_INTERRUPT_THRESHOLD_SHIFT
@ EHCI_USBCMD_FRAMELIST_SIZE_SHIFT
@ EHCI_USBCMD_CHIPIDEA_FRAMELIST_SIZE_MSB_SHIFT
TU_VERIFY_STATIC(sizeof(ehci_link_t)==4, "size is not correct")
struct TU_ATTR_ALIGNED(32)
Queue Head.
@ EHCI_INT_MASK_PCI_HOST_SYSTEM_ERROR
@ EHCI_INT_MASK_ASYNC_SCHED_STATUS
@ EHCI_INT_MASK_FRAMELIST_ROLLOVER
@ EHCI_INT_MASK_RECLAIMATION
@ EHCI_INT_MASK_HC_HALTED
@ EHCI_INT_MASK_PERIODIC_SCHED_STATUS
@ EHCI_INT_MASK_PORT_CHANGE
@ EHCI_INT_MASK_ASYNC_ADVANCE
@ EHCI_PORTSC_MASK_CURRENT_CONNECT_STATUS
@ EHCI_PORTSC_MASK_PORT_POWER
@ EHCI_PORTSC_MASK_PORT_SUSPEND
@ EHCI_PORTSC_MASK_FORCE_RESUME
@ EHCI_PORTSC_MASK_PORT_ENABLE_CHANGE
@ EHCI_PORTSC_MASK_PORT_EANBLED
@ EHCI_PORTSC_MASK_CONNECT_STATUS_CHANGE
@ EHCI_PORTSC_MASK_OVER_CURRENT_CHANGE
@ EHCI_PORTSC_MASK_PORT_RESET
@ EHCI_USBCMD_ASYNC_SCHEDULE_ENABLE
@ EHCI_USBCMD_INTR_ON_ASYNC_ADVANCE_DOORBELL
@ EHCI_USBCMD_PERIOD_SCHEDULE_ENABLE
uint32_t programmable_frame_list_flag
uint32_t port_power_control
uint32_t iso_schedule_threshold
volatile uint32_t buffer_err
Data overrun/underrun error.
uint32_t pid
0: OUT, 1: IN, 2 Setup
volatile uint32_t babble_err
Babble detected, also set Halted bit to 1.
volatile uint32_t active
Start transfer, clear by HC when complete.
volatile uint32_t ping_err
For Highspeed: 0 Out, 1 Ping. Full/Slow used as error indicator.
volatile uint32_t non_hs_split_state
Used by HC to track the state of split transaction.
volatile uint32_t non_hs_missed_uframe
HC misses a complete split transaction.
volatile uint32_t total_bytes
Transfer bytes, decreased during transaction.
volatile uint32_t halted
Serious error or STALL received.
volatile uint32_t data_toggle
Data Toggle bit.
volatile uint32_t current_page
Index into the qTD buffer pointer list.
volatile uint32_t xact_err
Error (Timeout, CRC, Bad PID ... )
volatile uint32_t err_count
Error Counter of consecutive errors.
uint32_t int_on_complete
Interrupt on complete.
uint32_t nxp_int_period
NXP customized: This bit is set by the Host Controller when the cause of an interrupt is a completion...
uint32_t config_flag
0x40 not used by NXP
uint32_t reclamation
Used to detect empty async shecudle.
uint32_t port_owner
13: not used by NXP
uint32_t port_indicator_control
14-15: 00b: off, 01b: Amber, 10b: green, 11b: undefined
uint32_t nxp_phy_clock_disable
23: NXP customized: the PHY can be put into Low Power Suspend – Clock Disable when the downstream dev...
uint32_t port_power
12: 0= power off, 1= power on
uint32_t async_list_addr
0x18 Address of next async QHD to be executed
uint32_t ctrl_ds_seg
0x10 Control Data Structure Segment
uint32_t connect_status_change
01: [R/WC] Change in Current Connect Status
uint32_t port_reset
08: 1=Port is in Reset. 0=Port is not in Reset
uint32_t nxp_framelist_size_msb
NXP customized : Bit 2 of the Frame List Size bits 011b: 128 elements 100b: 64 elements 101b: 3...
uint32_t nxp_int_async
NXP customized: This bit is set by the Host Controller when the cause of an interrupt is a completion...
uint32_t nxp_port_speed
26-27: NXP customized: This register field indicates the speed atwhich the port is operating....
uint32_t wake_on_disconnect_enable
21: Enables device disconnects as wake-up events
uint32_t async_status
Async schedule status.
uint32_t usb
qTD with IOC is retired
uint32_t port_enabled
02: Ports can only be enabled by HC as a part of the reset and enable. SW can write 0 to disable
uint32_t async_enable
This bit controls whether the host controller skips processing the Asynchronous Schedule....
uint32_t run_stop
1=Run. 0=Stop
uint32_t suspend
07: Port in suspend state
uint32_t port_test_control
16-19: Port test mode, not used by tinyusb
uint32_t force_port_resume
06: Resume detected/driven on port. This functionality defined for manipulating this bit depends on t...
uint32_t over_current_change
05: [R/WC] Change to Over-current Active
uint32_t port_enable_change
03: [R/WC] Port Enabled has changed
uint32_t int_threshold
Default 08h. Interrupt rate in unit of micro frame.
uint32_t periodic_enable
This bit controls whether the host controller skips processing the Periodic Schedule....
uint32_t async_park_enable
Enable park mode, not used by tinyusb.
uint32_t over_current_active
04: Port has an over-current condition
uint32_t nxp_tt_control
nxp embedded transaction translator (reserved by EHCI specs)
uint32_t line_status
10-11: D+/D- state: 00: SE0, 10: J-state, 01: K-state
uint32_t hc_halted
Opposite value to run_stop bit.
uint32_t reset
SW write 1 to reset HC, clear by HC when complete.
uint32_t framelist_rollover
R/WC The Host Controller sets this bit to a one when the Frame List Index(see Section 2....
uint32_t wake_on_connect_enable
20: Enables device connects as wake-up events
uint32_t light_reset
Reset HC without affecting ports state.
uint32_t periodic_status
Periodic schedule status.
uint32_t async_adv
Async Advance interrupt.
uint32_t current_connect_status
00: 0: No device, 1: Device is present on port
uint32_t async_adv_doorbell
Tell HC to interrupt next time it advances async list. Clear by HC.
uint32_t usb_error
qTD retired due to error
uint32_t async_park_count
not used by tinyusb
uint32_t framelist_size
Frame List size 0: 1024, 1: 512, 2: 256.
uint32_t nxp_highspeed_status
09: NXP customized: 0=connected to the port is not in High-speed mode, 1=connected to the port is in ...
uint32_t wake_on_over_current_enable
22: Enables over-current conditions as wake-up events
uint32_t portsc
0x44 port status and control
uint32_t pci_host_system_error
R/WC (not used by NXP) The Host Controller sets this bit to 1 when a serious error occurs during a ho...
uint32_t periodic_list_base
0x14 Beginning address of perodic frame list
uint32_t nxp_int_sof
NXP customized: this bit will be set every 125us and can be used by host controller driver as a time ...
uint32_t nxp_port_force_fullspeed
24: NXP customized: Writing this bit to a 1 will force the port to only connect at Full Speed....
uint32_t port_change_detect
Set when PortOwner or ForcePortResume change from 0 -> 1.
uint32_t frame_index
0x0C Micro frame counter