0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #ifndef _ROCKCHIP_IIS_H
0012 #define _ROCKCHIP_IIS_H
0013
0014
0015
0016
0017
0018 #define I2S_TXCR_RCNT_SHIFT 17
0019 #define I2S_TXCR_RCNT_MASK (0x3f << I2S_TXCR_RCNT_SHIFT)
0020 #define I2S_TXCR_CSR_SHIFT 15
0021 #define I2S_TXCR_CSR(x) (x << I2S_TXCR_CSR_SHIFT)
0022 #define I2S_TXCR_CSR_MASK (3 << I2S_TXCR_CSR_SHIFT)
0023 #define I2S_TXCR_HWT BIT(14)
0024 #define I2S_TXCR_SJM_SHIFT 12
0025 #define I2S_TXCR_SJM_R (0 << I2S_TXCR_SJM_SHIFT)
0026 #define I2S_TXCR_SJM_L (1 << I2S_TXCR_SJM_SHIFT)
0027 #define I2S_TXCR_FBM_SHIFT 11
0028 #define I2S_TXCR_FBM_MSB (0 << I2S_TXCR_FBM_SHIFT)
0029 #define I2S_TXCR_FBM_LSB (1 << I2S_TXCR_FBM_SHIFT)
0030 #define I2S_TXCR_IBM_SHIFT 9
0031 #define I2S_TXCR_IBM_NORMAL (0 << I2S_TXCR_IBM_SHIFT)
0032 #define I2S_TXCR_IBM_LSJM (1 << I2S_TXCR_IBM_SHIFT)
0033 #define I2S_TXCR_IBM_RSJM (2 << I2S_TXCR_IBM_SHIFT)
0034 #define I2S_TXCR_IBM_MASK (3 << I2S_TXCR_IBM_SHIFT)
0035 #define I2S_TXCR_PBM_SHIFT 7
0036 #define I2S_TXCR_PBM_MODE(x) (x << I2S_TXCR_PBM_SHIFT)
0037 #define I2S_TXCR_PBM_MASK (3 << I2S_TXCR_PBM_SHIFT)
0038 #define I2S_TXCR_TFS_SHIFT 5
0039 #define I2S_TXCR_TFS_I2S (0 << I2S_TXCR_TFS_SHIFT)
0040 #define I2S_TXCR_TFS_PCM (1 << I2S_TXCR_TFS_SHIFT)
0041 #define I2S_TXCR_TFS_MASK (1 << I2S_TXCR_TFS_SHIFT)
0042 #define I2S_TXCR_VDW_SHIFT 0
0043 #define I2S_TXCR_VDW(x) ((x - 1) << I2S_TXCR_VDW_SHIFT)
0044 #define I2S_TXCR_VDW_MASK (0x1f << I2S_TXCR_VDW_SHIFT)
0045
0046
0047
0048
0049
0050 #define I2S_RXCR_CSR_SHIFT 15
0051 #define I2S_RXCR_CSR(x) (x << I2S_RXCR_CSR_SHIFT)
0052 #define I2S_RXCR_CSR_MASK (3 << I2S_RXCR_CSR_SHIFT)
0053 #define I2S_RXCR_HWT BIT(14)
0054 #define I2S_RXCR_SJM_SHIFT 12
0055 #define I2S_RXCR_SJM_R (0 << I2S_RXCR_SJM_SHIFT)
0056 #define I2S_RXCR_SJM_L (1 << I2S_RXCR_SJM_SHIFT)
0057 #define I2S_RXCR_FBM_SHIFT 11
0058 #define I2S_RXCR_FBM_MSB (0 << I2S_RXCR_FBM_SHIFT)
0059 #define I2S_RXCR_FBM_LSB (1 << I2S_RXCR_FBM_SHIFT)
0060 #define I2S_RXCR_IBM_SHIFT 9
0061 #define I2S_RXCR_IBM_NORMAL (0 << I2S_RXCR_IBM_SHIFT)
0062 #define I2S_RXCR_IBM_LSJM (1 << I2S_RXCR_IBM_SHIFT)
0063 #define I2S_RXCR_IBM_RSJM (2 << I2S_RXCR_IBM_SHIFT)
0064 #define I2S_RXCR_IBM_MASK (3 << I2S_RXCR_IBM_SHIFT)
0065 #define I2S_RXCR_PBM_SHIFT 7
0066 #define I2S_RXCR_PBM_MODE(x) (x << I2S_RXCR_PBM_SHIFT)
0067 #define I2S_RXCR_PBM_MASK (3 << I2S_RXCR_PBM_SHIFT)
0068 #define I2S_RXCR_TFS_SHIFT 5
0069 #define I2S_RXCR_TFS_I2S (0 << I2S_RXCR_TFS_SHIFT)
0070 #define I2S_RXCR_TFS_PCM (1 << I2S_RXCR_TFS_SHIFT)
0071 #define I2S_RXCR_TFS_MASK (1 << I2S_RXCR_TFS_SHIFT)
0072 #define I2S_RXCR_VDW_SHIFT 0
0073 #define I2S_RXCR_VDW(x) ((x - 1) << I2S_RXCR_VDW_SHIFT)
0074 #define I2S_RXCR_VDW_MASK (0x1f << I2S_RXCR_VDW_SHIFT)
0075
0076
0077
0078
0079
0080 #define I2S_CKR_TRCM_SHIFT 28
0081 #define I2S_CKR_TRCM(x) (x << I2S_CKR_TRCM_SHIFT)
0082 #define I2S_CKR_TRCM_TXRX (0 << I2S_CKR_TRCM_SHIFT)
0083 #define I2S_CKR_TRCM_TXONLY (1 << I2S_CKR_TRCM_SHIFT)
0084 #define I2S_CKR_TRCM_RXONLY (2 << I2S_CKR_TRCM_SHIFT)
0085 #define I2S_CKR_TRCM_MASK (3 << I2S_CKR_TRCM_SHIFT)
0086 #define I2S_CKR_MSS_SHIFT 27
0087 #define I2S_CKR_MSS_MASTER (0 << I2S_CKR_MSS_SHIFT)
0088 #define I2S_CKR_MSS_SLAVE (1 << I2S_CKR_MSS_SHIFT)
0089 #define I2S_CKR_MSS_MASK (1 << I2S_CKR_MSS_SHIFT)
0090 #define I2S_CKR_CKP_SHIFT 26
0091 #define I2S_CKR_CKP_NORMAL (0 << I2S_CKR_CKP_SHIFT)
0092 #define I2S_CKR_CKP_INVERTED (1 << I2S_CKR_CKP_SHIFT)
0093 #define I2S_CKR_CKP_MASK (1 << I2S_CKR_CKP_SHIFT)
0094 #define I2S_CKR_RLP_SHIFT 25
0095 #define I2S_CKR_RLP_NORMAL (0 << I2S_CKR_RLP_SHIFT)
0096 #define I2S_CKR_RLP_INVERTED (1 << I2S_CKR_RLP_SHIFT)
0097 #define I2S_CKR_RLP_MASK (1 << I2S_CKR_RLP_SHIFT)
0098 #define I2S_CKR_TLP_SHIFT 24
0099 #define I2S_CKR_TLP_NORMAL (0 << I2S_CKR_TLP_SHIFT)
0100 #define I2S_CKR_TLP_INVERTED (1 << I2S_CKR_TLP_SHIFT)
0101 #define I2S_CKR_TLP_MASK (1 << I2S_CKR_TLP_SHIFT)
0102 #define I2S_CKR_MDIV_SHIFT 16
0103 #define I2S_CKR_MDIV(x) ((x - 1) << I2S_CKR_MDIV_SHIFT)
0104 #define I2S_CKR_MDIV_MASK (0xff << I2S_CKR_MDIV_SHIFT)
0105 #define I2S_CKR_RSD_SHIFT 8
0106 #define I2S_CKR_RSD(x) ((x - 1) << I2S_CKR_RSD_SHIFT)
0107 #define I2S_CKR_RSD_MASK (0xff << I2S_CKR_RSD_SHIFT)
0108 #define I2S_CKR_TSD_SHIFT 0
0109 #define I2S_CKR_TSD(x) ((x - 1) << I2S_CKR_TSD_SHIFT)
0110 #define I2S_CKR_TSD_MASK (0xff << I2S_CKR_TSD_SHIFT)
0111
0112
0113
0114
0115
0116 #define I2S_FIFOLR_RFL_SHIFT 24
0117 #define I2S_FIFOLR_RFL_MASK (0x3f << I2S_FIFOLR_RFL_SHIFT)
0118 #define I2S_FIFOLR_TFL3_SHIFT 18
0119 #define I2S_FIFOLR_TFL3_MASK (0x3f << I2S_FIFOLR_TFL3_SHIFT)
0120 #define I2S_FIFOLR_TFL2_SHIFT 12
0121 #define I2S_FIFOLR_TFL2_MASK (0x3f << I2S_FIFOLR_TFL2_SHIFT)
0122 #define I2S_FIFOLR_TFL1_SHIFT 6
0123 #define I2S_FIFOLR_TFL1_MASK (0x3f << I2S_FIFOLR_TFL1_SHIFT)
0124 #define I2S_FIFOLR_TFL0_SHIFT 0
0125 #define I2S_FIFOLR_TFL0_MASK (0x3f << I2S_FIFOLR_TFL0_SHIFT)
0126
0127
0128
0129
0130
0131 #define I2S_DMACR_RDE_SHIFT 24
0132 #define I2S_DMACR_RDE_DISABLE (0 << I2S_DMACR_RDE_SHIFT)
0133 #define I2S_DMACR_RDE_ENABLE (1 << I2S_DMACR_RDE_SHIFT)
0134 #define I2S_DMACR_RDL_SHIFT 16
0135 #define I2S_DMACR_RDL(x) ((x - 1) << I2S_DMACR_RDL_SHIFT)
0136 #define I2S_DMACR_RDL_MASK (0x1f << I2S_DMACR_RDL_SHIFT)
0137 #define I2S_DMACR_TDE_SHIFT 8
0138 #define I2S_DMACR_TDE_DISABLE (0 << I2S_DMACR_TDE_SHIFT)
0139 #define I2S_DMACR_TDE_ENABLE (1 << I2S_DMACR_TDE_SHIFT)
0140 #define I2S_DMACR_TDL_SHIFT 0
0141 #define I2S_DMACR_TDL(x) ((x) << I2S_DMACR_TDL_SHIFT)
0142 #define I2S_DMACR_TDL_MASK (0x1f << I2S_DMACR_TDL_SHIFT)
0143
0144
0145
0146
0147
0148 #define I2S_INTCR_RFT_SHIFT 20
0149 #define I2S_INTCR_RFT(x) ((x - 1) << I2S_INTCR_RFT_SHIFT)
0150 #define I2S_INTCR_RXOIC BIT(18)
0151 #define I2S_INTCR_RXOIE_SHIFT 17
0152 #define I2S_INTCR_RXOIE_DISABLE (0 << I2S_INTCR_RXOIE_SHIFT)
0153 #define I2S_INTCR_RXOIE_ENABLE (1 << I2S_INTCR_RXOIE_SHIFT)
0154 #define I2S_INTCR_RXFIE_SHIFT 16
0155 #define I2S_INTCR_RXFIE_DISABLE (0 << I2S_INTCR_RXFIE_SHIFT)
0156 #define I2S_INTCR_RXFIE_ENABLE (1 << I2S_INTCR_RXFIE_SHIFT)
0157 #define I2S_INTCR_TFT_SHIFT 4
0158 #define I2S_INTCR_TFT(x) ((x - 1) << I2S_INTCR_TFT_SHIFT)
0159 #define I2S_INTCR_TFT_MASK (0x1f << I2S_INTCR_TFT_SHIFT)
0160 #define I2S_INTCR_TXUIC BIT(2)
0161 #define I2S_INTCR_TXUIE_SHIFT 1
0162 #define I2S_INTCR_TXUIE_DISABLE (0 << I2S_INTCR_TXUIE_SHIFT)
0163 #define I2S_INTCR_TXUIE_ENABLE (1 << I2S_INTCR_TXUIE_SHIFT)
0164
0165
0166
0167
0168
0169 #define I2S_INTSR_TXEIE_SHIFT 0
0170 #define I2S_INTSR_TXEIE_DISABLE (0 << I2S_INTSR_TXEIE_SHIFT)
0171 #define I2S_INTSR_TXEIE_ENABLE (1 << I2S_INTSR_TXEIE_SHIFT)
0172 #define I2S_INTSR_RXOI_SHIFT 17
0173 #define I2S_INTSR_RXOI_INA (0 << I2S_INTSR_RXOI_SHIFT)
0174 #define I2S_INTSR_RXOI_ACT (1 << I2S_INTSR_RXOI_SHIFT)
0175 #define I2S_INTSR_RXFI_SHIFT 16
0176 #define I2S_INTSR_RXFI_INA (0 << I2S_INTSR_RXFI_SHIFT)
0177 #define I2S_INTSR_RXFI_ACT (1 << I2S_INTSR_RXFI_SHIFT)
0178 #define I2S_INTSR_TXUI_SHIFT 1
0179 #define I2S_INTSR_TXUI_INA (0 << I2S_INTSR_TXUI_SHIFT)
0180 #define I2S_INTSR_TXUI_ACT (1 << I2S_INTSR_TXUI_SHIFT)
0181 #define I2S_INTSR_TXEI_SHIFT 0
0182 #define I2S_INTSR_TXEI_INA (0 << I2S_INTSR_TXEI_SHIFT)
0183 #define I2S_INTSR_TXEI_ACT (1 << I2S_INTSR_TXEI_SHIFT)
0184
0185
0186
0187
0188
0189 #define I2S_XFER_RXS_SHIFT 1
0190 #define I2S_XFER_RXS_STOP (0 << I2S_XFER_RXS_SHIFT)
0191 #define I2S_XFER_RXS_START (1 << I2S_XFER_RXS_SHIFT)
0192 #define I2S_XFER_TXS_SHIFT 0
0193 #define I2S_XFER_TXS_STOP (0 << I2S_XFER_TXS_SHIFT)
0194 #define I2S_XFER_TXS_START (1 << I2S_XFER_TXS_SHIFT)
0195
0196
0197
0198
0199
0200 #define I2S_CLR_RXC BIT(1)
0201 #define I2S_CLR_TXC BIT(0)
0202
0203
0204
0205
0206
0207 #define I2S_TXDR_MASK (0xff)
0208
0209
0210
0211
0212
0213 #define I2S_RXDR_MASK (0xff)
0214
0215
0216 enum {
0217 ROCKCHIP_DIV_MCLK = 0,
0218 ROCKCHIP_DIV_BCLK,
0219 };
0220
0221
0222 #define I2S_CSR_SHIFT 15
0223 #define I2S_CHN_2 (0 << I2S_CSR_SHIFT)
0224 #define I2S_CHN_4 (1 << I2S_CSR_SHIFT)
0225 #define I2S_CHN_6 (2 << I2S_CSR_SHIFT)
0226 #define I2S_CHN_8 (3 << I2S_CSR_SHIFT)
0227
0228
0229 #define I2S_TXCR (0x0000)
0230 #define I2S_RXCR (0x0004)
0231 #define I2S_CKR (0x0008)
0232 #define I2S_FIFOLR (0x000c)
0233 #define I2S_DMACR (0x0010)
0234 #define I2S_INTCR (0x0014)
0235 #define I2S_INTSR (0x0018)
0236 #define I2S_XFER (0x001c)
0237 #define I2S_CLR (0x0020)
0238 #define I2S_TXDR (0x0024)
0239 #define I2S_RXDR (0x0028)
0240
0241
0242 #define I2S_IO_DIRECTION_MASK (7)
0243 #define I2S_IO_8CH_OUT_2CH_IN (0)
0244 #define I2S_IO_6CH_OUT_4CH_IN (4)
0245 #define I2S_IO_4CH_OUT_6CH_IN (6)
0246 #define I2S_IO_2CH_OUT_8CH_IN (7)
0247
0248 #endif