Sound Open Firmware
Loading...
Searching...
No Matches
ssp.h File Reference
Include dependency graph for ssp.h:

Go to the source code of this file.

Data Structures

struct  ssp_pdata

Macros

#define SSP_CLOCK_XTAL_OSCILLATOR   0x0
#define SSP_CLOCK_AUDIO_CARDINAL   0x1
#define SSP_CLOCK_PLL_FIXED   0x2
#define SSCR0   0x00
#define SSCR1   0x04
#define SSSR   0x08
#define SSITR   0x0C
#define SSDR   0x10
#define SSTO   0x28
#define SSPSP   0x2C
#define SSTSA   0x30
#define SSRSA   0x34
#define SSTSS   0x38
#define SSCR2   0x40
#define SSCR0_DSIZE(x)
#define SSCR0_DSIZE_GET(x)
#define SSCR0_FRF   MASK(5, 4)
#define SSCR0_MOT   SET_BITS(5, 4, 0)
#define SSCR0_TI   SET_BITS(5, 4, 1)
#define SSCR0_NAT   SET_BITS(5, 4, 2)
#define SSCR0_PSP   SET_BITS(5, 4, 3)
#define SSCR0_ECS   BIT(6)
#define SSCR0_SSE   BIT(7)
#define SSCR0_SCR_MASK   MASK(19, 8)
#define SSCR0_SCR(x)
#define SSCR0_EDSS   BIT(20)
#define SSCR0_NCS   BIT(21)
#define SSCR0_RIM   BIT(22)
#define SSCR0_TIM   BIT(23)
#define SSCR0_FRDC(x)
#define SSCR0_FRDC_GET(x)
#define SSCR0_ACS   BIT(30)
#define SSCR0_MOD   BIT(31)
#define SSCR1_RIE   BIT(0)
#define SSCR1_TIE   BIT(1)
#define SSCR1_LBM   BIT(2)
#define SSCR1_SPO   BIT(3)
#define SSCR1_SPH   BIT(4)
#define SSCR1_MWDS   BIT(5)
#define SSCR1_TFT_MASK   MASK(9, 6)
#define SSCR1_TFT(x)
#define SSCR1_RFT_MASK   MASK(13, 10)
#define SSCR1_RFT(x)
#define SSCR1_EFWR   BIT(14)
#define SSCR1_STRF   BIT(15)
#define SSCR1_IFS   BIT(16)
#define SSCR1_PINTE   BIT(18)
#define SSCR1_TINTE   BIT(19)
#define SSCR1_RSRE   BIT(20)
#define SSCR1_TSRE   BIT(21)
#define SSCR1_TRAIL   BIT(22)
#define SSCR1_RWOT   BIT(23)
#define SSCR1_SFRMDIR   BIT(24)
#define SSCR1_SCLKDIR   BIT(25)
#define SSCR1_ECRB   BIT(26)
#define SSCR1_ECRA   BIT(27)
#define SSCR1_SCFR   BIT(28)
#define SSCR1_EBCEI   BIT(29)
#define SSCR1_TTE   BIT(30)
#define SSCR1_TTELP   BIT(31)
#define SSSR_TNF   BIT(2)
#define SSSR_RNE   BIT(3)
#define SSSR_BSY   BIT(4)
#define SSSR_TFS   BIT(5)
#define SSSR_RFS   BIT(6)
#define SSSR_ROR   BIT(7)
#define SSSR_TUR   BIT(21)
#define SSPSP_SCMODE(x)
#define SSPSP_SFRMP(x)
#define SSPSP_ETDS   BIT(3)
#define SSPSP_STRTDLY(x)
#define SSPSP_DMYSTRT(x)
#define SSPSP_SFRMDLY(x)
#define SSPSP_SFRMWDTH(x)
#define SSPSP_DMYSTOP(x)
#define SSPSP_DMYSTOP_BITS   2
#define SSPSP_DMYSTOP_MASK   MASK(SSPSP_DMYSTOP_BITS - 1, 0)
#define SSPSP_FSRT   BIT(25)
#define SSPSP_EDMYSTOP(x)
#define SSPSP2   0x44
#define SSPSP2_FEP_MASK   0xff
#define SSTSA_SSTSA(x)
#define SSTSA_GET(x)
#define SSTSA_TXEN   BIT(8)
#define SSRSA_SSRSA(x)
#define SSRSA_GET(x)
#define SSRSA_RXEN   BIT(8)
#define SSCR3_FRM_MST_EN   BIT(0)
#define SSCR3_I2S_MODE_EN   BIT(1)
#define SSCR3_I2S_FRM_POL(x)
#define SSCR3_I2S_TX_SS_FIX_EN   BIT(3)
#define SSCR3_I2S_RX_SS_FIX_EN   BIT(4)
#define SSCR3_I2S_TX_EN   BIT(9)
#define SSCR3_I2S_RX_EN   BIT(10)
#define SSCR3_CLK_EDGE_SEL   BIT(12)
#define SSCR3_STRETCH_TX   BIT(14)
#define SSCR3_STRETCH_RX   BIT(15)
#define SSCR3_MST_CLK_EN   BIT(16)
#define SSCR3_SYN_FIX_EN   BIT(17)
#define SSCR4_TOT_FRM_PRD(x)
#define SSCR5_FRM_ASRT_CLOCKS(x)
#define SSCR5_FRM_POLARITY(x)
#define SFIFOTT_TX(x)
#define SFIFOTT_RX(x)
#define SFIFOL_TFL(x)
#define SFIFOL_RFL(x)
#define SSP_MAX_SEND_TIME_PER_SAMPLE   125
#define SSP_RX_FLUSH_RETRY_MAX   16
#define ssp_irq(ssp)
#define SSP_CLK_MCLK_ES_REQ   BIT(0)
#define SSP_CLK_MCLK_ACTIVE   BIT(1)
#define SSP_CLK_BCLK_ES_REQ   BIT(2)
#define SSP_CLK_BCLK_ACTIVE   BIT(3)
#define SSP_CLK_MCLK_AON_REQ   BIT(4)

