Open FFBoard
Open source force feedback firmware
ehci_registers_t Struct Reference

#include <ehci.h>

Public Attributes

union {
   uint32_t   command
 
   struct {
      uint32_t   run_stop: 1
 1=Run. 0=Stop More...
 
      uint32_t   reset: 1
 SW write 1 to reset HC, clear by HC when complete. More...
 
      uint32_t   framelist_size: 2
 Frame List size 0: 1024, 1: 512, 2: 256. More...
 
      uint32_t   periodic_enable: 1
 This bit controls whether the host controller skips processing the Periodic Schedule. Values mean: 0b Do not process the Periodic Schedule 1b Use the PERIODICLISTBASE register to access the Periodic Schedule. More...
 
      uint32_t   async_enable: 1
 This bit controls whether the host controller skips processing the Asynchronous Schedule. Values mean: 0b Do not process the Asynchronous Schedule 1b Use the ASYNCLISTADDR register to access the Asynchronous Schedule. More...
 
      uint32_t   async_adv_doorbell: 1
 Tell HC to interrupt next time it advances async list. Clear by HC. More...
 
      uint32_t   light_reset: 1
 Reset HC without affecting ports state. More...
 
      uint32_t   async_park_count: 2
 not used by tinyusb More...
 
      uint32_t   __pad0__: 1
 
      uint32_t   async_park_enable: 1
 Enable park mode, not used by tinyusb. More...
 
      uint32_t   __pad1__: 3
 
      uint32_t   nxp_framelist_size_msb: 1
 NXP customized : Bit 2 of the Frame List Size bits
011b: 128 elements
100b: 64 elements
101b: 32 elements
110b: 16 elements
111b: 8 elements. More...
 
      uint32_t   int_threshold: 8
 Default 08h. Interrupt rate in unit of micro frame. More...
 
   }   command_bm
 
}; 
 
union {
   uint32_t   status
 
   struct {
      uint32_t   usb: 1
 qTD with IOC is retired More...
 
      uint32_t   usb_error: 1
 qTD retired due to error More...
 
      uint32_t   port_change_detect: 1
 Set when PortOwner or ForcePortResume change from 0 -> 1. More...
 
      uint32_t   framelist_rollover: 1
 R/WC The Host Controller sets this bit to a one when the Frame List Index(see Section 2.3.4) rolls over from its maximum value to zero. The exact value at which the rollover occurs depends on the frame list size. For example, if the frame list size (as programmed in the Frame List Sizefield of the USBCMD register) is 1024, the Frame Index Registerrolls over every time FRINDEX[13] toggles. Similarly, if the size is 512, the Host Controller sets this bit to a one every time FRINDEX[12] toggles. More...
 
      uint32_t   pci_host_system_error: 1
 R/WC (not used by NXP) The Host Controller sets this bit to 1 when a serious error occurs during a host system access involving the Host Controller module. In a PCI system, conditions that set this bit to 1 include PCI Parity error, PCI Master Abort, and PCI Target Abort. When this error occurs, the Host Controller clears the Run/Stop bit in the Command register to prevent further execution of the scheduled TDs. More...
 
      uint32_t   async_adv: 1
 Async Advance interrupt. More...
 
      uint32_t   __pad0__: 1
 
      uint32_t   nxp_int_sof: 1
 NXP customized: this bit will be set every 125us and can be used by host controller driver as a time base. More...
 
      uint32_t   __pad1__: 4
 
      uint32_t   hc_halted: 1
 Opposite value to run_stop bit. More...
 
      uint32_t   reclamation: 1
 Used to detect empty async shecudle. More...
 
      uint32_t   periodic_status: 1
 Periodic schedule status. More...
 
      uint32_t   async_status: 1
 Async schedule status. More...
 
      uint32_t   __pad2__: 2
 
      uint32_t   nxp_int_async: 1
 NXP customized: This bit is set by the Host Controller when the cause of an interrupt is a completion of a USB transaction where the Transfer Descriptor (TD) has an interrupt on complete (IOC) bit set and the TD was from the asynchronous schedule. This bit is also set by the Host when a short packet is detected and the packet is on the asynchronous schedule. More...
 
