18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * fsl_esai.h - ALSA ESAI interface for the Freescale i.MX SoC 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Copyright (C) 2014 Freescale Semiconductor, Inc. 68c2ecf20Sopenharmony_ci * 78c2ecf20Sopenharmony_ci * Author: Nicolin Chen <Guangyu.Chen@freescale.com> 88c2ecf20Sopenharmony_ci */ 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci#ifndef _FSL_ESAI_DAI_H 118c2ecf20Sopenharmony_ci#define _FSL_ESAI_DAI_H 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ci/* ESAI Register Map */ 148c2ecf20Sopenharmony_ci#define REG_ESAI_ETDR 0x00 158c2ecf20Sopenharmony_ci#define REG_ESAI_ERDR 0x04 168c2ecf20Sopenharmony_ci#define REG_ESAI_ECR 0x08 178c2ecf20Sopenharmony_ci#define REG_ESAI_ESR 0x0C 188c2ecf20Sopenharmony_ci#define REG_ESAI_TFCR 0x10 198c2ecf20Sopenharmony_ci#define REG_ESAI_TFSR 0x14 208c2ecf20Sopenharmony_ci#define REG_ESAI_RFCR 0x18 218c2ecf20Sopenharmony_ci#define REG_ESAI_RFSR 0x1C 228c2ecf20Sopenharmony_ci#define REG_ESAI_xFCR(tx) (tx ? REG_ESAI_TFCR : REG_ESAI_RFCR) 238c2ecf20Sopenharmony_ci#define REG_ESAI_xFSR(tx) (tx ? REG_ESAI_TFSR : REG_ESAI_RFSR) 248c2ecf20Sopenharmony_ci#define REG_ESAI_TX0 0x80 258c2ecf20Sopenharmony_ci#define REG_ESAI_TX1 0x84 268c2ecf20Sopenharmony_ci#define REG_ESAI_TX2 0x88 278c2ecf20Sopenharmony_ci#define REG_ESAI_TX3 0x8C 288c2ecf20Sopenharmony_ci#define REG_ESAI_TX4 0x90 298c2ecf20Sopenharmony_ci#define REG_ESAI_TX5 0x94 308c2ecf20Sopenharmony_ci#define REG_ESAI_TSR 0x98 318c2ecf20Sopenharmony_ci#define REG_ESAI_RX0 0xA0 328c2ecf20Sopenharmony_ci#define REG_ESAI_RX1 0xA4 338c2ecf20Sopenharmony_ci#define REG_ESAI_RX2 0xA8 348c2ecf20Sopenharmony_ci#define REG_ESAI_RX3 0xAC 358c2ecf20Sopenharmony_ci#define REG_ESAI_SAISR 0xCC 368c2ecf20Sopenharmony_ci#define REG_ESAI_SAICR 0xD0 378c2ecf20Sopenharmony_ci#define REG_ESAI_TCR 0xD4 388c2ecf20Sopenharmony_ci#define REG_ESAI_TCCR 0xD8 398c2ecf20Sopenharmony_ci#define REG_ESAI_RCR 0xDC 408c2ecf20Sopenharmony_ci#define REG_ESAI_RCCR 0xE0 418c2ecf20Sopenharmony_ci#define REG_ESAI_xCR(tx) (tx ? REG_ESAI_TCR : REG_ESAI_RCR) 428c2ecf20Sopenharmony_ci#define REG_ESAI_xCCR(tx) (tx ? REG_ESAI_TCCR : REG_ESAI_RCCR) 438c2ecf20Sopenharmony_ci#define REG_ESAI_TSMA 0xE4 448c2ecf20Sopenharmony_ci#define REG_ESAI_TSMB 0xE8 458c2ecf20Sopenharmony_ci#define REG_ESAI_RSMA 0xEC 468c2ecf20Sopenharmony_ci#define REG_ESAI_RSMB 0xF0 478c2ecf20Sopenharmony_ci#define REG_ESAI_xSMA(tx) (tx ? REG_ESAI_TSMA : REG_ESAI_RSMA) 488c2ecf20Sopenharmony_ci#define REG_ESAI_xSMB(tx) (tx ? REG_ESAI_TSMB : REG_ESAI_RSMB) 498c2ecf20Sopenharmony_ci#define REG_ESAI_PRRC 0xF8 508c2ecf20Sopenharmony_ci#define REG_ESAI_PCRC 0xFC 518c2ecf20Sopenharmony_ci 528c2ecf20Sopenharmony_ci/* ESAI Control Register -- REG_ESAI_ECR 0x8 */ 538c2ecf20Sopenharmony_ci#define ESAI_ECR_ETI_SHIFT 19 548c2ecf20Sopenharmony_ci#define ESAI_ECR_ETI_MASK (1 << ESAI_ECR_ETI_SHIFT) 558c2ecf20Sopenharmony_ci#define ESAI_ECR_ETI (1 << ESAI_ECR_ETI_SHIFT) 568c2ecf20Sopenharmony_ci#define ESAI_ECR_ETO_SHIFT 18 578c2ecf20Sopenharmony_ci#define ESAI_ECR_ETO_MASK (1 << ESAI_ECR_ETO_SHIFT) 588c2ecf20Sopenharmony_ci#define ESAI_ECR_ETO (1 << ESAI_ECR_ETO_SHIFT) 598c2ecf20Sopenharmony_ci#define ESAI_ECR_ERI_SHIFT 17 608c2ecf20Sopenharmony_ci#define ESAI_ECR_ERI_MASK (1 << ESAI_ECR_ERI_SHIFT) 618c2ecf20Sopenharmony_ci#define ESAI_ECR_ERI (1 << ESAI_ECR_ERI_SHIFT) 628c2ecf20Sopenharmony_ci#define ESAI_ECR_ERO_SHIFT 16 638c2ecf20Sopenharmony_ci#define ESAI_ECR_ERO_MASK (1 << ESAI_ECR_ERO_SHIFT) 648c2ecf20Sopenharmony_ci#define ESAI_ECR_ERO (1 << ESAI_ECR_ERO_SHIFT) 658c2ecf20Sopenharmony_ci#define ESAI_ECR_ERST_SHIFT 1 668c2ecf20Sopenharmony_ci#define ESAI_ECR_ERST_MASK (1 << ESAI_ECR_ERST_SHIFT) 678c2ecf20Sopenharmony_ci#define ESAI_ECR_ERST (1 << ESAI_ECR_ERST_SHIFT) 688c2ecf20Sopenharmony_ci#define ESAI_ECR_ESAIEN_SHIFT 0 698c2ecf20Sopenharmony_ci#define ESAI_ECR_ESAIEN_MASK (1 << ESAI_ECR_ESAIEN_SHIFT) 708c2ecf20Sopenharmony_ci#define ESAI_ECR_ESAIEN (1 << ESAI_ECR_ESAIEN_SHIFT) 718c2ecf20Sopenharmony_ci 728c2ecf20Sopenharmony_ci/* ESAI Status Register -- REG_ESAI_ESR 0xC */ 738c2ecf20Sopenharmony_ci#define ESAI_ESR_TINIT_SHIFT 10 748c2ecf20Sopenharmony_ci#define ESAI_ESR_TINIT_MASK (1 << ESAI_ESR_TINIT_SHIFT) 758c2ecf20Sopenharmony_ci#define ESAI_ESR_TINIT (1 << ESAI_ESR_TINIT_SHIFT) 768c2ecf20Sopenharmony_ci#define ESAI_ESR_RFF_SHIFT 9 778c2ecf20Sopenharmony_ci#define ESAI_ESR_RFF_MASK (1 << ESAI_ESR_RFF_SHIFT) 788c2ecf20Sopenharmony_ci#define ESAI_ESR_RFF (1 << ESAI_ESR_RFF_SHIFT) 798c2ecf20Sopenharmony_ci#define ESAI_ESR_TFE_SHIFT 8 808c2ecf20Sopenharmony_ci#define ESAI_ESR_TFE_MASK (1 << ESAI_ESR_TFE_SHIFT) 818c2ecf20Sopenharmony_ci#define ESAI_ESR_TFE (1 << ESAI_ESR_TFE_SHIFT) 828c2ecf20Sopenharmony_ci#define ESAI_ESR_TLS_SHIFT 7 838c2ecf20Sopenharmony_ci#define ESAI_ESR_TLS_MASK (1 << ESAI_ESR_TLS_SHIFT) 848c2ecf20Sopenharmony_ci#define ESAI_ESR_TLS (1 << ESAI_ESR_TLS_SHIFT) 858c2ecf20Sopenharmony_ci#define ESAI_ESR_TDE_SHIFT 6 868c2ecf20Sopenharmony_ci#define ESAI_ESR_TDE_MASK (1 << ESAI_ESR_TDE_SHIFT) 878c2ecf20Sopenharmony_ci#define ESAI_ESR_TDE (1 << ESAI_ESR_TDE_SHIFT) 888c2ecf20Sopenharmony_ci#define ESAI_ESR_TED_SHIFT 5 898c2ecf20Sopenharmony_ci#define ESAI_ESR_TED_MASK (1 << ESAI_ESR_TED_SHIFT) 908c2ecf20Sopenharmony_ci#define ESAI_ESR_TED (1 << ESAI_ESR_TED_SHIFT) 918c2ecf20Sopenharmony_ci#define ESAI_ESR_TD_SHIFT 4 928c2ecf20Sopenharmony_ci#define ESAI_ESR_TD_MASK (1 << ESAI_ESR_TD_SHIFT) 938c2ecf20Sopenharmony_ci#define ESAI_ESR_TD (1 << ESAI_ESR_TD_SHIFT) 948c2ecf20Sopenharmony_ci#define ESAI_ESR_RLS_SHIFT 3 958c2ecf20Sopenharmony_ci#define ESAI_ESR_RLS_MASK (1 << ESAI_ESR_RLS_SHIFT) 968c2ecf20Sopenharmony_ci#define ESAI_ESR_RLS (1 << ESAI_ESR_RLS_SHIFT) 978c2ecf20Sopenharmony_ci#define ESAI_ESR_RDE_SHIFT 2 988c2ecf20Sopenharmony_ci#define ESAI_ESR_RDE_MASK (1 << ESAI_ESR_RDE_SHIFT) 998c2ecf20Sopenharmony_ci#define ESAI_ESR_RDE (1 << ESAI_ESR_RDE_SHIFT) 1008c2ecf20Sopenharmony_ci#define ESAI_ESR_RED_SHIFT 1 1018c2ecf20Sopenharmony_ci#define ESAI_ESR_RED_MASK (1 << ESAI_ESR_RED_SHIFT) 1028c2ecf20Sopenharmony_ci#define ESAI_ESR_RED (1 << ESAI_ESR_RED_SHIFT) 1038c2ecf20Sopenharmony_ci#define ESAI_ESR_RD_SHIFT 0 1048c2ecf20Sopenharmony_ci#define ESAI_ESR_RD_MASK (1 << ESAI_ESR_RD_SHIFT) 1058c2ecf20Sopenharmony_ci#define ESAI_ESR_RD (1 << ESAI_ESR_RD_SHIFT) 1068c2ecf20Sopenharmony_ci 1078c2ecf20Sopenharmony_ci/* 1088c2ecf20Sopenharmony_ci * Transmit FIFO Configuration Register -- REG_ESAI_TFCR 0x10 1098c2ecf20Sopenharmony_ci * Receive FIFO Configuration Register -- REG_ESAI_RFCR 0x18 1108c2ecf20Sopenharmony_ci */ 1118c2ecf20Sopenharmony_ci#define ESAI_xFCR_TIEN_SHIFT 19 1128c2ecf20Sopenharmony_ci#define ESAI_xFCR_TIEN_MASK (1 << ESAI_xFCR_TIEN_SHIFT) 1138c2ecf20Sopenharmony_ci#define ESAI_xFCR_TIEN (1 << ESAI_xFCR_TIEN_SHIFT) 1148c2ecf20Sopenharmony_ci#define ESAI_xFCR_REXT_SHIFT 19 1158c2ecf20Sopenharmony_ci#define ESAI_xFCR_REXT_MASK (1 << ESAI_xFCR_REXT_SHIFT) 1168c2ecf20Sopenharmony_ci#define ESAI_xFCR_REXT (1 << ESAI_xFCR_REXT_SHIFT) 1178c2ecf20Sopenharmony_ci#define ESAI_xFCR_xWA_SHIFT 16 1188c2ecf20Sopenharmony_ci#define ESAI_xFCR_xWA_WIDTH 3 1198c2ecf20Sopenharmony_ci#define ESAI_xFCR_xWA_MASK (((1 << ESAI_xFCR_xWA_WIDTH) - 1) << ESAI_xFCR_xWA_SHIFT) 1208c2ecf20Sopenharmony_ci#define ESAI_xFCR_xWA(v) (((8 - ((v) >> 2)) << ESAI_xFCR_xWA_SHIFT) & ESAI_xFCR_xWA_MASK) 1218c2ecf20Sopenharmony_ci#define ESAI_xFCR_xFWM_SHIFT 8 1228c2ecf20Sopenharmony_ci#define ESAI_xFCR_xFWM_WIDTH 8 1238c2ecf20Sopenharmony_ci#define ESAI_xFCR_xFWM_MASK (((1 << ESAI_xFCR_xFWM_WIDTH) - 1) << ESAI_xFCR_xFWM_SHIFT) 1248c2ecf20Sopenharmony_ci#define ESAI_xFCR_xFWM(v) ((((v) - 1) << ESAI_xFCR_xFWM_SHIFT) & ESAI_xFCR_xFWM_MASK) 1258c2ecf20Sopenharmony_ci#define ESAI_xFCR_xE_SHIFT 2 1268c2ecf20Sopenharmony_ci#define ESAI_xFCR_TE_WIDTH 6 1278c2ecf20Sopenharmony_ci#define ESAI_xFCR_RE_WIDTH 4 1288c2ecf20Sopenharmony_ci#define ESAI_xFCR_TE_MASK (((1 << ESAI_xFCR_TE_WIDTH) - 1) << ESAI_xFCR_xE_SHIFT) 1298c2ecf20Sopenharmony_ci#define ESAI_xFCR_RE_MASK (((1 << ESAI_xFCR_RE_WIDTH) - 1) << ESAI_xFCR_xE_SHIFT) 1308c2ecf20Sopenharmony_ci#define ESAI_xFCR_TE(x) ((ESAI_xFCR_TE_MASK >> (ESAI_xFCR_TE_WIDTH - x)) & ESAI_xFCR_TE_MASK) 1318c2ecf20Sopenharmony_ci#define ESAI_xFCR_RE(x) ((ESAI_xFCR_RE_MASK >> (ESAI_xFCR_RE_WIDTH - x)) & ESAI_xFCR_RE_MASK) 1328c2ecf20Sopenharmony_ci#define ESAI_xFCR_xFR_SHIFT 1 1338c2ecf20Sopenharmony_ci#define ESAI_xFCR_xFR_MASK (1 << ESAI_xFCR_xFR_SHIFT) 1348c2ecf20Sopenharmony_ci#define ESAI_xFCR_xFR (1 << ESAI_xFCR_xFR_SHIFT) 1358c2ecf20Sopenharmony_ci#define ESAI_xFCR_xFEN_SHIFT 0 1368c2ecf20Sopenharmony_ci#define ESAI_xFCR_xFEN_MASK (1 << ESAI_xFCR_xFEN_SHIFT) 1378c2ecf20Sopenharmony_ci#define ESAI_xFCR_xFEN (1 << ESAI_xFCR_xFEN_SHIFT) 1388c2ecf20Sopenharmony_ci 1398c2ecf20Sopenharmony_ci/* 1408c2ecf20Sopenharmony_ci * Transmit FIFO Status Register -- REG_ESAI_TFSR 0x14 1418c2ecf20Sopenharmony_ci * Receive FIFO Status Register --REG_ESAI_RFSR 0x1C 1428c2ecf20Sopenharmony_ci */ 1438c2ecf20Sopenharmony_ci#define ESAI_xFSR_NTFO_SHIFT 12 1448c2ecf20Sopenharmony_ci#define ESAI_xFSR_NRFI_SHIFT 12 1458c2ecf20Sopenharmony_ci#define ESAI_xFSR_NTFI_SHIFT 8 1468c2ecf20Sopenharmony_ci#define ESAI_xFSR_NRFO_SHIFT 8 1478c2ecf20Sopenharmony_ci#define ESAI_xFSR_NTFx_WIDTH 3 1488c2ecf20Sopenharmony_ci#define ESAI_xFSR_NRFx_WIDTH 2 1498c2ecf20Sopenharmony_ci#define ESAI_xFSR_NTFO_MASK (((1 << ESAI_xFSR_NTFx_WIDTH) - 1) << ESAI_xFSR_NTFO_SHIFT) 1508c2ecf20Sopenharmony_ci#define ESAI_xFSR_NTFI_MASK (((1 << ESAI_xFSR_NTFx_WIDTH) - 1) << ESAI_xFSR_NTFI_SHIFT) 1518c2ecf20Sopenharmony_ci#define ESAI_xFSR_NRFO_MASK (((1 << ESAI_xFSR_NRFx_WIDTH) - 1) << ESAI_xFSR_NRFO_SHIFT) 1528c2ecf20Sopenharmony_ci#define ESAI_xFSR_NRFI_MASK (((1 << ESAI_xFSR_NRFx_WIDTH) - 1) << ESAI_xFSR_NRFI_SHIFT) 1538c2ecf20Sopenharmony_ci#define ESAI_xFSR_xFCNT_SHIFT 0 1548c2ecf20Sopenharmony_ci#define ESAI_xFSR_xFCNT_WIDTH 8 1558c2ecf20Sopenharmony_ci#define ESAI_xFSR_xFCNT_MASK (((1 << ESAI_xFSR_xFCNT_WIDTH) - 1) << ESAI_xFSR_xFCNT_SHIFT) 1568c2ecf20Sopenharmony_ci 1578c2ecf20Sopenharmony_ci/* ESAI Transmit Slot Register -- REG_ESAI_TSR 0x98 */ 1588c2ecf20Sopenharmony_ci#define ESAI_TSR_SHIFT 0 1598c2ecf20Sopenharmony_ci#define ESAI_TSR_WIDTH 24 1608c2ecf20Sopenharmony_ci#define ESAI_TSR_MASK (((1 << ESAI_TSR_WIDTH) - 1) << ESAI_TSR_SHIFT) 1618c2ecf20Sopenharmony_ci 1628c2ecf20Sopenharmony_ci/* Serial Audio Interface Status Register -- REG_ESAI_SAISR 0xCC */ 1638c2ecf20Sopenharmony_ci#define ESAI_SAISR_TODFE_SHIFT 17 1648c2ecf20Sopenharmony_ci#define ESAI_SAISR_TODFE_MASK (1 << ESAI_SAISR_TODFE_SHIFT) 1658c2ecf20Sopenharmony_ci#define ESAI_SAISR_TODFE (1 << ESAI_SAISR_TODFE_SHIFT) 1668c2ecf20Sopenharmony_ci#define ESAI_SAISR_TEDE_SHIFT 16 1678c2ecf20Sopenharmony_ci#define ESAI_SAISR_TEDE_MASK (1 << ESAI_SAISR_TEDE_SHIFT) 1688c2ecf20Sopenharmony_ci#define ESAI_SAISR_TEDE (1 << ESAI_SAISR_TEDE_SHIFT) 1698c2ecf20Sopenharmony_ci#define ESAI_SAISR_TDE_SHIFT 15 1708c2ecf20Sopenharmony_ci#define ESAI_SAISR_TDE_MASK (1 << ESAI_SAISR_TDE_SHIFT) 1718c2ecf20Sopenharmony_ci#define ESAI_SAISR_TDE (1 << ESAI_SAISR_TDE_SHIFT) 1728c2ecf20Sopenharmony_ci#define ESAI_SAISR_TUE_SHIFT 14 1738c2ecf20Sopenharmony_ci#define ESAI_SAISR_TUE_MASK (1 << ESAI_SAISR_TUE_SHIFT) 1748c2ecf20Sopenharmony_ci#define ESAI_SAISR_TUE (1 << ESAI_SAISR_TUE_SHIFT) 1758c2ecf20Sopenharmony_ci#define ESAI_SAISR_TFS_SHIFT 13 1768c2ecf20Sopenharmony_ci#define ESAI_SAISR_TFS_MASK (1 << ESAI_SAISR_TFS_SHIFT) 1778c2ecf20Sopenharmony_ci#define ESAI_SAISR_TFS (1 << ESAI_SAISR_TFS_SHIFT) 1788c2ecf20Sopenharmony_ci#define ESAI_SAISR_RODF_SHIFT 10 1798c2ecf20Sopenharmony_ci#define ESAI_SAISR_RODF_MASK (1 << ESAI_SAISR_RODF_SHIFT) 1808c2ecf20Sopenharmony_ci#define ESAI_SAISR_RODF (1 << ESAI_SAISR_RODF_SHIFT) 1818c2ecf20Sopenharmony_ci#define ESAI_SAISR_REDF_SHIFT 9 1828c2ecf20Sopenharmony_ci#define ESAI_SAISR_REDF_MASK (1 << ESAI_SAISR_REDF_SHIFT) 1838c2ecf20Sopenharmony_ci#define ESAI_SAISR_REDF (1 << ESAI_SAISR_REDF_SHIFT) 1848c2ecf20Sopenharmony_ci#define ESAI_SAISR_RDF_SHIFT 8 1858c2ecf20Sopenharmony_ci#define ESAI_SAISR_RDF_MASK (1 << ESAI_SAISR_RDF_SHIFT) 1868c2ecf20Sopenharmony_ci#define ESAI_SAISR_RDF (1 << ESAI_SAISR_RDF_SHIFT) 1878c2ecf20Sopenharmony_ci#define ESAI_SAISR_ROE_SHIFT 7 1888c2ecf20Sopenharmony_ci#define ESAI_SAISR_ROE_MASK (1 << ESAI_SAISR_ROE_SHIFT) 1898c2ecf20Sopenharmony_ci#define ESAI_SAISR_ROE (1 << ESAI_SAISR_ROE_SHIFT) 1908c2ecf20Sopenharmony_ci#define ESAI_SAISR_RFS_SHIFT 6 1918c2ecf20Sopenharmony_ci#define ESAI_SAISR_RFS_MASK (1 << ESAI_SAISR_RFS_SHIFT) 1928c2ecf20Sopenharmony_ci#define ESAI_SAISR_RFS (1 << ESAI_SAISR_RFS_SHIFT) 1938c2ecf20Sopenharmony_ci#define ESAI_SAISR_IF2_SHIFT 2 1948c2ecf20Sopenharmony_ci#define ESAI_SAISR_IF2_MASK (1 << ESAI_SAISR_IF2_SHIFT) 1958c2ecf20Sopenharmony_ci#define ESAI_SAISR_IF2 (1 << ESAI_SAISR_IF2_SHIFT) 1968c2ecf20Sopenharmony_ci#define ESAI_SAISR_IF1_SHIFT 1 1978c2ecf20Sopenharmony_ci#define ESAI_SAISR_IF1_MASK (1 << ESAI_SAISR_IF1_SHIFT) 1988c2ecf20Sopenharmony_ci#define ESAI_SAISR_IF1 (1 << ESAI_SAISR_IF1_SHIFT) 1998c2ecf20Sopenharmony_ci#define ESAI_SAISR_IF0_SHIFT 0 2008c2ecf20Sopenharmony_ci#define ESAI_SAISR_IF0_MASK (1 << ESAI_SAISR_IF0_SHIFT) 2018c2ecf20Sopenharmony_ci#define ESAI_SAISR_IF0 (1 << ESAI_SAISR_IF0_SHIFT) 2028c2ecf20Sopenharmony_ci 2038c2ecf20Sopenharmony_ci/* Serial Audio Interface Control Register -- REG_ESAI_SAICR 0xD0 */ 2048c2ecf20Sopenharmony_ci#define ESAI_SAICR_ALC_SHIFT 8 2058c2ecf20Sopenharmony_ci#define ESAI_SAICR_ALC_MASK (1 << ESAI_SAICR_ALC_SHIFT) 2068c2ecf20Sopenharmony_ci#define ESAI_SAICR_ALC (1 << ESAI_SAICR_ALC_SHIFT) 2078c2ecf20Sopenharmony_ci#define ESAI_SAICR_TEBE_SHIFT 7 2088c2ecf20Sopenharmony_ci#define ESAI_SAICR_TEBE_MASK (1 << ESAI_SAICR_TEBE_SHIFT) 2098c2ecf20Sopenharmony_ci#define ESAI_SAICR_TEBE (1 << ESAI_SAICR_TEBE_SHIFT) 2108c2ecf20Sopenharmony_ci#define ESAI_SAICR_SYNC_SHIFT 6 2118c2ecf20Sopenharmony_ci#define ESAI_SAICR_SYNC_MASK (1 << ESAI_SAICR_SYNC_SHIFT) 2128c2ecf20Sopenharmony_ci#define ESAI_SAICR_SYNC (1 << ESAI_SAICR_SYNC_SHIFT) 2138c2ecf20Sopenharmony_ci#define ESAI_SAICR_OF2_SHIFT 2 2148c2ecf20Sopenharmony_ci#define ESAI_SAICR_OF2_MASK (1 << ESAI_SAICR_OF2_SHIFT) 2158c2ecf20Sopenharmony_ci#define ESAI_SAICR_OF2 (1 << ESAI_SAICR_OF2_SHIFT) 2168c2ecf20Sopenharmony_ci#define ESAI_SAICR_OF1_SHIFT 1 2178c2ecf20Sopenharmony_ci#define ESAI_SAICR_OF1_MASK (1 << ESAI_SAICR_OF1_SHIFT) 2188c2ecf20Sopenharmony_ci#define ESAI_SAICR_OF1 (1 << ESAI_SAICR_OF1_SHIFT) 2198c2ecf20Sopenharmony_ci#define ESAI_SAICR_OF0_SHIFT 0 2208c2ecf20Sopenharmony_ci#define ESAI_SAICR_OF0_MASK (1 << ESAI_SAICR_OF0_SHIFT) 2218c2ecf20Sopenharmony_ci#define ESAI_SAICR_OF0 (1 << ESAI_SAICR_OF0_SHIFT) 2228c2ecf20Sopenharmony_ci 2238c2ecf20Sopenharmony_ci/* 2248c2ecf20Sopenharmony_ci * Transmit Control Register -- REG_ESAI_TCR 0xD4 2258c2ecf20Sopenharmony_ci * Receive Control Register -- REG_ESAI_RCR 0xDC 2268c2ecf20Sopenharmony_ci */ 2278c2ecf20Sopenharmony_ci#define ESAI_xCR_xLIE_SHIFT 23 2288c2ecf20Sopenharmony_ci#define ESAI_xCR_xLIE_MASK (1 << ESAI_xCR_xLIE_SHIFT) 2298c2ecf20Sopenharmony_ci#define ESAI_xCR_xLIE (1 << ESAI_xCR_xLIE_SHIFT) 2308c2ecf20Sopenharmony_ci#define ESAI_xCR_xIE_SHIFT 22 2318c2ecf20Sopenharmony_ci#define ESAI_xCR_xIE_MASK (1 << ESAI_xCR_xIE_SHIFT) 2328c2ecf20Sopenharmony_ci#define ESAI_xCR_xIE (1 << ESAI_xCR_xIE_SHIFT) 2338c2ecf20Sopenharmony_ci#define ESAI_xCR_xEDIE_SHIFT 21 2348c2ecf20Sopenharmony_ci#define ESAI_xCR_xEDIE_MASK (1 << ESAI_xCR_xEDIE_SHIFT) 2358c2ecf20Sopenharmony_ci#define ESAI_xCR_xEDIE (1 << ESAI_xCR_xEDIE_SHIFT) 2368c2ecf20Sopenharmony_ci#define ESAI_xCR_xEIE_SHIFT 20 2378c2ecf20Sopenharmony_ci#define ESAI_xCR_xEIE_MASK (1 << ESAI_xCR_xEIE_SHIFT) 2388c2ecf20Sopenharmony_ci#define ESAI_xCR_xEIE (1 << ESAI_xCR_xEIE_SHIFT) 2398c2ecf20Sopenharmony_ci#define ESAI_xCR_xPR_SHIFT 19 2408c2ecf20Sopenharmony_ci#define ESAI_xCR_xPR_MASK (1 << ESAI_xCR_xPR_SHIFT) 2418c2ecf20Sopenharmony_ci#define ESAI_xCR_xPR (1 << ESAI_xCR_xPR_SHIFT) 2428c2ecf20Sopenharmony_ci#define ESAI_xCR_PADC_SHIFT 17 2438c2ecf20Sopenharmony_ci#define ESAI_xCR_PADC_MASK (1 << ESAI_xCR_PADC_SHIFT) 2448c2ecf20Sopenharmony_ci#define ESAI_xCR_PADC (1 << ESAI_xCR_PADC_SHIFT) 2458c2ecf20Sopenharmony_ci#define ESAI_xCR_xFSR_SHIFT 16 2468c2ecf20Sopenharmony_ci#define ESAI_xCR_xFSR_MASK (1 << ESAI_xCR_xFSR_SHIFT) 2478c2ecf20Sopenharmony_ci#define ESAI_xCR_xFSR (1 << ESAI_xCR_xFSR_SHIFT) 2488c2ecf20Sopenharmony_ci#define ESAI_xCR_xFSL_SHIFT 15 2498c2ecf20Sopenharmony_ci#define ESAI_xCR_xFSL_MASK (1 << ESAI_xCR_xFSL_SHIFT) 2508c2ecf20Sopenharmony_ci#define ESAI_xCR_xFSL (1 << ESAI_xCR_xFSL_SHIFT) 2518c2ecf20Sopenharmony_ci#define ESAI_xCR_xSWS_SHIFT 10 2528c2ecf20Sopenharmony_ci#define ESAI_xCR_xSWS_WIDTH 5 2538c2ecf20Sopenharmony_ci#define ESAI_xCR_xSWS_MASK (((1 << ESAI_xCR_xSWS_WIDTH) - 1) << ESAI_xCR_xSWS_SHIFT) 2548c2ecf20Sopenharmony_ci#define ESAI_xCR_xSWS(s, w) ((w < 24 ? (s - w + ((w - 8) >> 2)) : (s < 32 ? 0x1e : 0x1f)) << ESAI_xCR_xSWS_SHIFT) 2558c2ecf20Sopenharmony_ci#define ESAI_xCR_xMOD_SHIFT 8 2568c2ecf20Sopenharmony_ci#define ESAI_xCR_xMOD_WIDTH 2 2578c2ecf20Sopenharmony_ci#define ESAI_xCR_xMOD_MASK (((1 << ESAI_xCR_xMOD_WIDTH) - 1) << ESAI_xCR_xMOD_SHIFT) 2588c2ecf20Sopenharmony_ci#define ESAI_xCR_xMOD_ONDEMAND (0x1 << ESAI_xCR_xMOD_SHIFT) 2598c2ecf20Sopenharmony_ci#define ESAI_xCR_xMOD_NETWORK (0x1 << ESAI_xCR_xMOD_SHIFT) 2608c2ecf20Sopenharmony_ci#define ESAI_xCR_xMOD_AC97 (0x3 << ESAI_xCR_xMOD_SHIFT) 2618c2ecf20Sopenharmony_ci#define ESAI_xCR_xWA_SHIFT 7 2628c2ecf20Sopenharmony_ci#define ESAI_xCR_xWA_MASK (1 << ESAI_xCR_xWA_SHIFT) 2638c2ecf20Sopenharmony_ci#define ESAI_xCR_xWA (1 << ESAI_xCR_xWA_SHIFT) 2648c2ecf20Sopenharmony_ci#define ESAI_xCR_xSHFD_SHIFT 6 2658c2ecf20Sopenharmony_ci#define ESAI_xCR_xSHFD_MASK (1 << ESAI_xCR_xSHFD_SHIFT) 2668c2ecf20Sopenharmony_ci#define ESAI_xCR_xSHFD (1 << ESAI_xCR_xSHFD_SHIFT) 2678c2ecf20Sopenharmony_ci#define ESAI_xCR_xE_SHIFT 0 2688c2ecf20Sopenharmony_ci#define ESAI_xCR_TE_WIDTH 6 2698c2ecf20Sopenharmony_ci#define ESAI_xCR_RE_WIDTH 4 2708c2ecf20Sopenharmony_ci#define ESAI_xCR_TE_MASK (((1 << ESAI_xCR_TE_WIDTH) - 1) << ESAI_xCR_xE_SHIFT) 2718c2ecf20Sopenharmony_ci#define ESAI_xCR_RE_MASK (((1 << ESAI_xCR_RE_WIDTH) - 1) << ESAI_xCR_xE_SHIFT) 2728c2ecf20Sopenharmony_ci#define ESAI_xCR_TE(x) ((ESAI_xCR_TE_MASK >> (ESAI_xCR_TE_WIDTH - x)) & ESAI_xCR_TE_MASK) 2738c2ecf20Sopenharmony_ci#define ESAI_xCR_RE(x) ((ESAI_xCR_RE_MASK >> (ESAI_xCR_RE_WIDTH - x)) & ESAI_xCR_RE_MASK) 2748c2ecf20Sopenharmony_ci 2758c2ecf20Sopenharmony_ci/* 2768c2ecf20Sopenharmony_ci * Transmit Clock Control Register -- REG_ESAI_TCCR 0xD8 2778c2ecf20Sopenharmony_ci * Receive Clock Control Register -- REG_ESAI_RCCR 0xE0 2788c2ecf20Sopenharmony_ci */ 2798c2ecf20Sopenharmony_ci#define ESAI_xCCR_xHCKD_SHIFT 23 2808c2ecf20Sopenharmony_ci#define ESAI_xCCR_xHCKD_MASK (1 << ESAI_xCCR_xHCKD_SHIFT) 2818c2ecf20Sopenharmony_ci#define ESAI_xCCR_xHCKD (1 << ESAI_xCCR_xHCKD_SHIFT) 2828c2ecf20Sopenharmony_ci#define ESAI_xCCR_xFSD_SHIFT 22 2838c2ecf20Sopenharmony_ci#define ESAI_xCCR_xFSD_MASK (1 << ESAI_xCCR_xFSD_SHIFT) 2848c2ecf20Sopenharmony_ci#define ESAI_xCCR_xFSD (1 << ESAI_xCCR_xFSD_SHIFT) 2858c2ecf20Sopenharmony_ci#define ESAI_xCCR_xCKD_SHIFT 21 2868c2ecf20Sopenharmony_ci#define ESAI_xCCR_xCKD_MASK (1 << ESAI_xCCR_xCKD_SHIFT) 2878c2ecf20Sopenharmony_ci#define ESAI_xCCR_xCKD (1 << ESAI_xCCR_xCKD_SHIFT) 2888c2ecf20Sopenharmony_ci#define ESAI_xCCR_xHCKP_SHIFT 20 2898c2ecf20Sopenharmony_ci#define ESAI_xCCR_xHCKP_MASK (1 << ESAI_xCCR_xHCKP_SHIFT) 2908c2ecf20Sopenharmony_ci#define ESAI_xCCR_xHCKP (1 << ESAI_xCCR_xHCKP_SHIFT) 2918c2ecf20Sopenharmony_ci#define ESAI_xCCR_xFSP_SHIFT 19 2928c2ecf20Sopenharmony_ci#define ESAI_xCCR_xFSP_MASK (1 << ESAI_xCCR_xFSP_SHIFT) 2938c2ecf20Sopenharmony_ci#define ESAI_xCCR_xFSP (1 << ESAI_xCCR_xFSP_SHIFT) 2948c2ecf20Sopenharmony_ci#define ESAI_xCCR_xCKP_SHIFT 18 2958c2ecf20Sopenharmony_ci#define ESAI_xCCR_xCKP_MASK (1 << ESAI_xCCR_xCKP_SHIFT) 2968c2ecf20Sopenharmony_ci#define ESAI_xCCR_xCKP (1 << ESAI_xCCR_xCKP_SHIFT) 2978c2ecf20Sopenharmony_ci#define ESAI_xCCR_xFP_SHIFT 14 2988c2ecf20Sopenharmony_ci#define ESAI_xCCR_xFP_WIDTH 4 2998c2ecf20Sopenharmony_ci#define ESAI_xCCR_xFP_MASK (((1 << ESAI_xCCR_xFP_WIDTH) - 1) << ESAI_xCCR_xFP_SHIFT) 3008c2ecf20Sopenharmony_ci#define ESAI_xCCR_xFP(v) ((((v) - 1) << ESAI_xCCR_xFP_SHIFT) & ESAI_xCCR_xFP_MASK) 3018c2ecf20Sopenharmony_ci#define ESAI_xCCR_xDC_SHIFT 9 3028c2ecf20Sopenharmony_ci#define ESAI_xCCR_xDC_WIDTH 5 3038c2ecf20Sopenharmony_ci#define ESAI_xCCR_xDC_MASK (((1 << ESAI_xCCR_xDC_WIDTH) - 1) << ESAI_xCCR_xDC_SHIFT) 3048c2ecf20Sopenharmony_ci#define ESAI_xCCR_xDC(v) ((((v) - 1) << ESAI_xCCR_xDC_SHIFT) & ESAI_xCCR_xDC_MASK) 3058c2ecf20Sopenharmony_ci#define ESAI_xCCR_xPSR_SHIFT 8 3068c2ecf20Sopenharmony_ci#define ESAI_xCCR_xPSR_MASK (1 << ESAI_xCCR_xPSR_SHIFT) 3078c2ecf20Sopenharmony_ci#define ESAI_xCCR_xPSR_BYPASS (1 << ESAI_xCCR_xPSR_SHIFT) 3088c2ecf20Sopenharmony_ci#define ESAI_xCCR_xPSR_DIV8 (0 << ESAI_xCCR_xPSR_SHIFT) 3098c2ecf20Sopenharmony_ci#define ESAI_xCCR_xPM_SHIFT 0 3108c2ecf20Sopenharmony_ci#define ESAI_xCCR_xPM_WIDTH 8 3118c2ecf20Sopenharmony_ci#define ESAI_xCCR_xPM_MASK (((1 << ESAI_xCCR_xPM_WIDTH) - 1) << ESAI_xCCR_xPM_SHIFT) 3128c2ecf20Sopenharmony_ci#define ESAI_xCCR_xPM(v) ((((v) - 1) << ESAI_xCCR_xPM_SHIFT) & ESAI_xCCR_xPM_MASK) 3138c2ecf20Sopenharmony_ci 3148c2ecf20Sopenharmony_ci/* Transmit Slot Mask Register A/B -- REG_ESAI_TSMA/B 0xE4 ~ 0xF0 */ 3158c2ecf20Sopenharmony_ci#define ESAI_xSMA_xS_SHIFT 0 3168c2ecf20Sopenharmony_ci#define ESAI_xSMA_xS_WIDTH 16 3178c2ecf20Sopenharmony_ci#define ESAI_xSMA_xS_MASK (((1 << ESAI_xSMA_xS_WIDTH) - 1) << ESAI_xSMA_xS_SHIFT) 3188c2ecf20Sopenharmony_ci#define ESAI_xSMA_xS(v) ((v) & ESAI_xSMA_xS_MASK) 3198c2ecf20Sopenharmony_ci#define ESAI_xSMB_xS_SHIFT 0 3208c2ecf20Sopenharmony_ci#define ESAI_xSMB_xS_WIDTH 16 3218c2ecf20Sopenharmony_ci#define ESAI_xSMB_xS_MASK (((1 << ESAI_xSMB_xS_WIDTH) - 1) << ESAI_xSMB_xS_SHIFT) 3228c2ecf20Sopenharmony_ci#define ESAI_xSMB_xS(v) (((v) >> ESAI_xSMA_xS_WIDTH) & ESAI_xSMB_xS_MASK) 3238c2ecf20Sopenharmony_ci 3248c2ecf20Sopenharmony_ci/* Port C Direction Register -- REG_ESAI_PRRC 0xF8 */ 3258c2ecf20Sopenharmony_ci#define ESAI_PRRC_PDC_SHIFT 0 3268c2ecf20Sopenharmony_ci#define ESAI_PRRC_PDC_WIDTH 12 3278c2ecf20Sopenharmony_ci#define ESAI_PRRC_PDC_MASK (((1 << ESAI_PRRC_PDC_WIDTH) - 1) << ESAI_PRRC_PDC_SHIFT) 3288c2ecf20Sopenharmony_ci#define ESAI_PRRC_PDC(v) ((v) & ESAI_PRRC_PDC_MASK) 3298c2ecf20Sopenharmony_ci 3308c2ecf20Sopenharmony_ci/* Port C Control Register -- REG_ESAI_PCRC 0xFC */ 3318c2ecf20Sopenharmony_ci#define ESAI_PCRC_PC_SHIFT 0 3328c2ecf20Sopenharmony_ci#define ESAI_PCRC_PC_WIDTH 12 3338c2ecf20Sopenharmony_ci#define ESAI_PCRC_PC_MASK (((1 << ESAI_PCRC_PC_WIDTH) - 1) << ESAI_PCRC_PC_SHIFT) 3348c2ecf20Sopenharmony_ci#define ESAI_PCRC_PC(v) ((v) & ESAI_PCRC_PC_MASK) 3358c2ecf20Sopenharmony_ci 3368c2ecf20Sopenharmony_ci#define ESAI_GPIO 0xfff 3378c2ecf20Sopenharmony_ci 3388c2ecf20Sopenharmony_ci/* ESAI clock source */ 3398c2ecf20Sopenharmony_ci#define ESAI_HCKT_FSYS 0 3408c2ecf20Sopenharmony_ci#define ESAI_HCKT_EXTAL 1 3418c2ecf20Sopenharmony_ci#define ESAI_HCKR_FSYS 2 3428c2ecf20Sopenharmony_ci#define ESAI_HCKR_EXTAL 3 3438c2ecf20Sopenharmony_ci 3448c2ecf20Sopenharmony_ci/* ESAI clock divider */ 3458c2ecf20Sopenharmony_ci#define ESAI_TX_DIV_PSR 0 3468c2ecf20Sopenharmony_ci#define ESAI_TX_DIV_PM 1 3478c2ecf20Sopenharmony_ci#define ESAI_TX_DIV_FP 2 3488c2ecf20Sopenharmony_ci#define ESAI_RX_DIV_PSR 3 3498c2ecf20Sopenharmony_ci#define ESAI_RX_DIV_PM 4 3508c2ecf20Sopenharmony_ci#define ESAI_RX_DIV_FP 5 3518c2ecf20Sopenharmony_ci#endif /* _FSL_ESAI_DAI_H */ 352