.. | .. |
---|
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. */ |
---|
3 | 3 | |
---|
4 | 4 | #ifndef __SDW_REGISTERS_H |
---|
5 | 5 | #define __SDW_REGISTERS_H |
---|
6 | 6 | |
---|
7 | 7 | /* |
---|
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 |
---|
16 | 9 | */ |
---|
17 | 10 | #define SDW_REGADDR GENMASK(14, 0) |
---|
18 | 11 | #define SDW_SCP_ADDRPAGE2_MASK GENMASK(22, 15) |
---|
.. | .. |
---|
43 | 36 | #define SDW_DP0_INT_TEST_FAIL BIT(0) |
---|
44 | 37 | #define SDW_DP0_INT_PORT_READY BIT(1) |
---|
45 | 38 | #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 */ |
---|
46 | 41 | #define SDW_DP0_INT_IMPDEF1 BIT(5) |
---|
47 | 42 | #define SDW_DP0_INT_IMPDEF2 BIT(6) |
---|
48 | 43 | #define SDW_DP0_INT_IMPDEF3 BIT(7) |
---|
.. | .. |
---|
72 | 67 | #define SDW_SCP_INTSTAT2 0x42 |
---|
73 | 68 | #define SDW_SCP_INTSTAT2_SCP3_CASCADE BIT(7) |
---|
74 | 69 | #define SDW_SCP_INTSTAT2_PORT4_10 GENMASK(6, 0) |
---|
75 | | - |
---|
76 | 70 | |
---|
77 | 71 | #define SDW_SCP_INTSTAT3 0x43 |
---|
78 | 72 | #define SDW_SCP_INTSTAT3_PORT11_14 GENMASK(3, 0) |
---|
.. | .. |
---|
107 | 101 | #define SDW_SCP_ADDRPAGE2 0x49 |
---|
108 | 102 | #define SDW_SCP_KEEPEREN 0x4A |
---|
109 | 103 | #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 */ |
---|
110 | 118 | #define SDW_SCP_TESTMODE 0x4F |
---|
111 | 119 | #define SDW_SCP_DEVID_0 0x50 |
---|
112 | 120 | #define SDW_SCP_DEVID_1 0x51 |
---|
.. | .. |
---|
115 | 123 | #define SDW_SCP_DEVID_4 0x54 |
---|
116 | 124 | #define SDW_SCP_DEVID_5 0x55 |
---|
117 | 125 | |
---|
| 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 | + |
---|
118 | 207 | /* Banked Registers */ |
---|
119 | 208 | #define SDW_SCP_FRAMECTRL_B0 0x60 |
---|
120 | 209 | #define SDW_SCP_FRAMECTRL_B1 (0x60 + SDW_BANK1_OFFSET) |
---|
121 | 210 | #define SDW_SCP_NEXTFRAME_B0 0x61 |
---|
122 | 211 | #define SDW_SCP_NEXTFRAME_B1 (0x61 + SDW_BANK1_OFFSET) |
---|
123 | 212 | |
---|
| 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 | + |
---|
124 | 231 | /* Both INT and STATUS register is same */ |
---|
125 | 232 | #define SDW_DPN_INT(n) (0x0 + SDW_DPN_SIZE * (n)) |
---|
126 | 233 | #define SDW_DPN_INTMASK(n) (0x1 + SDW_DPN_SIZE * (n)) |
---|