rockbox/firmware/export/ak4537.h

202 lines
5.6 KiB
C
Raw Normal View History

/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2009 by Mark Arigo
*
* 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 _AK4537_H
#define _AK4537_H
#define AUDIOHW_CAPS (LIN_GAIN_CAP | MIC_GAIN_CAP)
/* Volume goes from -127.0 ... 0 dB in 0.5 dB increments */
AUDIOHW_SETTING(VOLUME, "dB", 0, 1, -128, 0, -25)
#ifdef HAVE_RECORDING
/* line input: -23 .. +12dB */
AUDIOHW_SETTING(LEFT_GAIN, "dB", 0, 1, -23, 12, 0)
AUDIOHW_SETTING(RIGHT_GAIN, "dB", 0, 1, -23, 12, 0)
/* mic gain: +15dB fixed +20dB switchable mic preamp gain
and the line stage of -23..+12dB make a total range of -8..+47dB */
AUDIOHW_SETTING(MIC_GAIN, "dB", 0, 1, -8, 47, 20)
void audiohw_set_recsrc(int source);
#endif /* HAVE_RECORDING */
#define AKC_NUM_REGS 0x11
/* Common register bits */
/* Power Management 1 */
#define AK4537_PM1 0x00
#define PMADL (1 << 0)
#define PMMICL (1 << 1)
#define PMIPGL (1 << 2)
#define PMMO (1 << 3)
#define PMLO (1 << 4)
#define PMBPM (1 << 5)
#define PMBPS (1 << 6)
#define PMVCM (1 << 7)
/* Power Management 2 */
#define AK4537_PM2 0x01
#define PMDAC (1 << 0)
#define PMHPR (1 << 1)
#define PMHPL (1 << 2)
#define PMSPK (1 << 3)
#define SPKG (1 << 4)
#define PMPLL (1 << 5)
#define PMXTL (1 << 6)
#define MCLKPD (1 << 7)
/* Signal Select 1 */
#define AK4537_SIGSEL1 0x02
#define MOUT2 (1 << 0)
#define ALCS (1 << 1)
#define BPMSP (1 << 2)
#define BPSSP (1 << 3)
#define MICM (1 << 4)
#define DAMO (1 << 5)
#define PSMO (1 << 6)
#define MOGN (1 << 7)
/* Signal Select 2 */
#define AK4537_SIGSEL2 0x03
#define HPR (1 << 0)
#define HPL (1 << 1)
#define BPMHP (1 << 2)
#define BPSHP (1 << 3)
#define MICL (1 << 4)
#define PSLO (1 << 6)
#define DAHS (1 << 7)
/* Mode Control 1 */
#define AK4537_MODE1 0x04
#define DIF_MASK (3 << 0)
#define BICK_MASK (1 << 2)
#define MCKO_EN (1 << 3)
#define MCKO_MASK (3 << 4)
#define MCKI_MASK (3 << 6)
/* Mode Control 2 */
#define AK4537_MODE2 0x05
#define SPPS (1 << 0)
#define LOOP (1 << 1)
#define HPM (1 << 2)
#define FS_MASK (7 << 5)
/* DAC Control */
#define AK4537_DAC 0x06
#define DEM_MASK (3 << 0)
#define BST_MASK (3 << 2)
#define DATTC (1 << 4)
#define SMUTE (1 << 5)
#define TM_MASK (3 << 6)
/* MIC Control */
#define AK4537_MIC 0x07
#define MGAIN (1 << 0)
#define MSEL (1 << 1)
#define MICAD (1 << 2)
#define MPWRI (1 << 3)
#define MPWRE (1 << 4)
#define IPGAC (1 << 5)
/* Timer Select */
#define AK4537_TIMER 0x08
#define LTM_MASK (3 << 0)
#define WTM_MASK (3 << 2)
#define ZTM_MASK (3 << 4)
#define ZTM1 (1 << 5)
#define ROTM (1 << 6)
/* ALC Mode Control 1 */
#define AK4537_ALC1 0x09
#define LMTH (1 << 0)
#define RATT (1 << 1)
#define LMAT_MASK (3 << 2)
#define ZELM (1 << 4)
#define ALC1 (1 << 5)
#define ALC2 (1 << 6)
/* ALC Mode Control 2 */
#define AK4537_ALC2 0x0a
/* Lch Input PGA Control */
#define AK4537_IPGAL 0x0b
/* Lch Digital ATT Control */
#define AK4537_ATTL 0x0c
/* Rch Digital ATT Control */
#define AK4537_ATTR 0x0d
/* Volume Control */
#define AK4537_VOLUME 0x0e
#define ATTS_MASK (7 << 4)
#define ATTRM (1 << 7)
/* Rch Input PGA Control */
#define AK4537_IPGAR 0x0f
/* Power Management 3 */
#define AK4537_PM3 0x10
#define PMADR (1 << 0)
#define PMMICR (1 << 1)
#define PMIPGR (1 << 2)
#define INR (1 << 3)
#define INL (1 << 4)
/* Sampling frequency (PLL mode) */
#define AKC_PLL_8000HZ (7 << 5)
#define AKC_PLL_11025HZ (2 << 5)
#define AKC_PLL_16000HZ (6 << 5)
#define AKC_PLL_22050HZ (1 << 5)
#define AKC_PLL_24000HZ (5 << 5)
#define AKC_PLL_32000HZ (4 << 5)
#define AKC_PLL_44100HZ (0 << 5)
#define AKC_PLL_48000HZ (3 << 5)
/* MCKI input frequency (PLL mode) */
#define MCKI_PLL_12288KHZ (0 << 6)
#define MCKI_PLL_11289KHZ (1 << 6)
#define MCKI_PLL_12000KHZ (2 << 6)
/* MCKO frequency (PLL mode, MCKO bit = 1) */
#define MCKO_PLL_256FS (0 << 4)
#define MCKO_PLL_128FS (1 << 4)
#define MCKO_PLL_64FS (2 << 4)
#define MCKO_PLL_32FS (3 << 4)
/* BICK frequency */
#define BICK_64FS (0 << 2)
#define BICK_32FS (1 << 2)
/* Audio interface format */
#define DIF_MSB_LSB (0 << 0)
#define DIF_MSB_MSB (1 << 0)
#define DIF_I2S (2 << 0)
/* Low frequency boost control */
#define BST_OFF (0 << 2)
#define BST_MIN (1 << 2)
#define BST_MID (2 << 2)
#define BST_MAX (3 << 2)
#endif /* _AK4537_H */