aboutsummaryrefslogtreecommitdiff
path: root/include/linux/ulpi/regs.h
blob: 9f607872b2f84725a2a6809d7321fd6aeca8dbd9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_ULPI_REGS_H
#define __LINUX_ULPI_REGS_H

/*
 * Macros for Set and Clear
 * See ULPI 1.1 specification to find the registers with Set and Clear offsets
 */
#define ULPI_SET(a)				(a + 1)
#define ULPI_CLR(a)				(a + 2)

/*
 * Register Map
 */
#define ULPI_VENDOR_ID_LOW			0x00
#define ULPI_VENDOR_ID_HIGH			0x01
#define ULPI_PRODUCT_ID_LOW			0x02
#define ULPI_PRODUCT_ID_HIGH			0x03
#define ULPI_FUNC_CTRL				0x04
#define ULPI_IFC_CTRL				0x07
#define ULPI_OTG_CTRL				0x0a
#define ULPI_USB_INT_EN_RISE			0x0d
#define ULPI_USB_INT_EN_FALL			0x10
#define ULPI_USB_INT_STS			0x13
#define ULPI_USB_INT_LATCH			0x14
#define ULPI_DEBUG				0x15
#define ULPI_SCRATCH				0x16
/* Optional Carkit Registers */
#define ULPI_CARKIT_CTRL			0x19
#define ULPI_CARKIT_INT_DELAY			0x1c
#define ULPI_CARKIT_INT_EN			0x1d
#define ULPI_CARKIT_INT_STS			0x20
#define ULPI_CARKIT_INT_LATCH			0x21
#define ULPI_CARKIT_PLS_CTRL			0x22
/* Other Optional Registers */
#define ULPI_TX_POS_WIDTH			0x25
#define ULPI_TX_NEG_WIDTH			0x26
#define ULPI_POLARITY_RECOVERY			0x27
/* Access Extended Register Set */
#define ULPI_ACCESS_EXTENDED			0x2f
/* Vendor Specific */
#define ULPI_VENDOR_SPECIFIC			0x30
/* Extended Registers */
#define ULPI_EXT_VENDOR_SPECIFIC		0x80

/*
 * Register Bits
 */

/* Function Control */
#define ULPI_FUNC_CTRL_XCVRSEL			BIT(0)
#define  ULPI_FUNC_CTRL_XCVRSEL_MASK		0x3
#define  ULPI_FUNC_CTRL_HIGH_SPEED		0x0
#define  ULPI_FUNC_CTRL_FULL_SPEED		0x1
#define  ULPI_FUNC_CTRL_LOW_SPEED		0x2
#define  ULPI_FUNC_CTRL_FS4LS			0x3
#define ULPI_FUNC_CTRL_TERMSELECT		BIT(2)
#define ULPI_FUNC_CTRL_OPMODE			BIT(3)
#define  ULPI_FUNC_CTRL_OPMODE_MASK		(0x3 << 3)
#define  ULPI_FUNC_CTRL_OPMODE_NORMAL		(0x0 << 3)
#define  ULPI_FUNC_CTRL_OPMODE_NONDRIVING	(0x1 << 3)
#define  ULPI_FUNC_CTRL_OPMODE_DISABLE_NRZI	(0x2 << 3)
#define  ULPI_FUNC_CTRL_OPMODE_NOSYNC_NOEOP	(0x3 << 3)
#define ULPI_FUNC_CTRL_RESET			BIT(5)
#define ULPI_FUNC_CTRL_SUSPENDM			BIT(6)

/* Interface Control */
#define ULPI_IFC_CTRL_6_PIN_SERIAL_MODE		BIT(0)
#define ULPI_IFC_CTRL_3_PIN_SERIAL_MODE		BIT(1)
#define ULPI_IFC_CTRL_CARKITMODE		BIT(2)
#define ULPI_IFC_CTRL_CLOCKSUSPENDM		BIT(3)
#define ULPI_IFC_CTRL_AUTORESUME		BIT(4)
#define ULPI_IFC_CTRL_EXTERNAL_VBUS		BIT(5)
#define ULPI_IFC_CTRL_PASSTHRU			BIT(6)
#define ULPI_IFC_CTRL_PROTECT_IFC_DISABLE	BIT(7)

/* OTG Control */
#define ULPI_OTG_CTRL_ID_PULLUP			BIT(0)
#define ULPI_OTG_CTRL_DP_PULLDOWN		BIT(1)
#define ULPI_OTG_CTRL_DM_PULLDOWN		BIT(2)
#define ULPI_OTG_CTRL_DISCHRGVBUS		BIT(3)
#define ULPI_OTG_CTRL_CHRGVBUS			BIT(4)
#define ULPI_OTG_CTRL_DRVVBUS			BIT(5)
#define ULPI_OTG_CTRL_DRVVBUS_EXT		BIT(6)
#define ULPI_OTG_CTRL_EXTVBUSIND		BIT(7)

/* USB Interrupt Enable Rising,
 * USB Interrupt Enable Falling,
 * USB Interrupt Status and
 * USB Interrupt Latch
 */
#define ULPI_INT_HOST_DISCONNECT		BIT(0)
#define ULPI_INT_VBUS_VALID			BIT(1)
#define ULPI_INT_SESS_VALID			BIT(2)
#define ULPI_INT_SESS_END			BIT(3)
#define ULPI_INT_IDGRD				BIT(4)

/* Debug */
#define ULPI_DEBUG_LINESTATE0			BIT(0)
#define ULPI_DEBUG_LINESTATE1			BIT(1)

/* Carkit Control */
#define ULPI_CARKIT_CTRL_CARKITPWR		BIT(0)
#define ULPI_CARKIT_CTRL_IDGNDDRV		BIT(1)
#define ULPI_CARKIT_CTRL_TXDEN			BIT(2)
#define ULPI_CARKIT_CTRL_RXDEN			BIT(3)
#define ULPI_CARKIT_CTRL_SPKLEFTEN		BIT(4)
#define ULPI_CARKIT_CTRL_SPKRIGHTEN		BIT(5)
#define ULPI_CARKIT_CTRL_MICEN			BIT(6)

/* Carkit Interrupt Enable */
#define ULPI_CARKIT_INT_EN_IDFLOAT_RISE		BIT(0)
#define ULPI_CARKIT_INT_EN_IDFLOAT_FALL		BIT(1)
#define ULPI_CARKIT_INT_EN_CARINTDET		BIT(2)
#define ULPI_CARKIT_INT_EN_DP_RISE		BIT(3)
#define ULPI_CARKIT_INT_EN_DP_FALL		BIT(4)

/* Carkit Interrupt Status and
 * Carkit Interrupt Latch
 */
#define ULPI_CARKIT_INT_IDFLOAT			BIT(0)
#define ULPI_CARKIT_INT_CARINTDET		BIT(1)
#define ULPI_CARKIT_INT_DP			BIT(2)

/* Carkit Pulse Control*/
#define ULPI_CARKIT_PLS_CTRL_TXPLSEN		BIT(0)
#define ULPI_CARKIT_PLS_CTRL_RXPLSEN		BIT(1)
#define ULPI_CARKIT_PLS_CTRL_SPKRLEFT_BIASEN	BIT(2)
#define ULPI_CARKIT_PLS_CTRL_SPKRRIGHT_BIASEN	BIT(3)

#endif /* __LINUX_ULPI_REGS_H */