File Index
Files and directories
Sign in
FILE

tps6598x.h

File preview with syntax highlighting.

linux-6.19.14/drivers/usb/typec/tipd/tps6598x.h C
  1/* SPDX-License-Identifier: GPL-2.0+ */
  2/*
  3 * Driver for TI TPS6598x USB Power Delivery controller family
  4 *
  5 * Copyright (C) 2017, Intel Corporation
  6 * Author: Heikki Krogerus <heikki.krogerus@linux.intel.com>
  7 */
  8
  9#include <linux/bits.h>
 10#include <linux/bitfield.h>
 11
 12#ifndef __TPS6598X_H__
 13#define __TPS6598X_H__
 14
 15#define TPS_FIELD_GET(_mask, _reg) ((typeof(_mask))(((_reg) & (_mask)) >> __bf_shf(_mask)))
 16
 17/* TPS_REG_STATUS bits */
 18#define TPS_STATUS_PLUG_PRESENT		BIT(0)
 19#define TPS_STATUS_PLUG_UPSIDE_DOWN	BIT(4)
 20#define TPS_STATUS_TO_UPSIDE_DOWN(s)	(!!((s) & TPS_STATUS_PLUG_UPSIDE_DOWN))
 21#define TPS_STATUS_PORTROLE		BIT(5)
 22#define TPS_STATUS_TO_TYPEC_PORTROLE(s) (!!((s) & TPS_STATUS_PORTROLE))
 23#define TPS_STATUS_DATAROLE		BIT(6)
 24#define TPS_STATUS_TO_TYPEC_DATAROLE(s)	(!!((s) & TPS_STATUS_DATAROLE))
 25#define TPS_STATUS_VCONN		BIT(7)
 26#define TPS_STATUS_TO_TYPEC_VCONN(s)	(!!((s) & TPS_STATUS_VCONN))
 27#define TPS_STATUS_OVERCURRENT		BIT(16)
 28#define TPS_STATUS_GOTO_MIN_ACTIVE	BIT(26)
 29#define TPS_STATUS_BIST			BIT(27)
 30#define TPS_STATUS_HIGH_VOLTAGE_WARNING	BIT(28)
 31#define TPS_STATUS_HIGH_LOW_VOLTAGE_WARNING BIT(29)
 32
 33#define TPS_STATUS_CONN_STATE_MASK		GENMASK(3, 1)
 34#define TPS_STATUS_CONN_STATE(x)		TPS_FIELD_GET(TPS_STATUS_CONN_STATE_MASK, (x))
 35#define TPS_STATUS_PP_5V0_SWITCH_MASK		GENMASK(9, 8)
 36#define TPS_STATUS_PP_5V0_SWITCH(x)		TPS_FIELD_GET(TPS_STATUS_PP_5V0_SWITCH_MASK, (x))
 37#define TPS_STATUS_PP_HV_SWITCH_MASK		GENMASK(11, 10)
 38#define TPS_STATUS_PP_HV_SWITCH(x)		TPS_FIELD_GET(TPS_STATUS_PP_HV_SWITCH_MASK, (x))
 39#define TPS_STATUS_PP_EXT_SWITCH_MASK		GENMASK(13, 12)
 40#define TPS_STATUS_PP_EXT_SWITCH(x)		TPS_FIELD_GET(TPS_STATUS_PP_EXT_SWITCH_MASK, (x))
 41#define TPS_STATUS_PP_CABLE_SWITCH_MASK		GENMASK(15, 14)
 42#define TPS_STATUS_PP_CABLE_SWITCH(x)		TPS_FIELD_GET(TPS_STATUS_PP_CABLE_SWITCH_MASK, (x))
 43#define TPS_STATUS_POWER_SOURCE_MASK		GENMASK(19, 18)
 44#define TPS_STATUS_POWER_SOURCE(x)		TPS_FIELD_GET(TPS_STATUS_POWER_SOURCE_MASK, (x))
 45#define TPS_STATUS_VBUS_STATUS_MASK		GENMASK(21, 20)
 46#define TPS_STATUS_VBUS_STATUS(x)		TPS_FIELD_GET(TPS_STATUS_VBUS_STATUS_MASK, (x))
 47#define TPS_STATUS_USB_HOST_PRESENT_MASK	GENMASK(23, 22)
 48#define TPS_STATUS_USB_HOST_PRESENT(x)		TPS_FIELD_GET(TPS_STATUS_USB_HOST_PRESENT_MASK, (x))
 49#define TPS_STATUS_LEGACY_MASK			GENMASK(25, 24)
 50#define TPS_STATUS_LEGACY(x)			TPS_FIELD_GET(TPS_STATUS_LEGACY_MASK, (x))
 51
 52#define TPS_STATUS_CONN_STATE_NO_CONN		0
 53#define TPS_STATUS_CONN_STATE_DISABLED		1
 54#define TPS_STATUS_CONN_STATE_AUDIO_CONN	2
 55#define TPS_STATUS_CONN_STATE_DEBUG_CONN	3
 56#define TPS_STATUS_CONN_STATE_NO_CONN_R_A	4
 57#define TPS_STATUS_CONN_STATE_RESERVED		5
 58#define TPS_STATUS_CONN_STATE_CONN_NO_R_A	6
 59#define TPS_STATUS_CONN_STATE_CONN_WITH_R_A	7
 60
 61#define TPS_STATUS_PP_SWITCH_STATE_DISABLED	0
 62#define TPS_STATUS_PP_SWITCH_STATE_FAULT	1
 63#define TPS_STATUS_PP_SWITCH_STATE_OUT		2
 64#define TPS_STATUS_PP_SWITCH_STATE_IN		3
 65
 66#define TPS_STATUS_POWER_SOURCE_UNKNOWN		0
 67#define TPS_STATUS_POWER_SOURCE_VIN_3P3		1
 68#define TPS_STATUS_POWER_SOURCE_DEAD_BAT	2
 69#define TPS_STATUS_POWER_SOURCE_VBUS		3
 70
 71#define TPS_STATUS_VBUS_STATUS_VSAFE0V		0
 72#define TPS_STATUS_VBUS_STATUS_VSAFE5V		1
 73#define TPS_STATUS_VBUS_STATUS_PD		2
 74#define TPS_STATUS_VBUS_STATUS_FAULT		3
 75
 76#define TPS_STATUS_USB_HOST_PRESENT_NO		0
 77#define TPS_STATUS_USB_HOST_PRESENT_PD_NO_USB	1
 78#define TPS_STATUS_USB_HOST_PRESENT_NO_PD	2
 79#define TPS_STATUS_USB_HOST_PRESENT_PD_USB	3
 80
 81#define TPS_STATUS_LEGACY_NO			0
 82#define TPS_STATUS_LEGACY_SINK			1
 83#define TPS_STATUS_LEGACY_SOURCE		2
 84
 85/* TPS_REG_INT_* bits */
 86#define TPS_REG_INT_USER_VID_ALT_MODE_OTHER_VDM		BIT_ULL(27+32)
 87#define TPS_REG_INT_USER_VID_ALT_MODE_ATTN_VDM		BIT_ULL(26+32)
 88#define TPS_REG_INT_USER_VID_ALT_MODE_EXIT		BIT_ULL(25+32)
 89#define TPS_REG_INT_USER_VID_ALT_MODE_ENTERED		BIT_ULL(24+32)
 90#define TPS_REG_INT_EXIT_MODES_COMPLETE			BIT_ULL(20+32)
 91#define TPS_REG_INT_DISCOVER_MODES_COMPLETE		BIT_ULL(19+32)
 92#define TPS_REG_INT_VDM_MSG_SENT			BIT_ULL(18+32)
 93#define TPS_REG_INT_VDM_ENTERED_MODE			BIT_ULL(17+32)
 94#define TPS_REG_INT_ERROR_UNABLE_TO_SOURCE		BIT_ULL(14+32)
 95#define TPS_REG_INT_SRC_TRANSITION			BIT_ULL(10+32)
 96#define TPS_REG_INT_ERROR_DISCHARGE_FAILED		BIT_ULL(9+32)
 97#define TPS_REG_INT_ERROR_MESSAGE_DATA			BIT_ULL(7+32)
 98#define TPS_REG_INT_ERROR_PROTOCOL_ERROR		BIT_ULL(6+32)
 99#define TPS_REG_INT_ERROR_MISSING_GET_CAP_MESSAGE	BIT_ULL(4+32)
