Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/sound/soc/codecs/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 9 kB image not shown  

Quelle  tlv320aic31xx.h   Sprache: C

 
// SPDX-License-Identifier: GPL-2.0
/*
 * ALSA SoC TLV320AIC31xx CODEC Driver Definitions
 *
 * Copyright (C) 2014-2017 Texas Instruments Incorporated - https://www.ti.com/
 */


#ifndef _TLV320AIC31XX_H
#define _TLV320AIC31XX_H

#define AIC31XX_RATES SNDRV_PCM_RATE_8000_192000

#define AIC31XX_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | \
    SNDRV_PCM_FMTBIT_S20_3LE | \
    SNDRV_PCM_FMTBIT_S24_3LE | \
    SNDRV_PCM_FMTBIT_S24_LE | \
    SNDRV_PCM_FMTBIT_S32_LE)

#define AIC31XX_STEREO_CLASS_D_BIT BIT(1)
#define AIC31XX_MINIDSP_BIT  BIT(2)
#define DAC31XX_BIT   BIT(3)

#define AIC31XX_JACK_MASK (SND_JACK_HEADPHONE | \
      SND_JACK_HEADSET | \
      SND_JACK_BTN_0)

enum aic31xx_type {
 AIC3100 = 0,
 AIC3110 = AIC31XX_STEREO_CLASS_D_BIT,
 AIC3120 = AIC31XX_MINIDSP_BIT,
 AIC3111 = AIC31XX_STEREO_CLASS_D_BIT | AIC31XX_MINIDSP_BIT,
 DAC3100 = DAC31XX_BIT,
 DAC3101 = DAC31XX_BIT | AIC31XX_STEREO_CLASS_D_BIT,
};

struct aic31xx_pdata {
 enum aic31xx_type codec_type;
 unsigned int gpio_reset;
 int micbias_vg;
};

#define AIC31XX_REG(page, reg) ((page * 128) + reg)

#define AIC31XX_PAGECTL  AIC31XX_REG(0, 0) /* Page Control Register */

