Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    1) /* SPDX-License-Identifier: GPL-2.0-only */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    3)  * Copyright (C) STMicroelectronics SA 2015
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    4)  * Authors: Arnaud Pouliquen <arnaud.pouliquen@st.com>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    5)  *          for STMicroelectronics.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    6)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    7) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    8) #ifndef __SND_ST_AUD_UNIPERIF_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    9) #define __SND_ST_AUD_UNIPERIF_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   10) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   11) #include <linux/regmap.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   12) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   13) #include <sound/dmaengine_pcm.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   14) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   15) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   16)  * Register access macros
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   17)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   18) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   19) #define GET_UNIPERIF_REG(ip, offset, shift, mask) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   20) 	((readl_relaxed(ip->base + offset) >> shift) & mask)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   21) #define SET_UNIPERIF_REG(ip, offset, shift, mask, value) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   22) 	writel_relaxed(((readl_relaxed(ip->base + offset) & \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   23) 	~(mask << shift)) | (((value) & mask) << shift)), ip->base + offset)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   24) #define SET_UNIPERIF_BIT_REG(ip, offset, shift, mask, value) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   25) 	writel_relaxed((((value) & mask) << shift), ip->base + offset)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   26) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   27) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   28)  * UNIPERIF_SOFT_RST reg
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   29)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   30) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   31) #define UNIPERIF_SOFT_RST_OFFSET(ip) 0x0000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   32) #define GET_UNIPERIF_SOFT_RST(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   33) 	((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   34) 		readl_relaxed(ip->base + UNIPERIF_SOFT_RST_OFFSET(ip)) : 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   35) #define SET_UNIPERIF_SOFT_RST(ip, value) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   36) 	writel_relaxed(value, ip->base + UNIPERIF_SOFT_RST_OFFSET(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   37) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   38) /* SOFT_RST */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   39) #define UNIPERIF_SOFT_RST_SOFT_RST_SHIFT(ip) 0x0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   40) #define UNIPERIF_SOFT_RST_SOFT_RST_MASK(ip) 0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   41) #define SET_UNIPERIF_SOFT_RST_SOFT_RST(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   42) 	SET_UNIPERIF_BIT_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   43) 		UNIPERIF_SOFT_RST_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   44) 		UNIPERIF_SOFT_RST_SOFT_RST_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   45) 		UNIPERIF_SOFT_RST_SOFT_RST_MASK(ip), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   46) #define GET_UNIPERIF_SOFT_RST_SOFT_RST(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   47) 	GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   48) 		UNIPERIF_SOFT_RST_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   49) 		UNIPERIF_SOFT_RST_SOFT_RST_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   50) 		UNIPERIF_SOFT_RST_SOFT_RST_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   51) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   52) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   53)  * UNIPERIF_FIFO_DATA reg
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   54)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   55) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   56) #define UNIPERIF_FIFO_DATA_OFFSET(ip) 0x0004
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   57) #define SET_UNIPERIF_DATA(ip, value) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   58) 	writel_relaxed(value, ip->base + UNIPERIF_FIFO_DATA_OFFSET(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   59) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   60) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   61)  * UNIPERIF_CHANNEL_STA_REGN reg
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   62)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   63) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   64) #define UNIPERIF_CHANNEL_STA_REGN(ip, n) (0x0060 + (4 * n))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   65) #define GET_UNIPERIF_CHANNEL_STA_REGN(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   66) 	readl_relaxed(ip->base + UNIPERIF_CHANNEL_STA_REGN(ip, n))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   67) #define SET_UNIPERIF_CHANNEL_STA_REGN(ip, n, value) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   68) 	writel_relaxed(value, ip->base + \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   69) 			UNIPERIF_CHANNEL_STA_REGN(ip, n))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   70) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   71) #define UNIPERIF_CHANNEL_STA_REG0_OFFSET(ip) 0x0060
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   72) #define GET_UNIPERIF_CHANNEL_STA_REG0(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   73) 	readl_relaxed(ip->base + UNIPERIF_CHANNEL_STA_REG0_OFFSET(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   74) #define SET_UNIPERIF_CHANNEL_STA_REG0(ip, value) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   75) 	writel_relaxed(value, ip->base + UNIPERIF_CHANNEL_STA_REG0_OFFSET(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   76) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   77) #define UNIPERIF_CHANNEL_STA_REG1_OFFSET(ip) 0x0064
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   78) #define GET_UNIPERIF_CHANNEL_STA_REG1(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   79) 	readl_relaxed(ip->base + UNIPERIF_CHANNEL_STA_REG1_OFFSET(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   80) #define SET_UNIPERIF_CHANNEL_STA_REG1(ip, value) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   81) 	writel_relaxed(value, ip->base + UNIPERIF_CHANNEL_STA_REG1_OFFSET(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   82) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   83) #define UNIPERIF_CHANNEL_STA_REG2_OFFSET(ip) 0x0068
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   84) #define GET_UNIPERIF_CHANNEL_STA_REG2(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   85) 	readl_relaxed(ip->base + UNIPERIF_CHANNEL_STA_REG2_OFFSET(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   86) #define SET_UNIPERIF_CHANNEL_STA_REG2(ip, value) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   87) 	writel_relaxed(value, ip->base + UNIPERIF_CHANNEL_STA_REG2_OFFSET(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   88) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   89) #define UNIPERIF_CHANNEL_STA_REG3_OFFSET(ip) 0x006C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   90) #define GET_UNIPERIF_CHANNEL_STA_REG3(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   91) 	readl_relaxed(ip->base + UNIPERIF_CHANNEL_STA_REG3_OFFSET(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   92) #define SET_UNIPERIF_CHANNEL_STA_REG3(ip, value) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   93) 	writel_relaxed(value, ip->base + UNIPERIF_CHANNEL_STA_REG3_OFFSET(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   94) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   95) #define UNIPERIF_CHANNEL_STA_REG4_OFFSET(ip) 0x0070
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   96) #define GET_UNIPERIF_CHANNEL_STA_REG4(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   97) 	readl_relaxed(ip->base + UNIPERIF_CHANNEL_STA_REG4_OFFSET(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   98) #define SET_UNIPERIF_CHANNEL_STA_REG4(ip, value) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   99) 	writel_relaxed(value, ip->base + UNIPERIF_CHANNEL_STA_REG4_OFFSET(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  100) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  101) #define UNIPERIF_CHANNEL_STA_REG5_OFFSET(ip) 0x0074
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  102) #define GET_UNIPERIF_CHANNEL_STA_REG5(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  103) 	readl_relaxed(ip->base + UNIPERIF_CHANNEL_STA_REG5_OFFSET(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  104) #define SET_UNIPERIF_CHANNEL_STA_REG5(ip, value) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  105) 	writel_relaxed(value, ip->base + UNIPERIF_CHANNEL_STA_REG5_OFFSET(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  106) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  107) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  108)  *  UNIPERIF_ITS reg
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  109)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  110) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  111) #define UNIPERIF_ITS_OFFSET(ip) 0x000C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  112) #define GET_UNIPERIF_ITS(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  113) 	readl_relaxed(ip->base + UNIPERIF_ITS_OFFSET(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  114) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  115) /* MEM_BLK_READ */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  116) #define UNIPERIF_ITS_MEM_BLK_READ_SHIFT(ip) 5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  117) #define UNIPERIF_ITS_MEM_BLK_READ_MASK(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  118) 	(BIT(UNIPERIF_ITS_MEM_BLK_READ_SHIFT(ip)))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  119) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  120) /* FIFO_ERROR */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  121) #define UNIPERIF_ITS_FIFO_ERROR_SHIFT(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  122) 	((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? 0 : 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  123) #define UNIPERIF_ITS_FIFO_ERROR_MASK(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  124) 	(BIT(UNIPERIF_ITS_FIFO_ERROR_SHIFT(ip)))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  125) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  126) /* DMA_ERROR */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  127) #define UNIPERIF_ITS_DMA_ERROR_SHIFT(ip) 9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  128) #define UNIPERIF_ITS_DMA_ERROR_MASK(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  129) 	(BIT(UNIPERIF_ITS_DMA_ERROR_SHIFT(ip)))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  130) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  131) /* UNDERFLOW_REC_DONE */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  132) #define UNIPERIF_ITS_UNDERFLOW_REC_DONE_SHIFT(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  133) 	((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? -1 : 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  134) #define UNIPERIF_ITS_UNDERFLOW_REC_DONE_MASK(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  135) 	((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  136) 		0 : (BIT(UNIPERIF_ITS_UNDERFLOW_REC_DONE_SHIFT(ip))))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  137) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  138) /* UNDERFLOW_REC_FAILED */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  139) #define UNIPERIF_ITS_UNDERFLOW_REC_FAILED_SHIFT(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  140) 	((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? -1 : 13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  141) #define UNIPERIF_ITS_UNDERFLOW_REC_FAILED_MASK(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  142) 	((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  143) 		0 : (BIT(UNIPERIF_ITS_UNDERFLOW_REC_FAILED_SHIFT(ip))))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  144) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  145) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  146)  *  UNIPERIF_ITS_BCLR reg
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  147)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  148) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  149) /* FIFO_ERROR */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  150) #define UNIPERIF_ITS_BCLR_FIFO_ERROR_SHIFT(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  151) 	((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? 0 : 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  152) #define UNIPERIF_ITS_BCLR_FIFO_ERROR_MASK(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  153) 	(BIT(UNIPERIF_ITS_BCLR_FIFO_ERROR_SHIFT(ip)))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  154) #define SET_UNIPERIF_ITS_BCLR_FIFO_ERROR(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  155) 	SET_UNIPERIF_ITS_BCLR(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  156) 		UNIPERIF_ITS_BCLR_FIFO_ERROR_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  157) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  158) #define UNIPERIF_ITS_BCLR_OFFSET(ip) 0x0010
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  159) #define SET_UNIPERIF_ITS_BCLR(ip, value) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  160) 	writel_relaxed(value, ip->base + UNIPERIF_ITS_BCLR_OFFSET(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  161) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  162) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  163)  *  UNIPERIF_ITM reg
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  164)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  165) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  166) #define UNIPERIF_ITM_OFFSET(ip) 0x0018
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  167) #define GET_UNIPERIF_ITM(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  168) 	readl_relaxed(ip->base + UNIPERIF_ITM_OFFSET(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  169) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  170) /* FIFO_ERROR */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  171) #define UNIPERIF_ITM_FIFO_ERROR_SHIFT(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  172) 	((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? 0 : 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  173) #define UNIPERIF_ITM_FIFO_ERROR_MASK(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  174) 	(BIT(UNIPERIF_ITM_FIFO_ERROR_SHIFT(ip)))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  175) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  176) /* UNDERFLOW_REC_DONE */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  177) #define UNIPERIF_ITM_UNDERFLOW_REC_DONE_SHIFT(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  178) 	((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? -1 : 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  179) #define UNIPERIF_ITM_UNDERFLOW_REC_DONE_MASK(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  180) 	((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  181) 		0 : (BIT(UNIPERIF_ITM_UNDERFLOW_REC_DONE_SHIFT(ip))))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  182) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  183) /* UNDERFLOW_REC_FAILED */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  184) #define UNIPERIF_ITM_UNDERFLOW_REC_FAILED_SHIFT(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  185) 	((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? -1 : 13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  186) #define UNIPERIF_ITM_UNDERFLOW_REC_FAILED_MASK(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  187) 	((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  188) 		0 : (BIT(UNIPERIF_ITM_UNDERFLOW_REC_FAILED_SHIFT(ip))))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  189) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  190) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  191)  *  UNIPERIF_ITM_BCLR reg
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  192)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  193) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  194) #define UNIPERIF_ITM_BCLR_OFFSET(ip) 0x001c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  195) #define SET_UNIPERIF_ITM_BCLR(ip, value) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  196) 	writel_relaxed(value, ip->base + UNIPERIF_ITM_BCLR_OFFSET(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  197) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  198) /* FIFO_ERROR */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  199) #define UNIPERIF_ITM_BCLR_FIFO_ERROR_SHIFT(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  200) 	((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? 0 : 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  201) #define UNIPERIF_ITM_BCLR_FIFO_ERROR_MASK(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  202) 	(BIT(UNIPERIF_ITM_BCLR_FIFO_ERROR_SHIFT(ip)))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  203) #define SET_UNIPERIF_ITM_BCLR_FIFO_ERROR(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  204) 	SET_UNIPERIF_ITM_BCLR(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  205) 		UNIPERIF_ITM_BCLR_FIFO_ERROR_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  206) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  207) /* DMA_ERROR */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  208) #define UNIPERIF_ITM_BCLR_DMA_ERROR_SHIFT(ip) 9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  209) #define UNIPERIF_ITM_BCLR_DMA_ERROR_MASK(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  210) 	(BIT(UNIPERIF_ITM_BCLR_DMA_ERROR_SHIFT(ip)))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  211) #define SET_UNIPERIF_ITM_BCLR_DMA_ERROR(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  212) 	SET_UNIPERIF_ITM_BCLR(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  213) 		UNIPERIF_ITM_BCLR_DMA_ERROR_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  214) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  215) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  216)  *  UNIPERIF_ITM_BSET reg
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  217)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  218) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  219) #define UNIPERIF_ITM_BSET_OFFSET(ip) 0x0020
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  220) #define SET_UNIPERIF_ITM_BSET(ip, value) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  221) 	writel_relaxed(value, ip->base + UNIPERIF_ITM_BSET_OFFSET(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  222) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  223) /* FIFO_ERROR */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  224) #define UNIPERIF_ITM_BSET_FIFO_ERROR_SHIFT(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  225) 	((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? 0 : 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  226) #define UNIPERIF_ITM_BSET_FIFO_ERROR_MASK(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  227) 	(BIT(UNIPERIF_ITM_BSET_FIFO_ERROR_SHIFT(ip)))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  228) #define SET_UNIPERIF_ITM_BSET_FIFO_ERROR(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  229) 	SET_UNIPERIF_ITM_BSET(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  230) 		UNIPERIF_ITM_BSET_FIFO_ERROR_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  231) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  232) /* MEM_BLK_READ */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  233) #define UNIPERIF_ITM_BSET_MEM_BLK_READ_SHIFT(ip) 5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  234) #define UNIPERIF_ITM_BSET_MEM_BLK_READ_MASK(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  235) 	(BIT(UNIPERIF_ITM_BSET_MEM_BLK_READ_SHIFT(ip)))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  236) #define SET_UNIPERIF_ITM_BSET_MEM_BLK_READ(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  237) 	SET_UNIPERIF_ITM_BSET(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  238) 		UNIPERIF_ITM_BSET_MEM_BLK_READ_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  239) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  240) /* DMA_ERROR */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  241) #define UNIPERIF_ITM_BSET_DMA_ERROR_SHIFT(ip) 9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  242) #define UNIPERIF_ITM_BSET_DMA_ERROR_MASK(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  243) 	(BIT(UNIPERIF_ITM_BSET_DMA_ERROR_SHIFT(ip)))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  244) #define SET_UNIPERIF_ITM_BSET_DMA_ERROR(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  245) 	SET_UNIPERIF_ITM_BSET(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  246) 		UNIPERIF_ITM_BSET_DMA_ERROR_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  247) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  248) /* UNDERFLOW_REC_DONE */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  249) #define UNIPERIF_ITM_BSET_UNDERFLOW_REC_DONE_SHIFT(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  250) 	((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? -1 : 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  251) #define UNIPERIF_ITM_BSET_UNDERFLOW_REC_DONE_MASK(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  252) 	((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  253) 		0 : (BIT(UNIPERIF_ITM_BSET_UNDERFLOW_REC_DONE_SHIFT(ip))))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  254) #define SET_UNIPERIF_ITM_BSET_UNDERFLOW_REC_DONE(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  255) 	SET_UNIPERIF_ITM_BSET(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  256) 		UNIPERIF_ITM_BSET_UNDERFLOW_REC_DONE_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  257) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  258) /* UNDERFLOW_REC_FAILED */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  259) #define UNIPERIF_ITM_BSET_UNDERFLOW_REC_FAILED_SHIFT(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  260) 	((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? -1 : 13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  261) #define UNIPERIF_ITM_BSET_UNDERFLOW_REC_FAILED_MASK(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  262) 	((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  263) 		0 : (BIT(UNIPERIF_ITM_BSET_UNDERFLOW_REC_FAILED_SHIFT(ip))))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  264) #define SET_UNIPERIF_ITM_BSET_UNDERFLOW_REC_FAILED(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  265) 	SET_UNIPERIF_ITM_BSET(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  266) 		UNIPERIF_ITM_BSET_UNDERFLOW_REC_FAILED_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  267) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  268) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  269)  * UNIPERIF_CONFIG reg
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  270)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  271) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  272) #define UNIPERIF_CONFIG_OFFSET(ip) 0x0040
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  273) #define GET_UNIPERIF_CONFIG(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  274) 	readl_relaxed(ip->base + UNIPERIF_CONFIG_OFFSET(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  275) #define SET_UNIPERIF_CONFIG(ip, value) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  276) 	writel_relaxed(value, ip->base + UNIPERIF_CONFIG_OFFSET(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  277) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  278) /* PARITY_CNTR */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  279) #define UNIPERIF_CONFIG_PARITY_CNTR_SHIFT(ip) 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  280) #define UNIPERIF_CONFIG_PARITY_CNTR_MASK(ip) 0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  281) #define GET_UNIPERIF_CONFIG_PARITY_CNTR(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  282) 	GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  283) 		UNIPERIF_CONFIG_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  284) 		UNIPERIF_CONFIG_PARITY_CNTR_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  285) 		UNIPERIF_CONFIG_PARITY_CNTR_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  286) #define SET_UNIPERIF_CONFIG_PARITY_CNTR_BY_HW(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  287) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  288) 		UNIPERIF_CONFIG_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  289) 		UNIPERIF_CONFIG_PARITY_CNTR_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  290) 		UNIPERIF_CONFIG_PARITY_CNTR_MASK(ip), 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  291) #define SET_UNIPERIF_CONFIG_PARITY_CNTR_BY_SW(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  292) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  293) 		UNIPERIF_CONFIG_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  294) 		UNIPERIF_CONFIG_PARITY_CNTR_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  295) 		UNIPERIF_CONFIG_PARITY_CNTR_MASK(ip), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  296) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  297) /* CHANNEL_STA_CNTR */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  298) #define UNIPERIF_CONFIG_CHANNEL_STA_CNTR_SHIFT(ip) 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  299) #define UNIPERIF_CONFIG_CHANNEL_STA_CNTR_MASK(ip) 0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  300) #define GET_UNIPERIF_CONFIG_CHANNEL_STA_CNTR(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  301) 	GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  302) 		UNIPERIF_CONFIG_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  303) 		UNIPERIF_CONFIG_CHANNEL_STA_CNTR_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  304) 		UNIPERIF_CONFIG_CHANNEL_STA_CNTR_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  305) #define SET_UNIPERIF_CONFIG_CHANNEL_STA_CNTR_BY_SW(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  306) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  307) 		UNIPERIF_CONFIG_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  308) 		UNIPERIF_CONFIG_CHANNEL_STA_CNTR_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  309) 		UNIPERIF_CONFIG_CHANNEL_STA_CNTR_MASK(ip), 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  310) #define SET_UNIPERIF_CONFIG_CHANNEL_STA_CNTR_BY_HW(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  311) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  312) 		UNIPERIF_CONFIG_OFFSET(ip),    \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  313) 		UNIPERIF_CONFIG_CHANNEL_STA_CNTR_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  314) 		UNIPERIF_CONFIG_CHANNEL_STA_CNTR_MASK(ip), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  315) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  316) /* USER_DAT_CNTR */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  317) #define UNIPERIF_CONFIG_USER_DAT_CNTR_SHIFT(ip) 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  318) #define UNIPERIF_CONFIG_USER_DAT_CNTR_MASK(ip) 0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  319) #define GET_UNIPERIF_CONFIG_USER_DAT_CNTR(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  320) 	GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  321) 		UNIPERIF_CONFIG_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  322) 		UNIPERIF_CONFIG_USER_DAT_CNTR_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  323) 		UNIPERIF_CONFIG_USER_DAT_CNTR_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  324) #define SET_UNIPERIF_CONFIG_USER_DAT_CNTR_BY_HW(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  325) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  326) 		UNIPERIF_CONFIG_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  327) 		UNIPERIF_CONFIG_USER_DAT_CNTR_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  328) 		UNIPERIF_CONFIG_USER_DAT_CNTR_MASK(ip), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  329) #define SET_UNIPERIF_CONFIG_USER_DAT_CNTR_BY_SW(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  330) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  331) 		UNIPERIF_CONFIG_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  332) 		UNIPERIF_CONFIG_USER_DAT_CNTR_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  333) 		UNIPERIF_CONFIG_USER_DAT_CNTR_MASK(ip), 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  334) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  335) /* VALIDITY_DAT_CNTR */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  336) #define UNIPERIF_CONFIG_VALIDITY_DAT_CNTR_SHIFT(ip) 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  337) #define UNIPERIF_CONFIG_VALIDITY_DAT_CNTR_MASK(ip) 0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  338) #define GET_UNIPERIF_CONFIG_VALIDITY_DAT_CNTR(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  339) 	GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  340) 		UNIPERIF_CONFIG_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  341) 		UNIPERIF_CONFIG_VALIDITY_DAT_CNTR_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  342) 		UNIPERIF_CONFIG_VALIDITY_DAT_CNTR_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  343) #define SET_UNIPERIF_CONFIG_VALIDITY_DAT_CNTR_BY_SW(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  344) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  345) 		UNIPERIF_CONFIG_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  346) 		UNIPERIF_CONFIG_VALIDITY_DAT_CNTR_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  347) 		UNIPERIF_CONFIG_VALIDITY_DAT_CNTR_MASK(ip), 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  348) #define SET_UNIPERIF_CONFIG_VALIDITY_DAT_CNTR_BY_HW(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  349) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  350) 		UNIPERIF_CONFIG_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  351) 		UNIPERIF_CONFIG_VALIDITY_DAT_CNTR_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  352) 		UNIPERIF_CONFIG_VALIDITY_DAT_CNTR_MASK(ip), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  353) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  354) /* ONE_BIT_AUD_SUPPORT */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  355) #define UNIPERIF_CONFIG_ONE_BIT_AUD_SHIFT(ip) 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  356) #define UNIPERIF_CONFIG_ONE_BIT_AUD_MASK(ip) 0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  357) #define GET_UNIPERIF_CONFIG_ONE_BIT_AUD(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  358) 	GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  359) 		UNIPERIF_CONFIG_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  360) 		UNIPERIF_CONFIG_ONE_BIT_AUD_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  361) 		UNIPERIF_CONFIG_ONE_BIT_AUD_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  362) #define SET_UNIPERIF_CONFIG_ONE_BIT_AUD_DISABLE(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  363) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  364) 		UNIPERIF_CONFIG_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  365) 		UNIPERIF_CONFIG_ONE_BIT_AUD_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  366) 		UNIPERIF_CONFIG_ONE_BIT_AUD_MASK(ip), 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  367) #define SET_UNIPERIF_CONFIG_ONE_BIT_AUD_ENABLE(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  368) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  369) 		UNIPERIF_CONFIG_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  370) 		UNIPERIF_CONFIG_ONE_BIT_AUD_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  371) 		UNIPERIF_CONFIG_ONE_BIT_AUD_MASK(ip), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  372) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  373) /* MEMORY_FMT */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  374) #define UNIPERIF_CONFIG_MEM_FMT_SHIFT(ip) 5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  375) #define UNIPERIF_CONFIG_MEM_FMT_MASK(ip) 0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  376) #define VALUE_UNIPERIF_CONFIG_MEM_FMT_16_0(ip) 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  377) #define VALUE_UNIPERIF_CONFIG_MEM_FMT_16_16(ip) 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  378) #define GET_UNIPERIF_CONFIG_MEM_FMT(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  379) 	GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  380) 		UNIPERIF_CONFIG_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  381) 		UNIPERIF_CONFIG_MEM_FMT_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  382) 		UNIPERIF_CONFIG_MEM_FMT_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  383) #define SET_UNIPERIF_CONFIG_MEM_FMT(ip, value)	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  384) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  385) 		UNIPERIF_CONFIG_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  386) 		UNIPERIF_CONFIG_MEM_FMT_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  387) 		UNIPERIF_CONFIG_MEM_FMT_MASK(ip), value)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  388) #define SET_UNIPERIF_CONFIG_MEM_FMT_16_0(ip)   \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  389) 	SET_UNIPERIF_CONFIG_MEM_FMT(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  390) 		VALUE_UNIPERIF_CONFIG_MEM_FMT_16_0(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  391) #define SET_UNIPERIF_CONFIG_MEM_FMT_16_16(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  392) 	SET_UNIPERIF_CONFIG_MEM_FMT(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  393) 		VALUE_UNIPERIF_CONFIG_MEM_FMT_16_16(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  394) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  395) /* REPEAT_CHL_STS */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  396) #define UNIPERIF_CONFIG_REPEAT_CHL_STS_SHIFT(ip) 6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  397) #define UNIPERIF_CONFIG_REPEAT_CHL_STS_MASK(ip) 0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  398) #define GET_UNIPERIF_CONFIG_REPEAT_CHL_STS(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  399) 	GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  400) 		UNIPERIF_CONFIG_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  401) 		UNIPERIF_CONFIG_REPEAT_CHL_STS_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  402) 		UNIPERIF_CONFIG_REPEAT_CHL_STS_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  403) #define SET_UNIPERIF_CONFIG_REPEAT_CHL_STS_ENABLE(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  404) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  405) 		UNIPERIF_CONFIG_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  406) 		UNIPERIF_CONFIG_REPEAT_CHL_STS_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  407) 		UNIPERIF_CONFIG_REPEAT_CHL_STS_MASK(ip), 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  408) #define SET_UNIPERIF_CONFIG_REPEAT_CHL_STS_DISABLE(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  409) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  410) 		UNIPERIF_CONFIG_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  411) 		UNIPERIF_CONFIG_REPEAT_CHL_STS_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  412) 		UNIPERIF_CONFIG_REPEAT_CHL_STS_MASK(ip), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  413) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  414) /* BACK_STALL_REQ */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  415) #define UNIPERIF_CONFIG_BACK_STALL_REQ_SHIFT(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  416) 	((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? 7 : -1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  417) #define UNIPERIF_CONFIG_BACK_STALL_REQ_MASK(ip) 0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  418) #define GET_UNIPERIF_CONFIG_BACK_STALL_REQ(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  419) 	GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  420) 		UNIPERIF_CONFIG_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  421) 		UNIPERIF_CONFIG_BACK_STALL_REQ_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  422) 		UNIPERIF_CONFIG_BACK_STALL_REQ_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  423) #define SET_UNIPERIF_CONFIG_BACK_STALL_REQ_DISABLE(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  424) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  425) 		UNIPERIF_CONFIG_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  426) 		UNIPERIF_CONFIG_BACK_STALL_REQ_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  427) 		UNIPERIF_CONFIG_BACK_STALL_REQ_MASK(ip), 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  428) #define SET_UNIPERIF_CONFIG_BACK_STALL_REQ_ENABLE(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  429) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  430) 		UNIPERIF_CONFIG_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  431) 		UNIPERIF_CONFIG_BACK_STALL_REQ_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  432) 		UNIPERIF_CONFIG_BACK_STALL_REQ_MASK(ip), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  433) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  434) /* FDMA_TRIGGER_LIMIT */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  435) #define UNIPERIF_CONFIG_DMA_TRIG_LIMIT_SHIFT(ip) 8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  436) #define UNIPERIF_CONFIG_DMA_TRIG_LIMIT_MASK(ip) 0x7F
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  437) #define GET_UNIPERIF_CONFIG_DMA_TRIG_LIMIT(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  438) 	GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  439) 		UNIPERIF_CONFIG_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  440) 		UNIPERIF_CONFIG_DMA_TRIG_LIMIT_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  441) 		UNIPERIF_CONFIG_DMA_TRIG_LIMIT_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  442) #define SET_UNIPERIF_CONFIG_DMA_TRIG_LIMIT(ip, value) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  443) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  444) 		UNIPERIF_CONFIG_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  445) 		UNIPERIF_CONFIG_DMA_TRIG_LIMIT_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  446) 		UNIPERIF_CONFIG_DMA_TRIG_LIMIT_MASK(ip), value)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  447) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  448) /* CHL_STS_UPDATE */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  449) #define UNIPERIF_CONFIG_CHL_STS_UPDATE_SHIFT(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  450) 	((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? 16 : -1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  451) #define UNIPERIF_CONFIG_CHL_STS_UPDATE_MASK(ip) 0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  452) #define GET_UNIPERIF_CONFIG_CHL_STS_UPDATE(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  453) 	GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  454) 		UNIPERIF_CONFIG_OFFSET(ip),  \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  455) 		UNIPERIF_CONFIG_CHL_STS_UPDATE_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  456) 		UNIPERIF_CONFIG_CHL_STS_UPDATE_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  457) #define SET_UNIPERIF_CONFIG_CHL_STS_UPDATE(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  458) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  459) 		UNIPERIF_CONFIG_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  460) 		UNIPERIF_CONFIG_CHL_STS_UPDATE_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  461) 		UNIPERIF_CONFIG_CHL_STS_UPDATE_MASK(ip), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  462) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  463) /* IDLE_MOD */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  464) #define UNIPERIF_CONFIG_IDLE_MOD_SHIFT(ip) 18
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  465) #define UNIPERIF_CONFIG_IDLE_MOD_MASK(ip) 0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  466) #define GET_UNIPERIF_CONFIG_IDLE_MOD(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  467) 	GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  468) 		UNIPERIF_CONFIG_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  469) 		UNIPERIF_CONFIG_IDLE_MOD_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  470) 		UNIPERIF_CONFIG_IDLE_MOD_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  471) #define SET_UNIPERIF_CONFIG_IDLE_MOD_DISABLE(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  472) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  473) 		UNIPERIF_CONFIG_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  474) 		UNIPERIF_CONFIG_IDLE_MOD_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  475) 		UNIPERIF_CONFIG_IDLE_MOD_MASK(ip), 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  476) #define SET_UNIPERIF_CONFIG_IDLE_MOD_ENABLE(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  477) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  478) 		UNIPERIF_CONFIG_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  479) 		UNIPERIF_CONFIG_IDLE_MOD_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  480) 		UNIPERIF_CONFIG_IDLE_MOD_MASK(ip), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  481) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  482) /* SUBFRAME_SELECTION */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  483) #define UNIPERIF_CONFIG_SUBFRAME_SEL_SHIFT(ip) 19
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  484) #define UNIPERIF_CONFIG_SUBFRAME_SEL_MASK(ip) 0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  485) #define GET_UNIPERIF_CONFIG_SUBFRAME_SEL(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  486) 	GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  487) 		UNIPERIF_CONFIG_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  488) 		UNIPERIF_CONFIG_SUBFRAME_SEL_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  489) 		UNIPERIF_CONFIG_SUBFRAME_SEL_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  490) #define SET_UNIPERIF_CONFIG_SUBFRAME_SEL_SUBF1_SUBF0(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  491) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  492) 		UNIPERIF_CONFIG_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  493) 		UNIPERIF_CONFIG_SUBFRAME_SEL_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  494) 		UNIPERIF_CONFIG_SUBFRAME_SEL_MASK(ip), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  495) #define SET_UNIPERIF_CONFIG_SUBFRAME_SEL_SUBF0_SUBF1(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  496) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  497) 		UNIPERIF_CONFIG_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  498) 		UNIPERIF_CONFIG_SUBFRAME_SEL_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  499) 		UNIPERIF_CONFIG_SUBFRAME_SEL_MASK(ip), 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  500) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  501) /* FULL_SW_CONTROL */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  502) #define UNIPERIF_CONFIG_SPDIF_SW_CTRL_SHIFT(ip) 20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  503) #define UNIPERIF_CONFIG_SPDIF_SW_CTRL_MASK(ip) 0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  504) #define GET_UNIPERIF_CONFIG_SPDIF_SW_CTRL(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  505) 	GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  506) 		UNIPERIF_CONFIG_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  507) 		UNIPERIF_CONFIG_SPDIF_SW_CTRL_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  508) 		UNIPERIF_CONFIG_SPDIF_SW_CTRL_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  509) #define SET_UNIPERIF_CONFIG_SPDIF_SW_CTRL_ENABLE(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  510) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  511) 		UNIPERIF_CONFIG_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  512) 		UNIPERIF_CONFIG_SPDIF_SW_CTRL_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  513) 		UNIPERIF_CONFIG_SPDIF_SW_CTRL_MASK(ip), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  514) #define SET_UNIPERIF_CONFIG_SPDIF_SW_CTRL_DISABLE(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  515) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  516) 		UNIPERIF_CONFIG_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  517) 		UNIPERIF_CONFIG_SPDIF_SW_CTRL_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  518) 		UNIPERIF_CONFIG_SPDIF_SW_CTRL_MASK(ip), 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  519) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  520) /* MASTER_CLKEDGE */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  521) #define UNIPERIF_CONFIG_MSTR_CLKEDGE_SHIFT(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  522) 	((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? 24 : -1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  523) #define UNIPERIF_CONFIG_MSTR_CLKEDGE_MASK(ip) 0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  524) #define GET_UNIPERIF_CONFIG_MSTR_CLKEDGE(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  525) 	GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  526) 		UNIPERIF_CONFIG_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  527) 		UNIPERIF_CONFIG_MSTR_CLKEDGE_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  528) 		UNIPERIF_CONFIG_MSTR_CLKEDGE_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  529) #define SET_UNIPERIF_CONFIG_MSTR_CLKEDGE_FALLING(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  530) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  531) 		UNIPERIF_CONFIG_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  532) 		UNIPERIF_CONFIG_MSTR_CLKEDGE_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  533) 		UNIPERIF_CONFIG_MSTR_CLKEDGE_MASK(ip), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  534) #define SET_UNIPERIF_CONFIG_MSTR_CLKEDGE_RISING(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  535) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  536) 		UNIPERIF_CONFIG_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  537) 		UNIPERIF_CONFIG_MSTR_CLKEDGE_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  538) 		UNIPERIF_CONFIG_MSTR_CLKEDGE_MASK(ip), 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  539) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  540) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  541)  * UNIPERIF_CTRL reg
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  542)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  543) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  544) #define UNIPERIF_CTRL_OFFSET(ip) 0x0044
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  545) #define GET_UNIPERIF_CTRL(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  546) 	readl_relaxed(ip->base + UNIPERIF_CTRL_OFFSET(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  547) #define SET_UNIPERIF_CTRL(ip, value) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  548) 	writel_relaxed(value, ip->base + UNIPERIF_CTRL_OFFSET(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  549) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  550) /* OPERATION */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  551) #define UNIPERIF_CTRL_OPERATION_SHIFT(ip) 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  552) #define UNIPERIF_CTRL_OPERATION_MASK(ip) 0x7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  553) #define GET_UNIPERIF_CTRL_OPERATION(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  554) 	GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  555) 		UNIPERIF_CTRL_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  556) 		UNIPERIF_CTRL_OPERATION_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  557) 		UNIPERIF_CTRL_OPERATION_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  558) #define VALUE_UNIPERIF_CTRL_OPERATION_OFF(ip) 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  559) #define SET_UNIPERIF_CTRL_OPERATION_OFF(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  560) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  561) 		UNIPERIF_CTRL_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  562) 		UNIPERIF_CTRL_OPERATION_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  563) 		UNIPERIF_CTRL_OPERATION_MASK(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  564) 		VALUE_UNIPERIF_CTRL_OPERATION_OFF(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  565) #define VALUE_UNIPERIF_CTRL_OPERATION_MUTE_PCM_NULL(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  566) 	((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? 1 : -1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  567) #define SET_UNIPERIF_CTRL_OPERATION_MUTE_PCM_NULL(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  568) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  569) 		UNIPERIF_CTRL_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  570) 		UNIPERIF_CTRL_OPERATION_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  571) 		UNIPERIF_CTRL_OPERATION_MASK(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  572) 		VALUE_UNIPERIF_CTRL_OPERATION_MUTE_PCM_NULL(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  573) #define VALUE_UNIPERIF_CTRL_OPERATION_MUTE_PAUSE_BURST(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  574) 	((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? 2 : -1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  575) #define SET_UNIPERIF_CTRL_OPERATION_MUTE_PAUSE_BURST(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  576) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  577) 		UNIPERIF_CTRL_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  578) 		UNIPERIF_CTRL_OPERATION_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  579) 		UNIPERIF_CTRL_OPERATION_MASK(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  580) 		VALUE_UNIPERIF_CTRL_OPERATION_MUTE_PAUSE_BURST(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  581) #define VALUE_UNIPERIF_CTRL_OPERATION_PCM_DATA(ip) 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  582) #define SET_UNIPERIF_CTRL_OPERATION_PCM_DATA(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  583) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  584) 		UNIPERIF_CTRL_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  585) 		UNIPERIF_CTRL_OPERATION_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  586) 		UNIPERIF_CTRL_OPERATION_MASK(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  587) 		VALUE_UNIPERIF_CTRL_OPERATION_PCM_DATA(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  588) /* This is the same as above! */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  589) #define VALUE_UNIPERIF_CTRL_OPERATION_AUDIO_DATA(ip) 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  590) #define SET_UNIPERIF_CTRL_OPERATION_AUDIO_DATA(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  591) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  592) 		UNIPERIF_CTRL_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  593) 		UNIPERIF_CTRL_OPERATION_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  594) 		UNIPERIF_CTRL_OPERATION_MASK(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  595) 		VALUE_UNIPERIF_CTRL_OPERATION_AUDIO_DATA(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  596) #define VALUE_UNIPERIF_CTRL_OPERATION_ENC_DATA(ip) 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  597) #define SET_UNIPERIF_CTRL_OPERATION_ENC_DATA(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  598) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  599) 		UNIPERIF_CTRL_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  600) 		UNIPERIF_CTRL_OPERATION_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  601) 		UNIPERIF_CTRL_OPERATION_MASK(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  602) 		VALUE_UNIPERIF_CTRL_OPERATION_ENC_DATA(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  603) #define VALUE_UNIPERIF_CTRL_OPERATION_CD_DATA(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  604) 	((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? 5 : -1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  605) #define SET_UNIPERIF_CTRL_OPERATION_CD_DATA(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  606) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  607) 		UNIPERIF_CTRL_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  608) 		UNIPERIF_CTRL_OPERATION_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  609) 		UNIPERIF_CTRL_OPERATION_MASK(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  610) 		VALUE_UNIPERIF_CTRL_OPERATION_CD_DATA(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  611) #define VALUE_UNIPERIF_CTRL_OPERATION_STANDBY(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  612) 	((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? -1 : 7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  613) #define SET_UNIPERIF_CTRL_OPERATION_STANDBY(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  614) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  615) 		UNIPERIF_CTRL_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  616) 		UNIPERIF_CTRL_OPERATION_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  617) 		UNIPERIF_CTRL_OPERATION_MASK(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  618) 		VALUE_UNIPERIF_CTRL_OPERATION_STANDBY(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  619) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  620) /* EXIT_STBY_ON_EOBLOCK */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  621) #define UNIPERIF_CTRL_EXIT_STBY_ON_EOBLOCK_SHIFT(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  622) 	((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? -1 : 3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  623) #define UNIPERIF_CTRL_EXIT_STBY_ON_EOBLOCK_MASK(ip) 0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  624) #define GET_UNIPERIF_CTRL_EXIT_STBY_ON_EOBLOCK(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  625) 	GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  626) 		UNIPERIF_CTRL_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  627) 		UNIPERIF_CTRL_EXIT_STBY_ON_EOBLOCK_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  628) 		UNIPERIF_CTRL_EXIT_STBY_ON_EOBLOCK_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  629) #define SET_UNIPERIF_CTRL_EXIT_STBY_ON_EOBLOCK_OFF(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  630) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  631) 		UNIPERIF_CTRL_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  632) 		UNIPERIF_CTRL_EXIT_STBY_ON_EOBLOCK_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  633) 		UNIPERIF_CTRL_EXIT_STBY_ON_EOBLOCK_MASK(ip), 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  634) #define SET_UNIPERIF_CTRL_EXIT_STBY_ON_EOBLOCK_ON(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  635) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  636) 		UNIPERIF_CTRL_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  637) 		UNIPERIF_CTRL_EXIT_STBY_ON_EOBLOCK_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  638) 		UNIPERIF_CTRL_EXIT_STBY_ON_EOBLOCK_MASK(ip), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  639) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  640) /* ROUNDING */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  641) #define UNIPERIF_CTRL_ROUNDING_SHIFT(ip) 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  642) #define UNIPERIF_CTRL_ROUNDING_MASK(ip) 0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  643) #define GET_UNIPERIF_CTRL_ROUNDING(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  644) 	GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  645) 		UNIPERIF_CTRL_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  646) 		UNIPERIF_CTRL_ROUNDING_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  647) 		UNIPERIF_CTRL_ROUNDING_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  648) #define SET_UNIPERIF_CTRL_ROUNDING_OFF(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  649) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  650) 		UNIPERIF_CTRL_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  651) 		UNIPERIF_CTRL_ROUNDING_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  652) 		UNIPERIF_CTRL_ROUNDING_MASK(ip), 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  653) #define SET_UNIPERIF_CTRL_ROUNDING_ON(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  654) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  655) 		UNIPERIF_CTRL_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  656) 		UNIPERIF_CTRL_ROUNDING_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  657) 		UNIPERIF_CTRL_ROUNDING_MASK(ip), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  658) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  659) /* DIVIDER */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  660) #define UNIPERIF_CTRL_DIVIDER_SHIFT(ip) 5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  661) #define UNIPERIF_CTRL_DIVIDER_MASK(ip) 0xff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  662) #define GET_UNIPERIF_CTRL_DIVIDER(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  663) 	GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  664) 		UNIPERIF_CTRL_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  665) 		UNIPERIF_CTRL_DIVIDER_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  666) 		UNIPERIF_CTRL_DIVIDER_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  667) #define SET_UNIPERIF_CTRL_DIVIDER(ip, value) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  668) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  669) 		UNIPERIF_CTRL_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  670) 		UNIPERIF_CTRL_DIVIDER_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  671) 		UNIPERIF_CTRL_DIVIDER_MASK(ip), value)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  672) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  673) /* BYTE_SWAP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  674) #define UNIPERIF_CTRL_BYTE_SWP_SHIFT(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  675) 	((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? 13 : -1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  676) #define UNIPERIF_CTRL_BYTE_SWP_MASK(ip) 0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  677) #define GET_UNIPERIF_CTRL_BYTE_SWP(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  678) 	GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  679) 		UNIPERIF_CTRL_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  680) 		UNIPERIF_CTRL_BYTE_SWP_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  681) 		UNIPERIF_CTRL_BYTE_SWP_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  682) #define SET_UNIPERIF_CTRL_BYTE_SWP_OFF(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  683) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  684) 		UNIPERIF_CTRL_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  685) 		UNIPERIF_CTRL_BYTE_SWP_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  686) 		UNIPERIF_CTRL_BYTE_SWP_MASK(ip), 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  687) #define SET_UNIPERIF_CTRL_BYTE_SWP_ON(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  688) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  689) 		UNIPERIF_CTRL_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  690) 		UNIPERIF_CTRL_BYTE_SWP_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  691) 		UNIPERIF_CTRL_BYTE_SWP_MASK(ip), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  692) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  693) /* ZERO_STUFFING_HW_SW */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  694) #define UNIPERIF_CTRL_ZERO_STUFF_SHIFT(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  695) 	((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? 14 : -1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  696) #define UNIPERIF_CTRL_ZERO_STUFF_MASK(ip) 0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  697) #define GET_UNIPERIF_CTRL_ZERO_STUFF(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  698) 	GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  699) 		UNIPERIF_CTRL_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  700) 		UNIPERIF_CTRL_ZERO_STUFF_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  701) 		UNIPERIF_CTRL_ZERO_STUFF_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  702) #define SET_UNIPERIF_CTRL_ZERO_STUFF_HW(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  703) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  704) 		UNIPERIF_CTRL_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  705) 		UNIPERIF_CTRL_ZERO_STUFF_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  706) 		UNIPERIF_CTRL_ZERO_STUFF_MASK(ip), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  707) #define SET_UNIPERIF_CTRL_ZERO_STUFF_SW(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  708) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  709) 		UNIPERIF_CTRL_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  710) 		UNIPERIF_CTRL_ZERO_STUFF_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  711) 		UNIPERIF_CTRL_ZERO_STUFF_MASK(ip), 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  712) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  713) /* SPDIF_LAT */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  714) #define UNIPERIF_CTRL_SPDIF_LAT_SHIFT(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  715) 	((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? 16 : -1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  716) #define UNIPERIF_CTRL_SPDIF_LAT_MASK(ip) 0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  717) #define GET_UNIPERIF_CTRL_SPDIF_LAT(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  718) 	GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  719) 		UNIPERIF_CTRL_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  720) 		UNIPERIF_CTRL_SPDIF_LAT_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  721) 		UNIPERIF_CTRL_SPDIF_LAT_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  722) #define SET_UNIPERIF_CTRL_SPDIF_LAT_ON(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  723) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  724) 		UNIPERIF_CTRL_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  725) 		UNIPERIF_CTRL_SPDIF_LAT_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  726) 		UNIPERIF_CTRL_SPDIF_LAT_MASK(ip), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  727) #define SET_UNIPERIF_CTRL_SPDIF_LAT_OFF(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  728) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  729) 		UNIPERIF_CTRL_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  730) 		UNIPERIF_CTRL_SPDIF_LAT_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  731) 		UNIPERIF_CTRL_SPDIF_LAT_MASK(ip), 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  732) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  733) /* EN_SPDIF_FORMATTING */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  734) #define UNIPERIF_CTRL_SPDIF_FMT_SHIFT(ip) 17
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  735) #define UNIPERIF_CTRL_SPDIF_FMT_MASK(ip) 0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  736) #define GET_UNIPERIF_CTRL_SPDIF_FMT(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  737) 	GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  738) 		UNIPERIF_CTRL_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  739) 		UNIPERIF_CTRL_SPDIF_FMT_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  740) 		UNIPERIF_CTRL_SPDIF_FMT_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  741) #define SET_UNIPERIF_CTRL_SPDIF_FMT_ON(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  742) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  743) 		UNIPERIF_CTRL_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  744) 		UNIPERIF_CTRL_SPDIF_FMT_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  745) 		UNIPERIF_CTRL_SPDIF_FMT_MASK(ip), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  746) #define SET_UNIPERIF_CTRL_SPDIF_FMT_OFF(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  747) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  748) 		UNIPERIF_CTRL_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  749) 		UNIPERIF_CTRL_SPDIF_FMT_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  750) 		UNIPERIF_CTRL_SPDIF_FMT_MASK(ip), 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  751) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  752) /* READER_OUT_SELECT */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  753) #define UNIPERIF_CTRL_READER_OUT_SEL_SHIFT(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  754) 	((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? 18 : -1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  755) #define UNIPERIF_CTRL_READER_OUT_SEL_MASK(ip) 0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  756) #define GET_UNIPERIF_CTRL_READER_OUT_SEL(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  757) 	GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  758) 		UNIPERIF_CTRL_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  759) 		UNIPERIF_CTRL_READER_OUT_SEL_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  760) 		UNIPERIF_CTRL_READER_OUT_SEL_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  761) #define SET_UNIPERIF_CTRL_READER_OUT_SEL_IN_MEM(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  762) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  763) 		UNIPERIF_CTRL_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  764) 		UNIPERIF_CTRL_READER_OUT_SEL_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  765) 		UNIPERIF_CTRL_READER_OUT_SEL_MASK(ip), 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  766) #define SET_UNIPERIF_CTRL_READER_OUT_SEL_ON_I2S_LINE(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  767) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  768) 		UNIPERIF_CTRL_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  769) 		UNIPERIF_CTRL_READER_OUT_SEL_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  770) 		UNIPERIF_CTRL_READER_OUT_SEL_MASK(ip), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  771) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  772) /* UNDERFLOW_REC_WINDOW */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  773) #define UNIPERIF_CTRL_UNDERFLOW_REC_WINDOW_SHIFT(ip) 20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  774) #define UNIPERIF_CTRL_UNDERFLOW_REC_WINDOW_MASK(ip) 0xff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  775) #define GET_UNIPERIF_CTRL_UNDERFLOW_REC_WINDOW(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  776) 	GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  777) 		UNIPERIF_CTRL_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  778) 		UNIPERIF_CTRL_UNDERFLOW_REC_WINDOW_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  779) 		UNIPERIF_CTRL_UNDERFLOW_REC_WINDOW_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  780) #define SET_UNIPERIF_CTRL_UNDERFLOW_REC_WINDOW(ip, value) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  781) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  782) 		UNIPERIF_CTRL_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  783) 		UNIPERIF_CTRL_UNDERFLOW_REC_WINDOW_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  784) 		UNIPERIF_CTRL_UNDERFLOW_REC_WINDOW_MASK(ip), value)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  785) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  786) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  787)  * UNIPERIF_I2S_FMT a.k.a UNIPERIF_FORMAT reg
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  788)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  789) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  790) #define UNIPERIF_I2S_FMT_OFFSET(ip) 0x0048
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  791) #define GET_UNIPERIF_I2S_FMT(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  792) 	readl_relaxed(ip->base + UNIPERIF_I2S_FMT_OFFSET(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  793) #define SET_UNIPERIF_I2S_FMT(ip, value) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  794) 	writel_relaxed(value, ip->base + UNIPERIF_I2S_FMT_OFFSET(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  795) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  796) /* NBIT */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  797) #define UNIPERIF_I2S_FMT_NBIT_SHIFT(ip) 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  798) #define UNIPERIF_I2S_FMT_NBIT_MASK(ip) 0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  799) #define GET_UNIPERIF_I2S_FMT_NBIT(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  800) 	GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  801) 		UNIPERIF_I2S_FMT_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  802) 		UNIPERIF_I2S_FMT_NBIT_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  803) 		UNIPERIF_I2S_FMT_NBIT_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  804) #define SET_UNIPERIF_I2S_FMT_NBIT_32(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  805) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  806) 		UNIPERIF_I2S_FMT_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  807) 		UNIPERIF_I2S_FMT_NBIT_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  808) 		UNIPERIF_I2S_FMT_NBIT_MASK(ip), 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  809) #define SET_UNIPERIF_I2S_FMT_NBIT_16(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  810) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  811) 		UNIPERIF_I2S_FMT_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  812) 		UNIPERIF_I2S_FMT_NBIT_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  813) 		UNIPERIF_I2S_FMT_NBIT_MASK(ip), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  814) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  815) /* DATA_SIZE */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  816) #define UNIPERIF_I2S_FMT_DATA_SIZE_SHIFT(ip) 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  817) #define UNIPERIF_I2S_FMT_DATA_SIZE_MASK(ip) 0x7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  818) #define GET_UNIPERIF_I2S_FMT_DATA_SIZE(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  819) 	GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  820) 		UNIPERIF_I2S_FMT_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  821) 		UNIPERIF_I2S_FMT_DATA_SIZE_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  822) 		UNIPERIF_I2S_FMT_DATA_SIZE_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  823) #define SET_UNIPERIF_I2S_FMT_DATA_SIZE_16(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  824) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  825) 		UNIPERIF_I2S_FMT_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  826) 		UNIPERIF_I2S_FMT_DATA_SIZE_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  827) 		UNIPERIF_I2S_FMT_DATA_SIZE_MASK(ip), 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  828) #define SET_UNIPERIF_I2S_FMT_DATA_SIZE_18(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  829) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  830) 		UNIPERIF_I2S_FMT_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  831) 		UNIPERIF_I2S_FMT_DATA_SIZE_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  832) 		UNIPERIF_I2S_FMT_DATA_SIZE_MASK(ip), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  833) #define SET_UNIPERIF_I2S_FMT_DATA_SIZE_20(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  834) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  835) 		UNIPERIF_I2S_FMT_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  836) 		UNIPERIF_I2S_FMT_DATA_SIZE_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  837) 		UNIPERIF_I2S_FMT_DATA_SIZE_MASK(ip), 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  838) #define SET_UNIPERIF_I2S_FMT_DATA_SIZE_24(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  839) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  840) 		UNIPERIF_I2S_FMT_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  841) 		UNIPERIF_I2S_FMT_DATA_SIZE_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  842) 		UNIPERIF_I2S_FMT_DATA_SIZE_MASK(ip), 3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  843) #define SET_UNIPERIF_I2S_FMTL_DATA_SIZE_28(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  844) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  845) 		UNIPERIF_I2S_FMT_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  846) 		UNIPERIF_I2S_FMT_DATA_SIZE_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  847) 		UNIPERIF_I2S_FMT_DATA_SIZE_MASK(ip), 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  848) #define SET_UNIPERIF_I2S_FMT_DATA_SIZE_32(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  849) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  850) 		UNIPERIF_I2S_FMT_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  851) 		UNIPERIF_I2S_FMT_DATA_SIZE_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  852) 		UNIPERIF_I2S_FMT_DATA_SIZE_MASK(ip), 5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  853) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  854) /* LR_POL */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  855) #define UNIPERIF_I2S_FMT_LR_POL_SHIFT(ip) 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  856) #define UNIPERIF_I2S_FMT_LR_POL_MASK(ip) 0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  857) #define VALUE_UNIPERIF_I2S_FMT_LR_POL_LOW(ip) 0x0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  858) #define VALUE_UNIPERIF_I2S_FMT_LR_POL_HIG(ip) 0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  859) #define GET_UNIPERIF_I2S_FMT_LR_POL(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  860) 	GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  861) 		UNIPERIF_I2S_FMT_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  862) 		UNIPERIF_I2S_FMT_LR_POL_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  863) 		UNIPERIF_I2S_FMT_LR_POL_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  864) #define SET_UNIPERIF_I2S_FMT_LR_POL(ip, value) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  865) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  866) 		UNIPERIF_I2S_FMT_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  867) 		UNIPERIF_I2S_FMT_LR_POL_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  868) 		UNIPERIF_I2S_FMT_LR_POL_MASK(ip), value)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  869) #define SET_UNIPERIF_I2S_FMT_LR_POL_LOW(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  870) 	SET_UNIPERIF_I2S_FMT_LR_POL(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  871) 		VALUE_UNIPERIF_I2S_FMT_LR_POL_LOW(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  872) #define SET_UNIPERIF_I2S_FMT_LR_POL_HIG(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  873) 	SET_UNIPERIF_I2S_FMT_LR_POL(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  874) 		VALUE_UNIPERIF_I2S_FMT_LR_POL_HIG(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  875) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  876) /* SCLK_EDGE */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  877) #define UNIPERIF_I2S_FMT_SCLK_EDGE_SHIFT(ip) 5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  878) #define UNIPERIF_I2S_FMT_SCLK_EDGE_MASK(ip) 0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  879) #define GET_UNIPERIF_I2S_FMT_SCLK_EDGE(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  880) 	GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  881) 		UNIPERIF_I2S_FMT_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  882) 		UNIPERIF_I2S_FMT_SCLK_EDGE_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  883) 		UNIPERIF_I2S_FMT_SCLK_EDGE_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  884) #define SET_UNIPERIF_I2S_FMT_SCLK_EDGE_RISING(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  885) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  886) 		UNIPERIF_I2S_FMT_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  887) 		UNIPERIF_I2S_FMT_SCLK_EDGE_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  888) 		UNIPERIF_I2S_FMT_SCLK_EDGE_MASK(ip), 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  889) #define SET_UNIPERIF_I2S_FMT_SCLK_EDGE_FALLING(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  890) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  891) 		UNIPERIF_I2S_FMT_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  892) 		UNIPERIF_I2S_FMT_SCLK_EDGE_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  893) 		UNIPERIF_I2S_FMT_SCLK_EDGE_MASK(ip), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  894) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  895) /* PADDING */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  896) #define UNIPERIF_I2S_FMT_PADDING_SHIFT(ip) 6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  897) #define UNIPERIF_I2S_FMT_PADDING_MASK(ip) 0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  898) #define UNIPERIF_I2S_FMT_PADDING_MASK(ip) 0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  899) #define VALUE_UNIPERIF_I2S_FMT_PADDING_I2S_MODE(ip) 0x0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  900) #define VALUE_UNIPERIF_I2S_FMT_PADDING_SONY_MODE(ip) 0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  901) #define GET_UNIPERIF_I2S_FMT_PADDING(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  902) 	GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  903) 		UNIPERIF_I2S_FMT_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  904) 		UNIPERIF_I2S_FMT_PADDING_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  905) 		UNIPERIF_I2S_FMT_PADDING_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  906) #define SET_UNIPERIF_I2S_FMT_PADDING(ip, value) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  907) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  908) 		UNIPERIF_I2S_FMT_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  909) 		UNIPERIF_I2S_FMT_PADDING_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  910) 		UNIPERIF_I2S_FMT_PADDING_MASK(ip), value)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  911) #define SET_UNIPERIF_I2S_FMT_PADDING_I2S_MODE(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  912) 	SET_UNIPERIF_I2S_FMT_PADDING(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  913) 		VALUE_UNIPERIF_I2S_FMT_PADDING_I2S_MODE(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  914) #define SET_UNIPERIF_I2S_FMT_PADDING_SONY_MODE(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  915) 	SET_UNIPERIF_I2S_FMT_PADDING(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  916) 		VALUE_UNIPERIF_I2S_FMT_PADDING_SONY_MODE(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  917) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  918) /* ALIGN */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  919) #define UNIPERIF_I2S_FMT_ALIGN_SHIFT(ip) 7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  920) #define UNIPERIF_I2S_FMT_ALIGN_MASK(ip) 0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  921) #define GET_UNIPERIF_I2S_FMT_ALIGN(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  922) 	GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  923) 		UNIPERIF_I2S_FMT_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  924) 		UNIPERIF_I2S_FMT_ALIGN_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  925) 		UNIPERIF_I2S_FMT_ALIGN_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  926) #define SET_UNIPERIF_I2S_FMT_ALIGN_LEFT(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  927) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  928) 		UNIPERIF_I2S_FMT_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  929) 		UNIPERIF_I2S_FMT_ALIGN_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  930) 		UNIPERIF_I2S_FMT_ALIGN_MASK(ip), 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  931) #define SET_UNIPERIF_I2S_FMT_ALIGN_RIGHT(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  932) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  933) 		UNIPERIF_I2S_FMT_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  934) 		UNIPERIF_I2S_FMT_ALIGN_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  935) 		UNIPERIF_I2S_FMT_ALIGN_MASK(ip), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  936) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  937) /* ORDER */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  938) #define UNIPERIF_I2S_FMT_ORDER_SHIFT(ip) 8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  939) #define UNIPERIF_I2S_FMT_ORDER_MASK(ip) 0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  940) #define GET_UNIPERIF_I2S_FMT_ORDER(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  941) 	GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  942) 		UNIPERIF_I2S_FMT_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  943) 		UNIPERIF_I2S_FMT_ORDER_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  944) 		UNIPERIF_I2S_FMT_ORDER_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  945) #define SET_UNIPERIF_I2S_FMT_ORDER_LSB(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  946) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  947) 		UNIPERIF_I2S_FMT_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  948) 		UNIPERIF_I2S_FMT_ORDER_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  949) 		UNIPERIF_I2S_FMT_ORDER_MASK(ip), 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  950) #define SET_UNIPERIF_I2S_FMT_ORDER_MSB(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  951) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  952) 		UNIPERIF_I2S_FMT_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  953) 		UNIPERIF_I2S_FMT_ORDER_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  954) 		UNIPERIF_I2S_FMT_ORDER_MASK(ip), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  955) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  956) /* NUM_CH */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  957) #define UNIPERIF_I2S_FMT_NUM_CH_SHIFT(ip) 9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  958) #define UNIPERIF_I2S_FMT_NUM_CH_MASK(ip) 0x7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  959) #define GET_UNIPERIF_I2S_FMT_NUM_CH(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  960) 	GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  961) 		UNIPERIF_I2S_FMT_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  962) 		UNIPERIF_I2S_FMT_NUM_CH_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  963) 		UNIPERIF_I2S_FMT_NUM_CH_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  964) #define SET_UNIPERIF_I2S_FMT_NUM_CH(ip, value) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  965) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  966) 		UNIPERIF_I2S_FMT_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  967) 		UNIPERIF_I2S_FMT_NUM_CH_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  968) 		UNIPERIF_I2S_FMT_NUM_CH_MASK(ip), value)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  969) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  970) /* NO_OF_SAMPLES_TO_READ */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  971) #define UNIPERIF_I2S_FMT_NO_OF_SAMPLES_TO_READ_SHIFT(ip) 12
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  972) #define UNIPERIF_I2S_FMT_NO_OF_SAMPLES_TO_READ_MASK(ip) 0xfffff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  973) #define GET_UNIPERIF_I2S_FMT_NO_OF_SAMPLES_TO_READ(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  974) 	GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  975) 		UNIPERIF_I2S_FMT_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  976) 		UNIPERIF_I2S_FMT_NO_OF_SAMPLES_TO_READ_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  977) 		UNIPERIF_I2S_FMT_NO_OF_SAMPLES_TO_READ_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  978) #define SET_UNIPERIF_I2S_FMT_NO_OF_SAMPLES_TO_READ(ip, value) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  979) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  980) 		UNIPERIF_I2S_FMT_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  981) 		UNIPERIF_I2S_FMT_NO_OF_SAMPLES_TO_READ_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  982) 		UNIPERIF_I2S_FMT_NO_OF_SAMPLES_TO_READ_MASK(ip), value)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  983) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  984) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  985)  * UNIPERIF_BIT_CONTROL reg
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  986)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  987) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  988) #define UNIPERIF_BIT_CONTROL_OFFSET(ip)  \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  989) 	((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? -1 : 0x004c)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  990) #define GET_UNIPERIF_BIT_CONTROL(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  991) 	readl_relaxed(ip->base + UNIPERIF_BIT_CONTROL_OFFSET(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  992) #define SET_UNIPERIF_BIT_CONTROL(ip, value) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  993) 	writel_relaxed(value, ip->base + UNIPERIF_BIT_CONTROL_OFFSET(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  994) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  995) /* CLR_UNDERFLOW_DURATION */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  996) #define UNIPERIF_BIT_CONTROL_CLR_UNDERFLOW_DURATION_SHIFT(ip) 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  997) #define UNIPERIF_BIT_CONTROL_CLR_UNDERFLOW_DURATION_MASK(ip) 0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  998) #define GET_UNIPERIF_BIT_CONTROL_CLR_UNDERFLOW_DURATION(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  999) 	GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1000) 		UNIPERIF_BIT_CONTROL_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1001) 		UNIPERIF_BIT_CONTROL_CLR_UNDERFLOW_DURATION_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1002) 		UNIPERIF_BIT_CONTROL_CLR_UNDERFLOW_DURATION_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1003) #define SET_UNIPERIF_BIT_CONTROL_CLR_UNDERFLOW_DURATION(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1004) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1005) 		UNIPERIF_BIT_CONTROL_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1006) 		UNIPERIF_BIT_CONTROL_CLR_UNDERFLOW_DURATION_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1007) 		UNIPERIF_BIT_CONTROL_CLR_UNDERFLOW_DURATION_MASK(ip), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1008) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1009) /* CHL_STS_UPDATE */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1010) #define UNIPERIF_BIT_CONTROL_CHL_STS_UPDATE_SHIFT(ip) 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1011) #define UNIPERIF_BIT_CONTROL_CHL_STS_UPDATE_MASK(ip) 0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1012) #define GET_UNIPERIF_BIT_CONTROL_CHL_STS_UPDATE(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1013) 	GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1014) 		UNIPERIF_BIT_CONTROL_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1015) 		UNIPERIF_BIT_CONTROL_CHL_STS_UPDATE_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1016) 		UNIPERIF_BIT_CONTROL_CHL_STS_UPDATE_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1017) #define SET_UNIPERIF_BIT_CONTROL_CHL_STS_UPDATE(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1018) 	SET_UNIPERIF_BIT_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1019) 		UNIPERIF_BIT_CONTROL_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1020) 		UNIPERIF_BIT_CONTROL_CHL_STS_UPDATE_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1021) 		UNIPERIF_BIT_CONTROL_CHL_STS_UPDATE_MASK(ip), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1022) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1023) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1024)  * UNIPERIF_STATUS_1 reg
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1025)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1026) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1027) #define UNIPERIF_STATUS_1_OFFSET(ip) 0x0050
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1028) #define GET_UNIPERIF_STATUS_1(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1029) 	readl_relaxed(ip->base + UNIPERIF_STATUS_1_OFFSET(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1030) #define SET_UNIPERIF_STATUS_1(ip, value) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1031) 	writel_relaxed(value, ip->base + UNIPERIF_STATUS_1_OFFSET(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1032) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1033) /* UNDERFLOW_DURATION */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1034) #define UNIPERIF_STATUS_1_UNDERFLOW_DURATION_SHIFT(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1035) 	((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? -1 : 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1036) #define UNIPERIF_STATUS_1_UNDERFLOW_DURATION_MASK(ip) 0xff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1037) #define GET_UNIPERIF_STATUS_1_UNDERFLOW_DURATION(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1038) 	GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1039) 		UNIPERIF_STATUS_1_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1040) 		UNIPERIF_STATUS_1_UNDERFLOW_DURATION_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1041) 		UNIPERIF_STATUS_1_UNDERFLOW_DURATION_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1042) #define SET_UNIPERIF_STATUS_1_UNDERFLOW_DURATION(ip, value) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1043) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1044) 		UNIPERIF_STATUS_1_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1045) 		UNIPERIF_STATUS_1_UNDERFLOW_DURATION_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1046) 		UNIPERIF_STATUS_1_UNDERFLOW_DURATION_MASK(ip), value)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1047) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1048) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1049)  * UNIPERIF_CHANNEL_STA_REGN reg
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1050)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1051) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1052) #define UNIPERIF_CHANNEL_STA_REGN(ip, n) (0x0060 + (4 * n))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1053) #define GET_UNIPERIF_CHANNEL_STA_REGN(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1054) 	readl_relaxed(ip->base + UNIPERIF_CHANNEL_STA_REGN(ip, n))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1055) #define SET_UNIPERIF_CHANNEL_STA_REGN(ip, n, value) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1056) 	writel_relaxed(value, ip->base + \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1057) 			UNIPERIF_CHANNEL_STA_REGN(ip, n))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1058) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1059) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1060)  * UNIPERIF_USER_VALIDITY reg
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1061)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1062) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1063) #define UNIPERIF_USER_VALIDITY_OFFSET(ip) 0x0090
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1064) #define GET_UNIPERIF_USER_VALIDITY(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1065) 	readl_relaxed(ip->base + UNIPERIF_USER_VALIDITY_OFFSET(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1066) #define SET_UNIPERIF_USER_VALIDITY(ip, value) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1067) 	writel_relaxed(value, ip->base + UNIPERIF_USER_VALIDITY_OFFSET(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1068) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1069) /* VALIDITY_LEFT_AND_RIGHT */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1070) #define UNIPERIF_USER_VALIDITY_VALIDITY_LR_SHIFT(ip) 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1071) #define UNIPERIF_USER_VALIDITY_VALIDITY_LR_MASK(ip) 0x3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1072) #define GET_UNIPERIF_USER_VALIDITY_VALIDITY_LR(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1073) 	GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1074) 		UNIPERIF_USER_VALIDITY_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1075) 		UNIPERIF_USER_VALIDITY_VALIDITY_LR_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1076) 		UNIPERIF_USER_VALIDITY_VALIDITY_LR_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1077) #define SET_UNIPERIF_USER_VALIDITY_VALIDITY_LR(ip, value) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1078) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1079) 		UNIPERIF_USER_VALIDITY_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1080) 		UNIPERIF_USER_VALIDITY_VALIDITY_LR_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1081) 		UNIPERIF_USER_VALIDITY_VALIDITY_LR_MASK(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1082) 		value ? 0x3 : 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1083) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1084) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1085)  * UNIPERIF_DBG_STANDBY_LEFT_SP reg
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1086)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1087) #define UNIPERIF_DBG_STANDBY_LEFT_SP_OFFSET(ip) 0x0150
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1088) #define UNIPERIF_DBG_STANDBY_LEFT_SP_SHIFT(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1089) 	((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? -1 : 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1090) #define UNIPERIF_DBG_STANDBY_LEFT_SP_MASK(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1091) 	((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? 0 : 0xFFFFFF)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1092) #define GET_UNIPERIF_DBG_STANDBY_LEFT_SP(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1093) 	GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1094) 		UNIPERIF_DBG_STANDBY_LEFT_SP_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1095) 		UNIPERIF_DBG_STANDBY_LEFT_SP_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1096) 		UNIPERIF_DBG_STANDBY_LEFT_SP_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1097) #define SET_UNIPERIF_DBG_STANDBY_LEFT_SP(ip, value) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1098) 	SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1099) 		UNIPERIF_DBG_STANDBY_LEFT_SP_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1100) 		UNIPERIF_DBG_STANDBY_LEFT_SP_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1101) 		UNIPERIF_DBG_STANDBY_LEFT_SP_MASK(ip), value)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1102) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1103) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1104)  * UNIPERIF_TDM_ENABLE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1105)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1106) #define UNIPERIF_TDM_ENABLE_OFFSET(ip) 0x0118
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1107) #define GET_UNIPERIF_TDM_ENABLE(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1108) 	readl_relaxed(ip->base + UNIPERIF_TDM_ENABLE_OFFSET(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1109) #define SET_UNIPERIF_TDM_ENABLE(ip, value) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1110) 	writel_relaxed(value, ip->base + UNIPERIF_TDM_ENABLE_OFFSET(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1111) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1112) /* TDM_ENABLE */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1113) #define UNIPERIF_TDM_ENABLE_EN_TDM_SHIFT(ip) 0x0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1114) #define UNIPERIF_TDM_ENABLE_EN_TDM_MASK(ip) 0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1115) #define GET_UNIPERIF_TDM_ENABLE_EN_TDM(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1116) 		GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1117) 		UNIPERIF_TDM_ENABLE_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1118) 		UNIPERIF_TDM_ENABLE_EN_TDM_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1119) 		UNIPERIF_TDM_ENABLE_EN_TDM_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1120) #define SET_UNIPERIF_TDM_ENABLE_TDM_ENABLE(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1121) 		SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1122) 		UNIPERIF_TDM_ENABLE_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1123) 		UNIPERIF_TDM_ENABLE_EN_TDM_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1124) 		UNIPERIF_TDM_ENABLE_EN_TDM_MASK(ip), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1125) #define SET_UNIPERIF_TDM_ENABLE_TDM_DISABLE(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1126) 		SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1127) 		UNIPERIF_TDM_ENABLE_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1128) 		UNIPERIF_TDM_ENABLE_EN_TDM_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1129) 		UNIPERIF_TDM_ENABLE_EN_TDM_MASK(ip), 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1130) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1131) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1132)  * UNIPERIF_TDM_FS_REF_FREQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1133)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1134) #define UNIPERIF_TDM_FS_REF_FREQ_OFFSET(ip) 0x011c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1135) #define GET_UNIPERIF_TDM_FS_REF_FREQ(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1136) 	readl_relaxed(ip->base + UNIPERIF_TDM_FS_REF_FREQ_OFFSET(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1137) #define SET_UNIPERIF_TDM_FS_REF_FREQ(ip, value) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1138) 	writel_relaxed(value, ip->base + \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1139) 			UNIPERIF_TDM_FS_REF_FREQ_OFFSET(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1140) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1141) /* REF_FREQ */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1142) #define UNIPERIF_TDM_FS_REF_FREQ_REF_FREQ_SHIFT(ip) 0x0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1143) #define VALUE_UNIPERIF_TDM_FS_REF_FREQ_8KHZ(ip) 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1144) #define VALUE_UNIPERIF_TDM_FS_REF_FREQ_16KHZ(ip) 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1145) #define VALUE_UNIPERIF_TDM_FS_REF_FREQ_32KHZ(ip) 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1146) #define VALUE_UNIPERIF_TDM_FS_REF_FREQ_48KHZ(ip) 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1147) #define UNIPERIF_TDM_FS_REF_FREQ_REF_FREQ_MASK(ip) 0x3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1148) #define GET_UNIPERIF_TDM_FS_REF_FREQ_REF_FREQ(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1149) 		GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1150) 		UNIPERIF_TDM_FS_REF_FREQ_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1151) 		UNIPERIF_TDM_FS_REF_FREQ_REF_FREQ_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1152) 		UNIPERIF_TDM_FS_REF_FREQ_REF_FREQ_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1153) #define SET_UNIPERIF_TDM_FS_REF_FREQ_8KHZ(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1154) 		SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1155) 		UNIPERIF_TDM_FS_REF_FREQ_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1156) 		UNIPERIF_TDM_FS_REF_FREQ_REF_FREQ_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1157) 		UNIPERIF_TDM_FS_REF_FREQ_REF_FREQ_MASK(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1158) 		VALUE_UNIPERIF_TDM_FS_REF_FREQ_8KHZ(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1159) #define SET_UNIPERIF_TDM_FS_REF_FREQ_16KHZ(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1160) 		SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1161) 		UNIPERIF_TDM_FS_REF_FREQ_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1162) 		UNIPERIF_TDM_FS_REF_FREQ_REF_FREQ_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1163) 		UNIPERIF_TDM_FS_REF_FREQ_REF_FREQ_MASK(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1164) 		VALUE_UNIPERIF_TDM_FS_REF_FREQ_16KHZ(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1165) #define SET_UNIPERIF_TDM_FS_REF_FREQ_32KHZ(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1166) 		SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1167) 		UNIPERIF_TDM_FS_REF_FREQ_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1168) 		UNIPERIF_TDM_FS_REF_FREQ_REF_FREQ_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1169) 		UNIPERIF_TDM_FS_REF_FREQ_REF_FREQ_MASK(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1170) 		VALUE_UNIPERIF_TDM_FS_REF_FREQ_32KHZ(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1171) #define SET_UNIPERIF_TDM_FS_REF_FREQ_48KHZ(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1172) 		SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1173) 		UNIPERIF_TDM_FS_REF_FREQ_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1174) 		UNIPERIF_TDM_FS_REF_FREQ_REF_FREQ_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1175) 		UNIPERIF_TDM_FS_REF_FREQ_REF_FREQ_MASK(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1176) 		VALUE_UNIPERIF_TDM_FS_REF_FREQ_48KHZ(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1177) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1178) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1179)  * UNIPERIF_TDM_FS_REF_DIV
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1180)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1181) #define UNIPERIF_TDM_FS_REF_DIV_OFFSET(ip) 0x0120
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1182) #define GET_UNIPERIF_TDM_FS_REF_DIV(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1183) 	readl_relaxed(ip->base + UNIPERIF_TDM_FS_REF_DIV_OFFSET(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1184) #define SET_UNIPERIF_TDM_FS_REF_DIV(ip, value) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1185) 		writel_relaxed(value, ip->base + \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1186) 			UNIPERIF_TDM_FS_REF_DIV_OFFSET(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1187) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1188) /* NUM_TIMESLOT */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1189) #define UNIPERIF_TDM_FS_REF_DIV_NUM_TIMESLOT_SHIFT(ip) 0x0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1190) #define UNIPERIF_TDM_FS_REF_DIV_NUM_TIMESLOT_MASK(ip) 0xff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1191) #define GET_UNIPERIF_TDM_FS_REF_DIV_NUM_TIMESLOT(ip) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1192) 		GET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1193) 		UNIPERIF_TDM_FS_REF_DIV_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1194) 		UNIPERIF_TDM_FS_REF_DIV_NUM_TIMESLOT_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1195) 		UNIPERIF_TDM_FS_REF_DIV_NUM_TIMESLOT_MASK(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1196) #define SET_UNIPERIF_TDM_FS_REF_DIV_NUM_TIMESLOT(ip, value) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1197) 		SET_UNIPERIF_REG(ip, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1198) 		UNIPERIF_TDM_FS_REF_DIV_OFFSET(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1199) 		UNIPERIF_TDM_FS_REF_DIV_NUM_TIMESLOT_SHIFT(ip), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1200) 		UNIPERIF_TDM_FS_REF_DIV_NUM_TIMESLOT_MASK(ip), value)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1201) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1202) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1203)  * UNIPERIF_TDM_WORD_POS_X_Y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1204)  * 32 bits of UNIPERIF_TDM_WORD_POS_X_Y register shall be set in 1 shot
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1205)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1206) #define UNIPERIF_TDM_WORD_POS_1_2_OFFSET(ip) 0x013c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1207) #define UNIPERIF_TDM_WORD_POS_3_4_OFFSET(ip) 0x0140
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1208) #define UNIPERIF_TDM_WORD_POS_5_6_OFFSET(ip) 0x0144
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1209) #define UNIPERIF_TDM_WORD_POS_7_8_OFFSET(ip) 0x0148
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1210) #define GET_UNIPERIF_TDM_WORD_POS(ip, words) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1211) 	readl_relaxed(ip->base + UNIPERIF_TDM_WORD_POS_##words##_OFFSET(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1212) #define SET_UNIPERIF_TDM_WORD_POS(ip, words, value) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1213) 		writel_relaxed(value, ip->base + \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1214) 		UNIPERIF_TDM_WORD_POS_##words##_OFFSET(ip))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1215) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1216)  * uniperipheral IP capabilities
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1217)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1218) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1219) #define UNIPERIF_FIFO_SIZE		70 /* FIFO is 70 cells deep */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1220) #define UNIPERIF_FIFO_FRAMES		4  /* FDMA trigger limit in frames */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1221) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1222) #define UNIPERIF_TYPE_IS_HDMI(p) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1223) 	((p)->type == SND_ST_UNIPERIF_TYPE_HDMI)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1224) #define UNIPERIF_TYPE_IS_PCM(p) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1225) 	((p)->type == SND_ST_UNIPERIF_TYPE_PCM)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1226) #define UNIPERIF_TYPE_IS_SPDIF(p) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1227) 	((p)->type == SND_ST_UNIPERIF_TYPE_SPDIF)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1228) #define UNIPERIF_TYPE_IS_IEC958(p) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1229) 	(UNIPERIF_TYPE_IS_HDMI(p) || \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1230) 		UNIPERIF_TYPE_IS_SPDIF(p))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1231) #define UNIPERIF_TYPE_IS_TDM(p) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1232) 	((p)->type == SND_ST_UNIPERIF_TYPE_TDM)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1233) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1234) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1235)  * Uniperipheral IP revisions
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1236)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1237) enum uniperif_version {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1238) 	SND_ST_UNIPERIF_VERSION_UNKNOWN,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1239) 	/* SASG1 (Orly), Newman */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1240) 	SND_ST_UNIPERIF_VERSION_C6AUD0_UNI_1_0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1241) 	/* SASC1, SASG2 (Orly2) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1242) 	SND_ST_UNIPERIF_VERSION_UNI_PLR_1_0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1243) 	/* SASC1, SASG2 (Orly2), TELSS, Cannes */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1244) 	SND_ST_UNIPERIF_VERSION_UNI_RDR_1_0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1245) 	/* TELSS (SASC1) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1246) 	SND_ST_UNIPERIF_VERSION_TDM_PLR_1_0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1247) 	/* Cannes/Monaco */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1248) 	SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1249) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1250) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1251) enum uniperif_type {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1252) 	SND_ST_UNIPERIF_TYPE_NONE	= 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1253) 	SND_ST_UNIPERIF_TYPE_HDMI	= 0x01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1254) 	SND_ST_UNIPERIF_TYPE_PCM	= 0x02,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1255) 	SND_ST_UNIPERIF_TYPE_SPDIF	= 0x04,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1256) 	SND_ST_UNIPERIF_TYPE_TDM	= 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1257) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1258) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1259) enum uniperif_state {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1260) 	UNIPERIF_STATE_STOPPED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1261) 	UNIPERIF_STATE_STARTED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1262) 	UNIPERIF_STATE_STANDBY,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1263) 	UNIPERIF_STATE_UNDERFLOW,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1264) 	UNIPERIF_STATE_OVERFLOW = UNIPERIF_STATE_UNDERFLOW,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1265) 	UNIPERIF_STATE_XRUN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1266) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1267) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1268) enum uniperif_iec958_encoding_mode {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1269) 	UNIPERIF_IEC958_ENCODING_MODE_PCM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1270) 	UNIPERIF_IEC958_ENCODING_MODE_ENCODED
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1271) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1272) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1273) enum uniperif_word_pos {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1274) 	WORD_1_2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1275) 	WORD_3_4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1276) 	WORD_5_6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1277) 	WORD_7_8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1278) 	WORD_MAX
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1279) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1280) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1281) struct uniperif_iec958_settings {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1282) 	enum uniperif_iec958_encoding_mode encoding_mode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1283) 	struct snd_aes_iec958 iec958;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1284) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1285) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1286) struct dai_tdm_slot {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1287) 	unsigned int mask;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1288) 	int slots;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1289) 	int slot_width;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1290) 	unsigned int avail_slots;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1291) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1292) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1293) struct uniperif {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1294) 	/* System information */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1295) 	enum uniperif_type type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1296) 	int underflow_enabled; /* Underflow recovery mode */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1297) 	struct device *dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1298) 	int id; /* instance value of the uniperipheral IP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1299) 	int ver; /* IP version, used by register access macros */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1300) 	struct regmap_field *clk_sel;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1301) 	struct regmap_field *valid_sel;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1302) 	spinlock_t irq_lock; /* use to prevent race condition with IRQ */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1303) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1304) 	/* capabilities */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1305) 	const struct snd_pcm_hardware *hw;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1306) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1307) 	/* Resources */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1308) 	struct resource *mem_region;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1309) 	void __iomem *base;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1310) 	unsigned long fifo_phys_address;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1311) 	int irq;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1312) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1313) 	/* Clocks */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1314) 	struct clk *clk;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1315) 	int mclk;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1316) 	int clk_adj;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1317) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1318) 	/* Runtime data */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1319) 	enum uniperif_state state;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1320) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1321) 	struct snd_pcm_substream *substream;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1322) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1323) 	/* Specific to IEC958 player */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1324) 	struct uniperif_iec958_settings stream_settings;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1325) 	struct mutex ctrl_lock; /* For resource updated by stream and controls*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1326) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1327) 	/*alsa ctrl*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1328) 	struct snd_kcontrol_new *snd_ctrls;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1329) 	int num_ctrls;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1330) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1331) 	/* dai properties */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1332) 	unsigned int daifmt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1333) 	struct dai_tdm_slot tdm_slot;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1334) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1335) 	/* DAI callbacks */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1336) 	const struct snd_soc_dai_ops *dai_ops;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1337) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1338) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1339) struct sti_uniperiph_dai {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1340) 	int stream;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1341) 	struct uniperif *uni;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1342) 	struct snd_dmaengine_dai_dma_data dma_data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1343) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1344) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1345) struct sti_uniperiph_data {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1346) 	struct platform_device *pdev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1347) 	struct snd_soc_dai_driver *dai;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1348) 	struct sti_uniperiph_dai dai_data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1349) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1350) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1351) static __maybe_unused const struct snd_pcm_hardware uni_tdm_hw = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1352) 	.info = SNDRV_PCM_INFO_INTERLEAVED | SNDRV_PCM_INFO_BLOCK_TRANSFER |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1353) 		SNDRV_PCM_INFO_PAUSE | SNDRV_PCM_INFO_MMAP |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1354) 		SNDRV_PCM_INFO_MMAP_VALID,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1355) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1356) 	.formats = SNDRV_PCM_FMTBIT_S32_LE | SNDRV_PCM_FMTBIT_S16_LE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1357) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1358) 	.rates = SNDRV_PCM_RATE_CONTINUOUS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1359) 	.rate_min = 8000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1360) 	.rate_max = 48000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1361) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1362) 	.channels_min = 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1363) 	.channels_max = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1364) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1365) 	.periods_min = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1366) 	.periods_max = 10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1367) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1368) 	.period_bytes_min = 128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1369) 	.period_bytes_max = 64 * PAGE_SIZE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1370) 	.buffer_bytes_max = 256 * PAGE_SIZE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1371) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1372) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1373) /* uniperiph player*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1374) int uni_player_init(struct platform_device *pdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1375) 		    struct uniperif *uni_player);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1376) int uni_player_resume(struct uniperif *player);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1377) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1378) /* uniperiph reader */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1379) int uni_reader_init(struct platform_device *pdev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1380) 		    struct uniperif *uni_reader);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1381) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1382) /* common */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1383) int sti_uniperiph_dai_set_fmt(struct snd_soc_dai *dai,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1384) 			      unsigned int fmt);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1385) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1386) int sti_uniperiph_dai_hw_params(struct snd_pcm_substream *substream,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1387) 				struct snd_pcm_hw_params *params,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1388) 				struct snd_soc_dai *dai);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1389) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1390) static inline int sti_uniperiph_get_user_frame_size(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1391) 	struct snd_pcm_runtime *runtime)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1392) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1393) 	return (runtime->channels * snd_pcm_format_width(runtime->format) / 8);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1394) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1395) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1396) static inline int sti_uniperiph_get_unip_tdm_frame_size(struct uniperif *uni)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1397) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1398) 	return (uni->tdm_slot.slots * uni->tdm_slot.slot_width / 8);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1399) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1400) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1401) int  sti_uniperiph_reset(struct uniperif *uni);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1402) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1403) int sti_uniperiph_set_tdm_slot(struct snd_soc_dai *dai, unsigned int tx_mask,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1404) 			       unsigned int rx_mask, int slots,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1405) 			       int slot_width);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1406) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1407) int sti_uniperiph_get_tdm_word_pos(struct uniperif *uni,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1408) 				   unsigned int *word_pos);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1409) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1410) int sti_uniperiph_fix_tdm_chan(struct snd_pcm_hw_params *params,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1411) 			       struct snd_pcm_hw_rule *rule);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1412) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1413) int sti_uniperiph_fix_tdm_format(struct snd_pcm_hw_params *params,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1414) 				 struct snd_pcm_hw_rule *rule);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1415) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1416) #endif