class Switches1Reg

Defined at line 203 of file ../../src/devices/power/drivers/fusb302/registers.h

SWITCHES1 - Configures the BMC PHY.

This register has reserved/undocumented bits. It can only be safely updated

via read/modify/write operations.

After reset, the GoodCRC header bits will be set to (Sink, PD Rev 2.0, UFP).

Rev 5 datasheet: Table 19 on page 20, Figure 12 "USB BMC Power Delivery

Blocks" on page 11, Figure 3 "Functional Block Diagram" on page 3

Public Members

 field_power_role_209
 field_spec_rev_217
 field_data_role_224
 field_auto_crc_238
 field_txcc2_241
 field_txcc1_242

Public Methods

template <, >
usb_pd::PowerRole power_role ()

The "Port Power Role" bit in the header of auto-generated GoodCRC messages.

The datasheet values match the values in usbpd3.1 6.2.1.1.4 "Port Power

Role".

Defined at line 209 of file ../../src/devices/power/drivers/fusb302/registers.h

template <, >
SelfType & set_power_role (usb_pd::PowerRole val)

The "Port Power Role" bit in the header of auto-generated GoodCRC messages.

The datasheet values match the values in usbpd3.1 6.2.1.1.4 "Port Power

Role".

Defined at line 209 of file ../../src/devices/power/drivers/fusb302/registers.h

template <, >
SelfType & set_spec_rev (usb_pd::SpecRevision val)

The "Spec Revision" bits in the header of auto-generated GoodCRC messages.

The datasheet values match the values in usbpd3.1 6.2.1.1.5 "Specification

Revision". While the Rev 5 datasheet marks 0b10 (Revision 3.0) as "Do Not

Use", experiments with a FUSB302BMPX did not encounter any issue using the

Revision 3.0 value.

Defined at line 217 of file ../../src/devices/power/drivers/fusb302/registers.h

template <, >
usb_pd::SpecRevision spec_rev ()

The "Spec Revision" bits in the header of auto-generated GoodCRC messages.

The datasheet values match the values in usbpd3.1 6.2.1.1.5 "Specification

Revision". While the Rev 5 datasheet marks 0b10 (Revision 3.0) as "Do Not

Use", experiments with a FUSB302BMPX did not encounter any issue using the

Revision 3.0 value.

Defined at line 217 of file ../../src/devices/power/drivers/fusb302/registers.h

template <, >
usb_pd::DataRole data_role ()

The "Port Data Role" bit in the header of auto-generated GoodCRC messages.

The datasheet values are intended to match the values in usbpd3.1 6.2.1.1.6

"Port Data Role". The datasheet conflates the power roles Sink/Source with

the data roles UFP/DFP.

Defined at line 224 of file ../../src/devices/power/drivers/fusb302/registers.h

template <, >
SelfType & set_data_role (usb_pd::DataRole val)

The "Port Data Role" bit in the header of auto-generated GoodCRC messages.

The datasheet values are intended to match the values in usbpd3.1 6.2.1.1.6

"Port Data Role". The datasheet conflates the power roles Sink/Source with

the data roles UFP/DFP.

Defined at line 224 of file ../../src/devices/power/drivers/fusb302/registers.h

template <, >
typename SelfType::ValueType auto_crc ()

If true, the PD Protocol Layer generates and sends GoodCRC messages.

This bit enables the hardware implementation of usbpd3.1 6.3.1 "GoodCRC

Message".

Delegating GoodCRC generation to the hardware relieves the application

processor from having to react to every USB PD message in 195 us (tTransmit

in usbpd3.1). On the flip side, having the PD Protocol Layer acknowledge

all received messages leads to tighter timing requirements in some cases.

For example, a Sink has 5 seconds (tNoResponse) to generate a Request in

response to a Source_Capabilities, but that time is cut down to 30

milliseconds (tSenderResponse) after the Sink sends GoodCRC.

Defined at line 238 of file ../../src/devices/power/drivers/fusb302/registers.h

template <, >
SelfType & set_auto_crc (typename SelfType::ValueType val)

If true, the PD Protocol Layer generates and sends GoodCRC messages.

This bit enables the hardware implementation of usbpd3.1 6.3.1 "GoodCRC

Message".

Delegating GoodCRC generation to the hardware relieves the application

processor from having to react to every USB PD message in 195 us (tTransmit

in usbpd3.1). On the flip side, having the PD Protocol Layer acknowledge

all received messages leads to tighter timing requirements in some cases.

For example, a Sink has 5 seconds (tNoResponse) to generate a Request in

response to a Source_Capabilities, but that time is cut down to 30

milliseconds (tSenderResponse) after the Sink sends GoodCRC.

Defined at line 238 of file ../../src/devices/power/drivers/fusb302/registers.h

template <, >
SelfType & set_txcc2 (typename SelfType::ValueType val)

Read/written by {Set}BmcPhyConnection().

Defined at line 241 of file ../../src/devices/power/drivers/fusb302/registers.h

template <, >
typename SelfType::ValueType txcc2 ()

Read/written by {Set}BmcPhyConnection().

Defined at line 241 of file ../../src/devices/power/drivers/fusb302/registers.h

template <, >
SelfType & set_txcc1 (typename SelfType::ValueType val)

Defined at line 242 of file ../../src/devices/power/drivers/fusb302/registers.h

template <, >
typename SelfType::ValueType txcc1 ()

NOLINTEND(misc-non-private-member-variables-in-classes)

Defined at line 242 of file ../../src/devices/power/drivers/fusb302/registers.h

hwreg::I2cRegisterAddr<Switches1Reg> Get ()

Defined at line 247 of file ../../src/devices/power/drivers/fusb302/registers.h

usb_pd::ConfigChannelPinSwitch BmcPhyConnection ()

Defined at line 1307 of file ../../src/devices/power/drivers/fusb302/registers.h

Switches1Reg & SetBmcPhyConnection (usb_pd::ConfigChannelPinSwitch connection)

Defined at line 1317 of file ../../src/devices/power/drivers/fusb302/registers.h

Records