Functions

static void ssp_write (struct dai *dai, uint32_t reg, uint32_t value)
static uint32_t ssp_read (struct dai *dai, uint32_t reg)
static void ssp_update_bits (struct dai *dai, uint32_t reg, uint32_t mask, uint32_t value)

Variables

const struct freq_table * ssp_freq
const uint32_t * ssp_freq_sources
const struct dai_driver ssp_driver

Macro Definition Documentation

◆ SFIFOL_RFL

#define SFIFOL_RFL ( x)
Value:
((x) >> 16)

◆ SFIFOL_TFL

#define SFIFOL_TFL ( x)
Value:
((x) & 0xFFFF)

◆ SFIFOTT_RX

#define SFIFOTT_RX ( x)
Value:
(((x) - 1) << 16)

◆ SFIFOTT_TX

#define SFIFOTT_TX ( x)
Value:
((x) - 1)

◆ SSCR0

#define SSCR0   0x00

◆ SSCR0_ACS

#define SSCR0_ACS   BIT(30)

◆ SSCR0_DSIZE

#define SSCR0_DSIZE ( x)
Value:
SET_BITS(3, 0, (x) - 1)
#define SET_BITS(b_hi, b_lo, x)
Definition bit.h:20

◆ SSCR0_DSIZE_GET

#define SSCR0_DSIZE_GET ( x)
Value:
(((x) & MASK(3, 0)) + 1)
#define MASK(b_hi, b_lo)
Definition bit.h:17

◆ SSCR0_ECS

#define SSCR0_ECS   BIT(6)

◆ SSCR0_EDSS

#define SSCR0_EDSS   BIT(20)

◆ SSCR0_FRDC

#define SSCR0_FRDC ( x)
Value:
SET_BITS(26, 24, (x) - 1)

◆ SSCR0_FRDC_GET

#define SSCR0_FRDC_GET ( x)
Value:
((((x) & MASK(26, 24)) >> 24) + 1)

◆ SSCR0_FRF

#define SSCR0_FRF   MASK(5, 4)

◆ SSCR0_MOD

#define SSCR0_MOD   BIT(31)

◆ SSCR0_MOT

#define SSCR0_MOT   SET_BITS(5, 4, 0)

◆ SSCR0_NAT

#define SSCR0_NAT   SET_BITS(5, 4, 2)

◆ SSCR0_NCS

#define SSCR0_NCS   BIT(21)

◆ SSCR0_PSP

#define SSCR0_PSP   SET_BITS(5, 4, 3)

◆ SSCR0_RIM

#define SSCR0_RIM   BIT(22)

◆ SSCR0_SCR

#define SSCR0_SCR ( x)
Value:
SET_BITS(19, 8, x)

◆ SSCR0_SCR_MASK

#define SSCR0_SCR_MASK   MASK(19, 8)

◆ SSCR0_SSE

#define SSCR0_SSE   BIT(7)

◆ SSCR0_TI

#define SSCR0_TI   SET_BITS(5, 4, 1)

◆ SSCR0_TIM

#define SSCR0_TIM   BIT(23)

◆ SSCR1

#define SSCR1   0x04

◆ SSCR1_EBCEI

#define SSCR1_EBCEI   BIT(29)

◆ SSCR1_ECRA

#define SSCR1_ECRA   BIT(27)

◆ SSCR1_ECRB

#define SSCR1_ECRB   BIT(26)

◆ SSCR1_EFWR

#define SSCR1_EFWR   BIT(14)

