/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (C) The Asahi Linux Contributors
*
* Based on sound/soc/codecs/cs42l42.h
*
* Copyright 2016 Cirrus Logic, Inc.
*/
#ifndef __CS42L84_H__
#define __CS42L84_H__
#include <linux/bits.h>
#define CS42L84_CHIP_ID 0 x42a84
#define CS42L84_DEVID 0 x0000
#define CS42L84_REVID 0 x73fe
#define CS42L84_FRZ_CTL 0 x0006
#define CS42L84_FRZ_CTL_ENGAGE BIT(0 )
#define CS42L84_TSRS_PLUG_INT_STATUS 0 x0400
#define CS42L84_TSRS_PLUG_INT_MASK 0 x0418
#define CS42L84_RS_PLUG_SHIFT 0
#define CS42L84_RS_PLUG BIT(0 )
#define CS42L84_RS_UNPLUG BIT(1 )
#define CS42L84_TS_PLUG_SHIFT 2
#define CS42L84_TS_PLUG BIT(2 )
#define CS42L84_TS_UNPLUG BIT(3 )
#define CS42L84_TSRS_PLUG_VAL_MASK GENMASK(3 , 0 )
#define CS42L84_PLL_LOCK_STATUS 0 x040e // probably bit 0x10
#define CS42L84_PLL_LOCK_STATUS_LOCKED BIT(4 )
#define CS42L84_PLL_LOCK_STATUS_ERROR BIT(5 )
#define CS42L84_PLUG 3
#define CS42L84_UNPLUG 0
#define CS42L84_TRANS 1
#define CS42L84_CCM_CTL1 0 x0600
#define CS42L84_CCM_CTL1_MCLK_SRC GENMASK(1 , 0 )
#define CS42L84_CCM_CTL1_MCLK_SRC_RCO 0
#define CS42L84_CCM_CTL1_MCLK_SRC_MCLK 1
#define CS42L84_CCM_CTL1_MCLK_SRC_BCLK 2
#define CS42L84_CCM_CTL1_MCLK_SRC_PLL 3
#define CS42L84_CCM_CTL1_MCLK_FREQ GENMASK(3 , 2 )
#define CS42L84_CCM_CTL1_MCLK_F_12MHZ 0 b00
#define CS42L84_CCM_CTL1_MCLK_F_24MHZ 0 b01
#define CS42L84_CCM_CTL1_MCLK_F_12_288KHZ 0 b10
#define CS42L84_CCM_CTL1_MCLK_F_24_576KHZ 0 b11
#define CS42L84_CCM_CTL1_RCO \
(FIELD_PREP(CS42L84_CCM_CTL1_MCLK_SRC, CS42L84_CCM_CTL1_MCLK_SRC_RCO) \
| FIELD_PREP(CS42L84_CCM_CTL1_MCLK_FREQ, CS42L84_CCM_CTL1_MCLK_F_12MHZ))
#define CS42L84_CCM_SAMP_RATE 0 x0601
#define CS42L84_CCM_SAMP_RATE_RATE_48KHZ 4
#define CS42L84_CCM_SAMP_RATE_RATE_96KHZ 5
#define CS42L84_CCM_SAMP_RATE_RATE_192KHZ 6
#define CS42L84_CCM_SAMP_RATE_RATE_44K1HZ 12
#define CS42L84_CCM_SAMP_RATE_RATE_88K2HZ 13
#define CS42L84_CCM_SAMP_RATE_RATE_176K4HZ 14
#define CS42L84_CCM_CTL3 0 x0602
#define CS42L84_CCM_CTL3_REFCLK_DIV GENMASK(2 , 1 )
#define CS42L84_CCM_CTL4 0 x0603
#define CS42L84_CCM_CTL4_REFCLK_EN BIT(0 )
#define CS42L84_CCM_ASP_CLK_CTRL 0 x0608
#define CS42L84_PLL_CTL1 0 x0800
#define CS42L84_PLL_CTL1_EN BIT(0 )
#define CS42L84_PLL_CTL1_MODE GENMASK(2 , 1 )
#define CS42L84_PLL_DIV_FRAC0 0 x0804
#define CS42L84_PLL_DIV_FRAC1 0 x0805
#define CS42L84_PLL_DIV_FRAC2 0 x0806
#define CS42L84_PLL_DIV_INT 0 x0807
#define CS42L84_PLL_DIVOUT 0 x0808
#define CS42L84_RING_SENSE_CTL 0 x1282
#define CS42L84_RING_SENSE_CTL_INV BIT(7 )
#define CS42L84_RING_SENSE_CTL_UNK1 BIT(6 )
#define CS42L84_RING_SENSE_CTL_FALLTIME GENMASK(5 , 3 )
#define CS42L84_RING_SENSE_CTL_RISETIME GENMASK(2 , 0 )
#define CS42L84_TIP_SENSE_CTL 0 x1283
#define CS42L84_TIP_SENSE_CTL_INV BIT(7 )
#define CS42L84_TIP_SENSE_CTL_FALLTIME GENMASK(5 , 3 )
#define CS42L84_TIP_SENSE_CTL_RISETIME GENMASK(2 , 0 )
#define CS42L84_TSRS_PLUG_STATUS 0 x1288
#define CS42L84_TIP_SENSE_CTL2 0 x1473
#define CS42L84_TIP_SENSE_CTL2_MODE GENMASK(7 , 6 )
#define CS42L84_TIP_SENSE_CTL2_MODE_DISABLED 0 b00
#define CS42L84_TIP_SENSE_CTL2_MODE_DIG_INPUT 0 b01
#define CS42L84_TIP_SENSE_CTL2_MODE_SHORT_DET 0 b11
#define CS42L84_TIP_SENSE_CTL2_INV BIT(5 )
#define CS42L84_MISC_DET_CTL 0 x1474
#define CS42L84_MISC_DET_CTL_DETECT_MODE GENMASK(4 , 3 )
#define CS42L84_MISC_DET_CTL_HSBIAS_CTL GENMASK(2 , 1 )
#define CS42L84_MISC_DET_CTL_PDN_MIC_LVL_DET BIT(0 )
#define CS42L84_MIC_DET_CTL1 0 x1475
#define CS42L84_MIC_DET_CTL1_HS_DET_LEVEL GENMASK(5 , 0 )
#define CS42L84_MIC_DET_CTL4 0 x1477
#define CS42L84_MIC_DET_CTL4_LATCH_TO_VP BIT(1 )
#define CS42L84_HS_DET_STATUS2 0 x147d
#define CS42L84_MSM_BLOCK_EN1 0 x1800
#define CS42L84_MSM_BLOCK_EN2 0 x1801
#define CS42L84_MSM_BLOCK_EN2_ASP_SHIFT 6
#define CS42L84_MSM_BLOCK_EN2_BUS_SHIFT 5
#define CS42L84_MSM_BLOCK_EN2_DAC_SHIFT 4
#define CS42L84_MSM_BLOCK_EN2_ADC_SHIFT 3
#define CS42L84_MSM_BLOCK_EN3 0 x1802
#define CS42L84_MSM_BLOCK_EN3_TR_SENSE BIT(3 )
#define CS42L84_HS_DET_CTL2 0 x1811
#define CS42L84_HS_DET_CTL2_CTL GENMASK(7 , 6 )
#define CS42L84_HS_DET_CTL2_SET GENMASK(5 , 4 )
#define CS42L84_HS_DET_CTL2_REF BIT(3 )
#define CS42L84_HS_DET_CTL2_AUTO_TIME GENMASK(1 , 0 )
#define CS42L84_HS_SWITCH_CTL 0 x1812
#define CS42L84_HS_SWITCH_CTL_REF_HS3 BIT(7 )
#define CS42L84_HS_SWITCH_CTL_REF_HS4 BIT(6 )
#define CS42L84_HS_SWITCH_CTL_HSB_FILT_HS3 BIT(5 )
#define CS42L84_HS_SWITCH_CTL_HSB_FILT_HS4 BIT(4 )
#define CS42L84_HS_SWITCH_CTL_HSB_HS3 BIT(3 )
#define CS42L84_HS_SWITCH_CTL_HSB_HS4 BIT(2 )
#define CS42L84_HS_SWITCH_CTL_GNDHS_HS3 BIT(1 )
#define CS42L84_HS_SWITCH_CTL_GNDHS_HS4 BIT(0 )
#define CS42L84_HS_CLAMP_DISABLE 0 x1813
#define CS42L84_ADC_CTL1 0 x2000
#define CS42L84_ADC_CTL1_PREAMP_GAIN_SHIFT 6
#define CS42L84_ADC_CTL1_PGA_GAIN_SHIFT 0
#define CS42L84_ADC_CTL4 0 x2003
#define CS42L84_ADC_CTL4_WNF_CF_SHIFT 4
#define CS42L84_ADC_CTL4_WNF_EN_SHIFT 3
#define CS42L84_ADC_CTL4_HPF_CF_SHIFT 1
#define CS42L84_ADC_CTL4_HPF_EN_SHIFT 0
#define CS42L84_DAC_CTL1 0 x3000
#define CS42L84_DAC_CTL1_UNMUTE BIT(0 )
//#define CS42L84_DAC_CTL1_DACB_INV_SHIFT 1
//#define CS42L84_DAC_CTL1_DACA_INV_SHIFT 0
#define CS42L84_DAC_CTL2 0 x3001
#define CS42L84_DAC_CHA_VOL_LSB 0 x3004
#define CS42L84_DAC_CHA_VOL_MSB 0 x3005
#define CS42L84_DAC_CHB_VOL_LSB 0 x3006
#define CS42L84_DAC_CHB_VOL_MSB 0 x3007
#define CS42L84_HP_VOL_CTL 0 x3020
#define CS42L84_HP_VOL_CTL_ZERO_CROSS BIT(1 )
#define CS42L84_HP_VOL_CTL_SOFT BIT(0 )
#define CS42L84_SRC_ASP_RX_CH1 0 b1101
#define CS42L84_SRC_ASP_RX_CH2 0 b1110
#define CS42L84_BUS_ASP_TX_SRC 0 x4000
#define CS42L84_BUS_ASP_TX_SRC_CH1_SHIFT 0
#define CS42L84_BUS_DAC_SRC 0 x4001
#define CS42L84_BUS_DAC_SRC_DACA_SHIFT 0
#define CS42L84_BUS_DAC_SRC_DACB_SHIFT 4
#define CS42L84_ASP_CTL 0 x5000
#define CS42L84_ASP_CTL_BCLK_EN_SHIFT 1
#define CS42L84_ASP_CTL_TDM_MODE BIT(2 )
#define CS42L84_ASP_FSYNC_CTL2 0 x5010
#define CS42L84_ASP_FSYNC_CTL2_BCLK_PERIOD_LO GENMASK(7 , 1 )
#define CS42L84_ASP_FSYNC_CTL3 0 x5011
#define CS42L84_ASP_FSYNC_CTL3_BCLK_PERIOD_HI GENMASK(4 , 0 )
#define CS42L84_ASP_DATA_CTL 0 x5018
#define CS42L84_ASP_RX_EN 0 x5020
#define CS42L84_ASP_RX_EN_CH1_SHIFT 0
#define CS42L84_ASP_RX_EN_CH2_SHIFT 1
#define CS42L84_ASP_TX_EN 0 x5024
#define CS42L84_ASP_TX_EN_CH1_SHIFT 0
#define CS42L84_ASP_RX_CH1_CTL1 0 x5028
#define CS42L84_ASP_RX_CH1_CTL2 0 x5029
#define CS42L84_ASP_RX_CH1_WIDTH 0 x502a
#define CS42L84_ASP_RX_CH2_CTL1 0 x502c
#define CS42L84_ASP_RX_CH2_CTL2 0 x502d
#define CS42L84_ASP_RX_CH2_WIDTH 0 x502e
#define CS42L84_ASP_RX_CHx_CTL1_EDGE BIT(0 )
#define CS42L84_ASP_RX_CHx_CTL1_SLOT_START_LSB GENMASK(7 , 1 )
#define CS42L84_ASP_RX_CHx_CTL2_SLOT_START_MSB GENMASK(2 , 0 )
#define CS42L84_ASP_TX_CH1_CTL1 0 x5068
#define CS42L84_ASP_TX_CH1_CTL2 0 x5069
#define CS42L84_ASP_TX_CH1_WIDTH 0 x506a
#define CS42L84_ASP_TX_CH2_CTL1 0 x506c
#define CS42L84_ASP_TX_CH2_CTL2 0 x506d
#define CS42L84_ASP_TX_CH2_WIDTH 0 x506e
#define CS42L84_DEBOUNCE_TIME_125MS 0 b001
#define CS42L84_DEBOUNCE_TIME_500MS 0 b011
#define CS42L84_BOOT_TIME_US 3000
#define CS42L84_CLOCK_SWITCH_DELAY_US 150
#define CS42L84_PLL_LOCK_POLL_US 250
#define CS42L84_PLL_LOCK_TIMEOUT_US 1250
#endif /* __CS42L84_H__ */
Messung V0.5 in Prozent C=96 H=93 G=94
¤ Dauer der Verarbeitung: 0.8 Sekunden
(vorverarbeitet am 2026-06-08)
¤
*© Formatika GbR, Deutschland