/*
 * Copyright 2022 The Chromium OS Authors
 * SPDX-License-Identifier: Apache-2.0
 */

/**
 * @file
 * @brief USBC Type-C Cable and Connector API used for USBC drivers
 *
 * The information in this file was taken from the USB Type-C
 * Cable and Connector Specification Release 2.1
 */

#ifndef ZEPHYR_INCLUDE_DRIVERS_USBC_USBC_TC_H_
#define ZEPHYR_INCLUDE_DRIVERS_USBC_USBC_TC_H_

/**
 * @brief USB Type-C
 * @defgroup usb_type_c USB Type-C
 * @ingroup io_interfaces
 * @{
 */

#include <zephyr/types.h>

#ifdef __cplusplus
extern "C" {
#endif

/**
 * @brief VBUS minimum for a sink disconnect detection.
 *	  See Table 4-3 VBUS Sink Characteristics
 */
#define TC_V_SINK_DISCONNECT_MIN_MV 800

/**
 * @brief VBUS maximum for a sink disconnect detection.
 *	  See Table 4-3 VBUS Sink Characteristics
 */
#define TC_V_SINK_DISCONNECT_MAX_MV 3670

/**
 * @brief From entry to Attached.SRC until VBUS reaches the minimum vSafe5V threshold as
 *	  measured at the source’s receptacle
 *	  See Table 4-29 VBUS and VCONN Timing Parameters
 */
#define TC_T_VBUS_ON_MAX_MS 275

/**
 * @brief From the time the Sink is detached until the Source removes VBUS and reaches
 *	  vSafe0V (See USB PD).
 *	  See Table 4-29 VBUS and VCONN Timing Parameters
 */
#define TC_T_VBUS_OFF_MAX_MS 650

/**
 * @brief From the time the Source supplied VBUS in the Attached.SRC state.
 *	  See Table 4-29 VBUS and VCONN Timing Parameters
 */
#define TC_T_VCONN_ON_MAX_MS 2

/**
 * @brief From the time a Sink with accessory support enters the PoweredAccessory state
 *	  until the Sink sources minimum VCONN voltage (see Table 4-5)
 *	  See Table 4-29 VBUS and VCONN Timing Parameters
 */
#define TC_T_VCONN_ON_PA_MAX_MS 100

/**
 * @brief From the time that a Sink is detached or as directed until the VCONN supply is
 *	  disconnected.
 *	  See Table 4-29 VBUS and VCONN Timing Parameters
 */
#define TC_T_VCONN_OFF_MAX_MS 35

/**
 * @brief Response time for a Sink to adjust its current consumption to be in the specified
 *	  range due to a change in USB Type-C Current advertisement
 *	  See Table 4-29 VBUS and VCONN Timing Parameters
 */
#define TC_T_SINK_ADJ_MAX_MS 60

/**
 * @brief The minimum period a DRP shall complete a Source to Sink and back advertisement
 *	  See Table 4-30 DRP Timing Parameters
 */
#define TC_T_DRP_MIN_MS 50

/**
 * @brief The maximum period a DRP shall complete a Source to Sink and back advertisement
 *	  See Table 4-30 DRP Timing Parameters
 */
#define TC_T_DRP_MAX_MS 100

/**
 * @brief The minimum time a DRP shall complete transitions between Source and Sink roles
 *	  during role resolution
 *	  See Table 4-30 DRP Timing Parameters
 */
#define TC_T_DRP_TRANSITION_MIN_MS 0

/**
 * @brief The maximum time a DRP shall complete transitions between Source and Sink roles
 *	  during role resolution
 *	  See Table 4-30 DRP Timing Parameters
 */
#define TC_T_DRP_TRANSITION_MAX_MS 1

/**
 * @brief Minimum wait time associated with the Try.SRC state.
 *	  See Table 4-30 DRP Timing Parameters
 */
#define TC_T_DRP_TRY_MIN_MS 75

/**
 * @brief Maximum wait time associated with the Try.SRC state.
 *	  See Table 4-30 DRP Timing Parameters
 */
#define TC_T_DRP_TRY_MAX_MS 150

/**
 * @brief Minimum wait time associated with the Try.SNK state.
 *	  See Table 4-30 DRP Timing Parameters
 */
#define TC_T_DRP_TRY_WAIT_MIN_MS 400

/**
 * @brief Maximum wait time associated with the Try.SNK state.
 *	  See Table 4-30 DRP Timing Parameters
 */
#define TC_T_DRP_TRY_WAIT_MAX_MS 800

/**
 * @brief Minimum timeout for transition from Try.SRC to TryWait.SNK.
 *	  See Table 4-30 DRP Timing Parameters
 */
#define TC_T_TRY_TIMEOUT_MIN_MS 550

/**
 * @brief Maximum timeout for transition from Try.SRC to TryWait.SNK.
 *	  See Table 4-30 DRP Timing Parameters
 */
#define TC_T_TRY_TIMEOUT_MAX_MS 1100

/**
 * @brief Minimum Time for a DRP to detect that the connected Charge-Through VCONNPowered
 *	  USB Device has been detached, after VBUS has been removed.
 *	  See Table 4-30 DRP Timing Parameters
 */
#define TC_T_VPD_DETACH_MIN_MS 10

/**
 * @brief Maximum Time for a DRP to detect that the connected Charge-Through VCONNPowered
 *	  USB Device has been detached, after VBUS has been removed.
 *	  See Table 4-30 DRP Timing Parameters
 */
#define TC_T_VPD_DETACH_MAX_MS 20

/**
 * @brief Minimum time a port shall wait before it can determine it is attached
 *	  See Table 4-31 CC Timing
 */
#define TC_T_CC_DEBOUNCE_MIN_MS 100

/**
 * @brief Maximum time a port shall wait before it can determine it is attached
 *	  See Table 4-31 CC Timing
 */
#define TC_T_CC_DEBOUNCE_MAX_MS 200

/**
 * @brief Minimum time a Sink port shall wait before it can determine it is detached due to
 *	  the potential for USB PD signaling on CC as described in the state definitions.
 *	  See Table 4-31 CC Timing
 */
#define TC_T_PD_DEBOUNCE_MIN_MS 10

/**
 * @brief Maximum time a Sink port shall wait before it can determine it is detached due to
 *	  the potential for USB PD signaling on CC as described in the state definitions.
 *	  See Table 4-31 CC Timing
 */
#define TC_T_PD_DEBOUNCE_MAX_MS 20

/**
 * @brief Minimum Time a port shall wait before it can determine it is re-attached during
 *	  the try-wait process.
 *	  See Table 4-31 CC Timing
 */
#define TC_T_TRY_CC_DEBOUNCE_MIN_MS 10

/**
 * @brief Maximum Time a port shall wait before it can determine it is re-attached during
 *	  the try-wait process.
 *	  See Table 4-31 CC Timing
 */
#define TC_T_TRY_CC_DEBOUNCE_MAX_MS 10

/**
 * @brief Minimum time a self-powered port shall remain in the ErrorRecovery state.
 *	  See Table 4-31 CC Timing
 */
#define TC_T_ERROR_RECOVERY_SELF_POWERED_MIN_MS 25

/**
 * @brief Minimum time a source shall remain in the ErrorRecovery state if it was sourcing
 *	  VCONN in the previous state.
 *	  See Table 4-31 CC Timing
 */
#define TC_T_ERROR_RECOVERY_SOURCE_MIN_MS 240

/**
 * @brief Minimum time a Sink port shall wait before it can determine there has been a change
 *	  in Rp where CC is not BMC Idle or the port is unable to detect BMC Idle.
 *	  See Table 4-31 CC Timing
 */
#define TC_T_RP_VALUE_CHANGE_MIN_MS 10

/**
 * @brief Maximum time a Sink port shall wait before it can determine there has been a change
 *	  in Rp where CC is not BMC Idle or the port is unable to detect BMC Idle.
 *	  See Table 4-31 CC Timing
 */
#define TC_T_RP_VALUE_CHANGE_MAX_MS 20

/**
 * @brief Minimum time a Source shall detect the SRC.Open state. The Source should detect the
 *	  SRC.Open state as quickly as practical.
 *	  See Table 4-31 CC Timing
 */
#define TC_T_SRC_DISCONNECT_MIN_MS 0

/**
 * @brief Maximum time a Source shall detect the SRC.Open state. The Source should detect the
 *	  SRC.Open state as quickly as practical.
 *	  See Table 4-31 CC Timing
 */
#define TC_T_SRC_DISCONNECT_MAX_MS 20

/**
 * @brief Minimum time to detect connection when neither Port Partner is toggling.
 *	  See Table 4-31 CC Timing
 */
#define TC_T_NO_TOGGLE_CONNECT_MIN_MS 0

/**
 * @brief Maximum time to detect connection when neither Port Partner is toggling.
 *	  See Table 4-31 CC Timing
 */
#define TC_T_NO_TOGGLE_CONNECT_MAX_MS 5

/**
 * @brief Minimum time to detect connection when one Port Partner is toggling
 *	  0ms … dcSRC.DRP max * tDRP max + 2 * tNoToggleConnect).
 *	  See Table 4-31 CC Timing
 */
#define TC_T_ONE_PORT_TOGGLE_CONNECT_MIN_MS 0

/**
 * @brief Maximum time to detect connection when one Port Partner is toggling
 *	  0ms … dcSRC.DRP max * tDRP max + 2 * tNoToggleConnect).
 *	  See Table 4-31 CC Timing
 */
#define TC_T_ONE_PORT_TOGGLE_CONNECT_MAX_MS 80

/**
 * @brief Minimum time to detect connection when both Port Partners are toggling
 *	  (0ms … 5 * tDRP max + 2 * tNoToggleConnect).
 *	  See Table 4-31 CC Timing
 */
#define TC_T_TWO_PORT_TOGGLE_CONNECT_MIN_MS 0

/**
 * @brief Maximum time to detect connection when both Port Partners are toggling
 *	  (0ms … 5 * tDRP max + 2 * tNoToggleConnect).
 *	  See Table 4-31 CC Timing
 */
#define TC_T_TWO_PORT_TOGGLE_CONNECT_MAX_MS 510

/**
 * @brief Minimum time for a Charge-Through VCONN-Powered USB Device to detect that the
 *	  Charge-Through source has disconnected from CC after VBUS has been removed,
 *	  transition to CTUnattached.VPD, and re-apply its Rp termination advertising
 *	  3.0 A on the host port CC.
 *	  See Table 4-31 CC Timing
 */
#define TC_T_VPDCTDD_MIN_US 30

/**
 * @brief Maximum time for a Charge-Through VCONN-Powered USB Device to detect that the
 *	  Charge-Through source has disconnected from CC after VBUS has been removed,
 *	  transition to CTUnattached.VPD, and re-apply its Rp termination advertising
 *	  3.0 A on the host port CC.
 *	  See Table 4-31 CC Timing
 */
#define TC_T_VPDCTDD_MAX_MS 5

/**
 * @brief Minimum time for a Charge-Through VCONN-Powered USB Device shall remain
 *	  in CTDisabled.VPD state.
 *	  See Table 4-31 CC Timing
 */
#define TC_T_VPDDISABLE_MIN_MS 25

/**
 * @brief CC Voltage status
 */
enum tc_cc_voltage_state {
	/** No port partner connection */
	TC_CC_VOLT_OPEN         = 0,
	/** Port partner is applying Ra */
	TC_CC_VOLT_RA           = 1,
	/** Port partner is applying Rd */
	TC_CC_VOLT_RD           = 2,
	/** Port partner is applying Rp (0.5A) */
	TC_CC_VOLT_RP_DEF       = 5,
	/*8 Port partner is applying Rp (1.5A) */
	TC_CC_VOLT_RP_1A5       = 6,
	/** Port partner is applying Rp (3.0A) */
	TC_CC_VOLT_RP_3A0       = 7,
};

/**
 * @brief VBUS level voltages
 */
enum tc_vbus_level {
	/** VBUS is less than vSafe0V max */
	TC_VBUS_SAFE0V  = 0,
	/** VBUS is at least vSafe5V min */
	TC_VBUS_PRESENT = 1,
	/** VBUS is less than vSinkDisconnect max */
	TC_VBUS_REMOVED = 2
};

/**
 * @brief Pull-Up resistor values
 */
enum tc_rp_value {
	/** Pull-Up resistor for a current of 900mA */
	TC_RP_USB       = 0,
	/** Pull-Up resistor for a current of 1.5A */
	TC_RP_1A5       = 1,
	/** Pull-Up resistor for a current of 3.0A */
	TC_RP_3A0       = 2,
	/** No Pull-Up resistor is applied */
	TC_RP_RESERVED  = 3
};

/**
 * @brief CC pull resistors
 */
enum tc_cc_pull {
	/** Ra Pull-Down resistor */
	TC_CC_RA        = 0,
	/** Rp Pull-Up resistor */
	TC_CC_RP        = 1,
	/** Rd Pull-Down resistor */
	TC_CC_RD        = 2,
	/** No CC resistor */
	TC_CC_OPEN      = 3,
	/** Ra and Rd Pull-Down resistor */
	TC_RA_RD        = 4
};

/**
 * @brief Power Delivery Power Role
 */
enum tc_power_role {
	/** Power role is a sink */
	TC_ROLE_SINK    = 0,
	/** Power role is a source */
	TC_ROLE_SOURCE  = 1
};

/**
 * @brief Power Delivery Data Role
 */
enum tc_data_role {
	/** Data role is an Upstream Facing Port */
	TC_ROLE_UFP             = 0,
	/** Data role is a Downstream Facing Port */
	TC_ROLE_DFP             = 1,
	/** Port is disconnected */
	TC_ROLE_DISCONNECTED    = 2
};

/**
 * @brief Polarity of the CC lines
 */
enum tc_cc_polarity {
	/** Use CC1 IO for Power Delivery communication */
	TC_POLARITY_CC1 = 0,
	/** Use CC2 IO for Power Delivery communication */
	TC_POLARITY_CC2 = 1
};

/**
 * @brief Possible port partner connections based on CC line states
 */
enum tc_cc_states {
	/** No port partner attached */
	TC_CC_NONE = 0,

	/** From DFP perspective */

	/** No UFP accessory connected */
	TC_CC_UFP_NONE          = 1,
	/** UFP Audio accessory connected */
	TC_CC_UFP_AUDIO_ACC     = 2,
	/** UFP Debug accessory connected */
	TC_CC_UFP_DEBUG_ACC     = 3,
	/** Plain UFP attached */
	TC_CC_UFP_ATTACHED      = 4,

	/** From UFP perspective */

	/** Plain DFP attached */
	TC_CC_DFP_ATTACHED      = 5,
	/** DFP debug accessory connected */
	TC_CC_DFP_DEBUG_ACC     = 6
};

/**
 * @}
 */

#ifdef __cplusplus
}
#endif

#endif /* ZEPHYR_INCLUDE_DRIVERS_USBC_USBC_TC_H_ */