100#define TPS_REG_INT_ERROR_POWER_EVENT_OCCURRED		BIT_ULL(3+32)
101#define TPS_REG_INT_ERROR_CAN_PROVIDE_PWR_LATER		BIT_ULL(2+32)
102#define TPS_REG_INT_ERROR_CANNOT_PROVIDE_PWR		BIT_ULL(1+32)
103#define TPS_REG_INT_ERROR_DEVICE_INCOMPATIBLE		BIT_ULL(0+32)
104#define TPS_REG_INT_CMD2_COMPLETE			BIT(31)
105#define TPS_REG_INT_CMD1_COMPLETE			BIT(30)
106#define TPS_REG_INT_ADC_HIGH_THRESHOLD			BIT(29)
107#define TPS_REG_INT_ADC_LOW_THRESHOLD			BIT(28)
108#define TPS_REG_INT_PD_STATUS_UPDATE			BIT(27)
109#define TPS_REG_INT_STATUS_UPDATE			BIT(26)
110#define TPS_REG_INT_DATA_STATUS_UPDATE			BIT(25)
111#define TPS_REG_INT_POWER_STATUS_UPDATE			BIT(24)
112#define TPS_REG_INT_PP_SWITCH_CHANGED			BIT(23)
113#define TPS_REG_INT_HIGH_VOLTAGE_WARNING		BIT(22)
114#define TPS_REG_INT_USB_HOST_PRESENT_NO_LONGER		BIT(21)
115#define TPS_REG_INT_USB_HOST_PRESENT			BIT(20)
116#define TPS_REG_INT_GOTO_MIN_RECEIVED			BIT(19)
117#define TPS_REG_INT_PR_SWAP_REQUESTED			BIT(17)
118#define TPS_REG_INT_SINK_CAP_MESSAGE_READY		BIT(15)
119#define TPS_REG_INT_SOURCE_CAP_MESSAGE_READY		BIT(14)
120#define TPS_REG_INT_NEW_CONTRACT_AS_PROVIDER		BIT(13)
121#define TPS_REG_INT_NEW_CONTRACT_AS_CONSUMER		BIT(12)
122#define TPS_REG_INT_VDM_RECEIVED			BIT(11)
123#define TPS_REG_INT_ATTENTION_RECEIVED			BIT(10)
124#define TPS_REG_INT_OVERCURRENT				BIT(9)
125#define TPS_REG_INT_BIST				BIT(8)
126#define TPS_REG_INT_RDO_RECEIVED_FROM_SINK		BIT(7)
127#define TPS_REG_INT_DR_SWAP_COMPLETE			BIT(5)
128#define TPS_REG_INT_PR_SWAP_COMPLETE			BIT(4)
129#define TPS_REG_INT_PLUG_EVENT				BIT(3)
130#define TPS_REG_INT_HARD_RESET				BIT(1)
131#define TPS_REG_INT_PD_SOFT_RESET			BIT(0)
132
133/* Apple-specific TPS_REG_INT_* bits */
134#define APPLE_CD_REG_INT_DATA_STATUS_UPDATE		BIT(10)
135#define APPLE_CD_REG_INT_POWER_STATUS_UPDATE		BIT(9)
136#define APPLE_CD_REG_INT_STATUS_UPDATE			BIT(8)
137#define APPLE_CD_REG_INT_PLUG_EVENT			BIT(1)
138
139/* TPS_REG_SYSTEM_POWER_STATE states */
140#define TPS_SYSTEM_POWER_STATE_S0	0x00
141#define TPS_SYSTEM_POWER_STATE_S3	0x03
142#define TPS_SYSTEM_POWER_STATE_S4	0x04
143#define TPS_SYSTEM_POWER_STATE_S5	0x05
144
145/* TPS_REG_POWER_STATUS bits */
146#define TPS_POWER_STATUS_CONNECTION(x)  TPS_FIELD_GET(BIT(0), (x))
147#define TPS_POWER_STATUS_SOURCESINK(x)	TPS_FIELD_GET(BIT(1), (x))
148#define TPS_POWER_STATUS_BC12_DET(x)	TPS_FIELD_GET(BIT(2), (x))
149
150#define TPS_POWER_STATUS_TYPEC_CURRENT_MASK GENMASK(3, 2)
151#define TPS_POWER_STATUS_PWROPMODE(p)	    TPS_FIELD_GET(TPS_POWER_STATUS_TYPEC_CURRENT_MASK, (p))
152#define TPS_POWER_STATUS_BC12_STATUS_MASK   GENMASK(6, 5)
153#define TPS_POWER_STATUS_BC12_STATUS(p)	    TPS_FIELD_GET(TPS_POWER_STATUS_BC12_STATUS_MASK, (p))
154
155#define TPS_POWER_STATUS_TYPEC_CURRENT_USB     0
156#define TPS_POWER_STATUS_TYPEC_CURRENT_1A5     1
157#define TPS_POWER_STATUS_TYPEC_CURRENT_3A0     2
158#define TPS_POWER_STATUS_TYPEC_CURRENT_PD      3
159
160#define TPS_POWER_STATUS_BC12_STATUS_SDP 0
161#define TPS_POWER_STATUS_BC12_STATUS_CDP 2
162#define TPS_POWER_STATUS_BC12_STATUS_DCP 3
163
164/* TPS25750_REG_POWER_STATUS bits */
165#define TPS25750_POWER_STATUS_CHARGER_DETECT_STATUS_MASK	GENMASK(7, 4)
166#define TPS25750_POWER_STATUS_CHARGER_DETECT_STATUS(p) \
167	TPS_FIELD_GET(TPS25750_POWER_STATUS_CHARGER_DETECT_STATUS_MASK, (p))
168#define TPS25750_POWER_STATUS_CHARGER_ADVERTISE_STATUS_MASK	GENMASK(9, 8)
169#define TPS25750_POWER_STATUS_CHARGER_ADVERTISE_STATUS(p) \
170	TPS_FIELD_GET(TPS25750_POWER_STATUS_CHARGER_ADVERTISE_STATUS_MASK, (p))
171
172#define TPS25750_POWER_STATUS_CHARGER_DET_STATUS_DISABLED	0
173#define TPS25750_POWER_STATUS_CHARGER_DET_STATUS_IN_PROGRESS	1
174#define TPS25750_POWER_STATUS_CHARGER_DET_STATUS_NONE		2
175#define TPS25750_POWER_STATUS_CHARGER_DET_STATUS_SPD		3
176#define TPS25750_POWER_STATUS_CHARGER_DET_STATUS_BC_1_2_CPD	4
177#define TPS25750_POWER_STATUS_CHARGER_DET_STATUS_BC_1_2_DPD	5
178#define TPS25750_POWER_STATUS_CHARGER_DET_STATUS_DIV_1_DCP	6
179#define TPS25750_POWER_STATUS_CHARGER_DET_STATUS_DIV_2_DCP	7
180#define TPS25750_POWER_STATUS_CHARGER_DET_STATUS_DIV_3_DCP	8
181#define TPS25750_POWER_STATUS_CHARGER_DET_STATUS_1_2V_DCP	9
182
183/* TPS_REG_DATA_STATUS bits */
184#define TPS_DATA_STATUS_DATA_CONNECTION	     BIT(0)
185#define TPS_DATA_STATUS_UPSIDE_DOWN	     BIT(1)
186#define TPS_DATA_STATUS_ACTIVE_CABLE	     BIT(2)
187#define TPS_DATA_STATUS_USB2_CONNECTION	     BIT(4)
188#define TPS_DATA_STATUS_USB3_CONNECTION	     BIT(5)
189#define TPS_DATA_STATUS_USB3_GEN2	     BIT(6)
190#define TPS_DATA_STATUS_USB_DATA_ROLE	     BIT(7)
191#define TPS_DATA_STATUS_DP_CONNECTION	     BIT(8)
192#define TPS_DATA_STATUS_DP_SINK		     BIT(9)
193#define TPS_DATA_STATUS_TBT_CONNECTION	     BIT(16)
194#define TPS_DATA_STATUS_TBT_TYPE	     BIT(17)
195#define TPS_DATA_STATUS_OPTICAL_CABLE	     BIT(18)
196#define TPS_DATA_STATUS_ACTIVE_LINK_TRAIN    BIT(20)
197#define TPS_DATA_STATUS_FORCE_LSX	     BIT(23)
198#define TPS_DATA_STATUS_POWER_MISMATCH	     BIT(24)
199
200/* modified TPS_REG_DATA_STATUS bits for CD321x (and likely also TPS65987DDK) */
201#define CD321X_DATA_STATUS_HPD_IRQ	     BIT(14)
202#define CD321X_DATA_STATUS_HPD_LEVEL	     BIT(15)
203#define CD321X_DATA_STATUS_USB4_CONNECTION   BIT(23)
204
205#define TPS_DATA_STATUS_DP_PIN_ASSIGNMENT_MASK GENMASK(11, 10)
206#define TPS_DATA_STATUS_DP_PIN_ASSIGNMENT(x) \
207	TPS_FIELD_GET(TPS_DATA_STATUS_DP_PIN_ASSIGNMENT_MASK, (x))
208#define TPS_DATA_STATUS_TBT_CABLE_SPEED_MASK   GENMASK(27, 25)
209#define TPS_DATA_STATUS_TBT_CABLE_SPEED \
210	TPS_FIELD_GET(TPS_DATA_STATUS_TBT_CABLE_SPEED_MASK, (x))
211#define TPS_DATA_STATUS_TBT_CABLE_GEN_MASK     GENMASK(29, 28)
212#define TPS_DATA_STATUS_TBT_CABLE_GEN \
213	TPS_FIELD_GET(TPS_DATA_STATUS_TBT_CABLE_GEN_MASK, (x))
214
215/* Map data status to DP spec assignments */
216#define TPS_DATA_STATUS_DP_SPEC_PIN_ASSIGNMENT(x) \
217	((TPS_DATA_STATUS_DP_PIN_ASSIGNMENT(x) << 1) | \
218		TPS_FIELD_GET(TPS_DATA_STATUS_USB3_CONNECTION, (x)))
219#define TPS_DATA_STATUS_DP_SPEC_PIN_ASSIGNMENT_E    0
220#define TPS_DATA_STATUS_DP_SPEC_PIN_ASSIGNMENT_F    BIT(0)
221#define TPS_DATA_STATUS_DP_SPEC_PIN_ASSIGNMENT_C    BIT(1)
222#define TPS_DATA_STATUS_DP_SPEC_PIN_ASSIGNMENT_D    (BIT(1) | BIT(0))
223#define TPS_DATA_STATUS_DP_SPEC_PIN_ASSIGNMENT_A    BIT(2)
224#define TPS_DATA_STATUS_DP_SPEC_PIN_ASSIGNMENT_B    (BIT(2) | BIT(1))
225
226/* BOOT STATUS REG*/
227#define TPS_BOOT_STATUS_DEAD_BATTERY_FLAG	BIT(2)
228#define TPS_BOOT_STATUS_I2C_EEPROM_PRESENT	BIT(3)
229
230/* PD STATUS REG */
231#define TPS_REG_PD_STATUS_PORT_TYPE_MASK	GENMASK(5, 4)
232#define TPS_PD_STATUS_PORT_TYPE(x) \
233	TPS_FIELD_GET(TPS_REG_PD_STATUS_PORT_TYPE_MASK, x)
234
235#define TPS_PD_STATUS_PORT_TYPE_SINK_SOURCE	0
236#define TPS_PD_STATUS_PORT_TYPE_SINK		1
237#define TPS_PD_STATUS_PORT_TYPE_SOURCE		2
238#define TPS_PD_STATUS_PORT_TYPE_SOURCE_SINK	3
239
240/* SLEEP CONF REG */
241#define TPS_SLEEP_CONF_SLEEP_MODE_ALLOWED	BIT(0)
242
243/* Start Patch Download Sequence */
244#define TPS_PTCS_CONTENT_APP			BIT(0)
245#define TPS_PTCS_CONTENT_DEV			BIT(1)
246#define TPS_PTCS_OUT_BYTES			4
247#define TPS_PTCS_STATUS				1
248
249#define TPS_PTCS_STATUS_FAIL			0x80
250/* Patch Download */
251#define TPS_PTCD_OUT_BYTES			10
252#define TPS_PTCD_TRANSFER_STATUS		1
253#define TPS_PTCD_LOADING_STATE			2
254
255#define TPS_PTCD_LOAD_ERR			0x09
256/* Patch Download Complete */
257#define TPS_PTCC_OUT_BYTES			4
258#define TPS_PTCC_DEV				2
259#define TPS_PTCC_APP				3
260
261/* Version Register */
262#define TPS_VERSION_HW_VERSION_MASK            GENMASK(31, 24)
263#define TPS_VERSION_HW_VERSION(x)              TPS_FIELD_GET(TPS_VERSION_HW_VERSION_MASK, (x))
264#define TPS_VERSION_HW_65981_2_6               0x00
265#define TPS_VERSION_HW_65987_8_DH              0xF7
266#define TPS_VERSION_HW_65987_8_DK              0xF9
267
268/* Int Event Register length */
269#define TPS_65981_2_6_INTEVENT_LEN             8
270#define TPS_65987_8_INTEVENT_LEN               11
271
272#endif /* __TPS6598X_H__ */
~/ Read-only file preview.