blob: c49996b455f1a23af0f2b3d59042fbf41ae42aec [file] [log] [blame]
/*
* ak7755.h -- audio driver for ak7755
*
* Copyright (C) 2014 Asahi Kasei Microdevices Corporation
* Author Date Revision
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* 14/04/22 1.0
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*
*
* 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.
*
*/
#ifndef _AK7755_H
#define _AK7755_H
//#define AK7755_I2C_IF
#define AK7755_IO_CONTROL
/* AK7755_C1_CLOCK_SETTING2 (0xC1) Fields */
#define AK7755_AIF_BICK32 (2 << 4)
#define AK7755_AIF_BICK48 (1 << 4)
#define AK7755_AIF_BICK64 (0 << 4)
#define AK7755_AIF_TDM (3 << 4) //TDM256 bit is set "1" at initialization.
/* TDMMODE Input Source */
#define AK7755_TDM_DSP (0 << 2)
#define AK7755_TDM_DSP_AD1 (1 << 2)
#define AK7755_TDM_DSP_AD1_AD2 (2 << 2)
/* User Setting */
//#define DIGITAL_MIC
//#define CLOCK_MODE_BICK
//#define CLOCK_MODE_18_432
#define AK7755_AUDIO_IF_MODE AK7755_AIF_BICK32 //32fs, 48fs, 64fs, 256fs(TDM)
#define AK7755_TDM_INPUT_SOURCE AK7755_TDM_DSP //Effective only in TDM mode
#define AK7755_BCKP_BIT (0 << 6) //BICK Edge Setting
#define AK7755_SOCFG_BIT (0 << 4) //SO pin Hi-z Setting
#define AK7755_DMCLKP1_BIT (0 << 6) //DigitalMIC 1 Channnel Setting
#define AK7755_DMCLKP2_BIT (0 << 3) //DigitalMIC 1 Channnel Setting
/* User Setting */
#define AK7755_C0_CLOCK_SETTING1 0xC0
#define AK7755_C1_CLOCK_SETTING2 0xC1
#define AK7755_C2_SERIAL_DATA_FORMAT 0xC2
#define AK7755_C3_DELAY_RAM_DSP_IO 0xC3
#define AK7755_C4_DATARAM_CRAM_SETTING 0xC4
#define AK7755_C5_ACCELARETOR_SETTING 0xC5
#define AK7755_C6_DAC_DEM_SETTING 0xC6
#define AK7755_C7_DSP_OUT_SETTING 0xC7
#define AK7755_C8_DAC_IN_SETTING 0xC8
#define AK7755_C9_ANALOG_IO_SETTING 0xC9
#define AK7755_CA_CLK_SDOUT_SETTING 0xCA
#define AK7755_CB_TEST_SETTING 0xCB
#define AK7755_CC_VOLUME_TRANSITION 0xCC
#define AK7755_CD_STO_DLS_SETTING 0xCD
#define AK7755_CE_POWER_MANAGEMENT 0xCE
#define AK7755_CF_RESET_POWER_SETTING 0xCF
#define AK7755_D0_FUNCTION_SETTING 0xD0
#define AK7755_D1_DSPMCLK_SETTING 0xD1
#define AK7755_D2_MIC_GAIN_SETTING 0xD2
#define AK7755_D3_LIN_LO3_VOLUME_SETTING 0xD3
#define AK7755_D4_LO1_LO2_VOLUME_SETTING 0xD4
#define AK7755_D5_ADC_DVOLUME_SETTING1 0xD5
#define AK7755_D6_ADC_DVOLUME_SETTING2 0xD6
#define AK7755_D7_ADC2_DVOLUME_SETTING1 0xD7
#define AK7755_D8_DAC_DVOLUME_SETTING1 0xD8
#define AK7755_D9_DAC_DVOLUME_SETTING2 0xD9
#define AK7755_DA_MUTE_ADRC_ZEROCROSS_SET 0xDA
#define AK7755_DB_ADRC_MIC_GAIN_READ 0xDB
#define AK7755_DC_TEST_SETTING 0xDC
#define AK7755_DD_ADC2_DVOLUME_SETTING2 0xDD
#define AK7755_DE_DMIC_IF_SETTING 0xDE
#define AK7755_MAX_REGISTERS (AK7755_DE_DMIC_IF_SETTING + 1)
/* Bitfield Definitions */
/* AK7755_C0_CLOCK_SETTING1 (0xC0) Fields */
#define AK7755_FS 0x07
#define AK7755_FS_8KHZ (0x00 << 0)
#define AK7755_FS_12KHZ (0x01 << 0)
#define AK7755_FS_16KHZ (0x02 << 0)
#define AK7755_FS_24KHZ (0x03 << 0)
#define AK7755_FS_32KHZ (0x04 << 0)
#define AK7755_FS_48KHZ (0x05 << 0)
#define AK7755_FS_96KHZ (0x06 << 0)
#define AK7755_M_S 0x30 //CKM1-0 (CKM2 bit is not use)
#define AK7755_M_S_0 (0 << 4) //Master, XTI=12.288MHz
#define AK7755_M_S_1 (1 << 4) //Master, XTI=18.432MHz
#define AK7755_M_S_2 (2 << 4) //Slave, XTI=12.288MHz
#define AK7755_M_S_3 (3 << 4) //Slave, BICK
/* AK7755_C2_SERIAL_DATA_FORMAT (0xC2) Fields */
/* LRCK I/F Format */
#define AK7755_LRIF 0x30
#define AK7755_LRIF_MSB_MODE (0 << 4)
#define AK7755_LRIF_I2S_MODE (1 << 4)
#define AK7755_LRIF_PCM_SHORT_MODE (2 << 4)
#define AK7755_LRIF_PCM_LONG_MODE (3 << 4)
/* Input Format is set as "MSB(24- bit)" by following register.
CONT03(DIF2,DOF2), CONT06(DIFDA, DIF1), CONT07(DOF4,DOF3,DOF1) */
/* AK7755_CA_CLK_SDOUT_SETTING (0xCA) Fields */
#define AK7755_BICK_LRCK (3 << 5) //BICKOE, LRCKOE
#define MAX_LOOP_TIMES 3
#define CRC_COMMAND_READ_RESULT 0x72
#define TOTAL_NUM_OF_PRAM_MAX 20483
#define TOTAL_NUM_OF_CRAM_MAX 6147
#define TOTAL_NUM_OF_OFREG_MAX 99
#define TOTAL_NUM_OF_ACRAM_MAX 6147
static const char *ak7755_firmware_pram[] =
{
"Off",
"basic",
"data2",
"data3",
"data4",
"data5",
"data6",
"data7",
"data8",
"data9",
};
static const char *ak7755_firmware_cram[] =
{
"Off",
"basic",
"data2",
"data3",
"data4",
"data5",
"data6",
"data7",
"data8",
"data9",
};
static const char *ak7755_firmware_ofreg[] =
{
"Off",
"basic",
"data2",
"data3",
"data4",
};
static const char *ak7755_firmware_acram[] =
{
"Off",
"basic",
"data2",
"data3",
"data4",
};
#include "ak7755ctl.h"
#endif