17b43e6d7SStefan Binding /* SPDX-License-Identifier: GPL-2.0-only */ 27b43e6d7SStefan Binding /* 37b43e6d7SStefan Binding * linux/sound/cs42l42.h -- Platform data for CS42L42 ALSA SoC audio driver header 47b43e6d7SStefan Binding * 57b43e6d7SStefan Binding * Copyright 2016-2022 Cirrus Logic, Inc. 67b43e6d7SStefan Binding * 77b43e6d7SStefan Binding * Author: James Schulman <james.schulman@cirrus.com> 87b43e6d7SStefan Binding * Author: Brian Austin <brian.austin@cirrus.com> 97b43e6d7SStefan Binding * Author: Michael White <michael.white@cirrus.com> 107b43e6d7SStefan Binding */ 117b43e6d7SStefan Binding 127b43e6d7SStefan Binding #ifndef __CS42L42_H 137b43e6d7SStefan Binding #define __CS42L42_H 147b43e6d7SStefan Binding 157b43e6d7SStefan Binding #define CS42L42_PAGE_REGISTER 0x00 /* Page Select Register */ 167b43e6d7SStefan Binding #define CS42L42_WIN_START 0x00 177b43e6d7SStefan Binding #define CS42L42_WIN_LEN 0x100 187b43e6d7SStefan Binding #define CS42L42_RANGE_MIN 0x00 197b43e6d7SStefan Binding #define CS42L42_RANGE_MAX 0x7F 207b43e6d7SStefan Binding 217b43e6d7SStefan Binding #define CS42L42_PAGE_10 0x1000 227b43e6d7SStefan Binding #define CS42L42_PAGE_11 0x1100 237b43e6d7SStefan Binding #define CS42L42_PAGE_12 0x1200 247b43e6d7SStefan Binding #define CS42L42_PAGE_13 0x1300 257b43e6d7SStefan Binding #define CS42L42_PAGE_15 0x1500 267b43e6d7SStefan Binding #define CS42L42_PAGE_19 0x1900 277b43e6d7SStefan Binding #define CS42L42_PAGE_1B 0x1B00 287b43e6d7SStefan Binding #define CS42L42_PAGE_1C 0x1C00 297b43e6d7SStefan Binding #define CS42L42_PAGE_1D 0x1D00 307b43e6d7SStefan Binding #define CS42L42_PAGE_1F 0x1F00 317b43e6d7SStefan Binding #define CS42L42_PAGE_20 0x2000 327b43e6d7SStefan Binding #define CS42L42_PAGE_21 0x2100 337b43e6d7SStefan Binding #define CS42L42_PAGE_23 0x2300 347b43e6d7SStefan Binding #define CS42L42_PAGE_24 0x2400 357b43e6d7SStefan Binding #define CS42L42_PAGE_25 0x2500 367b43e6d7SStefan Binding #define CS42L42_PAGE_26 0x2600 37*b558c6fdSRichard Fitzgerald #define CS42L42_PAGE_27 0x2700 387b43e6d7SStefan Binding #define CS42L42_PAGE_28 0x2800 397b43e6d7SStefan Binding #define CS42L42_PAGE_29 0x2900 407b43e6d7SStefan Binding #define CS42L42_PAGE_2A 0x2A00 417b43e6d7SStefan Binding #define CS42L42_PAGE_30 0x3000 427b43e6d7SStefan Binding 437b43e6d7SStefan Binding #define CS42L42_CHIP_ID 0x42A42 4494d5f62aSMartin Povišer #define CS42L83_CHIP_ID 0x42A83 457b43e6d7SStefan Binding 467b43e6d7SStefan Binding /* Page 0x10 Global Registers */ 477b43e6d7SStefan Binding #define CS42L42_DEVID_AB (CS42L42_PAGE_10 + 0x01) 487b43e6d7SStefan Binding #define CS42L42_DEVID_CD (CS42L42_PAGE_10 + 0x02) 497b43e6d7SStefan Binding #define CS42L42_DEVID_E (CS42L42_PAGE_10 + 0x03) 507b43e6d7SStefan Binding #define CS42L42_FABID (CS42L42_PAGE_10 + 0x04) 517b43e6d7SStefan Binding #define CS42L42_REVID (CS42L42_PAGE_10 + 0x05) 527b43e6d7SStefan Binding #define CS42L42_FRZ_CTL (CS42L42_PAGE_10 + 0x06) 537b43e6d7SStefan Binding 547b43e6d7SStefan Binding #define CS42L42_SRC_CTL (CS42L42_PAGE_10 + 0x07) 557b43e6d7SStefan Binding #define CS42L42_SRC_BYPASS_DAC_SHIFT 1 567b43e6d7SStefan Binding #define CS42L42_SRC_BYPASS_DAC_MASK (1 << CS42L42_SRC_BYPASS_DAC_SHIFT) 577b43e6d7SStefan Binding 587b43e6d7SStefan Binding #define CS42L42_MCLK_STATUS (CS42L42_PAGE_10 + 0x08) 597b43e6d7SStefan Binding 607b43e6d7SStefan Binding #define CS42L42_MCLK_CTL (CS42L42_PAGE_10 + 0x09) 617b43e6d7SStefan Binding #define CS42L42_INTERNAL_FS_SHIFT 1 627b43e6d7SStefan Binding #define CS42L42_INTERNAL_FS_MASK (1 << CS42L42_INTERNAL_FS_SHIFT) 637b43e6d7SStefan Binding 647b43e6d7SStefan Binding #define CS42L42_SFTRAMP_RATE (CS42L42_PAGE_10 + 0x0A) 657b43e6d7SStefan Binding #define CS42L42_SLOW_START_ENABLE (CS42L42_PAGE_10 + 0x0B) 667b43e6d7SStefan Binding #define CS42L42_SLOW_START_EN_MASK GENMASK(6, 4) 677b43e6d7SStefan Binding #define CS42L42_SLOW_START_EN_SHIFT 4 687b43e6d7SStefan Binding #define CS42L42_I2C_DEBOUNCE (CS42L42_PAGE_10 + 0x0E) 697b43e6d7SStefan Binding #define CS42L42_I2C_STRETCH (CS42L42_PAGE_10 + 0x0F) 707b43e6d7SStefan Binding #define CS42L42_I2C_TIMEOUT (CS42L42_PAGE_10 + 0x10) 717b43e6d7SStefan Binding 727b43e6d7SStefan Binding /* Page 0x11 Power and Headset Detect Registers */ 737b43e6d7SStefan Binding #define CS42L42_PWR_CTL1 (CS42L42_PAGE_11 + 0x01) 747b43e6d7SStefan Binding #define CS42L42_ASP_DAO_PDN_SHIFT 7 757b43e6d7SStefan Binding #define CS42L42_ASP_DAO_PDN_MASK (1 << CS42L42_ASP_DAO_PDN_SHIFT) 767b43e6d7SStefan Binding #define CS42L42_ASP_DAI_PDN_SHIFT 6 777b43e6d7SStefan Binding #define CS42L42_ASP_DAI_PDN_MASK (1 << CS42L42_ASP_DAI_PDN_SHIFT) 787b43e6d7SStefan Binding #define CS42L42_MIXER_PDN_SHIFT 5 797b43e6d7SStefan Binding #define CS42L42_MIXER_PDN_MASK (1 << CS42L42_MIXER_PDN_SHIFT) 807b43e6d7SStefan Binding #define CS42L42_EQ_PDN_SHIFT 4 817b43e6d7SStefan Binding #define CS42L42_EQ_PDN_MASK (1 << CS42L42_EQ_PDN_SHIFT) 827b43e6d7SStefan Binding #define CS42L42_HP_PDN_SHIFT 3 837b43e6d7SStefan Binding #define CS42L42_HP_PDN_MASK (1 << CS42L42_HP_PDN_SHIFT) 847b43e6d7SStefan Binding #define CS42L42_ADC_PDN_SHIFT 2 857b43e6d7SStefan Binding #define CS42L42_ADC_PDN_MASK (1 << CS42L42_ADC_PDN_SHIFT) 867b43e6d7SStefan Binding #define CS42L42_PDN_ALL_SHIFT 0 877b43e6d7SStefan Binding #define CS42L42_PDN_ALL_MASK (1 << CS42L42_PDN_ALL_SHIFT) 887b43e6d7SStefan Binding 897b43e6d7SStefan Binding #define CS42L42_PWR_CTL2 (CS42L42_PAGE_11 + 0x02) 907b43e6d7SStefan Binding #define CS42L42_ADC_SRC_PDNB_SHIFT 0 917b43e6d7SStefan Binding #define CS42L42_ADC_SRC_PDNB_MASK (1 << CS42L42_ADC_SRC_PDNB_SHIFT) 927b43e6d7SStefan Binding #define CS42L42_DAC_SRC_PDNB_SHIFT 1 937b43e6d7SStefan Binding #define CS42L42_DAC_SRC_PDNB_MASK (1 << CS42L42_DAC_SRC_PDNB_SHIFT) 947b43e6d7SStefan Binding #define CS42L42_ASP_DAI1_PDN_SHIFT 2 957b43e6d7SStefan Binding #define CS42L42_ASP_DAI1_PDN_MASK (1 << CS42L42_ASP_DAI1_PDN_SHIFT) 967b43e6d7SStefan Binding #define CS42L42_SRC_PDN_OVERRIDE_SHIFT 3 977b43e6d7SStefan Binding #define CS42L42_SRC_PDN_OVERRIDE_MASK (1 << CS42L42_SRC_PDN_OVERRIDE_SHIFT) 987b43e6d7SStefan Binding #define CS42L42_DISCHARGE_FILT_SHIFT 4 997b43e6d7SStefan Binding #define CS42L42_DISCHARGE_FILT_MASK (1 << CS42L42_DISCHARGE_FILT_SHIFT) 1007b43e6d7SStefan Binding 1017b43e6d7SStefan Binding #define CS42L42_PWR_CTL3 (CS42L42_PAGE_11 + 0x03) 1027b43e6d7SStefan Binding #define CS42L42_RING_SENSE_PDNB_SHIFT 1 1037b43e6d7SStefan Binding #define CS42L42_RING_SENSE_PDNB_MASK (1 << CS42L42_RING_SENSE_PDNB_SHIFT) 1047b43e6d7SStefan Binding #define CS42L42_VPMON_PDNB_SHIFT 2 1057b43e6d7SStefan Binding #define CS42L42_VPMON_PDNB_MASK (1 << CS42L42_VPMON_PDNB_SHIFT) 1067b43e6d7SStefan Binding #define CS42L42_SW_CLK_STP_STAT_SEL_SHIFT 5 1077b43e6d7SStefan Binding #define CS42L42_SW_CLK_STP_STAT_SEL_MASK (3 << CS42L42_SW_CLK_STP_STAT_SEL_SHIFT) 1087b43e6d7SStefan Binding 1097b43e6d7SStefan Binding #define CS42L42_RSENSE_CTL1 (CS42L42_PAGE_11 + 0x04) 1107b43e6d7SStefan Binding #define CS42L42_RS_TRIM_R_SHIFT 0 1117b43e6d7SStefan Binding #define CS42L42_RS_TRIM_R_MASK (1 << CS42L42_RS_TRIM_R_SHIFT) 1127b43e6d7SStefan Binding #define CS42L42_RS_TRIM_T_SHIFT 1 1137b43e6d7SStefan Binding #define CS42L42_RS_TRIM_T_MASK (1 << CS42L42_RS_TRIM_T_SHIFT) 1147b43e6d7SStefan Binding #define CS42L42_HPREF_RS_SHIFT 2 1157b43e6d7SStefan Binding #define CS42L42_HPREF_RS_MASK (1 << CS42L42_HPREF_RS_SHIFT) 1167b43e6d7SStefan Binding #define CS42L42_HSBIAS_FILT_REF_RS_SHIFT 3 1177b43e6d7SStefan Binding #define CS42L42_HSBIAS_FILT_REF_RS_MASK (1 << CS42L42_HSBIAS_FILT_REF_RS_SHIFT) 1187b43e6d7SStefan Binding #define CS42L42_RING_SENSE_PU_HIZ_SHIFT 6 1197b43e6d7SStefan Binding #define CS42L42_RING_SENSE_PU_HIZ_MASK (1 << CS42L42_RING_SENSE_PU_HIZ_SHIFT) 1207b43e6d7SStefan Binding 1217b43e6d7SStefan Binding #define CS42L42_RSENSE_CTL2 (CS42L42_PAGE_11 + 0x05) 1227b43e6d7SStefan Binding #define CS42L42_TS_RS_GATE_SHIFT 7 1237b43e6d7SStefan Binding #define CS42L42_TS_RS_GATE_MAS (1 << CS42L42_TS_RS_GATE_SHIFT) 1247b43e6d7SStefan Binding 1257b43e6d7SStefan Binding #define CS42L42_OSC_SWITCH (CS42L42_PAGE_11 + 0x07) 1267b43e6d7SStefan Binding #define CS42L42_SCLK_PRESENT_SHIFT 0 1277b43e6d7SStefan Binding #define CS42L42_SCLK_PRESENT_MASK (1 << CS42L42_SCLK_PRESENT_SHIFT) 1287b43e6d7SStefan Binding 1297b43e6d7SStefan Binding #define CS42L42_OSC_SWITCH_STATUS (CS42L42_PAGE_11 + 0x09) 1307b43e6d7SStefan Binding #define CS42L42_OSC_SW_SEL_STAT_SHIFT 0 1317b43e6d7SStefan Binding #define CS42L42_OSC_SW_SEL_STAT_MASK (3 << CS42L42_OSC_SW_SEL_STAT_SHIFT) 1327b43e6d7SStefan Binding #define CS42L42_OSC_PDNB_STAT_SHIFT 2 1337b43e6d7SStefan Binding #define CS42L42_OSC_PDNB_STAT_MASK (1 << CS42L42_OSC_SW_SEL_STAT_SHIFT) 1347b43e6d7SStefan Binding 1357b43e6d7SStefan Binding #define CS42L42_RSENSE_CTL3 (CS42L42_PAGE_11 + 0x12) 1367b43e6d7SStefan Binding #define CS42L42_RS_RISE_DBNCE_TIME_SHIFT 0 1377b43e6d7SStefan Binding #define CS42L42_RS_RISE_DBNCE_TIME_MASK (7 << CS42L42_RS_RISE_DBNCE_TIME_SHIFT) 1387b43e6d7SStefan Binding #define CS42L42_RS_FALL_DBNCE_TIME_SHIFT 3 1397b43e6d7SStefan Binding #define CS42L42_RS_FALL_DBNCE_TIME_MASK (7 << CS42L42_RS_FALL_DBNCE_TIME_SHIFT) 1407b43e6d7SStefan Binding #define CS42L42_RS_PU_EN_SHIFT 6 1417b43e6d7SStefan Binding #define CS42L42_RS_PU_EN_MASK (1 << CS42L42_RS_PU_EN_SHIFT) 1427b43e6d7SStefan Binding #define CS42L42_RS_INV_SHIFT 7 1437b43e6d7SStefan Binding #define CS42L42_RS_INV_MASK (1 << CS42L42_RS_INV_SHIFT) 1447b43e6d7SStefan Binding 1457b43e6d7SStefan Binding #define CS42L42_TSENSE_CTL (CS42L42_PAGE_11 + 0x13) 1467b43e6d7SStefan Binding #define CS42L42_TS_RISE_DBNCE_TIME_SHIFT 0 1477b43e6d7SStefan Binding #define CS42L42_TS_RISE_DBNCE_TIME_MASK (7 << CS42L42_TS_RISE_DBNCE_TIME_SHIFT) 1487b43e6d7SStefan Binding #define CS42L42_TS_FALL_DBNCE_TIME_SHIFT 3 1497b43e6d7SStefan Binding #define CS42L42_TS_FALL_DBNCE_TIME_MASK (7 << CS42L42_TS_FALL_DBNCE_TIME_SHIFT) 1507b43e6d7SStefan Binding #define CS42L42_TS_INV_SHIFT 7 1517b43e6d7SStefan Binding #define CS42L42_TS_INV_MASK (1 << CS42L42_TS_INV_SHIFT) 1527b43e6d7SStefan Binding 1537b43e6d7SStefan Binding #define CS42L42_TSRS_INT_DISABLE (CS42L42_PAGE_11 + 0x14) 1547b43e6d7SStefan Binding #define CS42L42_D_RS_PLUG_DBNC_SHIFT 0 1557b43e6d7SStefan Binding #define CS42L42_D_RS_PLUG_DBNC_MASK (1 << CS42L42_D_RS_PLUG_DBNC_SHIFT) 1567b43e6d7SStefan Binding #define CS42L42_D_RS_UNPLUG_DBNC_SHIFT 1 1577b43e6d7SStefan Binding #define CS42L42_D_RS_UNPLUG_DBNC_MASK (1 << CS42L42_D_RS_UNPLUG_DBNC_SHIFT) 1587b43e6d7SStefan Binding #define CS42L42_D_TS_PLUG_DBNC_SHIFT 2 1597b43e6d7SStefan Binding #define CS42L42_D_TS_PLUG_DBNC_MASK (1 << CS42L42_D_TS_PLUG_DBNC_SHIFT) 1607b43e6d7SStefan Binding #define CS42L42_D_TS_UNPLUG_DBNC_SHIFT 3 1617b43e6d7SStefan Binding #define CS42L42_D_TS_UNPLUG_DBNC_MASK (1 << CS42L42_D_TS_UNPLUG_DBNC_SHIFT) 1627b43e6d7SStefan Binding 1637b43e6d7SStefan Binding #define CS42L42_TRSENSE_STATUS (CS42L42_PAGE_11 + 0x15) 1647b43e6d7SStefan Binding #define CS42L42_RS_PLUG_DBNC_SHIFT 0 1657b43e6d7SStefan Binding #define CS42L42_RS_PLUG_DBNC_MASK (1 << CS42L42_RS_PLUG_DBNC_SHIFT) 1667b43e6d7SStefan Binding #define CS42L42_RS_UNPLUG_DBNC_SHIFT 1 1677b43e6d7SStefan Binding #define CS42L42_RS_UNPLUG_DBNC_MASK (1 << CS42L42_RS_UNPLUG_DBNC_SHIFT) 1687b43e6d7SStefan Binding #define CS42L42_TS_PLUG_DBNC_SHIFT 2 1697b43e6d7SStefan Binding #define CS42L42_TS_PLUG_DBNC_MASK (1 << CS42L42_TS_PLUG_DBNC_SHIFT) 1707b43e6d7SStefan Binding #define CS42L42_TS_UNPLUG_DBNC_SHIFT 3 1717b43e6d7SStefan Binding #define CS42L42_TS_UNPLUG_DBNC_MASK (1 << CS42L42_TS_UNPLUG_DBNC_SHIFT) 1727b43e6d7SStefan Binding 1737b43e6d7SStefan Binding #define CS42L42_HSDET_CTL1 (CS42L42_PAGE_11 + 0x1F) 1747b43e6d7SStefan Binding #define CS42L42_HSDET_COMP1_LVL_SHIFT 0 1757b43e6d7SStefan Binding #define CS42L42_HSDET_COMP1_LVL_MASK (15 << CS42L42_HSDET_COMP1_LVL_SHIFT) 1767b43e6d7SStefan Binding #define CS42L42_HSDET_COMP2_LVL_SHIFT 4 1777b43e6d7SStefan Binding #define CS42L42_HSDET_COMP2_LVL_MASK (15 << CS42L42_HSDET_COMP2_LVL_SHIFT) 1787b43e6d7SStefan Binding 1797b43e6d7SStefan Binding #define CS42L42_HSDET_COMP1_LVL_VAL 12 /* 1.25V Comparator */ 1807b43e6d7SStefan Binding #define CS42L42_HSDET_COMP2_LVL_VAL 2 /* 1.75V Comparator */ 1817b43e6d7SStefan Binding #define CS42L42_HSDET_COMP1_LVL_DEFAULT 7 /* 1V Comparator */ 1827b43e6d7SStefan Binding #define CS42L42_HSDET_COMP2_LVL_DEFAULT 7 /* 2V Comparator */ 1837b43e6d7SStefan Binding 1847b43e6d7SStefan Binding #define CS42L42_HSDET_CTL2 (CS42L42_PAGE_11 + 0x20) 1857b43e6d7SStefan Binding #define CS42L42_HSDET_AUTO_TIME_SHIFT 0 1867b43e6d7SStefan Binding #define CS42L42_HSDET_AUTO_TIME_MASK (3 << CS42L42_HSDET_AUTO_TIME_SHIFT) 1877b43e6d7SStefan Binding #define CS42L42_HSBIAS_REF_SHIFT 3 1887b43e6d7SStefan Binding #define CS42L42_HSBIAS_REF_MASK (1 << CS42L42_HSBIAS_REF_SHIFT) 1897b43e6d7SStefan Binding #define CS42L42_HSDET_SET_SHIFT 4 1907b43e6d7SStefan Binding #define CS42L42_HSDET_SET_MASK (3 << CS42L42_HSDET_SET_SHIFT) 1917b43e6d7SStefan Binding #define CS42L42_HSDET_CTRL_SHIFT 6 1927b43e6d7SStefan Binding #define CS42L42_HSDET_CTRL_MASK (3 << CS42L42_HSDET_CTRL_SHIFT) 1937b43e6d7SStefan Binding 1947b43e6d7SStefan Binding #define CS42L42_HS_SWITCH_CTL (CS42L42_PAGE_11 + 0x21) 1957b43e6d7SStefan Binding #define CS42L42_SW_GNDHS_HS4_SHIFT 0 1967b43e6d7SStefan Binding #define CS42L42_SW_GNDHS_HS4_MASK (1 << CS42L42_SW_GNDHS_HS4_SHIFT) 1977b43e6d7SStefan Binding #define CS42L42_SW_GNDHS_HS3_SHIFT 1 1987b43e6d7SStefan Binding #define CS42L42_SW_GNDHS_HS3_MASK (1 << CS42L42_SW_GNDHS_HS3_SHIFT) 1997b43e6d7SStefan Binding #define CS42L42_SW_HSB_HS4_SHIFT 2 2007b43e6d7SStefan Binding #define CS42L42_SW_HSB_HS4_MASK (1 << CS42L42_SW_HSB_HS4_SHIFT) 2017b43e6d7SStefan Binding #define CS42L42_SW_HSB_HS3_SHIFT 3 2027b43e6d7SStefan Binding #define CS42L42_SW_HSB_HS3_MASK (1 << CS42L42_SW_HSB_HS3_SHIFT) 2037b43e6d7SStefan Binding #define CS42L42_SW_HSB_FILT_HS4_SHIFT 4 2047b43e6d7SStefan Binding #define CS42L42_SW_HSB_FILT_HS4_MASK (1 << CS42L42_SW_HSB_FILT_HS4_SHIFT) 2057b43e6d7SStefan Binding #define CS42L42_SW_HSB_FILT_HS3_SHIFT 5 2067b43e6d7SStefan Binding #define CS42L42_SW_HSB_FILT_HS3_MASK (1 << CS42L42_SW_HSB_FILT_HS3_SHIFT) 2077b43e6d7SStefan Binding #define CS42L42_SW_REF_HS4_SHIFT 6 2087b43e6d7SStefan Binding #define CS42L42_SW_REF_HS4_MASK (1 << CS42L42_SW_REF_HS4_SHIFT) 2097b43e6d7SStefan Binding #define CS42L42_SW_REF_HS3_SHIFT 7 2107b43e6d7SStefan Binding #define CS42L42_SW_REF_HS3_MASK (1 << CS42L42_SW_REF_HS3_SHIFT) 2117b43e6d7SStefan Binding 2127b43e6d7SStefan Binding #define CS42L42_HS_DET_STATUS (CS42L42_PAGE_11 + 0x24) 2137b43e6d7SStefan Binding #define CS42L42_HSDET_TYPE_SHIFT 0 2147b43e6d7SStefan Binding #define CS42L42_HSDET_TYPE_MASK (3 << CS42L42_HSDET_TYPE_SHIFT) 2157b43e6d7SStefan Binding #define CS42L42_HSDET_COMP1_OUT_SHIFT 6 2167b43e6d7SStefan Binding #define CS42L42_HSDET_COMP1_OUT_MASK (1 << CS42L42_HSDET_COMP1_OUT_SHIFT) 2177b43e6d7SStefan Binding #define CS42L42_HSDET_COMP2_OUT_SHIFT 7 2187b43e6d7SStefan Binding #define CS42L42_HSDET_COMP2_OUT_MASK (1 << CS42L42_HSDET_COMP2_OUT_SHIFT) 2197b43e6d7SStefan Binding #define CS42L42_PLUG_CTIA 0 2207b43e6d7SStefan Binding #define CS42L42_PLUG_OMTP 1 2217b43e6d7SStefan Binding #define CS42L42_PLUG_HEADPHONE 2 2227b43e6d7SStefan Binding #define CS42L42_PLUG_INVALID 3 2237b43e6d7SStefan Binding 2247b43e6d7SStefan Binding #define CS42L42_HSDET_SW_COMP1 ((0 << CS42L42_SW_GNDHS_HS4_SHIFT) | \ 2257b43e6d7SStefan Binding (1 << CS42L42_SW_GNDHS_HS3_SHIFT) | \ 2267b43e6d7SStefan Binding (1 << CS42L42_SW_HSB_HS4_SHIFT) | \ 2277b43e6d7SStefan Binding (0 << CS42L42_SW_HSB_HS3_SHIFT) | \ 2287b43e6d7SStefan Binding (0 << CS42L42_SW_HSB_FILT_HS4_SHIFT) | \ 2297b43e6d7SStefan Binding (1 << CS42L42_SW_HSB_FILT_HS3_SHIFT) | \ 2307b43e6d7SStefan Binding (0 << CS42L42_SW_REF_HS4_SHIFT) | \ 2317b43e6d7SStefan Binding (1 << CS42L42_SW_REF_HS3_SHIFT)) 2327b43e6d7SStefan Binding #define CS42L42_HSDET_SW_COMP2 ((1 << CS42L42_SW_GNDHS_HS4_SHIFT) | \ 2337b43e6d7SStefan Binding (0 << CS42L42_SW_GNDHS_HS3_SHIFT) | \ 2347b43e6d7SStefan Binding (0 << CS42L42_SW_HSB_HS4_SHIFT) | \ 2357b43e6d7SStefan Binding (1 << CS42L42_SW_HSB_HS3_SHIFT) | \ 2367b43e6d7SStefan Binding (1 << CS42L42_SW_HSB_FILT_HS4_SHIFT) | \ 2377b43e6d7SStefan Binding (0 << CS42L42_SW_HSB_FILT_HS3_SHIFT) | \ 2387b43e6d7SStefan Binding (1 << CS42L42_SW_REF_HS4_SHIFT) | \ 2397b43e6d7SStefan Binding (0 << CS42L42_SW_REF_HS3_SHIFT)) 2407b43e6d7SStefan Binding #define CS42L42_HSDET_SW_TYPE1 ((0 << CS42L42_SW_GNDHS_HS4_SHIFT) | \ 2417b43e6d7SStefan Binding (1 << CS42L42_SW_GNDHS_HS3_SHIFT) | \ 2427b43e6d7SStefan Binding (1 << CS42L42_SW_HSB_HS4_SHIFT) | \ 2437b43e6d7SStefan Binding (0 << CS42L42_SW_HSB_HS3_SHIFT) | \ 2447b43e6d7SStefan Binding (0 << CS42L42_SW_HSB_FILT_HS4_SHIFT) | \ 2457b43e6d7SStefan Binding (1 << CS42L42_SW_HSB_FILT_HS3_SHIFT) | \ 2467b43e6d7SStefan Binding (0 << CS42L42_SW_REF_HS4_SHIFT) | \ 2477b43e6d7SStefan Binding (1 << CS42L42_SW_REF_HS3_SHIFT)) 2487b43e6d7SStefan Binding #define CS42L42_HSDET_SW_TYPE2 ((1 << CS42L42_SW_GNDHS_HS4_SHIFT) | \ 2497b43e6d7SStefan Binding (0 << CS42L42_SW_GNDHS_HS3_SHIFT) | \ 2507b43e6d7SStefan Binding (0 << CS42L42_SW_HSB_HS4_SHIFT) | \ 2517b43e6d7SStefan Binding (1 << CS42L42_SW_HSB_HS3_SHIFT) | \ 2527b43e6d7SStefan Binding (1 << CS42L42_SW_HSB_FILT_HS4_SHIFT) | \ 2537b43e6d7SStefan Binding (0 << CS42L42_SW_HSB_FILT_HS3_SHIFT) | \ 2547b43e6d7SStefan Binding (1 << CS42L42_SW_REF_HS4_SHIFT) | \ 2557b43e6d7SStefan Binding (0 << CS42L42_SW_REF_HS3_SHIFT)) 2567b43e6d7SStefan Binding #define CS42L42_HSDET_SW_TYPE3 ((1 << CS42L42_SW_GNDHS_HS4_SHIFT) | \ 2577b43e6d7SStefan Binding (1 << CS42L42_SW_GNDHS_HS3_SHIFT) | \ 2587b43e6d7SStefan Binding (0 << CS42L42_SW_HSB_HS4_SHIFT) | \ 2597b43e6d7SStefan Binding (0 << CS42L42_SW_HSB_HS3_SHIFT) | \ 2607b43e6d7SStefan Binding (1 << CS42L42_SW_HSB_FILT_HS4_SHIFT) | \ 2617b43e6d7SStefan Binding (1 << CS42L42_SW_HSB_FILT_HS3_SHIFT) | \ 2627b43e6d7SStefan Binding (1 << CS42L42_SW_REF_HS4_SHIFT) | \ 2637b43e6d7SStefan Binding (1 << CS42L42_SW_REF_HS3_SHIFT)) 2647b43e6d7SStefan Binding #define CS42L42_HSDET_SW_TYPE4 ((0 << CS42L42_SW_GNDHS_HS4_SHIFT) | \ 2657b43e6d7SStefan Binding (1 << CS42L42_SW_GNDHS_HS3_SHIFT) | \ 2667b43e6d7SStefan Binding (1 << CS42L42_SW_HSB_HS4_SHIFT) | \ 2677b43e6d7SStefan Binding (0 << CS42L42_SW_HSB_HS3_SHIFT) | \ 2687b43e6d7SStefan Binding (0 << CS42L42_SW_HSB_FILT_HS4_SHIFT) | \ 2697b43e6d7SStefan Binding (1 << CS42L42_SW_HSB_FILT_HS3_SHIFT) | \ 2707b43e6d7SStefan Binding (0 << CS42L42_SW_REF_HS4_SHIFT) | \ 2717b43e6d7SStefan Binding (1 << CS42L42_SW_REF_HS3_SHIFT)) 2727b43e6d7SStefan Binding 2737b43e6d7SStefan Binding #define CS42L42_HSDET_COMP_TYPE1 1 2747b43e6d7SStefan Binding #define CS42L42_HSDET_COMP_TYPE2 2 2757b43e6d7SStefan Binding #define CS42L42_HSDET_COMP_TYPE3 0 2767b43e6d7SStefan Binding #define CS42L42_HSDET_COMP_TYPE4 3 2777b43e6d7SStefan Binding 2787b43e6d7SStefan Binding #define CS42L42_HS_CLAMP_DISABLE (CS42L42_PAGE_11 + 0x29) 2797b43e6d7SStefan Binding #define CS42L42_HS_CLAMP_DISABLE_SHIFT 0 2807b43e6d7SStefan Binding #define CS42L42_HS_CLAMP_DISABLE_MASK (1 << CS42L42_HS_CLAMP_DISABLE_SHIFT) 2817b43e6d7SStefan Binding 2827b43e6d7SStefan Binding /* Page 0x12 Clocking Registers */ 2837b43e6d7SStefan Binding #define CS42L42_MCLK_SRC_SEL (CS42L42_PAGE_12 + 0x01) 2847b43e6d7SStefan Binding #define CS42L42_MCLKDIV_SHIFT 1 2857b43e6d7SStefan Binding #define CS42L42_MCLKDIV_MASK (1 << CS42L42_MCLKDIV_SHIFT) 2867b43e6d7SStefan Binding #define CS42L42_MCLK_SRC_SEL_SHIFT 0 2877b43e6d7SStefan Binding #define CS42L42_MCLK_SRC_SEL_MASK (1 << CS42L42_MCLK_SRC_SEL_SHIFT) 2887b43e6d7SStefan Binding 2897b43e6d7SStefan Binding #define CS42L42_SPDIF_CLK_CFG (CS42L42_PAGE_12 + 0x02) 2907b43e6d7SStefan Binding #define CS42L42_FSYNC_PW_LOWER (CS42L42_PAGE_12 + 0x03) 2917b43e6d7SStefan Binding 2927b43e6d7SStefan Binding #define CS42L42_FSYNC_PW_UPPER (CS42L42_PAGE_12 + 0x04) 2937b43e6d7SStefan Binding #define CS42L42_FSYNC_PULSE_WIDTH_SHIFT 0 2947b43e6d7SStefan Binding #define CS42L42_FSYNC_PULSE_WIDTH_MASK (0xff << \ 2957b43e6d7SStefan Binding CS42L42_FSYNC_PULSE_WIDTH_SHIFT) 2967b43e6d7SStefan Binding 2977b43e6d7SStefan Binding #define CS42L42_FSYNC_P_LOWER (CS42L42_PAGE_12 + 0x05) 2987b43e6d7SStefan Binding 2997b43e6d7SStefan Binding #define CS42L42_FSYNC_P_UPPER (CS42L42_PAGE_12 + 0x06) 3007b43e6d7SStefan Binding #define CS42L42_FSYNC_PERIOD_SHIFT 0 3017b43e6d7SStefan Binding #define CS42L42_FSYNC_PERIOD_MASK (0xff << CS42L42_FSYNC_PERIOD_SHIFT) 3027b43e6d7SStefan Binding 3037b43e6d7SStefan Binding #define CS42L42_ASP_CLK_CFG (CS42L42_PAGE_12 + 0x07) 3047b43e6d7SStefan Binding #define CS42L42_ASP_SCLK_EN_SHIFT 5 3057b43e6d7SStefan Binding #define CS42L42_ASP_SCLK_EN_MASK (1 << CS42L42_ASP_SCLK_EN_SHIFT) 3067b43e6d7SStefan Binding #define CS42L42_ASP_MASTER_MODE 0x01 3077b43e6d7SStefan Binding #define CS42L42_ASP_SLAVE_MODE 0x00 3087b43e6d7SStefan Binding #define CS42L42_ASP_MODE_SHIFT 4 3097b43e6d7SStefan Binding #define CS42L42_ASP_MODE_MASK (1 << CS42L42_ASP_MODE_SHIFT) 3107b43e6d7SStefan Binding #define CS42L42_ASP_SCPOL_SHIFT 2 3117b43e6d7SStefan Binding #define CS42L42_ASP_SCPOL_MASK (3 << CS42L42_ASP_SCPOL_SHIFT) 3127b43e6d7SStefan Binding #define CS42L42_ASP_SCPOL_NOR 3 3137b43e6d7SStefan Binding #define CS42L42_ASP_LCPOL_SHIFT 0 3147b43e6d7SStefan Binding #define CS42L42_ASP_LCPOL_MASK (3 << CS42L42_ASP_LCPOL_SHIFT) 3157b43e6d7SStefan Binding #define CS42L42_ASP_LCPOL_INV 3 3167b43e6d7SStefan Binding 3177b43e6d7SStefan Binding #define CS42L42_ASP_FRM_CFG (CS42L42_PAGE_12 + 0x08) 3187b43e6d7SStefan Binding #define CS42L42_ASP_STP_SHIFT 4 3197b43e6d7SStefan Binding #define CS42L42_ASP_STP_MASK (1 << CS42L42_ASP_STP_SHIFT) 3207b43e6d7SStefan Binding #define CS42L42_ASP_5050_SHIFT 3 3217b43e6d7SStefan Binding #define CS42L42_ASP_5050_MASK (1 << CS42L42_ASP_5050_SHIFT) 3227b43e6d7SStefan Binding #define CS42L42_ASP_FSD_SHIFT 0 3237b43e6d7SStefan Binding #define CS42L42_ASP_FSD_MASK (7 << CS42L42_ASP_FSD_SHIFT) 3247b43e6d7SStefan Binding #define CS42L42_ASP_FSD_0_5 1 3257b43e6d7SStefan Binding #define CS42L42_ASP_FSD_1_0 2 3267b43e6d7SStefan Binding #define CS42L42_ASP_FSD_1_5 3 3277b43e6d7SStefan Binding #define CS42L42_ASP_FSD_2_0 4 3287b43e6d7SStefan Binding 3297b43e6d7SStefan Binding #define CS42L42_FS_RATE_EN (CS42L42_PAGE_12 + 0x09) 3307b43e6d7SStefan Binding #define CS42L42_FS_EN_SHIFT 0 3317b43e6d7SStefan Binding #define CS42L42_FS_EN_MASK (0xf << CS42L42_FS_EN_SHIFT) 3327b43e6d7SStefan Binding #define CS42L42_FS_EN_IASRC_96K 0x1 3337b43e6d7SStefan Binding #define CS42L42_FS_EN_OASRC_96K 0x2 3347b43e6d7SStefan Binding 3357b43e6d7SStefan Binding #define CS42L42_IN_ASRC_CLK (CS42L42_PAGE_12 + 0x0A) 3367b43e6d7SStefan Binding #define CS42L42_CLK_IASRC_SEL_SHIFT 0 3377b43e6d7SStefan Binding #define CS42L42_CLK_IASRC_SEL_MASK (1 << CS42L42_CLK_IASRC_SEL_SHIFT) 3387b43e6d7SStefan Binding #define CS42L42_CLK_IASRC_SEL_6 0 3397b43e6d7SStefan Binding #define CS42L42_CLK_IASRC_SEL_12 1 3407b43e6d7SStefan Binding 3417b43e6d7SStefan Binding #define CS42L42_OUT_ASRC_CLK (CS42L42_PAGE_12 + 0x0B) 3427b43e6d7SStefan Binding #define CS42L42_CLK_OASRC_SEL_SHIFT 0 3437b43e6d7SStefan Binding #define CS42L42_CLK_OASRC_SEL_MASK (1 << CS42L42_CLK_OASRC_SEL_SHIFT) 3447b43e6d7SStefan Binding #define CS42L42_CLK_OASRC_SEL_12 1 3457b43e6d7SStefan Binding 3467b43e6d7SStefan Binding #define CS42L42_PLL_DIV_CFG1 (CS42L42_PAGE_12 + 0x0C) 3477b43e6d7SStefan Binding #define CS42L42_SCLK_PREDIV_SHIFT 0 3487b43e6d7SStefan Binding #define CS42L42_SCLK_PREDIV_MASK (3 << CS42L42_SCLK_PREDIV_SHIFT) 3497b43e6d7SStefan Binding 3507b43e6d7SStefan Binding /* Page 0x13 Interrupt Registers */ 3517b43e6d7SStefan Binding /* Interrupts */ 3527b43e6d7SStefan Binding #define CS42L42_ADC_OVFL_STATUS (CS42L42_PAGE_13 + 0x01) 3537b43e6d7SStefan Binding #define CS42L42_MIXER_STATUS (CS42L42_PAGE_13 + 0x02) 3547b43e6d7SStefan Binding #define CS42L42_SRC_STATUS (CS42L42_PAGE_13 + 0x03) 3557b43e6d7SStefan Binding #define CS42L42_ASP_RX_STATUS (CS42L42_PAGE_13 + 0x04) 3567b43e6d7SStefan Binding #define CS42L42_ASP_TX_STATUS (CS42L42_PAGE_13 + 0x05) 3577b43e6d7SStefan Binding #define CS42L42_CODEC_STATUS (CS42L42_PAGE_13 + 0x08) 3587b43e6d7SStefan Binding #define CS42L42_DET_INT_STATUS1 (CS42L42_PAGE_13 + 0x09) 3597b43e6d7SStefan Binding #define CS42L42_DET_INT_STATUS2 (CS42L42_PAGE_13 + 0x0A) 3607b43e6d7SStefan Binding #define CS42L42_SRCPL_INT_STATUS (CS42L42_PAGE_13 + 0x0B) 3617b43e6d7SStefan Binding #define CS42L42_VPMON_STATUS (CS42L42_PAGE_13 + 0x0D) 3627b43e6d7SStefan Binding #define CS42L42_PLL_LOCK_STATUS (CS42L42_PAGE_13 + 0x0E) 3637b43e6d7SStefan Binding #define CS42L42_TSRS_PLUG_STATUS (CS42L42_PAGE_13 + 0x0F) 3647b43e6d7SStefan Binding /* Masks */ 3657b43e6d7SStefan Binding #define CS42L42_ADC_OVFL_INT_MASK (CS42L42_PAGE_13 + 0x16) 3667b43e6d7SStefan Binding #define CS42L42_ADC_OVFL_SHIFT 0 3677b43e6d7SStefan Binding #define CS42L42_ADC_OVFL_MASK (1 << CS42L42_ADC_OVFL_SHIFT) 3687b43e6d7SStefan Binding #define CS42L42_ADC_OVFL_VAL_MASK CS42L42_ADC_OVFL_MASK 3697b43e6d7SStefan Binding 3707b43e6d7SStefan Binding #define CS42L42_MIXER_INT_MASK (CS42L42_PAGE_13 + 0x17) 3717b43e6d7SStefan Binding #define CS42L42_MIX_CHB_OVFL_SHIFT 0 3727b43e6d7SStefan Binding #define CS42L42_MIX_CHB_OVFL_MASK (1 << CS42L42_MIX_CHB_OVFL_SHIFT) 3737b43e6d7SStefan Binding #define CS42L42_MIX_CHA_OVFL_SHIFT 1 3747b43e6d7SStefan Binding #define CS42L42_MIX_CHA_OVFL_MASK (1 << CS42L42_MIX_CHA_OVFL_SHIFT) 3757b43e6d7SStefan Binding #define CS42L42_EQ_OVFL_SHIFT 2 3767b43e6d7SStefan Binding #define CS42L42_EQ_OVFL_MASK (1 << CS42L42_EQ_OVFL_SHIFT) 3777b43e6d7SStefan Binding #define CS42L42_EQ_BIQUAD_OVFL_SHIFT 3 3787b43e6d7SStefan Binding #define CS42L42_EQ_BIQUAD_OVFL_MASK (1 << CS42L42_EQ_BIQUAD_OVFL_SHIFT) 3797b43e6d7SStefan Binding #define CS42L42_MIXER_VAL_MASK (CS42L42_MIX_CHB_OVFL_MASK | \ 3807b43e6d7SStefan Binding CS42L42_MIX_CHA_OVFL_MASK | \ 3817b43e6d7SStefan Binding CS42L42_EQ_OVFL_MASK | \ 3827b43e6d7SStefan Binding CS42L42_EQ_BIQUAD_OVFL_MASK) 3837b43e6d7SStefan Binding 3847b43e6d7SStefan Binding #define CS42L42_SRC_INT_MASK (CS42L42_PAGE_13 + 0x18) 3857b43e6d7SStefan Binding #define CS42L42_SRC_ILK_SHIFT 0 3867b43e6d7SStefan Binding #define CS42L42_SRC_ILK_MASK (1 << CS42L42_SRC_ILK_SHIFT) 3877b43e6d7SStefan Binding #define CS42L42_SRC_OLK_SHIFT 1 3887b43e6d7SStefan Binding #define CS42L42_SRC_OLK_MASK (1 << CS42L42_SRC_OLK_SHIFT) 3897b43e6d7SStefan Binding #define CS42L42_SRC_IUNLK_SHIFT 2 3907b43e6d7SStefan Binding #define CS42L42_SRC_IUNLK_MASK (1 << CS42L42_SRC_IUNLK_SHIFT) 3917b43e6d7SStefan Binding #define CS42L42_SRC_OUNLK_SHIFT 3 3927b43e6d7SStefan Binding #define CS42L42_SRC_OUNLK_MASK (1 << CS42L42_SRC_OUNLK_SHIFT) 3937b43e6d7SStefan Binding #define CS42L42_SRC_VAL_MASK (CS42L42_SRC_ILK_MASK | \ 3947b43e6d7SStefan Binding CS42L42_SRC_OLK_MASK | \ 3957b43e6d7SStefan Binding CS42L42_SRC_IUNLK_MASK | \ 3967b43e6d7SStefan Binding CS42L42_SRC_OUNLK_MASK) 3977b43e6d7SStefan Binding 3987b43e6d7SStefan Binding #define CS42L42_ASP_RX_INT_MASK (CS42L42_PAGE_13 + 0x19) 3997b43e6d7SStefan Binding #define CS42L42_ASPRX_NOLRCK_SHIFT 0 4007b43e6d7SStefan Binding #define CS42L42_ASPRX_NOLRCK_MASK (1 << CS42L42_ASPRX_NOLRCK_SHIFT) 4017b43e6d7SStefan Binding #define CS42L42_ASPRX_EARLY_SHIFT 1 4027b43e6d7SStefan Binding #define CS42L42_ASPRX_EARLY_MASK (1 << CS42L42_ASPRX_EARLY_SHIFT) 4037b43e6d7SStefan Binding #define CS42L42_ASPRX_LATE_SHIFT 2 4047b43e6d7SStefan Binding #define CS42L42_ASPRX_LATE_MASK (1 << CS42L42_ASPRX_LATE_SHIFT) 4057b43e6d7SStefan Binding #define CS42L42_ASPRX_ERROR_SHIFT 3 4067b43e6d7SStefan Binding #define CS42L42_ASPRX_ERROR_MASK (1 << CS42L42_ASPRX_ERROR_SHIFT) 4077b43e6d7SStefan Binding #define CS42L42_ASPRX_OVLD_SHIFT 4 4087b43e6d7SStefan Binding #define CS42L42_ASPRX_OVLD_MASK (1 << CS42L42_ASPRX_OVLD_SHIFT) 4097b43e6d7SStefan Binding #define CS42L42_ASP_RX_VAL_MASK (CS42L42_ASPRX_NOLRCK_MASK | \ 4107b43e6d7SStefan Binding CS42L42_ASPRX_EARLY_MASK | \ 4117b43e6d7SStefan Binding CS42L42_ASPRX_LATE_MASK | \ 4127b43e6d7SStefan Binding CS42L42_ASPRX_ERROR_MASK | \ 4137b43e6d7SStefan Binding CS42L42_ASPRX_OVLD_MASK) 4147b43e6d7SStefan Binding 4157b43e6d7SStefan Binding #define CS42L42_ASP_TX_INT_MASK (CS42L42_PAGE_13 + 0x1A) 4167b43e6d7SStefan Binding #define CS42L42_ASPTX_NOLRCK_SHIFT 0 4177b43e6d7SStefan Binding #define CS42L42_ASPTX_NOLRCK_MASK (1 << CS42L42_ASPTX_NOLRCK_SHIFT) 4187b43e6d7SStefan Binding #define CS42L42_ASPTX_EARLY_SHIFT 1 4197b43e6d7SStefan Binding #define CS42L42_ASPTX_EARLY_MASK (1 << CS42L42_ASPTX_EARLY_SHIFT) 4207b43e6d7SStefan Binding #define CS42L42_ASPTX_LATE_SHIFT 2 4217b43e6d7SStefan Binding #define CS42L42_ASPTX_LATE_MASK (1 << CS42L42_ASPTX_LATE_SHIFT) 4227b43e6d7SStefan Binding #define CS42L42_ASPTX_SMERROR_SHIFT 3 4237b43e6d7SStefan Binding #define CS42L42_ASPTX_SMERROR_MASK (1 << CS42L42_ASPTX_SMERROR_SHIFT) 4247b43e6d7SStefan Binding #define CS42L42_ASP_TX_VAL_MASK (CS42L42_ASPTX_NOLRCK_MASK | \ 4257b43e6d7SStefan Binding CS42L42_ASPTX_EARLY_MASK | \ 4267b43e6d7SStefan Binding CS42L42_ASPTX_LATE_MASK | \ 4277b43e6d7SStefan Binding CS42L42_ASPTX_SMERROR_MASK) 4287b43e6d7SStefan Binding 4297b43e6d7SStefan Binding #define CS42L42_CODEC_INT_MASK (CS42L42_PAGE_13 + 0x1B) 4307b43e6d7SStefan Binding #define CS42L42_PDN_DONE_SHIFT 0 4317b43e6d7SStefan Binding #define CS42L42_PDN_DONE_MASK (1 << CS42L42_PDN_DONE_SHIFT) 4327b43e6d7SStefan Binding #define CS42L42_HSDET_AUTO_DONE_SHIFT 1 4337b43e6d7SStefan Binding #define CS42L42_HSDET_AUTO_DONE_MASK (1 << CS42L42_HSDET_AUTO_DONE_SHIFT) 4347b43e6d7SStefan Binding #define CS42L42_CODEC_VAL_MASK (CS42L42_PDN_DONE_MASK | \ 4357b43e6d7SStefan Binding CS42L42_HSDET_AUTO_DONE_MASK) 4367b43e6d7SStefan Binding 4377b43e6d7SStefan Binding #define CS42L42_SRCPL_INT_MASK (CS42L42_PAGE_13 + 0x1C) 4387b43e6d7SStefan Binding #define CS42L42_SRCPL_ADC_LK_SHIFT 0 4397b43e6d7SStefan Binding #define CS42L42_SRCPL_ADC_LK_MASK (1 << CS42L42_SRCPL_ADC_LK_SHIFT) 4407b43e6d7SStefan Binding #define CS42L42_SRCPL_DAC_LK_SHIFT 2 4417b43e6d7SStefan Binding #define CS42L42_SRCPL_DAC_LK_MASK (1 << CS42L42_SRCPL_DAC_LK_SHIFT) 4427b43e6d7SStefan Binding #define CS42L42_SRCPL_ADC_UNLK_SHIFT 5 4437b43e6d7SStefan Binding #define CS42L42_SRCPL_ADC_UNLK_MASK (1 << CS42L42_SRCPL_ADC_UNLK_SHIFT) 4447b43e6d7SStefan Binding #define CS42L42_SRCPL_DAC_UNLK_SHIFT 6 4457b43e6d7SStefan Binding #define CS42L42_SRCPL_DAC_UNLK_MASK (1 << CS42L42_SRCPL_DAC_UNLK_SHIFT) 4467b43e6d7SStefan Binding #define CS42L42_SRCPL_VAL_MASK (CS42L42_SRCPL_ADC_LK_MASK | \ 4477b43e6d7SStefan Binding CS42L42_SRCPL_DAC_LK_MASK | \ 4487b43e6d7SStefan Binding CS42L42_SRCPL_ADC_UNLK_MASK | \ 4497b43e6d7SStefan Binding CS42L42_SRCPL_DAC_UNLK_MASK) 4507b43e6d7SStefan Binding 4517b43e6d7SStefan Binding #define CS42L42_VPMON_INT_MASK (CS42L42_PAGE_13 + 0x1E) 4527b43e6d7SStefan Binding #define CS42L42_VPMON_SHIFT 0 4537b43e6d7SStefan Binding #define CS42L42_VPMON_MASK (1 << CS42L42_VPMON_SHIFT) 4547b43e6d7SStefan Binding #define CS42L42_VPMON_VAL_MASK CS42L42_VPMON_MASK 4557b43e6d7SStefan Binding 4567b43e6d7SStefan Binding #define CS42L42_PLL_LOCK_INT_MASK (CS42L42_PAGE_13 + 0x1F) 4577b43e6d7SStefan Binding #define CS42L42_PLL_LOCK_SHIFT 0 4587b43e6d7SStefan Binding #define CS42L42_PLL_LOCK_MASK (1 << CS42L42_PLL_LOCK_SHIFT) 4597b43e6d7SStefan Binding #define CS42L42_PLL_LOCK_VAL_MASK CS42L42_PLL_LOCK_MASK 4607b43e6d7SStefan Binding 4617b43e6d7SStefan Binding #define CS42L42_TSRS_PLUG_INT_MASK (CS42L42_PAGE_13 + 0x20) 4627b43e6d7SStefan Binding #define CS42L42_RS_PLUG_SHIFT 0 4637b43e6d7SStefan Binding #define CS42L42_RS_PLUG_MASK (1 << CS42L42_RS_PLUG_SHIFT) 4647b43e6d7SStefan Binding #define CS42L42_RS_UNPLUG_SHIFT 1 4657b43e6d7SStefan Binding #define CS42L42_RS_UNPLUG_MASK (1 << CS42L42_RS_UNPLUG_SHIFT) 4667b43e6d7SStefan Binding #define CS42L42_TS_PLUG_SHIFT 2 4677b43e6d7SStefan Binding #define CS42L42_TS_PLUG_MASK (1 << CS42L42_TS_PLUG_SHIFT) 4687b43e6d7SStefan Binding #define CS42L42_TS_UNPLUG_SHIFT 3 4697b43e6d7SStefan Binding #define CS42L42_TS_UNPLUG_MASK (1 << CS42L42_TS_UNPLUG_SHIFT) 4707b43e6d7SStefan Binding #define CS42L42_TSRS_PLUG_VAL_MASK (CS42L42_RS_PLUG_MASK | \ 4717b43e6d7SStefan Binding CS42L42_RS_UNPLUG_MASK | \ 4727b43e6d7SStefan Binding CS42L42_TS_PLUG_MASK | \ 4737b43e6d7SStefan Binding CS42L42_TS_UNPLUG_MASK) 4747b43e6d7SStefan Binding #define CS42L42_TS_PLUG 3 4757b43e6d7SStefan Binding #define CS42L42_TS_UNPLUG 0 4767b43e6d7SStefan Binding #define CS42L42_TS_TRANS 1 4777b43e6d7SStefan Binding 4787b43e6d7SStefan Binding /* 4797b43e6d7SStefan Binding * NOTE: PLL_START must be 0 while both ADC_PDN=1 and HP_PDN=1. 4807b43e6d7SStefan Binding * Otherwise it will prevent FILT+ from charging properly. 4817b43e6d7SStefan Binding */ 4827b43e6d7SStefan Binding #define CS42L42_PLL_CTL1 (CS42L42_PAGE_15 + 0x01) 4837b43e6d7SStefan Binding #define CS42L42_PLL_START_SHIFT 0 4847b43e6d7SStefan Binding #define CS42L42_PLL_START_MASK (1 << CS42L42_PLL_START_SHIFT) 4857b43e6d7SStefan Binding 4867b43e6d7SStefan Binding #define CS42L42_PLL_DIV_FRAC0 (CS42L42_PAGE_15 + 0x02) 4877b43e6d7SStefan Binding #define CS42L42_PLL_DIV_FRAC_SHIFT 0 4887b43e6d7SStefan Binding #define CS42L42_PLL_DIV_FRAC_MASK (0xff << CS42L42_PLL_DIV_FRAC_SHIFT) 4897b43e6d7SStefan Binding 4907b43e6d7SStefan Binding #define CS42L42_PLL_DIV_FRAC1 (CS42L42_PAGE_15 + 0x03) 4917b43e6d7SStefan Binding #define CS42L42_PLL_DIV_FRAC2 (CS42L42_PAGE_15 + 0x04) 4927b43e6d7SStefan Binding 4937b43e6d7SStefan Binding #define CS42L42_PLL_DIV_INT (CS42L42_PAGE_15 + 0x05) 4947b43e6d7SStefan Binding #define CS42L42_PLL_DIV_INT_SHIFT 0 4957b43e6d7SStefan Binding #define CS42L42_PLL_DIV_INT_MASK (0xff << CS42L42_PLL_DIV_INT_SHIFT) 4967b43e6d7SStefan Binding 4977b43e6d7SStefan Binding #define CS42L42_PLL_CTL3 (CS42L42_PAGE_15 + 0x08) 4987b43e6d7SStefan Binding #define CS42L42_PLL_DIVOUT_SHIFT 0 4997b43e6d7SStefan Binding #define CS42L42_PLL_DIVOUT_MASK (0xff << CS42L42_PLL_DIVOUT_SHIFT) 5007b43e6d7SStefan Binding 5017b43e6d7SStefan Binding #define CS42L42_PLL_CAL_RATIO (CS42L42_PAGE_15 + 0x0A) 5027b43e6d7SStefan Binding #define CS42L42_PLL_CAL_RATIO_SHIFT 0 5037b43e6d7SStefan Binding #define CS42L42_PLL_CAL_RATIO_MASK (0xff << CS42L42_PLL_CAL_RATIO_SHIFT) 5047b43e6d7SStefan Binding 5057b43e6d7SStefan Binding #define CS42L42_PLL_CTL4 (CS42L42_PAGE_15 + 0x1B) 5067b43e6d7SStefan Binding #define CS42L42_PLL_MODE_SHIFT 0 5077b43e6d7SStefan Binding #define CS42L42_PLL_MODE_MASK (3 << CS42L42_PLL_MODE_SHIFT) 5087b43e6d7SStefan Binding 5097b43e6d7SStefan Binding /* Page 0x19 HP Load Detect Registers */ 5107b43e6d7SStefan Binding #define CS42L42_LOAD_DET_RCSTAT (CS42L42_PAGE_19 + 0x25) 5117b43e6d7SStefan Binding #define CS42L42_RLA_STAT_SHIFT 0 5127b43e6d7SStefan Binding #define CS42L42_RLA_STAT_MASK (3 << CS42L42_RLA_STAT_SHIFT) 5137b43e6d7SStefan Binding #define CS42L42_RLA_STAT_15_OHM 0 5147b43e6d7SStefan Binding 5157b43e6d7SStefan Binding #define CS42L42_LOAD_DET_DONE (CS42L42_PAGE_19 + 0x26) 5167b43e6d7SStefan Binding #define CS42L42_HPLOAD_DET_DONE_SHIFT 0 5177b43e6d7SStefan Binding #define CS42L42_HPLOAD_DET_DONE_MASK (1 << CS42L42_HPLOAD_DET_DONE_SHIFT) 5187b43e6d7SStefan Binding 5197b43e6d7SStefan Binding #define CS42L42_LOAD_DET_EN (CS42L42_PAGE_19 + 0x27) 5207b43e6d7SStefan Binding #define CS42L42_HP_LD_EN_SHIFT 0 5217b43e6d7SStefan Binding #define CS42L42_HP_LD_EN_MASK (1 << CS42L42_HP_LD_EN_SHIFT) 5227b43e6d7SStefan Binding 5237b43e6d7SStefan Binding /* Page 0x1B Headset Interface Registers */ 5247b43e6d7SStefan Binding #define CS42L42_HSBIAS_SC_AUTOCTL (CS42L42_PAGE_1B + 0x70) 5257b43e6d7SStefan Binding #define CS42L42_HSBIAS_SENSE_TRIP_SHIFT 0 5267b43e6d7SStefan Binding #define CS42L42_HSBIAS_SENSE_TRIP_MASK (7 << CS42L42_HSBIAS_SENSE_TRIP_SHIFT) 5277b43e6d7SStefan Binding #define CS42L42_TIP_SENSE_EN_SHIFT 5 5287b43e6d7SStefan Binding #define CS42L42_TIP_SENSE_EN_MASK (1 << CS42L42_TIP_SENSE_EN_SHIFT) 5297b43e6d7SStefan Binding #define CS42L42_AUTO_HSBIAS_HIZ_SHIFT 6 5307b43e6d7SStefan Binding #define CS42L42_AUTO_HSBIAS_HIZ_MASK (1 << CS42L42_AUTO_HSBIAS_HIZ_SHIFT) 5317b43e6d7SStefan Binding #define CS42L42_HSBIAS_SENSE_EN_SHIFT 7 5327b43e6d7SStefan Binding #define CS42L42_HSBIAS_SENSE_EN_MASK (1 << CS42L42_HSBIAS_SENSE_EN_SHIFT) 5337b43e6d7SStefan Binding 5347b43e6d7SStefan Binding #define CS42L42_WAKE_CTL (CS42L42_PAGE_1B + 0x71) 5357b43e6d7SStefan Binding #define CS42L42_WAKEB_CLEAR_SHIFT 0 5367b43e6d7SStefan Binding #define CS42L42_WAKEB_CLEAR_MASK (1 << CS42L42_WAKEB_CLEAR_SHIFT) 5377b43e6d7SStefan Binding #define CS42L42_WAKEB_MODE_SHIFT 5 5387b43e6d7SStefan Binding #define CS42L42_WAKEB_MODE_MASK (1 << CS42L42_WAKEB_MODE_SHIFT) 5397b43e6d7SStefan Binding #define CS42L42_M_HP_WAKE_SHIFT 6 5407b43e6d7SStefan Binding #define CS42L42_M_HP_WAKE_MASK (1 << CS42L42_M_HP_WAKE_SHIFT) 5417b43e6d7SStefan Binding #define CS42L42_M_MIC_WAKE_SHIFT 7 5427b43e6d7SStefan Binding #define CS42L42_M_MIC_WAKE_MASK (1 << CS42L42_M_MIC_WAKE_SHIFT) 5437b43e6d7SStefan Binding 5447b43e6d7SStefan Binding #define CS42L42_ADC_DISABLE_MUTE (CS42L42_PAGE_1B + 0x72) 5457b43e6d7SStefan Binding #define CS42L42_ADC_DISABLE_S0_MUTE_SHIFT 7 5467b43e6d7SStefan Binding #define CS42L42_ADC_DISABLE_S0_MUTE_MASK (1 << CS42L42_ADC_DISABLE_S0_MUTE_SHIFT) 5477b43e6d7SStefan Binding 5487b43e6d7SStefan Binding #define CS42L42_TIPSENSE_CTL (CS42L42_PAGE_1B + 0x73) 5497b43e6d7SStefan Binding #define CS42L42_TIP_SENSE_DEBOUNCE_SHIFT 0 5507b43e6d7SStefan Binding #define CS42L42_TIP_SENSE_DEBOUNCE_MASK (3 << CS42L42_TIP_SENSE_DEBOUNCE_SHIFT) 5517b43e6d7SStefan Binding #define CS42L42_TIP_SENSE_INV_SHIFT 5 5527b43e6d7SStefan Binding #define CS42L42_TIP_SENSE_INV_MASK (1 << CS42L42_TIP_SENSE_INV_SHIFT) 5537b43e6d7SStefan Binding #define CS42L42_TIP_SENSE_CTRL_SHIFT 6 5547b43e6d7SStefan Binding #define CS42L42_TIP_SENSE_CTRL_MASK (3 << CS42L42_TIP_SENSE_CTRL_SHIFT) 5557b43e6d7SStefan Binding 5567b43e6d7SStefan Binding /* 5577b43e6d7SStefan Binding * NOTE: DETECT_MODE must be 0 while both ADC_PDN=1 and HP_PDN=1. 5587b43e6d7SStefan Binding * Otherwise it will prevent FILT+ from charging properly. 5597b43e6d7SStefan Binding */ 5607b43e6d7SStefan Binding #define CS42L42_MISC_DET_CTL (CS42L42_PAGE_1B + 0x74) 5617b43e6d7SStefan Binding #define CS42L42_PDN_MIC_LVL_DET_SHIFT 0 5627b43e6d7SStefan Binding #define CS42L42_PDN_MIC_LVL_DET_MASK (1 << CS42L42_PDN_MIC_LVL_DET_SHIFT) 5637b43e6d7SStefan Binding #define CS42L42_HSBIAS_CTL_SHIFT 1 5647b43e6d7SStefan Binding #define CS42L42_HSBIAS_CTL_MASK (3 << CS42L42_HSBIAS_CTL_SHIFT) 5657b43e6d7SStefan Binding #define CS42L42_DETECT_MODE_SHIFT 3 5667b43e6d7SStefan Binding #define CS42L42_DETECT_MODE_MASK (3 << CS42L42_DETECT_MODE_SHIFT) 5677b43e6d7SStefan Binding 5687b43e6d7SStefan Binding #define CS42L42_MIC_DET_CTL1 (CS42L42_PAGE_1B + 0x75) 5697b43e6d7SStefan Binding #define CS42L42_HS_DET_LEVEL_SHIFT 0 5707b43e6d7SStefan Binding #define CS42L42_HS_DET_LEVEL_MASK (0x3F << CS42L42_HS_DET_LEVEL_SHIFT) 5717b43e6d7SStefan Binding #define CS42L42_EVENT_STAT_SEL_SHIFT 6 5727b43e6d7SStefan Binding #define CS42L42_EVENT_STAT_SEL_MASK (1 << CS42L42_EVENT_STAT_SEL_SHIFT) 5737b43e6d7SStefan Binding #define CS42L42_LATCH_TO_VP_SHIFT 7 5747b43e6d7SStefan Binding #define CS42L42_LATCH_TO_VP_MASK (1 << CS42L42_LATCH_TO_VP_SHIFT) 5757b43e6d7SStefan Binding 5767b43e6d7SStefan Binding #define CS42L42_MIC_DET_CTL2 (CS42L42_PAGE_1B + 0x76) 5777b43e6d7SStefan Binding #define CS42L42_DEBOUNCE_TIME_SHIFT 5 5787b43e6d7SStefan Binding #define CS42L42_DEBOUNCE_TIME_MASK (0x07 << CS42L42_DEBOUNCE_TIME_SHIFT) 5797b43e6d7SStefan Binding 5807b43e6d7SStefan Binding #define CS42L42_DET_STATUS1 (CS42L42_PAGE_1B + 0x77) 5817b43e6d7SStefan Binding #define CS42L42_HSBIAS_HIZ_MODE_SHIFT 6 5827b43e6d7SStefan Binding #define CS42L42_HSBIAS_HIZ_MODE_MASK (1 << CS42L42_HSBIAS_HIZ_MODE_SHIFT) 5837b43e6d7SStefan Binding #define CS42L42_TIP_SENSE_SHIFT 7 5847b43e6d7SStefan Binding #define CS42L42_TIP_SENSE_MASK (1 << CS42L42_TIP_SENSE_SHIFT) 5857b43e6d7SStefan Binding 5867b43e6d7SStefan Binding #define CS42L42_DET_STATUS2 (CS42L42_PAGE_1B + 0x78) 5877b43e6d7SStefan Binding #define CS42L42_SHORT_TRUE_SHIFT 0 5887b43e6d7SStefan Binding #define CS42L42_SHORT_TRUE_MASK (1 << CS42L42_SHORT_TRUE_SHIFT) 5897b43e6d7SStefan Binding #define CS42L42_HS_TRUE_SHIFT 1 5907b43e6d7SStefan Binding #define CS42L42_HS_TRUE_MASK (1 << CS42L42_HS_TRUE_SHIFT) 5917b43e6d7SStefan Binding 5927b43e6d7SStefan Binding #define CS42L42_DET_INT1_MASK (CS42L42_PAGE_1B + 0x79) 5937b43e6d7SStefan Binding #define CS42L42_TIP_SENSE_UNPLUG_SHIFT 5 5947b43e6d7SStefan Binding #define CS42L42_TIP_SENSE_UNPLUG_MASK (1 << CS42L42_TIP_SENSE_UNPLUG_SHIFT) 5957b43e6d7SStefan Binding #define CS42L42_TIP_SENSE_PLUG_SHIFT 6 5967b43e6d7SStefan Binding #define CS42L42_TIP_SENSE_PLUG_MASK (1 << CS42L42_TIP_SENSE_PLUG_SHIFT) 5977b43e6d7SStefan Binding #define CS42L42_HSBIAS_SENSE_SHIFT 7 5987b43e6d7SStefan Binding #define CS42L42_HSBIAS_SENSE_MASK (1 << CS42L42_HSBIAS_SENSE_SHIFT) 5997b43e6d7SStefan Binding #define CS42L42_DET_INT_VAL1_MASK (CS42L42_TIP_SENSE_UNPLUG_MASK | \ 6007b43e6d7SStefan Binding CS42L42_TIP_SENSE_PLUG_MASK | \ 6017b43e6d7SStefan Binding CS42L42_HSBIAS_SENSE_MASK) 6027b43e6d7SStefan Binding 6037b43e6d7SStefan Binding #define CS42L42_DET_INT2_MASK (CS42L42_PAGE_1B + 0x7A) 6047b43e6d7SStefan Binding #define CS42L42_M_SHORT_DET_SHIFT 0 6057b43e6d7SStefan Binding #define CS42L42_M_SHORT_DET_MASK (1 << CS42L42_M_SHORT_DET_SHIFT) 6067b43e6d7SStefan Binding #define CS42L42_M_SHORT_RLS_SHIFT 1 6077b43e6d7SStefan Binding #define CS42L42_M_SHORT_RLS_MASK (1 << CS42L42_M_SHORT_RLS_SHIFT) 6087b43e6d7SStefan Binding #define CS42L42_M_HSBIAS_HIZ_SHIFT 2 6097b43e6d7SStefan Binding #define CS42L42_M_HSBIAS_HIZ_MASK (1 << CS42L42_M_HSBIAS_HIZ_SHIFT) 6107b43e6d7SStefan Binding #define CS42L42_M_DETECT_FT_SHIFT 6 6117b43e6d7SStefan Binding #define CS42L42_M_DETECT_FT_MASK (1 << CS42L42_M_DETECT_FT_SHIFT) 6127b43e6d7SStefan Binding #define CS42L42_M_DETECT_TF_SHIFT 7 6137b43e6d7SStefan Binding #define CS42L42_M_DETECT_TF_MASK (1 << CS42L42_M_DETECT_TF_SHIFT) 6147b43e6d7SStefan Binding #define CS42L42_DET_INT_VAL2_MASK (CS42L42_M_SHORT_DET_MASK | \ 6157b43e6d7SStefan Binding CS42L42_M_SHORT_RLS_MASK | \ 6167b43e6d7SStefan Binding CS42L42_M_HSBIAS_HIZ_MASK | \ 6177b43e6d7SStefan Binding CS42L42_M_DETECT_FT_MASK | \ 6187b43e6d7SStefan Binding CS42L42_M_DETECT_TF_MASK) 6197b43e6d7SStefan Binding 6207b43e6d7SStefan Binding /* Page 0x1C Headset Bias Registers */ 6217b43e6d7SStefan Binding #define CS42L42_HS_BIAS_CTL (CS42L42_PAGE_1C + 0x03) 6227b43e6d7SStefan Binding #define CS42L42_HSBIAS_RAMP_SHIFT 0 6237b43e6d7SStefan Binding #define CS42L42_HSBIAS_RAMP_MASK (3 << CS42L42_HSBIAS_RAMP_SHIFT) 6247b43e6d7SStefan Binding #define CS42L42_HSBIAS_PD_SHIFT 4 6257b43e6d7SStefan Binding #define CS42L42_HSBIAS_PD_MASK (1 << CS42L42_HSBIAS_PD_SHIFT) 6267b43e6d7SStefan Binding #define CS42L42_HSBIAS_CAPLESS_SHIFT 7 6277b43e6d7SStefan Binding #define CS42L42_HSBIAS_CAPLESS_MASK (1 << CS42L42_HSBIAS_CAPLESS_SHIFT) 6287b43e6d7SStefan Binding 6297b43e6d7SStefan Binding /* Page 0x1D ADC Registers */ 6307b43e6d7SStefan Binding #define CS42L42_ADC_CTL (CS42L42_PAGE_1D + 0x01) 6317b43e6d7SStefan Binding #define CS42L42_ADC_NOTCH_DIS_SHIFT 5 6327b43e6d7SStefan Binding #define CS42L42_ADC_FORCE_WEAK_VCM_SHIFT 4 6337b43e6d7SStefan Binding #define CS42L42_ADC_INV_SHIFT 2 6347b43e6d7SStefan Binding #define CS42L42_ADC_DIG_BOOST_SHIFT 0 6357b43e6d7SStefan Binding 6367b43e6d7SStefan Binding #define CS42L42_ADC_VOLUME (CS42L42_PAGE_1D + 0x03) 6377b43e6d7SStefan Binding #define CS42L42_ADC_VOL_SHIFT 0 6387b43e6d7SStefan Binding 6397b43e6d7SStefan Binding #define CS42L42_ADC_WNF_HPF_CTL (CS42L42_PAGE_1D + 0x04) 6407b43e6d7SStefan Binding #define CS42L42_ADC_WNF_CF_SHIFT 4 6417b43e6d7SStefan Binding #define CS42L42_ADC_WNF_EN_SHIFT 3 6427b43e6d7SStefan Binding #define CS42L42_ADC_HPF_CF_SHIFT 1 6437b43e6d7SStefan Binding #define CS42L42_ADC_HPF_EN_SHIFT 0 6447b43e6d7SStefan Binding 6457b43e6d7SStefan Binding /* Page 0x1F DAC Registers */ 6467b43e6d7SStefan Binding #define CS42L42_DAC_CTL1 (CS42L42_PAGE_1F + 0x01) 6477b43e6d7SStefan Binding #define CS42L42_DACB_INV_SHIFT 1 6487b43e6d7SStefan Binding #define CS42L42_DACA_INV_SHIFT 0 6497b43e6d7SStefan Binding 6507b43e6d7SStefan Binding #define CS42L42_DAC_CTL2 (CS42L42_PAGE_1F + 0x06) 6517b43e6d7SStefan Binding #define CS42L42_HPOUT_PULLDOWN_SHIFT 4 6527b43e6d7SStefan Binding #define CS42L42_HPOUT_PULLDOWN_MASK (15 << CS42L42_HPOUT_PULLDOWN_SHIFT) 6537b43e6d7SStefan Binding #define CS42L42_HPOUT_LOAD_SHIFT 3 6547b43e6d7SStefan Binding #define CS42L42_HPOUT_LOAD_MASK (1 << CS42L42_HPOUT_LOAD_SHIFT) 6557b43e6d7SStefan Binding #define CS42L42_HPOUT_CLAMP_SHIFT 2 6567b43e6d7SStefan Binding #define CS42L42_HPOUT_CLAMP_MASK (1 << CS42L42_HPOUT_CLAMP_SHIFT) 6577b43e6d7SStefan Binding #define CS42L42_DAC_HPF_EN_SHIFT 1 6587b43e6d7SStefan Binding #define CS42L42_DAC_HPF_EN_MASK (1 << CS42L42_DAC_HPF_EN_SHIFT) 6597b43e6d7SStefan Binding #define CS42L42_DAC_MON_EN_SHIFT 0 6607b43e6d7SStefan Binding #define CS42L42_DAC_MON_EN_MASK (1 << CS42L42_DAC_MON_EN_SHIFT) 6617b43e6d7SStefan Binding 6627b43e6d7SStefan Binding /* Page 0x20 HP CTL Registers */ 6637b43e6d7SStefan Binding #define CS42L42_HP_CTL (CS42L42_PAGE_20 + 0x01) 6647b43e6d7SStefan Binding #define CS42L42_HP_ANA_BMUTE_SHIFT 3 6657b43e6d7SStefan Binding #define CS42L42_HP_ANA_BMUTE_MASK (1 << CS42L42_HP_ANA_BMUTE_SHIFT) 6667b43e6d7SStefan Binding #define CS42L42_HP_ANA_AMUTE_SHIFT 2 6677b43e6d7SStefan Binding #define CS42L42_HP_ANA_AMUTE_MASK (1 << CS42L42_HP_ANA_AMUTE_SHIFT) 6687b43e6d7SStefan Binding #define CS42L42_HP_FULL_SCALE_VOL_SHIFT 1 6697b43e6d7SStefan Binding #define CS42L42_HP_FULL_SCALE_VOL_MASK (1 << CS42L42_HP_FULL_SCALE_VOL_SHIFT) 6707b43e6d7SStefan Binding 6717b43e6d7SStefan Binding /* Page 0x21 Class H Registers */ 6727b43e6d7SStefan Binding #define CS42L42_CLASSH_CTL (CS42L42_PAGE_21 + 0x01) 6737b43e6d7SStefan Binding 6747b43e6d7SStefan Binding /* Page 0x23 Mixer Volume Registers */ 6757b43e6d7SStefan Binding #define CS42L42_MIXER_CHA_VOL (CS42L42_PAGE_23 + 0x01) 6767b43e6d7SStefan Binding #define CS42L42_MIXER_ADC_VOL (CS42L42_PAGE_23 + 0x02) 6777b43e6d7SStefan Binding 6787b43e6d7SStefan Binding #define CS42L42_MIXER_CHB_VOL (CS42L42_PAGE_23 + 0x03) 6797b43e6d7SStefan Binding #define CS42L42_MIXER_CH_VOL_SHIFT 0 6807b43e6d7SStefan Binding #define CS42L42_MIXER_CH_VOL_MASK (0x3f << CS42L42_MIXER_CH_VOL_SHIFT) 6817b43e6d7SStefan Binding 6827b43e6d7SStefan Binding /* Page 0x24 EQ Registers */ 6837b43e6d7SStefan Binding #define CS42L42_EQ_COEF_IN0 (CS42L42_PAGE_24 + 0x01) 6847b43e6d7SStefan Binding #define CS42L42_EQ_COEF_IN1 (CS42L42_PAGE_24 + 0x02) 6857b43e6d7SStefan Binding #define CS42L42_EQ_COEF_IN2 (CS42L42_PAGE_24 + 0x03) 6867b43e6d7SStefan Binding #define CS42L42_EQ_COEF_IN3 (CS42L42_PAGE_24 + 0x04) 6877b43e6d7SStefan Binding #define CS42L42_EQ_COEF_RW (CS42L42_PAGE_24 + 0x06) 6887b43e6d7SStefan Binding #define CS42L42_EQ_COEF_OUT0 (CS42L42_PAGE_24 + 0x07) 6897b43e6d7SStefan Binding #define CS42L42_EQ_COEF_OUT1 (CS42L42_PAGE_24 + 0x08) 6907b43e6d7SStefan Binding #define CS42L42_EQ_COEF_OUT2 (CS42L42_PAGE_24 + 0x09) 6917b43e6d7SStefan Binding #define CS42L42_EQ_COEF_OUT3 (CS42L42_PAGE_24 + 0x0A) 6927b43e6d7SStefan Binding #define CS42L42_EQ_INIT_STAT (CS42L42_PAGE_24 + 0x0B) 6937b43e6d7SStefan Binding #define CS42L42_EQ_START_FILT (CS42L42_PAGE_24 + 0x0C) 6947b43e6d7SStefan Binding #define CS42L42_EQ_MUTE_CTL (CS42L42_PAGE_24 + 0x0E) 6957b43e6d7SStefan Binding 6967b43e6d7SStefan Binding /* Page 0x25 Audio Port Registers */ 6977b43e6d7SStefan Binding #define CS42L42_SP_RX_CH_SEL (CS42L42_PAGE_25 + 0x01) 6987b43e6d7SStefan Binding #define CS42L42_SP_RX_CHB_SEL_SHIFT 2 6997b43e6d7SStefan Binding #define CS42L42_SP_RX_CHB_SEL_MASK (3 << CS42L42_SP_RX_CHB_SEL_SHIFT) 7007b43e6d7SStefan Binding 7017b43e6d7SStefan Binding #define CS42L42_SP_RX_ISOC_CTL (CS42L42_PAGE_25 + 0x02) 7027b43e6d7SStefan Binding #define CS42L42_SP_RX_RSYNC_SHIFT 6 7037b43e6d7SStefan Binding #define CS42L42_SP_RX_RSYNC_MASK (1 << CS42L42_SP_RX_RSYNC_SHIFT) 7047b43e6d7SStefan Binding #define CS42L42_SP_RX_NSB_POS_SHIFT 3 7057b43e6d7SStefan Binding #define CS42L42_SP_RX_NSB_POS_MASK (7 << CS42L42_SP_RX_NSB_POS_SHIFT) 7067b43e6d7SStefan Binding #define CS42L42_SP_RX_NFS_NSBB_SHIFT 2 7077b43e6d7SStefan Binding #define CS42L42_SP_RX_NFS_NSBB_MASK (1 << CS42L42_SP_RX_NFS_NSBB_SHIFT) 7087b43e6d7SStefan Binding #define CS42L42_SP_RX_ISOC_MODE_SHIFT 0 7097b43e6d7SStefan Binding #define CS42L42_SP_RX_ISOC_MODE_MASK (3 << CS42L42_SP_RX_ISOC_MODE_SHIFT) 7107b43e6d7SStefan Binding 7117b43e6d7SStefan Binding #define CS42L42_SP_RX_FS (CS42L42_PAGE_25 + 0x03) 7127b43e6d7SStefan Binding #define CS42l42_SPDIF_CH_SEL (CS42L42_PAGE_25 + 0x04) 7137b43e6d7SStefan Binding #define CS42L42_SP_TX_ISOC_CTL (CS42L42_PAGE_25 + 0x05) 7147b43e6d7SStefan Binding #define CS42L42_SP_TX_FS (CS42L42_PAGE_25 + 0x06) 7157b43e6d7SStefan Binding #define CS42L42_SPDIF_SW_CTL1 (CS42L42_PAGE_25 + 0x07) 7167b43e6d7SStefan Binding 7177b43e6d7SStefan Binding /* Page 0x26 SRC Registers */ 7187b43e6d7SStefan Binding #define CS42L42_SRC_SDIN_FS (CS42L42_PAGE_26 + 0x01) 7197b43e6d7SStefan Binding #define CS42L42_SRC_SDIN_FS_SHIFT 0 7207b43e6d7SStefan Binding #define CS42L42_SRC_SDIN_FS_MASK (0x1f << CS42L42_SRC_SDIN_FS_SHIFT) 7217b43e6d7SStefan Binding 7227b43e6d7SStefan Binding #define CS42L42_SRC_SDOUT_FS (CS42L42_PAGE_26 + 0x09) 7237b43e6d7SStefan Binding 724*b558c6fdSRichard Fitzgerald /* Page 0x27 DMA */ 725*b558c6fdSRichard Fitzgerald #define CS42L42_SOFT_RESET_REBOOT (CS42L42_PAGE_27 + 0x01) 726*b558c6fdSRichard Fitzgerald #define CS42L42_SFT_RST_REBOOT_MASK BIT(1) 727*b558c6fdSRichard Fitzgerald 7287b43e6d7SStefan Binding /* Page 0x28 S/PDIF Registers */ 7297b43e6d7SStefan Binding #define CS42L42_SPDIF_CTL1 (CS42L42_PAGE_28 + 0x01) 7307b43e6d7SStefan Binding #define CS42L42_SPDIF_CTL2 (CS42L42_PAGE_28 + 0x02) 7317b43e6d7SStefan Binding #define CS42L42_SPDIF_CTL3 (CS42L42_PAGE_28 + 0x03) 7327b43e6d7SStefan Binding #define CS42L42_SPDIF_CTL4 (CS42L42_PAGE_28 + 0x04) 7337b43e6d7SStefan Binding 7347b43e6d7SStefan Binding /* Page 0x29 Serial Port TX Registers */ 7357b43e6d7SStefan Binding #define CS42L42_ASP_TX_SZ_EN (CS42L42_PAGE_29 + 0x01) 7367b43e6d7SStefan Binding #define CS42L42_ASP_TX_EN_SHIFT 0 7377b43e6d7SStefan Binding #define CS42L42_ASP_TX_CH_EN (CS42L42_PAGE_29 + 0x02) 7387b43e6d7SStefan Binding #define CS42L42_ASP_TX0_CH2_SHIFT 1 7397b43e6d7SStefan Binding #define CS42L42_ASP_TX0_CH1_SHIFT 0 7407b43e6d7SStefan Binding 7417b43e6d7SStefan Binding #define CS42L42_ASP_TX_CH_AP_RES (CS42L42_PAGE_29 + 0x03) 7427b43e6d7SStefan Binding #define CS42L42_ASP_TX_CH1_AP_SHIFT 7 7437b43e6d7SStefan Binding #define CS42L42_ASP_TX_CH1_AP_MASK (1 << CS42L42_ASP_TX_CH1_AP_SHIFT) 7447b43e6d7SStefan Binding #define CS42L42_ASP_TX_CH2_AP_SHIFT 6 7457b43e6d7SStefan Binding #define CS42L42_ASP_TX_CH2_AP_MASK (1 << CS42L42_ASP_TX_CH2_AP_SHIFT) 7467b43e6d7SStefan Binding #define CS42L42_ASP_TX_CH2_RES_SHIFT 2 7477b43e6d7SStefan Binding #define CS42L42_ASP_TX_CH2_RES_MASK (3 << CS42L42_ASP_TX_CH2_RES_SHIFT) 7487b43e6d7SStefan Binding #define CS42L42_ASP_TX_CH1_RES_SHIFT 0 7497b43e6d7SStefan Binding #define CS42L42_ASP_TX_CH1_RES_MASK (3 << CS42L42_ASP_TX_CH1_RES_SHIFT) 7507b43e6d7SStefan Binding #define CS42L42_ASP_TX_CH1_BIT_MSB (CS42L42_PAGE_29 + 0x04) 7517b43e6d7SStefan Binding #define CS42L42_ASP_TX_CH1_BIT_LSB (CS42L42_PAGE_29 + 0x05) 7527b43e6d7SStefan Binding #define CS42L42_ASP_TX_HIZ_DLY_CFG (CS42L42_PAGE_29 + 0x06) 7537b43e6d7SStefan Binding #define CS42L42_ASP_TX_CH2_BIT_MSB (CS42L42_PAGE_29 + 0x0A) 7547b43e6d7SStefan Binding #define CS42L42_ASP_TX_CH2_BIT_LSB (CS42L42_PAGE_29 + 0x0B) 7557b43e6d7SStefan Binding 7567b43e6d7SStefan Binding /* Page 0x2A Serial Port RX Registers */ 7577b43e6d7SStefan Binding #define CS42L42_ASP_RX_DAI0_EN (CS42L42_PAGE_2A + 0x01) 7587b43e6d7SStefan Binding #define CS42L42_ASP_RX0_CH_EN_SHIFT 2 7597b43e6d7SStefan Binding #define CS42L42_ASP_RX0_CH_EN_MASK (0xf << CS42L42_ASP_RX0_CH_EN_SHIFT) 7607b43e6d7SStefan Binding #define CS42L42_ASP_RX0_CH1_SHIFT 2 7617b43e6d7SStefan Binding #define CS42L42_ASP_RX0_CH2_SHIFT 3 7627b43e6d7SStefan Binding #define CS42L42_ASP_RX0_CH3_SHIFT 4 7637b43e6d7SStefan Binding #define CS42L42_ASP_RX0_CH4_SHIFT 5 7647b43e6d7SStefan Binding 7657b43e6d7SStefan Binding #define CS42L42_ASP_RX_DAI0_CH1_AP_RES (CS42L42_PAGE_2A + 0x02) 7667b43e6d7SStefan Binding #define CS42L42_ASP_RX_DAI0_CH1_BIT_MSB (CS42L42_PAGE_2A + 0x03) 7677b43e6d7SStefan Binding #define CS42L42_ASP_RX_DAI0_CH1_BIT_LSB (CS42L42_PAGE_2A + 0x04) 7687b43e6d7SStefan Binding #define CS42L42_ASP_RX_DAI0_CH2_AP_RES (CS42L42_PAGE_2A + 0x05) 7697b43e6d7SStefan Binding #define CS42L42_ASP_RX_DAI0_CH2_BIT_MSB (CS42L42_PAGE_2A + 0x06) 7707b43e6d7SStefan Binding #define CS42L42_ASP_RX_DAI0_CH2_BIT_LSB (CS42L42_PAGE_2A + 0x07) 7717b43e6d7SStefan Binding #define CS42L42_ASP_RX_DAI0_CH3_AP_RES (CS42L42_PAGE_2A + 0x08) 7727b43e6d7SStefan Binding #define CS42L42_ASP_RX_DAI0_CH3_BIT_MSB (CS42L42_PAGE_2A + 0x09) 7737b43e6d7SStefan Binding #define CS42L42_ASP_RX_DAI0_CH3_BIT_LSB (CS42L42_PAGE_2A + 0x0A) 7747b43e6d7SStefan Binding #define CS42L42_ASP_RX_DAI0_CH4_AP_RES (CS42L42_PAGE_2A + 0x0B) 7757b43e6d7SStefan Binding #define CS42L42_ASP_RX_DAI0_CH4_BIT_MSB (CS42L42_PAGE_2A + 0x0C) 7767b43e6d7SStefan Binding #define CS42L42_ASP_RX_DAI0_CH4_BIT_LSB (CS42L42_PAGE_2A + 0x0D) 7777b43e6d7SStefan Binding #define CS42L42_ASP_RX_DAI1_CH1_AP_RES (CS42L42_PAGE_2A + 0x0E) 7787b43e6d7SStefan Binding #define CS42L42_ASP_RX_DAI1_CH1_BIT_MSB (CS42L42_PAGE_2A + 0x0F) 7797b43e6d7SStefan Binding #define CS42L42_ASP_RX_DAI1_CH1_BIT_LSB (CS42L42_PAGE_2A + 0x10) 7807b43e6d7SStefan Binding #define CS42L42_ASP_RX_DAI1_CH2_AP_RES (CS42L42_PAGE_2A + 0x11) 7817b43e6d7SStefan Binding #define CS42L42_ASP_RX_DAI1_CH2_BIT_MSB (CS42L42_PAGE_2A + 0x12) 7827b43e6d7SStefan Binding #define CS42L42_ASP_RX_DAI1_CH2_BIT_LSB (CS42L42_PAGE_2A + 0x13) 7837b43e6d7SStefan Binding 7847b43e6d7SStefan Binding #define CS42L42_ASP_RX_CH_AP_SHIFT 6 7857b43e6d7SStefan Binding #define CS42L42_ASP_RX_CH_AP_MASK (1 << CS42L42_ASP_RX_CH_AP_SHIFT) 7867b43e6d7SStefan Binding #define CS42L42_ASP_RX_CH_AP_LOW 0 7877b43e6d7SStefan Binding #define CS42L42_ASP_RX_CH_AP_HI 1 7887b43e6d7SStefan Binding #define CS42L42_ASP_RX_CH_RES_SHIFT 0 7897b43e6d7SStefan Binding #define CS42L42_ASP_RX_CH_RES_MASK (3 << CS42L42_ASP_RX_CH_RES_SHIFT) 7907b43e6d7SStefan Binding #define CS42L42_ASP_RX_CH_RES_32 3 7917b43e6d7SStefan Binding #define CS42L42_ASP_RX_CH_RES_16 1 7927b43e6d7SStefan Binding #define CS42L42_ASP_RX_CH_BIT_ST_SHIFT 0 7937b43e6d7SStefan Binding #define CS42L42_ASP_RX_CH_BIT_ST_MASK (0xff << CS42L42_ASP_RX_CH_BIT_ST_SHIFT) 7947b43e6d7SStefan Binding 7957b43e6d7SStefan Binding /* Page 0x30 ID Registers */ 7967b43e6d7SStefan Binding #define CS42L42_SUB_REVID (CS42L42_PAGE_30 + 0x14) 7977b43e6d7SStefan Binding #define CS42L42_MAX_REGISTER (CS42L42_PAGE_30 + 0x14) 7987b43e6d7SStefan Binding 7997b43e6d7SStefan Binding /* Defines for fracturing values spread across multiple registers */ 8007b43e6d7SStefan Binding #define CS42L42_FRAC0_VAL(val) ((val) & 0x0000ff) 8017b43e6d7SStefan Binding #define CS42L42_FRAC1_VAL(val) (((val) & 0x00ff00) >> 8) 8027b43e6d7SStefan Binding #define CS42L42_FRAC2_VAL(val) (((val) & 0xff0000) >> 16) 8037b43e6d7SStefan Binding 8047b43e6d7SStefan Binding #define CS42L42_NUM_SUPPLIES 5 8057b43e6d7SStefan Binding #define CS42L42_BOOT_TIME_US 3000 8067b43e6d7SStefan Binding #define CS42L42_PLL_DIVOUT_TIME_US 800 8077b43e6d7SStefan Binding #define CS42L42_CLOCK_SWITCH_DELAY_US 150 8087b43e6d7SStefan Binding #define CS42L42_PLL_LOCK_POLL_US 250 8097b43e6d7SStefan Binding #define CS42L42_PLL_LOCK_TIMEOUT_US 1250 8107b43e6d7SStefan Binding #define CS42L42_HP_ADC_EN_TIME_US 20000 8117b43e6d7SStefan Binding #define CS42L42_PDN_DONE_POLL_US 1000 8127b43e6d7SStefan Binding #define CS42L42_PDN_DONE_TIMEOUT_US 200000 8137b43e6d7SStefan Binding #define CS42L42_PDN_DONE_TIME_MS 100 8147b43e6d7SStefan Binding #define CS42L42_FILT_DISCHARGE_TIME_MS 46 8157b43e6d7SStefan Binding 8167b43e6d7SStefan Binding #endif /* __CS42L42_H */ 817