      uint32_t   nxp_int_period: 1
 NXP customized: This bit is set by the Host Controller when the cause of an interrupt is a completion of a USB transaction where the Transfer Descriptor (TD) has an interrupt on complete (IOC) bit set and the TD was from the periodic schedule. More...
 
      uint32_t   __pad3__: 12
 
   }   status_bm
 
}; 
 
union {
   uint32_t   inten
 
   struct {
      uint32_t   usb: 1
 
      uint32_t   usb_error: 1
 
      uint32_t   port_change_detect: 1
 
      uint32_t   framelist_rollover: 1
 
      uint32_t   pci_host_system_error: 1
 
      uint32_t   async_adv: 1
 
      uint32_t   __pad0__: 1
 
      uint32_t   nxp_int_sof: 1
 
      uint32_t   __pad1__: 10
 
      uint32_t   nxp_int_async: 1
 
      uint32_t   nxp_int_period: 1
 
      uint32_t   __pad2__: 12
 
   }   inten_bm
 
}; 
 
uint32_t frame_index
 0x0C Micro frame counter More...
 
uint32_t ctrl_ds_seg
 0x10 Control Data Structure Segment More...
 
uint32_t periodic_list_base
 0x14 Beginning address of perodic frame list More...
 
uint32_t async_list_addr
 0x18 Address of next async QHD to be executed More...
 
uint32_t nxp_tt_control
 nxp embedded transaction translator (reserved by EHCI specs) More...
 
uint32_t reserved [8]
 
uint32_t config_flag
 0x40 not used by NXP More...
 
union {
   uint32_t   portsc
 0x44 port status and control More...
 
   struct {
      uint32_t   current_connect_status: 1
 00: 0: No device, 1: Device is present on port More...
 
      uint32_t   connect_status_change: 1
 01: [R/WC] Change in Current Connect Status More...
 
      uint32_t   port_enabled: 1
 02: Ports can only be enabled by HC as a part of the reset and enable. SW can write 0 to disable More...
 
      uint32_t   port_enable_change: 1
 03: [R/WC] Port Enabled has changed More...
 
      uint32_t   over_current_active: 1
 04: Port has an over-current condition More...
 
      uint32_t   over_current_change: 1
 05: [R/WC] Change to Over-current Active More...
 
      uint32_t   force_port_resume: 1
 06: Resume detected/driven on port. This functionality defined for manipulating this bit depends on the value of the Suspend bit. More...
 
      uint32_t   suspend: 1
 07: Port in suspend state More...
 
      uint32_t   port_reset: 1
 08: 1=Port is in Reset. 0=Port is not in Reset More...
 
      uint32_t   nxp_highspeed_status: 1
 09: NXP customized: 0=connected to the port is not in High-speed mode, 1=connected to the port is in High-speed mode More...
 
      uint32_t   line_status: 2
 10-11: D+/D- state: 00: SE0, 10: J-state, 01: K-state More...
 
      uint32_t   port_power: 1
 12: 0= power off, 1= power on More...
 
      uint32_t   port_owner: 1
 13: not used by NXP More...
 
      uint32_t   port_indicator_control: 2
 14-15: 00b: off, 01b: Amber, 10b: green, 11b: undefined More...
 
      uint32_t   port_test_control: 4
 16-19: Port test mode, not used by tinyusb More...
 
      uint32_t   wake_on_connect_enable: 1
 20: Enables device connects as wake-up events More...
 
      uint32_t   wake_on_disconnect_enable: 1
 21: Enables device disconnects as wake-up events More...
 
      uint32_t   wake_on_over_current_enable: 1
 22: Enables over-current conditions as wake-up events More...
 
      uint32_t   nxp_phy_clock_disable: 1
 23: NXP customized: the PHY can be put into Low Power Suspend – Clock Disable when the downstream device has been put into suspend mode or when no downstream device is connected. Low power suspend is completely under the control of software. 0: enable PHY clock, 1: disable PHY clock More...
 
      uint32_t   nxp_port_force_fullspeed: 1
 24: NXP customized: Writing this bit to a 1 will force the port to only connect at Full Speed. It disables the chirp sequence that allowsthe port to identify itself as High Speed. This is useful for testing FS configurations with a HS host, hub or device. More...
 
      uint32_t   TU_RESERVED: 1
 25 More...
 
