162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * fsl_esai.h - ALSA ESAI interface for the Freescale i.MX SoC 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright (C) 2014 Freescale Semiconductor, Inc. 662306a36Sopenharmony_ci * 762306a36Sopenharmony_ci * Author: Nicolin Chen <Guangyu.Chen@freescale.com> 862306a36Sopenharmony_ci */ 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci#ifndef _FSL_ESAI_DAI_H 1162306a36Sopenharmony_ci#define _FSL_ESAI_DAI_H 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci/* ESAI Register Map */ 1462306a36Sopenharmony_ci#define REG_ESAI_ETDR 0x00 1562306a36Sopenharmony_ci#define REG_ESAI_ERDR 0x04 1662306a36Sopenharmony_ci#define REG_ESAI_ECR 0x08 1762306a36Sopenharmony_ci#define REG_ESAI_ESR 0x0C 1862306a36Sopenharmony_ci#define REG_ESAI_TFCR 0x10 1962306a36Sopenharmony_ci#define REG_ESAI_TFSR 0x14 2062306a36Sopenharmony_ci#define REG_ESAI_RFCR 0x18 2162306a36Sopenharmony_ci#define REG_ESAI_RFSR 0x1C 2262306a36Sopenharmony_ci#define REG_ESAI_xFCR(tx) (tx ? REG_ESAI_TFCR : REG_ESAI_RFCR) 2362306a36Sopenharmony_ci#define REG_ESAI_xFSR(tx) (tx ? REG_ESAI_TFSR : REG_ESAI_RFSR) 2462306a36Sopenharmony_ci#define REG_ESAI_TX0 0x80 2562306a36Sopenharmony_ci#define REG_ESAI_TX1 0x84 2662306a36Sopenharmony_ci#define REG_ESAI_TX2 0x88 2762306a36Sopenharmony_ci#define REG_ESAI_TX3 0x8C 2862306a36Sopenharmony_ci#define REG_ESAI_TX4 0x90 2962306a36Sopenharmony_ci#define REG_ESAI_TX5 0x94 3062306a36Sopenharmony_ci#define REG_ESAI_TSR 0x98 3162306a36Sopenharmony_ci#define REG_ESAI_RX0 0xA0 3262306a36Sopenharmony_ci#define REG_ESAI_RX1 0xA4 3362306a36Sopenharmony_ci#define REG_ESAI_RX2 0xA8 3462306a36Sopenharmony_ci#define REG_ESAI_RX3 0xAC 3562306a36Sopenharmony_ci#define REG_ESAI_SAISR 0xCC 3662306a36Sopenharmony_ci#define REG_ESAI_SAICR 0xD0 3762306a36Sopenharmony_ci#define REG_ESAI_TCR 0xD4 3862306a36Sopenharmony_ci#define REG_ESAI_TCCR 0xD8 3962306a36Sopenharmony_ci#define REG_ESAI_RCR 0xDC 4062306a36Sopenharmony_ci#define REG_ESAI_RCCR 0xE0 4162306a36Sopenharmony_ci#define REG_ESAI_xCR(tx) (tx ? REG_ESAI_TCR : REG_ESAI_RCR) 4262306a36Sopenharmony_ci#define REG_ESAI_xCCR(tx) (tx ? REG_ESAI_TCCR : REG_ESAI_RCCR) 4362306a36Sopenharmony_ci#define REG_ESAI_TSMA 0xE4 4462306a36Sopenharmony_ci#define REG_ESAI_TSMB 0xE8 4562306a36Sopenharmony_ci#define REG_ESAI_RSMA 0xEC 4662306a36Sopenharmony_ci#define REG_ESAI_RSMB 0xF0 4762306a36Sopenharmony_ci#define REG_ESAI_xSMA(tx) (tx ? REG_ESAI_TSMA : REG_ESAI_RSMA) 4862306a36Sopenharmony_ci#define REG_ESAI_xSMB(tx) (tx ? REG_ESAI_TSMB : REG_ESAI_RSMB) 4962306a36Sopenharmony_ci#define REG_ESAI_PRRC 0xF8 5062306a36Sopenharmony_ci#define REG_ESAI_PCRC 0xFC 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_ci/* ESAI Control Register -- REG_ESAI_ECR 0x8 */ 5362306a36Sopenharmony_ci#define ESAI_ECR_ETI_SHIFT 19 5462306a36Sopenharmony_ci#define ESAI_ECR_ETI_MASK (1 << ESAI_ECR_ETI_SHIFT) 5562306a36Sopenharmony_ci#define ESAI_ECR_ETI (1 << ESAI_ECR_ETI_SHIFT) 5662306a36Sopenharmony_ci#define ESAI_ECR_ETO_SHIFT 18 5762306a36Sopenharmony_ci#define ESAI_ECR_ETO_MASK (1 << ESAI_ECR_ETO_SHIFT) 5862306a36Sopenharmony_ci#define ESAI_ECR_ETO (1 << ESAI_ECR_ETO_SHIFT) 5962306a36Sopenharmony_ci#define ESAI_ECR_ERI_SHIFT 17 6062306a36Sopenharmony_ci#define ESAI_ECR_ERI_MASK (1 << ESAI_ECR_ERI_SHIFT) 6162306a36Sopenharmony_ci#define ESAI_ECR_ERI (1 << ESAI_ECR_ERI_SHIFT) 6262306a36Sopenharmony_ci#define ESAI_ECR_ERO_SHIFT 16 6362306a36Sopenharmony_ci#define ESAI_ECR_ERO_MASK (1 << ESAI_ECR_ERO_SHIFT) 6462306a36Sopenharmony_ci#define ESAI_ECR_ERO (1 << ESAI_ECR_ERO_SHIFT) 6562306a36Sopenharmony_ci#define ESAI_ECR_ERST_SHIFT 1 6662306a36Sopenharmony_ci#define ESAI_ECR_ERST_MASK (1 << ESAI_ECR_ERST_SHIFT) 6762306a36Sopenharmony_ci#define ESAI_ECR_ERST (1 << ESAI_ECR_ERST_SHIFT) 6862306a36Sopenharmony_ci#define ESAI_ECR_ESAIEN_SHIFT 0 6962306a36Sopenharmony_ci#define ESAI_ECR_ESAIEN_MASK (1 << ESAI_ECR_ESAIEN_SHIFT) 7062306a36Sopenharmony_ci#define ESAI_ECR_ESAIEN (1 << ESAI_ECR_ESAIEN_SHIFT) 7162306a36Sopenharmony_ci 7262306a36Sopenharmony_ci/* ESAI Status Register -- REG_ESAI_ESR 0xC */ 7362306a36Sopenharmony_ci#define ESAI_ESR_TINIT_SHIFT 10 7462306a36Sopenharmony_ci#define ESAI_ESR_TINIT_MASK (1 << ESAI_ESR_TINIT_SHIFT) 7562306a36Sopenharmony_ci#define ESAI_ESR_TINIT (1 << ESAI_ESR_TINIT_SHIFT) 7662306a36Sopenharmony_ci#define ESAI_ESR_RFF_SHIFT 9 7762306a36Sopenharmony_ci#define ESAI_ESR_RFF_MASK (1 << ESAI_ESR_RFF_SHIFT) 7862306a36Sopenharmony_ci#define ESAI_ESR_RFF (1 << ESAI_ESR_RFF_SHIFT) 7962306a36Sopenharmony_ci#define ESAI_ESR_TFE_SHIFT 8 8062306a36Sopenharmony_ci#define ESAI_ESR_TFE_MASK (1 << ESAI_ESR_TFE_SHIFT) 8162306a36Sopenharmony_ci#define ESAI_ESR_TFE (1 << ESAI_ESR_TFE_SHIFT) 8262306a36Sopenharmony_ci#define ESAI_ESR_TLS_SHIFT 7 8362306a36Sopenharmony_ci#define ESAI_ESR_TLS_MASK (1 << ESAI_ESR_TLS_SHIFT) 8462306a36Sopenharmony_ci#define ESAI_ESR_TLS (1 << ESAI_ESR_TLS_SHIFT) 8562306a36Sopenharmony_ci#define ESAI_ESR_TDE_SHIFT 6 8662306a36Sopenharmony_ci#define ESAI_ESR_TDE_MASK (1 << ESAI_ESR_TDE_SHIFT) 8762306a36Sopenharmony_ci#define ESAI_ESR_TDE (1 << ESAI_ESR_TDE_SHIFT) 8862306a36Sopenharmony_ci#define ESAI_ESR_TED_SHIFT 5 8962306a36Sopenharmony_ci#define ESAI_ESR_TED_MASK (1 << ESAI_ESR_TED_SHIFT) 9062306a36Sopenharmony_ci#define ESAI_ESR_TED (1 << ESAI_ESR_TED_SHIFT) 9162306a36Sopenharmony_ci#define ESAI_ESR_TD_SHIFT 4 9262306a36Sopenharmony_ci#define ESAI_ESR_TD_MASK (1 << ESAI_ESR_TD_SHIFT) 9362306a36Sopenharmony_ci#define ESAI_ESR_TD (1 << ESAI_ESR_TD_SHIFT) 9462306a36Sopenharmony_ci#define ESAI_ESR_RLS_SHIFT 3 9562306a36Sopenharmony_ci#define ESAI_ESR_RLS_MASK (1 << ESAI_ESR_RLS_SHIFT) 9662306a36Sopenharmony_ci#define ESAI_ESR_RLS (1 << ESAI_ESR_RLS_SHIFT) 9762306a36Sopenharmony_ci#define ESAI_ESR_RDE_SHIFT 2 9862306a36Sopenharmony_ci#define ESAI_ESR_RDE_MASK (1 << ESAI_ESR_RDE_SHIFT) 9962306a36Sopenharmony_ci#define ESAI_ESR_RDE (1 << ESAI_ESR_RDE_SHIFT) 10062306a36Sopenharmony_ci#define ESAI_ESR_RED_SHIFT 1 10162306a36Sopenharmony_ci#define ESAI_ESR_RED_MASK (1 << ESAI_ESR_RED_SHIFT) 10262306a36Sopenharmony_ci#define ESAI_ESR_RED (1 << ESAI_ESR_RED_SHIFT) 10362306a36Sopenharmony_ci#define ESAI_ESR_RD_SHIFT 0 10462306a36Sopenharmony_ci#define ESAI_ESR_RD_MASK (1 << ESAI_ESR_RD_SHIFT) 10562306a36Sopenharmony_ci#define ESAI_ESR_RD (1 << ESAI_ESR_RD_SHIFT) 10662306a36Sopenharmony_ci 10762306a36Sopenharmony_ci/* 10862306a36Sopenharmony_ci * Transmit FIFO Configuration Register -- REG_ESAI_TFCR 0x10 10962306a36Sopenharmony_ci * Receive FIFO Configuration Register -- REG_ESAI_RFCR 0x18 11062306a36Sopenharmony_ci */ 11162306a36Sopenharmony_ci#define ESAI_xFCR_TIEN_SHIFT 19 11262306a36Sopenharmony_ci#define ESAI_xFCR_TIEN_MASK (1 << ESAI_xFCR_TIEN_SHIFT) 11362306a36Sopenharmony_ci#define ESAI_xFCR_TIEN (1 << ESAI_xFCR_TIEN_SHIFT) 11462306a36Sopenharmony_ci#define ESAI_xFCR_REXT_SHIFT 19 11562306a36Sopenharmony_ci#define ESAI_xFCR_REXT_MASK (1 << ESAI_xFCR_REXT_SHIFT) 11662306a36Sopenharmony_ci#define ESAI_xFCR_REXT (1 << ESAI_xFCR_REXT_SHIFT) 11762306a36Sopenharmony_ci#define ESAI_xFCR_xWA_SHIFT 16 11862306a36Sopenharmony_ci#define ESAI_xFCR_xWA_WIDTH 3 11962306a36Sopenharmony_ci#define ESAI_xFCR_xWA_MASK (((1 << ESAI_xFCR_xWA_WIDTH) - 1) << ESAI_xFCR_xWA_SHIFT) 12062306a36Sopenharmony_ci#define ESAI_xFCR_xWA(v) (((8 - ((v) >> 2)) << ESAI_xFCR_xWA_SHIFT) & ESAI_xFCR_xWA_MASK) 12162306a36Sopenharmony_ci#define ESAI_xFCR_xFWM_SHIFT 8 12262306a36Sopenharmony_ci#define ESAI_xFCR_xFWM_WIDTH 8 12362306a36Sopenharmony_ci#define ESAI_xFCR_xFWM_MASK (((1 << ESAI_xFCR_xFWM_WIDTH) - 1) << ESAI_xFCR_xFWM_SHIFT) 12462306a36Sopenharmony_ci#define ESAI_xFCR_xFWM(v) ((((v) - 1) << ESAI_xFCR_xFWM_SHIFT) & ESAI_xFCR_xFWM_MASK) 12562306a36Sopenharmony_ci#define ESAI_xFCR_xE_SHIFT 2 12662306a36Sopenharmony_ci#define ESAI_xFCR_TE_WIDTH 6 12762306a36Sopenharmony_ci#define ESAI_xFCR_RE_WIDTH 4 12862306a36Sopenharmony_ci#define ESAI_xFCR_TE_MASK (((1 << ESAI_xFCR_TE_WIDTH) - 1) << ESAI_xFCR_xE_SHIFT) 12962306a36Sopenharmony_ci#define ESAI_xFCR_RE_MASK (((1 << ESAI_xFCR_RE_WIDTH) - 1) << ESAI_xFCR_xE_SHIFT) 13062306a36Sopenharmony_ci#define ESAI_xFCR_TE(x) ((ESAI_xFCR_TE_MASK >> (ESAI_xFCR_TE_WIDTH - x)) & ESAI_xFCR_TE_MASK) 13162306a36Sopenharmony_ci#define ESAI_xFCR_RE(x) ((ESAI_xFCR_RE_MASK >> (ESAI_xFCR_RE_WIDTH - x)) & ESAI_xFCR_RE_MASK) 13262306a36Sopenharmony_ci#define ESAI_xFCR_xFR_SHIFT 1 13362306a36Sopenharmony_ci#define ESAI_xFCR_xFR_MASK (1 << ESAI_xFCR_xFR_SHIFT) 13462306a36Sopenharmony_ci#define ESAI_xFCR_xFR (1 << ESAI_xFCR_xFR_SHIFT) 13562306a36Sopenharmony_ci#define ESAI_xFCR_xFEN_SHIFT 0 13662306a36Sopenharmony_ci#define ESAI_xFCR_xFEN_MASK (1 << ESAI_xFCR_xFEN_SHIFT) 13762306a36Sopenharmony_ci#define ESAI_xFCR_xFEN (1 << ESAI_xFCR_xFEN_SHIFT) 13862306a36Sopenharmony_ci 13962306a36Sopenharmony_ci/* 14062306a36Sopenharmony_ci * Transmit FIFO Status Register -- REG_ESAI_TFSR 0x14 14162306a36Sopenharmony_ci * Receive FIFO Status Register --REG_ESAI_RFSR 0x1C 14262306a36Sopenharmony_ci */ 14362306a36Sopenharmony_ci#define ESAI_xFSR_NTFO_SHIFT 12 14462306a36Sopenharmony_ci#define ESAI_xFSR_NRFI_SHIFT 12 14562306a36Sopenharmony_ci#define ESAI_xFSR_NTFI_SHIFT 8 14662306a36Sopenharmony_ci#define ESAI_xFSR_NRFO_SHIFT 8 14762306a36Sopenharmony_ci#define ESAI_xFSR_NTFx_WIDTH 3 14862306a36Sopenharmony_ci#define ESAI_xFSR_NRFx_WIDTH 2 14962306a36Sopenharmony_ci#define ESAI_xFSR_NTFO_MASK (((1 << ESAI_xFSR_NTFx_WIDTH) - 1) << ESAI_xFSR_NTFO_SHIFT) 15062306a36Sopenharmony_ci#define ESAI_xFSR_NTFI_MASK (((1 << ESAI_xFSR_NTFx_WIDTH) - 1) << ESAI_xFSR_NTFI_SHIFT) 15162306a36Sopenharmony_ci#define ESAI_xFSR_NRFO_MASK (((1 << ESAI_xFSR_NRFx_WIDTH) - 1) << ESAI_xFSR_NRFO_SHIFT) 15262306a36Sopenharmony_ci#define ESAI_xFSR_NRFI_MASK (((1 << ESAI_xFSR_NRFx_WIDTH) - 1) << ESAI_xFSR_NRFI_SHIFT) 15362306a36Sopenharmony_ci#define ESAI_xFSR_xFCNT_SHIFT 0 15462306a36Sopenharmony_ci#define ESAI_xFSR_xFCNT_WIDTH 8 15562306a36Sopenharmony_ci#define ESAI_xFSR_xFCNT_MASK (((1 << ESAI_xFSR_xFCNT_WIDTH) - 1) << ESAI_xFSR_xFCNT_SHIFT) 15662306a36Sopenharmony_ci 15762306a36Sopenharmony_ci/* ESAI Transmit Slot Register -- REG_ESAI_TSR 0x98 */ 15862306a36Sopenharmony_ci#define ESAI_TSR_SHIFT 0 15962306a36Sopenharmony_ci#define ESAI_TSR_WIDTH 24 16062306a36Sopenharmony_ci#define ESAI_TSR_MASK (((1 << ESAI_TSR_WIDTH) - 1) << ESAI_TSR_SHIFT) 16162306a36Sopenharmony_ci 16262306a36Sopenharmony_ci/* Serial Audio Interface Status Register -- REG_ESAI_SAISR 0xCC */ 16362306a36Sopenharmony_ci#define ESAI_SAISR_TODFE_SHIFT 17 16462306a36Sopenharmony_ci#define ESAI_SAISR_TODFE_MASK (1 << ESAI_SAISR_TODFE_SHIFT) 16562306a36Sopenharmony_ci#define ESAI_SAISR_TODFE (1 << ESAI_SAISR_TODFE_SHIFT) 16662306a36Sopenharmony_ci#define ESAI_SAISR_TEDE_SHIFT 16 16762306a36Sopenharmony_ci#define ESAI_SAISR_TEDE_MASK (1 << ESAI_SAISR_TEDE_SHIFT) 16862306a36Sopenharmony_ci#define ESAI_SAISR_TEDE (1 << ESAI_SAISR_TEDE_SHIFT) 16962306a36Sopenharmony_ci#define ESAI_SAISR_TDE_SHIFT 15 17062306a36Sopenharmony_ci#define ESAI_SAISR_TDE_MASK (1 << ESAI_SAISR_TDE_SHIFT) 17162306a36Sopenharmony_ci#define ESAI_SAISR_TDE (1 << ESAI_SAISR_TDE_SHIFT) 17262306a36Sopenharmony_ci#define ESAI_SAISR_TUE_SHIFT 14 17362306a36Sopenharmony_ci#define ESAI_SAISR_TUE_MASK (1 << ESAI_SAISR_TUE_SHIFT) 17462306a36Sopenharmony_ci#define ESAI_SAISR_TUE (1 << ESAI_SAISR_TUE_SHIFT) 17562306a36Sopenharmony_ci#define ESAI_SAISR_TFS_SHIFT 13 17662306a36Sopenharmony_ci#define ESAI_SAISR_TFS_MASK (1 << ESAI_SAISR_TFS_SHIFT) 17762306a36Sopenharmony_ci#define ESAI_SAISR_TFS (1 << ESAI_SAISR_TFS_SHIFT) 17862306a36Sopenharmony_ci#define ESAI_SAISR_RODF_SHIFT 10 17962306a36Sopenharmony_ci#define ESAI_SAISR_RODF_MASK (1 << ESAI_SAISR_RODF_SHIFT) 18062306a36Sopenharmony_ci#define ESAI_SAISR_RODF (1 << ESAI_SAISR_RODF_SHIFT) 18162306a36Sopenharmony_ci#define ESAI_SAISR_REDF_SHIFT 9 18262306a36Sopenharmony_ci#define ESAI_SAISR_REDF_MASK (1 << ESAI_SAISR_REDF_SHIFT) 18362306a36Sopenharmony_ci#define ESAI_SAISR_REDF (1 << ESAI_SAISR_REDF_SHIFT) 18462306a36Sopenharmony_ci#define ESAI_SAISR_RDF_SHIFT 8 18562306a36Sopenharmony_ci#define ESAI_SAISR_RDF_MASK (1 << ESAI_SAISR_RDF_SHIFT) 18662306a36Sopenharmony_ci#define ESAI_SAISR_RDF (1 << ESAI_SAISR_RDF_SHIFT) 18762306a36Sopenharmony_ci#define ESAI_SAISR_ROE_SHIFT 7 18862306a36Sopenharmony_ci#define ESAI_SAISR_ROE_MASK (1 << ESAI_SAISR_ROE_SHIFT) 18962306a36Sopenharmony_ci#define ESAI_SAISR_ROE (1 << ESAI_SAISR_ROE_SHIFT) 19062306a36Sopenharmony_ci#define ESAI_SAISR_RFS_SHIFT 6 19162306a36Sopenharmony_ci#define ESAI_SAISR_RFS_MASK (1 << ESAI_SAISR_RFS_SHIFT) 19262306a36Sopenharmony_ci#define ESAI_SAISR_RFS (1 << ESAI_SAISR_RFS_SHIFT) 19362306a36Sopenharmony_ci#define ESAI_SAISR_IF2_SHIFT 2 19462306a36Sopenharmony_ci#define ESAI_SAISR_IF2_MASK (1 << ESAI_SAISR_IF2_SHIFT) 19562306a36Sopenharmony_ci#define ESAI_SAISR_IF2 (1 << ESAI_SAISR_IF2_SHIFT) 19662306a36Sopenharmony_ci#define ESAI_SAISR_IF1_SHIFT 1 19762306a36Sopenharmony_ci#define ESAI_SAISR_IF1_MASK (1 << ESAI_SAISR_IF1_SHIFT) 19862306a36Sopenharmony_ci#define ESAI_SAISR_IF1 (1 << ESAI_SAISR_IF1_SHIFT) 19962306a36Sopenharmony_ci#define ESAI_SAISR_IF0_SHIFT 0 20062306a36Sopenharmony_ci#define ESAI_SAISR_IF0_MASK (1 << ESAI_SAISR_IF0_SHIFT) 20162306a36Sopenharmony_ci#define ESAI_SAISR_IF0 (1 << ESAI_SAISR_IF0_SHIFT) 20262306a36Sopenharmony_ci 20362306a36Sopenharmony_ci/* Serial Audio Interface Control Register -- REG_ESAI_SAICR 0xD0 */ 20462306a36Sopenharmony_ci#define ESAI_SAICR_ALC_SHIFT 8 20562306a36Sopenharmony_ci#define ESAI_SAICR_ALC_MASK (1 << ESAI_SAICR_ALC_SHIFT) 20662306a36Sopenharmony_ci#define ESAI_SAICR_ALC (1 << ESAI_SAICR_ALC_SHIFT) 20762306a36Sopenharmony_ci#define ESAI_SAICR_TEBE_SHIFT 7 20862306a36Sopenharmony_ci#define ESAI_SAICR_TEBE_MASK (1 << ESAI_SAICR_TEBE_SHIFT) 20962306a36Sopenharmony_ci#define ESAI_SAICR_TEBE (1 << ESAI_SAICR_TEBE_SHIFT) 21062306a36Sopenharmony_ci#define ESAI_SAICR_SYNC_SHIFT 6 21162306a36Sopenharmony_ci#define ESAI_SAICR_SYNC_MASK (1 << ESAI_SAICR_SYNC_SHIFT) 21262306a36Sopenharmony_ci#define ESAI_SAICR_SYNC (1 << ESAI_SAICR_SYNC_SHIFT) 21362306a36Sopenharmony_ci#define ESAI_SAICR_OF2_SHIFT 2 21462306a36Sopenharmony_ci#define ESAI_SAICR_OF2_MASK (1 << ESAI_SAICR_OF2_SHIFT) 21562306a36Sopenharmony_ci#define ESAI_SAICR_OF2 (1 << ESAI_SAICR_OF2_SHIFT) 21662306a36Sopenharmony_ci#define ESAI_SAICR_OF1_SHIFT 1 21762306a36Sopenharmony_ci#define ESAI_SAICR_OF1_MASK (1 << ESAI_SAICR_OF1_SHIFT) 21862306a36Sopenharmony_ci#define ESAI_SAICR_OF1 (1 << ESAI_SAICR_OF1_SHIFT) 21962306a36Sopenharmony_ci#define ESAI_SAICR_OF0_SHIFT 0 22062306a36Sopenharmony_ci#define ESAI_SAICR_OF0_MASK (1 << ESAI_SAICR_OF0_SHIFT) 22162306a36Sopenharmony_ci#define ESAI_SAICR_OF0 (1 << ESAI_SAICR_OF0_SHIFT) 22262306a36Sopenharmony_ci 22362306a36Sopenharmony_ci/* 22462306a36Sopenharmony_ci * Transmit Control Register -- REG_ESAI_TCR 0xD4 22562306a36Sopenharmony_ci * Receive Control Register -- REG_ESAI_RCR 0xDC 22662306a36Sopenharmony_ci */ 22762306a36Sopenharmony_ci#define ESAI_xCR_xLIE_SHIFT 23 22862306a36Sopenharmony_ci#define ESAI_xCR_xLIE_MASK (1 << ESAI_xCR_xLIE_SHIFT) 22962306a36Sopenharmony_ci#define ESAI_xCR_xLIE (1 << ESAI_xCR_xLIE_SHIFT) 23062306a36Sopenharmony_ci#define ESAI_xCR_xIE_SHIFT 22 23162306a36Sopenharmony_ci#define ESAI_xCR_xIE_MASK (1 << ESAI_xCR_xIE_SHIFT) 23262306a36Sopenharmony_ci#define ESAI_xCR_xIE (1 << ESAI_xCR_xIE_SHIFT) 23362306a36Sopenharmony_ci#define ESAI_xCR_xEDIE_SHIFT 21 23462306a36Sopenharmony_ci#define ESAI_xCR_xEDIE_MASK (1 << ESAI_xCR_xEDIE_SHIFT) 23562306a36Sopenharmony_ci#define ESAI_xCR_xEDIE (1 << ESAI_xCR_xEDIE_SHIFT) 23662306a36Sopenharmony_ci#define ESAI_xCR_xEIE_SHIFT 20 23762306a36Sopenharmony_ci#define ESAI_xCR_xEIE_MASK (1 << ESAI_xCR_xEIE_SHIFT) 23862306a36Sopenharmony_ci#define ESAI_xCR_xEIE (1 << ESAI_xCR_xEIE_SHIFT) 23962306a36Sopenharmony_ci#define ESAI_xCR_xPR_SHIFT 19 24062306a36Sopenharmony_ci#define ESAI_xCR_xPR_MASK (1 << ESAI_xCR_xPR_SHIFT) 24162306a36Sopenharmony_ci#define ESAI_xCR_xPR (1 << ESAI_xCR_xPR_SHIFT) 24262306a36Sopenharmony_ci#define ESAI_xCR_PADC_SHIFT 17 24362306a36Sopenharmony_ci#define ESAI_xCR_PADC_MASK (1 << ESAI_xCR_PADC_SHIFT) 24462306a36Sopenharmony_ci#define ESAI_xCR_PADC (1 << ESAI_xCR_PADC_SHIFT) 24562306a36Sopenharmony_ci#define ESAI_xCR_xFSR_SHIFT 16 24662306a36Sopenharmony_ci#define ESAI_xCR_xFSR_MASK (1 << ESAI_xCR_xFSR_SHIFT) 24762306a36Sopenharmony_ci#define ESAI_xCR_xFSR (1 << ESAI_xCR_xFSR_SHIFT) 24862306a36Sopenharmony_ci#define ESAI_xCR_xFSL_SHIFT 15 24962306a36Sopenharmony_ci#define ESAI_xCR_xFSL_MASK (1 << ESAI_xCR_xFSL_SHIFT) 25062306a36Sopenharmony_ci#define ESAI_xCR_xFSL (1 << ESAI_xCR_xFSL_SHIFT) 25162306a36Sopenharmony_ci#define ESAI_xCR_xSWS_SHIFT 10 25262306a36Sopenharmony_ci#define ESAI_xCR_xSWS_WIDTH 5 25362306a36Sopenharmony_ci#define ESAI_xCR_xSWS_MASK (((1 << ESAI_xCR_xSWS_WIDTH) - 1) << ESAI_xCR_xSWS_SHIFT) 25462306a36Sopenharmony_ci#define ESAI_xCR_xSWS(s, w) ((w < 24 ? (s - w + ((w - 8) >> 2)) : (s < 32 ? 0x1e : 0x1f)) << ESAI_xCR_xSWS_SHIFT) 25562306a36Sopenharmony_ci#define ESAI_xCR_xMOD_SHIFT 8 25662306a36Sopenharmony_ci#define ESAI_xCR_xMOD_WIDTH 2 25762306a36Sopenharmony_ci#define ESAI_xCR_xMOD_MASK (((1 << ESAI_xCR_xMOD_WIDTH) - 1) << ESAI_xCR_xMOD_SHIFT) 25862306a36Sopenharmony_ci#define ESAI_xCR_xMOD_ONDEMAND (0x1 << ESAI_xCR_xMOD_SHIFT) 25962306a36Sopenharmony_ci#define ESAI_xCR_xMOD_NETWORK (0x1 << ESAI_xCR_xMOD_SHIFT) 26062306a36Sopenharmony_ci#define ESAI_xCR_xMOD_AC97 (0x3 << ESAI_xCR_xMOD_SHIFT) 26162306a36Sopenharmony_ci#define ESAI_xCR_xWA_SHIFT 7 26262306a36Sopenharmony_ci#define ESAI_xCR_xWA_MASK (1 << ESAI_xCR_xWA_SHIFT) 26362306a36Sopenharmony_ci#define ESAI_xCR_xWA (1 << ESAI_xCR_xWA_SHIFT) 26462306a36Sopenharmony_ci#define ESAI_xCR_xSHFD_SHIFT 6 26562306a36Sopenharmony_ci#define ESAI_xCR_xSHFD_MASK (1 << ESAI_xCR_xSHFD_SHIFT) 26662306a36Sopenharmony_ci#define ESAI_xCR_xSHFD (1 << ESAI_xCR_xSHFD_SHIFT) 26762306a36Sopenharmony_ci#define ESAI_xCR_xE_SHIFT 0 26862306a36Sopenharmony_ci#define ESAI_xCR_TE_WIDTH 6 26962306a36Sopenharmony_ci#define ESAI_xCR_RE_WIDTH 4 27062306a36Sopenharmony_ci#define ESAI_xCR_TE_MASK (((1 << ESAI_xCR_TE_WIDTH) - 1) << ESAI_xCR_xE_SHIFT) 27162306a36Sopenharmony_ci#define ESAI_xCR_RE_MASK (((1 << ESAI_xCR_RE_WIDTH) - 1) << ESAI_xCR_xE_SHIFT) 27262306a36Sopenharmony_ci#define ESAI_xCR_TE(x) ((ESAI_xCR_TE_MASK >> (ESAI_xCR_TE_WIDTH - x)) & ESAI_xCR_TE_MASK) 27362306a36Sopenharmony_ci#define ESAI_xCR_RE(x) ((ESAI_xCR_RE_MASK >> (ESAI_xCR_RE_WIDTH - x)) & ESAI_xCR_RE_MASK) 27462306a36Sopenharmony_ci 27562306a36Sopenharmony_ci/* 27662306a36Sopenharmony_ci * Transmit Clock Control Register -- REG_ESAI_TCCR 0xD8 27762306a36Sopenharmony_ci * Receive Clock Control Register -- REG_ESAI_RCCR 0xE0 27862306a36Sopenharmony_ci */ 27962306a36Sopenharmony_ci#define ESAI_xCCR_xHCKD_SHIFT 23 28062306a36Sopenharmony_ci#define ESAI_xCCR_xHCKD_MASK (1 << ESAI_xCCR_xHCKD_SHIFT) 28162306a36Sopenharmony_ci#define ESAI_xCCR_xHCKD (1 << ESAI_xCCR_xHCKD_SHIFT) 28262306a36Sopenharmony_ci#define ESAI_xCCR_xFSD_SHIFT 22 28362306a36Sopenharmony_ci#define ESAI_xCCR_xFSD_MASK (1 << ESAI_xCCR_xFSD_SHIFT) 28462306a36Sopenharmony_ci#define ESAI_xCCR_xFSD (1 << ESAI_xCCR_xFSD_SHIFT) 28562306a36Sopenharmony_ci#define ESAI_xCCR_xCKD_SHIFT 21 28662306a36Sopenharmony_ci#define ESAI_xCCR_xCKD_MASK (1 << ESAI_xCCR_xCKD_SHIFT) 28762306a36Sopenharmony_ci#define ESAI_xCCR_xCKD (1 << ESAI_xCCR_xCKD_SHIFT) 28862306a36Sopenharmony_ci#define ESAI_xCCR_xHCKP_SHIFT 20 28962306a36Sopenharmony_ci#define ESAI_xCCR_xHCKP_MASK (1 << ESAI_xCCR_xHCKP_SHIFT) 29062306a36Sopenharmony_ci#define ESAI_xCCR_xHCKP (1 << ESAI_xCCR_xHCKP_SHIFT) 29162306a36Sopenharmony_ci#define ESAI_xCCR_xFSP_SHIFT 19 29262306a36Sopenharmony_ci#define ESAI_xCCR_xFSP_MASK (1 << ESAI_xCCR_xFSP_SHIFT) 29362306a36Sopenharmony_ci#define ESAI_xCCR_xFSP (1 << ESAI_xCCR_xFSP_SHIFT) 29462306a36Sopenharmony_ci#define ESAI_xCCR_xCKP_SHIFT 18 29562306a36Sopenharmony_ci#define ESAI_xCCR_xCKP_MASK (1 << ESAI_xCCR_xCKP_SHIFT) 29662306a36Sopenharmony_ci#define ESAI_xCCR_xCKP (1 << ESAI_xCCR_xCKP_SHIFT) 29762306a36Sopenharmony_ci#define ESAI_xCCR_xFP_SHIFT 14 29862306a36Sopenharmony_ci#define ESAI_xCCR_xFP_WIDTH 4 29962306a36Sopenharmony_ci#define ESAI_xCCR_xFP_MASK (((1 << ESAI_xCCR_xFP_WIDTH) - 1) << ESAI_xCCR_xFP_SHIFT) 30062306a36Sopenharmony_ci#define ESAI_xCCR_xFP(v) ((((v) - 1) << ESAI_xCCR_xFP_SHIFT) & ESAI_xCCR_xFP_MASK) 30162306a36Sopenharmony_ci#define ESAI_xCCR_xDC_SHIFT 9 30262306a36Sopenharmony_ci#define ESAI_xCCR_xDC_WIDTH 5 30362306a36Sopenharmony_ci#define ESAI_xCCR_xDC_MASK (((1 << ESAI_xCCR_xDC_WIDTH) - 1) << ESAI_xCCR_xDC_SHIFT) 30462306a36Sopenharmony_ci#define ESAI_xCCR_xDC(v) ((((v) - 1) << ESAI_xCCR_xDC_SHIFT) & ESAI_xCCR_xDC_MASK) 30562306a36Sopenharmony_ci#define ESAI_xCCR_xPSR_SHIFT 8 30662306a36Sopenharmony_ci#define ESAI_xCCR_xPSR_MASK (1 << ESAI_xCCR_xPSR_SHIFT) 30762306a36Sopenharmony_ci#define ESAI_xCCR_xPSR_BYPASS (1 << ESAI_xCCR_xPSR_SHIFT) 30862306a36Sopenharmony_ci#define ESAI_xCCR_xPSR_DIV8 (0 << ESAI_xCCR_xPSR_SHIFT) 30962306a36Sopenharmony_ci#define ESAI_xCCR_xPM_SHIFT 0 31062306a36Sopenharmony_ci#define ESAI_xCCR_xPM_WIDTH 8 31162306a36Sopenharmony_ci#define ESAI_xCCR_xPM_MASK (((1 << ESAI_xCCR_xPM_WIDTH) - 1) << ESAI_xCCR_xPM_SHIFT) 31262306a36Sopenharmony_ci#define ESAI_xCCR_xPM(v) ((((v) - 1) << ESAI_xCCR_xPM_SHIFT) & ESAI_xCCR_xPM_MASK) 31362306a36Sopenharmony_ci 31462306a36Sopenharmony_ci/* Transmit Slot Mask Register A/B -- REG_ESAI_TSMA/B 0xE4 ~ 0xF0 */ 31562306a36Sopenharmony_ci#define ESAI_xSMA_xS_SHIFT 0 31662306a36Sopenharmony_ci#define ESAI_xSMA_xS_WIDTH 16 31762306a36Sopenharmony_ci#define ESAI_xSMA_xS_MASK (((1 << ESAI_xSMA_xS_WIDTH) - 1) << ESAI_xSMA_xS_SHIFT) 31862306a36Sopenharmony_ci#define ESAI_xSMA_xS(v) ((v) & ESAI_xSMA_xS_MASK) 31962306a36Sopenharmony_ci#define ESAI_xSMB_xS_SHIFT 0 32062306a36Sopenharmony_ci#define ESAI_xSMB_xS_WIDTH 16 32162306a36Sopenharmony_ci#define ESAI_xSMB_xS_MASK (((1 << ESAI_xSMB_xS_WIDTH) - 1) << ESAI_xSMB_xS_SHIFT) 32262306a36Sopenharmony_ci#define ESAI_xSMB_xS(v) (((v) >> ESAI_xSMA_xS_WIDTH) & ESAI_xSMB_xS_MASK) 32362306a36Sopenharmony_ci 32462306a36Sopenharmony_ci/* Port C Direction Register -- REG_ESAI_PRRC 0xF8 */ 32562306a36Sopenharmony_ci#define ESAI_PRRC_PDC_SHIFT 0 32662306a36Sopenharmony_ci#define ESAI_PRRC_PDC_WIDTH 12 32762306a36Sopenharmony_ci#define ESAI_PRRC_PDC_MASK (((1 << ESAI_PRRC_PDC_WIDTH) - 1) << ESAI_PRRC_PDC_SHIFT) 32862306a36Sopenharmony_ci#define ESAI_PRRC_PDC(v) ((v) & ESAI_PRRC_PDC_MASK) 32962306a36Sopenharmony_ci 33062306a36Sopenharmony_ci/* Port C Control Register -- REG_ESAI_PCRC 0xFC */ 33162306a36Sopenharmony_ci#define ESAI_PCRC_PC_SHIFT 0 33262306a36Sopenharmony_ci#define ESAI_PCRC_PC_WIDTH 12 33362306a36Sopenharmony_ci#define ESAI_PCRC_PC_MASK (((1 << ESAI_PCRC_PC_WIDTH) - 1) << ESAI_PCRC_PC_SHIFT) 33462306a36Sopenharmony_ci#define ESAI_PCRC_PC(v) ((v) & ESAI_PCRC_PC_MASK) 33562306a36Sopenharmony_ci 33662306a36Sopenharmony_ci#define ESAI_GPIO 0xfff 33762306a36Sopenharmony_ci 33862306a36Sopenharmony_ci/* ESAI clock source */ 33962306a36Sopenharmony_ci#define ESAI_HCKT_FSYS 0 34062306a36Sopenharmony_ci#define ESAI_HCKT_EXTAL 1 34162306a36Sopenharmony_ci#define ESAI_HCKR_FSYS 2 34262306a36Sopenharmony_ci#define ESAI_HCKR_EXTAL 3 34362306a36Sopenharmony_ci 34462306a36Sopenharmony_ci/* ESAI clock divider */ 34562306a36Sopenharmony_ci#define ESAI_TX_DIV_PSR 0 34662306a36Sopenharmony_ci#define ESAI_TX_DIV_PM 1 34762306a36Sopenharmony_ci#define ESAI_TX_DIV_FP 2 34862306a36Sopenharmony_ci#define ESAI_RX_DIV_PSR 3 34962306a36Sopenharmony_ci#define ESAI_RX_DIV_PM 4 35062306a36Sopenharmony_ci#define ESAI_RX_DIV_FP 5 35162306a36Sopenharmony_ci#endif /* _FSL_ESAI_DAI_H */ 352