8#ifndef __SOF_DRIVERS_SSP_H__
9#define __SOF_DRIVERS_SSP_H__
15#include <sof/trace/trace.h>
22#define SSP_CLOCK_XTAL_OSCILLATOR 0x0
23#define SSP_CLOCK_AUDIO_CARDINAL 0x1
24#define SSP_CLOCK_PLL_FIXED 0x2
45#define SSCR0_DSIZE(x) SET_BITS(3, 0, (x) - 1)
46#define SSCR0_DSIZE_GET(x) (((x) & MASK(3, 0)) + 1)
47#define SSCR0_FRF MASK(5, 4)
48#define SSCR0_MOT SET_BITS(5, 4, 0)
49#define SSCR0_TI SET_BITS(5, 4, 1)
50#define SSCR0_NAT SET_BITS(5, 4, 2)
51#define SSCR0_PSP SET_BITS(5, 4, 3)
52#define SSCR0_ECS BIT(6)
53#define SSCR0_SSE BIT(7)
54#define SSCR0_SCR_MASK MASK(19, 8)
55#define SSCR0_SCR(x) SET_BITS(19, 8, x)
56#define SSCR0_EDSS BIT(20)
57#define SSCR0_NCS BIT(21)
58#define SSCR0_RIM BIT(22)
59#define SSCR0_TIM BIT(23)
60#define SSCR0_FRDC(x) SET_BITS(26, 24, (x) - 1)
61#define SSCR0_FRDC_GET(x) ((((x) & MASK(26, 24)) >> 24) + 1)
62#define SSCR0_ACS BIT(30)
63#define SSCR0_MOD BIT(31)
66#define SSCR1_RIE BIT(0)
67#define SSCR1_TIE BIT(1)
68#define SSCR1_LBM BIT(2)
69#define SSCR1_SPO BIT(3)
70#define SSCR1_SPH BIT(4)
71#define SSCR1_MWDS BIT(5)
72#define SSCR1_TFT_MASK MASK(9, 6)
73#define SSCR1_TFT(x) SET_BITS(9, 6, (x) - 1)
74#define SSCR1_RFT_MASK MASK(13, 10)
75#define SSCR1_RFT(x) SET_BITS(13, 10, (x) - 1)
76#define SSCR1_EFWR BIT(14)
77#define SSCR1_STRF BIT(15)
78#define SSCR1_IFS BIT(16)
79#define SSCR1_PINTE BIT(18)
80#define SSCR1_TINTE BIT(19)
81#define SSCR1_RSRE BIT(20)
82#define SSCR1_TSRE BIT(21)
83#define SSCR1_TRAIL BIT(22)
84#define SSCR1_RWOT BIT(23)
85#define SSCR1_SFRMDIR BIT(24)
86#define SSCR1_SCLKDIR BIT(25)
87#define SSCR1_ECRB BIT(26)
88#define SSCR1_ECRA BIT(27)
89#define SSCR1_SCFR BIT(28)
90#define SSCR1_EBCEI BIT(29)
91#define SSCR1_TTE BIT(30)
92#define SSCR1_TTELP BIT(31)
95#define SSCR2_TURM1 BIT(1)
96#define SSCR2_PSPSRWFDFD BIT(3)
97#define SSCR2_PSPSTWFDFD BIT(4)
98#define SSCR2_SDFD BIT(14)
99#define SSCR2_SDPM BIT(16)
100#define SSCR2_LJDFD BIT(17)
101#define SSCR2_MMRATF BIT(18)
102#define SSCR2_SMTATF BIT(19)
106#define SSSR_TNF BIT(2)
107#define SSSR_RNE BIT(3)
108#define SSSR_BSY BIT(4)
109#define SSSR_TFS BIT(5)
110#define SSSR_RFS BIT(6)
111#define SSSR_ROR BIT(7)
112#define SSSR_TUR BIT(21)
115#define SSPSP_SCMODE(x) SET_BITS(1, 0, x)
116#define SSPSP_SFRMP(x) SET_BIT(2, x)
117#define SSPSP_ETDS BIT(3)
118#define SSPSP_STRTDLY(x) SET_BITS(6, 4, x)
119#define SSPSP_DMYSTRT(x) SET_BITS(8, 7, x)
120#define SSPSP_SFRMDLY(x) SET_BITS(15, 9, x)
121#define SSPSP_SFRMWDTH(x) SET_BITS(21, 16, x)
122#define SSPSP_DMYSTOP(x) SET_BITS(24, 23, x)
123#define SSPSP_DMYSTOP_BITS 2
124#define SSPSP_DMYSTOP_MASK MASK(SSPSP_DMYSTOP_BITS - 1, 0)
125#define SSPSP_FSRT BIT(25)
126#define SSPSP_EDMYSTOP(x) SET_BITS(28, 26, x)
129#define SSPSP2_FEP_MASK 0xff
135#define SSP_REG_MAX SSIOC
139#define SSTSA_SSTSA(x) SET_BITS(7, 0, x)
140#define SSTSA_GET(x) ((x) & MASK(7, 0))
141#define SSTSA_TXEN BIT(8)
144#define SSRSA_SSRSA(x) SET_BITS(7, 0, x)
145#define SSRSA_GET(x) ((x) & MASK(7, 0))
146#define SSRSA_RXEN BIT(8)
149#define SSCR3_FRM_MST_EN BIT(0)
150#define SSCR3_I2S_MODE_EN BIT(1)
151#define SSCR3_I2S_FRM_POL(x) SET_BIT(2, x)
152#define SSCR3_I2S_TX_SS_FIX_EN BIT(3)
153#define SSCR3_I2S_RX_SS_FIX_EN BIT(4)
154#define SSCR3_I2S_TX_EN BIT(9)
155#define SSCR3_I2S_RX_EN BIT(10)
156#define SSCR3_CLK_EDGE_SEL BIT(12)
157#define SSCR3_STRETCH_TX BIT(14)
158#define SSCR3_STRETCH_RX BIT(15)
159#define SSCR3_MST_CLK_EN BIT(16)
160#define SSCR3_SYN_FIX_EN BIT(17)
163#define SSCR4_TOT_FRM_PRD(x) ((x) << 7)
166#define SSCR5_FRM_ASRT_CLOCKS(x) (((x) - 1) << 1)
167#define SSCR5_FRM_POLARITY(x) SET_BIT(0, x)
170#define SFIFOTT_TX(x) ((x) - 1)
171#define SFIFOTT_RX(x) (((x) - 1) << 16)
174#define SFIFOL_TFL(x) ((x) & 0xFFFF)
175#define SFIFOL_RFL(x) ((x) >> 16)
178#define SSTSA_TSEN BIT(8)
179#define SSRSA_RSEN BIT(8)
181#define SSCR3_TFL_MASK MASK(5, 0)
182#define SSCR3_RFL_MASK MASK(13, 8)
183#define SSCR3_TFL_VAL(scr3_val) (((scr3_val) >> 0) & MASK(5, 0))
184#define SSCR3_RFL_VAL(scr3_val) (((scr3_val) >> 8) & MASK(5, 0))
185#define SSCR3_TX(x) SET_BITS(21, 16, (x) - 1)
186#define SSCR3_RX(x) SET_BITS(29, 24, (x) - 1)
188#define SSIOC_TXDPDEB BIT(1)
189#define SSIOC_SFCR BIT(4)
190#define SSIOC_SCOE BIT(5)
198#define MAX_SSP_FREQ_INDEX (NUM_SSP_FREQ - 1)
203#define SSP_MAX_SEND_TIME_PER_SAMPLE 125
206#define SSP_RX_FLUSH_RETRY_MAX 16
208#define ssp_irq(ssp) \
211#define SSP_CLK_MCLK_ES_REQ BIT(0)
212#define SSP_CLK_MCLK_ACTIVE BIT(1)
213#define SSP_CLK_BCLK_ES_REQ BIT(2)
214#define SSP_CLK_BCLK_ACTIVE BIT(3)
215#define SSP_CLK_MCLK_AON_REQ BIT(4)
static uint32_t dai_read(struct dai *dai, uint32_t reg)
Definition dai-zephyr.h:181
static void dai_write(struct dai *dai, uint32_t reg, uint32_t value)
Definition dai-zephyr.h:177
static void dai_update_bits(struct dai *dai, uint32_t reg, uint32_t mask, uint32_t value)
Definition dai-zephyr.h:186
static void ssp_update_bits(struct dai *dai, uint32_t reg, uint32_t mask, uint32_t value)
Definition ssp.h:238
const uint32_t * ssp_freq_sources
static void ssp_write(struct dai *dai, uint32_t reg, uint32_t value)
Definition ssp.h:228
const struct dai_driver ssp_driver
static uint32_t ssp_read(struct dai *dai, uint32_t reg)
Definition ssp.h:233
const struct freq_table * ssp_freq
Definition dai-zephyr.h:49
Definition dai-intel.h:70
uint32_t sscr1
Definition ssp.h:220
uint32_t state[2]
Definition ssp.h:222
struct sof_ipc_dai_config config
Definition ssp.h:224
struct sof_ipc_dai_ssp_params params
Definition ssp.h:225
uint32_t psp
Definition ssp.h:221
uint32_t clk_active
Definition ssp.h:223
uint32_t sscr0
Definition ssp.h:219
char value[]
Definition tlv.h:2