      uint32_t   nxp_port_speed: 2
 26-27: NXP customized: This register field indicates the speed atwhich the port is operating. For HS mode operation in the host controllerand HS/FS operation in the device controller the port routing steers data to the Protocol engine. For FS and LS mode operation in the host controller, the port routing steers data to the Protocol Engine w/ Embedded Transaction Translator. 0x0: Fullspeed, 0x1: Lowspeed, 0x2: Highspeed More...
 
   }   portsc_bm
 
}; 
 

Detailed Description

Definition at line 318 of file ehci.h.

Member Data Documentation

◆ 

union { ... } ehci_registers_t::@164

◆ 

union { ... } ehci_registers_t::@166

◆ 

union { ... } ehci_registers_t::@168

◆ 

union { ... } ehci_registers_t::@170

◆ __pad0__

uint32_t ehci_registers_t::__pad0__

Definition at line 332 of file ehci.h.

◆ __pad1__

uint32_t ehci_registers_t::__pad1__

Definition at line 334 of file ehci.h.

◆ __pad2__

uint32_t ehci_registers_t::__pad2__

Definition at line 357 of file ehci.h.

◆ __pad3__

uint32_t ehci_registers_t::__pad3__

Definition at line 360 of file ehci.h.

◆ async_adv

uint32_t ehci_registers_t::async_adv

Async Advance interrupt.

Definition at line 349 of file ehci.h.

◆ async_adv_doorbell

uint32_t ehci_registers_t::async_adv_doorbell

Tell HC to interrupt next time it advances async list. Clear by HC.

Definition at line 329 of file ehci.h.

◆ async_enable

uint32_t ehci_registers_t::async_enable

This bit controls whether the host controller skips processing the Asynchronous Schedule. Values mean: 0b Do not process the Asynchronous Schedule 1b Use the ASYNCLISTADDR register to access the Asynchronous Schedule.

Definition at line 328 of file ehci.h.

◆ async_list_addr

uint32_t ehci_registers_t::async_list_addr

0x18 Address of next async QHD to be executed

Definition at line 386 of file ehci.h.

◆ async_park_count

uint32_t ehci_registers_t::async_park_count

not used by tinyusb

Definition at line 331 of file ehci.h.

◆ async_park_enable

uint32_t ehci_registers_t::async_park_enable

Enable park mode, not used by tinyusb.

Definition at line 333 of file ehci.h.

◆ async_status

uint32_t ehci_registers_t::async_status

Async schedule status.

Definition at line 356 of file ehci.h.

◆ command

uint32_t ehci_registers_t::command

Definition at line 321 of file ehci.h.

◆ 

struct { ... } ehci_registers_t::command_bm

◆ config_flag

uint32_t ehci_registers_t::config_flag

0x40 not used by NXP

Definition at line 389 of file ehci.h.

◆ connect_status_change

uint32_t ehci_registers_t::connect_status_change

01: [R/WC] Change in Current Connect Status

Definition at line 396 of file ehci.h.

◆ ctrl_ds_seg

uint32_t ehci_registers_t::ctrl_ds_seg

0x10 Control Data Structure Segment

Definition at line 384 of file ehci.h.

◆ current_connect_status

uint32_t ehci_registers_t::current_connect_status

00: 0: No device, 1: Device is present on port

Definition at line 395 of file ehci.h.

◆ force_port_resume

uint32_t ehci_registers_t::force_port_resume

06: Resume detected/driven on port. This functionality defined for manipulating this bit depends on the value of the Suspend bit.

Definition at line 401 of file ehci.h.

◆ frame_index

uint32_t ehci_registers_t::frame_index

0x0C Micro frame counter

Definition at line 383 of file ehci.h.

◆ framelist_rollover

uint32_t ehci_registers_t::framelist_rollover

R/WC The Host Controller sets this bit to a one when the Frame List Index(see Section 2.3.4) rolls over from its maximum value to zero. The exact value at which the rollover occurs depends on the frame list size. For example, if the frame list size (as programmed in the Frame List Sizefield of the USBCMD register) is 1024, the Frame Index Registerrolls over every time FRINDEX[13] toggles. Similarly, if the size is 512, the Host Controller sets this bit to a one every time FRINDEX[12] toggles.

Definition at line 347 of file ehci.h.

◆ framelist_size

