162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * ALSA SoC CS53L30 codec driver 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright 2015 Cirrus Logic, Inc. 662306a36Sopenharmony_ci * 762306a36Sopenharmony_ci * Author: Paul Handrigan <Paul.Handrigan@cirrus.com>, 862306a36Sopenharmony_ci * Tim Howe <Tim.Howe@cirrus.com> 962306a36Sopenharmony_ci */ 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci#ifndef __CS53L30_H__ 1262306a36Sopenharmony_ci#define __CS53L30_H__ 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci/* I2C Registers */ 1562306a36Sopenharmony_ci#define CS53L30_DEVID_AB 0x01 /* Device ID A & B [RO]. */ 1662306a36Sopenharmony_ci#define CS53L30_DEVID_CD 0x02 /* Device ID C & D [RO]. */ 1762306a36Sopenharmony_ci#define CS53L30_DEVID_E 0x03 /* Device ID E [RO]. */ 1862306a36Sopenharmony_ci#define CS53L30_REVID 0x05 /* Revision ID [RO]. */ 1962306a36Sopenharmony_ci#define CS53L30_PWRCTL 0x06 /* Power Control. */ 2062306a36Sopenharmony_ci#define CS53L30_MCLKCTL 0x07 /* MCLK Control. */ 2162306a36Sopenharmony_ci#define CS53L30_INT_SR_CTL 0x08 /* Internal Sample Rate Control. */ 2262306a36Sopenharmony_ci#define CS53L30_MICBIAS_CTL 0x0A /* Mic Bias Control. */ 2362306a36Sopenharmony_ci#define CS53L30_ASPCFG_CTL 0x0C /* ASP Config Control. */ 2462306a36Sopenharmony_ci#define CS53L30_ASP_CTL1 0x0D /* ASP1 Control. */ 2562306a36Sopenharmony_ci#define CS53L30_ASP_TDMTX_CTL1 0x0E /* ASP1 TDM TX Control 1 */ 2662306a36Sopenharmony_ci#define CS53L30_ASP_TDMTX_CTL2 0x0F /* ASP1 TDM TX Control 2 */ 2762306a36Sopenharmony_ci#define CS53L30_ASP_TDMTX_CTL3 0x10 /* ASP1 TDM TX Control 3 */ 2862306a36Sopenharmony_ci#define CS53L30_ASP_TDMTX_CTL4 0x11 /* ASP1 TDM TX Control 4 */ 2962306a36Sopenharmony_ci#define CS53L30_ASP_TDMTX_EN1 0x12 /* ASP1 TDM TX Enable 1 */ 3062306a36Sopenharmony_ci#define CS53L30_ASP_TDMTX_EN2 0x13 /* ASP1 TDM TX Enable 2 */ 3162306a36Sopenharmony_ci#define CS53L30_ASP_TDMTX_EN3 0x14 /* ASP1 TDM TX Enable 3 */ 3262306a36Sopenharmony_ci#define CS53L30_ASP_TDMTX_EN4 0x15 /* ASP1 TDM TX Enable 4 */ 3362306a36Sopenharmony_ci#define CS53L30_ASP_TDMTX_EN5 0x16 /* ASP1 TDM TX Enable 5 */ 3462306a36Sopenharmony_ci#define CS53L30_ASP_TDMTX_EN6 0x17 /* ASP1 TDM TX Enable 6 */ 3562306a36Sopenharmony_ci#define CS53L30_ASP_CTL2 0x18 /* ASP2 Control. */ 3662306a36Sopenharmony_ci#define CS53L30_SFT_RAMP 0x1A /* Soft Ramp Control. */ 3762306a36Sopenharmony_ci#define CS53L30_LRCK_CTL1 0x1B /* LRCK Control 1. */ 3862306a36Sopenharmony_ci#define CS53L30_LRCK_CTL2 0x1C /* LRCK Control 2. */ 3962306a36Sopenharmony_ci#define CS53L30_MUTEP_CTL1 0x1F /* Mute Pin Control 1. */ 4062306a36Sopenharmony_ci#define CS53L30_MUTEP_CTL2 0x20 /* Mute Pin Control 2. */ 4162306a36Sopenharmony_ci#define CS53L30_INBIAS_CTL1 0x21 /* Input Bias Control 1. */ 4262306a36Sopenharmony_ci#define CS53L30_INBIAS_CTL2 0x22 /* Input Bias Control 2. */ 4362306a36Sopenharmony_ci#define CS53L30_DMIC1_STR_CTL 0x23 /* DMIC1 Stereo Control. */ 4462306a36Sopenharmony_ci#define CS53L30_DMIC2_STR_CTL 0x24 /* DMIC2 Stereo Control. */ 4562306a36Sopenharmony_ci#define CS53L30_ADCDMIC1_CTL1 0x25 /* ADC1/DMIC1 Control 1. */ 4662306a36Sopenharmony_ci#define CS53L30_ADCDMIC1_CTL2 0x26 /* ADC1/DMIC1 Control 2. */ 4762306a36Sopenharmony_ci#define CS53L30_ADC1_CTL3 0x27 /* ADC1 Control 3. */ 4862306a36Sopenharmony_ci#define CS53L30_ADC1_NG_CTL 0x28 /* ADC1 Noise Gate Control. */ 4962306a36Sopenharmony_ci#define CS53L30_ADC1A_AFE_CTL 0x29 /* ADC1A AFE Control. */ 5062306a36Sopenharmony_ci#define CS53L30_ADC1B_AFE_CTL 0x2A /* ADC1B AFE Control. */ 5162306a36Sopenharmony_ci#define CS53L30_ADC1A_DIG_VOL 0x2B /* ADC1A Digital Volume. */ 5262306a36Sopenharmony_ci#define CS53L30_ADC1B_DIG_VOL 0x2C /* ADC1B Digital Volume. */ 5362306a36Sopenharmony_ci#define CS53L30_ADCDMIC2_CTL1 0x2D /* ADC2/DMIC2 Control 1. */ 5462306a36Sopenharmony_ci#define CS53L30_ADCDMIC2_CTL2 0x2E /* ADC2/DMIC2 Control 2. */ 5562306a36Sopenharmony_ci#define CS53L30_ADC2_CTL3 0x2F /* ADC2 Control 3. */ 5662306a36Sopenharmony_ci#define CS53L30_ADC2_NG_CTL 0x30 /* ADC2 Noise Gate Control. */ 5762306a36Sopenharmony_ci#define CS53L30_ADC2A_AFE_CTL 0x31 /* ADC2A AFE Control. */ 5862306a36Sopenharmony_ci#define CS53L30_ADC2B_AFE_CTL 0x32 /* ADC2B AFE Control. */ 5962306a36Sopenharmony_ci#define CS53L30_ADC2A_DIG_VOL 0x33 /* ADC2A Digital Volume. */ 6062306a36Sopenharmony_ci#define CS53L30_ADC2B_DIG_VOL 0x34 /* ADC2B Digital Volume. */ 6162306a36Sopenharmony_ci#define CS53L30_INT_MASK 0x35 /* Interrupt Mask. */ 6262306a36Sopenharmony_ci#define CS53L30_IS 0x36 /* Interrupt Status. */ 6362306a36Sopenharmony_ci#define CS53L30_MAX_REGISTER 0x36 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_ci#define CS53L30_TDM_SLOT_MAX 4 6662306a36Sopenharmony_ci#define CS53L30_ASP_TDMTX_CTL(x) (CS53L30_ASP_TDMTX_CTL1 + (x)) 6762306a36Sopenharmony_ci/* x : index for registers; n : index for slot; 8 slots per register */ 6862306a36Sopenharmony_ci#define CS53L30_ASP_TDMTX_ENx(x) (CS53L30_ASP_TDMTX_EN6 - (x)) 6962306a36Sopenharmony_ci#define CS53L30_ASP_TDMTX_ENn(n) CS53L30_ASP_TDMTX_ENx((n) >> 3) 7062306a36Sopenharmony_ci#define CS53L30_ASP_TDMTX_ENx_MAX 6 7162306a36Sopenharmony_ci 7262306a36Sopenharmony_ci/* Device ID */ 7362306a36Sopenharmony_ci#define CS53L30_DEVID 0x53A30 7462306a36Sopenharmony_ci 7562306a36Sopenharmony_ci/* PDN_DONE Poll Maximum 7662306a36Sopenharmony_ci * If soft ramp is set it will take much longer to power down 7762306a36Sopenharmony_ci * the system. 7862306a36Sopenharmony_ci */ 7962306a36Sopenharmony_ci#define CS53L30_PDN_POLL_MAX 90 8062306a36Sopenharmony_ci 8162306a36Sopenharmony_ci/* Bitfield Definitions */ 8262306a36Sopenharmony_ci 8362306a36Sopenharmony_ci/* R6 (0x06) CS53L30_PWRCTL - Power Control */ 8462306a36Sopenharmony_ci#define CS53L30_PDN_ULP_SHIFT 7 8562306a36Sopenharmony_ci#define CS53L30_PDN_ULP_MASK (1 << CS53L30_PDN_ULP_SHIFT) 8662306a36Sopenharmony_ci#define CS53L30_PDN_ULP (1 << CS53L30_PDN_ULP_SHIFT) 8762306a36Sopenharmony_ci#define CS53L30_PDN_LP_SHIFT 6 8862306a36Sopenharmony_ci#define CS53L30_PDN_LP_MASK (1 << CS53L30_PDN_LP_SHIFT) 8962306a36Sopenharmony_ci#define CS53L30_PDN_LP (1 << CS53L30_PDN_LP_SHIFT) 9062306a36Sopenharmony_ci#define CS53L30_DISCHARGE_FILT_SHIFT 5 9162306a36Sopenharmony_ci#define CS53L30_DISCHARGE_FILT_MASK (1 << CS53L30_DISCHARGE_FILT_SHIFT) 9262306a36Sopenharmony_ci#define CS53L30_DISCHARGE_FILT (1 << CS53L30_DISCHARGE_FILT_SHIFT) 9362306a36Sopenharmony_ci#define CS53L30_THMS_PDN_SHIFT 4 9462306a36Sopenharmony_ci#define CS53L30_THMS_PDN_MASK (1 << CS53L30_THMS_PDN_SHIFT) 9562306a36Sopenharmony_ci#define CS53L30_THMS_PDN (1 << CS53L30_THMS_PDN_SHIFT) 9662306a36Sopenharmony_ci 9762306a36Sopenharmony_ci#define CS53L30_PWRCTL_DEFAULT (CS53L30_THMS_PDN) 9862306a36Sopenharmony_ci 9962306a36Sopenharmony_ci/* R7 (0x07) CS53L30_MCLKCTL - MCLK Control */ 10062306a36Sopenharmony_ci#define CS53L30_MCLK_DIS_SHIFT 7 10162306a36Sopenharmony_ci#define CS53L30_MCLK_DIS_MASK (1 << CS53L30_MCLK_DIS_SHIFT) 10262306a36Sopenharmony_ci#define CS53L30_MCLK_DIS (1 << CS53L30_MCLK_DIS_SHIFT) 10362306a36Sopenharmony_ci#define CS53L30_MCLK_INT_SCALE_SHIFT 6 10462306a36Sopenharmony_ci#define CS53L30_MCLK_INT_SCALE_MASK (1 << CS53L30_MCLK_INT_SCALE_SHIFT) 10562306a36Sopenharmony_ci#define CS53L30_MCLK_INT_SCALE (1 << CS53L30_MCLK_INT_SCALE_SHIFT) 10662306a36Sopenharmony_ci#define CS53L30_DMIC_DRIVE_SHIFT 5 10762306a36Sopenharmony_ci#define CS53L30_DMIC_DRIVE_MASK (1 << CS53L30_DMIC_DRIVE_SHIFT) 10862306a36Sopenharmony_ci#define CS53L30_DMIC_DRIVE (1 << CS53L30_DMIC_DRIVE_SHIFT) 10962306a36Sopenharmony_ci#define CS53L30_MCLK_DIV_SHIFT 2 11062306a36Sopenharmony_ci#define CS53L30_MCLK_DIV_WIDTH 2 11162306a36Sopenharmony_ci#define CS53L30_MCLK_DIV_MASK (((1 << CS53L30_MCLK_DIV_WIDTH) - 1) << CS53L30_MCLK_DIV_SHIFT) 11262306a36Sopenharmony_ci#define CS53L30_MCLK_DIV_BY_1 (0x0 << CS53L30_MCLK_DIV_SHIFT) 11362306a36Sopenharmony_ci#define CS53L30_MCLK_DIV_BY_2 (0x1 << CS53L30_MCLK_DIV_SHIFT) 11462306a36Sopenharmony_ci#define CS53L30_MCLK_DIV_BY_3 (0x2 << CS53L30_MCLK_DIV_SHIFT) 11562306a36Sopenharmony_ci#define CS53L30_SYNC_EN_SHIFT 1 11662306a36Sopenharmony_ci#define CS53L30_SYNC_EN_MASK (1 << CS53L30_SYNC_EN_SHIFT) 11762306a36Sopenharmony_ci#define CS53L30_SYNC_EN (1 << CS53L30_SYNC_EN_SHIFT) 11862306a36Sopenharmony_ci 11962306a36Sopenharmony_ci#define CS53L30_MCLKCTL_DEFAULT (CS53L30_MCLK_DIV_BY_2) 12062306a36Sopenharmony_ci 12162306a36Sopenharmony_ci/* R8 (0x08) CS53L30_INT_SR_CTL - Internal Sample Rate Control */ 12262306a36Sopenharmony_ci#define CS53L30_INTRNL_FS_RATIO_SHIFT 4 12362306a36Sopenharmony_ci#define CS53L30_INTRNL_FS_RATIO_MASK (1 << CS53L30_INTRNL_FS_RATIO_SHIFT) 12462306a36Sopenharmony_ci#define CS53L30_INTRNL_FS_RATIO (1 << CS53L30_INTRNL_FS_RATIO_SHIFT) 12562306a36Sopenharmony_ci#define CS53L30_MCLK_19MHZ_EN_SHIFT 0 12662306a36Sopenharmony_ci#define CS53L30_MCLK_19MHZ_EN_MASK (1 << CS53L30_MCLK_19MHZ_EN_SHIFT) 12762306a36Sopenharmony_ci#define CS53L30_MCLK_19MHZ_EN (1 << CS53L30_MCLK_19MHZ_EN_SHIFT) 12862306a36Sopenharmony_ci 12962306a36Sopenharmony_ci/* 0x6 << 1 is reserved bits */ 13062306a36Sopenharmony_ci#define CS53L30_INT_SR_CTL_DEFAULT (CS53L30_INTRNL_FS_RATIO | 0x6 << 1) 13162306a36Sopenharmony_ci 13262306a36Sopenharmony_ci/* R10 (0x0A) CS53L30_MICBIAS_CTL - Mic Bias Control */ 13362306a36Sopenharmony_ci#define CS53L30_MIC4_BIAS_PDN_SHIFT 7 13462306a36Sopenharmony_ci#define CS53L30_MIC4_BIAS_PDN_MASK (1 << CS53L30_MIC4_BIAS_PDN_SHIFT) 13562306a36Sopenharmony_ci#define CS53L30_MIC4_BIAS_PDN (1 << CS53L30_MIC4_BIAS_PDN_SHIFT) 13662306a36Sopenharmony_ci#define CS53L30_MIC3_BIAS_PDN_SHIFT 6 13762306a36Sopenharmony_ci#define CS53L30_MIC3_BIAS_PDN_MASK (1 << CS53L30_MIC3_BIAS_PDN_SHIFT) 13862306a36Sopenharmony_ci#define CS53L30_MIC3_BIAS_PDN (1 << CS53L30_MIC3_BIAS_PDN_SHIFT) 13962306a36Sopenharmony_ci#define CS53L30_MIC2_BIAS_PDN_SHIFT 5 14062306a36Sopenharmony_ci#define CS53L30_MIC2_BIAS_PDN_MASK (1 << CS53L30_MIC2_BIAS_PDN_SHIFT) 14162306a36Sopenharmony_ci#define CS53L30_MIC2_BIAS_PDN (1 << CS53L30_MIC2_BIAS_PDN_SHIFT) 14262306a36Sopenharmony_ci#define CS53L30_MIC1_BIAS_PDN_SHIFT 4 14362306a36Sopenharmony_ci#define CS53L30_MIC1_BIAS_PDN_MASK (1 << CS53L30_MIC1_BIAS_PDN_SHIFT) 14462306a36Sopenharmony_ci#define CS53L30_MIC1_BIAS_PDN (1 << CS53L30_MIC1_BIAS_PDN_SHIFT) 14562306a36Sopenharmony_ci#define CS53L30_MICx_BIAS_PDN (0xf << CS53L30_MIC1_BIAS_PDN_SHIFT) 14662306a36Sopenharmony_ci#define CS53L30_VP_MIN_SHIFT 2 14762306a36Sopenharmony_ci#define CS53L30_VP_MIN_MASK (1 << CS53L30_VP_MIN_SHIFT) 14862306a36Sopenharmony_ci#define CS53L30_VP_MIN (1 << CS53L30_VP_MIN_SHIFT) 14962306a36Sopenharmony_ci#define CS53L30_MIC_BIAS_CTRL_SHIFT 0 15062306a36Sopenharmony_ci#define CS53L30_MIC_BIAS_CTRL_WIDTH 2 15162306a36Sopenharmony_ci#define CS53L30_MIC_BIAS_CTRL_MASK (((1 << CS53L30_MIC_BIAS_CTRL_WIDTH) - 1) << CS53L30_MIC_BIAS_CTRL_SHIFT) 15262306a36Sopenharmony_ci#define CS53L30_MIC_BIAS_CTRL_HIZ (0 << CS53L30_MIC_BIAS_CTRL_SHIFT) 15362306a36Sopenharmony_ci#define CS53L30_MIC_BIAS_CTRL_1V8 (1 << CS53L30_MIC_BIAS_CTRL_SHIFT) 15462306a36Sopenharmony_ci#define CS53L30_MIC_BIAS_CTRL_2V75 (2 << CS53L30_MIC_BIAS_CTRL_SHIFT) 15562306a36Sopenharmony_ci 15662306a36Sopenharmony_ci#define CS53L30_MICBIAS_CTL_DEFAULT (CS53L30_MICx_BIAS_PDN | CS53L30_VP_MIN) 15762306a36Sopenharmony_ci 15862306a36Sopenharmony_ci/* R12 (0x0C) CS53L30_ASPCFG_CTL - ASP Configuration Control */ 15962306a36Sopenharmony_ci#define CS53L30_ASP_MS_SHIFT 7 16062306a36Sopenharmony_ci#define CS53L30_ASP_MS_MASK (1 << CS53L30_ASP_MS_SHIFT) 16162306a36Sopenharmony_ci#define CS53L30_ASP_MS (1 << CS53L30_ASP_MS_SHIFT) 16262306a36Sopenharmony_ci#define CS53L30_ASP_SCLK_INV_SHIFT 4 16362306a36Sopenharmony_ci#define CS53L30_ASP_SCLK_INV_MASK (1 << CS53L30_ASP_SCLK_INV_SHIFT) 16462306a36Sopenharmony_ci#define CS53L30_ASP_SCLK_INV (1 << CS53L30_ASP_SCLK_INV_SHIFT) 16562306a36Sopenharmony_ci#define CS53L30_ASP_RATE_SHIFT 0 16662306a36Sopenharmony_ci#define CS53L30_ASP_RATE_WIDTH 4 16762306a36Sopenharmony_ci#define CS53L30_ASP_RATE_MASK (((1 << CS53L30_ASP_RATE_WIDTH) - 1) << CS53L30_ASP_RATE_SHIFT) 16862306a36Sopenharmony_ci#define CS53L30_ASP_RATE_48K (0xc << CS53L30_ASP_RATE_SHIFT) 16962306a36Sopenharmony_ci 17062306a36Sopenharmony_ci#define CS53L30_ASPCFG_CTL_DEFAULT (CS53L30_ASP_RATE_48K) 17162306a36Sopenharmony_ci 17262306a36Sopenharmony_ci/* R13/R24 (0x0D/0x18) CS53L30_ASP_CTL1 & CS53L30_ASP_CTL2 - ASP Control 1~2 */ 17362306a36Sopenharmony_ci#define CS53L30_ASP_TDM_PDN_SHIFT 7 17462306a36Sopenharmony_ci#define CS53L30_ASP_TDM_PDN_MASK (1 << CS53L30_ASP_TDM_PDN_SHIFT) 17562306a36Sopenharmony_ci#define CS53L30_ASP_TDM_PDN (1 << CS53L30_ASP_TDM_PDN_SHIFT) 17662306a36Sopenharmony_ci#define CS53L30_ASP_SDOUTx_PDN_SHIFT 6 17762306a36Sopenharmony_ci#define CS53L30_ASP_SDOUTx_PDN_MASK (1 << CS53L30_ASP_SDOUTx_PDN_SHIFT) 17862306a36Sopenharmony_ci#define CS53L30_ASP_SDOUTx_PDN (1 << CS53L30_ASP_SDOUTx_PDN_SHIFT) 17962306a36Sopenharmony_ci#define CS53L30_ASP_3ST_SHIFT 5 18062306a36Sopenharmony_ci#define CS53L30_ASP_3ST_MASK (1 << CS53L30_ASP_3ST_SHIFT) 18162306a36Sopenharmony_ci#define CS53L30_ASP_3ST (1 << CS53L30_ASP_3ST_SHIFT) 18262306a36Sopenharmony_ci#define CS53L30_SHIFT_LEFT_SHIFT 4 18362306a36Sopenharmony_ci#define CS53L30_SHIFT_LEFT_MASK (1 << CS53L30_SHIFT_LEFT_SHIFT) 18462306a36Sopenharmony_ci#define CS53L30_SHIFT_LEFT (1 << CS53L30_SHIFT_LEFT_SHIFT) 18562306a36Sopenharmony_ci#define CS53L30_ASP_SDOUTx_DRIVE_SHIFT 0 18662306a36Sopenharmony_ci#define CS53L30_ASP_SDOUTx_DRIVE_MASK (1 << CS53L30_ASP_SDOUTx_DRIVE_SHIFT) 18762306a36Sopenharmony_ci#define CS53L30_ASP_SDOUTx_DRIVE (1 << CS53L30_ASP_SDOUTx_DRIVE_SHIFT) 18862306a36Sopenharmony_ci 18962306a36Sopenharmony_ci#define CS53L30_ASP_CTL1_DEFAULT (CS53L30_ASP_TDM_PDN) 19062306a36Sopenharmony_ci#define CS53L30_ASP_CTL2_DEFAULT (0) 19162306a36Sopenharmony_ci 19262306a36Sopenharmony_ci/* R14 (0x0E) ~ R17 (0x11) CS53L30_ASP_TDMTX_CTLx - ASP TDM TX Control 1~4 */ 19362306a36Sopenharmony_ci#define CS53L30_ASP_CHx_TX_STATE_SHIFT 7 19462306a36Sopenharmony_ci#define CS53L30_ASP_CHx_TX_STATE_MASK (1 << CS53L30_ASP_CHx_TX_STATE_SHIFT) 19562306a36Sopenharmony_ci#define CS53L30_ASP_CHx_TX_STATE (1 << CS53L30_ASP_CHx_TX_STATE_SHIFT) 19662306a36Sopenharmony_ci#define CS53L30_ASP_CHx_TX_LOC_SHIFT 0 19762306a36Sopenharmony_ci#define CS53L30_ASP_CHx_TX_LOC_WIDTH 6 19862306a36Sopenharmony_ci#define CS53L30_ASP_CHx_TX_LOC_MASK (((1 << CS53L30_ASP_CHx_TX_LOC_WIDTH) - 1) << CS53L30_ASP_CHx_TX_LOC_SHIFT) 19962306a36Sopenharmony_ci#define CS53L30_ASP_CHx_TX_LOC_MAX (47 << CS53L30_ASP_CHx_TX_LOC_SHIFT) 20062306a36Sopenharmony_ci#define CS53L30_ASP_CHx_TX_LOC(x) ((x) << CS53L30_ASP_CHx_TX_LOC_SHIFT) 20162306a36Sopenharmony_ci 20262306a36Sopenharmony_ci#define CS53L30_ASP_TDMTX_CTLx_DEFAULT (CS53L30_ASP_CHx_TX_LOC_MAX) 20362306a36Sopenharmony_ci 20462306a36Sopenharmony_ci/* R18 (0x12) ~ R23 (0x17) CS53L30_ASP_TDMTX_ENx - ASP TDM TX Enable 1~6 */ 20562306a36Sopenharmony_ci#define CS53L30_ASP_TDMTX_ENx_DEFAULT (0) 20662306a36Sopenharmony_ci 20762306a36Sopenharmony_ci/* R26 (0x1A) CS53L30_SFT_RAMP - Soft Ramp Control */ 20862306a36Sopenharmony_ci#define CS53L30_DIGSFT_SHIFT 5 20962306a36Sopenharmony_ci#define CS53L30_DIGSFT_MASK (1 << CS53L30_DIGSFT_SHIFT) 21062306a36Sopenharmony_ci#define CS53L30_DIGSFT (1 << CS53L30_DIGSFT_SHIFT) 21162306a36Sopenharmony_ci 21262306a36Sopenharmony_ci#define CS53L30_SFT_RMP_DEFAULT (0) 21362306a36Sopenharmony_ci 21462306a36Sopenharmony_ci/* R28 (0x1C) CS53L30_LRCK_CTL2 - LRCK Control 2 */ 21562306a36Sopenharmony_ci#define CS53L30_LRCK_50_NPW_SHIFT 3 21662306a36Sopenharmony_ci#define CS53L30_LRCK_50_NPW_MASK (1 << CS53L30_LRCK_50_NPW_SHIFT) 21762306a36Sopenharmony_ci#define CS53L30_LRCK_50_NPW (1 << CS53L30_LRCK_50_NPW_SHIFT) 21862306a36Sopenharmony_ci#define CS53L30_LRCK_TPWH_SHIFT 0 21962306a36Sopenharmony_ci#define CS53L30_LRCK_TPWH_WIDTH 3 22062306a36Sopenharmony_ci#define CS53L30_LRCK_TPWH_MASK (((1 << CS53L30_LRCK_TPWH_WIDTH) - 1) << CS53L30_LRCK_TPWH_SHIFT) 22162306a36Sopenharmony_ci#define CS53L30_LRCK_TPWH(x) (((x) << CS53L30_LRCK_TPWH_SHIFT) & CS53L30_LRCK_TPWH_MASK) 22262306a36Sopenharmony_ci 22362306a36Sopenharmony_ci#define CS53L30_LRCK_CTLx_DEFAULT (0) 22462306a36Sopenharmony_ci 22562306a36Sopenharmony_ci/* R31 (0x1F) CS53L30_MUTEP_CTL1 - MUTE Pin Control 1 */ 22662306a36Sopenharmony_ci#define CS53L30_MUTE_PDN_ULP_SHIFT 7 22762306a36Sopenharmony_ci#define CS53L30_MUTE_PDN_ULP_MASK (1 << CS53L30_MUTE_PDN_ULP_SHIFT) 22862306a36Sopenharmony_ci#define CS53L30_MUTE_PDN_ULP (1 << CS53L30_MUTE_PDN_ULP_SHIFT) 22962306a36Sopenharmony_ci#define CS53L30_MUTE_PDN_LP_SHIFT 6 23062306a36Sopenharmony_ci#define CS53L30_MUTE_PDN_LP_MASK (1 << CS53L30_MUTE_PDN_LP_SHIFT) 23162306a36Sopenharmony_ci#define CS53L30_MUTE_PDN_LP (1 << CS53L30_MUTE_PDN_LP_SHIFT) 23262306a36Sopenharmony_ci#define CS53L30_MUTE_M4B_PDN_SHIFT 4 23362306a36Sopenharmony_ci#define CS53L30_MUTE_M4B_PDN_MASK (1 << CS53L30_MUTE_M4B_PDN_SHIFT) 23462306a36Sopenharmony_ci#define CS53L30_MUTE_M4B_PDN (1 << CS53L30_MUTE_M4B_PDN_SHIFT) 23562306a36Sopenharmony_ci#define CS53L30_MUTE_M3B_PDN_SHIFT 3 23662306a36Sopenharmony_ci#define CS53L30_MUTE_M3B_PDN_MASK (1 << CS53L30_MUTE_M3B_PDN_SHIFT) 23762306a36Sopenharmony_ci#define CS53L30_MUTE_M3B_PDN (1 << CS53L30_MUTE_M3B_PDN_SHIFT) 23862306a36Sopenharmony_ci#define CS53L30_MUTE_M2B_PDN_SHIFT 2 23962306a36Sopenharmony_ci#define CS53L30_MUTE_M2B_PDN_MASK (1 << CS53L30_MUTE_M2B_PDN_SHIFT) 24062306a36Sopenharmony_ci#define CS53L30_MUTE_M2B_PDN (1 << CS53L30_MUTE_M2B_PDN_SHIFT) 24162306a36Sopenharmony_ci#define CS53L30_MUTE_M1B_PDN_SHIFT 1 24262306a36Sopenharmony_ci#define CS53L30_MUTE_M1B_PDN_MASK (1 << CS53L30_MUTE_M1B_PDN_SHIFT) 24362306a36Sopenharmony_ci#define CS53L30_MUTE_M1B_PDN (1 << CS53L30_MUTE_M1B_PDN_SHIFT) 24462306a36Sopenharmony_ci/* Note: be careful - x starts from 0 */ 24562306a36Sopenharmony_ci#define CS53L30_MUTE_MxB_PDN_SHIFT(x) (CS53L30_MUTE_M1B_PDN_SHIFT + (x)) 24662306a36Sopenharmony_ci#define CS53L30_MUTE_MxB_PDN_MASK(x) (1 << CS53L30_MUTE_MxB_PDN_SHIFT(x)) 24762306a36Sopenharmony_ci#define CS53L30_MUTE_MxB_PDN(x) (1 << CS53L30_MUTE_MxB_PDN_SHIFT(x)) 24862306a36Sopenharmony_ci#define CS53L30_MUTE_MB_ALL_PDN_SHIFT 0 24962306a36Sopenharmony_ci#define CS53L30_MUTE_MB_ALL_PDN_MASK (1 << CS53L30_MUTE_MB_ALL_PDN_SHIFT) 25062306a36Sopenharmony_ci#define CS53L30_MUTE_MB_ALL_PDN (1 << CS53L30_MUTE_MB_ALL_PDN_SHIFT) 25162306a36Sopenharmony_ci 25262306a36Sopenharmony_ci#define CS53L30_MUTEP_CTL1_MUTEALL (0xdf) 25362306a36Sopenharmony_ci#define CS53L30_MUTEP_CTL1_DEFAULT (0) 25462306a36Sopenharmony_ci 25562306a36Sopenharmony_ci/* R32 (0x20) CS53L30_MUTEP_CTL2 - MUTE Pin Control 2 */ 25662306a36Sopenharmony_ci#define CS53L30_MUTE_PIN_POLARITY_SHIFT 7 25762306a36Sopenharmony_ci#define CS53L30_MUTE_PIN_POLARITY_MASK (1 << CS53L30_MUTE_PIN_POLARITY_SHIFT) 25862306a36Sopenharmony_ci#define CS53L30_MUTE_PIN_POLARITY (1 << CS53L30_MUTE_PIN_POLARITY_SHIFT) 25962306a36Sopenharmony_ci#define CS53L30_MUTE_ASP_TDM_PDN_SHIFT 6 26062306a36Sopenharmony_ci#define CS53L30_MUTE_ASP_TDM_PDN_MASK (1 << CS53L30_MUTE_ASP_TDM_PDN_SHIFT) 26162306a36Sopenharmony_ci#define CS53L30_MUTE_ASP_TDM_PDN (1 << CS53L30_MUTE_ASP_TDM_PDN_SHIFT) 26262306a36Sopenharmony_ci#define CS53L30_MUTE_ASP_SDOUT2_PDN_SHIFT 5 26362306a36Sopenharmony_ci#define CS53L30_MUTE_ASP_SDOUT2_PDN_MASK (1 << CS53L30_MUTE_ASP_SDOUT2_PDN_SHIFT) 26462306a36Sopenharmony_ci#define CS53L30_MUTE_ASP_SDOUT2_PDN (1 << CS53L30_MUTE_ASP_SDOUT2_PDN_SHIFT) 26562306a36Sopenharmony_ci#define CS53L30_MUTE_ASP_SDOUT1_PDN_SHIFT 4 26662306a36Sopenharmony_ci#define CS53L30_MUTE_ASP_SDOUT1_PDN_MASK (1 << CS53L30_MUTE_ASP_SDOUT1_PDN_SHIFT) 26762306a36Sopenharmony_ci#define CS53L30_MUTE_ASP_SDOUT1_PDN (1 << CS53L30_MUTE_ASP_SDOUT1_PDN_SHIFT) 26862306a36Sopenharmony_ci/* Note: be careful - x starts from 0 */ 26962306a36Sopenharmony_ci#define CS53L30_MUTE_ASP_SDOUTx_PDN_SHIFT(x) ((x) + CS53L30_MUTE_ASP_SDOUT1_PDN_SHIFT) 27062306a36Sopenharmony_ci#define CS53L30_MUTE_ASP_SDOUTx_PDN_MASK(x) (1 << CS53L30_MUTE_ASP_SDOUTx_PDN_SHIFT(x)) 27162306a36Sopenharmony_ci#define CS53L30_MUTE_ASP_SDOUTx_PDN (1 << CS53L30_MUTE_ASP_SDOUTx_PDN_SHIFT(x)) 27262306a36Sopenharmony_ci#define CS53L30_MUTE_ADC2B_PDN_SHIFT 3 27362306a36Sopenharmony_ci#define CS53L30_MUTE_ADC2B_PDN_MASK (1 << CS53L30_MUTE_ADC2B_PDN_SHIFT) 27462306a36Sopenharmony_ci#define CS53L30_MUTE_ADC2B_PDN (1 << CS53L30_MUTE_ADC2B_PDN_SHIFT) 27562306a36Sopenharmony_ci#define CS53L30_MUTE_ADC2A_PDN_SHIFT 2 27662306a36Sopenharmony_ci#define CS53L30_MUTE_ADC2A_PDN_MASK (1 << CS53L30_MUTE_ADC2A_PDN_SHIFT) 27762306a36Sopenharmony_ci#define CS53L30_MUTE_ADC2A_PDN (1 << CS53L30_MUTE_ADC2A_PDN_SHIFT) 27862306a36Sopenharmony_ci#define CS53L30_MUTE_ADC1B_PDN_SHIFT 1 27962306a36Sopenharmony_ci#define CS53L30_MUTE_ADC1B_PDN_MASK (1 << CS53L30_MUTE_ADC1B_PDN_SHIFT) 28062306a36Sopenharmony_ci#define CS53L30_MUTE_ADC1B_PDN (1 << CS53L30_MUTE_ADC1B_PDN_SHIFT) 28162306a36Sopenharmony_ci#define CS53L30_MUTE_ADC1A_PDN_SHIFT 0 28262306a36Sopenharmony_ci#define CS53L30_MUTE_ADC1A_PDN_MASK (1 << CS53L30_MUTE_ADC1A_PDN_SHIFT) 28362306a36Sopenharmony_ci#define CS53L30_MUTE_ADC1A_PDN (1 << CS53L30_MUTE_ADC1A_PDN_SHIFT) 28462306a36Sopenharmony_ci 28562306a36Sopenharmony_ci#define CS53L30_MUTEP_CTL2_DEFAULT (CS53L30_MUTE_PIN_POLARITY) 28662306a36Sopenharmony_ci 28762306a36Sopenharmony_ci/* R33 (0x21) CS53L30_INBIAS_CTL1 - Input Bias Control 1 */ 28862306a36Sopenharmony_ci#define CS53L30_IN4M_BIAS_SHIFT 6 28962306a36Sopenharmony_ci#define CS53L30_IN4M_BIAS_WIDTH 2 29062306a36Sopenharmony_ci#define CS53L30_IN4M_BIAS_MASK (((1 << CS53L30_IN4M_BIAS_WIDTH) - 1) << CS53L30_IN4M_BIAS_SHIFT) 29162306a36Sopenharmony_ci#define CS53L30_IN4M_BIAS_OPEN (0 << CS53L30_IN4M_BIAS_SHIFT) 29262306a36Sopenharmony_ci#define CS53L30_IN4M_BIAS_PULL_DOWN (1 << CS53L30_IN4M_BIAS_SHIFT) 29362306a36Sopenharmony_ci#define CS53L30_IN4M_BIAS_VCM (2 << CS53L30_IN4M_BIAS_SHIFT) 29462306a36Sopenharmony_ci#define CS53L30_IN4P_BIAS_SHIFT 4 29562306a36Sopenharmony_ci#define CS53L30_IN4P_BIAS_WIDTH 2 29662306a36Sopenharmony_ci#define CS53L30_IN4P_BIAS_MASK (((1 << CS53L30_IN4P_BIAS_WIDTH) - 1) << CS53L30_IN4P_BIAS_SHIFT) 29762306a36Sopenharmony_ci#define CS53L30_IN4P_BIAS_OPEN (0 << CS53L30_IN4P_BIAS_SHIFT) 29862306a36Sopenharmony_ci#define CS53L30_IN4P_BIAS_PULL_DOWN (1 << CS53L30_IN4P_BIAS_SHIFT) 29962306a36Sopenharmony_ci#define CS53L30_IN4P_BIAS_VCM (2 << CS53L30_IN4P_BIAS_SHIFT) 30062306a36Sopenharmony_ci#define CS53L30_IN3M_BIAS_SHIFT 2 30162306a36Sopenharmony_ci#define CS53L30_IN3M_BIAS_WIDTH 2 30262306a36Sopenharmony_ci#define CS53L30_IN3M_BIAS_MASK (((1 << CS53L30_IN3M_BIAS_WIDTH) - 1) << CS53L30_IN4M_BIAS_SHIFT) 30362306a36Sopenharmony_ci#define CS53L30_IN3M_BIAS_OPEN (0 << CS53L30_IN3M_BIAS_SHIFT) 30462306a36Sopenharmony_ci#define CS53L30_IN3M_BIAS_PULL_DOWN (1 << CS53L30_IN3M_BIAS_SHIFT) 30562306a36Sopenharmony_ci#define CS53L30_IN3M_BIAS_VCM (2 << CS53L30_IN3M_BIAS_SHIFT) 30662306a36Sopenharmony_ci#define CS53L30_IN3P_BIAS_SHIFT 0 30762306a36Sopenharmony_ci#define CS53L30_IN3P_BIAS_WIDTH 2 30862306a36Sopenharmony_ci#define CS53L30_IN3P_BIAS_MASK (((1 << CS53L30_IN3P_BIAS_WIDTH) - 1) << CS53L30_IN3P_BIAS_SHIFT) 30962306a36Sopenharmony_ci#define CS53L30_IN3P_BIAS_OPEN (0 << CS53L30_IN3P_BIAS_SHIFT) 31062306a36Sopenharmony_ci#define CS53L30_IN3P_BIAS_PULL_DOWN (1 << CS53L30_IN3P_BIAS_SHIFT) 31162306a36Sopenharmony_ci#define CS53L30_IN3P_BIAS_VCM (2 << CS53L30_IN3P_BIAS_SHIFT) 31262306a36Sopenharmony_ci 31362306a36Sopenharmony_ci#define CS53L30_INBIAS_CTL1_DEFAULT (CS53L30_IN4M_BIAS_VCM | CS53L30_IN4P_BIAS_VCM |\ 31462306a36Sopenharmony_ci CS53L30_IN3M_BIAS_VCM | CS53L30_IN3P_BIAS_VCM) 31562306a36Sopenharmony_ci 31662306a36Sopenharmony_ci/* R34 (0x22) CS53L30_INBIAS_CTL2 - Input Bias Control 2 */ 31762306a36Sopenharmony_ci#define CS53L30_IN2M_BIAS_SHIFT 6 31862306a36Sopenharmony_ci#define CS53L30_IN2M_BIAS_WIDTH 2 31962306a36Sopenharmony_ci#define CS53L30_IN2M_BIAS_MASK (((1 << CS53L30_IN2M_BIAS_WIDTH) - 1) << CS53L30_IN2M_BIAS_SHIFT) 32062306a36Sopenharmony_ci#define CS53L30_IN2M_BIAS_OPEN (0 << CS53L30_IN2M_BIAS_SHIFT) 32162306a36Sopenharmony_ci#define CS53L30_IN2M_BIAS_PULL_DOWN (1 << CS53L30_IN2M_BIAS_SHIFT) 32262306a36Sopenharmony_ci#define CS53L30_IN2M_BIAS_VCM (2 << CS53L30_IN2M_BIAS_SHIFT) 32362306a36Sopenharmony_ci#define CS53L30_IN2P_BIAS_SHIFT 4 32462306a36Sopenharmony_ci#define CS53L30_IN2P_BIAS_WIDTH 2 32562306a36Sopenharmony_ci#define CS53L30_IN2P_BIAS_MASK (((1 << CS53L30_IN2P_BIAS_WIDTH) - 1) << CS53L30_IN2P_BIAS_SHIFT) 32662306a36Sopenharmony_ci#define CS53L30_IN2P_BIAS_OPEN (0 << CS53L30_IN2P_BIAS_SHIFT) 32762306a36Sopenharmony_ci#define CS53L30_IN2P_BIAS_PULL_DOWN (1 << CS53L30_IN2P_BIAS_SHIFT) 32862306a36Sopenharmony_ci#define CS53L30_IN2P_BIAS_VCM (2 << CS53L30_IN2P_BIAS_SHIFT) 32962306a36Sopenharmony_ci#define CS53L30_IN1M_BIAS_SHIFT 2 33062306a36Sopenharmony_ci#define CS53L30_IN1M_BIAS_WIDTH 2 33162306a36Sopenharmony_ci#define CS53L30_IN1M_BIAS_MASK (((1 << CS53L30_IN1M_BIAS_WIDTH) - 1) << CS53L30_IN1M_BIAS_SHIFT) 33262306a36Sopenharmony_ci#define CS53L30_IN1M_BIAS_OPEN (0 << CS53L30_IN1M_BIAS_SHIFT) 33362306a36Sopenharmony_ci#define CS53L30_IN1M_BIAS_PULL_DOWN (1 << CS53L30_IN1M_BIAS_SHIFT) 33462306a36Sopenharmony_ci#define CS53L30_IN1M_BIAS_VCM (2 << CS53L30_IN1M_BIAS_SHIFT) 33562306a36Sopenharmony_ci#define CS53L30_IN1P_BIAS_SHIFT 0 33662306a36Sopenharmony_ci#define CS53L30_IN1P_BIAS_WIDTH 2 33762306a36Sopenharmony_ci#define CS53L30_IN1P_BIAS_MASK (((1 << CS53L30_IN1P_BIAS_WIDTH) - 1) << CS53L30_IN1P_BIAS_SHIFT) 33862306a36Sopenharmony_ci#define CS53L30_IN1P_BIAS_OPEN (0 << CS53L30_IN1P_BIAS_SHIFT) 33962306a36Sopenharmony_ci#define CS53L30_IN1P_BIAS_PULL_DOWN (1 << CS53L30_IN1P_BIAS_SHIFT) 34062306a36Sopenharmony_ci#define CS53L30_IN1P_BIAS_VCM (2 << CS53L30_IN1P_BIAS_SHIFT) 34162306a36Sopenharmony_ci 34262306a36Sopenharmony_ci#define CS53L30_INBIAS_CTL2_DEFAULT (CS53L30_IN2M_BIAS_VCM | CS53L30_IN2P_BIAS_VCM |\ 34362306a36Sopenharmony_ci CS53L30_IN1M_BIAS_VCM | CS53L30_IN1P_BIAS_VCM) 34462306a36Sopenharmony_ci 34562306a36Sopenharmony_ci/* R35 (0x23) & R36 (0x24) CS53L30_DMICx_STR_CTL - DMIC1 & DMIC2 Stereo Control */ 34662306a36Sopenharmony_ci#define CS53L30_DMICx_STEREO_ENB_SHIFT 5 34762306a36Sopenharmony_ci#define CS53L30_DMICx_STEREO_ENB_MASK (1 << CS53L30_DMICx_STEREO_ENB_SHIFT) 34862306a36Sopenharmony_ci#define CS53L30_DMICx_STEREO_ENB (1 << CS53L30_DMICx_STEREO_ENB_SHIFT) 34962306a36Sopenharmony_ci 35062306a36Sopenharmony_ci/* 0x88 and 0xCC are reserved bits */ 35162306a36Sopenharmony_ci#define CS53L30_DMIC1_STR_CTL_DEFAULT (CS53L30_DMICx_STEREO_ENB | 0x88) 35262306a36Sopenharmony_ci#define CS53L30_DMIC2_STR_CTL_DEFAULT (CS53L30_DMICx_STEREO_ENB | 0xCC) 35362306a36Sopenharmony_ci 35462306a36Sopenharmony_ci/* R37/R45 (0x25/0x2D) CS53L30_ADCDMICx_CTL1 - ADC1/DMIC1 & ADC2/DMIC2 Control 1 */ 35562306a36Sopenharmony_ci#define CS53L30_ADCxB_PDN_SHIFT 7 35662306a36Sopenharmony_ci#define CS53L30_ADCxB_PDN_MASK (1 << CS53L30_ADCxB_PDN_SHIFT) 35762306a36Sopenharmony_ci#define CS53L30_ADCxB_PDN (1 << CS53L30_ADCxB_PDN_SHIFT) 35862306a36Sopenharmony_ci#define CS53L30_ADCxA_PDN_SHIFT 6 35962306a36Sopenharmony_ci#define CS53L30_ADCxA_PDN_MASK (1 << CS53L30_ADCxA_PDN_SHIFT) 36062306a36Sopenharmony_ci#define CS53L30_ADCxA_PDN (1 << CS53L30_ADCxA_PDN_SHIFT) 36162306a36Sopenharmony_ci#define CS53L30_DMICx_PDN_SHIFT 2 36262306a36Sopenharmony_ci#define CS53L30_DMICx_PDN_MASK (1 << CS53L30_DMICx_PDN_SHIFT) 36362306a36Sopenharmony_ci#define CS53L30_DMICx_PDN (1 << CS53L30_DMICx_PDN_SHIFT) 36462306a36Sopenharmony_ci#define CS53L30_DMICx_SCLK_DIV_SHIFT 1 36562306a36Sopenharmony_ci#define CS53L30_DMICx_SCLK_DIV_MASK (1 << CS53L30_DMICx_SCLK_DIV_SHIFT) 36662306a36Sopenharmony_ci#define CS53L30_DMICx_SCLK_DIV (1 << CS53L30_DMICx_SCLK_DIV_SHIFT) 36762306a36Sopenharmony_ci#define CS53L30_CH_TYPE_SHIFT 0 36862306a36Sopenharmony_ci#define CS53L30_CH_TYPE_MASK (1 << CS53L30_CH_TYPE_SHIFT) 36962306a36Sopenharmony_ci#define CS53L30_CH_TYPE (1 << CS53L30_CH_TYPE_SHIFT) 37062306a36Sopenharmony_ci 37162306a36Sopenharmony_ci#define CS53L30_ADCDMICx_PDN_MASK 0xFF 37262306a36Sopenharmony_ci#define CS53L30_ADCDMICx_CTL1_DEFAULT (CS53L30_DMICx_PDN) 37362306a36Sopenharmony_ci 37462306a36Sopenharmony_ci/* R38/R46 (0x26/0x2E) CS53L30_ADCDMICx_CTL2 - ADC1/DMIC1 & ADC2/DMIC2 Control 2 */ 37562306a36Sopenharmony_ci#define CS53L30_ADCx_NOTCH_DIS_SHIFT 7 37662306a36Sopenharmony_ci#define CS53L30_ADCx_NOTCH_DIS_MASK (1 << CS53L30_ADCx_NOTCH_DIS_SHIFT) 37762306a36Sopenharmony_ci#define CS53L30_ADCx_NOTCH_DIS (1 << CS53L30_ADCx_NOTCH_DIS_SHIFT) 37862306a36Sopenharmony_ci#define CS53L30_ADCxB_INV_SHIFT 5 37962306a36Sopenharmony_ci#define CS53L30_ADCxB_INV_MASK (1 << CS53L30_ADCxB_INV_SHIFT) 38062306a36Sopenharmony_ci#define CS53L30_ADCxB_INV (1 << CS53L30_ADCxB_INV_SHIFT) 38162306a36Sopenharmony_ci#define CS53L30_ADCxA_INV_SHIFT 4 38262306a36Sopenharmony_ci#define CS53L30_ADCxA_INV_MASK (1 << CS53L30_ADCxA_INV_SHIFT) 38362306a36Sopenharmony_ci#define CS53L30_ADCxA_INV (1 << CS53L30_ADCxA_INV_SHIFT) 38462306a36Sopenharmony_ci#define CS53L30_ADCxB_DIG_BOOST_SHIFT 1 38562306a36Sopenharmony_ci#define CS53L30_ADCxB_DIG_BOOST_MASK (1 << CS53L30_ADCxB_DIG_BOOST_SHIFT) 38662306a36Sopenharmony_ci#define CS53L30_ADCxB_DIG_BOOST (1 << CS53L30_ADCxB_DIG_BOOST_SHIFT) 38762306a36Sopenharmony_ci#define CS53L30_ADCxA_DIG_BOOST_SHIFT 0 38862306a36Sopenharmony_ci#define CS53L30_ADCxA_DIG_BOOST_MASK (1 << CS53L30_ADCxA_DIG_BOOST_SHIFT) 38962306a36Sopenharmony_ci#define CS53L30_ADCxA_DIG_BOOST (1 << CS53L30_ADCxA_DIG_BOOST_SHIFT) 39062306a36Sopenharmony_ci 39162306a36Sopenharmony_ci#define CS53L30_ADCDMIC1_CTL2_DEFAULT (0) 39262306a36Sopenharmony_ci 39362306a36Sopenharmony_ci/* R39/R47 (0x27/0x2F) CS53L30_ADCx_CTL3 - ADC1/ADC2 Control 3 */ 39462306a36Sopenharmony_ci#define CS53L30_ADCx_HPF_EN_SHIFT 3 39562306a36Sopenharmony_ci#define CS53L30_ADCx_HPF_EN_MASK (1 << CS53L30_ADCx_HPF_EN_SHIFT) 39662306a36Sopenharmony_ci#define CS53L30_ADCx_HPF_EN (1 << CS53L30_ADCx_HPF_EN_SHIFT) 39762306a36Sopenharmony_ci#define CS53L30_ADCx_HPF_CF_SHIFT 1 39862306a36Sopenharmony_ci#define CS53L30_ADCx_HPF_CF_WIDTH 2 39962306a36Sopenharmony_ci#define CS53L30_ADCx_HPF_CF_MASK (((1 << CS53L30_ADCx_HPF_CF_WIDTH) - 1) << CS53L30_ADCx_HPF_CF_SHIFT) 40062306a36Sopenharmony_ci#define CS53L30_ADCx_HPF_CF_1HZ86 (0 << CS53L30_ADCx_HPF_CF_SHIFT) 40162306a36Sopenharmony_ci#define CS53L30_ADCx_HPF_CF_120HZ (1 << CS53L30_ADCx_HPF_CF_SHIFT) 40262306a36Sopenharmony_ci#define CS53L30_ADCx_HPF_CF_235HZ (2 << CS53L30_ADCx_HPF_CF_SHIFT) 40362306a36Sopenharmony_ci#define CS53L30_ADCx_HPF_CF_466HZ (3 << CS53L30_ADCx_HPF_CF_SHIFT) 40462306a36Sopenharmony_ci#define CS53L30_ADCx_NG_ALL_SHIFT 0 40562306a36Sopenharmony_ci#define CS53L30_ADCx_NG_ALL_MASK (1 << CS53L30_ADCx_NG_ALL_SHIFT) 40662306a36Sopenharmony_ci#define CS53L30_ADCx_NG_ALL (1 << CS53L30_ADCx_NG_ALL_SHIFT) 40762306a36Sopenharmony_ci 40862306a36Sopenharmony_ci#define CS53L30_ADCx_CTL3_DEFAULT (CS53L30_ADCx_HPF_EN) 40962306a36Sopenharmony_ci 41062306a36Sopenharmony_ci/* R40/R48 (0x28/0x30) CS53L30_ADCx_NG_CTL - ADC1/ADC2 Noise Gate Control */ 41162306a36Sopenharmony_ci#define CS53L30_ADCxB_NG_SHIFT 7 41262306a36Sopenharmony_ci#define CS53L30_ADCxB_NG_MASK (1 << CS53L30_ADCxB_NG_SHIFT) 41362306a36Sopenharmony_ci#define CS53L30_ADCxB_NG (1 << CS53L30_ADCxB_NG_SHIFT) 41462306a36Sopenharmony_ci#define CS53L30_ADCxA_NG_SHIFT 6 41562306a36Sopenharmony_ci#define CS53L30_ADCxA_NG_MASK (1 << CS53L30_ADCxA_NG_SHIFT) 41662306a36Sopenharmony_ci#define CS53L30_ADCxA_NG (1 << CS53L30_ADCxA_NG_SHIFT) 41762306a36Sopenharmony_ci#define CS53L30_ADCx_NG_BOOST_SHIFT 5 41862306a36Sopenharmony_ci#define CS53L30_ADCx_NG_BOOST_MASK (1 << CS53L30_ADCx_NG_BOOST_SHIFT) 41962306a36Sopenharmony_ci#define CS53L30_ADCx_NG_BOOST (1 << CS53L30_ADCx_NG_BOOST_SHIFT) 42062306a36Sopenharmony_ci#define CS53L30_ADCx_NG_THRESH_SHIFT 2 42162306a36Sopenharmony_ci#define CS53L30_ADCx_NG_THRESH_WIDTH 3 42262306a36Sopenharmony_ci#define CS53L30_ADCx_NG_THRESH_MASK (((1 << CS53L30_ADCx_NG_THRESH_WIDTH) - 1) << CS53L30_ADCx_NG_THRESH_SHIFT) 42362306a36Sopenharmony_ci#define CS53L30_ADCx_NG_DELAY_SHIFT 0 42462306a36Sopenharmony_ci#define CS53L30_ADCx_NG_DELAY_WIDTH 2 42562306a36Sopenharmony_ci#define CS53L30_ADCx_NG_DELAY_MASK (((1 << CS53L30_ADCx_NG_DELAY_WIDTH) - 1) << CS53L30_ADCx_NG_DELAY_SHIFT) 42662306a36Sopenharmony_ci 42762306a36Sopenharmony_ci#define CS53L30_ADCx_NG_CTL_DEFAULT (0) 42862306a36Sopenharmony_ci 42962306a36Sopenharmony_ci/* R41/R42/R49/R50 (0x29/0x2A/0x31/0x32) CS53L30_ADCxy_AFE_CTL - ADC1A/1B/2A/2B AFE Control */ 43062306a36Sopenharmony_ci#define CS53L30_ADCxy_PREAMP_SHIFT 6 43162306a36Sopenharmony_ci#define CS53L30_ADCxy_PREAMP_WIDTH 2 43262306a36Sopenharmony_ci#define CS53L30_ADCxy_PREAMP_MASK (((1 << CS53L30_ADCxy_PREAMP_WIDTH) - 1) << CS53L30_ADCxy_PREAMP_SHIFT) 43362306a36Sopenharmony_ci#define CS53L30_ADCxy_PGA_VOL_SHIFT 0 43462306a36Sopenharmony_ci#define CS53L30_ADCxy_PGA_VOL_WIDTH 6 43562306a36Sopenharmony_ci#define CS53L30_ADCxy_PGA_VOL_MASK (((1 << CS53L30_ADCxy_PGA_VOL_WIDTH) - 1) << CS53L30_ADCxy_PGA_VOL_SHIFT) 43662306a36Sopenharmony_ci 43762306a36Sopenharmony_ci#define CS53L30_ADCxy_AFE_CTL_DEFAULT (0) 43862306a36Sopenharmony_ci 43962306a36Sopenharmony_ci/* R43/R44/R51/R52 (0x2B/0x2C/0x33/0x34) CS53L30_ADCxy_DIG_VOL - ADC1A/1B/2A/2B Digital Volume */ 44062306a36Sopenharmony_ci#define CS53L30_ADCxy_VOL_MUTE (0x80) 44162306a36Sopenharmony_ci 44262306a36Sopenharmony_ci#define CS53L30_ADCxy_DIG_VOL_DEFAULT (0x0) 44362306a36Sopenharmony_ci 44462306a36Sopenharmony_ci/* CS53L30_INT */ 44562306a36Sopenharmony_ci#define CS53L30_PDN_DONE (1 << 7) 44662306a36Sopenharmony_ci#define CS53L30_THMS_TRIP (1 << 6) 44762306a36Sopenharmony_ci#define CS53L30_SYNC_DONE (1 << 5) 44862306a36Sopenharmony_ci#define CS53L30_ADC2B_OVFL (1 << 4) 44962306a36Sopenharmony_ci#define CS53L30_ADC2A_OVFL (1 << 3) 45062306a36Sopenharmony_ci#define CS53L30_ADC1B_OVFL (1 << 2) 45162306a36Sopenharmony_ci#define CS53L30_ADC1A_OVFL (1 << 1) 45262306a36Sopenharmony_ci#define CS53L30_MUTE_PIN (1 << 0) 45362306a36Sopenharmony_ci#define CS53L30_DEVICE_INT_MASK 0xFF 45462306a36Sopenharmony_ci 45562306a36Sopenharmony_ci#endif /* __CS53L30_H__ */ 456