0001
0002
0003
0004 #ifndef __SDW_REGISTERS_H
0005 #define __SDW_REGISTERS_H
0006
0007
0008
0009
0010 #define SDW_REGADDR GENMASK(14, 0)
0011 #define SDW_SCP_ADDRPAGE2_MASK GENMASK(22, 15)
0012 #define SDW_SCP_ADDRPAGE1_MASK GENMASK(30, 23)
0013
0014 #define SDW_REG_NO_PAGE 0x00008000
0015 #define SDW_REG_OPTIONAL_PAGE 0x00010000
0016 #define SDW_REG_MAX 0x80000000
0017
0018 #define SDW_DPN_SIZE 0x100
0019 #define SDW_BANK1_OFFSET 0x10
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029 #define SDW_DP0_INT 0x0
0030 #define SDW_DP0_INTMASK 0x1
0031 #define SDW_DP0_PORTCTRL 0x2
0032 #define SDW_DP0_BLOCKCTRL1 0x3
0033 #define SDW_DP0_PREPARESTATUS 0x4
0034 #define SDW_DP0_PREPARECTRL 0x5
0035
0036 #define SDW_DP0_INT_TEST_FAIL BIT(0)
0037 #define SDW_DP0_INT_PORT_READY BIT(1)
0038 #define SDW_DP0_INT_BRA_FAILURE BIT(2)
0039 #define SDW_DP0_SDCA_CASCADE BIT(3)
0040
0041 #define SDW_DP0_INT_IMPDEF1 BIT(5)
0042 #define SDW_DP0_INT_IMPDEF2 BIT(6)
0043 #define SDW_DP0_INT_IMPDEF3 BIT(7)
0044 #define SDW_DP0_INTERRUPTS (SDW_DP0_INT_TEST_FAIL | \
0045 SDW_DP0_INT_PORT_READY | \
0046 SDW_DP0_INT_BRA_FAILURE | \
0047 SDW_DP0_INT_IMPDEF1 | \
0048 SDW_DP0_INT_IMPDEF2 | \
0049 SDW_DP0_INT_IMPDEF3)
0050
0051 #define SDW_DP0_PORTCTRL_DATAMODE GENMASK(3, 2)
0052 #define SDW_DP0_PORTCTRL_NXTINVBANK BIT(4)
0053 #define SDW_DP0_PORTCTRL_BPT_PAYLD GENMASK(7, 6)
0054
0055 #define SDW_DP0_CHANNELEN 0x20
0056 #define SDW_DP0_SAMPLECTRL1 0x22
0057 #define SDW_DP0_SAMPLECTRL2 0x23
0058 #define SDW_DP0_OFFSETCTRL1 0x24
0059 #define SDW_DP0_OFFSETCTRL2 0x25
0060 #define SDW_DP0_HCTRL 0x26
0061 #define SDW_DP0_LANECTRL 0x28
0062
0063
0064 #define SDW_SCP_INT1 0x40
0065 #define SDW_SCP_INTMASK1 0x41
0066
0067 #define SDW_SCP_INT1_PARITY BIT(0)
0068 #define SDW_SCP_INT1_BUS_CLASH BIT(1)
0069 #define SDW_SCP_INT1_IMPL_DEF BIT(2)
0070 #define SDW_SCP_INT1_SCP2_CASCADE BIT(7)
0071 #define SDW_SCP_INT1_PORT0_3 GENMASK(6, 3)
0072
0073 #define SDW_SCP_INTSTAT2 0x42
0074 #define SDW_SCP_INTSTAT2_SCP3_CASCADE BIT(7)
0075 #define SDW_SCP_INTSTAT2_PORT4_10 GENMASK(6, 0)
0076
0077 #define SDW_SCP_INTSTAT3 0x43
0078 #define SDW_SCP_INTSTAT3_PORT11_14 GENMASK(3, 0)
0079
0080
0081 #define SDW_NUM_INT_STAT_REGISTERS 3
0082
0083
0084 #define SDW_NUM_INT_CLEAR_REGISTERS 1
0085
0086 #define SDW_SCP_CTRL 0x44
0087 #define SDW_SCP_CTRL_CLK_STP_NOW BIT(1)
0088 #define SDW_SCP_CTRL_FORCE_RESET BIT(7)
0089
0090 #define SDW_SCP_STAT 0x44
0091 #define SDW_SCP_STAT_CLK_STP_NF BIT(0)
0092 #define SDW_SCP_STAT_HPHY_NOK BIT(5)
0093 #define SDW_SCP_STAT_CURR_BANK BIT(6)
0094
0095 #define SDW_SCP_SYSTEMCTRL 0x45
0096 #define SDW_SCP_SYSTEMCTRL_CLK_STP_PREP BIT(0)
0097 #define SDW_SCP_SYSTEMCTRL_CLK_STP_MODE BIT(2)
0098 #define SDW_SCP_SYSTEMCTRL_WAKE_UP_EN BIT(3)
0099 #define SDW_SCP_SYSTEMCTRL_HIGH_PHY BIT(4)
0100
0101 #define SDW_SCP_SYSTEMCTRL_CLK_STP_MODE0 0
0102 #define SDW_SCP_SYSTEMCTRL_CLK_STP_MODE1 BIT(2)
0103
0104 #define SDW_SCP_DEVNUMBER 0x46
0105 #define SDW_SCP_HIGH_PHY_CHECK 0x47
0106 #define SDW_SCP_ADDRPAGE1 0x48
0107 #define SDW_SCP_ADDRPAGE2 0x49
0108 #define SDW_SCP_KEEPEREN 0x4A
0109 #define SDW_SCP_BANKDELAY 0x4B
0110 #define SDW_SCP_COMMIT 0x4C
0111
0112 #define SDW_SCP_BUS_CLOCK_BASE 0x4D
0113 #define SDW_SCP_BASE_CLOCK_FREQ GENMASK(2, 0)
0114 #define SDW_SCP_BASE_CLOCK_UNKNOWN 0x0
0115 #define SDW_SCP_BASE_CLOCK_19200000_HZ 0x1
0116 #define SDW_SCP_BASE_CLOCK_24000000_HZ 0x2
0117 #define SDW_SCP_BASE_CLOCK_24576000_HZ 0x3
0118 #define SDW_SCP_BASE_CLOCK_22579200_HZ 0x4
0119 #define SDW_SCP_BASE_CLOCK_32000000_HZ 0x5
0120 #define SDW_SCP_BASE_CLOCK_RESERVED 0x6
0121 #define SDW_SCP_BASE_CLOCK_IMP_DEF 0x7
0122
0123
0124 #define SDW_SCP_TESTMODE 0x4F
0125 #define SDW_SCP_DEVID_0 0x50
0126 #define SDW_SCP_DEVID_1 0x51
0127 #define SDW_SCP_DEVID_2 0x52
0128 #define SDW_SCP_DEVID_3 0x53
0129 #define SDW_SCP_DEVID_4 0x54
0130 #define SDW_SCP_DEVID_5 0x55
0131
0132
0133 #define SDW_SCP_SDCA_INT1 0x58
0134 #define SDW_SCP_SDCA_INT_SDCA_0 BIT(0)
0135 #define SDW_SCP_SDCA_INT_SDCA_1 BIT(1)
0136 #define SDW_SCP_SDCA_INT_SDCA_2 BIT(2)
0137 #define SDW_SCP_SDCA_INT_SDCA_3 BIT(3)
0138 #define SDW_SCP_SDCA_INT_SDCA_4 BIT(4)
0139 #define SDW_SCP_SDCA_INT_SDCA_5 BIT(5)
0140 #define SDW_SCP_SDCA_INT_SDCA_6 BIT(6)
0141 #define SDW_SCP_SDCA_INT_SDCA_7 BIT(7)
0142
0143 #define SDW_SCP_SDCA_INT2 0x59
0144 #define SDW_SCP_SDCA_INT_SDCA_8 BIT(0)
0145 #define SDW_SCP_SDCA_INT_SDCA_9 BIT(1)
0146 #define SDW_SCP_SDCA_INT_SDCA_10 BIT(2)
0147 #define SDW_SCP_SDCA_INT_SDCA_11 BIT(3)
0148 #define SDW_SCP_SDCA_INT_SDCA_12 BIT(4)
0149 #define SDW_SCP_SDCA_INT_SDCA_13 BIT(5)
0150 #define SDW_SCP_SDCA_INT_SDCA_14 BIT(6)
0151 #define SDW_SCP_SDCA_INT_SDCA_15 BIT(7)
0152
0153 #define SDW_SCP_SDCA_INT3 0x5A
0154 #define SDW_SCP_SDCA_INT_SDCA_16 BIT(0)
0155 #define SDW_SCP_SDCA_INT_SDCA_17 BIT(1)
0156 #define SDW_SCP_SDCA_INT_SDCA_18 BIT(2)
0157 #define SDW_SCP_SDCA_INT_SDCA_19 BIT(3)
0158 #define SDW_SCP_SDCA_INT_SDCA_20 BIT(4)
0159 #define SDW_SCP_SDCA_INT_SDCA_21 BIT(5)
0160 #define SDW_SCP_SDCA_INT_SDCA_22 BIT(6)
0161 #define SDW_SCP_SDCA_INT_SDCA_23 BIT(7)
0162
0163 #define SDW_SCP_SDCA_INT4 0x5B
0164 #define SDW_SCP_SDCA_INT_SDCA_24 BIT(0)
0165 #define SDW_SCP_SDCA_INT_SDCA_25 BIT(1)
0166 #define SDW_SCP_SDCA_INT_SDCA_26 BIT(2)
0167 #define SDW_SCP_SDCA_INT_SDCA_27 BIT(3)
0168 #define SDW_SCP_SDCA_INT_SDCA_28 BIT(4)
0169 #define SDW_SCP_SDCA_INT_SDCA_29 BIT(5)
0170 #define SDW_SCP_SDCA_INT_SDCA_30 BIT(6)
0171
0172
0173 #define SDW_SCP_SDCA_INTMASK1 0x5C
0174 #define SDW_SCP_SDCA_INTMASK_SDCA_0 BIT(0)
0175 #define SDW_SCP_SDCA_INTMASK_SDCA_1 BIT(1)
0176 #define SDW_SCP_SDCA_INTMASK_SDCA_2 BIT(2)
0177 #define SDW_SCP_SDCA_INTMASK_SDCA_3 BIT(3)
0178 #define SDW_SCP_SDCA_INTMASK_SDCA_4 BIT(4)
0179 #define SDW_SCP_SDCA_INTMASK_SDCA_5 BIT(5)
0180 #define SDW_SCP_SDCA_INTMASK_SDCA_6 BIT(6)
0181 #define SDW_SCP_SDCA_INTMASK_SDCA_7 BIT(7)
0182
0183 #define SDW_SCP_SDCA_INTMASK2 0x5D
0184 #define SDW_SCP_SDCA_INTMASK_SDCA_8 BIT(0)
0185 #define SDW_SCP_SDCA_INTMASK_SDCA_9 BIT(1)
0186 #define SDW_SCP_SDCA_INTMASK_SDCA_10 BIT(2)
0187 #define SDW_SCP_SDCA_INTMASK_SDCA_11 BIT(3)
0188 #define SDW_SCP_SDCA_INTMASK_SDCA_12 BIT(4)
0189 #define SDW_SCP_SDCA_INTMASK_SDCA_13 BIT(5)
0190 #define SDW_SCP_SDCA_INTMASK_SDCA_14 BIT(6)
0191 #define SDW_SCP_SDCA_INTMASK_SDCA_15 BIT(7)
0192
0193 #define SDW_SCP_SDCA_INTMASK3 0x5E
0194 #define SDW_SCP_SDCA_INTMASK_SDCA_16 BIT(0)
0195 #define SDW_SCP_SDCA_INTMASK_SDCA_17 BIT(1)
0196 #define SDW_SCP_SDCA_INTMASK_SDCA_18 BIT(2)
0197 #define SDW_SCP_SDCA_INTMASK_SDCA_19 BIT(3)
0198 #define SDW_SCP_SDCA_INTMASK_SDCA_20 BIT(4)
0199 #define SDW_SCP_SDCA_INTMASK_SDCA_21 BIT(5)
0200 #define SDW_SCP_SDCA_INTMASK_SDCA_22 BIT(6)
0201 #define SDW_SCP_SDCA_INTMASK_SDCA_23 BIT(7)
0202
0203 #define SDW_SCP_SDCA_INTMASK4 0x5F
0204 #define SDW_SCP_SDCA_INTMASK_SDCA_24 BIT(0)
0205 #define SDW_SCP_SDCA_INTMASK_SDCA_25 BIT(1)
0206 #define SDW_SCP_SDCA_INTMASK_SDCA_26 BIT(2)
0207 #define SDW_SCP_SDCA_INTMASK_SDCA_27 BIT(3)
0208 #define SDW_SCP_SDCA_INTMASK_SDCA_28 BIT(4)
0209 #define SDW_SCP_SDCA_INTMASK_SDCA_29 BIT(5)
0210 #define SDW_SCP_SDCA_INTMASK_SDCA_30 BIT(6)
0211
0212
0213
0214 #define SDW_SCP_FRAMECTRL_B0 0x60
0215 #define SDW_SCP_FRAMECTRL_B1 (0x60 + SDW_BANK1_OFFSET)
0216 #define SDW_SCP_NEXTFRAME_B0 0x61
0217 #define SDW_SCP_NEXTFRAME_B1 (0x61 + SDW_BANK1_OFFSET)
0218
0219 #define SDW_SCP_BUSCLOCK_SCALE_B0 0x62
0220 #define SDW_SCP_BUSCLOCK_SCALE_B1 (0x62 + SDW_BANK1_OFFSET)
0221 #define SDW_SCP_CLOCK_SCALE GENMASK(3, 0)
0222
0223
0224 #define SDW_SCP_PHY_OUT_CTRL_0 0x80
0225 #define SDW_SCP_PHY_OUT_CTRL_1 0x81
0226 #define SDW_SCP_PHY_OUT_CTRL_2 0x82
0227 #define SDW_SCP_PHY_OUT_CTRL_3 0x83
0228 #define SDW_SCP_PHY_OUT_CTRL_4 0x84
0229 #define SDW_SCP_PHY_OUT_CTRL_5 0x85
0230 #define SDW_SCP_PHY_OUT_CTRL_6 0x86
0231 #define SDW_SCP_PHY_OUT_CTRL_7 0x87
0232
0233 #define SDW_SCP_CAP_LOAD_CTRL GENMASK(2, 0)
0234 #define SDW_SCP_DRIVE_STRENGTH_CTRL GENMASK(5, 3)
0235 #define SDW_SCP_SLEW_TIME_CTRL GENMASK(7, 6)
0236
0237
0238 #define SDW_DPN_INT(n) (0x0 + SDW_DPN_SIZE * (n))
0239 #define SDW_DPN_INTMASK(n) (0x1 + SDW_DPN_SIZE * (n))
0240 #define SDW_DPN_PORTCTRL(n) (0x2 + SDW_DPN_SIZE * (n))
0241 #define SDW_DPN_BLOCKCTRL1(n) (0x3 + SDW_DPN_SIZE * (n))
0242 #define SDW_DPN_PREPARESTATUS(n) (0x4 + SDW_DPN_SIZE * (n))
0243 #define SDW_DPN_PREPARECTRL(n) (0x5 + SDW_DPN_SIZE * (n))
0244
0245 #define SDW_DPN_INT_TEST_FAIL BIT(0)
0246 #define SDW_DPN_INT_PORT_READY BIT(1)
0247 #define SDW_DPN_INT_IMPDEF1 BIT(5)
0248 #define SDW_DPN_INT_IMPDEF2 BIT(6)
0249 #define SDW_DPN_INT_IMPDEF3 BIT(7)
0250 #define SDW_DPN_INTERRUPTS (SDW_DPN_INT_TEST_FAIL | \
0251 SDW_DPN_INT_PORT_READY | \
0252 SDW_DPN_INT_IMPDEF1 | \
0253 SDW_DPN_INT_IMPDEF2 | \
0254 SDW_DPN_INT_IMPDEF3)
0255
0256 #define SDW_DPN_PORTCTRL_FLOWMODE GENMASK(1, 0)
0257 #define SDW_DPN_PORTCTRL_DATAMODE GENMASK(3, 2)
0258 #define SDW_DPN_PORTCTRL_NXTINVBANK BIT(4)
0259
0260 #define SDW_DPN_BLOCKCTRL1_WDLEN GENMASK(5, 0)
0261
0262 #define SDW_DPN_PREPARECTRL_CH_PREP GENMASK(7, 0)
0263
0264 #define SDW_DPN_CHANNELEN_B0(n) (0x20 + SDW_DPN_SIZE * (n))
0265 #define SDW_DPN_CHANNELEN_B1(n) (0x30 + SDW_DPN_SIZE * (n))
0266
0267 #define SDW_DPN_BLOCKCTRL2_B0(n) (0x21 + SDW_DPN_SIZE * (n))
0268 #define SDW_DPN_BLOCKCTRL2_B1(n) (0x31 + SDW_DPN_SIZE * (n))
0269
0270 #define SDW_DPN_SAMPLECTRL1_B0(n) (0x22 + SDW_DPN_SIZE * (n))
0271 #define SDW_DPN_SAMPLECTRL1_B1(n) (0x32 + SDW_DPN_SIZE * (n))
0272
0273 #define SDW_DPN_SAMPLECTRL2_B0(n) (0x23 + SDW_DPN_SIZE * (n))
0274 #define SDW_DPN_SAMPLECTRL2_B1(n) (0x33 + SDW_DPN_SIZE * (n))
0275
0276 #define SDW_DPN_OFFSETCTRL1_B0(n) (0x24 + SDW_DPN_SIZE * (n))
0277 #define SDW_DPN_OFFSETCTRL1_B1(n) (0x34 + SDW_DPN_SIZE * (n))
0278
0279 #define SDW_DPN_OFFSETCTRL2_B0(n) (0x25 + SDW_DPN_SIZE * (n))
0280 #define SDW_DPN_OFFSETCTRL2_B1(n) (0x35 + SDW_DPN_SIZE * (n))
0281
0282 #define SDW_DPN_HCTRL_B0(n) (0x26 + SDW_DPN_SIZE * (n))
0283 #define SDW_DPN_HCTRL_B1(n) (0x36 + SDW_DPN_SIZE * (n))
0284
0285 #define SDW_DPN_BLOCKCTRL3_B0(n) (0x27 + SDW_DPN_SIZE * (n))
0286 #define SDW_DPN_BLOCKCTRL3_B1(n) (0x37 + SDW_DPN_SIZE * (n))
0287
0288 #define SDW_DPN_LANECTRL_B0(n) (0x28 + SDW_DPN_SIZE * (n))
0289 #define SDW_DPN_LANECTRL_B1(n) (0x38 + SDW_DPN_SIZE * (n))
0290
0291 #define SDW_DPN_SAMPLECTRL_LOW GENMASK(7, 0)
0292 #define SDW_DPN_SAMPLECTRL_HIGH GENMASK(15, 8)
0293
0294 #define SDW_DPN_HCTRL_HSTART GENMASK(7, 4)
0295 #define SDW_DPN_HCTRL_HSTOP GENMASK(3, 0)
0296
0297 #define SDW_NUM_CASC_PORT_INTSTAT1 4
0298 #define SDW_CASC_PORT_START_INTSTAT1 0
0299 #define SDW_CASC_PORT_MASK_INTSTAT1 0x8
0300 #define SDW_CASC_PORT_REG_OFFSET_INTSTAT1 0x0
0301
0302 #define SDW_NUM_CASC_PORT_INTSTAT2 7
0303 #define SDW_CASC_PORT_START_INTSTAT2 4
0304 #define SDW_CASC_PORT_MASK_INTSTAT2 1
0305 #define SDW_CASC_PORT_REG_OFFSET_INTSTAT2 1
0306
0307 #define SDW_NUM_CASC_PORT_INTSTAT3 4
0308 #define SDW_CASC_PORT_START_INTSTAT3 11
0309 #define SDW_CASC_PORT_MASK_INTSTAT3 1
0310 #define SDW_CASC_PORT_REG_OFFSET_INTSTAT3 2
0311
0312
0313
0314
0315
0316
0317
0318
0319
0320
0321
0322
0323
0324
0325
0326
0327
0328
0329
0330
0331
0332 #define SDW_SDCA_CTL(fun, ent, ctl, ch) (BIT(30) | \
0333 (((fun) & 0x7) << 22) | \
0334 (((ent) & 0x40) << 15) | \
0335 (((ent) & 0x3f) << 7) | \
0336 (((ctl) & 0x30) << 15) | \
0337 (((ctl) & 0x0f) << 3) | \
0338 (((ch) & 0x38) << 12) | \
0339 ((ch) & 0x07))
0340
0341 #define SDW_SDCA_MBQ_CTL(reg) ((reg) | BIT(13))
0342 #define SDW_SDCA_NEXT_CTL(reg) ((reg) | BIT(14))
0343
0344 #endif