162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * linux/sound/cs42l42.h -- Platform data for CS42L42 ALSA SoC audio driver header 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright 2016-2022 Cirrus Logic, Inc. 662306a36Sopenharmony_ci * 762306a36Sopenharmony_ci * Author: James Schulman <james.schulman@cirrus.com> 862306a36Sopenharmony_ci * Author: Brian Austin <brian.austin@cirrus.com> 962306a36Sopenharmony_ci * Author: Michael White <michael.white@cirrus.com> 1062306a36Sopenharmony_ci */ 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci#ifndef __CS42L42_H 1362306a36Sopenharmony_ci#define __CS42L42_H 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ci#define CS42L42_PAGE_REGISTER 0x00 /* Page Select Register */ 1662306a36Sopenharmony_ci#define CS42L42_WIN_START 0x00 1762306a36Sopenharmony_ci#define CS42L42_WIN_LEN 0x100 1862306a36Sopenharmony_ci#define CS42L42_RANGE_MIN 0x00 1962306a36Sopenharmony_ci#define CS42L42_RANGE_MAX 0x7F 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ci#define CS42L42_PAGE_10 0x1000 2262306a36Sopenharmony_ci#define CS42L42_PAGE_11 0x1100 2362306a36Sopenharmony_ci#define CS42L42_PAGE_12 0x1200 2462306a36Sopenharmony_ci#define CS42L42_PAGE_13 0x1300 2562306a36Sopenharmony_ci#define CS42L42_PAGE_15 0x1500 2662306a36Sopenharmony_ci#define CS42L42_PAGE_19 0x1900 2762306a36Sopenharmony_ci#define CS42L42_PAGE_1B 0x1B00 2862306a36Sopenharmony_ci#define CS42L42_PAGE_1C 0x1C00 2962306a36Sopenharmony_ci#define CS42L42_PAGE_1D 0x1D00 3062306a36Sopenharmony_ci#define CS42L42_PAGE_1F 0x1F00 3162306a36Sopenharmony_ci#define CS42L42_PAGE_20 0x2000 3262306a36Sopenharmony_ci#define CS42L42_PAGE_21 0x2100 3362306a36Sopenharmony_ci#define CS42L42_PAGE_23 0x2300 3462306a36Sopenharmony_ci#define CS42L42_PAGE_24 0x2400 3562306a36Sopenharmony_ci#define CS42L42_PAGE_25 0x2500 3662306a36Sopenharmony_ci#define CS42L42_PAGE_26 0x2600 3762306a36Sopenharmony_ci#define CS42L42_PAGE_27 0x2700 3862306a36Sopenharmony_ci#define CS42L42_PAGE_28 0x2800 3962306a36Sopenharmony_ci#define CS42L42_PAGE_29 0x2900 4062306a36Sopenharmony_ci#define CS42L42_PAGE_2A 0x2A00 4162306a36Sopenharmony_ci#define CS42L42_PAGE_30 0x3000 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ci#define CS42L42_CHIP_ID 0x42A42 4462306a36Sopenharmony_ci#define CS42L83_CHIP_ID 0x42A83 4562306a36Sopenharmony_ci 4662306a36Sopenharmony_ci/* Page 0x10 Global Registers */ 4762306a36Sopenharmony_ci#define CS42L42_DEVID_AB (CS42L42_PAGE_10 + 0x01) 4862306a36Sopenharmony_ci#define CS42L42_DEVID_CD (CS42L42_PAGE_10 + 0x02) 4962306a36Sopenharmony_ci#define CS42L42_DEVID_E (CS42L42_PAGE_10 + 0x03) 5062306a36Sopenharmony_ci#define CS42L42_FABID (CS42L42_PAGE_10 + 0x04) 5162306a36Sopenharmony_ci#define CS42L42_REVID (CS42L42_PAGE_10 + 0x05) 5262306a36Sopenharmony_ci#define CS42L42_FRZ_CTL (CS42L42_PAGE_10 + 0x06) 5362306a36Sopenharmony_ci 5462306a36Sopenharmony_ci#define CS42L42_SRC_CTL (CS42L42_PAGE_10 + 0x07) 5562306a36Sopenharmony_ci#define CS42L42_SRC_BYPASS_DAC_SHIFT 1 5662306a36Sopenharmony_ci#define CS42L42_SRC_BYPASS_DAC_MASK (1 << CS42L42_SRC_BYPASS_DAC_SHIFT) 5762306a36Sopenharmony_ci 5862306a36Sopenharmony_ci#define CS42L42_MCLK_STATUS (CS42L42_PAGE_10 + 0x08) 5962306a36Sopenharmony_ci 6062306a36Sopenharmony_ci#define CS42L42_MCLK_CTL (CS42L42_PAGE_10 + 0x09) 6162306a36Sopenharmony_ci#define CS42L42_INTERNAL_FS_SHIFT 1 6262306a36Sopenharmony_ci#define CS42L42_INTERNAL_FS_MASK (1 << CS42L42_INTERNAL_FS_SHIFT) 6362306a36Sopenharmony_ci 6462306a36Sopenharmony_ci#define CS42L42_SFTRAMP_RATE (CS42L42_PAGE_10 + 0x0A) 6562306a36Sopenharmony_ci#define CS42L42_SLOW_START_ENABLE (CS42L42_PAGE_10 + 0x0B) 6662306a36Sopenharmony_ci#define CS42L42_SLOW_START_EN_MASK GENMASK(6, 4) 6762306a36Sopenharmony_ci#define CS42L42_SLOW_START_EN_SHIFT 4 6862306a36Sopenharmony_ci#define CS42L42_I2C_DEBOUNCE (CS42L42_PAGE_10 + 0x0E) 6962306a36Sopenharmony_ci#define CS42L42_I2C_STRETCH (CS42L42_PAGE_10 + 0x0F) 7062306a36Sopenharmony_ci#define CS42L42_I2C_TIMEOUT (CS42L42_PAGE_10 + 0x10) 7162306a36Sopenharmony_ci 7262306a36Sopenharmony_ci/* Page 0x11 Power and Headset Detect Registers */ 7362306a36Sopenharmony_ci#define CS42L42_PWR_CTL1 (CS42L42_PAGE_11 + 0x01) 7462306a36Sopenharmony_ci#define CS42L42_ASP_DAO_PDN_SHIFT 7 7562306a36Sopenharmony_ci#define CS42L42_ASP_DAO_PDN_MASK (1 << CS42L42_ASP_DAO_PDN_SHIFT) 7662306a36Sopenharmony_ci#define CS42L42_ASP_DAI_PDN_SHIFT 6 7762306a36Sopenharmony_ci#define CS42L42_ASP_DAI_PDN_MASK (1 << CS42L42_ASP_DAI_PDN_SHIFT) 7862306a36Sopenharmony_ci#define CS42L42_MIXER_PDN_SHIFT 5 7962306a36Sopenharmony_ci#define CS42L42_MIXER_PDN_MASK (1 << CS42L42_MIXER_PDN_SHIFT) 8062306a36Sopenharmony_ci#define CS42L42_EQ_PDN_SHIFT 4 8162306a36Sopenharmony_ci#define CS42L42_EQ_PDN_MASK (1 << CS42L42_EQ_PDN_SHIFT) 8262306a36Sopenharmony_ci#define CS42L42_HP_PDN_SHIFT 3 8362306a36Sopenharmony_ci#define CS42L42_HP_PDN_MASK (1 << CS42L42_HP_PDN_SHIFT) 8462306a36Sopenharmony_ci#define CS42L42_ADC_PDN_SHIFT 2 8562306a36Sopenharmony_ci#define CS42L42_ADC_PDN_MASK (1 << CS42L42_ADC_PDN_SHIFT) 8662306a36Sopenharmony_ci#define CS42L42_PDN_ALL_SHIFT 0 8762306a36Sopenharmony_ci#define CS42L42_PDN_ALL_MASK (1 << CS42L42_PDN_ALL_SHIFT) 8862306a36Sopenharmony_ci 8962306a36Sopenharmony_ci#define CS42L42_PWR_CTL2 (CS42L42_PAGE_11 + 0x02) 9062306a36Sopenharmony_ci#define CS42L42_ADC_SRC_PDNB_SHIFT 0 9162306a36Sopenharmony_ci#define CS42L42_ADC_SRC_PDNB_MASK (1 << CS42L42_ADC_SRC_PDNB_SHIFT) 9262306a36Sopenharmony_ci#define CS42L42_DAC_SRC_PDNB_SHIFT 1 9362306a36Sopenharmony_ci#define CS42L42_DAC_SRC_PDNB_MASK (1 << CS42L42_DAC_SRC_PDNB_SHIFT) 9462306a36Sopenharmony_ci#define CS42L42_ASP_DAI1_PDN_SHIFT 2 9562306a36Sopenharmony_ci#define CS42L42_ASP_DAI1_PDN_MASK (1 << CS42L42_ASP_DAI1_PDN_SHIFT) 9662306a36Sopenharmony_ci#define CS42L42_SRC_PDN_OVERRIDE_SHIFT 3 9762306a36Sopenharmony_ci#define CS42L42_SRC_PDN_OVERRIDE_MASK (1 << CS42L42_SRC_PDN_OVERRIDE_SHIFT) 9862306a36Sopenharmony_ci#define CS42L42_DISCHARGE_FILT_SHIFT 4 9962306a36Sopenharmony_ci#define CS42L42_DISCHARGE_FILT_MASK (1 << CS42L42_DISCHARGE_FILT_SHIFT) 10062306a36Sopenharmony_ci 10162306a36Sopenharmony_ci#define CS42L42_PWR_CTL3 (CS42L42_PAGE_11 + 0x03) 10262306a36Sopenharmony_ci#define CS42L42_RING_SENSE_PDNB_SHIFT 1 10362306a36Sopenharmony_ci#define CS42L42_RING_SENSE_PDNB_MASK (1 << CS42L42_RING_SENSE_PDNB_SHIFT) 10462306a36Sopenharmony_ci#define CS42L42_VPMON_PDNB_SHIFT 2 10562306a36Sopenharmony_ci#define CS42L42_VPMON_PDNB_MASK (1 << CS42L42_VPMON_PDNB_SHIFT) 10662306a36Sopenharmony_ci#define CS42L42_SW_CLK_STP_STAT_SEL_SHIFT 5 10762306a36Sopenharmony_ci#define CS42L42_SW_CLK_STP_STAT_SEL_MASK (3 << CS42L42_SW_CLK_STP_STAT_SEL_SHIFT) 10862306a36Sopenharmony_ci 10962306a36Sopenharmony_ci#define CS42L42_RSENSE_CTL1 (CS42L42_PAGE_11 + 0x04) 11062306a36Sopenharmony_ci#define CS42L42_RS_TRIM_R_SHIFT 0 11162306a36Sopenharmony_ci#define CS42L42_RS_TRIM_R_MASK (1 << CS42L42_RS_TRIM_R_SHIFT) 11262306a36Sopenharmony_ci#define CS42L42_RS_TRIM_T_SHIFT 1 11362306a36Sopenharmony_ci#define CS42L42_RS_TRIM_T_MASK (1 << CS42L42_RS_TRIM_T_SHIFT) 11462306a36Sopenharmony_ci#define CS42L42_HPREF_RS_SHIFT 2 11562306a36Sopenharmony_ci#define CS42L42_HPREF_RS_MASK (1 << CS42L42_HPREF_RS_SHIFT) 11662306a36Sopenharmony_ci#define CS42L42_HSBIAS_FILT_REF_RS_SHIFT 3 11762306a36Sopenharmony_ci#define CS42L42_HSBIAS_FILT_REF_RS_MASK (1 << CS42L42_HSBIAS_FILT_REF_RS_SHIFT) 11862306a36Sopenharmony_ci#define CS42L42_RING_SENSE_PU_HIZ_SHIFT 6 11962306a36Sopenharmony_ci#define CS42L42_RING_SENSE_PU_HIZ_MASK (1 << CS42L42_RING_SENSE_PU_HIZ_SHIFT) 12062306a36Sopenharmony_ci 12162306a36Sopenharmony_ci#define CS42L42_RSENSE_CTL2 (CS42L42_PAGE_11 + 0x05) 12262306a36Sopenharmony_ci#define CS42L42_TS_RS_GATE_SHIFT 7 12362306a36Sopenharmony_ci#define CS42L42_TS_RS_GATE_MAS (1 << CS42L42_TS_RS_GATE_SHIFT) 12462306a36Sopenharmony_ci 12562306a36Sopenharmony_ci#define CS42L42_OSC_SWITCH (CS42L42_PAGE_11 + 0x07) 12662306a36Sopenharmony_ci#define CS42L42_SCLK_PRESENT_SHIFT 0 12762306a36Sopenharmony_ci#define CS42L42_SCLK_PRESENT_MASK (1 << CS42L42_SCLK_PRESENT_SHIFT) 12862306a36Sopenharmony_ci 12962306a36Sopenharmony_ci#define CS42L42_OSC_SWITCH_STATUS (CS42L42_PAGE_11 + 0x09) 13062306a36Sopenharmony_ci#define CS42L42_OSC_SW_SEL_STAT_SHIFT 0 13162306a36Sopenharmony_ci#define CS42L42_OSC_SW_SEL_STAT_MASK (3 << CS42L42_OSC_SW_SEL_STAT_SHIFT) 13262306a36Sopenharmony_ci#define CS42L42_OSC_PDNB_STAT_SHIFT 2 13362306a36Sopenharmony_ci#define CS42L42_OSC_PDNB_STAT_MASK (1 << CS42L42_OSC_SW_SEL_STAT_SHIFT) 13462306a36Sopenharmony_ci 13562306a36Sopenharmony_ci#define CS42L42_RSENSE_CTL3 (CS42L42_PAGE_11 + 0x12) 13662306a36Sopenharmony_ci#define CS42L42_RS_RISE_DBNCE_TIME_SHIFT 0 13762306a36Sopenharmony_ci#define CS42L42_RS_RISE_DBNCE_TIME_MASK (7 << CS42L42_RS_RISE_DBNCE_TIME_SHIFT) 13862306a36Sopenharmony_ci#define CS42L42_RS_FALL_DBNCE_TIME_SHIFT 3 13962306a36Sopenharmony_ci#define CS42L42_RS_FALL_DBNCE_TIME_MASK (7 << CS42L42_RS_FALL_DBNCE_TIME_SHIFT) 14062306a36Sopenharmony_ci#define CS42L42_RS_PU_EN_SHIFT 6 14162306a36Sopenharmony_ci#define CS42L42_RS_PU_EN_MASK (1 << CS42L42_RS_PU_EN_SHIFT) 14262306a36Sopenharmony_ci#define CS42L42_RS_INV_SHIFT 7 14362306a36Sopenharmony_ci#define CS42L42_RS_INV_MASK (1 << CS42L42_RS_INV_SHIFT) 14462306a36Sopenharmony_ci 14562306a36Sopenharmony_ci#define CS42L42_TSENSE_CTL (CS42L42_PAGE_11 + 0x13) 14662306a36Sopenharmony_ci#define CS42L42_TS_RISE_DBNCE_TIME_SHIFT 0 14762306a36Sopenharmony_ci#define CS42L42_TS_RISE_DBNCE_TIME_MASK (7 << CS42L42_TS_RISE_DBNCE_TIME_SHIFT) 14862306a36Sopenharmony_ci#define CS42L42_TS_FALL_DBNCE_TIME_SHIFT 3 14962306a36Sopenharmony_ci#define CS42L42_TS_FALL_DBNCE_TIME_MASK (7 << CS42L42_TS_FALL_DBNCE_TIME_SHIFT) 15062306a36Sopenharmony_ci#define CS42L42_TS_INV_SHIFT 7 15162306a36Sopenharmony_ci#define CS42L42_TS_INV_MASK (1 << CS42L42_TS_INV_SHIFT) 15262306a36Sopenharmony_ci 15362306a36Sopenharmony_ci#define CS42L42_TSRS_INT_DISABLE (CS42L42_PAGE_11 + 0x14) 15462306a36Sopenharmony_ci#define CS42L42_D_RS_PLUG_DBNC_SHIFT 0 15562306a36Sopenharmony_ci#define CS42L42_D_RS_PLUG_DBNC_MASK (1 << CS42L42_D_RS_PLUG_DBNC_SHIFT) 15662306a36Sopenharmony_ci#define CS42L42_D_RS_UNPLUG_DBNC_SHIFT 1 15762306a36Sopenharmony_ci#define CS42L42_D_RS_UNPLUG_DBNC_MASK (1 << CS42L42_D_RS_UNPLUG_DBNC_SHIFT) 15862306a36Sopenharmony_ci#define CS42L42_D_TS_PLUG_DBNC_SHIFT 2 15962306a36Sopenharmony_ci#define CS42L42_D_TS_PLUG_DBNC_MASK (1 << CS42L42_D_TS_PLUG_DBNC_SHIFT) 16062306a36Sopenharmony_ci#define CS42L42_D_TS_UNPLUG_DBNC_SHIFT 3 16162306a36Sopenharmony_ci#define CS42L42_D_TS_UNPLUG_DBNC_MASK (1 << CS42L42_D_TS_UNPLUG_DBNC_SHIFT) 16262306a36Sopenharmony_ci 16362306a36Sopenharmony_ci#define CS42L42_TRSENSE_STATUS (CS42L42_PAGE_11 + 0x15) 16462306a36Sopenharmony_ci#define CS42L42_RS_PLUG_DBNC_SHIFT 0 16562306a36Sopenharmony_ci#define CS42L42_RS_PLUG_DBNC_MASK (1 << CS42L42_RS_PLUG_DBNC_SHIFT) 16662306a36Sopenharmony_ci#define CS42L42_RS_UNPLUG_DBNC_SHIFT 1 16762306a36Sopenharmony_ci#define CS42L42_RS_UNPLUG_DBNC_MASK (1 << CS42L42_RS_UNPLUG_DBNC_SHIFT) 16862306a36Sopenharmony_ci#define CS42L42_TS_PLUG_DBNC_SHIFT 2 16962306a36Sopenharmony_ci#define CS42L42_TS_PLUG_DBNC_MASK (1 << CS42L42_TS_PLUG_DBNC_SHIFT) 17062306a36Sopenharmony_ci#define CS42L42_TS_UNPLUG_DBNC_SHIFT 3 17162306a36Sopenharmony_ci#define CS42L42_TS_UNPLUG_DBNC_MASK (1 << CS42L42_TS_UNPLUG_DBNC_SHIFT) 17262306a36Sopenharmony_ci 17362306a36Sopenharmony_ci#define CS42L42_HSDET_CTL1 (CS42L42_PAGE_11 + 0x1F) 17462306a36Sopenharmony_ci#define CS42L42_HSDET_COMP1_LVL_SHIFT 0 17562306a36Sopenharmony_ci#define CS42L42_HSDET_COMP1_LVL_MASK (15 << CS42L42_HSDET_COMP1_LVL_SHIFT) 17662306a36Sopenharmony_ci#define CS42L42_HSDET_COMP2_LVL_SHIFT 4 17762306a36Sopenharmony_ci#define CS42L42_HSDET_COMP2_LVL_MASK (15 << CS42L42_HSDET_COMP2_LVL_SHIFT) 17862306a36Sopenharmony_ci 17962306a36Sopenharmony_ci#define CS42L42_HSDET_COMP1_LVL_VAL 12 /* 1.25V Comparator */ 18062306a36Sopenharmony_ci#define CS42L42_HSDET_COMP2_LVL_VAL 2 /* 1.75V Comparator */ 18162306a36Sopenharmony_ci#define CS42L42_HSDET_COMP1_LVL_DEFAULT 7 /* 1V Comparator */ 18262306a36Sopenharmony_ci#define CS42L42_HSDET_COMP2_LVL_DEFAULT 7 /* 2V Comparator */ 18362306a36Sopenharmony_ci 18462306a36Sopenharmony_ci#define CS42L42_HSDET_CTL2 (CS42L42_PAGE_11 + 0x20) 18562306a36Sopenharmony_ci#define CS42L42_HSDET_AUTO_TIME_SHIFT 0 18662306a36Sopenharmony_ci#define CS42L42_HSDET_AUTO_TIME_MASK (3 << CS42L42_HSDET_AUTO_TIME_SHIFT) 18762306a36Sopenharmony_ci#define CS42L42_HSBIAS_REF_SHIFT 3 18862306a36Sopenharmony_ci#define CS42L42_HSBIAS_REF_MASK (1 << CS42L42_HSBIAS_REF_SHIFT) 18962306a36Sopenharmony_ci#define CS42L42_HSDET_SET_SHIFT 4 19062306a36Sopenharmony_ci#define CS42L42_HSDET_SET_MASK (3 << CS42L42_HSDET_SET_SHIFT) 19162306a36Sopenharmony_ci#define CS42L42_HSDET_CTRL_SHIFT 6 19262306a36Sopenharmony_ci#define CS42L42_HSDET_CTRL_MASK (3 << CS42L42_HSDET_CTRL_SHIFT) 19362306a36Sopenharmony_ci 19462306a36Sopenharmony_ci#define CS42L42_HS_SWITCH_CTL (CS42L42_PAGE_11 + 0x21) 19562306a36Sopenharmony_ci#define CS42L42_SW_GNDHS_HS4_SHIFT 0 19662306a36Sopenharmony_ci#define CS42L42_SW_GNDHS_HS4_MASK (1 << CS42L42_SW_GNDHS_HS4_SHIFT) 19762306a36Sopenharmony_ci#define CS42L42_SW_GNDHS_HS3_SHIFT 1 19862306a36Sopenharmony_ci#define CS42L42_SW_GNDHS_HS3_MASK (1 << CS42L42_SW_GNDHS_HS3_SHIFT) 19962306a36Sopenharmony_ci#define CS42L42_SW_HSB_HS4_SHIFT 2 20062306a36Sopenharmony_ci#define CS42L42_SW_HSB_HS4_MASK (1 << CS42L42_SW_HSB_HS4_SHIFT) 20162306a36Sopenharmony_ci#define CS42L42_SW_HSB_HS3_SHIFT 3 20262306a36Sopenharmony_ci#define CS42L42_SW_HSB_HS3_MASK (1 << CS42L42_SW_HSB_HS3_SHIFT) 20362306a36Sopenharmony_ci#define CS42L42_SW_HSB_FILT_HS4_SHIFT 4 20462306a36Sopenharmony_ci#define CS42L42_SW_HSB_FILT_HS4_MASK (1 << CS42L42_SW_HSB_FILT_HS4_SHIFT) 20562306a36Sopenharmony_ci#define CS42L42_SW_HSB_FILT_HS3_SHIFT 5 20662306a36Sopenharmony_ci#define CS42L42_SW_HSB_FILT_HS3_MASK (1 << CS42L42_SW_HSB_FILT_HS3_SHIFT) 20762306a36Sopenharmony_ci#define CS42L42_SW_REF_HS4_SHIFT 6 20862306a36Sopenharmony_ci#define CS42L42_SW_REF_HS4_MASK (1 << CS42L42_SW_REF_HS4_SHIFT) 20962306a36Sopenharmony_ci#define CS42L42_SW_REF_HS3_SHIFT 7 21062306a36Sopenharmony_ci#define CS42L42_SW_REF_HS3_MASK (1 << CS42L42_SW_REF_HS3_SHIFT) 21162306a36Sopenharmony_ci 21262306a36Sopenharmony_ci#define CS42L42_HS_DET_STATUS (CS42L42_PAGE_11 + 0x24) 21362306a36Sopenharmony_ci#define CS42L42_HSDET_TYPE_SHIFT 0 21462306a36Sopenharmony_ci#define CS42L42_HSDET_TYPE_MASK (3 << CS42L42_HSDET_TYPE_SHIFT) 21562306a36Sopenharmony_ci#define CS42L42_HSDET_COMP1_OUT_SHIFT 6 21662306a36Sopenharmony_ci#define CS42L42_HSDET_COMP1_OUT_MASK (1 << CS42L42_HSDET_COMP1_OUT_SHIFT) 21762306a36Sopenharmony_ci#define CS42L42_HSDET_COMP2_OUT_SHIFT 7 21862306a36Sopenharmony_ci#define CS42L42_HSDET_COMP2_OUT_MASK (1 << CS42L42_HSDET_COMP2_OUT_SHIFT) 21962306a36Sopenharmony_ci#define CS42L42_PLUG_CTIA 0 22062306a36Sopenharmony_ci#define CS42L42_PLUG_OMTP 1 22162306a36Sopenharmony_ci#define CS42L42_PLUG_HEADPHONE 2 22262306a36Sopenharmony_ci#define CS42L42_PLUG_INVALID 3 22362306a36Sopenharmony_ci 22462306a36Sopenharmony_ci#define CS42L42_HSDET_SW_COMP1 ((0 << CS42L42_SW_GNDHS_HS4_SHIFT) | \ 22562306a36Sopenharmony_ci (1 << CS42L42_SW_GNDHS_HS3_SHIFT) | \ 22662306a36Sopenharmony_ci (1 << CS42L42_SW_HSB_HS4_SHIFT) | \ 22762306a36Sopenharmony_ci (0 << CS42L42_SW_HSB_HS3_SHIFT) | \ 22862306a36Sopenharmony_ci (0 << CS42L42_SW_HSB_FILT_HS4_SHIFT) | \ 22962306a36Sopenharmony_ci (1 << CS42L42_SW_HSB_FILT_HS3_SHIFT) | \ 23062306a36Sopenharmony_ci (0 << CS42L42_SW_REF_HS4_SHIFT) | \ 23162306a36Sopenharmony_ci (1 << CS42L42_SW_REF_HS3_SHIFT)) 23262306a36Sopenharmony_ci#define CS42L42_HSDET_SW_COMP2 ((1 << CS42L42_SW_GNDHS_HS4_SHIFT) | \ 23362306a36Sopenharmony_ci (0 << CS42L42_SW_GNDHS_HS3_SHIFT) | \ 23462306a36Sopenharmony_ci (0 << CS42L42_SW_HSB_HS4_SHIFT) | \ 23562306a36Sopenharmony_ci (1 << CS42L42_SW_HSB_HS3_SHIFT) | \ 23662306a36Sopenharmony_ci (1 << CS42L42_SW_HSB_FILT_HS4_SHIFT) | \ 23762306a36Sopenharmony_ci (0 << CS42L42_SW_HSB_FILT_HS3_SHIFT) | \ 23862306a36Sopenharmony_ci (1 << CS42L42_SW_REF_HS4_SHIFT) | \ 23962306a36Sopenharmony_ci (0 << CS42L42_SW_REF_HS3_SHIFT)) 24062306a36Sopenharmony_ci#define CS42L42_HSDET_SW_TYPE1 ((0 << CS42L42_SW_GNDHS_HS4_SHIFT) | \ 24162306a36Sopenharmony_ci (1 << CS42L42_SW_GNDHS_HS3_SHIFT) | \ 24262306a36Sopenharmony_ci (1 << CS42L42_SW_HSB_HS4_SHIFT) | \ 24362306a36Sopenharmony_ci (0 << CS42L42_SW_HSB_HS3_SHIFT) | \ 24462306a36Sopenharmony_ci (0 << CS42L42_SW_HSB_FILT_HS4_SHIFT) | \ 24562306a36Sopenharmony_ci (1 << CS42L42_SW_HSB_FILT_HS3_SHIFT) | \ 24662306a36Sopenharmony_ci (0 << CS42L42_SW_REF_HS4_SHIFT) | \ 24762306a36Sopenharmony_ci (1 << CS42L42_SW_REF_HS3_SHIFT)) 24862306a36Sopenharmony_ci#define CS42L42_HSDET_SW_TYPE2 ((1 << CS42L42_SW_GNDHS_HS4_SHIFT) | \ 24962306a36Sopenharmony_ci (0 << CS42L42_SW_GNDHS_HS3_SHIFT) | \ 25062306a36Sopenharmony_ci (0 << CS42L42_SW_HSB_HS4_SHIFT) | \ 25162306a36Sopenharmony_ci (1 << CS42L42_SW_HSB_HS3_SHIFT) | \ 25262306a36Sopenharmony_ci (1 << CS42L42_SW_HSB_FILT_HS4_SHIFT) | \ 25362306a36Sopenharmony_ci (0 << CS42L42_SW_HSB_FILT_HS3_SHIFT) | \ 25462306a36Sopenharmony_ci (1 << CS42L42_SW_REF_HS4_SHIFT) | \ 25562306a36Sopenharmony_ci (0 << CS42L42_SW_REF_HS3_SHIFT)) 25662306a36Sopenharmony_ci#define CS42L42_HSDET_SW_TYPE3 ((1 << CS42L42_SW_GNDHS_HS4_SHIFT) | \ 25762306a36Sopenharmony_ci (1 << CS42L42_SW_GNDHS_HS3_SHIFT) | \ 25862306a36Sopenharmony_ci (0 << CS42L42_SW_HSB_HS4_SHIFT) | \ 25962306a36Sopenharmony_ci (0 << CS42L42_SW_HSB_HS3_SHIFT) | \ 26062306a36Sopenharmony_ci (1 << CS42L42_SW_HSB_FILT_HS4_SHIFT) | \ 26162306a36Sopenharmony_ci (1 << CS42L42_SW_HSB_FILT_HS3_SHIFT) | \ 26262306a36Sopenharmony_ci (1 << CS42L42_SW_REF_HS4_SHIFT) | \ 26362306a36Sopenharmony_ci (1 << CS42L42_SW_REF_HS3_SHIFT)) 26462306a36Sopenharmony_ci#define CS42L42_HSDET_SW_TYPE4 ((0 << CS42L42_SW_GNDHS_HS4_SHIFT) | \ 26562306a36Sopenharmony_ci (1 << CS42L42_SW_GNDHS_HS3_SHIFT) | \ 26662306a36Sopenharmony_ci (1 << CS42L42_SW_HSB_HS4_SHIFT) | \ 26762306a36Sopenharmony_ci (0 << CS42L42_SW_HSB_HS3_SHIFT) | \ 26862306a36Sopenharmony_ci (0 << CS42L42_SW_HSB_FILT_HS4_SHIFT) | \ 26962306a36Sopenharmony_ci (1 << CS42L42_SW_HSB_FILT_HS3_SHIFT) | \ 27062306a36Sopenharmony_ci (0 << CS42L42_SW_REF_HS4_SHIFT) | \ 27162306a36Sopenharmony_ci (1 << CS42L42_SW_REF_HS3_SHIFT)) 27262306a36Sopenharmony_ci 27362306a36Sopenharmony_ci#define CS42L42_HSDET_COMP_TYPE1 1 27462306a36Sopenharmony_ci#define CS42L42_HSDET_COMP_TYPE2 2 27562306a36Sopenharmony_ci#define CS42L42_HSDET_COMP_TYPE3 0 27662306a36Sopenharmony_ci#define CS42L42_HSDET_COMP_TYPE4 3 27762306a36Sopenharmony_ci 27862306a36Sopenharmony_ci#define CS42L42_HS_CLAMP_DISABLE (CS42L42_PAGE_11 + 0x29) 27962306a36Sopenharmony_ci#define CS42L42_HS_CLAMP_DISABLE_SHIFT 0 28062306a36Sopenharmony_ci#define CS42L42_HS_CLAMP_DISABLE_MASK (1 << CS42L42_HS_CLAMP_DISABLE_SHIFT) 28162306a36Sopenharmony_ci 28262306a36Sopenharmony_ci/* Page 0x12 Clocking Registers */ 28362306a36Sopenharmony_ci#define CS42L42_MCLK_SRC_SEL (CS42L42_PAGE_12 + 0x01) 28462306a36Sopenharmony_ci#define CS42L42_MCLKDIV_SHIFT 1 28562306a36Sopenharmony_ci#define CS42L42_MCLKDIV_MASK (1 << CS42L42_MCLKDIV_SHIFT) 28662306a36Sopenharmony_ci#define CS42L42_MCLK_SRC_SEL_SHIFT 0 28762306a36Sopenharmony_ci#define CS42L42_MCLK_SRC_SEL_MASK (1 << CS42L42_MCLK_SRC_SEL_SHIFT) 28862306a36Sopenharmony_ci 28962306a36Sopenharmony_ci#define CS42L42_SPDIF_CLK_CFG (CS42L42_PAGE_12 + 0x02) 29062306a36Sopenharmony_ci#define CS42L42_FSYNC_PW_LOWER (CS42L42_PAGE_12 + 0x03) 29162306a36Sopenharmony_ci 29262306a36Sopenharmony_ci#define CS42L42_FSYNC_PW_UPPER (CS42L42_PAGE_12 + 0x04) 29362306a36Sopenharmony_ci#define CS42L42_FSYNC_PULSE_WIDTH_SHIFT 0 29462306a36Sopenharmony_ci#define CS42L42_FSYNC_PULSE_WIDTH_MASK (0xff << \ 29562306a36Sopenharmony_ci CS42L42_FSYNC_PULSE_WIDTH_SHIFT) 29662306a36Sopenharmony_ci 29762306a36Sopenharmony_ci#define CS42L42_FSYNC_P_LOWER (CS42L42_PAGE_12 + 0x05) 29862306a36Sopenharmony_ci 29962306a36Sopenharmony_ci#define CS42L42_FSYNC_P_UPPER (CS42L42_PAGE_12 + 0x06) 30062306a36Sopenharmony_ci#define CS42L42_FSYNC_PERIOD_SHIFT 0 30162306a36Sopenharmony_ci#define CS42L42_FSYNC_PERIOD_MASK (0xff << CS42L42_FSYNC_PERIOD_SHIFT) 30262306a36Sopenharmony_ci 30362306a36Sopenharmony_ci#define CS42L42_ASP_CLK_CFG (CS42L42_PAGE_12 + 0x07) 30462306a36Sopenharmony_ci#define CS42L42_ASP_SCLK_EN_SHIFT 5 30562306a36Sopenharmony_ci#define CS42L42_ASP_SCLK_EN_MASK (1 << CS42L42_ASP_SCLK_EN_SHIFT) 30662306a36Sopenharmony_ci#define CS42L42_ASP_MASTER_MODE 0x01 30762306a36Sopenharmony_ci#define CS42L42_ASP_SLAVE_MODE 0x00 30862306a36Sopenharmony_ci#define CS42L42_ASP_MODE_SHIFT 4 30962306a36Sopenharmony_ci#define CS42L42_ASP_MODE_MASK (1 << CS42L42_ASP_MODE_SHIFT) 31062306a36Sopenharmony_ci#define CS42L42_ASP_SCPOL_SHIFT 2 31162306a36Sopenharmony_ci#define CS42L42_ASP_SCPOL_MASK (3 << CS42L42_ASP_SCPOL_SHIFT) 31262306a36Sopenharmony_ci#define CS42L42_ASP_SCPOL_NOR 3 31362306a36Sopenharmony_ci#define CS42L42_ASP_LCPOL_SHIFT 0 31462306a36Sopenharmony_ci#define CS42L42_ASP_LCPOL_MASK (3 << CS42L42_ASP_LCPOL_SHIFT) 31562306a36Sopenharmony_ci#define CS42L42_ASP_LCPOL_INV 3 31662306a36Sopenharmony_ci 31762306a36Sopenharmony_ci#define CS42L42_ASP_FRM_CFG (CS42L42_PAGE_12 + 0x08) 31862306a36Sopenharmony_ci#define CS42L42_ASP_STP_SHIFT 4 31962306a36Sopenharmony_ci#define CS42L42_ASP_STP_MASK (1 << CS42L42_ASP_STP_SHIFT) 32062306a36Sopenharmony_ci#define CS42L42_ASP_5050_SHIFT 3 32162306a36Sopenharmony_ci#define CS42L42_ASP_5050_MASK (1 << CS42L42_ASP_5050_SHIFT) 32262306a36Sopenharmony_ci#define CS42L42_ASP_FSD_SHIFT 0 32362306a36Sopenharmony_ci#define CS42L42_ASP_FSD_MASK (7 << CS42L42_ASP_FSD_SHIFT) 32462306a36Sopenharmony_ci#define CS42L42_ASP_FSD_0_5 1 32562306a36Sopenharmony_ci#define CS42L42_ASP_FSD_1_0 2 32662306a36Sopenharmony_ci#define CS42L42_ASP_FSD_1_5 3 32762306a36Sopenharmony_ci#define CS42L42_ASP_FSD_2_0 4 32862306a36Sopenharmony_ci 32962306a36Sopenharmony_ci#define CS42L42_FS_RATE_EN (CS42L42_PAGE_12 + 0x09) 33062306a36Sopenharmony_ci#define CS42L42_FS_EN_SHIFT 0 33162306a36Sopenharmony_ci#define CS42L42_FS_EN_MASK (0xf << CS42L42_FS_EN_SHIFT) 33262306a36Sopenharmony_ci#define CS42L42_FS_EN_IASRC_96K 0x1 33362306a36Sopenharmony_ci#define CS42L42_FS_EN_OASRC_96K 0x2 33462306a36Sopenharmony_ci 33562306a36Sopenharmony_ci#define CS42L42_IN_ASRC_CLK (CS42L42_PAGE_12 + 0x0A) 33662306a36Sopenharmony_ci#define CS42L42_CLK_IASRC_SEL_SHIFT 0 33762306a36Sopenharmony_ci#define CS42L42_CLK_IASRC_SEL_MASK (1 << CS42L42_CLK_IASRC_SEL_SHIFT) 33862306a36Sopenharmony_ci#define CS42L42_CLK_IASRC_SEL_6 0 33962306a36Sopenharmony_ci#define CS42L42_CLK_IASRC_SEL_12 1 34062306a36Sopenharmony_ci 34162306a36Sopenharmony_ci#define CS42L42_OUT_ASRC_CLK (CS42L42_PAGE_12 + 0x0B) 34262306a36Sopenharmony_ci#define CS42L42_CLK_OASRC_SEL_SHIFT 0 34362306a36Sopenharmony_ci#define CS42L42_CLK_OASRC_SEL_MASK (1 << CS42L42_CLK_OASRC_SEL_SHIFT) 34462306a36Sopenharmony_ci#define CS42L42_CLK_OASRC_SEL_12 1 34562306a36Sopenharmony_ci 34662306a36Sopenharmony_ci#define CS42L42_PLL_DIV_CFG1 (CS42L42_PAGE_12 + 0x0C) 34762306a36Sopenharmony_ci#define CS42L42_SCLK_PREDIV_SHIFT 0 34862306a36Sopenharmony_ci#define CS42L42_SCLK_PREDIV_MASK (3 << CS42L42_SCLK_PREDIV_SHIFT) 34962306a36Sopenharmony_ci 35062306a36Sopenharmony_ci/* Page 0x13 Interrupt Registers */ 35162306a36Sopenharmony_ci/* Interrupts */ 35262306a36Sopenharmony_ci#define CS42L42_ADC_OVFL_STATUS (CS42L42_PAGE_13 + 0x01) 35362306a36Sopenharmony_ci#define CS42L42_MIXER_STATUS (CS42L42_PAGE_13 + 0x02) 35462306a36Sopenharmony_ci#define CS42L42_SRC_STATUS (CS42L42_PAGE_13 + 0x03) 35562306a36Sopenharmony_ci#define CS42L42_ASP_RX_STATUS (CS42L42_PAGE_13 + 0x04) 35662306a36Sopenharmony_ci#define CS42L42_ASP_TX_STATUS (CS42L42_PAGE_13 + 0x05) 35762306a36Sopenharmony_ci#define CS42L42_CODEC_STATUS (CS42L42_PAGE_13 + 0x08) 35862306a36Sopenharmony_ci#define CS42L42_DET_INT_STATUS1 (CS42L42_PAGE_13 + 0x09) 35962306a36Sopenharmony_ci#define CS42L42_DET_INT_STATUS2 (CS42L42_PAGE_13 + 0x0A) 36062306a36Sopenharmony_ci#define CS42L42_SRCPL_INT_STATUS (CS42L42_PAGE_13 + 0x0B) 36162306a36Sopenharmony_ci#define CS42L42_VPMON_STATUS (CS42L42_PAGE_13 + 0x0D) 36262306a36Sopenharmony_ci#define CS42L42_PLL_LOCK_STATUS (CS42L42_PAGE_13 + 0x0E) 36362306a36Sopenharmony_ci#define CS42L42_TSRS_PLUG_STATUS (CS42L42_PAGE_13 + 0x0F) 36462306a36Sopenharmony_ci/* Masks */ 36562306a36Sopenharmony_ci#define CS42L42_ADC_OVFL_INT_MASK (CS42L42_PAGE_13 + 0x16) 36662306a36Sopenharmony_ci#define CS42L42_ADC_OVFL_SHIFT 0 36762306a36Sopenharmony_ci#define CS42L42_ADC_OVFL_MASK (1 << CS42L42_ADC_OVFL_SHIFT) 36862306a36Sopenharmony_ci#define CS42L42_ADC_OVFL_VAL_MASK CS42L42_ADC_OVFL_MASK 36962306a36Sopenharmony_ci 37062306a36Sopenharmony_ci#define CS42L42_MIXER_INT_MASK (CS42L42_PAGE_13 + 0x17) 37162306a36Sopenharmony_ci#define CS42L42_MIX_CHB_OVFL_SHIFT 0 37262306a36Sopenharmony_ci#define CS42L42_MIX_CHB_OVFL_MASK (1 << CS42L42_MIX_CHB_OVFL_SHIFT) 37362306a36Sopenharmony_ci#define CS42L42_MIX_CHA_OVFL_SHIFT 1 37462306a36Sopenharmony_ci#define CS42L42_MIX_CHA_OVFL_MASK (1 << CS42L42_MIX_CHA_OVFL_SHIFT) 37562306a36Sopenharmony_ci#define CS42L42_EQ_OVFL_SHIFT 2 37662306a36Sopenharmony_ci#define CS42L42_EQ_OVFL_MASK (1 << CS42L42_EQ_OVFL_SHIFT) 37762306a36Sopenharmony_ci#define CS42L42_EQ_BIQUAD_OVFL_SHIFT 3 37862306a36Sopenharmony_ci#define CS42L42_EQ_BIQUAD_OVFL_MASK (1 << CS42L42_EQ_BIQUAD_OVFL_SHIFT) 37962306a36Sopenharmony_ci#define CS42L42_MIXER_VAL_MASK (CS42L42_MIX_CHB_OVFL_MASK | \ 38062306a36Sopenharmony_ci CS42L42_MIX_CHA_OVFL_MASK | \ 38162306a36Sopenharmony_ci CS42L42_EQ_OVFL_MASK | \ 38262306a36Sopenharmony_ci CS42L42_EQ_BIQUAD_OVFL_MASK) 38362306a36Sopenharmony_ci 38462306a36Sopenharmony_ci#define CS42L42_SRC_INT_MASK (CS42L42_PAGE_13 + 0x18) 38562306a36Sopenharmony_ci#define CS42L42_SRC_ILK_SHIFT 0 38662306a36Sopenharmony_ci#define CS42L42_SRC_ILK_MASK (1 << CS42L42_SRC_ILK_SHIFT) 38762306a36Sopenharmony_ci#define CS42L42_SRC_OLK_SHIFT 1 38862306a36Sopenharmony_ci#define CS42L42_SRC_OLK_MASK (1 << CS42L42_SRC_OLK_SHIFT) 38962306a36Sopenharmony_ci#define CS42L42_SRC_IUNLK_SHIFT 2 39062306a36Sopenharmony_ci#define CS42L42_SRC_IUNLK_MASK (1 << CS42L42_SRC_IUNLK_SHIFT) 39162306a36Sopenharmony_ci#define CS42L42_SRC_OUNLK_SHIFT 3 39262306a36Sopenharmony_ci#define CS42L42_SRC_OUNLK_MASK (1 << CS42L42_SRC_OUNLK_SHIFT) 39362306a36Sopenharmony_ci#define CS42L42_SRC_VAL_MASK (CS42L42_SRC_ILK_MASK | \ 39462306a36Sopenharmony_ci CS42L42_SRC_OLK_MASK | \ 39562306a36Sopenharmony_ci CS42L42_SRC_IUNLK_MASK | \ 39662306a36Sopenharmony_ci CS42L42_SRC_OUNLK_MASK) 39762306a36Sopenharmony_ci 39862306a36Sopenharmony_ci#define CS42L42_ASP_RX_INT_MASK (CS42L42_PAGE_13 + 0x19) 39962306a36Sopenharmony_ci#define CS42L42_ASPRX_NOLRCK_SHIFT 0 40062306a36Sopenharmony_ci#define CS42L42_ASPRX_NOLRCK_MASK (1 << CS42L42_ASPRX_NOLRCK_SHIFT) 40162306a36Sopenharmony_ci#define CS42L42_ASPRX_EARLY_SHIFT 1 40262306a36Sopenharmony_ci#define CS42L42_ASPRX_EARLY_MASK (1 << CS42L42_ASPRX_EARLY_SHIFT) 40362306a36Sopenharmony_ci#define CS42L42_ASPRX_LATE_SHIFT 2 40462306a36Sopenharmony_ci#define CS42L42_ASPRX_LATE_MASK (1 << CS42L42_ASPRX_LATE_SHIFT) 40562306a36Sopenharmony_ci#define CS42L42_ASPRX_ERROR_SHIFT 3 40662306a36Sopenharmony_ci#define CS42L42_ASPRX_ERROR_MASK (1 << CS42L42_ASPRX_ERROR_SHIFT) 40762306a36Sopenharmony_ci#define CS42L42_ASPRX_OVLD_SHIFT 4 40862306a36Sopenharmony_ci#define CS42L42_ASPRX_OVLD_MASK (1 << CS42L42_ASPRX_OVLD_SHIFT) 40962306a36Sopenharmony_ci#define CS42L42_ASP_RX_VAL_MASK (CS42L42_ASPRX_NOLRCK_MASK | \ 41062306a36Sopenharmony_ci CS42L42_ASPRX_EARLY_MASK | \ 41162306a36Sopenharmony_ci CS42L42_ASPRX_LATE_MASK | \ 41262306a36Sopenharmony_ci CS42L42_ASPRX_ERROR_MASK | \ 41362306a36Sopenharmony_ci CS42L42_ASPRX_OVLD_MASK) 41462306a36Sopenharmony_ci 41562306a36Sopenharmony_ci#define CS42L42_ASP_TX_INT_MASK (CS42L42_PAGE_13 + 0x1A) 41662306a36Sopenharmony_ci#define CS42L42_ASPTX_NOLRCK_SHIFT 0 41762306a36Sopenharmony_ci#define CS42L42_ASPTX_NOLRCK_MASK (1 << CS42L42_ASPTX_NOLRCK_SHIFT) 41862306a36Sopenharmony_ci#define CS42L42_ASPTX_EARLY_SHIFT 1 41962306a36Sopenharmony_ci#define CS42L42_ASPTX_EARLY_MASK (1 << CS42L42_ASPTX_EARLY_SHIFT) 42062306a36Sopenharmony_ci#define CS42L42_ASPTX_LATE_SHIFT 2 42162306a36Sopenharmony_ci#define CS42L42_ASPTX_LATE_MASK (1 << CS42L42_ASPTX_LATE_SHIFT) 42262306a36Sopenharmony_ci#define CS42L42_ASPTX_SMERROR_SHIFT 3 42362306a36Sopenharmony_ci#define CS42L42_ASPTX_SMERROR_MASK (1 << CS42L42_ASPTX_SMERROR_SHIFT) 42462306a36Sopenharmony_ci#define CS42L42_ASP_TX_VAL_MASK (CS42L42_ASPTX_NOLRCK_MASK | \ 42562306a36Sopenharmony_ci CS42L42_ASPTX_EARLY_MASK | \ 42662306a36Sopenharmony_ci CS42L42_ASPTX_LATE_MASK | \ 42762306a36Sopenharmony_ci CS42L42_ASPTX_SMERROR_MASK) 42862306a36Sopenharmony_ci 42962306a36Sopenharmony_ci#define CS42L42_CODEC_INT_MASK (CS42L42_PAGE_13 + 0x1B) 43062306a36Sopenharmony_ci#define CS42L42_PDN_DONE_SHIFT 0 43162306a36Sopenharmony_ci#define CS42L42_PDN_DONE_MASK (1 << CS42L42_PDN_DONE_SHIFT) 43262306a36Sopenharmony_ci#define CS42L42_HSDET_AUTO_DONE_SHIFT 1 43362306a36Sopenharmony_ci#define CS42L42_HSDET_AUTO_DONE_MASK (1 << CS42L42_HSDET_AUTO_DONE_SHIFT) 43462306a36Sopenharmony_ci#define CS42L42_CODEC_VAL_MASK (CS42L42_PDN_DONE_MASK | \ 43562306a36Sopenharmony_ci CS42L42_HSDET_AUTO_DONE_MASK) 43662306a36Sopenharmony_ci 43762306a36Sopenharmony_ci#define CS42L42_SRCPL_INT_MASK (CS42L42_PAGE_13 + 0x1C) 43862306a36Sopenharmony_ci#define CS42L42_SRCPL_ADC_LK_SHIFT 0 43962306a36Sopenharmony_ci#define CS42L42_SRCPL_ADC_LK_MASK (1 << CS42L42_SRCPL_ADC_LK_SHIFT) 44062306a36Sopenharmony_ci#define CS42L42_SRCPL_DAC_LK_SHIFT 2 44162306a36Sopenharmony_ci#define CS42L42_SRCPL_DAC_LK_MASK (1 << CS42L42_SRCPL_DAC_LK_SHIFT) 44262306a36Sopenharmony_ci#define CS42L42_SRCPL_ADC_UNLK_SHIFT 5 44362306a36Sopenharmony_ci#define CS42L42_SRCPL_ADC_UNLK_MASK (1 << CS42L42_SRCPL_ADC_UNLK_SHIFT) 44462306a36Sopenharmony_ci#define CS42L42_SRCPL_DAC_UNLK_SHIFT 6 44562306a36Sopenharmony_ci#define CS42L42_SRCPL_DAC_UNLK_MASK (1 << CS42L42_SRCPL_DAC_UNLK_SHIFT) 44662306a36Sopenharmony_ci#define CS42L42_SRCPL_VAL_MASK (CS42L42_SRCPL_ADC_LK_MASK | \ 44762306a36Sopenharmony_ci CS42L42_SRCPL_DAC_LK_MASK | \ 44862306a36Sopenharmony_ci CS42L42_SRCPL_ADC_UNLK_MASK | \ 44962306a36Sopenharmony_ci CS42L42_SRCPL_DAC_UNLK_MASK) 45062306a36Sopenharmony_ci 45162306a36Sopenharmony_ci#define CS42L42_VPMON_INT_MASK (CS42L42_PAGE_13 + 0x1E) 45262306a36Sopenharmony_ci#define CS42L42_VPMON_SHIFT 0 45362306a36Sopenharmony_ci#define CS42L42_VPMON_MASK (1 << CS42L42_VPMON_SHIFT) 45462306a36Sopenharmony_ci#define CS42L42_VPMON_VAL_MASK CS42L42_VPMON_MASK 45562306a36Sopenharmony_ci 45662306a36Sopenharmony_ci#define CS42L42_PLL_LOCK_INT_MASK (CS42L42_PAGE_13 + 0x1F) 45762306a36Sopenharmony_ci#define CS42L42_PLL_LOCK_SHIFT 0 45862306a36Sopenharmony_ci#define CS42L42_PLL_LOCK_MASK (1 << CS42L42_PLL_LOCK_SHIFT) 45962306a36Sopenharmony_ci#define CS42L42_PLL_LOCK_VAL_MASK CS42L42_PLL_LOCK_MASK 46062306a36Sopenharmony_ci 46162306a36Sopenharmony_ci#define CS42L42_TSRS_PLUG_INT_MASK (CS42L42_PAGE_13 + 0x20) 46262306a36Sopenharmony_ci#define CS42L42_RS_PLUG_SHIFT 0 46362306a36Sopenharmony_ci#define CS42L42_RS_PLUG_MASK (1 << CS42L42_RS_PLUG_SHIFT) 46462306a36Sopenharmony_ci#define CS42L42_RS_UNPLUG_SHIFT 1 46562306a36Sopenharmony_ci#define CS42L42_RS_UNPLUG_MASK (1 << CS42L42_RS_UNPLUG_SHIFT) 46662306a36Sopenharmony_ci#define CS42L42_TS_PLUG_SHIFT 2 46762306a36Sopenharmony_ci#define CS42L42_TS_PLUG_MASK (1 << CS42L42_TS_PLUG_SHIFT) 46862306a36Sopenharmony_ci#define CS42L42_TS_UNPLUG_SHIFT 3 46962306a36Sopenharmony_ci#define CS42L42_TS_UNPLUG_MASK (1 << CS42L42_TS_UNPLUG_SHIFT) 47062306a36Sopenharmony_ci#define CS42L42_TSRS_PLUG_VAL_MASK (CS42L42_RS_PLUG_MASK | \ 47162306a36Sopenharmony_ci CS42L42_RS_UNPLUG_MASK | \ 47262306a36Sopenharmony_ci CS42L42_TS_PLUG_MASK | \ 47362306a36Sopenharmony_ci CS42L42_TS_UNPLUG_MASK) 47462306a36Sopenharmony_ci#define CS42L42_TS_PLUG 3 47562306a36Sopenharmony_ci#define CS42L42_TS_UNPLUG 0 47662306a36Sopenharmony_ci#define CS42L42_TS_TRANS 1 47762306a36Sopenharmony_ci 47862306a36Sopenharmony_ci/* 47962306a36Sopenharmony_ci * NOTE: PLL_START must be 0 while both ADC_PDN=1 and HP_PDN=1. 48062306a36Sopenharmony_ci * Otherwise it will prevent FILT+ from charging properly. 48162306a36Sopenharmony_ci */ 48262306a36Sopenharmony_ci#define CS42L42_PLL_CTL1 (CS42L42_PAGE_15 + 0x01) 48362306a36Sopenharmony_ci#define CS42L42_PLL_START_SHIFT 0 48462306a36Sopenharmony_ci#define CS42L42_PLL_START_MASK (1 << CS42L42_PLL_START_SHIFT) 48562306a36Sopenharmony_ci 48662306a36Sopenharmony_ci#define CS42L42_PLL_DIV_FRAC0 (CS42L42_PAGE_15 + 0x02) 48762306a36Sopenharmony_ci#define CS42L42_PLL_DIV_FRAC_SHIFT 0 48862306a36Sopenharmony_ci#define CS42L42_PLL_DIV_FRAC_MASK (0xff << CS42L42_PLL_DIV_FRAC_SHIFT) 48962306a36Sopenharmony_ci 49062306a36Sopenharmony_ci#define CS42L42_PLL_DIV_FRAC1 (CS42L42_PAGE_15 + 0x03) 49162306a36Sopenharmony_ci#define CS42L42_PLL_DIV_FRAC2 (CS42L42_PAGE_15 + 0x04) 49262306a36Sopenharmony_ci 49362306a36Sopenharmony_ci#define CS42L42_PLL_DIV_INT (CS42L42_PAGE_15 + 0x05) 49462306a36Sopenharmony_ci#define CS42L42_PLL_DIV_INT_SHIFT 0 49562306a36Sopenharmony_ci#define CS42L42_PLL_DIV_INT_MASK (0xff << CS42L42_PLL_DIV_INT_SHIFT) 49662306a36Sopenharmony_ci 49762306a36Sopenharmony_ci#define CS42L42_PLL_CTL3 (CS42L42_PAGE_15 + 0x08) 49862306a36Sopenharmony_ci#define CS42L42_PLL_DIVOUT_SHIFT 0 49962306a36Sopenharmony_ci#define CS42L42_PLL_DIVOUT_MASK (0xff << CS42L42_PLL_DIVOUT_SHIFT) 50062306a36Sopenharmony_ci 50162306a36Sopenharmony_ci#define CS42L42_PLL_CAL_RATIO (CS42L42_PAGE_15 + 0x0A) 50262306a36Sopenharmony_ci#define CS42L42_PLL_CAL_RATIO_SHIFT 0 50362306a36Sopenharmony_ci#define CS42L42_PLL_CAL_RATIO_MASK (0xff << CS42L42_PLL_CAL_RATIO_SHIFT) 50462306a36Sopenharmony_ci 50562306a36Sopenharmony_ci#define CS42L42_PLL_CTL4 (CS42L42_PAGE_15 + 0x1B) 50662306a36Sopenharmony_ci#define CS42L42_PLL_MODE_SHIFT 0 50762306a36Sopenharmony_ci#define CS42L42_PLL_MODE_MASK (3 << CS42L42_PLL_MODE_SHIFT) 50862306a36Sopenharmony_ci 50962306a36Sopenharmony_ci/* Page 0x19 HP Load Detect Registers */ 51062306a36Sopenharmony_ci#define CS42L42_LOAD_DET_RCSTAT (CS42L42_PAGE_19 + 0x25) 51162306a36Sopenharmony_ci#define CS42L42_RLA_STAT_SHIFT 0 51262306a36Sopenharmony_ci#define CS42L42_RLA_STAT_MASK (3 << CS42L42_RLA_STAT_SHIFT) 51362306a36Sopenharmony_ci#define CS42L42_RLA_STAT_15_OHM 0 51462306a36Sopenharmony_ci 51562306a36Sopenharmony_ci#define CS42L42_LOAD_DET_DONE (CS42L42_PAGE_19 + 0x26) 51662306a36Sopenharmony_ci#define CS42L42_HPLOAD_DET_DONE_SHIFT 0 51762306a36Sopenharmony_ci#define CS42L42_HPLOAD_DET_DONE_MASK (1 << CS42L42_HPLOAD_DET_DONE_SHIFT) 51862306a36Sopenharmony_ci 51962306a36Sopenharmony_ci#define CS42L42_LOAD_DET_EN (CS42L42_PAGE_19 + 0x27) 52062306a36Sopenharmony_ci#define CS42L42_HP_LD_EN_SHIFT 0 52162306a36Sopenharmony_ci#define CS42L42_HP_LD_EN_MASK (1 << CS42L42_HP_LD_EN_SHIFT) 52262306a36Sopenharmony_ci 52362306a36Sopenharmony_ci/* Page 0x1B Headset Interface Registers */ 52462306a36Sopenharmony_ci#define CS42L42_HSBIAS_SC_AUTOCTL (CS42L42_PAGE_1B + 0x70) 52562306a36Sopenharmony_ci#define CS42L42_HSBIAS_SENSE_TRIP_SHIFT 0 52662306a36Sopenharmony_ci#define CS42L42_HSBIAS_SENSE_TRIP_MASK (7 << CS42L42_HSBIAS_SENSE_TRIP_SHIFT) 52762306a36Sopenharmony_ci#define CS42L42_TIP_SENSE_EN_SHIFT 5 52862306a36Sopenharmony_ci#define CS42L42_TIP_SENSE_EN_MASK (1 << CS42L42_TIP_SENSE_EN_SHIFT) 52962306a36Sopenharmony_ci#define CS42L42_AUTO_HSBIAS_HIZ_SHIFT 6 53062306a36Sopenharmony_ci#define CS42L42_AUTO_HSBIAS_HIZ_MASK (1 << CS42L42_AUTO_HSBIAS_HIZ_SHIFT) 53162306a36Sopenharmony_ci#define CS42L42_HSBIAS_SENSE_EN_SHIFT 7 53262306a36Sopenharmony_ci#define CS42L42_HSBIAS_SENSE_EN_MASK (1 << CS42L42_HSBIAS_SENSE_EN_SHIFT) 53362306a36Sopenharmony_ci 53462306a36Sopenharmony_ci#define CS42L42_WAKE_CTL (CS42L42_PAGE_1B + 0x71) 53562306a36Sopenharmony_ci#define CS42L42_WAKEB_CLEAR_SHIFT 0 53662306a36Sopenharmony_ci#define CS42L42_WAKEB_CLEAR_MASK (1 << CS42L42_WAKEB_CLEAR_SHIFT) 53762306a36Sopenharmony_ci#define CS42L42_WAKEB_MODE_SHIFT 5 53862306a36Sopenharmony_ci#define CS42L42_WAKEB_MODE_MASK (1 << CS42L42_WAKEB_MODE_SHIFT) 53962306a36Sopenharmony_ci#define CS42L42_M_HP_WAKE_SHIFT 6 54062306a36Sopenharmony_ci#define CS42L42_M_HP_WAKE_MASK (1 << CS42L42_M_HP_WAKE_SHIFT) 54162306a36Sopenharmony_ci#define CS42L42_M_MIC_WAKE_SHIFT 7 54262306a36Sopenharmony_ci#define CS42L42_M_MIC_WAKE_MASK (1 << CS42L42_M_MIC_WAKE_SHIFT) 54362306a36Sopenharmony_ci 54462306a36Sopenharmony_ci#define CS42L42_ADC_DISABLE_MUTE (CS42L42_PAGE_1B + 0x72) 54562306a36Sopenharmony_ci#define CS42L42_ADC_DISABLE_S0_MUTE_SHIFT 7 54662306a36Sopenharmony_ci#define CS42L42_ADC_DISABLE_S0_MUTE_MASK (1 << CS42L42_ADC_DISABLE_S0_MUTE_SHIFT) 54762306a36Sopenharmony_ci 54862306a36Sopenharmony_ci#define CS42L42_TIPSENSE_CTL (CS42L42_PAGE_1B + 0x73) 54962306a36Sopenharmony_ci#define CS42L42_TIP_SENSE_DEBOUNCE_SHIFT 0 55062306a36Sopenharmony_ci#define CS42L42_TIP_SENSE_DEBOUNCE_MASK (3 << CS42L42_TIP_SENSE_DEBOUNCE_SHIFT) 55162306a36Sopenharmony_ci#define CS42L42_TIP_SENSE_INV_SHIFT 5 55262306a36Sopenharmony_ci#define CS42L42_TIP_SENSE_INV_MASK (1 << CS42L42_TIP_SENSE_INV_SHIFT) 55362306a36Sopenharmony_ci#define CS42L42_TIP_SENSE_CTRL_SHIFT 6 55462306a36Sopenharmony_ci#define CS42L42_TIP_SENSE_CTRL_MASK (3 << CS42L42_TIP_SENSE_CTRL_SHIFT) 55562306a36Sopenharmony_ci 55662306a36Sopenharmony_ci/* 55762306a36Sopenharmony_ci * NOTE: DETECT_MODE must be 0 while both ADC_PDN=1 and HP_PDN=1. 55862306a36Sopenharmony_ci * Otherwise it will prevent FILT+ from charging properly. 55962306a36Sopenharmony_ci */ 56062306a36Sopenharmony_ci#define CS42L42_MISC_DET_CTL (CS42L42_PAGE_1B + 0x74) 56162306a36Sopenharmony_ci#define CS42L42_PDN_MIC_LVL_DET_SHIFT 0 56262306a36Sopenharmony_ci#define CS42L42_PDN_MIC_LVL_DET_MASK (1 << CS42L42_PDN_MIC_LVL_DET_SHIFT) 56362306a36Sopenharmony_ci#define CS42L42_HSBIAS_CTL_SHIFT 1 56462306a36Sopenharmony_ci#define CS42L42_HSBIAS_CTL_MASK (3 << CS42L42_HSBIAS_CTL_SHIFT) 56562306a36Sopenharmony_ci#define CS42L42_DETECT_MODE_SHIFT 3 56662306a36Sopenharmony_ci#define CS42L42_DETECT_MODE_MASK (3 << CS42L42_DETECT_MODE_SHIFT) 56762306a36Sopenharmony_ci 56862306a36Sopenharmony_ci#define CS42L42_MIC_DET_CTL1 (CS42L42_PAGE_1B + 0x75) 56962306a36Sopenharmony_ci#define CS42L42_HS_DET_LEVEL_SHIFT 0 57062306a36Sopenharmony_ci#define CS42L42_HS_DET_LEVEL_MASK (0x3F << CS42L42_HS_DET_LEVEL_SHIFT) 57162306a36Sopenharmony_ci#define CS42L42_EVENT_STAT_SEL_SHIFT 6 57262306a36Sopenharmony_ci#define CS42L42_EVENT_STAT_SEL_MASK (1 << CS42L42_EVENT_STAT_SEL_SHIFT) 57362306a36Sopenharmony_ci#define CS42L42_LATCH_TO_VP_SHIFT 7 57462306a36Sopenharmony_ci#define CS42L42_LATCH_TO_VP_MASK (1 << CS42L42_LATCH_TO_VP_SHIFT) 57562306a36Sopenharmony_ci 57662306a36Sopenharmony_ci#define CS42L42_MIC_DET_CTL2 (CS42L42_PAGE_1B + 0x76) 57762306a36Sopenharmony_ci#define CS42L42_DEBOUNCE_TIME_SHIFT 5 57862306a36Sopenharmony_ci#define CS42L42_DEBOUNCE_TIME_MASK (0x07 << CS42L42_DEBOUNCE_TIME_SHIFT) 57962306a36Sopenharmony_ci 58062306a36Sopenharmony_ci#define CS42L42_DET_STATUS1 (CS42L42_PAGE_1B + 0x77) 58162306a36Sopenharmony_ci#define CS42L42_HSBIAS_HIZ_MODE_SHIFT 6 58262306a36Sopenharmony_ci#define CS42L42_HSBIAS_HIZ_MODE_MASK (1 << CS42L42_HSBIAS_HIZ_MODE_SHIFT) 58362306a36Sopenharmony_ci#define CS42L42_TIP_SENSE_SHIFT 7 58462306a36Sopenharmony_ci#define CS42L42_TIP_SENSE_MASK (1 << CS42L42_TIP_SENSE_SHIFT) 58562306a36Sopenharmony_ci 58662306a36Sopenharmony_ci#define CS42L42_DET_STATUS2 (CS42L42_PAGE_1B + 0x78) 58762306a36Sopenharmony_ci#define CS42L42_SHORT_TRUE_SHIFT 0 58862306a36Sopenharmony_ci#define CS42L42_SHORT_TRUE_MASK (1 << CS42L42_SHORT_TRUE_SHIFT) 58962306a36Sopenharmony_ci#define CS42L42_HS_TRUE_SHIFT 1 59062306a36Sopenharmony_ci#define CS42L42_HS_TRUE_MASK (1 << CS42L42_HS_TRUE_SHIFT) 59162306a36Sopenharmony_ci 59262306a36Sopenharmony_ci#define CS42L42_DET_INT1_MASK (CS42L42_PAGE_1B + 0x79) 59362306a36Sopenharmony_ci#define CS42L42_TIP_SENSE_UNPLUG_SHIFT 5 59462306a36Sopenharmony_ci#define CS42L42_TIP_SENSE_UNPLUG_MASK (1 << CS42L42_TIP_SENSE_UNPLUG_SHIFT) 59562306a36Sopenharmony_ci#define CS42L42_TIP_SENSE_PLUG_SHIFT 6 59662306a36Sopenharmony_ci#define CS42L42_TIP_SENSE_PLUG_MASK (1 << CS42L42_TIP_SENSE_PLUG_SHIFT) 59762306a36Sopenharmony_ci#define CS42L42_HSBIAS_SENSE_SHIFT 7 59862306a36Sopenharmony_ci#define CS42L42_HSBIAS_SENSE_MASK (1 << CS42L42_HSBIAS_SENSE_SHIFT) 59962306a36Sopenharmony_ci#define CS42L42_DET_INT_VAL1_MASK (CS42L42_TIP_SENSE_UNPLUG_MASK | \ 60062306a36Sopenharmony_ci CS42L42_TIP_SENSE_PLUG_MASK | \ 60162306a36Sopenharmony_ci CS42L42_HSBIAS_SENSE_MASK) 60262306a36Sopenharmony_ci 60362306a36Sopenharmony_ci#define CS42L42_DET_INT2_MASK (CS42L42_PAGE_1B + 0x7A) 60462306a36Sopenharmony_ci#define CS42L42_M_SHORT_DET_SHIFT 0 60562306a36Sopenharmony_ci#define CS42L42_M_SHORT_DET_MASK (1 << CS42L42_M_SHORT_DET_SHIFT) 60662306a36Sopenharmony_ci#define CS42L42_M_SHORT_RLS_SHIFT 1 60762306a36Sopenharmony_ci#define CS42L42_M_SHORT_RLS_MASK (1 << CS42L42_M_SHORT_RLS_SHIFT) 60862306a36Sopenharmony_ci#define CS42L42_M_HSBIAS_HIZ_SHIFT 2 60962306a36Sopenharmony_ci#define CS42L42_M_HSBIAS_HIZ_MASK (1 << CS42L42_M_HSBIAS_HIZ_SHIFT) 61062306a36Sopenharmony_ci#define CS42L42_M_DETECT_FT_SHIFT 6 61162306a36Sopenharmony_ci#define CS42L42_M_DETECT_FT_MASK (1 << CS42L42_M_DETECT_FT_SHIFT) 61262306a36Sopenharmony_ci#define CS42L42_M_DETECT_TF_SHIFT 7 61362306a36Sopenharmony_ci#define CS42L42_M_DETECT_TF_MASK (1 << CS42L42_M_DETECT_TF_SHIFT) 61462306a36Sopenharmony_ci#define CS42L42_DET_INT_VAL2_MASK (CS42L42_M_SHORT_DET_MASK | \ 61562306a36Sopenharmony_ci CS42L42_M_SHORT_RLS_MASK | \ 61662306a36Sopenharmony_ci CS42L42_M_HSBIAS_HIZ_MASK | \ 61762306a36Sopenharmony_ci CS42L42_M_DETECT_FT_MASK | \ 61862306a36Sopenharmony_ci CS42L42_M_DETECT_TF_MASK) 61962306a36Sopenharmony_ci 62062306a36Sopenharmony_ci/* Page 0x1C Headset Bias Registers */ 62162306a36Sopenharmony_ci#define CS42L42_HS_BIAS_CTL (CS42L42_PAGE_1C + 0x03) 62262306a36Sopenharmony_ci#define CS42L42_HSBIAS_RAMP_SHIFT 0 62362306a36Sopenharmony_ci#define CS42L42_HSBIAS_RAMP_MASK (3 << CS42L42_HSBIAS_RAMP_SHIFT) 62462306a36Sopenharmony_ci#define CS42L42_HSBIAS_PD_SHIFT 4 62562306a36Sopenharmony_ci#define CS42L42_HSBIAS_PD_MASK (1 << CS42L42_HSBIAS_PD_SHIFT) 62662306a36Sopenharmony_ci#define CS42L42_HSBIAS_CAPLESS_SHIFT 7 62762306a36Sopenharmony_ci#define CS42L42_HSBIAS_CAPLESS_MASK (1 << CS42L42_HSBIAS_CAPLESS_SHIFT) 62862306a36Sopenharmony_ci 62962306a36Sopenharmony_ci/* Page 0x1D ADC Registers */ 63062306a36Sopenharmony_ci#define CS42L42_ADC_CTL (CS42L42_PAGE_1D + 0x01) 63162306a36Sopenharmony_ci#define CS42L42_ADC_NOTCH_DIS_SHIFT 5 63262306a36Sopenharmony_ci#define CS42L42_ADC_FORCE_WEAK_VCM_SHIFT 4 63362306a36Sopenharmony_ci#define CS42L42_ADC_INV_SHIFT 2 63462306a36Sopenharmony_ci#define CS42L42_ADC_DIG_BOOST_SHIFT 0 63562306a36Sopenharmony_ci 63662306a36Sopenharmony_ci#define CS42L42_ADC_VOLUME (CS42L42_PAGE_1D + 0x03) 63762306a36Sopenharmony_ci#define CS42L42_ADC_VOL_SHIFT 0 63862306a36Sopenharmony_ci 63962306a36Sopenharmony_ci#define CS42L42_ADC_WNF_HPF_CTL (CS42L42_PAGE_1D + 0x04) 64062306a36Sopenharmony_ci#define CS42L42_ADC_WNF_CF_SHIFT 4 64162306a36Sopenharmony_ci#define CS42L42_ADC_WNF_EN_SHIFT 3 64262306a36Sopenharmony_ci#define CS42L42_ADC_HPF_CF_SHIFT 1 64362306a36Sopenharmony_ci#define CS42L42_ADC_HPF_EN_SHIFT 0 64462306a36Sopenharmony_ci 64562306a36Sopenharmony_ci/* Page 0x1F DAC Registers */ 64662306a36Sopenharmony_ci#define CS42L42_DAC_CTL1 (CS42L42_PAGE_1F + 0x01) 64762306a36Sopenharmony_ci#define CS42L42_DACB_INV_SHIFT 1 64862306a36Sopenharmony_ci#define CS42L42_DACA_INV_SHIFT 0 64962306a36Sopenharmony_ci 65062306a36Sopenharmony_ci#define CS42L42_DAC_CTL2 (CS42L42_PAGE_1F + 0x06) 65162306a36Sopenharmony_ci#define CS42L42_HPOUT_PULLDOWN_SHIFT 4 65262306a36Sopenharmony_ci#define CS42L42_HPOUT_PULLDOWN_MASK (15 << CS42L42_HPOUT_PULLDOWN_SHIFT) 65362306a36Sopenharmony_ci#define CS42L42_HPOUT_LOAD_SHIFT 3 65462306a36Sopenharmony_ci#define CS42L42_HPOUT_LOAD_MASK (1 << CS42L42_HPOUT_LOAD_SHIFT) 65562306a36Sopenharmony_ci#define CS42L42_HPOUT_CLAMP_SHIFT 2 65662306a36Sopenharmony_ci#define CS42L42_HPOUT_CLAMP_MASK (1 << CS42L42_HPOUT_CLAMP_SHIFT) 65762306a36Sopenharmony_ci#define CS42L42_DAC_HPF_EN_SHIFT 1 65862306a36Sopenharmony_ci#define CS42L42_DAC_HPF_EN_MASK (1 << CS42L42_DAC_HPF_EN_SHIFT) 65962306a36Sopenharmony_ci#define CS42L42_DAC_MON_EN_SHIFT 0 66062306a36Sopenharmony_ci#define CS42L42_DAC_MON_EN_MASK (1 << CS42L42_DAC_MON_EN_SHIFT) 66162306a36Sopenharmony_ci 66262306a36Sopenharmony_ci/* Page 0x20 HP CTL Registers */ 66362306a36Sopenharmony_ci#define CS42L42_HP_CTL (CS42L42_PAGE_20 + 0x01) 66462306a36Sopenharmony_ci#define CS42L42_HP_ANA_BMUTE_SHIFT 3 66562306a36Sopenharmony_ci#define CS42L42_HP_ANA_BMUTE_MASK (1 << CS42L42_HP_ANA_BMUTE_SHIFT) 66662306a36Sopenharmony_ci#define CS42L42_HP_ANA_AMUTE_SHIFT 2 66762306a36Sopenharmony_ci#define CS42L42_HP_ANA_AMUTE_MASK (1 << CS42L42_HP_ANA_AMUTE_SHIFT) 66862306a36Sopenharmony_ci#define CS42L42_HP_FULL_SCALE_VOL_SHIFT 1 66962306a36Sopenharmony_ci#define CS42L42_HP_FULL_SCALE_VOL_MASK (1 << CS42L42_HP_FULL_SCALE_VOL_SHIFT) 67062306a36Sopenharmony_ci 67162306a36Sopenharmony_ci/* Page 0x21 Class H Registers */ 67262306a36Sopenharmony_ci#define CS42L42_CLASSH_CTL (CS42L42_PAGE_21 + 0x01) 67362306a36Sopenharmony_ci 67462306a36Sopenharmony_ci/* Page 0x23 Mixer Volume Registers */ 67562306a36Sopenharmony_ci#define CS42L42_MIXER_CHA_VOL (CS42L42_PAGE_23 + 0x01) 67662306a36Sopenharmony_ci#define CS42L42_MIXER_ADC_VOL (CS42L42_PAGE_23 + 0x02) 67762306a36Sopenharmony_ci 67862306a36Sopenharmony_ci#define CS42L42_MIXER_CHB_VOL (CS42L42_PAGE_23 + 0x03) 67962306a36Sopenharmony_ci#define CS42L42_MIXER_CH_VOL_SHIFT 0 68062306a36Sopenharmony_ci#define CS42L42_MIXER_CH_VOL_MASK (0x3f << CS42L42_MIXER_CH_VOL_SHIFT) 68162306a36Sopenharmony_ci 68262306a36Sopenharmony_ci/* Page 0x24 EQ Registers */ 68362306a36Sopenharmony_ci#define CS42L42_EQ_COEF_IN0 (CS42L42_PAGE_24 + 0x01) 68462306a36Sopenharmony_ci#define CS42L42_EQ_COEF_IN1 (CS42L42_PAGE_24 + 0x02) 68562306a36Sopenharmony_ci#define CS42L42_EQ_COEF_IN2 (CS42L42_PAGE_24 + 0x03) 68662306a36Sopenharmony_ci#define CS42L42_EQ_COEF_IN3 (CS42L42_PAGE_24 + 0x04) 68762306a36Sopenharmony_ci#define CS42L42_EQ_COEF_RW (CS42L42_PAGE_24 + 0x06) 68862306a36Sopenharmony_ci#define CS42L42_EQ_COEF_OUT0 (CS42L42_PAGE_24 + 0x07) 68962306a36Sopenharmony_ci#define CS42L42_EQ_COEF_OUT1 (CS42L42_PAGE_24 + 0x08) 69062306a36Sopenharmony_ci#define CS42L42_EQ_COEF_OUT2 (CS42L42_PAGE_24 + 0x09) 69162306a36Sopenharmony_ci#define CS42L42_EQ_COEF_OUT3 (CS42L42_PAGE_24 + 0x0A) 69262306a36Sopenharmony_ci#define CS42L42_EQ_INIT_STAT (CS42L42_PAGE_24 + 0x0B) 69362306a36Sopenharmony_ci#define CS42L42_EQ_START_FILT (CS42L42_PAGE_24 + 0x0C) 69462306a36Sopenharmony_ci#define CS42L42_EQ_MUTE_CTL (CS42L42_PAGE_24 + 0x0E) 69562306a36Sopenharmony_ci 69662306a36Sopenharmony_ci/* Page 0x25 Audio Port Registers */ 69762306a36Sopenharmony_ci#define CS42L42_SP_RX_CH_SEL (CS42L42_PAGE_25 + 0x01) 69862306a36Sopenharmony_ci#define CS42L42_SP_RX_CHB_SEL_SHIFT 2 69962306a36Sopenharmony_ci#define CS42L42_SP_RX_CHB_SEL_MASK (3 << CS42L42_SP_RX_CHB_SEL_SHIFT) 70062306a36Sopenharmony_ci 70162306a36Sopenharmony_ci#define CS42L42_SP_RX_ISOC_CTL (CS42L42_PAGE_25 + 0x02) 70262306a36Sopenharmony_ci#define CS42L42_SP_RX_RSYNC_SHIFT 6 70362306a36Sopenharmony_ci#define CS42L42_SP_RX_RSYNC_MASK (1 << CS42L42_SP_RX_RSYNC_SHIFT) 70462306a36Sopenharmony_ci#define CS42L42_SP_RX_NSB_POS_SHIFT 3 70562306a36Sopenharmony_ci#define CS42L42_SP_RX_NSB_POS_MASK (7 << CS42L42_SP_RX_NSB_POS_SHIFT) 70662306a36Sopenharmony_ci#define CS42L42_SP_RX_NFS_NSBB_SHIFT 2 70762306a36Sopenharmony_ci#define CS42L42_SP_RX_NFS_NSBB_MASK (1 << CS42L42_SP_RX_NFS_NSBB_SHIFT) 70862306a36Sopenharmony_ci#define CS42L42_SP_RX_ISOC_MODE_SHIFT 0 70962306a36Sopenharmony_ci#define CS42L42_SP_RX_ISOC_MODE_MASK (3 << CS42L42_SP_RX_ISOC_MODE_SHIFT) 71062306a36Sopenharmony_ci 71162306a36Sopenharmony_ci#define CS42L42_SP_RX_FS (CS42L42_PAGE_25 + 0x03) 71262306a36Sopenharmony_ci#define CS42l42_SPDIF_CH_SEL (CS42L42_PAGE_25 + 0x04) 71362306a36Sopenharmony_ci#define CS42L42_SP_TX_ISOC_CTL (CS42L42_PAGE_25 + 0x05) 71462306a36Sopenharmony_ci#define CS42L42_SP_TX_FS (CS42L42_PAGE_25 + 0x06) 71562306a36Sopenharmony_ci#define CS42L42_SPDIF_SW_CTL1 (CS42L42_PAGE_25 + 0x07) 71662306a36Sopenharmony_ci 71762306a36Sopenharmony_ci/* Page 0x26 SRC Registers */ 71862306a36Sopenharmony_ci#define CS42L42_SRC_SDIN_FS (CS42L42_PAGE_26 + 0x01) 71962306a36Sopenharmony_ci#define CS42L42_SRC_SDIN_FS_SHIFT 0 72062306a36Sopenharmony_ci#define CS42L42_SRC_SDIN_FS_MASK (0x1f << CS42L42_SRC_SDIN_FS_SHIFT) 72162306a36Sopenharmony_ci 72262306a36Sopenharmony_ci#define CS42L42_SRC_SDOUT_FS (CS42L42_PAGE_26 + 0x09) 72362306a36Sopenharmony_ci 72462306a36Sopenharmony_ci/* Page 0x27 DMA */ 72562306a36Sopenharmony_ci#define CS42L42_SOFT_RESET_REBOOT (CS42L42_PAGE_27 + 0x01) 72662306a36Sopenharmony_ci#define CS42L42_SFT_RST_REBOOT_MASK BIT(1) 72762306a36Sopenharmony_ci 72862306a36Sopenharmony_ci/* Page 0x28 S/PDIF Registers */ 72962306a36Sopenharmony_ci#define CS42L42_SPDIF_CTL1 (CS42L42_PAGE_28 + 0x01) 73062306a36Sopenharmony_ci#define CS42L42_SPDIF_CTL2 (CS42L42_PAGE_28 + 0x02) 73162306a36Sopenharmony_ci#define CS42L42_SPDIF_CTL3 (CS42L42_PAGE_28 + 0x03) 73262306a36Sopenharmony_ci#define CS42L42_SPDIF_CTL4 (CS42L42_PAGE_28 + 0x04) 73362306a36Sopenharmony_ci 73462306a36Sopenharmony_ci/* Page 0x29 Serial Port TX Registers */ 73562306a36Sopenharmony_ci#define CS42L42_ASP_TX_SZ_EN (CS42L42_PAGE_29 + 0x01) 73662306a36Sopenharmony_ci#define CS42L42_ASP_TX_EN_SHIFT 0 73762306a36Sopenharmony_ci#define CS42L42_ASP_TX_CH_EN (CS42L42_PAGE_29 + 0x02) 73862306a36Sopenharmony_ci#define CS42L42_ASP_TX0_CH2_SHIFT 1 73962306a36Sopenharmony_ci#define CS42L42_ASP_TX0_CH1_SHIFT 0 74062306a36Sopenharmony_ci 74162306a36Sopenharmony_ci#define CS42L42_ASP_TX_CH_AP_RES (CS42L42_PAGE_29 + 0x03) 74262306a36Sopenharmony_ci#define CS42L42_ASP_TX_CH1_AP_SHIFT 7 74362306a36Sopenharmony_ci#define CS42L42_ASP_TX_CH1_AP_MASK (1 << CS42L42_ASP_TX_CH1_AP_SHIFT) 74462306a36Sopenharmony_ci#define CS42L42_ASP_TX_CH2_AP_SHIFT 6 74562306a36Sopenharmony_ci#define CS42L42_ASP_TX_CH2_AP_MASK (1 << CS42L42_ASP_TX_CH2_AP_SHIFT) 74662306a36Sopenharmony_ci#define CS42L42_ASP_TX_CH2_RES_SHIFT 2 74762306a36Sopenharmony_ci#define CS42L42_ASP_TX_CH2_RES_MASK (3 << CS42L42_ASP_TX_CH2_RES_SHIFT) 74862306a36Sopenharmony_ci#define CS42L42_ASP_TX_CH1_RES_SHIFT 0 74962306a36Sopenharmony_ci#define CS42L42_ASP_TX_CH1_RES_MASK (3 << CS42L42_ASP_TX_CH1_RES_SHIFT) 75062306a36Sopenharmony_ci#define CS42L42_ASP_TX_CH1_BIT_MSB (CS42L42_PAGE_29 + 0x04) 75162306a36Sopenharmony_ci#define CS42L42_ASP_TX_CH1_BIT_LSB (CS42L42_PAGE_29 + 0x05) 75262306a36Sopenharmony_ci#define CS42L42_ASP_TX_HIZ_DLY_CFG (CS42L42_PAGE_29 + 0x06) 75362306a36Sopenharmony_ci#define CS42L42_ASP_TX_CH2_BIT_MSB (CS42L42_PAGE_29 + 0x0A) 75462306a36Sopenharmony_ci#define CS42L42_ASP_TX_CH2_BIT_LSB (CS42L42_PAGE_29 + 0x0B) 75562306a36Sopenharmony_ci 75662306a36Sopenharmony_ci/* Page 0x2A Serial Port RX Registers */ 75762306a36Sopenharmony_ci#define CS42L42_ASP_RX_DAI0_EN (CS42L42_PAGE_2A + 0x01) 75862306a36Sopenharmony_ci#define CS42L42_ASP_RX0_CH_EN_SHIFT 2 75962306a36Sopenharmony_ci#define CS42L42_ASP_RX0_CH_EN_MASK (0xf << CS42L42_ASP_RX0_CH_EN_SHIFT) 76062306a36Sopenharmony_ci#define CS42L42_ASP_RX0_CH1_SHIFT 2 76162306a36Sopenharmony_ci#define CS42L42_ASP_RX0_CH2_SHIFT 3 76262306a36Sopenharmony_ci#define CS42L42_ASP_RX0_CH3_SHIFT 4 76362306a36Sopenharmony_ci#define CS42L42_ASP_RX0_CH4_SHIFT 5 76462306a36Sopenharmony_ci 76562306a36Sopenharmony_ci#define CS42L42_ASP_RX_DAI0_CH1_AP_RES (CS42L42_PAGE_2A + 0x02) 76662306a36Sopenharmony_ci#define CS42L42_ASP_RX_DAI0_CH1_BIT_MSB (CS42L42_PAGE_2A + 0x03) 76762306a36Sopenharmony_ci#define CS42L42_ASP_RX_DAI0_CH1_BIT_LSB (CS42L42_PAGE_2A + 0x04) 76862306a36Sopenharmony_ci#define CS42L42_ASP_RX_DAI0_CH2_AP_RES (CS42L42_PAGE_2A + 0x05) 76962306a36Sopenharmony_ci#define CS42L42_ASP_RX_DAI0_CH2_BIT_MSB (CS42L42_PAGE_2A + 0x06) 77062306a36Sopenharmony_ci#define CS42L42_ASP_RX_DAI0_CH2_BIT_LSB (CS42L42_PAGE_2A + 0x07) 77162306a36Sopenharmony_ci#define CS42L42_ASP_RX_DAI0_CH3_AP_RES (CS42L42_PAGE_2A + 0x08) 77262306a36Sopenharmony_ci#define CS42L42_ASP_RX_DAI0_CH3_BIT_MSB (CS42L42_PAGE_2A + 0x09) 77362306a36Sopenharmony_ci#define CS42L42_ASP_RX_DAI0_CH3_BIT_LSB (CS42L42_PAGE_2A + 0x0A) 77462306a36Sopenharmony_ci#define CS42L42_ASP_RX_DAI0_CH4_AP_RES (CS42L42_PAGE_2A + 0x0B) 77562306a36Sopenharmony_ci#define CS42L42_ASP_RX_DAI0_CH4_BIT_MSB (CS42L42_PAGE_2A + 0x0C) 77662306a36Sopenharmony_ci#define CS42L42_ASP_RX_DAI0_CH4_BIT_LSB (CS42L42_PAGE_2A + 0x0D) 77762306a36Sopenharmony_ci#define CS42L42_ASP_RX_DAI1_CH1_AP_RES (CS42L42_PAGE_2A + 0x0E) 77862306a36Sopenharmony_ci#define CS42L42_ASP_RX_DAI1_CH1_BIT_MSB (CS42L42_PAGE_2A + 0x0F) 77962306a36Sopenharmony_ci#define CS42L42_ASP_RX_DAI1_CH1_BIT_LSB (CS42L42_PAGE_2A + 0x10) 78062306a36Sopenharmony_ci#define CS42L42_ASP_RX_DAI1_CH2_AP_RES (CS42L42_PAGE_2A + 0x11) 78162306a36Sopenharmony_ci#define CS42L42_ASP_RX_DAI1_CH2_BIT_MSB (CS42L42_PAGE_2A + 0x12) 78262306a36Sopenharmony_ci#define CS42L42_ASP_RX_DAI1_CH2_BIT_LSB (CS42L42_PAGE_2A + 0x13) 78362306a36Sopenharmony_ci 78462306a36Sopenharmony_ci#define CS42L42_ASP_RX_CH_AP_SHIFT 6 78562306a36Sopenharmony_ci#define CS42L42_ASP_RX_CH_AP_MASK (1 << CS42L42_ASP_RX_CH_AP_SHIFT) 78662306a36Sopenharmony_ci#define CS42L42_ASP_RX_CH_AP_LOW 0 78762306a36Sopenharmony_ci#define CS42L42_ASP_RX_CH_AP_HI 1 78862306a36Sopenharmony_ci#define CS42L42_ASP_RX_CH_RES_SHIFT 0 78962306a36Sopenharmony_ci#define CS42L42_ASP_RX_CH_RES_MASK (3 << CS42L42_ASP_RX_CH_RES_SHIFT) 79062306a36Sopenharmony_ci#define CS42L42_ASP_RX_CH_RES_32 3 79162306a36Sopenharmony_ci#define CS42L42_ASP_RX_CH_RES_16 1 79262306a36Sopenharmony_ci#define CS42L42_ASP_RX_CH_BIT_ST_SHIFT 0 79362306a36Sopenharmony_ci#define CS42L42_ASP_RX_CH_BIT_ST_MASK (0xff << CS42L42_ASP_RX_CH_BIT_ST_SHIFT) 79462306a36Sopenharmony_ci 79562306a36Sopenharmony_ci/* Page 0x30 ID Registers */ 79662306a36Sopenharmony_ci#define CS42L42_SUB_REVID (CS42L42_PAGE_30 + 0x14) 79762306a36Sopenharmony_ci#define CS42L42_MAX_REGISTER (CS42L42_PAGE_30 + 0x14) 79862306a36Sopenharmony_ci 79962306a36Sopenharmony_ci/* Defines for fracturing values spread across multiple registers */ 80062306a36Sopenharmony_ci#define CS42L42_FRAC0_VAL(val) ((val) & 0x0000ff) 80162306a36Sopenharmony_ci#define CS42L42_FRAC1_VAL(val) (((val) & 0x00ff00) >> 8) 80262306a36Sopenharmony_ci#define CS42L42_FRAC2_VAL(val) (((val) & 0xff0000) >> 16) 80362306a36Sopenharmony_ci 80462306a36Sopenharmony_ci#define CS42L42_NUM_SUPPLIES 5 80562306a36Sopenharmony_ci#define CS42L42_BOOT_TIME_US 3000 80662306a36Sopenharmony_ci#define CS42L42_PLL_DIVOUT_TIME_US 800 80762306a36Sopenharmony_ci#define CS42L42_CLOCK_SWITCH_DELAY_US 150 80862306a36Sopenharmony_ci#define CS42L42_PLL_LOCK_POLL_US 250 80962306a36Sopenharmony_ci#define CS42L42_PLL_LOCK_TIMEOUT_US 1250 81062306a36Sopenharmony_ci#define CS42L42_HP_ADC_EN_TIME_US 20000 81162306a36Sopenharmony_ci#define CS42L42_PDN_DONE_POLL_US 1000 81262306a36Sopenharmony_ci#define CS42L42_PDN_DONE_TIMEOUT_US 200000 81362306a36Sopenharmony_ci#define CS42L42_PDN_DONE_TIME_MS 100 81462306a36Sopenharmony_ci#define CS42L42_FILT_DISCHARGE_TIME_MS 46 81562306a36Sopenharmony_ci 81662306a36Sopenharmony_ci#endif /* __CS42L42_H */ 817