Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * ALSA SoC TLV320AIC23 codec driver
0004  *
0005  * Author:      Arun KS, <arunks@mistralsolutions.com>
0006  * Copyright:   (C) 2008 Mistral Solutions Pvt Ltd
0007  */
0008 
0009 #ifndef _TLV320AIC23_H
0010 #define _TLV320AIC23_H
0011 
0012 struct device;
0013 struct regmap_config;
0014 
0015 extern const struct regmap_config tlv320aic23_regmap;
0016 int tlv320aic23_probe(struct device *dev, struct regmap *regmap);
0017 
0018 /* Codec TLV320AIC23 */
0019 #define TLV320AIC23_LINVOL      0x00
0020 #define TLV320AIC23_RINVOL      0x01
0021 #define TLV320AIC23_LCHNVOL     0x02
0022 #define TLV320AIC23_RCHNVOL     0x03
0023 #define TLV320AIC23_ANLG        0x04
0024 #define TLV320AIC23_DIGT        0x05
0025 #define TLV320AIC23_PWR         0x06
0026 #define TLV320AIC23_DIGT_FMT        0x07
0027 #define TLV320AIC23_SRATE       0x08
0028 #define TLV320AIC23_ACTIVE      0x09
0029 #define TLV320AIC23_RESET       0x0F
0030 
0031 /* Left (right) line input volume control register */
0032 #define TLV320AIC23_LRS_ENABLED     0x0100
0033 #define TLV320AIC23_LIM_MUTED       0x0080
0034 #define TLV320AIC23_LIV_DEFAULT     0x0017
0035 #define TLV320AIC23_LIV_MAX     0x001f
0036 #define TLV320AIC23_LIV_MIN     0x0000
0037 
0038 /* Left (right) channel headphone volume control register */
0039 #define TLV320AIC23_LZC_ON      0x0080
0040 #define TLV320AIC23_LHV_DEFAULT     0x0079
0041 #define TLV320AIC23_LHV_MAX     0x007f
0042 #define TLV320AIC23_LHV_MIN     0x0000
0043 
0044 /* Analog audio path control register */
0045 #define TLV320AIC23_STA_REG(x)      ((x)<<6)
0046 #define TLV320AIC23_STE_ENABLED     0x0020
0047 #define TLV320AIC23_DAC_SELECTED    0x0010
0048 #define TLV320AIC23_BYPASS_ON       0x0008
0049 #define TLV320AIC23_INSEL_MIC       0x0004
0050 #define TLV320AIC23_MICM_MUTED      0x0002
0051 #define TLV320AIC23_MICB_20DB       0x0001
0052 
0053 /* Digital audio path control register */
0054 #define TLV320AIC23_DACM_MUTE       0x0008
0055 #define TLV320AIC23_DEEMP_32K       0x0002
0056 #define TLV320AIC23_DEEMP_44K       0x0004
0057 #define TLV320AIC23_DEEMP_48K       0x0006
0058 #define TLV320AIC23_ADCHP_ON        0x0001
0059 
0060 /* Power control down register */
0061 #define TLV320AIC23_DEVICE_PWR_OFF      0x0080
0062 #define TLV320AIC23_CLK_OFF     0x0040
0063 #define TLV320AIC23_OSC_OFF     0x0020
0064 #define TLV320AIC23_OUT_OFF     0x0010
0065 #define TLV320AIC23_DAC_OFF     0x0008
0066 #define TLV320AIC23_ADC_OFF     0x0004
0067 #define TLV320AIC23_MIC_OFF     0x0002
0068 #define TLV320AIC23_LINE_OFF        0x0001
0069 
0070 /* Digital audio interface register */
0071 #define TLV320AIC23_MS_MASTER       0x0040
0072 #define TLV320AIC23_LRSWAP_ON       0x0020
0073 #define TLV320AIC23_LRP_ON      0x0010
0074 #define TLV320AIC23_IWL_16      0x0000
0075 #define TLV320AIC23_IWL_20      0x0004
0076 #define TLV320AIC23_IWL_24      0x0008
0077 #define TLV320AIC23_IWL_32      0x000C
0078 #define TLV320AIC23_FOR_I2S     0x0002
0079 #define TLV320AIC23_FOR_DSP     0x0003
0080 #define TLV320AIC23_FOR_LJUST       0x0001
0081 
0082 /* Sample rate control register */
0083 #define TLV320AIC23_CLKOUT_HALF     0x0080
0084 #define TLV320AIC23_CLKIN_HALF      0x0040
0085 #define TLV320AIC23_BOSR_384fs      0x0002  /* BOSR_272fs in USB mode */
0086 #define TLV320AIC23_USB_CLK_ON      0x0001
0087 #define TLV320AIC23_SR_MASK             0xf
0088 #define TLV320AIC23_CLKOUT_SHIFT        7
0089 #define TLV320AIC23_CLKIN_SHIFT         6
0090 #define TLV320AIC23_SR_SHIFT            2
0091 #define TLV320AIC23_BOSR_SHIFT          1
0092 
0093 /* Digital interface register */
0094 #define TLV320AIC23_ACT_ON      0x0001
0095 
0096 /*
0097  * AUDIO related MACROS
0098  */
0099 
0100 #define TLV320AIC23_DEFAULT_OUT_VOL 0x70
0101 #define TLV320AIC23_DEFAULT_IN_VOLUME   0x10
0102 
0103 #define TLV320AIC23_OUT_VOL_MIN     TLV320AIC23_LHV_MIN
0104 #define TLV320AIC23_OUT_VOL_MAX     TLV320AIC23_LHV_MAX
0105 #define TLV320AIC23_OUT_VO_RANGE    (TLV320AIC23_OUT_VOL_MAX - \
0106                     TLV320AIC23_OUT_VOL_MIN)
0107 #define TLV320AIC23_OUT_VOL_MASK    TLV320AIC23_OUT_VOL_MAX
0108 
0109 #define TLV320AIC23_IN_VOL_MIN      TLV320AIC23_LIV_MIN
0110 #define TLV320AIC23_IN_VOL_MAX      TLV320AIC23_LIV_MAX
0111 #define TLV320AIC23_IN_VOL_RANGE    (TLV320AIC23_IN_VOL_MAX - \
0112                     TLV320AIC23_IN_VOL_MIN)
0113 #define TLV320AIC23_IN_VOL_MASK     TLV320AIC23_IN_VOL_MAX
0114 
0115 #define TLV320AIC23_SIDETONE_MASK   0x1c0
0116 #define TLV320AIC23_SIDETONE_0      0x100
0117 #define TLV320AIC23_SIDETONE_6      0x000
0118 #define TLV320AIC23_SIDETONE_9      0x040
0119 #define TLV320AIC23_SIDETONE_12     0x080
0120 #define TLV320AIC23_SIDETONE_18     0x0c0
0121 
0122 #endif /* _TLV320AIC23_H */