Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause) */
0002 /* Copyright(c) 2015-17 Intel Corporation. */
0003 
0004 #ifndef __SDW_REGISTERS_H
0005 #define __SDW_REGISTERS_H
0006 
0007 /*
0008  * SDW registers as defined by MIPI 1.2 Spec
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  * DP0 Interrupt register & bits
0023  *
0024  * Spec treats Status (RO) and Clear (WC) as separate but they are same
0025  * address, so treat as same register with WC.
0026  */
0027 
0028 /* both INT and STATUS register are same */
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 /* BIT(4) not allocated in SoundWire specification 1.2 */
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 /* Both INT and STATUS register are same */
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 /* Number of interrupt status registers */
0081 #define SDW_NUM_INT_STAT_REGISTERS      3
0082 
0083 /* Number of interrupt clear registers */
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 /* 0x4E is not allocated in SoundWire specification 1.2 */
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 /* Both INT and STATUS register are same */
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 /* BIT(7) not allocated in SoundWire 1.2 specification */
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 /* BIT(7) not allocated in SoundWire 1.2 specification */
0212 
0213 /* Banked Registers */
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 /* PHY registers - CTRL and STAT are the same address */
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 /* Both INT and STATUS register is same */
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  * v1.2 device - SDCA address mapping
0314  *
0315  * Spec definition
0316  *  Bits        Contents
0317  *  31      0 (required by addressing range)
0318  *  30:26       0b10000 (Control Prefix)
0319  *  25      0 (Reserved)
0320  *  24:22       Function Number [2:0]
0321  *  21      Entity[6]
0322  *  20:19       Control Selector[5:4]
0323  *  18      0 (Reserved)
0324  *  17:15       Control Number[5:3]
0325  *  14      Next
0326  *  13      MBQ
0327  *  12:7        Entity[5:0]
0328  *  6:3     Control Selector[3:0]
0329  *  2:0     Control Number[2:0]
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 /* __SDW_REGISTERS_H */