◆ SSCR1_IFS

#define SSCR1_IFS   BIT(16)

◆ SSCR1_LBM

#define SSCR1_LBM   BIT(2)

◆ SSCR1_MWDS

#define SSCR1_MWDS   BIT(5)

◆ SSCR1_PINTE

#define SSCR1_PINTE   BIT(18)

◆ SSCR1_RFT

#define SSCR1_RFT ( x)
Value:
SET_BITS(13, 10, (x) - 1)

◆ SSCR1_RFT_MASK

#define SSCR1_RFT_MASK   MASK(13, 10)

◆ SSCR1_RIE

#define SSCR1_RIE   BIT(0)

◆ SSCR1_RSRE

#define SSCR1_RSRE   BIT(20)

◆ SSCR1_RWOT

#define SSCR1_RWOT   BIT(23)

◆ SSCR1_SCFR

#define SSCR1_SCFR   BIT(28)

◆ SSCR1_SCLKDIR

#define SSCR1_SCLKDIR   BIT(25)

◆ SSCR1_SFRMDIR

#define SSCR1_SFRMDIR   BIT(24)

◆ SSCR1_SPH

#define SSCR1_SPH   BIT(4)

◆ SSCR1_SPO

#define SSCR1_SPO   BIT(3)

◆ SSCR1_STRF

#define SSCR1_STRF   BIT(15)

◆ SSCR1_TFT

#define SSCR1_TFT ( x)
Value:
SET_BITS(9, 6, (x) - 1)

◆ SSCR1_TFT_MASK

#define SSCR1_TFT_MASK   MASK(9, 6)

◆ SSCR1_TIE

#define SSCR1_TIE   BIT(1)

◆ SSCR1_TINTE

#define SSCR1_TINTE   BIT(19)

◆ SSCR1_TRAIL

#define SSCR1_TRAIL   BIT(22)

◆ SSCR1_TSRE

#define SSCR1_TSRE   BIT(21)

◆ SSCR1_TTE

#define SSCR1_TTE   BIT(30)

◆ SSCR1_TTELP

#define SSCR1_TTELP   BIT(31)

◆ SSCR2

#define SSCR2   0x40

◆ SSCR3_CLK_EDGE_SEL

#define SSCR3_CLK_EDGE_SEL   BIT(12)

◆ SSCR3_FRM_MST_EN

#define SSCR3_FRM_MST_EN   BIT(0)

◆ SSCR3_I2S_FRM_POL

#define SSCR3_I2S_FRM_POL ( x)
Value:
SET_BIT(2, x)
#define SET_BIT(b, x)
Definition bit.h:19

◆ SSCR3_I2S_MODE_EN

#define SSCR3_I2S_MODE_EN   BIT(1)

◆ SSCR3_I2S_RX_EN

#define SSCR3_I2S_RX_EN   BIT(10)

◆ SSCR3_I2S_RX_SS_FIX_EN

#define SSCR3_I2S_RX_SS_FIX_EN   BIT(4)

◆ SSCR3_I2S_TX_EN

#define SSCR3_I2S_TX_EN   BIT(9)

◆ SSCR3_I2S_TX_SS_FIX_EN

#define SSCR3_I2S_TX_SS_FIX_EN   BIT(3)

◆ SSCR3_MST_CLK_EN

#define SSCR3_MST_CLK_EN   BIT(16)

◆ SSCR3_STRETCH_RX

#define SSCR3_STRETCH_RX   BIT(15)

◆ SSCR3_STRETCH_TX

#define SSCR3_STRETCH_TX   BIT(14)

◆ SSCR3_SYN_FIX_EN

#define SSCR3_SYN_FIX_EN   BIT(17)

◆ SSCR4_TOT_FRM_PRD

#define SSCR4_TOT_FRM_PRD ( x)
Value:
((x) << 7)

◆ SSCR5_FRM_ASRT_CLOCKS

#define SSCR5_FRM_ASRT_CLOCKS ( x)
Value:
(((x) - 1) << 1)

◆ SSCR5_FRM_POLARITY

#define SSCR5_FRM_POLARITY ( x)
Value:
SET_BIT(0, x)

◆ SSDR

#define SSDR   0x10

◆ SSITR

#define SSITR   0x0C

◆ SSP_CLK_BCLK_ACTIVE

#define SSP_CLK_BCLK_ACTIVE   BIT(3)

◆ SSP_CLK_BCLK_ES_REQ

#define SSP_CLK_BCLK_ES_REQ   BIT(2)

◆ SSP_CLK_MCLK_ACTIVE

#define SSP_CLK_MCLK_ACTIVE   BIT(1)

◆ SSP_CLK_MCLK_AON_REQ

#define SSP_CLK_MCLK_AON_REQ   BIT(4)

