18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * PDM Microphone Interface for the NXP i.MX SoC 48c2ecf20Sopenharmony_ci * Copyright 2018 NXP 58c2ecf20Sopenharmony_ci */ 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_ci#ifndef _FSL_MICFIL_H 88c2ecf20Sopenharmony_ci#define _FSL_MICFIL_H 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci/* MICFIL Register Map */ 118c2ecf20Sopenharmony_ci#define REG_MICFIL_CTRL1 0x00 128c2ecf20Sopenharmony_ci#define REG_MICFIL_CTRL2 0x04 138c2ecf20Sopenharmony_ci#define REG_MICFIL_STAT 0x08 148c2ecf20Sopenharmony_ci#define REG_MICFIL_FIFO_CTRL 0x10 158c2ecf20Sopenharmony_ci#define REG_MICFIL_FIFO_STAT 0x14 168c2ecf20Sopenharmony_ci#define REG_MICFIL_DATACH0 0x24 178c2ecf20Sopenharmony_ci#define REG_MICFIL_DATACH1 0x28 188c2ecf20Sopenharmony_ci#define REG_MICFIL_DATACH2 0x2C 198c2ecf20Sopenharmony_ci#define REG_MICFIL_DATACH3 0x30 208c2ecf20Sopenharmony_ci#define REG_MICFIL_DATACH4 0x34 218c2ecf20Sopenharmony_ci#define REG_MICFIL_DATACH5 0x38 228c2ecf20Sopenharmony_ci#define REG_MICFIL_DATACH6 0x3C 238c2ecf20Sopenharmony_ci#define REG_MICFIL_DATACH7 0x40 248c2ecf20Sopenharmony_ci#define REG_MICFIL_DC_CTRL 0x64 258c2ecf20Sopenharmony_ci#define REG_MICFIL_OUT_CTRL 0x74 268c2ecf20Sopenharmony_ci#define REG_MICFIL_OUT_STAT 0x7C 278c2ecf20Sopenharmony_ci#define REG_MICFIL_VAD0_CTRL1 0x90 288c2ecf20Sopenharmony_ci#define REG_MICFIL_VAD0_CTRL2 0x94 298c2ecf20Sopenharmony_ci#define REG_MICFIL_VAD0_STAT 0x98 308c2ecf20Sopenharmony_ci#define REG_MICFIL_VAD0_SCONFIG 0x9C 318c2ecf20Sopenharmony_ci#define REG_MICFIL_VAD0_NCONFIG 0xA0 328c2ecf20Sopenharmony_ci#define REG_MICFIL_VAD0_NDATA 0xA4 338c2ecf20Sopenharmony_ci#define REG_MICFIL_VAD0_ZCD 0xA8 348c2ecf20Sopenharmony_ci 358c2ecf20Sopenharmony_ci/* MICFIL Control Register 1 -- REG_MICFILL_CTRL1 0x00 */ 368c2ecf20Sopenharmony_ci#define MICFIL_CTRL1_MDIS_SHIFT 31 378c2ecf20Sopenharmony_ci#define MICFIL_CTRL1_MDIS_MASK BIT(MICFIL_CTRL1_MDIS_SHIFT) 388c2ecf20Sopenharmony_ci#define MICFIL_CTRL1_MDIS BIT(MICFIL_CTRL1_MDIS_SHIFT) 398c2ecf20Sopenharmony_ci#define MICFIL_CTRL1_DOZEN_SHIFT 30 408c2ecf20Sopenharmony_ci#define MICFIL_CTRL1_DOZEN_MASK BIT(MICFIL_CTRL1_DOZEN_SHIFT) 418c2ecf20Sopenharmony_ci#define MICFIL_CTRL1_DOZEN BIT(MICFIL_CTRL1_DOZEN_SHIFT) 428c2ecf20Sopenharmony_ci#define MICFIL_CTRL1_PDMIEN_SHIFT 29 438c2ecf20Sopenharmony_ci#define MICFIL_CTRL1_PDMIEN_MASK BIT(MICFIL_CTRL1_PDMIEN_SHIFT) 448c2ecf20Sopenharmony_ci#define MICFIL_CTRL1_PDMIEN BIT(MICFIL_CTRL1_PDMIEN_SHIFT) 458c2ecf20Sopenharmony_ci#define MICFIL_CTRL1_DBG_SHIFT 28 468c2ecf20Sopenharmony_ci#define MICFIL_CTRL1_DBG_MASK BIT(MICFIL_CTRL1_DBG_SHIFT) 478c2ecf20Sopenharmony_ci#define MICFIL_CTRL1_DBG BIT(MICFIL_CTRL1_DBG_SHIFT) 488c2ecf20Sopenharmony_ci#define MICFIL_CTRL1_SRES_SHIFT 27 498c2ecf20Sopenharmony_ci#define MICFIL_CTRL1_SRES_MASK BIT(MICFIL_CTRL1_SRES_SHIFT) 508c2ecf20Sopenharmony_ci#define MICFIL_CTRL1_SRES BIT(MICFIL_CTRL1_SRES_SHIFT) 518c2ecf20Sopenharmony_ci#define MICFIL_CTRL1_DBGE_SHIFT 26 528c2ecf20Sopenharmony_ci#define MICFIL_CTRL1_DBGE_MASK BIT(MICFIL_CTRL1_DBGE_SHIFT) 538c2ecf20Sopenharmony_ci#define MICFIL_CTRL1_DBGE BIT(MICFIL_CTRL1_DBGE_SHIFT) 548c2ecf20Sopenharmony_ci#define MICFIL_CTRL1_DISEL_SHIFT 24 558c2ecf20Sopenharmony_ci#define MICFIL_CTRL1_DISEL_WIDTH 2 568c2ecf20Sopenharmony_ci#define MICFIL_CTRL1_DISEL_MASK ((BIT(MICFIL_CTRL1_DISEL_WIDTH) - 1) \ 578c2ecf20Sopenharmony_ci << MICFIL_CTRL1_DISEL_SHIFT) 588c2ecf20Sopenharmony_ci#define MICFIL_CTRL1_DISEL(v) (((v) << MICFIL_CTRL1_DISEL_SHIFT) \ 598c2ecf20Sopenharmony_ci & MICFIL_CTRL1_DISEL_MASK) 608c2ecf20Sopenharmony_ci#define MICFIL_CTRL1_ERREN_SHIFT 23 618c2ecf20Sopenharmony_ci#define MICFIL_CTRL1_ERREN_MASK BIT(MICFIL_CTRL1_ERREN_SHIFT) 628c2ecf20Sopenharmony_ci#define MICFIL_CTRL1_ERREN BIT(MICFIL_CTRL1_ERREN_SHIFT) 638c2ecf20Sopenharmony_ci#define MICFIL_CTRL1_CHEN_SHIFT 0 648c2ecf20Sopenharmony_ci#define MICFIL_CTRL1_CHEN_WIDTH 8 658c2ecf20Sopenharmony_ci#define MICFIL_CTRL1_CHEN_MASK(x) (BIT(x) << MICFIL_CTRL1_CHEN_SHIFT) 668c2ecf20Sopenharmony_ci#define MICFIL_CTRL1_CHEN(x) (MICFIL_CTRL1_CHEN_MASK(x)) 678c2ecf20Sopenharmony_ci 688c2ecf20Sopenharmony_ci/* MICFIL Control Register 2 -- REG_MICFILL_CTRL2 0x04 */ 698c2ecf20Sopenharmony_ci#define MICFIL_CTRL2_QSEL_SHIFT 25 708c2ecf20Sopenharmony_ci#define MICFIL_CTRL2_QSEL_WIDTH 3 718c2ecf20Sopenharmony_ci#define MICFIL_CTRL2_QSEL_MASK ((BIT(MICFIL_CTRL2_QSEL_WIDTH) - 1) \ 728c2ecf20Sopenharmony_ci << MICFIL_CTRL2_QSEL_SHIFT) 738c2ecf20Sopenharmony_ci#define MICFIL_HIGH_QUALITY BIT(MICFIL_CTRL2_QSEL_SHIFT) 748c2ecf20Sopenharmony_ci#define MICFIL_MEDIUM_QUALITY (0 << MICFIL_CTRL2_QSEL_SHIFT) 758c2ecf20Sopenharmony_ci#define MICFIL_LOW_QUALITY (7 << MICFIL_CTRL2_QSEL_SHIFT) 768c2ecf20Sopenharmony_ci#define MICFIL_VLOW0_QUALITY (6 << MICFIL_CTRL2_QSEL_SHIFT) 778c2ecf20Sopenharmony_ci#define MICFIL_VLOW1_QUALITY (5 << MICFIL_CTRL2_QSEL_SHIFT) 788c2ecf20Sopenharmony_ci#define MICFIL_VLOW2_QUALITY (4 << MICFIL_CTRL2_QSEL_SHIFT) 798c2ecf20Sopenharmony_ci 808c2ecf20Sopenharmony_ci#define MICFIL_CTRL2_CICOSR_SHIFT 16 818c2ecf20Sopenharmony_ci#define MICFIL_CTRL2_CICOSR_WIDTH 4 828c2ecf20Sopenharmony_ci#define MICFIL_CTRL2_CICOSR_MASK ((BIT(MICFIL_CTRL2_CICOSR_WIDTH) - 1) \ 838c2ecf20Sopenharmony_ci << MICFIL_CTRL2_CICOSR_SHIFT) 848c2ecf20Sopenharmony_ci#define MICFIL_CTRL2_CICOSR(v) (((v) << MICFIL_CTRL2_CICOSR_SHIFT) \ 858c2ecf20Sopenharmony_ci & MICFIL_CTRL2_CICOSR_MASK) 868c2ecf20Sopenharmony_ci#define MICFIL_CTRL2_CLKDIV_SHIFT 0 878c2ecf20Sopenharmony_ci#define MICFIL_CTRL2_CLKDIV_WIDTH 8 888c2ecf20Sopenharmony_ci#define MICFIL_CTRL2_CLKDIV_MASK ((BIT(MICFIL_CTRL2_CLKDIV_WIDTH) - 1) \ 898c2ecf20Sopenharmony_ci << MICFIL_CTRL2_CLKDIV_SHIFT) 908c2ecf20Sopenharmony_ci#define MICFIL_CTRL2_CLKDIV(v) (((v) << MICFIL_CTRL2_CLKDIV_SHIFT) \ 918c2ecf20Sopenharmony_ci & MICFIL_CTRL2_CLKDIV_MASK) 928c2ecf20Sopenharmony_ci 938c2ecf20Sopenharmony_ci/* MICFIL Status Register -- REG_MICFIL_STAT 0x08 */ 948c2ecf20Sopenharmony_ci#define MICFIL_STAT_BSY_FIL_SHIFT 31 958c2ecf20Sopenharmony_ci#define MICFIL_STAT_BSY_FIL_MASK BIT(MICFIL_STAT_BSY_FIL_SHIFT) 968c2ecf20Sopenharmony_ci#define MICFIL_STAT_BSY_FIL BIT(MICFIL_STAT_BSY_FIL_SHIFT) 978c2ecf20Sopenharmony_ci#define MICFIL_STAT_FIR_RDY_SHIFT 30 988c2ecf20Sopenharmony_ci#define MICFIL_STAT_FIR_RDY_MASK BIT(MICFIL_STAT_FIR_RDY_SHIFT) 998c2ecf20Sopenharmony_ci#define MICFIL_STAT_FIR_RDY BIT(MICFIL_STAT_FIR_RDY_SHIFT) 1008c2ecf20Sopenharmony_ci#define MICFIL_STAT_LOWFREQF_SHIFT 29 1018c2ecf20Sopenharmony_ci#define MICFIL_STAT_LOWFREQF_MASK BIT(MICFIL_STAT_LOWFREQF_SHIFT) 1028c2ecf20Sopenharmony_ci#define MICFIL_STAT_LOWFREQF BIT(MICFIL_STAT_LOWFREQF_SHIFT) 1038c2ecf20Sopenharmony_ci#define MICFIL_STAT_CHXF_SHIFT(v) (v) 1048c2ecf20Sopenharmony_ci#define MICFIL_STAT_CHXF_MASK(v) BIT(MICFIL_STAT_CHXF_SHIFT(v)) 1058c2ecf20Sopenharmony_ci#define MICFIL_STAT_CHXF(v) BIT(MICFIL_STAT_CHXF_SHIFT(v)) 1068c2ecf20Sopenharmony_ci 1078c2ecf20Sopenharmony_ci/* MICFIL FIFO Control Register -- REG_MICFIL_FIFO_CTRL 0x10 */ 1088c2ecf20Sopenharmony_ci#define MICFIL_FIFO_CTRL_FIFOWMK_SHIFT 0 1098c2ecf20Sopenharmony_ci#define MICFIL_FIFO_CTRL_FIFOWMK_WIDTH 3 1108c2ecf20Sopenharmony_ci#define MICFIL_FIFO_CTRL_FIFOWMK_MASK ((BIT(MICFIL_FIFO_CTRL_FIFOWMK_WIDTH) - 1) \ 1118c2ecf20Sopenharmony_ci << MICFIL_FIFO_CTRL_FIFOWMK_SHIFT) 1128c2ecf20Sopenharmony_ci#define MICFIL_FIFO_CTRL_FIFOWMK(v) (((v) << MICFIL_FIFO_CTRL_FIFOWMK_SHIFT) \ 1138c2ecf20Sopenharmony_ci & MICFIL_FIFO_CTRL_FIFOWMK_MASK) 1148c2ecf20Sopenharmony_ci 1158c2ecf20Sopenharmony_ci/* MICFIL FIFO Status Register -- REG_MICFIL_FIFO_STAT 0x14 */ 1168c2ecf20Sopenharmony_ci#define MICFIL_FIFO_STAT_FIFOX_OVER_SHIFT(v) (v) 1178c2ecf20Sopenharmony_ci#define MICFIL_FIFO_STAT_FIFOX_OVER_MASK(v) BIT(MICFIL_FIFO_STAT_FIFOX_OVER_SHIFT(v)) 1188c2ecf20Sopenharmony_ci#define MICFIL_FIFO_STAT_FIFOX_UNDER_SHIFT(v) ((v) + 8) 1198c2ecf20Sopenharmony_ci#define MICFIL_FIFO_STAT_FIFOX_UNDER_MASK(v) BIT(MICFIL_FIFO_STAT_FIFOX_UNDER_SHIFT(v)) 1208c2ecf20Sopenharmony_ci 1218c2ecf20Sopenharmony_ci/* MICFIL HWVAD0 Control 1 Register -- REG_MICFIL_VAD0_CTRL1*/ 1228c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL1_CHSEL_SHIFT 24 1238c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL1_CHSEL_WIDTH 3 1248c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL1_CHSEL_MASK ((BIT(MICFIL_VAD0_CTRL1_CHSEL_WIDTH) - 1) \ 1258c2ecf20Sopenharmony_ci << MICFIL_VAD0_CTRL1_CHSEL_SHIFT) 1268c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL1_CHSEL(v) (((v) << MICFIL_VAD0_CTRL1_CHSEL_SHIFT) \ 1278c2ecf20Sopenharmony_ci & MICFIL_VAD0_CTRL1_CHSEL_MASK) 1288c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL1_CICOSR_SHIFT 16 1298c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL1_CICOSR_WIDTH 4 1308c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL1_CICOSR_MASK ((BIT(MICFIL_VAD0_CTRL1_CICOSR_WIDTH) - 1) \ 1318c2ecf20Sopenharmony_ci << MICFIL_VAD0_CTRL1_CICOSR_SHIFT) 1328c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL1_CICOSR(v) (((v) << MICFIL_VAD0_CTRL1_CICOSR_SHIFT) \ 1338c2ecf20Sopenharmony_ci & MICFIL_VAD0_CTRL1_CICOSR_MASK) 1348c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL1_INITT_SHIFT 8 1358c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL1_INITT_WIDTH 5 1368c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL1_INITT_MASK ((BIT(MICFIL_VAD0_CTRL1_INITT_WIDTH) - 1) \ 1378c2ecf20Sopenharmony_ci << MICFIL_VAD0_CTRL1_INITT_SHIFT) 1388c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL1_INITT(v) (((v) << MICFIL_VAD0_CTRL1_INITT_SHIFT) \ 1398c2ecf20Sopenharmony_ci & MICFIL_VAD0_CTRL1_INITT_MASK) 1408c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL1_ST10_SHIFT 4 1418c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL1_ST10_MASK BIT(MICFIL_VAD0_CTRL1_ST10_SHIFT) 1428c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL1_ST10 BIT(MICFIL_VAD0_CTRL1_ST10_SHIFT) 1438c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL1_ERIE_SHIFT 3 1448c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL1_ERIE_MASK BIT(MICFIL_VAD0_CTRL1_ERIE_SHIFT) 1458c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL1_ERIE BIT(MICFIL_VAD0_CTRL1_ERIE_SHIFT) 1468c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL1_IE_SHIFT 2 1478c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL1_IE_MASK BIT(MICFIL_VAD0_CTRL1_IE_SHIFT) 1488c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL1_IE BIT(MICFIL_VAD0_CTRL1_IE_SHIFT) 1498c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL1_RST_SHIFT 1 1508c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL1_RST_MASK BIT(MICFIL_VAD0_CTRL1_RST_SHIFT) 1518c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL1_RST BIT(MICFIL_VAD0_CTRL1_RST_SHIFT) 1528c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL1_EN_SHIFT 0 1538c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL1_EN_MASK BIT(MICFIL_VAD0_CTRL1_EN_SHIFT) 1548c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL1_EN BIT(MICFIL_VAD0_CTRL1_EN_SHIFT) 1558c2ecf20Sopenharmony_ci 1568c2ecf20Sopenharmony_ci/* MICFIL HWVAD0 Control 2 Register -- REG_MICFIL_VAD0_CTRL2*/ 1578c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL2_FRENDIS_SHIFT 31 1588c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL2_FRENDIS_MASK BIT(MICFIL_VAD0_CTRL2_FRENDIS_SHIFT) 1598c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL2_FRENDIS BIT(MICFIL_VAD0_CTRL2_FRENDIS_SHIFT) 1608c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL2_PREFEN_SHIFT 30 1618c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL2_PREFEN_MASK BIT(MICFIL_VAD0_CTRL2_PREFEN_SHIFT) 1628c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL2_PREFEN BIT(MICFIL_VAD0_CTRL2_PREFEN_SHIFT) 1638c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL2_FOUTDIS_SHIFT 28 1648c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL2_FOUTDIS_MASK BIT(MICFIL_VAD0_CTRL2_FOUTDIS_SHIFT) 1658c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL2_FOUTDIS BIT(MICFIL_VAD0_CTRL2_FOUTDIS_SHIFT) 1668c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL2_FRAMET_SHIFT 16 1678c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL2_FRAMET_WIDTH 6 1688c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL2_FRAMET_MASK ((BIT(MICFIL_VAD0_CTRL2_FRAMET_WIDTH) - 1) \ 1698c2ecf20Sopenharmony_ci << MICFIL_VAD0_CTRL2_FRAMET_SHIFT) 1708c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL2_FRAMET(v) (((v) << MICFIL_VAD0_CTRL2_FRAMET_SHIFT) \ 1718c2ecf20Sopenharmony_ci & MICFIL_VAD0_CTRL2_FRAMET_MASK) 1728c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL2_INPGAIN_SHIFT 8 1738c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL2_INPGAIN_WIDTH 4 1748c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL2_INPGAIN_MASK ((BIT(MICFIL_VAD0_CTRL2_INPGAIN_WIDTH) - 1) \ 1758c2ecf20Sopenharmony_ci << MICFIL_VAD0_CTRL2_INPGAIN_SHIFT) 1768c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL2_INPGAIN(v) (((v) << MICFIL_VAD0_CTRL2_INPGAIN_SHIFT) \ 1778c2ecf20Sopenharmony_ci & MICFIL_VAD0_CTRL2_INPGAIN_MASK) 1788c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL2_HPF_SHIFT 0 1798c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL2_HPF_WIDTH 2 1808c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL2_HPF_MASK ((BIT(MICFIL_VAD0_CTRL2_HPF_WIDTH) - 1) \ 1818c2ecf20Sopenharmony_ci << MICFIL_VAD0_CTRL2_HPF_SHIFT) 1828c2ecf20Sopenharmony_ci#define MICFIL_VAD0_CTRL2_HPF(v) (((v) << MICFIL_VAD0_CTRL2_HPF_SHIFT) \ 1838c2ecf20Sopenharmony_ci & MICFIL_VAD0_CTRL2_HPF_MASK) 1848c2ecf20Sopenharmony_ci 1858c2ecf20Sopenharmony_ci/* MICFIL HWVAD0 Signal CONFIG Register -- REG_MICFIL_VAD0_SCONFIG */ 1868c2ecf20Sopenharmony_ci#define MICFIL_VAD0_SCONFIG_SFILEN_SHIFT 31 1878c2ecf20Sopenharmony_ci#define MICFIL_VAD0_SCONFIG_SFILEN_MASK BIT(MICFIL_VAD0_SCONFIG_SFILEN_SHIFT) 1888c2ecf20Sopenharmony_ci#define MICFIL_VAD0_SCONFIG_SFILEN BIT(MICFIL_VAD0_SCONFIG_SFILEN_SHIFT) 1898c2ecf20Sopenharmony_ci#define MICFIL_VAD0_SCONFIG_SMAXEN_SHIFT 30 1908c2ecf20Sopenharmony_ci#define MICFIL_VAD0_SCONFIG_SMAXEN_MASK BIT(MICFIL_VAD0_SCONFIG_SMAXEN_SHIFT) 1918c2ecf20Sopenharmony_ci#define MICFIL_VAD0_SCONFIG_SMAXEN BIT(MICFIL_VAD0_SCONFIG_SMAXEN_SHIFT) 1928c2ecf20Sopenharmony_ci#define MICFIL_VAD0_SCONFIG_SGAIN_SHIFT 0 1938c2ecf20Sopenharmony_ci#define MICFIL_VAD0_SCONFIG_SGAIN_WIDTH 4 1948c2ecf20Sopenharmony_ci#define MICFIL_VAD0_SCONFIG_SGAIN_MASK ((BIT(MICFIL_VAD0_SCONFIG_SGAIN_WIDTH) - 1) \ 1958c2ecf20Sopenharmony_ci << MICFIL_VAD0_SCONFIG_SGAIN_SHIFT) 1968c2ecf20Sopenharmony_ci#define MICFIL_VAD0_SCONFIG_SGAIN(v) (((v) << MICFIL_VAD0_SCONFIG_SGAIN_SHIFT) \ 1978c2ecf20Sopenharmony_ci & MICFIL_VAD0_SCONFIG_SGAIN_MASK) 1988c2ecf20Sopenharmony_ci 1998c2ecf20Sopenharmony_ci/* MICFIL HWVAD0 Noise CONFIG Register -- REG_MICFIL_VAD0_NCONFIG */ 2008c2ecf20Sopenharmony_ci#define MICFIL_VAD0_NCONFIG_NFILAUT_SHIFT 31 2018c2ecf20Sopenharmony_ci#define MICFIL_VAD0_NCONFIG_NFILAUT_MASK BIT(MICFIL_VAD0_NCONFIG_NFILAUT_SHIFT) 2028c2ecf20Sopenharmony_ci#define MICFIL_VAD0_NCONFIG_NFILAUT BIT(MICFIL_VAD0_NCONFIG_NFILAUT_SHIFT) 2038c2ecf20Sopenharmony_ci#define MICFIL_VAD0_NCONFIG_NMINEN_SHIFT 30 2048c2ecf20Sopenharmony_ci#define MICFIL_VAD0_NCONFIG_NMINEN_MASK BIT(MICFIL_VAD0_NCONFIG_NMINEN_SHIFT) 2058c2ecf20Sopenharmony_ci#define MICFIL_VAD0_NCONFIG_NMINEN BIT(MICFIL_VAD0_NCONFIG_NMINEN_SHIFT) 2068c2ecf20Sopenharmony_ci#define MICFIL_VAD0_NCONFIG_NDECEN_SHIFT 29 2078c2ecf20Sopenharmony_ci#define MICFIL_VAD0_NCONFIG_NDECEN_MASK BIT(MICFIL_VAD0_NCONFIG_NDECEN_SHIFT) 2088c2ecf20Sopenharmony_ci#define MICFIL_VAD0_NCONFIG_NDECEN BIT(MICFIL_VAD0_NCONFIG_NDECEN_SHIFT) 2098c2ecf20Sopenharmony_ci#define MICFIL_VAD0_NCONFIG_NOREN_SHIFT 28 2108c2ecf20Sopenharmony_ci#define MICFIL_VAD0_NCONFIG_NOREN BIT(MICFIL_VAD0_NCONFIG_NOREN_SHIFT) 2118c2ecf20Sopenharmony_ci#define MICFIL_VAD0_NCONFIG_NFILADJ_SHIFT 8 2128c2ecf20Sopenharmony_ci#define MICFIL_VAD0_NCONFIG_NFILADJ_WIDTH 5 2138c2ecf20Sopenharmony_ci#define MICFIL_VAD0_NCONFIG_NFILADJ_MASK ((BIT(MICFIL_VAD0_NCONFIG_NFILADJ_WIDTH) - 1) \ 2148c2ecf20Sopenharmony_ci << MICFIL_VAD0_NCONFIG_NFILADJ_SHIFT) 2158c2ecf20Sopenharmony_ci#define MICFIL_VAD0_NCONFIG_NFILADJ(v) (((v) << MICFIL_VAD0_NCONFIG_NFILADJ_SHIFT) \ 2168c2ecf20Sopenharmony_ci & MICFIL_VAD0_NCONFIG_NFILADJ_MASK) 2178c2ecf20Sopenharmony_ci#define MICFIL_VAD0_NCONFIG_NGAIN_SHIFT 0 2188c2ecf20Sopenharmony_ci#define MICFIL_VAD0_NCONFIG_NGAIN_WIDTH 4 2198c2ecf20Sopenharmony_ci#define MICFIL_VAD0_NCONFIG_NGAIN_MASK ((BIT(MICFIL_VAD0_NCONFIG_NGAIN_WIDTH) - 1) \ 2208c2ecf20Sopenharmony_ci << MICFIL_VAD0_NCONFIG_NGAIN_SHIFT) 2218c2ecf20Sopenharmony_ci#define MICFIL_VAD0_NCONFIG_NGAIN(v) (((v) << MICFIL_VAD0_NCONFIG_NGAIN_SHIFT) \ 2228c2ecf20Sopenharmony_ci & MICFIL_VAD0_NCONFIG_NGAIN_MASK) 2238c2ecf20Sopenharmony_ci 2248c2ecf20Sopenharmony_ci/* MICFIL HWVAD0 Zero-Crossing Detector - REG_MICFIL_VAD0_ZCD */ 2258c2ecf20Sopenharmony_ci#define MICFIL_VAD0_ZCD_ZCDTH_SHIFT 16 2268c2ecf20Sopenharmony_ci#define MICFIL_VAD0_ZCD_ZCDTH_WIDTH 10 2278c2ecf20Sopenharmony_ci#define MICFIL_VAD0_ZCD_ZCDTH_MASK ((BIT(MICFIL_VAD0_ZCD_ZCDTH_WIDTH) - 1) \ 2288c2ecf20Sopenharmony_ci << MICFIL_VAD0_ZCD_ZCDTH_SHIFT) 2298c2ecf20Sopenharmony_ci#define MICFIL_VAD0_ZCD_ZCDTH(v) (((v) << MICFIL_VAD0_ZCD_ZCDTH_SHIFT)\ 2308c2ecf20Sopenharmony_ci & MICFIL_VAD0_ZCD_ZCDTH_MASK) 2318c2ecf20Sopenharmony_ci#define MICFIL_VAD0_ZCD_ZCDADJ_SHIFT 8 2328c2ecf20Sopenharmony_ci#define MICFIL_VAD0_ZCD_ZCDADJ_WIDTH 4 2338c2ecf20Sopenharmony_ci#define MICFIL_VAD0_ZCD_ZCDADJ_MASK ((BIT(MICFIL_VAD0_ZCD_ZCDADJ_WIDTH) - 1)\ 2348c2ecf20Sopenharmony_ci << MICFIL_VAD0_ZCD_ZCDADJ_SHIFT) 2358c2ecf20Sopenharmony_ci#define MICFIL_VAD0_ZCD_ZCDADJ(v) (((v) << MICFIL_VAD0_ZCD_ZCDADJ_SHIFT)\ 2368c2ecf20Sopenharmony_ci & MICFIL_VAD0_ZCD_ZCDADJ_MASK) 2378c2ecf20Sopenharmony_ci#define MICFIL_VAD0_ZCD_ZCDAND_SHIFT 4 2388c2ecf20Sopenharmony_ci#define MICFIL_VAD0_ZCD_ZCDAND_MASK BIT(MICFIL_VAD0_ZCD_ZCDAND_SHIFT) 2398c2ecf20Sopenharmony_ci#define MICFIL_VAD0_ZCD_ZCDAND BIT(MICFIL_VAD0_ZCD_ZCDAND_SHIFT) 2408c2ecf20Sopenharmony_ci#define MICFIL_VAD0_ZCD_ZCDAUT_SHIFT 2 2418c2ecf20Sopenharmony_ci#define MICFIL_VAD0_ZCD_ZCDAUT_MASK BIT(MICFIL_VAD0_ZCD_ZCDAUT_SHIFT) 2428c2ecf20Sopenharmony_ci#define MICFIL_VAD0_ZCD_ZCDAUT BIT(MICFIL_VAD0_ZCD_ZCDAUT_SHIFT) 2438c2ecf20Sopenharmony_ci#define MICFIL_VAD0_ZCD_ZCDEN_SHIFT 0 2448c2ecf20Sopenharmony_ci#define MICFIL_VAD0_ZCD_ZCDEN_MASK BIT(MICFIL_VAD0_ZCD_ZCDEN_SHIFT) 2458c2ecf20Sopenharmony_ci#define MICFIL_VAD0_ZCD_ZCDEN BIT(MICFIL_VAD0_ZCD_ZCDEN_SHIFT) 2468c2ecf20Sopenharmony_ci 2478c2ecf20Sopenharmony_ci/* MICFIL HWVAD0 Status Register - REG_MICFIL_VAD0_STAT */ 2488c2ecf20Sopenharmony_ci#define MICFIL_VAD0_STAT_INITF_SHIFT 31 2498c2ecf20Sopenharmony_ci#define MICFIL_VAD0_STAT_INITF_MASK BIT(MICFIL_VAD0_STAT_INITF_SHIFT) 2508c2ecf20Sopenharmony_ci#define MICFIL_VAD0_STAT_INITF BIT(MICFIL_VAD0_STAT_INITF_SHIFT) 2518c2ecf20Sopenharmony_ci#define MICFIL_VAD0_STAT_INSATF_SHIFT 16 2528c2ecf20Sopenharmony_ci#define MICFIL_VAD0_STAT_INSATF_MASK BIT(MICFIL_VAD0_STAT_INSATF_SHIFT) 2538c2ecf20Sopenharmony_ci#define MICFIL_VAD0_STAT_INSATF BIT(MICFIL_VAD0_STAT_INSATF_SHIFT) 2548c2ecf20Sopenharmony_ci#define MICFIL_VAD0_STAT_EF_SHIFT 15 2558c2ecf20Sopenharmony_ci#define MICFIL_VAD0_STAT_EF_MASK BIT(MICFIL_VAD0_STAT_EF_SHIFT) 2568c2ecf20Sopenharmony_ci#define MICFIL_VAD0_STAT_EF BIT(MICFIL_VAD0_STAT_EF_SHIFT) 2578c2ecf20Sopenharmony_ci#define MICFIL_VAD0_STAT_IF_SHIFT 0 2588c2ecf20Sopenharmony_ci#define MICFIL_VAD0_STAT_IF_MASK BIT(MICFIL_VAD0_STAT_IF_SHIFT) 2598c2ecf20Sopenharmony_ci#define MICFIL_VAD0_STAT_IF BIT(MICFIL_VAD0_STAT_IF_SHIFT) 2608c2ecf20Sopenharmony_ci 2618c2ecf20Sopenharmony_ci/* MICFIL Output Control Register */ 2628c2ecf20Sopenharmony_ci#define MICFIL_OUTGAIN_CHX_SHIFT(v) (4 * (v)) 2638c2ecf20Sopenharmony_ci 2648c2ecf20Sopenharmony_ci/* Constants */ 2658c2ecf20Sopenharmony_ci#define MICFIL_DMA_IRQ_DISABLED(v) ((v) & MICFIL_CTRL1_DISEL_MASK) 2668c2ecf20Sopenharmony_ci#define MICFIL_DMA_ENABLED(v) ((0x1 << MICFIL_CTRL1_DISEL_SHIFT) \ 2678c2ecf20Sopenharmony_ci == ((v) & MICFIL_CTRL1_DISEL_MASK)) 2688c2ecf20Sopenharmony_ci#define MICFIL_IRQ_ENABLED(v) ((0x2 << MICFIL_CTRL1_DISEL_SHIFT) \ 2698c2ecf20Sopenharmony_ci == ((v) & MICFIL_CTRL1_DISEL_MASK)) 2708c2ecf20Sopenharmony_ci#define MICFIL_OUTPUT_CHANNELS 8 2718c2ecf20Sopenharmony_ci#define MICFIL_FIFO_NUM 8 2728c2ecf20Sopenharmony_ci 2738c2ecf20Sopenharmony_ci#define FIFO_PTRWID 3 2748c2ecf20Sopenharmony_ci#define FIFO_LEN BIT(FIFO_PTRWID) 2758c2ecf20Sopenharmony_ci 2768c2ecf20Sopenharmony_ci#define MICFIL_IRQ_LINES 2 2778c2ecf20Sopenharmony_ci#define MICFIL_MAX_RETRY 25 2788c2ecf20Sopenharmony_ci#define MICFIL_SLEEP_MIN 90000 /* in us */ 2798c2ecf20Sopenharmony_ci#define MICFIL_SLEEP_MAX 100000 /* in us */ 2808c2ecf20Sopenharmony_ci#define MICFIL_DMA_MAXBURST_RX 6 2818c2ecf20Sopenharmony_ci#define MICFIL_CTRL2_OSR_DEFAULT (0 << MICFIL_CTRL2_CICOSR_SHIFT) 2828c2ecf20Sopenharmony_ci 2838c2ecf20Sopenharmony_ci#endif /* _FSL_MICFIL_H */ 284