/* Page 0 Registers */
#define AIC31XX_RESET  AIC31XX_REG(0, 1) /* Software reset register */
#define AIC31XX_OT_FLAG  AIC31XX_REG(0, 3) /* OT FLAG register */
#define AIC31XX_CLKMUX  AIC31XX_REG(0, 4) /* Clock clock Gen muxing, Multiplexers*/
#define AIC31XX_PLLPR  AIC31XX_REG(0, 5) /* PLL P and R-VAL register */
#define AIC31XX_PLLJ  AIC31XX_REG(0, 6) /* PLL J-VAL register */
#define AIC31XX_PLLDMSB  AIC31XX_REG(0, 7) /* PLL D-VAL MSB register */
#define AIC31XX_PLLDLSB  AIC31XX_REG(0, 8) /* PLL D-VAL LSB register */
#define AIC31XX_NDAC  AIC31XX_REG(0, 11) /* DAC NDAC_VAL register*/
#define AIC31XX_MDAC  AIC31XX_REG(0, 12) /* DAC MDAC_VAL register */
#define AIC31XX_DOSRMSB  AIC31XX_REG(0, 13) /* DAC OSR setting register 1, MSB value */
#define AIC31XX_DOSRLSB  AIC31XX_REG(0, 14) /* DAC OSR setting register 2, LSB value */
#define AIC31XX_MINI_DSP_INPOL AIC31XX_REG(0, 16)
#define AIC31XX_NADC  AIC31XX_REG(0, 18) /* Clock setting register 8, PLL */
#define AIC31XX_MADC  AIC31XX_REG(0, 19) /* Clock setting register 9, PLL */
#define AIC31XX_AOSR  AIC31XX_REG(0, 20) /* ADC Oversampling (AOSR) Register */
#define AIC31XX_CLKOUTMUX AIC31XX_REG(0, 25) /* Clock setting register 9, Multiplexers */
#define AIC31XX_CLKOUTMVAL AIC31XX_REG(0, 26) /* Clock setting register 10, CLOCKOUT M divider value */
#define AIC31XX_IFACE1  AIC31XX_REG(0, 27) /* Audio Interface Setting Register 1 */
#define AIC31XX_DATA_OFFSET AIC31XX_REG(0, 28) /* Audio Data Slot Offset Programming */
#define AIC31XX_IFACE2  AIC31XX_REG(0, 29) /* Audio Interface Setting Register 2 */
#define AIC31XX_BCLKN  AIC31XX_REG(0, 30) /* Clock setting register 11, BCLK N Divider */
#define AIC31XX_IFACESEC1 AIC31XX_REG(0, 31) /* Audio Interface Setting Register 3, Secondary Audio Interface */
#define AIC31XX_IFACESEC2 AIC31XX_REG(0, 32) /* Audio Interface Setting Register 4 */
#define AIC31XX_IFACESEC3 AIC31XX_REG(0, 33) /* Audio Interface Setting Register 5 */
#define AIC31XX_I2C  AIC31XX_REG(0, 34) /* I2C Bus Condition */
#define AIC31XX_ADCFLAG  AIC31XX_REG(0, 36) /* ADC FLAG */
#define AIC31XX_DACFLAG1 AIC31XX_REG(0, 37) /* DAC Flag Registers */
#define AIC31XX_DACFLAG2 AIC31XX_REG(0, 38)
#define AIC31XX_OFFLAG  AIC31XX_REG(0, 39) /* Sticky Interrupt flag (overflow) */
#define AIC31XX_INTRDACFLAG AIC31XX_REG(0, 44) /* Sticy DAC Interrupt flags */
#define AIC31XX_INTRADCFLAG AIC31XX_REG(0, 45) /* Sticy ADC Interrupt flags */
#define AIC31XX_INTRDACFLAG2 AIC31XX_REG(0, 46) /* DAC Interrupt flags 2 */
#define AIC31XX_INTRADCFLAG2 AIC31XX_REG(0, 47) /* ADC Interrupt flags 2 */
#define AIC31XX_INT1CTRL AIC31XX_REG(0, 48) /* INT1 interrupt control */
#define AIC31XX_INT2CTRL AIC31XX_REG(0, 49) /* INT2 interrupt control */
#define AIC31XX_GPIO1  AIC31XX_REG(0, 51) /* GPIO1 control */
#define AIC31XX_DACPRB  AIC31XX_REG(0, 60)
#define AIC31XX_ADCPRB  AIC31XX_REG(0, 61) /* ADC Instruction Set Register */
#define AIC31XX_DACSETUP AIC31XX_REG(0, 63) /* DAC channel setup register */
#define AIC31XX_DACMUTE  AIC31XX_REG(0, 64) /* DAC Mute and volume control register */
#define AIC31XX_LDACVOL  AIC31XX_REG(0, 65) /* Left DAC channel digital volume control */
#define AIC31XX_RDACVOL  AIC31XX_REG(0, 66) /* Right DAC channel digital volume control */
#define AIC31XX_HSDETECT AIC31XX_REG(0, 67) /* Headset detection */
#define AIC31XX_ADCSETUP AIC31XX_REG(0, 81) /* ADC Digital Mic */
#define AIC31XX_ADCFGA  AIC31XX_REG(0, 82) /* ADC Digital Volume Control Fine Adjust */
#define AIC31XX_ADCVOL  AIC31XX_REG(0, 83) /* ADC Digital Volume Control Coarse Adjust */

