blob: 919ce5edd86ac9024dea8350f19046c97ee6c94b [file] [log] [blame]
/*
* ak4954_amb.h -- audio driver for AK4951
*
* Copyright 2014 Ambarella Ltd.
*
* Author: Diao Chengdong <cddiao@ambarella.com>
*
* History:
* 2014/03/27 - created
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#ifndef _AK4951_AMB_H
#define _AK4951_AMB_H
#define AK4954_CLOCK_PLAYBACK 1
#define AK4954_CLOCK_CAPTURE 2
#define AK4954_CLOCK_OTHER 4
#define AK4951_00_POWER_MANAGEMENT1 0x00
#define AK4951_01_POWER_MANAGEMENT2 0x01
#define AK4951_02_SIGNAL_SELECT1 0x02
#define AK4951_03_SIGNAL_SELECT2 0x03
#define AK4951_04_SIGNAL_SELECT3 0x04
#define AK4951_05_MODE_CONTROL1 0x05
#define AK4951_06_MODE_CONTROL2 0x06
#define AK4951_07_MODE_CONTROL3 0x07
#define AK4951_08_DIGITL_MIC 0x08
#define AK4951_09_TIMER_SELECT 0x09
#define AK4951_0A_ALC_TIMER_SELECT 0x0A
#define AK4951_0B_ALC_MODE_CONTROL1 0x0B
#define AK4951_0C_ALC_MODE_CONTROL2 0x0C
#define AK4951_0D_LCH_INPUT_VOLUME_CONTROL 0x0D
#define AK4951_0E_RCH_INPUT_VOLUME_CONTROL 0x0E
#define AK4951_0F_ALC_VOLUME 0x0F
#define AK4951_10_LCH_MIC_GAIN_SETTING 0x10
#define AK4951_11_RCH_MIC_GAIN_SETTING 0x11
#define AK4951_12_BEEP_CONTROL 0x12
#define AK4951_13_LCH_DIGITAL_VOLUME_CONTROL 0x13
#define AK4951_14_RCH_DIGITAL_VOLUME_CONTROL 0x14
#define AK4951_15_EQ_COMMON_GAIN_SELECT 0x15
#define AK4951_16_EQ2_COMMON_GAIN_SELECT 0x16
#define AK4951_17_EQ3_COMMON_GAIN_SELECT 0x17
#define AK4951_18_EQ4_COMMON_GAIN_SELECT 0x18
#define AK4951_19_EQ5_COMMON_GAIN_SELECT 0x19
#define AK4951_1A_AUTO_HPF_CONTROL 0x1A
#define AK4951_1B_DIGITAL_FILTER_SELECT1 0x1B
#define AK4951_1C_DIGITAL_FILTER_SELECT2 0x1C
#define AK4951_1D_DIGITAL_FILTER_MODE 0x1D
#define AK4951_1E_HPF2_COEFFICIENT0 0x1E
#define AK4951_1F_HPF2_COEFFICIENT1 0x1F
#define AK4951_20_HPF2_COEFFICIENT2 0x20
#define AK4951_21_HPF2_COEFFICIENT3 0x21
#define AK4951_22_LPF_COEFFICIENT0 0x22
#define AK4951_23_LPF_COEFFICIENT1 0x23
#define AK4951_24_LPF_COEFFICIENT2 0x24
#define AK4951_25_LPF_COEFFICIENT3 0x25
#define AK4951_26_FIL3_COEFFICIENT0 0x26
#define AK4951_27_FIL3_COEFFICIENT1 0x27
#define AK4951_28_FIL3_COEFFICIENT2 0x28
#define AK4951_29_FIL3_COEFFICIENT3 0x29
#define AK4951_2A_EQ_COEFFICIENT0 0x2A
#define AK4951_2B_EQ_COEFFICIENT1 0x2B
#define AK4951_2C_EQ_COEFFICIENT2 0x2C
#define AK4951_2D_EQ_COEFFICIENT3 0x2D
#define AK4951_2E_EQ_COEFFICIENT4 0x2E
#define AK4951_2F_EQ_COEFFICIENT5 0x2F
#define AK4951_30_DIGITAL_FILTER_SELECT3 0x30
#define AK4951_31_DEVICE_INFO 0x31
#define AK4951_32_E1_COEFFICIENT0 0x32
#define AK4951_33_E1_COEFFICIENT1 0x33
#define AK4951_34_E1_COEFFICIENT2 0x34
#define AK4951_35_E1_COEFFICIENT3 0x35
#define AK4951_36_E1_COEFFICIENT4 0x36
#define AK4951_37_E1_COEFFICIENT5 0x37
#define AK4951_38_E2_COEFFICIENT0 0x38
#define AK4951_39_E2_COEFFICIENT1 0x39
#define AK4951_3A_E2_COEFFICIENT2 0x3A
#define AK4951_3B_E2_COEFFICIENT3 0x3B
#define AK4951_3C_E2_COEFFICIENT4 0x3C
#define AK4951_3D_E2_COEFFICIENT5 0x3D
#define AK4951_3E_E3_COEFFICIENT0 0x3E
#define AK4951_3F_E3_COEFFICIENT1 0x3F
#define AK4951_40_E3_COEFFICIENT2 0x40
#define AK4951_41_E3_COEFFICIENT3 0x41
#define AK4951_42_E3_COEFFICIENT4 0x42
#define AK4951_43_E3_COEFFICIENT5 0x43
#define AK4951_44_E4_COEFFICIENT0 0x44
#define AK4951_45_E4_COEFFICIENT1 0x45
#define AK4951_46_E4_COEFFICIENT2 0x46
#define AK4951_47_E4_COEFFICIENT3 0x47
#define AK4951_48_E4_COEFFICIENT4 0x48
#define AK4951_49_E4_COEFFICIENT5 0x49
#define AK4951_4A_E5_COEFFICIENT0 0x4A
#define AK4951_4B_E5_COEFFICIENT1 0x4B
#define AK4951_4C_E5_COEFFICIENT2 0x4C
#define AK4951_4D_E5_COEFFICIENT3 0x4D
#define AK4951_4E_E5_COEFFICIENT4 0x4E
#define AK4951_4F_E5_COEFFICIENT5 0x4F
#define AK4951_MAX_REGISTERS (AK4951_4F_E5_COEFFICIENT5 + 1)
/* Bitfield Definitions */
/* AK4954_00_POWER_MANAGEMENT1 (0x00) Fields */
#define AK4951_PMVCM 0x40
#define AK4951_PMPFIL 0x80
/* AK4954_01_POWER_MANAGEMENT2 (0x01) Fields */
#define AK4951_PMPLL 0x04
#define AK4951_M_S 0x08
/* AK4951_05_MODE_CONTROL1 (0x05) Fields */
#define AK4951_DIF 0x03
#define AK4951_DIF_24MSB_24LSB_MODE (0 << 0)
#define AK4951_DIF_24MSB_16LSB_MODE (1 << 0)
#define AK4951_DIF_24MSB_MODE (2 << 0)
#define AK4951_DIF_I2S_MODE (3 << 0)
#define AK4951_CKOFF 0x04
#define AK4951_BCKO 0x08
#define AK4951_PLL 0xF0
#define AK4951_EXT_SLAVE 0
#define AK4951_PLL_BICK32 (2 << 4)
#define AK4951_PLL_BICK64 (3 << 4)
#define AK4951_PLL_11_2896MHZ (4 << 4)
#define AK4951_PLL_12_288MHZ (5 << 4)
#define AK4951_PLL_12MHZ (6 << 4)
#define AK4951_PLL_24MHZ (7 << 4)
#define AK4951_PLL_13_5MHZ (12 << 4)
#define AK4951_PLL_27MHZ (13 << 4)
#define AK4951_MCLK_IN 0
#define AK4951_BCLK_IN 1
#define AK4951_MCLK_IN_BCLK_OUT 2
/* AK4954_06_MODE_CONTROL2 (0x06) Fields */
#define AK4951_FS 0x0F
#define AK4951_MCKI_FS_8KHZ (0 << 0)
#define AK4951_MCKI_FS_12KHZ (1 << 0)
#define AK4951_MCKI_FS_16KHZ (2 << 0)
#define AK4951_MCKI_FS_11_025KHZ (5 << 0)
#define AK4951_MCKI_FS_22_05KHZ (7 << 0)
#define AK4951_MCKI_FS_24KHZ (9 << 0)
#define AK4951_MCKI_FS_32KHZ (10 << 0)
#define AK4951_MCKI_FS_44_1KHZ (15 << 0)
#define AK4951_MCKI_FS_48KHZ (11 << 0)
#define AK4951_BICK_FS_8KHZ (0 << 0)
#define AK4951_BICK_FS_12KHZ (1 << 0)
#define AK4951_BICK_FS_16KHZ (5 << 0)
#define AK4951_BICK_FS_11_025KHZ (2 << 0)
#define AK4951_BICK_FS_22_05KHZ (7 << 0)
#define AK4951_BICK_FS_24KHZ (6 << 0)
#define AK4951_BICK_FS_32KHZ (10 << 0)
#define AK4951_BICK_FS_44_1KHZ (8 << 0)
#define AK4951_BICK_FS_48KHZ (11 << 0)
#define AK4951_FS_CM0 (1 << 6)
#define AK4951_FS_CM1 (1 << 7)
#endif