Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * ALSA SoC Audio Layer - Rockchip I2S/TDM Controller driver
0004  *
0005  * Copyright (c) 2018 Rockchip Electronics Co. Ltd.
0006  * Author: Sugar Zhang <sugar.zhang@rock-chips.com>
0007  *
0008  */
0009 
0010 #ifndef _ROCKCHIP_I2S_TDM_H
0011 #define _ROCKCHIP_I2S_TDM_H
0012 
0013 /*
0014  * TXCR
0015  * transmit operation control register
0016  */
0017 #define I2S_TXCR_PATH_SHIFT(x)  (23 + (x) * 2)
0018 #define I2S_TXCR_PATH_MASK(x)   (0x3 << I2S_TXCR_PATH_SHIFT(x))
0019 #define I2S_TXCR_PATH(x, v) ((v) << I2S_TXCR_PATH_SHIFT(x))
0020 #define I2S_TXCR_RCNT_SHIFT 17
0021 #define I2S_TXCR_RCNT_MASK  (0x3f << I2S_TXCR_RCNT_SHIFT)
0022 #define I2S_TXCR_CSR_SHIFT  15
0023 #define I2S_TXCR_CSR(x)     ((x) << I2S_TXCR_CSR_SHIFT)
0024 #define I2S_TXCR_CSR_MASK   (3 << I2S_TXCR_CSR_SHIFT)
0025 #define I2S_TXCR_HWT        BIT(14)
0026 #define I2S_TXCR_SJM_SHIFT  12
0027 #define I2S_TXCR_SJM_R      (0 << I2S_TXCR_SJM_SHIFT)
0028 #define I2S_TXCR_SJM_L      (1 << I2S_TXCR_SJM_SHIFT)
0029 #define I2S_TXCR_FBM_SHIFT  11
0030 #define I2S_TXCR_FBM_MSB    (0 << I2S_TXCR_FBM_SHIFT)
0031 #define I2S_TXCR_FBM_LSB    (1 << I2S_TXCR_FBM_SHIFT)
0032 #define I2S_TXCR_IBM_SHIFT  9
0033 #define I2S_TXCR_IBM_NORMAL (0 << I2S_TXCR_IBM_SHIFT)
0034 #define I2S_TXCR_IBM_LSJM   (1 << I2S_TXCR_IBM_SHIFT)
0035 #define I2S_TXCR_IBM_RSJM   (2 << I2S_TXCR_IBM_SHIFT)
0036 #define I2S_TXCR_IBM_MASK   (3 << I2S_TXCR_IBM_SHIFT)
0037 #define I2S_TXCR_PBM_SHIFT  7
0038 #define I2S_TXCR_PBM_MODE(x)    ((x) << I2S_TXCR_PBM_SHIFT)
0039 #define I2S_TXCR_PBM_MASK   (3 << I2S_TXCR_PBM_SHIFT)
0040 #define I2S_TXCR_TFS_SHIFT  5
0041 #define I2S_TXCR_TFS_I2S    (0 << I2S_TXCR_TFS_SHIFT)
0042 #define I2S_TXCR_TFS_PCM    (1 << I2S_TXCR_TFS_SHIFT)
0043 #define I2S_TXCR_TFS_TDM_PCM    (2 << I2S_TXCR_TFS_SHIFT)
0044 #define I2S_TXCR_TFS_TDM_I2S    (3 << I2S_TXCR_TFS_SHIFT)
0045 #define I2S_TXCR_TFS_MASK   (3 << I2S_TXCR_TFS_SHIFT)
0046 #define I2S_TXCR_VDW_SHIFT  0
0047 #define I2S_TXCR_VDW(x)     (((x) - 1) << I2S_TXCR_VDW_SHIFT)
0048 #define I2S_TXCR_VDW_MASK   (0x1f << I2S_TXCR_VDW_SHIFT)
0049 
0050 /*
0051  * RXCR
0052  * receive operation control register
0053  */
0054 #define I2S_RXCR_PATH_SHIFT(x)  (17 + (x) * 2)
0055 #define I2S_RXCR_PATH_MASK(x)   (0x3 << I2S_RXCR_PATH_SHIFT(x))
0056 #define I2S_RXCR_PATH(x, v) ((v) << I2S_RXCR_PATH_SHIFT(x))
0057 #define I2S_RXCR_CSR_SHIFT  15
0058 #define I2S_RXCR_CSR(x)     ((x) << I2S_RXCR_CSR_SHIFT)
0059 #define I2S_RXCR_CSR_MASK   (3 << I2S_RXCR_CSR_SHIFT)
0060 #define I2S_RXCR_HWT        BIT(14)
0061 #define I2S_RXCR_SJM_SHIFT  12
0062 #define I2S_RXCR_SJM_R      (0 << I2S_RXCR_SJM_SHIFT)
0063 #define I2S_RXCR_SJM_L      (1 << I2S_RXCR_SJM_SHIFT)
0064 #define I2S_RXCR_FBM_SHIFT  11
0065 #define I2S_RXCR_FBM_MSB    (0 << I2S_RXCR_FBM_SHIFT)
0066 #define I2S_RXCR_FBM_LSB    (1 << I2S_RXCR_FBM_SHIFT)
0067 #define I2S_RXCR_IBM_SHIFT  9
0068 #define I2S_RXCR_IBM_NORMAL (0 << I2S_RXCR_IBM_SHIFT)
0069 #define I2S_RXCR_IBM_LSJM   (1 << I2S_RXCR_IBM_SHIFT)
0070 #define I2S_RXCR_IBM_RSJM   (2 << I2S_RXCR_IBM_SHIFT)
0071 #define I2S_RXCR_IBM_MASK   (3 << I2S_RXCR_IBM_SHIFT)
0072 #define I2S_RXCR_PBM_SHIFT  7
0073 #define I2S_RXCR_PBM_MODE(x)    ((x) << I2S_RXCR_PBM_SHIFT)
0074 #define I2S_RXCR_PBM_MASK   (3 << I2S_RXCR_PBM_SHIFT)
0075 #define I2S_RXCR_TFS_SHIFT  5
0076 #define I2S_RXCR_TFS_I2S    (0 << I2S_RXCR_TFS_SHIFT)
0077 #define I2S_RXCR_TFS_PCM    (1 << I2S_RXCR_TFS_SHIFT)
0078 #define I2S_RXCR_TFS_TDM_PCM    (2 << I2S_RXCR_TFS_SHIFT)
0079 #define I2S_RXCR_TFS_TDM_I2S    (3 << I2S_RXCR_TFS_SHIFT)
0080 #define I2S_RXCR_TFS_MASK   (3 << I2S_RXCR_TFS_SHIFT)
0081 #define I2S_RXCR_VDW_SHIFT  0
0082 #define I2S_RXCR_VDW(x)     (((x) - 1) << I2S_RXCR_VDW_SHIFT)
0083 #define I2S_RXCR_VDW_MASK   (0x1f << I2S_RXCR_VDW_SHIFT)
0084 
0085 /*
0086  * CKR
0087  * clock generation register
0088  */
0089 #define I2S_CKR_TRCM_SHIFT  28
0090 #define I2S_CKR_TRCM(x) ((x) << I2S_CKR_TRCM_SHIFT)
0091 #define I2S_CKR_TRCM_TXRX   (0 << I2S_CKR_TRCM_SHIFT)
0092 #define I2S_CKR_TRCM_TXONLY (1 << I2S_CKR_TRCM_SHIFT)
0093 #define I2S_CKR_TRCM_RXONLY (2 << I2S_CKR_TRCM_SHIFT)
0094 #define I2S_CKR_TRCM_MASK   (3 << I2S_CKR_TRCM_SHIFT)
0095 #define I2S_CKR_MSS_SHIFT   27
0096 #define I2S_CKR_MSS_MASTER  (0 << I2S_CKR_MSS_SHIFT)
0097 #define I2S_CKR_MSS_SLAVE   (1 << I2S_CKR_MSS_SHIFT)
0098 #define I2S_CKR_MSS_MASK    (1 << I2S_CKR_MSS_SHIFT)
0099 #define I2S_CKR_CKP_SHIFT   26
0100 #define I2S_CKR_CKP_NORMAL  (0 << I2S_CKR_CKP_SHIFT)
0101 #define I2S_CKR_CKP_INVERTED    (1 << I2S_CKR_CKP_SHIFT)
0102 #define I2S_CKR_CKP_MASK    (1 << I2S_CKR_CKP_SHIFT)
0103 #define I2S_CKR_RLP_SHIFT   25
0104 #define I2S_CKR_RLP_NORMAL  (0 << I2S_CKR_RLP_SHIFT)
0105 #define I2S_CKR_RLP_INVERTED    (1 << I2S_CKR_RLP_SHIFT)
0106 #define I2S_CKR_RLP_MASK    (1 << I2S_CKR_RLP_SHIFT)
0107 #define I2S_CKR_TLP_SHIFT   24
0108 #define I2S_CKR_TLP_NORMAL  (0 << I2S_CKR_TLP_SHIFT)
0109 #define I2S_CKR_TLP_INVERTED    (1 << I2S_CKR_TLP_SHIFT)
0110 #define I2S_CKR_TLP_MASK    (1 << I2S_CKR_TLP_SHIFT)
0111 #define I2S_CKR_MDIV_SHIFT  16
0112 #define I2S_CKR_MDIV(x)     (((x) - 1) << I2S_CKR_MDIV_SHIFT)
0113 #define I2S_CKR_MDIV_MASK   (0xff << I2S_CKR_MDIV_SHIFT)
0114 #define I2S_CKR_RSD_SHIFT   8
0115 #define I2S_CKR_RSD(x)      (((x) - 1) << I2S_CKR_RSD_SHIFT)
0116 #define I2S_CKR_RSD_MASK    (0xff << I2S_CKR_RSD_SHIFT)
0117 #define I2S_CKR_TSD_SHIFT   0
0118 #define I2S_CKR_TSD(x)      (((x) - 1) << I2S_CKR_TSD_SHIFT)
0119 #define I2S_CKR_TSD_MASK    (0xff << I2S_CKR_TSD_SHIFT)
0120 
0121 /*
0122  * FIFOLR
0123  * FIFO level register
0124  */
0125 #define I2S_FIFOLR_RFL_SHIFT    24
0126 #define I2S_FIFOLR_RFL_MASK (0x3f << I2S_FIFOLR_RFL_SHIFT)
0127 #define I2S_FIFOLR_TFL3_SHIFT   18
0128 #define I2S_FIFOLR_TFL3_MASK    (0x3f << I2S_FIFOLR_TFL3_SHIFT)
0129 #define I2S_FIFOLR_TFL2_SHIFT   12
0130 #define I2S_FIFOLR_TFL2_MASK    (0x3f << I2S_FIFOLR_TFL2_SHIFT)
0131 #define I2S_FIFOLR_TFL1_SHIFT   6
0132 #define I2S_FIFOLR_TFL1_MASK    (0x3f << I2S_FIFOLR_TFL1_SHIFT)
0133 #define I2S_FIFOLR_TFL0_SHIFT   0
0134 #define I2S_FIFOLR_TFL0_MASK    (0x3f << I2S_FIFOLR_TFL0_SHIFT)
0135 
0136 /*
0137  * DMACR
0138  * DMA control register
0139  */
0140 #define I2S_DMACR_RDE_SHIFT 24
0141 #define I2S_DMACR_RDE_DISABLE   (0 << I2S_DMACR_RDE_SHIFT)
0142 #define I2S_DMACR_RDE_ENABLE    (1 << I2S_DMACR_RDE_SHIFT)
0143 #define I2S_DMACR_RDL_SHIFT 16
0144 #define I2S_DMACR_RDL(x)    (((x) - 1) << I2S_DMACR_RDL_SHIFT)
0145 #define I2S_DMACR_RDL_MASK  (0x1f << I2S_DMACR_RDL_SHIFT)
0146 #define I2S_DMACR_TDE_SHIFT 8
0147 #define I2S_DMACR_TDE_DISABLE   (0 << I2S_DMACR_TDE_SHIFT)
0148 #define I2S_DMACR_TDE_ENABLE    (1 << I2S_DMACR_TDE_SHIFT)
0149 #define I2S_DMACR_TDL_SHIFT 0
0150 #define I2S_DMACR_TDL(x)    ((x) << I2S_DMACR_TDL_SHIFT)
0151 #define I2S_DMACR_TDL_MASK  (0x1f << I2S_DMACR_TDL_SHIFT)
0152 
0153 /*
0154  * INTCR
0155  * interrupt control register
0156  */
0157 #define I2S_INTCR_RFT_SHIFT 20
0158 #define I2S_INTCR_RFT(x)    (((x) - 1) << I2S_INTCR_RFT_SHIFT)
0159 #define I2S_INTCR_RXOIC     BIT(18)
0160 #define I2S_INTCR_RXOIE_SHIFT   17
0161 #define I2S_INTCR_RXOIE_DISABLE (0 << I2S_INTCR_RXOIE_SHIFT)
0162 #define I2S_INTCR_RXOIE_ENABLE  (1 << I2S_INTCR_RXOIE_SHIFT)
0163 #define I2S_INTCR_RXFIE_SHIFT   16
0164 #define I2S_INTCR_RXFIE_DISABLE (0 << I2S_INTCR_RXFIE_SHIFT)
0165 #define I2S_INTCR_RXFIE_ENABLE  (1 << I2S_INTCR_RXFIE_SHIFT)
0166 #define I2S_INTCR_TFT_SHIFT 4
0167 #define I2S_INTCR_TFT(x)    (((x) - 1) << I2S_INTCR_TFT_SHIFT)
0168 #define I2S_INTCR_TFT_MASK  (0x1f << I2S_INTCR_TFT_SHIFT)
0169 #define I2S_INTCR_TXUIC     BIT(2)
0170 #define I2S_INTCR_TXUIE_SHIFT   1
0171 #define I2S_INTCR_TXUIE_DISABLE (0 << I2S_INTCR_TXUIE_SHIFT)
0172 #define I2S_INTCR_TXUIE_ENABLE  (1 << I2S_INTCR_TXUIE_SHIFT)
0173 
0174 /*
0175  * INTSR
0176  * interrupt status register
0177  */
0178 #define I2S_INTSR_TXEIE_SHIFT   0
0179 #define I2S_INTSR_TXEIE_DISABLE (0 << I2S_INTSR_TXEIE_SHIFT)
0180 #define I2S_INTSR_TXEIE_ENABLE  (1 << I2S_INTSR_TXEIE_SHIFT)
0181 #define I2S_INTSR_RXOI_SHIFT    17
0182 #define I2S_INTSR_RXOI_INA  (0 << I2S_INTSR_RXOI_SHIFT)
0183 #define I2S_INTSR_RXOI_ACT  (1 << I2S_INTSR_RXOI_SHIFT)
0184 #define I2S_INTSR_RXFI_SHIFT    16
0185 #define I2S_INTSR_RXFI_INA  (0 << I2S_INTSR_RXFI_SHIFT)
0186 #define I2S_INTSR_RXFI_ACT  (1 << I2S_INTSR_RXFI_SHIFT)
0187 #define I2S_INTSR_TXUI_SHIFT    1
0188 #define I2S_INTSR_TXUI_INA  (0 << I2S_INTSR_TXUI_SHIFT)
0189 #define I2S_INTSR_TXUI_ACT  (1 << I2S_INTSR_TXUI_SHIFT)
0190 #define I2S_INTSR_TXEI_SHIFT    0
0191 #define I2S_INTSR_TXEI_INA  (0 << I2S_INTSR_TXEI_SHIFT)
0192 #define I2S_INTSR_TXEI_ACT  (1 << I2S_INTSR_TXEI_SHIFT)
0193 
0194 /*
0195  * XFER
0196  * Transfer start register
0197  */
0198 #define I2S_XFER_RXS_SHIFT  1
0199 #define I2S_XFER_RXS_STOP   (0 << I2S_XFER_RXS_SHIFT)
0200 #define I2S_XFER_RXS_START  (1 << I2S_XFER_RXS_SHIFT)
0201 #define I2S_XFER_TXS_SHIFT  0
0202 #define I2S_XFER_TXS_STOP   (0 << I2S_XFER_TXS_SHIFT)
0203 #define I2S_XFER_TXS_START  (1 << I2S_XFER_TXS_SHIFT)
0204 
0205 /*
0206  * CLR
0207  * clear SCLK domain logic register
0208  */
0209 #define I2S_CLR_RXC BIT(1)
0210 #define I2S_CLR_TXC BIT(0)
0211 
0212 /*
0213  * TXDR
0214  * Transimt FIFO data register, write only.
0215  */
0216 #define I2S_TXDR_MASK   (0xff)
0217 
0218 /*
0219  * RXDR
0220  * Receive FIFO data register, write only.
0221  */
0222 #define I2S_RXDR_MASK   (0xff)
0223 
0224 /*
0225  * TDM_CTRL
0226  * TDM ctrl register
0227  */
0228 #define TDM_FSYNC_WIDTH_SEL1_MSK    GENMASK(20, 18)
0229 #define TDM_FSYNC_WIDTH_SEL1(x)     (((x) - 1) << 18)
0230 #define TDM_FSYNC_WIDTH_SEL0_MSK    BIT(17)
0231 #define TDM_FSYNC_WIDTH_HALF_FRAME  0
0232 #define TDM_FSYNC_WIDTH_ONE_FRAME   BIT(17)
0233 #define TDM_SHIFT_CTRL_MSK      GENMASK(16, 14)
0234 #define TDM_SHIFT_CTRL(x)       ((x) << 14)
0235 #define TDM_SLOT_BIT_WIDTH_MSK      GENMASK(13, 9)
0236 #define TDM_SLOT_BIT_WIDTH(x)       (((x) - 1) << 9)
0237 #define TDM_FRAME_WIDTH_MSK     GENMASK(8, 0)
0238 #define TDM_FRAME_WIDTH(x)      (((x) - 1) << 0)
0239 
0240 /*
0241  * CLKDIV
0242  * Mclk div register
0243  */
0244 #define I2S_CLKDIV_TXM_SHIFT    0
0245 #define I2S_CLKDIV_TXM(x)       (((x) - 1) << I2S_CLKDIV_TXM_SHIFT)
0246 #define I2S_CLKDIV_TXM_MASK (0xff << I2S_CLKDIV_TXM_SHIFT)
0247 #define I2S_CLKDIV_RXM_SHIFT    8
0248 #define I2S_CLKDIV_RXM(x)       (((x) - 1) << I2S_CLKDIV_RXM_SHIFT)
0249 #define I2S_CLKDIV_RXM_MASK (0xff << I2S_CLKDIV_RXM_SHIFT)
0250 
0251 /* Clock divider id */
0252 enum {
0253     ROCKCHIP_DIV_MCLK = 0,
0254     ROCKCHIP_DIV_BCLK,
0255 };
0256 
0257 /* channel select */
0258 #define I2S_CSR_SHIFT   15
0259 #define I2S_CHN_2   (0 << I2S_CSR_SHIFT)
0260 #define I2S_CHN_4   (1 << I2S_CSR_SHIFT)
0261 #define I2S_CHN_6   (2 << I2S_CSR_SHIFT)
0262 #define I2S_CHN_8   (3 << I2S_CSR_SHIFT)
0263 
0264 /* io direction cfg register */
0265 #define I2S_IO_DIRECTION_MASK   (7)
0266 #define I2S_IO_8CH_OUT_2CH_IN   (7)
0267 #define I2S_IO_6CH_OUT_4CH_IN   (3)
0268 #define I2S_IO_4CH_OUT_6CH_IN   (1)
0269 #define I2S_IO_2CH_OUT_8CH_IN   (0)
0270 
0271 /* I2S REGS */
0272 #define I2S_TXCR    (0x0000)
0273 #define I2S_RXCR    (0x0004)
0274 #define I2S_CKR     (0x0008)
0275 #define I2S_TXFIFOLR    (0x000c)
0276 #define I2S_DMACR   (0x0010)
0277 #define I2S_INTCR   (0x0014)
0278 #define I2S_INTSR   (0x0018)
0279 #define I2S_XFER    (0x001c)
0280 #define I2S_CLR     (0x0020)
0281 #define I2S_TXDR    (0x0024)
0282 #define I2S_RXDR    (0x0028)
0283 #define I2S_RXFIFOLR    (0x002c)
0284 #define I2S_TDM_TXCR    (0x0030)
0285 #define I2S_TDM_RXCR    (0x0034)
0286 #define I2S_CLKDIV  (0x0038)
0287 
0288 #define HIWORD_UPDATE(v, h, l)  (((v) << (l)) | (GENMASK((h), (l)) << 16))
0289 
0290 /* PX30 GRF CONFIGS */
0291 #define PX30_I2S0_CLK_IN_SRC_FROM_TX        HIWORD_UPDATE(1, 13, 12)
0292 #define PX30_I2S0_CLK_IN_SRC_FROM_RX        HIWORD_UPDATE(2, 13, 12)
0293 #define PX30_I2S0_MCLK_OUT_SRC_FROM_TX      HIWORD_UPDATE(1, 5, 5)
0294 #define PX30_I2S0_MCLK_OUT_SRC_FROM_RX      HIWORD_UPDATE(0, 5, 5)
0295 
0296 #define PX30_I2S0_CLK_TXONLY \
0297     (PX30_I2S0_MCLK_OUT_SRC_FROM_TX | PX30_I2S0_CLK_IN_SRC_FROM_TX)
0298 
0299 #define PX30_I2S0_CLK_RXONLY \
0300     (PX30_I2S0_MCLK_OUT_SRC_FROM_RX | PX30_I2S0_CLK_IN_SRC_FROM_RX)
0301 
0302 /* RK1808 GRF CONFIGS */
0303 #define RK1808_I2S0_MCLK_OUT_SRC_FROM_RX    HIWORD_UPDATE(1, 2, 2)
0304 #define RK1808_I2S0_MCLK_OUT_SRC_FROM_TX    HIWORD_UPDATE(0, 2, 2)
0305 #define RK1808_I2S0_CLK_IN_SRC_FROM_TX      HIWORD_UPDATE(1, 1, 0)
0306 #define RK1808_I2S0_CLK_IN_SRC_FROM_RX      HIWORD_UPDATE(2, 1, 0)
0307 
0308 #define RK1808_I2S0_CLK_TXONLY \
0309     (RK1808_I2S0_MCLK_OUT_SRC_FROM_TX | RK1808_I2S0_CLK_IN_SRC_FROM_TX)
0310 
0311 #define RK1808_I2S0_CLK_RXONLY \
0312     (RK1808_I2S0_MCLK_OUT_SRC_FROM_RX | RK1808_I2S0_CLK_IN_SRC_FROM_RX)
0313 
0314 /* RK3308 GRF CONFIGS */
0315 #define RK3308_I2S0_8CH_MCLK_OUT_SRC_FROM_RX    HIWORD_UPDATE(1, 10, 10)
0316 #define RK3308_I2S0_8CH_MCLK_OUT_SRC_FROM_TX    HIWORD_UPDATE(0, 10, 10)
0317 #define RK3308_I2S0_8CH_CLK_IN_RX_SRC_FROM_TX   HIWORD_UPDATE(1, 9, 9)
0318 #define RK3308_I2S0_8CH_CLK_IN_RX_SRC_FROM_RX   HIWORD_UPDATE(0, 9, 9)
0319 #define RK3308_I2S0_8CH_CLK_IN_TX_SRC_FROM_RX   HIWORD_UPDATE(1, 8, 8)
0320 #define RK3308_I2S0_8CH_CLK_IN_TX_SRC_FROM_TX   HIWORD_UPDATE(0, 8, 8)
0321 #define RK3308_I2S1_8CH_MCLK_OUT_SRC_FROM_RX    HIWORD_UPDATE(1, 2, 2)
0322 #define RK3308_I2S1_8CH_MCLK_OUT_SRC_FROM_TX    HIWORD_UPDATE(0, 2, 2)
0323 #define RK3308_I2S1_8CH_CLK_IN_RX_SRC_FROM_TX   HIWORD_UPDATE(1, 1, 1)
0324 #define RK3308_I2S1_8CH_CLK_IN_RX_SRC_FROM_RX   HIWORD_UPDATE(0, 1, 1)
0325 #define RK3308_I2S1_8CH_CLK_IN_TX_SRC_FROM_RX   HIWORD_UPDATE(1, 0, 0)
0326 #define RK3308_I2S1_8CH_CLK_IN_TX_SRC_FROM_TX   HIWORD_UPDATE(0, 0, 0)
0327 
0328 #define RK3308_I2S0_CLK_TXONLY \
0329     (RK3308_I2S0_8CH_MCLK_OUT_SRC_FROM_TX | \
0330     RK3308_I2S0_8CH_CLK_IN_RX_SRC_FROM_TX | \
0331     RK3308_I2S0_8CH_CLK_IN_TX_SRC_FROM_TX)
0332 
0333 #define RK3308_I2S0_CLK_RXONLY \
0334     (RK3308_I2S0_8CH_MCLK_OUT_SRC_FROM_RX | \
0335     RK3308_I2S0_8CH_CLK_IN_RX_SRC_FROM_RX | \
0336     RK3308_I2S0_8CH_CLK_IN_TX_SRC_FROM_RX)
0337 
0338 #define RK3308_I2S1_CLK_TXONLY \
0339     (RK3308_I2S1_8CH_MCLK_OUT_SRC_FROM_TX | \
0340     RK3308_I2S1_8CH_CLK_IN_RX_SRC_FROM_TX | \
0341     RK3308_I2S1_8CH_CLK_IN_TX_SRC_FROM_TX)
0342 
0343 #define RK3308_I2S1_CLK_RXONLY \
0344     (RK3308_I2S1_8CH_MCLK_OUT_SRC_FROM_RX | \
0345     RK3308_I2S1_8CH_CLK_IN_RX_SRC_FROM_RX | \
0346     RK3308_I2S1_8CH_CLK_IN_TX_SRC_FROM_RX)
0347 
0348 /* RK3568 GRF CONFIGS */
0349 #define RK3568_I2S1_MCLK_OUT_SRC_FROM_TX    HIWORD_UPDATE(1, 5, 5)
0350 #define RK3568_I2S1_MCLK_OUT_SRC_FROM_RX    HIWORD_UPDATE(0, 5, 5)
0351 
0352 #define RK3568_I2S1_CLK_TXONLY \
0353     RK3568_I2S1_MCLK_OUT_SRC_FROM_TX
0354 
0355 #define RK3568_I2S1_CLK_RXONLY \
0356     RK3568_I2S1_MCLK_OUT_SRC_FROM_RX
0357 
0358 #define RK3568_I2S3_MCLK_OUT_SRC_FROM_TX    HIWORD_UPDATE(1, 15, 15)
0359 #define RK3568_I2S3_MCLK_OUT_SRC_FROM_RX    HIWORD_UPDATE(0, 15, 15)
0360 #define RK3568_I2S3_SCLK_SRC_FROM_TX        HIWORD_UPDATE(1, 7, 7)
0361 #define RK3568_I2S3_SCLK_SRC_FROM_RX        HIWORD_UPDATE(0, 7, 7)
0362 #define RK3568_I2S3_LRCK_SRC_FROM_TX        HIWORD_UPDATE(1, 6, 6)
0363 #define RK3568_I2S3_LRCK_SRC_FROM_RX        HIWORD_UPDATE(0, 6, 6)
0364 
0365 #define RK3568_I2S3_MCLK_TXONLY \
0366     RK3568_I2S3_MCLK_OUT_SRC_FROM_TX
0367 
0368 #define RK3568_I2S3_CLK_TXONLY \
0369     (RK3568_I2S3_SCLK_SRC_FROM_TX | \
0370     RK3568_I2S3_LRCK_SRC_FROM_TX)
0371 
0372 #define RK3568_I2S3_MCLK_RXONLY \
0373     RK3568_I2S3_MCLK_OUT_SRC_FROM_RX
0374 
0375 #define RK3568_I2S3_CLK_RXONLY \
0376     (RK3568_I2S3_SCLK_SRC_FROM_RX | \
0377     RK3568_I2S3_LRCK_SRC_FROM_RX)
0378 
0379 #define RK3568_I2S3_MCLK_IE         HIWORD_UPDATE(0, 3, 3)
0380 #define RK3568_I2S3_MCLK_OE         HIWORD_UPDATE(1, 3, 3)
0381 #define RK3568_I2S2_MCLK_IE         HIWORD_UPDATE(0, 2, 2)
0382 #define RK3568_I2S2_MCLK_OE         HIWORD_UPDATE(1, 2, 2)
0383 #define RK3568_I2S1_MCLK_TX_IE          HIWORD_UPDATE(0, 1, 1)
0384 #define RK3568_I2S1_MCLK_TX_OE          HIWORD_UPDATE(1, 1, 1)
0385 #define RK3568_I2S1_MCLK_RX_IE          HIWORD_UPDATE(0, 0, 0)
0386 #define RK3568_I2S1_MCLK_RX_OE          HIWORD_UPDATE(1, 0, 0)
0387 
0388 /* RV1126 GRF CONFIGS */
0389 #define RV1126_I2S0_MCLK_OUT_SRC_FROM_TX    HIWORD_UPDATE(0, 9, 9)
0390 #define RV1126_I2S0_MCLK_OUT_SRC_FROM_RX    HIWORD_UPDATE(1, 9, 9)
0391 
0392 #define RV1126_I2S0_CLK_TXONLY \
0393     RV1126_I2S0_MCLK_OUT_SRC_FROM_TX
0394 
0395 #define RV1126_I2S0_CLK_RXONLY \
0396     RV1126_I2S0_MCLK_OUT_SRC_FROM_RX
0397 
0398 #endif /* _ROCKCHIP_I2S_TDM_H */