uint32_t ehci_registers_t::framelist_size

Frame List size 0: 1024, 1: 512, 2: 256.

Definition at line 326 of file ehci.h.

◆ hc_halted

uint32_t ehci_registers_t::hc_halted

Opposite value to run_stop bit.

Definition at line 353 of file ehci.h.

◆ int_threshold

uint32_t ehci_registers_t::int_threshold

Default 08h. Interrupt rate in unit of micro frame.

Definition at line 336 of file ehci.h.

◆ inten

uint32_t ehci_registers_t::inten

Definition at line 365 of file ehci.h.

◆ 

struct { ... } ehci_registers_t::inten_bm

◆ light_reset

uint32_t ehci_registers_t::light_reset

Reset HC without affecting ports state.

Definition at line 330 of file ehci.h.

◆ line_status

uint32_t ehci_registers_t::line_status

10-11: D+/D- state: 00: SE0, 10: J-state, 01: K-state

Definition at line 405 of file ehci.h.

◆ nxp_framelist_size_msb

uint32_t ehci_registers_t::nxp_framelist_size_msb

NXP customized : Bit 2 of the Frame List Size bits
011b: 128 elements
100b: 64 elements
101b: 32 elements
110b: 16 elements
111b: 8 elements.

Definition at line 335 of file ehci.h.

◆ nxp_highspeed_status

uint32_t ehci_registers_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 High-speed mode

Definition at line 404 of file ehci.h.

◆ nxp_int_async

uint32_t ehci_registers_t::nxp_int_async

NXP customized: This bit is set by the Host Controller when the cause of an interrupt is a completion of a USB transaction where the Transfer Descriptor (TD) has an interrupt on complete (IOC) bit set and the TD was from the asynchronous schedule. This bit is also set by the Host when a short packet is detected and the packet is on the asynchronous schedule.

Definition at line 358 of file ehci.h.

◆ nxp_int_period

uint32_t ehci_registers_t::nxp_int_period

NXP customized: This bit is set by the Host Controller when the cause of an interrupt is a completion of a USB transaction where the Transfer Descriptor (TD) has an interrupt on complete (IOC) bit set and the TD was from the periodic schedule.

Definition at line 359 of file ehci.h.

◆ nxp_int_sof

uint32_t ehci_registers_t::nxp_int_sof

NXP customized: this bit will be set every 125us and can be used by host controller driver as a time base.

Definition at line 351 of file ehci.h.

◆ nxp_phy_clock_disable

uint32_t ehci_registers_t::nxp_phy_clock_disable

23: NXP customized: the PHY can be put into Low Power Suspend – Clock Disable when the downstream device has been put into suspend mode or when no downstream device is connected. Low power suspend is completely under the control of software. 0: enable PHY clock, 1: disable PHY clock

Definition at line 413 of file ehci.h.

◆ nxp_port_force_fullspeed

uint32_t ehci_registers_t::nxp_port_force_fullspeed

24: NXP customized: Writing this bit to a 1 will force the port to only connect at Full Speed. It disables the chirp sequence that allowsthe port to identify itself as High Speed. This is useful for testing FS configurations with a HS host, hub or device.

Definition at line 414 of file ehci.h.

◆ nxp_port_speed

uint32_t ehci_registers_t::nxp_port_speed

26-27: NXP customized: This register field indicates the speed atwhich the port is operating. For HS mode operation in the host controllerand HS/FS operation in the device controller the port routing steers data to the Protocol engine. For FS and LS mode operation in the host controller, the port routing steers data to the Protocol Engine w/ Embedded Transaction Translator. 0x0: Fullspeed, 0x1: Lowspeed, 0x2: Highspeed

Definition at line 416 of file ehci.h.

◆ nxp_tt_control

uint32_t ehci_registers_t::nxp_tt_control

nxp embedded transaction translator (reserved by EHCI specs)

Definition at line 387 of file ehci.h.

◆ over_current_active

uint32_t ehci_registers_t::over_current_active

04: Port has an over-current condition

Definition at line 399 of file ehci.h.

◆ over_current_change

uint32_t ehci_registers_t::over_current_change

05: [R/WC] Change to Over-current Active

Definition at line 400 of file ehci.h.

◆ pci_host_system_error

