/* Copyright 2020 The Chromium OS Authors. All rights reserved. * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ /* USB Power delivery port management */ /* For Fairchild FUSB302 */ #ifndef __CROS_EC_DRIVER_TCPM_FUSB302_H #define __CROS_EC_DRIVER_TCPM_FUSB302_H /* Chip Device ID - 302A or 302B */ #define FUSB302_DEVID_302A 0x08 #define FUSB302_DEVID_302B 0x09 /* I2C address varies by part number */ /* FUSB302BUCX / FUSB302BMPX */ #define FUSB302_I2C_ADDR_FLAGS 0x22 /* FUSB302B01MPX */ #define FUSB302_I2C_ADDR_B01_FLAGS 0x23 /* FUSB302B10MPX */ #define FUSB302_I2C_ADDR_B10_FLAGS 0x24 /* FUSB302B11MPX */ #define FUSB302_I2C_ADDR_B11_FLAGS 0x25 #define TCPC_REG_DEVICE_ID 0x01 #define TCPC_REG_SWITCHES0 0x02 #define TCPC_REG_SWITCHES0_CC2_PU_EN (1<<7) #define TCPC_REG_SWITCHES0_CC1_PU_EN (1<<6) #define TCPC_REG_SWITCHES0_VCONN_CC2 (1<<5) #define TCPC_REG_SWITCHES0_VCONN_CC1 (1<<4) #define TCPC_REG_SWITCHES0_MEAS_CC2 (1<<3) #define TCPC_REG_SWITCHES0_MEAS_CC1 (1<<2) #define TCPC_REG_SWITCHES0_CC2_PD_EN (1<<1) #define TCPC_REG_SWITCHES0_CC1_PD_EN (1<<0) #define TCPC_REG_SWITCHES1 0x03 #define TCPC_REG_SWITCHES1_POWERROLE (1<<7) #define TCPC_REG_SWITCHES1_SPECREV1 (1<<6) #define TCPC_REG_SWITCHES1_SPECREV0 (1<<5) #define TCPC_REG_SWITCHES1_DATAROLE (1<<4) #define TCPC_REG_SWITCHES1_AUTO_GCRC (1<<2) #define TCPC_REG_SWITCHES1_TXCC2_EN (1<<1) #define TCPC_REG_SWITCHES1_TXCC1_EN (1<<0) #define TCPC_REG_MEASURE 0x04 #define TCPC_REG_MEASURE_MDAC_MASK 0x3F #define TCPC_REG_MEASURE_VBUS (1<<6) /* * MDAC reference voltage step size is 42 mV. Round our thresholds to reduce * maximum error, which also matches suggested thresholds in datasheet * (Table 3. Host Interrupt Summary). */ #define TCPC_REG_MEASURE_MDAC_MV(mv) (DIV_ROUND_NEAREST((mv), 42) & 0x3f) #define TCPC_REG_CONTROL0 0x06 #define TCPC_REG_CONTROL0_TX_FLUSH (1<<6) #define TCPC_REG_CONTROL0_INT_MASK (1<<5) #define TCPC_REG_CONTROL0_HOST_CUR_MASK (3<<2) #define TCPC_REG_CONTROL0_HOST_CUR_3A0 (3<<2) #define TCPC_REG_CONTROL0_HOST_CUR_1A5 (2<<2) #define TCPC_REG_CONTROL0_HOST_CUR_USB (1<<2) #define TCPC_REG_CONTROL0_TX_START (1<<0) #define TCPC_REG_CONTROL1 0x07 #define TCPC_REG_CONTROL1_ENSOP2DB (1<<6) #define TCPC_REG_CONTROL1_ENSOP1DB (1<<5) #define TCPC_REG_CONTROL1_BIST_MODE2 (1<<4) #define TCPC_REG_CONTROL1_RX_FLUSH (1<<2) #define TCPC_REG_CONTROL1_ENSOP2 (1<<1) #define TCPC_REG_CONTROL1_ENSOP1 (1<<0) #define TCPC_REG_CONTROL2 0x08 /* two-bit field, valid values below */ #define TCPC_REG_CONTROL2_MODE_MASK (0x3<