forked from len0rd/rockbox
		
	* SOUND_x enum can be generated by audiohw_settings.h along with settings entries and sound_val2phys. * VOLUME_MIN and VOLUME_MAX are no longer necessary within sound.c. If you need them, they are for target-defined purposes. * Fix up SDL volume implementation in sdl.c. Move sim volume calculation code to pcm-sdl.c. * Min trigger tresholds were based upon VOLUME_MIN for some reason. These setting have nothing to do with playback volume. Since it is no longer present, set these at -89dB which is the minimum peak meter sensitivity setting. * Fix an oversight in wm8758.c. I forgot to add the dB->register conversion to audiohw_set_volume. Change-Id: Ie1df33f1793eee75e6793f16bc7bddd16edb7f75
		
			
				
	
	
		
			170 lines
		
	
	
	
		
			5.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			170 lines
		
	
	
	
		
			5.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /***************************************************************************
 | |
|  *             __________               __   ___.
 | |
|  *   Open      \______   \ ____   ____ |  | _\_ |__   _______  ___
 | |
|  *   Source     |       _//  _ \_/ ___\|  |/ /| __ \ /  _ \  \/  /
 | |
|  *   Jukebox    |    |   (  <_> )  \___|    < | \_\ (  <_> > <  <
 | |
|  *   Firmware   |____|_  /\____/ \___  >__|_ \|___  /\____/__/\_ \
 | |
|  *                     \/            \/     \/    \/            \/
 | |
|  * $Id$
 | |
|  *
 | |
|  * Driver for internal Rockchip rk27xx audio codec
 | |
|  * (shCODlp-100.01-HD IP core from Dolphin)
 | |
|  *
 | |
|  * Copyright (c) 2011 Marcin Bukat
 | |
|  *
 | |
|  * This program is free software; you can redistribute it and/or
 | |
|  * modify it under the terms of the GNU General Public License
 | |
|  * as published by the Free Software Foundation; either version 2
 | |
|  * of the License, or (at your option) any later version.
 | |
|  *
 | |
|  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 | |
|  * KIND, either express or implied.
 | |
|  *
 | |
|  ****************************************************************************/
 | |
| #ifndef _RK27XX_CODEC_H_
 | |
| #define _RK27XX_CODEC_H_
 | |
| 
 | |
| #define AUDIOHW_CAPS    (BASS_CAP | TREBLE_CAP | LIN_GAIN_CAP | MIC_GAIN_CAP)
 | |
| 
 | |
| AUDIOHW_SETTING(VOLUME,     "dB", 0,  1,   -34,    4, -25)
 | |
| #ifdef HAVE_RECORDING /* disabled for now */
 | |
| AUDIOHW_SETTING(LEFT_GAIN,  "dB", 2, 75, -1725, 3000,   0)
 | |
| AUDIOHW_SETTING(RIGHT_GAIN, "dB", 2, 75, -1725, 3000,   0)
 | |
| AUDIOHW_SETTING(MIC_GAIN,   "dB", 0,  1,     0,   20,  20)
 | |
| #endif /* HAVE_RECORDING */
 | |
| 
 | |
| #define CODEC_I2C_ADDR 0x4e
 | |
| 
 | |
| /* registers */
 | |
| #define AICR  0x00     /* Audio Interface Control    */
 | |
| #define DAC_SERIAL     (1<<3)
 | |
| #define ADC_SERIAL     (1<<2)
 | |
| #define DAC_I2S        (1<<1)
 | |
| #define ADC_I2S        (1<<0)
 | |
| 
 | |
| #define CR1   0x02     /* Control Register 1         */
 | |
| #define SB_MICBIAS     (1<<7)
 | |
| #define CR1_MONO       (1<<6)
 | |
| #define DAC_MUTE       (1<<5)
 | |
| #define HP_DIS         (1<<4)
 | |
| #define DACSEL         (1<<3)
 | |
| #define BYPASS1        (1<<2)
 | |
| #define BYPASS2        (1<<1)
 | |
| #define SIDETONE       (1<<0)
 | |
| 
 | |
| #define CR2   0x04     /* Control Register 2         */
 | |
| #define DAC_DEEMP      (1<<7)
 | |
| #define ADC_HPF        (1<<2)
 | |
| #define INSEL_MIX      (3<<0)
 | |
| #define INSEL_MIC      (2<<0)
 | |
| #define INSEL_LINE2    (1<<0)
 | |
| #define INSEL_LINE1    (0<<0)
 | |
| 
 | |
| #define CCR1  0x06     /* Control Clock Register 1   */
 | |
| #define CRYSTAL_16M    (1<<0)
 | |
| #define CRYSTAL_12M    (0<<0)
 | |
| 
 | |
| #define CCR2  0x08     /* Control Clock Register 2   */
 | |
| #define FREQ8000       0x0a
 | |
| #define FREQ9600       0x09
 | |
| #define FREQ11025      0x08
 | |
| #define FREQ12000      0x07
 | |
| #define FREQ16000      0x06
 | |
| #define FREQ22050      0x05
 | |
| #define FREQ24000      0x04
 | |