/* Page 1 Registers */
#define AIC31XX_HPDRIVER AIC31XX_REG(1, 31) /* Headphone drivers */
#define AIC31XX_SPKAMP  AIC31XX_REG(1, 32) /* Class-D Speakear Amplifier */
#define AIC31XX_HPPOP  AIC31XX_REG(1, 33) /* HP Output Drivers POP Removal Settings */
#define AIC31XX_SPPGARAMP AIC31XX_REG(1, 34) /* Output Driver PGA Ramp-Down Period Control */
#define AIC31XX_DACMIXERROUTE AIC31XX_REG(1, 35) /* DAC_L and DAC_R Output Mixer Routing */
#define AIC31XX_LANALOGHPL AIC31XX_REG(1, 36) /* Left Analog Vol to HPL */
#define AIC31XX_RANALOGHPR AIC31XX_REG(1, 37) /* Right Analog Vol to HPR */
#define AIC31XX_LANALOGSPL AIC31XX_REG(1, 38) /* Left Analog Vol to SPL */
#define AIC31XX_RANALOGSPR AIC31XX_REG(1, 39) /* Right Analog Vol to SPR */
#define AIC31XX_HPLGAIN  AIC31XX_REG(1, 40) /* HPL Driver */
#define AIC31XX_HPRGAIN  AIC31XX_REG(1, 41) /* HPR Driver */
#define AIC31XX_SPLGAIN  AIC31XX_REG(1, 42) /* SPL Driver */
#define AIC31XX_SPRGAIN  AIC31XX_REG(1, 43) /* SPR Driver */
#define AIC31XX_HPCONTROL AIC31XX_REG(1, 44) /* HP Driver Control */
#define AIC31XX_MICBIAS  AIC31XX_REG(1, 46) /* MIC Bias Control */
#define AIC31XX_MICPGA  AIC31XX_REG(1, 47) /* MIC PGA*/
#define AIC31XX_MICPGAPI AIC31XX_REG(1, 48) /* Delta-Sigma Mono ADC Channel Fine-Gain Input Selection for P-Terminal */
#define AIC31XX_MICPGAMI AIC31XX_REG(1, 49) /* ADC Input Selection for M-Terminal */
#define AIC31XX_MICPGACM AIC31XX_REG(1, 50) /* Input CM Settings */

/* Bits, masks, and shifts */

/* AIC31XX_CLKMUX */
#define AIC31XX_PLL_CLKIN_MASK  GENMASK(3, 2)
#define AIC31XX_PLL_CLKIN_SHIFT  (2)
#define AIC31XX_PLL_CLKIN_MCLK  0x00
#define AIC31XX_PLL_CLKIN_BCLK  0x01
#define AIC31XX_PLL_CLKIN_GPIO1  0x02
#define AIC31XX_PLL_CLKIN_DIN  0x03
#define AIC31XX_CODEC_CLKIN_MASK GENMASK(1, 0)
#define AIC31XX_CODEC_CLKIN_SHIFT (0)
#define AIC31XX_CODEC_CLKIN_MCLK 0x00
#define AIC31XX_CODEC_CLKIN_BCLK 0x01
#define AIC31XX_CODEC_CLKIN_GPIO1 0x02
#define AIC31XX_CODEC_CLKIN_PLL  0x03

/* AIC31XX_PLLPR */
/* AIC31XX_NDAC */
/* AIC31XX_MDAC */
/* AIC31XX_NADC */
/* AIC31XX_MADC */
/* AIC31XX_BCLKN */
#define AIC31XX_PLL_MASK  GENMASK(6, 0)
#define AIC31XX_PM_MASK   BIT(7)

/* AIC31XX_IFACE1 */
#define AIC31XX_IFACE1_DATATYPE_MASK GENMASK(7, 6)
#define AIC31XX_IFACE1_DATATYPE_SHIFT (6)
#define AIC31XX_I2S_MODE  0x00
#define AIC31XX_DSP_MODE  0x01
#define AIC31XX_RIGHT_JUSTIFIED_MODE 0x02
#define AIC31XX_LEFT_JUSTIFIED_MODE 0x03
#define AIC31XX_IFACE1_DATALEN_MASK GENMASK(5, 4)
#define AIC31XX_IFACE1_DATALEN_SHIFT (4)
#define AIC31XX_WORD_LEN_16BITS  0x00
#define AIC31XX_WORD_LEN_20BITS  0x01
#define AIC31XX_WORD_LEN_24BITS  0x02
#define AIC31XX_WORD_LEN_32BITS  0x03
#define AIC31XX_IFACE1_MASTER_MASK GENMASK(3, 2)
#define AIC31XX_BCLK_MASTER  BIT(3)
#define AIC31XX_WCLK_MASTER  BIT(2)

/* AIC31XX_DATA_OFFSET */
#define AIC31XX_DATA_OFFSET_MASK GENMASK(7, 0)

/* AIC31XX_IFACE2 */
#define AIC31XX_BCLKINV_MASK  BIT(3)
#define AIC31XX_BDIVCLK_MASK  GENMASK(1, 0)
#define AIC31XX_DAC2BCLK  0x00
#define AIC31XX_DACMOD2BCLK  0x01
#define AIC31XX_ADC2BCLK  0x02
#define AIC31XX_ADCMOD2BCLK  0x03
#define AIC31XX_KEEP_I2SCLK  BIT(2)

