hc
2023-12-08 01573e231f18eb2d99162747186f59511f56b64d
kernel/include/linux/soundwire/sdw_registers.h
....@@ -1,18 +1,11 @@
1
-// SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause)
2
-// Copyright(c) 2015-17 Intel Corporation.
1
+/* SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause) */
2
+/* Copyright(c) 2015-17 Intel Corporation. */
33
44 #ifndef __SDW_REGISTERS_H
55 #define __SDW_REGISTERS_H
66
77 /*
8
- * typically we define register and shifts but if one observes carefully,
9
- * the shift can be generated from MASKS using few bit primitaives like ffs
10
- * etc, so we use that and avoid defining shifts
11
- */
12
-#define SDW_REG_SHIFT(n) (ffs(n) - 1)
13
-
14
-/*
15
- * SDW registers as defined by MIPI 1.1 Spec
8
+ * SDW registers as defined by MIPI 1.2 Spec
169 */
1710 #define SDW_REGADDR GENMASK(14, 0)
1811 #define SDW_SCP_ADDRPAGE2_MASK GENMASK(22, 15)
....@@ -43,6 +36,8 @@
4336 #define SDW_DP0_INT_TEST_FAIL BIT(0)
4437 #define SDW_DP0_INT_PORT_READY BIT(1)
4538 #define SDW_DP0_INT_BRA_FAILURE BIT(2)
39
+#define SDW_DP0_SDCA_CASCADE BIT(3)
40
+/* BIT(4) not allocated in SoundWire specification 1.2 */
4641 #define SDW_DP0_INT_IMPDEF1 BIT(5)
4742 #define SDW_DP0_INT_IMPDEF2 BIT(6)
4843 #define SDW_DP0_INT_IMPDEF3 BIT(7)
....@@ -72,7 +67,6 @@
7267 #define SDW_SCP_INTSTAT2 0x42
7368 #define SDW_SCP_INTSTAT2_SCP3_CASCADE BIT(7)
7469 #define SDW_SCP_INTSTAT2_PORT4_10 GENMASK(6, 0)
75
-
7670
7771 #define SDW_SCP_INTSTAT3 0x43
7872 #define SDW_SCP_INTSTAT3_PORT11_14 GENMASK(3, 0)
....@@ -107,6 +101,20 @@
107101 #define SDW_SCP_ADDRPAGE2 0x49
108102 #define SDW_SCP_KEEPEREN 0x4A
109103 #define SDW_SCP_BANKDELAY 0x4B
104
+#define SDW_SCP_COMMIT 0x4C
105
+
106
+#define SDW_SCP_BUS_CLOCK_BASE 0x4D
107
+#define SDW_SCP_BASE_CLOCK_FREQ GENMASK(2, 0)
108
+#define SDW_SCP_BASE_CLOCK_UNKNOWN 0x0
109
+#define SDW_SCP_BASE_CLOCK_19200000_HZ 0x1
110
+#define SDW_SCP_BASE_CLOCK_24000000_HZ 0x2
111
+#define SDW_SCP_BASE_CLOCK_24576000_HZ 0x3
112
+#define SDW_SCP_BASE_CLOCK_22579200_HZ 0x4
113
+#define SDW_SCP_BASE_CLOCK_32000000_HZ 0x5
114
+#define SDW_SCP_BASE_CLOCK_RESERVED 0x6
115
+#define SDW_SCP_BASE_CLOCK_IMP_DEF 0x7
116
+
117
+/* 0x4E is not allocated in SoundWire specification 1.2 */
110118 #define SDW_SCP_TESTMODE 0x4F
111119 #define SDW_SCP_DEVID_0 0x50
112120 #define SDW_SCP_DEVID_1 0x51
....@@ -115,12 +123,111 @@
115123 #define SDW_SCP_DEVID_4 0x54
116124 #define SDW_SCP_DEVID_5 0x55
117125
126
+/* Both INT and STATUS register are same */
127
+#define SDW_SCP_SDCA_INT1 0x58
128
+#define SDW_SCP_SDCA_INT_SDCA_0 BIT(0)
129
+#define SDW_SCP_SDCA_INT_SDCA_1 BIT(1)
130
+#define SDW_SCP_SDCA_INT_SDCA_2 BIT(2)
131
+#define SDW_SCP_SDCA_INT_SDCA_3 BIT(3)
132
+#define SDW_SCP_SDCA_INT_SDCA_4 BIT(4)
133
+#define SDW_SCP_SDCA_INT_SDCA_5 BIT(5)
134
+#define SDW_SCP_SDCA_INT_SDCA_6 BIT(6)
135
+#define SDW_SCP_SDCA_INT_SDCA_7 BIT(7)
136
+
137
+#define SDW_SCP_SDCA_INT2 0x59
138
+#define SDW_SCP_SDCA_INT_SDCA_8 BIT(0)
139
+#define SDW_SCP_SDCA_INT_SDCA_9 BIT(1)
140
+#define SDW_SCP_SDCA_INT_SDCA_10 BIT(2)
141
+#define SDW_SCP_SDCA_INT_SDCA_11 BIT(3)
142
+#define SDW_SCP_SDCA_INT_SDCA_12 BIT(4)
143
+#define SDW_SCP_SDCA_INT_SDCA_13 BIT(5)
144
+#define SDW_SCP_SDCA_INT_SDCA_14 BIT(6)
145
+#define SDW_SCP_SDCA_INT_SDCA_15 BIT(7)
146
+
147
+#define SDW_SCP_SDCA_INT3 0x5A
148
+#define SDW_SCP_SDCA_INT_SDCA_16 BIT(0)
149
+#define SDW_SCP_SDCA_INT_SDCA_17 BIT(1)
150
+#define SDW_SCP_SDCA_INT_SDCA_18 BIT(2)
151
+#define SDW_SCP_SDCA_INT_SDCA_19 BIT(3)
152
+#define SDW_SCP_SDCA_INT_SDCA_20 BIT(4)
153
+#define SDW_SCP_SDCA_INT_SDCA_21 BIT(5)
154
+#define SDW_SCP_SDCA_INT_SDCA_22 BIT(6)
155
+#define SDW_SCP_SDCA_INT_SDCA_23 BIT(7)
156
+
157
+#define SDW_SCP_SDCA_INT4 0x5B
158
+#define SDW_SCP_SDCA_INT_SDCA_24 BIT(0)
159
+#define SDW_SCP_SDCA_INT_SDCA_25 BIT(1)
160
+#define SDW_SCP_SDCA_INT_SDCA_26 BIT(2)
161
+#define SDW_SCP_SDCA_INT_SDCA_27 BIT(3)
162
+#define SDW_SCP_SDCA_INT_SDCA_28 BIT(4)
163
+#define SDW_SCP_SDCA_INT_SDCA_29 BIT(5)
164
+#define SDW_SCP_SDCA_INT_SDCA_30 BIT(6)
165
+/* BIT(7) not allocated in SoundWire 1.2 specification */
166
+
167
+#define SDW_SCP_SDCA_INTMASK1 0x5C
168
+#define SDW_SCP_SDCA_INTMASK_SDCA_0 BIT(0)
169
+#define SDW_SCP_SDCA_INTMASK_SDCA_1 BIT(1)
170
+#define SDW_SCP_SDCA_INTMASK_SDCA_2 BIT(2)
171
+#define SDW_SCP_SDCA_INTMASK_SDCA_3 BIT(3)
172
+#define SDW_SCP_SDCA_INTMASK_SDCA_4 BIT(4)
173
+#define SDW_SCP_SDCA_INTMASK_SDCA_5 BIT(5)
174
+#define SDW_SCP_SDCA_INTMASK_SDCA_6 BIT(6)
175
+#define SDW_SCP_SDCA_INTMASK_SDCA_7 BIT(7)
176
+
177
+#define SDW_SCP_SDCA_INTMASK2 0x5D
178
+#define SDW_SCP_SDCA_INTMASK_SDCA_8 BIT(0)
179
+#define SDW_SCP_SDCA_INTMASK_SDCA_9 BIT(1)
180
+#define SDW_SCP_SDCA_INTMASK_SDCA_10 BIT(2)
181
+#define SDW_SCP_SDCA_INTMASK_SDCA_11 BIT(3)
182
+#define SDW_SCP_SDCA_INTMASK_SDCA_12 BIT(4)
183
+#define SDW_SCP_SDCA_INTMASK_SDCA_13 BIT(5)
184
+#define SDW_SCP_SDCA_INTMASK_SDCA_14 BIT(6)
185
+#define SDW_SCP_SDCA_INTMASK_SDCA_15 BIT(7)
186
+
187
+#define SDW_SCP_SDCA_INTMASK3 0x5E
188
+#define SDW_SCP_SDCA_INTMASK_SDCA_16 BIT(0)
189
+#define SDW_SCP_SDCA_INTMASK_SDCA_17 BIT(1)
190
+#define SDW_SCP_SDCA_INTMASK_SDCA_18 BIT(2)
191
+#define SDW_SCP_SDCA_INTMASK_SDCA_19 BIT(3)
192
+#define SDW_SCP_SDCA_INTMASK_SDCA_20 BIT(4)
193
+#define SDW_SCP_SDCA_INTMASK_SDCA_21 BIT(5)
194
+#define SDW_SCP_SDCA_INTMASK_SDCA_22 BIT(6)
195
+#define SDW_SCP_SDCA_INTMASK_SDCA_23 BIT(7)
196
+
197
+#define SDW_SCP_SDCA_INTMASK4 0x5F
198
+#define SDW_SCP_SDCA_INTMASK_SDCA_24 BIT(0)
199
+#define SDW_SCP_SDCA_INTMASK_SDCA_25 BIT(1)
200
+#define SDW_SCP_SDCA_INTMASK_SDCA_26 BIT(2)
201
+#define SDW_SCP_SDCA_INTMASK_SDCA_27 BIT(3)
202
+#define SDW_SCP_SDCA_INTMASK_SDCA_28 BIT(4)
203
+#define SDW_SCP_SDCA_INTMASK_SDCA_29 BIT(5)
204
+#define SDW_SCP_SDCA_INTMASK_SDCA_30 BIT(6)
205
+/* BIT(7) not allocated in SoundWire 1.2 specification */
206
+
118207 /* Banked Registers */
119208 #define SDW_SCP_FRAMECTRL_B0 0x60
120209 #define SDW_SCP_FRAMECTRL_B1 (0x60 + SDW_BANK1_OFFSET)
121210 #define SDW_SCP_NEXTFRAME_B0 0x61
122211 #define SDW_SCP_NEXTFRAME_B1 (0x61 + SDW_BANK1_OFFSET)
123212
213
+#define SDW_SCP_BUSCLOCK_SCALE_B0 0x62
214
+#define SDW_SCP_BUSCLOCK_SCALE_B1 (0x62 + SDW_BANK1_OFFSET)
215
+#define SDW_SCP_CLOCK_SCALE GENMASK(3, 0)
216
+
217
+/* PHY registers - CTRL and STAT are the same address */
218
+#define SDW_SCP_PHY_OUT_CTRL_0 0x80
219
+#define SDW_SCP_PHY_OUT_CTRL_1 0x81
220
+#define SDW_SCP_PHY_OUT_CTRL_2 0x82
221
+#define SDW_SCP_PHY_OUT_CTRL_3 0x83
222
+#define SDW_SCP_PHY_OUT_CTRL_4 0x84
223
+#define SDW_SCP_PHY_OUT_CTRL_5 0x85
224
+#define SDW_SCP_PHY_OUT_CTRL_6 0x86
225
+#define SDW_SCP_PHY_OUT_CTRL_7 0x87
226
+
227
+#define SDW_SCP_CAP_LOAD_CTRL GENMASK(2, 0)
228
+#define SDW_SCP_DRIVE_STRENGTH_CTRL GENMASK(5, 3)
229
+#define SDW_SCP_SLEW_TIME_CTRL GENMASK(7, 6)
230
+
124231 /* Both INT and STATUS register is same */
125232 #define SDW_DPN_INT(n) (0x0 + SDW_DPN_SIZE * (n))
126233 #define SDW_DPN_INTMASK(n) (0x1 + SDW_DPN_SIZE * (n))