| #define FREQ32000      0x03
 | |
| #define FREQ44100      0x02
 | |
| #define FREQ48000      0x01
 | |
| #define FREQ96000      0x00
 | |
| 
 | |
| #define PMR1  0x0a     /* Power Mode Register 1      */
 | |
| #define SB_DAC         (1<<7)
 | |
| #define SB_OUT         (1<<6)
 | |
| #define SB_MIX         (1<<5)
 | |
| #define SB_ADC         (1<<4)
 | |
| #define SB_IN1         (1<<3)
 | |
| #define SB_IN2         (1<<2)
 | |
| #define SB_MIC         (1<<1)
 | |
| #define SB_IND         (1<<0)
 | |
| 
 | |
| #define PMR2  0x0c     /* Power Mode Register 1      */
 | |
| #define LRGI           (1<<7)
 | |
| #define RLGI           (1<<6)
 | |
| #define LRGOD          (1<<5)
 | |
| #define RLGOD          (1<<4)
 | |
| #define GIM            (1<<3)
 | |
| #define SB_MC          (1<<2)
 | |
| #define SB             (1<<1)
 | |
| #define SB_SLEEP       (1<<0)
 | |
| 
 | |
| #define CRR   0x0e     /* Control Ramp Register      */
 | |
| #define RATIO_8        (3<<5)
 | |
| #define RATIO_4        (2<<5)
 | |
| #define RATIO_2        (1<<5)
 | |
| #define RATIO_1        (0<<5)
 | |
| #define KFAST_32       (5<<2)
 | |
| #define KFAST_16       (4<<2)
 | |
| #define KFAST_8        (3<<2)
 | |
| #define KFAST_4        (2<<2)
 | |
| #define KFAST_2        (1<<2)
 | |
| #define KFAST_1        (0<<2)
 | |
| #define THRESHOLD_128  (3<<0)
 | |
| #define THRESHOLD_64   (2<<0)
 | |
| #define THRESHOLD_32   (1<<0)
 | |
| #define THRESHOLD_0    (0<<0)
 | |
| 
 | |
| #define ICR   0x10     /* Interrupt Control Register */
 | |
| #define IRQ_LOW_PULSE  (3<<6)
 | |
| #define IRQ_HIGH_PULSE (2<<6)
 | |
| #define IRQ_LOW        (1<<6)
 | |
| #define IRQ_HIGH       (0<<6)
 | |
| #define JACK_MASK      (1<<5)
 | |
| #define CCMC_MASK      (1<<4)
 | |
| #define RUD_MASK       (1<<3)
 | |
| #define RDD_MASK       (1<<2)
 | |
| #define GUD_MASK       (1<<1)
 | |
| #define GDD_MASK       (1<<0)
 | |
| 
 | |
| #define IFR   0x12     /* Interrupt Flag Register    */
 | |
| #define JACK           (1<<6)
 | |
| #define JACK_EVENT     (1<<5)
 | |
| #define CCMC           (1<<4)
 | |
| #define RAMP_UP_DONE   (1<<3)
 | |
| #define RAMP_DOWN_DONE (1<<2)
 | |
| #define GAIN_UP_DONE   (1<<1)
 | |
| #define GAIN_DOWN_DONE (1<<0)
 | |
| 
 | |
| #define CGR1  0x14     /* Control Gain Register 1 (DAC mixing)      */
 | |
| 
 | |
| #define CGR2  0x16     /* Control Gain Register 2 (LINE1 mixing)    */
 | |
| #define LRGOB1         (1<<7)
 | |
| #define RLGOB1         (1<<6)
 | |
| 
 | |
| #define CGR3  0x18     /* Control Gain Register 3 (LINE1 mixing)    */
 | |
| 
 | |
| #define CGR4  0x1a     /* Control Gain Register 4 (LINE2 mixing)    */
 | |
| #define LRGOB2         (1<<7)
 | |
| #define RLGOB2         (1<<6)
 | |
| 
 | |
| #define CGR5  0x1c     /* Control Gain Register 5 (LINE2 mixing)    */
 | |
| 
 | |
| #define CGR6  0x1e     /* Control Gain Register 6 (MIC mixing)      */
 | |
| #define LRGOS          (1<<7)
 | |
| #define RLGOS          (1<<6)
 | |
| 
 | |
| #define CGR7  0x20     /* Control Gain Register 7 (MIC mixing)      */
 | |
| 
 | |
| #define CGR8  0x22     /* Control Gain Register 8 (OUT STAGE gain)  */
 | |
| #define LRGO           (1<<7)
 | |
| #define RLGO           (1<<6)
 | |
| 
 | |
| #define CGR9  0x24     /* Control Gain Register 9 (OUT STAGE gain)  */
 | |
| 
 | |
| #define CGR10 0x26     /* Control Gain Register 10 (ADC input gain) */
 | |
| 
 | |
| #define TR1   0x28     /* undocumented */
 | |
| #define NOSC           (1<<1)
 | |
| 
 | |
| #define TR2   0x2a     /* undocumented */
 | |
| 
 | |
| #endif /* _RK27XX_CODEC_H_ */
 |