template <bool manage_lifetime, typename gtest_base>

class TestFixture

Defined at line 543 of file ../../src/devices/usb/drivers/dwc3/dwc3-test-fixture.h

Test is templated on a parameter which, if true, will have the harness start and stop the driver.

Otherwise, it is the individual test(s) responsibility to start and stop the driver.

Protected Members

uint32_t ver_number_
atomic dctl_val_
atomic dsts_val_
atomic ver_number31_
atomic ver_type31_
atomic stuck_reset_test_
atomic stuck_halt_test_
atomic vbus_high_
BackgroundDriverTest dut_

Public Methods

Dwc3::UserEndpoint & GetUserEndpoint (Dwc3 & drv, uint8_t ep_num)

Defined at line 548 of file ../../src/devices/usb/drivers/dwc3/dwc3-test-fixture.h

uint8_t UsbAddressToEpNum (uint8_t addr)

Defined at line 554 of file ../../src/devices/usb/drivers/dwc3/dwc3-test-fixture.h

const zx::bti & GetBti (const Dwc3 & drv)

Defined at line 556 of file ../../src/devices/usb/drivers/dwc3/dwc3-test-fixture.h

void TriggerEpTransferNotReady (Dwc3 & drv, uint8_t ep_num, uint32_t stage)

Defined at line 558 of file ../../src/devices/usb/drivers/dwc3/dwc3-test-fixture.h

void TriggerEpTransferComplete (Dwc3 & drv, uint8_t ep_num)

Defined at line 562 of file ../../src/devices/usb/drivers/dwc3/dwc3-test-fixture.h

void TriggerEpTransferInProgress (Dwc3 & drv, uint8_t ep_num)

Defined at line 583 of file ../../src/devices/usb/drivers/dwc3/dwc3-test-fixture.h

void TriggerEpTransferStarted (Dwc3 & drv, uint8_t ep_num, uint32_t rsrc_id)

Defined at line 604 of file ../../src/devices/usb/drivers/dwc3/dwc3-test-fixture.h

void TriggerEpTransferEnded (Dwc3 & drv, uint8_t ep_num)

Defined at line 608 of file ../../src/devices/usb/drivers/dwc3/dwc3-test-fixture.h

void TriggerConnectionDone (Dwc3 & drv)

Defined at line 612 of file ../../src/devices/usb/drivers/dwc3/dwc3-test-fixture.h

void TriggerConnectionPlugIn (fuchsia_hardware_usb_descriptor::UsbSpeed speed)

Defined at line 618 of file ../../src/devices/usb/drivers/dwc3/dwc3-test-fixture.h

VmoBufferResult CreateVmoBuffer (const fidl::SyncClient<fuchsia_hardware_usb_endpoint::Endpoint> & sync_client, size_t size, size_t buffer_size, uint8_t vmo_id, bool map)

Defined at line 643 of file ../../src/devices/usb/drivers/dwc3/dwc3-test-fixture.h

void SetUpAndPowerOnEndpoints ()

Defined at line 695 of file ../../src/devices/usb/drivers/dwc3/dwc3-test-fixture.h

void SetUp ()

Defined at line 701 of file ../../src/devices/usb/drivers/dwc3/dwc3-test-fixture.h

void TearDown ()

Defined at line 737 of file ../../src/devices/usb/drivers/dwc3/dwc3-test-fixture.h

Protected Methods

PlatformExtension * GetPlatformExtension (Dwc3 & drv)

Defined at line 615 of file ../../src/devices/usb/drivers/dwc3/dwc3-test-fixture.h

uint32_t Read_GHWPARAMS3 ()

Section 1.2.22 of the DWC3 Programmer's guide

DWC_USB31_CACHE_TOTAL_XFER_RESOURCES : 32

DWC_USB31_NUM_IN_EPS : 16

DWC_USB31_NUM_EPS : 32

DWC_USB31_VENDOR_CTL_INTERFACE : 0

DWC_USB31_HSPHY_DWIDTH : 2

DWC_USB31_HSPHY_INTERFACE : 1

DWC_USB31_SSPHY_INTERFACE : 2

Defined at line 765 of file ../../src/devices/usb/drivers/dwc3/dwc3-test-fixture.h

uint32_t Read_DCTL ()

Section 1.4.2 of the DWC3 Programmer's guide

Defined at line 770 of file ../../src/devices/usb/drivers/dwc3/dwc3-test-fixture.h

void Write_DCTL (uint32_t val)

Defined at line 771 of file ../../src/devices/usb/drivers/dwc3/dwc3-test-fixture.h

uint32_t Read_DSTS ()

Defined at line 802 of file ../../src/devices/usb/drivers/dwc3/dwc3-test-fixture.h

uint32_t Read_GSNPSID ()

Section 1.2.9 of the DWC3 Programmer's guide

core_id = 0x5533

version = 1.60a

Defined at line 808 of file ../../src/devices/usb/drivers/dwc3/dwc3-test-fixture.h

uint32_t Read_USB31_VER_NUMBER ()

Defined at line 809 of file ../../src/devices/usb/drivers/dwc3/dwc3-test-fixture.h

uint32_t Read_USB31_VER_TYPE ()

Defined at line 810 of file ../../src/devices/usb/drivers/dwc3/dwc3-test-fixture.h

zx_status_t WaitForPhy ()

There's an inherent race in the way this test is set up between the three threads: the

foreground testing thread, the background driver thread, and the environment thread the fakes

are running on. Driving the driver's dispatcher to an idle state and then tearing down the test

will race with the environment's dispatcher execution of the Watch handler. If the environment

dispatcher is torn down before the side effects of the Watch handler execute, ~FakeUsbPhy()

will sometimes fail. To resolve this race, the foreground testing thread needs to be

synchronized against the environment thread and wait for the fakes to catch up.

Defined at line 830 of file ../../src/devices/usb/drivers/dwc3/dwc3-test-fixture.h

Records