uint32_t ehci_registers_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 host system access involving the Host Controller module. In a PCI system, conditions that set this bit to 1 include PCI Parity error, PCI Master Abort, and PCI Target Abort. When this error occurs, the Host Controller clears the Run/Stop bit in the Command register to prevent further execution of the scheduled TDs.

Definition at line 348 of file ehci.h.

◆ periodic_enable

uint32_t ehci_registers_t::periodic_enable

This bit controls whether the host controller skips processing the Periodic Schedule. Values mean: 0b Do not process the Periodic Schedule 1b Use the PERIODICLISTBASE register to access the Periodic Schedule.

Definition at line 327 of file ehci.h.

◆ periodic_list_base

uint32_t ehci_registers_t::periodic_list_base

0x14 Beginning address of perodic frame list

Definition at line 385 of file ehci.h.

◆ periodic_status

uint32_t ehci_registers_t::periodic_status

Periodic schedule status.

Definition at line 355 of file ehci.h.

◆ port_change_detect

uint32_t ehci_registers_t::port_change_detect

Set when PortOwner or ForcePortResume change from 0 -> 1.

Definition at line 346 of file ehci.h.

◆ port_enable_change

uint32_t ehci_registers_t::port_enable_change

03: [R/WC] Port Enabled has changed

Definition at line 398 of file ehci.h.

◆ port_enabled

uint32_t ehci_registers_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

Definition at line 397 of file ehci.h.

◆ port_indicator_control

uint32_t ehci_registers_t::port_indicator_control

14-15: 00b: off, 01b: Amber, 10b: green, 11b: undefined

Definition at line 408 of file ehci.h.

◆ port_owner

uint32_t ehci_registers_t::port_owner

13: not used by NXP

Definition at line 407 of file ehci.h.

◆ port_power

uint32_t ehci_registers_t::port_power

12: 0= power off, 1= power on

Definition at line 406 of file ehci.h.

◆ port_reset

uint32_t ehci_registers_t::port_reset

08: 1=Port is in Reset. 0=Port is not in Reset

Definition at line 403 of file ehci.h.

◆ port_test_control

uint32_t ehci_registers_t::port_test_control

16-19: Port test mode, not used by tinyusb

Definition at line 409 of file ehci.h.

◆ portsc

uint32_t ehci_registers_t::portsc

0x44 port status and control

Definition at line 393 of file ehci.h.

◆ 

const struct { ... } ehci_registers_t::portsc_bm

◆ reclamation

uint32_t ehci_registers_t::reclamation

Used to detect empty async shecudle.

Definition at line 354 of file ehci.h.

◆ reserved

uint32_t ehci_registers_t::reserved[8]

Definition at line 388 of file ehci.h.

◆ reset

uint32_t ehci_registers_t::reset

SW write 1 to reset HC, clear by HC when complete.

Definition at line 325 of file ehci.h.

◆ run_stop

uint32_t ehci_registers_t::run_stop

1=Run. 0=Stop

Definition at line 324 of file ehci.h.

◆ status

uint32_t ehci_registers_t::status

Definition at line 341 of file ehci.h.

◆ 

struct { ... } ehci_registers_t::status_bm

◆ suspend

uint32_t ehci_registers_t::suspend

07: Port in suspend state

Definition at line 402 of file ehci.h.

◆ TU_RESERVED

uint32_t ehci_registers_t::TU_RESERVED

25

Definition at line 415 of file ehci.h.

◆ usb

uint32_t ehci_registers_t::usb

qTD with IOC is retired

Definition at line 344 of file ehci.h.

◆ usb_error

uint32_t ehci_registers_t::usb_error

qTD retired due to error

Definition at line 345 of file ehci.h.

◆ wake_on_connect_enable

uint32_t ehci_registers_t::wake_on_connect_enable

20: Enables device connects as wake-up events

Definition at line 410 of file ehci.h.

◆ wake_on_disconnect_enable

uint32_t ehci_registers_t::wake_on_disconnect_enable

21: Enables device disconnects as wake-up events

Definition at line 411 of file ehci.h.

◆ wake_on_over_current_enable

uint32_t ehci_registers_t::wake_on_over_current_enable

22: Enables over-current conditions as wake-up events

Definition at line 412 of file ehci.h.


The documentation for this struct was generated from the following file: