Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-or-later */
0002 /*
0003  *  Copyright (c) by James Courtier-Dutton <James@superbug.demon.co.uk>
0004  *  Driver p17v chips
0005  *  Version: 0.01
0006  */
0007 
0008 /******************************************************************************/
0009 /* Audigy2Value Tina (P17V) pointer-offset register set,
0010  * accessed through the PTR20 and DATA24 registers  */
0011 /******************************************************************************/
0012 
0013 /* 00 - 07: Not used */
0014 #define P17V_PLAYBACK_FIFO_PTR  0x08    /* Current playback fifo pointer
0015                      * and number of sound samples in cache.
0016                      */  
0017 /* 09 - 12: Not used */
0018 #define P17V_CAPTURE_FIFO_PTR   0x13    /* Current capture fifo pointer
0019                      * and number of sound samples in cache.
0020                      */  
0021 /* 14 - 17: Not used */
0022 #define P17V_PB_CHN_SEL     0x18    /* P17v playback channel select */
0023 #define P17V_SE_SLOT_SEL_L  0x19    /* Sound Engine slot select low */
0024 #define P17V_SE_SLOT_SEL_H  0x1a    /* Sound Engine slot select high */
0025 /* 1b - 1f: Not used */
0026 /* 20 - 2f: Not used */
0027 /* 30 - 3b: Not used */
0028 #define P17V_SPI        0x3c    /* SPI interface register */
0029 #define P17V_I2C_ADDR       0x3d    /* I2C Address */
0030 #define P17V_I2C_0      0x3e    /* I2C Data */
0031 #define P17V_I2C_1      0x3f    /* I2C Data */
0032 /* I2C values */
0033 #define I2C_A_ADC_ADD_MASK  0x000000fe  /*The address is a 7 bit address */
0034 #define I2C_A_ADC_RW_MASK   0x00000001  /*bit mask for R/W */
0035 #define I2C_A_ADC_TRANS_MASK    0x00000010      /*Bit mask for I2c address DAC value  */
0036 #define I2C_A_ADC_ABORT_MASK    0x00000020  /*Bit mask for I2C transaction abort flag */
0037 #define I2C_A_ADC_LAST_MASK 0x00000040  /*Bit mask for Last word transaction */
0038 #define I2C_A_ADC_BYTE_MASK 0x00000080  /*Bit mask for Byte Mode */
0039 
0040 #define I2C_A_ADC_ADD       0x00000034  /*This is the Device address for ADC  */
0041 #define I2C_A_ADC_READ      0x00000001  /*To perform a read operation */
0042 #define I2C_A_ADC_START     0x00000100  /*Start I2C transaction */
0043 #define I2C_A_ADC_ABORT     0x00000200  /*I2C transaction abort */
0044 #define I2C_A_ADC_LAST      0x00000400  /*I2C last transaction */
0045 #define I2C_A_ADC_BYTE      0x00000800  /*I2C one byte mode */
0046 
0047 #define I2C_D_ADC_REG_MASK  0xfe000000      /*ADC address register */ 
0048 #define I2C_D_ADC_DAT_MASK  0x01ff0000      /*ADC data register */
0049 
0050 #define ADC_TIMEOUT     0x00000007  /*ADC Timeout Clock Disable */
0051 #define ADC_IFC_CTRL        0x0000000b  /*ADC Interface Control */
0052 #define ADC_MASTER      0x0000000c  /*ADC Master Mode Control */
0053 #define ADC_POWER       0x0000000d  /*ADC PowerDown Control */
0054 #define ADC_ATTEN_ADCL      0x0000000e  /*ADC Attenuation ADCL */
0055 #define ADC_ATTEN_ADCR      0x0000000f  /*ADC Attenuation ADCR */
0056 #define ADC_ALC_CTRL1       0x00000010  /*ADC ALC Control 1 */
0057 #define ADC_ALC_CTRL2       0x00000011  /*ADC ALC Control 2 */
0058 #define ADC_ALC_CTRL3       0x00000012  /*ADC ALC Control 3 */
0059 #define ADC_NOISE_CTRL      0x00000013  /*ADC Noise Gate Control */
0060 #define ADC_LIMIT_CTRL      0x00000014  /*ADC Limiter Control */
0061 #define ADC_MUX         0x00000015      /*ADC Mux offset */
0062 #if 0
0063 /* FIXME: Not tested yet. */
0064 #define ADC_GAIN_MASK       0x000000ff  //Mask for ADC Gain
0065 #define ADC_ZERODB      0x000000cf  //Value to set ADC to 0dB
0066 #define ADC_MUTE_MASK       0x000000c0  //Mask for ADC mute
0067 #define ADC_MUTE        0x000000c0  //Value to mute ADC
0068 #define ADC_OSR         0x00000008  //Mask for ADC oversample rate select
0069 #define ADC_TIMEOUT_DISABLE 0x00000008  //Value and mask to disable Timeout clock
0070 #define ADC_HPF_DISABLE     0x00000100  //Value and mask to disable High pass filter
0071 #define ADC_TRANWIN_MASK    0x00000070  //Mask for Length of Transient Window
0072 #endif
0073 
0074 #define ADC_MUX_MASK        0x0000000f  //Mask for ADC Mux
0075 #define ADC_MUX_0       0x00000001  //Value to select Unknown at ADC Mux (Not used)
0076 #define ADC_MUX_1       0x00000002  //Value to select Unknown at ADC Mux (Not used)
0077 #define ADC_MUX_2       0x00000004  //Value to select Mic at ADC Mux
0078 #define ADC_MUX_3       0x00000008  //Value to select Line-In at ADC Mux
0079 
0080 #define P17V_START_AUDIO    0x40    /* Start Audio bit */
0081 /* 41 - 47: Reserved */
0082 #define P17V_START_CAPTURE  0x48    /* Start Capture bit */
0083 #define P17V_CAPTURE_FIFO_BASE  0x49    /* Record FIFO base address */
0084 #define P17V_CAPTURE_FIFO_SIZE  0x4a    /* Record FIFO buffer size */
0085 #define P17V_CAPTURE_FIFO_INDEX 0x4b    /* Record FIFO capture index */
0086 #define P17V_CAPTURE_VOL_H  0x4c    /* P17v capture volume control */
0087 #define P17V_CAPTURE_VOL_L  0x4d    /* P17v capture volume control */
0088 /* 4e - 4f: Not used */
0089 /* 50 - 5f: Not used */
0090 #define P17V_SRCSel     0x60    /* SRC48 and SRCMulti sample rate select
0091                      * and output select
0092                      */
0093 #define P17V_MIXER_AC97_10K1_VOL_L  0x61    /* 10K to Mixer_AC97 input volume control */
0094 #define P17V_MIXER_AC97_10K1_VOL_H  0x62    /* 10K to Mixer_AC97 input volume control */
0095 #define P17V_MIXER_AC97_P17V_VOL_L  0x63    /* P17V to Mixer_AC97 input volume control */
0096 #define P17V_MIXER_AC97_P17V_VOL_H  0x64    /* P17V to Mixer_AC97 input volume control */
0097 #define P17V_MIXER_AC97_SRP_REC_VOL_L   0x65    /* SRP Record to Mixer_AC97 input volume control */
0098 #define P17V_MIXER_AC97_SRP_REC_VOL_H   0x66    /* SRP Record to Mixer_AC97 input volume control */
0099 /* 67 - 68: Reserved */
0100 #define P17V_MIXER_Spdif_10K1_VOL_L 0x69    /* 10K to Mixer_Spdif input volume control */
0101 #define P17V_MIXER_Spdif_10K1_VOL_H 0x6A    /* 10K to Mixer_Spdif input volume control */
0102 #define P17V_MIXER_Spdif_P17V_VOL_L 0x6B    /* P17V to Mixer_Spdif input volume control */
0103 #define P17V_MIXER_Spdif_P17V_VOL_H 0x6C    /* P17V to Mixer_Spdif input volume control */
0104 #define P17V_MIXER_Spdif_SRP_REC_VOL_L  0x6D    /* SRP Record to Mixer_Spdif input volume control */
0105 #define P17V_MIXER_Spdif_SRP_REC_VOL_H  0x6E    /* SRP Record to Mixer_Spdif input volume control */
0106 /* 6f - 70: Reserved */
0107 #define P17V_MIXER_I2S_10K1_VOL_L   0x71    /* 10K to Mixer_I2S input volume control */
0108 #define P17V_MIXER_I2S_10K1_VOL_H   0x72    /* 10K to Mixer_I2S input volume control */
0109 #define P17V_MIXER_I2S_P17V_VOL_L   0x73    /* P17V to Mixer_I2S input volume control */
0110 #define P17V_MIXER_I2S_P17V_VOL_H   0x74    /* P17V to Mixer_I2S input volume control */
0111 #define P17V_MIXER_I2S_SRP_REC_VOL_L    0x75    /* SRP Record to Mixer_I2S input volume control */
0112 #define P17V_MIXER_I2S_SRP_REC_VOL_H    0x76    /* SRP Record to Mixer_I2S input volume control */
0113 /* 77 - 78: Reserved */
0114 #define P17V_MIXER_AC97_ENABLE      0x79    /* Mixer AC97 input audio enable */
0115 #define P17V_MIXER_SPDIF_ENABLE     0x7A    /* Mixer SPDIF input audio enable */
0116 #define P17V_MIXER_I2S_ENABLE       0x7B    /* Mixer I2S input audio enable */
0117 #define P17V_AUDIO_OUT_ENABLE       0x7C    /* Audio out enable */
0118 #define P17V_MIXER_ATT          0x7D    /* SRP Mixer Attenuation Select */
0119 #define P17V_SRP_RECORD_SRR     0x7E    /* SRP Record channel source Select */
0120 #define P17V_SOFT_RESET_SRP_MIXER   0x7F    /* SRP and mixer soft reset */
0121 
0122 #define P17V_AC97_OUT_MASTER_VOL_L  0x80    /* AC97 Output master volume control */
0123 #define P17V_AC97_OUT_MASTER_VOL_H  0x81    /* AC97 Output master volume control */
0124 #define P17V_SPDIF_OUT_MASTER_VOL_L 0x82    /* SPDIF Output master volume control */
0125 #define P17V_SPDIF_OUT_MASTER_VOL_H 0x83    /* SPDIF Output master volume control */
0126 #define P17V_I2S_OUT_MASTER_VOL_L   0x84    /* I2S Output master volume control */
0127 #define P17V_I2S_OUT_MASTER_VOL_H   0x85    /* I2S Output master volume control */
0128 /* 86 - 87: Not used */
0129 #define P17V_I2S_CHANNEL_SWAP_PHASE_INVERSE 0x88    /* I2S out mono channel swap
0130                              * and phase inverse */
0131 #define P17V_SPDIF_CHANNEL_SWAP_PHASE_INVERSE   0x89    /* SPDIF out mono channel swap
0132                              * and phase inverse */
0133 /* 8A: Not used */
0134 #define P17V_SRP_P17V_ESR       0x8B    /* SRP_P17V estimated sample rate and rate lock */
0135 #define P17V_SRP_REC_ESR        0x8C    /* SRP_REC estimated sample rate and rate lock */
0136 #define P17V_SRP_BYPASS         0x8D    /* srps channel bypass and srps bypass */
0137 /* 8E - 92: Not used */
0138 #define P17V_I2S_SRC_SEL        0x93    /* I2SIN mode sel */
0139 
0140 
0141 
0142 
0143 
0144