◆ SSP_CLK_MCLK_ES_REQ

#define SSP_CLK_MCLK_ES_REQ   BIT(0)

◆ SSP_CLOCK_AUDIO_CARDINAL

#define SSP_CLOCK_AUDIO_CARDINAL   0x1

◆ SSP_CLOCK_PLL_FIXED

#define SSP_CLOCK_PLL_FIXED   0x2

◆ SSP_CLOCK_XTAL_OSCILLATOR

#define SSP_CLOCK_XTAL_OSCILLATOR   0x0

◆ ssp_irq

#define ssp_irq ( ssp)
Value:
ssp->plat_data.irq

◆ SSP_MAX_SEND_TIME_PER_SAMPLE

#define SSP_MAX_SEND_TIME_PER_SAMPLE   125

◆ SSP_RX_FLUSH_RETRY_MAX

#define SSP_RX_FLUSH_RETRY_MAX   16

◆ SSPSP

#define SSPSP   0x2C

◆ SSPSP2

#define SSPSP2   0x44

◆ SSPSP2_FEP_MASK

#define SSPSP2_FEP_MASK   0xff

◆ SSPSP_DMYSTOP

#define SSPSP_DMYSTOP ( x)
Value:
SET_BITS(24, 23, x)

◆ SSPSP_DMYSTOP_BITS

#define SSPSP_DMYSTOP_BITS   2

◆ SSPSP_DMYSTOP_MASK

#define SSPSP_DMYSTOP_MASK   MASK(SSPSP_DMYSTOP_BITS - 1, 0)

◆ SSPSP_DMYSTRT

#define SSPSP_DMYSTRT ( x)
Value:
SET_BITS(8, 7, x)

◆ SSPSP_EDMYSTOP

#define SSPSP_EDMYSTOP ( x)
Value:
SET_BITS(28, 26, x)

◆ SSPSP_ETDS

#define SSPSP_ETDS   BIT(3)

◆ SSPSP_FSRT

#define SSPSP_FSRT   BIT(25)

◆ SSPSP_SCMODE

#define SSPSP_SCMODE ( x)
Value:
SET_BITS(1, 0, x)

◆ SSPSP_SFRMDLY

#define SSPSP_SFRMDLY ( x)
Value:
SET_BITS(15, 9, x)

◆ SSPSP_SFRMP

#define SSPSP_SFRMP ( x)
Value:
SET_BIT(2, x)

◆ SSPSP_SFRMWDTH

#define SSPSP_SFRMWDTH ( x)
Value:
SET_BITS(21, 16, x)

◆ SSPSP_STRTDLY

#define SSPSP_STRTDLY ( x)
Value:
SET_BITS(6, 4, x)

◆ SSRSA

#define SSRSA   0x34

◆ SSRSA_GET

#define SSRSA_GET ( x)
Value:
((x) & MASK(7, 0))

◆ SSRSA_RXEN

#define SSRSA_RXEN   BIT(8)

◆ SSRSA_SSRSA

#define SSRSA_SSRSA ( x)
Value:
SET_BITS(7, 0, x)

◆ SSSR

#define SSSR   0x08

◆ SSSR_BSY

#define SSSR_BSY   BIT(4)

◆ SSSR_RFS

#define SSSR_RFS   BIT(6)

◆ SSSR_RNE

#define SSSR_RNE   BIT(3)

◆ SSSR_ROR

#define SSSR_ROR   BIT(7)

◆ SSSR_TFS

#define SSSR_TFS   BIT(5)

◆ SSSR_TNF

#define SSSR_TNF   BIT(2)

◆ SSSR_TUR

#define SSSR_TUR   BIT(21)

◆ SSTO

#define SSTO   0x28

◆ SSTSA

#define SSTSA   0x30

◆ SSTSA_GET

#define SSTSA_GET ( x)
Value:
((x) & MASK(7, 0))

◆ SSTSA_SSTSA

#define SSTSA_SSTSA ( x)
Value:
SET_BITS(7, 0, x)

◆ SSTSA_TXEN

#define SSTSA_TXEN   BIT(8)

◆ SSTSS

#define SSTSS   0x38

Function Documentation

◆ ssp_read()

uint32_t ssp_read ( struct dai * dai,
uint32_t reg )
inlinestatic

◆ ssp_update_bits()

void ssp_update_bits ( struct dai * dai,
uint32_t reg,
uint32_t mask,
uint32_t value )
inlinestatic

◆ ssp_write()

void ssp_write ( struct dai * dai,
uint32_t reg,
uint32_t value )
inlinestatic

Variable Documentation

◆ ssp_driver

const struct dai_driver ssp_driver
extern

◆ ssp_freq

const struct freq_table* ssp_freq
extern

◆ ssp_freq_sources

const uint32_t* ssp_freq_sources
extern