/* AIC31XX_ADCFLAG */
#define AIC31XX_ADCPWRSTATUS_MASK BIT(6)

/* AIC31XX_DACFLAG1 */
#define AIC31XX_LDACPWRSTATUS_MASK BIT(7)
#define AIC31XX_HPLDRVPWRSTATUS_MASK BIT(5)
#define AIC31XX_SPLDRVPWRSTATUS_MASK BIT(4)
#define AIC31XX_RDACPWRSTATUS_MASK BIT(3)
#define AIC31XX_HPRDRVPWRSTATUS_MASK BIT(1)
#define AIC31XX_SPRDRVPWRSTATUS_MASK BIT(0)

/* AIC31XX_OFFLAG */
#define AIC31XX_DAC_OF_LEFT  BIT(7)
#define AIC31XX_DAC_OF_RIGHT  BIT(6)
#define AIC31XX_DAC_OF_SHIFTER  BIT(5)
#define AIC31XX_ADC_OF   BIT(3)
#define AIC31XX_ADC_OF_SHIFTER  BIT(1)

/* AIC31XX_INTRDACFLAG */
#define AIC31XX_HPLSCDETECT  BIT(7)
#define AIC31XX_HPRSCDETECT  BIT(6)
#define AIC31XX_BUTTONPRESS  BIT(5)
#define AIC31XX_HSPLUG   BIT(4)
#define AIC31XX_LDRCTHRES  BIT(3)
#define AIC31XX_RDRCTHRES  BIT(2)
#define AIC31XX_DACSINT   BIT(1)
#define AIC31XX_DACAINT   BIT(0)

/* AIC31XX_INT1CTRL */
#define AIC31XX_HSPLUGDET  BIT(7)
#define AIC31XX_BUTTONPRESSDET  BIT(6)
#define AIC31XX_DRCTHRES  BIT(5)
#define AIC31XX_AGCNOISE  BIT(4)
#define AIC31XX_SC   BIT(3)
#define AIC31XX_ENGINE   BIT(2)

/* AIC31XX_GPIO1 */
#define AIC31XX_GPIO1_FUNC_MASK  GENMASK(5, 2)
#define AIC31XX_GPIO1_FUNC_SHIFT 2
#define AIC31XX_GPIO1_DISABLED  0x00
#define AIC31XX_GPIO1_INPUT  0x01
#define AIC31XX_GPIO1_GPI  0x02
#define AIC31XX_GPIO1_GPO  0x03
#define AIC31XX_GPIO1_CLKOUT  0x04
#define AIC31XX_GPIO1_INT1  0x05
#define AIC31XX_GPIO1_INT2  0x06
#define AIC31XX_GPIO1_ADC_WCLK  0x07
#define AIC31XX_GPIO1_SBCLK  0x08
#define AIC31XX_GPIO1_SWCLK  0x09
#define AIC31XX_GPIO1_ADC_MOD_CLK 0x10
#define AIC31XX_GPIO1_SDOUT  0x11

/* AIC31XX_DACMUTE */
#define AIC31XX_DACMUTE_MASK  GENMASK(3, 2)

/* AIC31XX_HSDETECT */
#define AIC31XX_HSD_ENABLE  BIT(7)
#define AIC31XX_HSD_TYPE_MASK  GENMASK(6, 5)
#define AIC31XX_HSD_TYPE_SHIFT  5
#define AIC31XX_HSD_NONE  0x00
#define AIC31XX_HSD_HP   0x01
#define AIC31XX_HSD_HS   0x03

/* AIC31XX_HPDRIVER */
#define AIC31XX_HPD_OCMV_MASK  GENMASK(4, 3)
#define AIC31XX_HPD_OCMV_SHIFT  3
#define AIC31XX_HPD_OCMV_1_35V  0x0
#define AIC31XX_HPD_OCMV_1_5V  0x1
#define AIC31XX_HPD_OCMV_1_65V  0x2
#define AIC31XX_HPD_OCMV_1_8V  0x3

/* AIC31XX_MICBIAS */
#define AIC31XX_MICBIAS_MASK  GENMASK(1, 0)
#define AIC31XX_MICBIAS_SHIFT  0

#endif /* _TLV320AIC31XX_H */

Messung V0.5
C=96 H=95 G=95

¤ Dauer der Verarbeitung: 0.2 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.