diff options
author | Jonas Aaberg <jonas.aberg@stericsson.com> | 2011-10-04 11:18:22 +0200 |
---|---|---|
committer | Philippe Langlais <philippe.langlais@stericsson.com> | 2012-05-22 11:04:58 +0200 |
commit | f85797423b063802bade171cb7ba607c000f01f3 (patch) | |
tree | 39a9cbaf3c1d55273ac56c2434bc26cce4aee6fe | |
parent | e61a305cb2830e8101e035082b917d772ccd5ae7 (diff) |
misc: audio_io: Remove obsolete and unused driver
audio_io is superseded by alsa.
ST-Ericsson Linux next: -
ST-Ericsson ID: -
ST-Ericsson FOSS-OUT ID: Trivial
Change-Id: I4641468e1d67e8596b1fcd9af69b0b81b686a0a0
Signed-off-by: Jonas Aaberg <jonas.aberg@stericsson.com>
Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/32904
Reviewed-by: Ola LILJA2 <ola.o.lilja@stericsson.com>
23 files changed, 0 insertions, 30877 deletions
diff --git a/arch/arm/mach-ux500/include/mach/ab8500_codec.h b/arch/arm/mach-ux500/include/mach/ab8500_codec.h deleted file mode 100644 index d45dea66b5d..00000000000 --- a/arch/arm/mach-ux500/include/mach/ab8500_codec.h +++ /dev/null @@ -1,327 +0,0 @@ -/*****************************************************************************/ -/** -* © ST-Ericsson, 2009 - All rights reserved -* Reproduction and Communication of this document is strictly prohibited -* unless specifically authorized in writing by ST-Ericsson -* -* \brief Public header file for AB8500 Codec -* \author ST-Ericsson -*/ -/*****************************************************************************/ - -#ifndef _AB8500_CODEC_H_ -#define _AB8500_CODEC_H_ - -/*--------------------------------------------------------------------- - * Includes - *--------------------------------------------------------------------*/ -#include "hcl_defs.h" -#include "debug.h" -#include <mach/ab8500_codec_p.h> - -/*--------------------------------------------------------------------- - * Define - *--------------------------------------------------------------------*/ -#ifdef __cplusplus -extern "C" { -#endif - typedef enum { - AB8500_CODEC_OK, - AB8500_CODEC_ERROR, - AB8500_CODEC_UNSUPPORTED_FEATURE, - AB8500_CODEC_INVALID_PARAMETER, - AB8500_CODEC_CONFIG_NOT_COHERENT, - AB8500_CODEC_TRANSACTION_FAILED - } t_ab8500_codec_error; - - typedef enum { - AB8500_CODEC_MASTER_MODE_DISABLE, - AB8500_CODEC_MASTER_MODE_ENABLE - } t_ab8500_codec_master_mode; - - typedef enum { - AB8500_CODEC_SLOT0, - AB8500_CODEC_SLOT1, - AB8500_CODEC_SLOT2, - AB8500_CODEC_SLOT3, - AB8500_CODEC_SLOT4, - AB8500_CODEC_SLOT5, - AB8500_CODEC_SLOT6, - AB8500_CODEC_SLOT7, - AB8500_CODEC_SLOT8, - AB8500_CODEC_SLOT9, - AB8500_CODEC_SLOT10, - AB8500_CODEC_SLOT11, - AB8500_CODEC_SLOT12, - AB8500_CODEC_SLOT13, - AB8500_CODEC_SLOT14, - AB8500_CODEC_SLOT15, - AB8500_CODEC_SLOT16, - AB8500_CODEC_SLOT17, - AB8500_CODEC_SLOT18, - AB8500_CODEC_SLOT19, - AB8500_CODEC_SLOT20, - AB8500_CODEC_SLOT21, - AB8500_CODEC_SLOT22, - AB8500_CODEC_SLOT23, - AB8500_CODEC_SLOT24, - AB8500_CODEC_SLOT25, - AB8500_CODEC_SLOT26, - AB8500_CODEC_SLOT27, - AB8500_CODEC_SLOT28, - AB8500_CODEC_SLOT29, - AB8500_CODEC_SLOT30, - AB8500_CODEC_SLOT31, - AB8500_CODEC_SLOT_UNDEFINED - } t_ab8500_codec_slot; - - typedef enum { - AB8500_CODEC_DA_CHANNEL_NUMBER_1, - AB8500_CODEC_DA_CHANNEL_NUMBER_2, - AB8500_CODEC_DA_CHANNEL_NUMBER_3, - AB8500_CODEC_DA_CHANNEL_NUMBER_4, - AB8500_CODEC_DA_CHANNEL_NUMBER_5, - AB8500_CODEC_DA_CHANNEL_NUMBER_6, - AB8500_CODEC_DA_CHANNEL_NUMBER_UNDEFINED - } t_ab8500_codec_da_channel_number; - - typedef enum { - AB8500_CODEC_SRC_STATE_DISABLE, - AB8500_CODEC_SRC_STATE_ENABLE - } t_ab8500_codec_src_state; - - typedef enum { - AB8500_CODEC_DEST_STATE_DISABLE, - AB8500_CODEC_DEST_STATE_ENABLE - } t_ab8500_codec_dest_state; - - typedef struct { - t_ab8500_codec_cr27_if1_bitclk_osr cr27_if1_bitclk_osr; - t_ab8500_codec_cr27_if0_bitclk_osr cr27_if0_bitclk_osr; - t_ab8500_codec_cr28_if0wl cr28_if0wl; - t_ab8500_codec_cr30_if1wl cr30_if1wl; - t_ab8500_codec_cr28_bitclk0p cr28_bitclk0p; - t_ab8500_codec_cr28_if0del cr28_if0del; - } t_ab8500_codec_tdm_config; - - typedef struct { - t_ab8500_codec_cr104_bfifoint cr104_bfifoint; - t_ab8500_codec_cr105_bfifotx cr105_bfifotx; - t_ab8500_codec_cr106_bfifofsext cr106_bfifofsext; - t_ab8500_codec_cr106_bfifomsk cr106_bfifomsk; - t_ab8500_codec_cr106_bfifomstr cr106_bfifomstr; - t_ab8500_codec_cr106_bfifostrt cr106_bfifostrt; - t_ab8500_codec_cr107_bfifosampnr cr107_bfifosampnr; - t_ab8500_codec_cr108_bfifowakeup cr108_bfifowakeup; - } t_ab8500_codec_burst_fifo_config; - -/************************************************************/ -/*--------------------------------------------------------------------- - * Exported APIs - *--------------------------------------------------------------------*/ -/* Initialization */ - t_ab8500_codec_error AB8500_CODEC_Init(IN t_uint8 - slave_address_of_codec); - t_ab8500_codec_error AB8500_CODEC_Reset(void); - -/* Audio Codec basic configuration */ - t_ab8500_codec_error AB8500_CODEC_SetModeAndDirection(IN - t_ab8500_codec_direction - ab8500_codec_direction, - IN - t_ab8500_codec_mode - ab8500_codec_mode_in, - IN - t_ab8500_codec_mode - ab8500_codec_mode_out, - IN - t_ab8500_codec_tdm_config - const *const - p_tdm_config); - t_ab8500_codec_error AB8500_CODEC_SelectInput(IN t_ab8500_codec_src - ab8500_codec_src); - t_ab8500_codec_error AB8500_CODEC_SelectOutput(IN t_ab8500_codec_dest - ab8500_codec_dest); - -/* Burst FIFO configuration */ - t_ab8500_codec_error AB8500_CODEC_ConfigureBurstFifo(IN - t_ab8500_codec_burst_fifo_config - const *const - p_burst_fifo_config); - t_ab8500_codec_error AB8500_CODEC_EnableBurstFifo(void); - t_ab8500_codec_error AB8500_CODEC_DisableBurstFifo(void); - -/* Audio Codec Master mode configuration */ - t_ab8500_codec_error AB8500_CODEC_SetMasterMode(IN - t_ab8500_codec_master_mode - mode); - -/* APIs to be implemented by user */ - t_ab8500_codec_error AB8500_CODEC_Write(IN t_uint8 register_offset, - IN t_uint8 count, - IN t_uint8 * p_data); - t_ab8500_codec_error AB8500_CODEC_Read(IN t_uint8 register_offset, - IN t_uint8 count, - IN t_uint8 * p_dummy_data, - IN t_uint8 * p_data); - -/* Volume Management */ - t_ab8500_codec_error AB8500_CODEC_SetSrcVolume(IN t_ab8500_codec_src - src_device, - IN t_uint8 - in_left_volume, - IN t_uint8 - in_right_volume); - t_ab8500_codec_error AB8500_CODEC_SetDestVolume(IN t_ab8500_codec_dest - dest_device, - IN t_uint8 - out_left_volume, - IN t_uint8 - out_right_volume); - -/* Power management */ - t_ab8500_codec_error AB8500_CODEC_PowerDown(void); - t_ab8500_codec_error AB8500_CODEC_PowerUp(void); - -/* Interface Management */ - t_ab8500_codec_error AB8500_CODEC_SelectInterface(IN - t_ab8500_codec_audio_interface - audio_interface); - t_ab8500_codec_error AB8500_CODEC_GetInterface(OUT - t_ab8500_codec_audio_interface - * p_audio_interface); - -/* Slot Allocation */ - t_ab8500_codec_error AB8500_CODEC_ADSlotAllocation(IN - t_ab8500_codec_slot - ad_slot, - IN - t_ab8500_codec_cr31_to_cr46_ad_data_allocation - value); - t_ab8500_codec_error AB8500_CODEC_DASlotAllocation(IN - t_ab8500_codec_da_channel_number - channel_number, - IN - t_ab8500_codec_cr51_to_cr56_sltoda - slot); - -/* Loopback Management */ - t_ab8500_codec_error AB8500_CODEC_SetAnalogLoopback(IN t_uint8 - out_left_volume, - IN t_uint8 - out_right_volume); - t_ab8500_codec_error AB8500_CODEC_RemoveAnalogLoopback(void); - -/* Bypass Management */ - t_ab8500_codec_error AB8500_CODEC_EnableBypassMode(void); - t_ab8500_codec_error AB8500_CODEC_DisableBypassMode(void); - -/* Power Control Management */ - t_ab8500_codec_error AB8500_CODEC_SrcPowerControl(IN t_ab8500_codec_src - src_device, - t_ab8500_codec_src_state - state); - t_ab8500_codec_error AB8500_CODEC_DestPowerControl(IN - t_ab8500_codec_dest - dest_device, - t_ab8500_codec_dest_state - state); - -/* Version Management */ - t_ab8500_codec_error AB8500_CODEC_GetVersion(OUT t_version * p_version); - -#if 0 -/* Debug management */ - t_ab8500_codec_error AB8500_CODEC_SetDbgLevel(IN t_dbg_level dbg_level); - t_ab8500_codec_error AB8500_CODEC_GetDbgLevel(OUT t_dbg_level * - p_dbg_level); -#endif - -/* -** following is added by $kardad$ -*/ - -/* duplicate copy of enum from msp.h */ -/* for MSPConfiguration.in_clock_freq parameter to select msp clock freq */ - typedef enum { - CODEC_MSP_INPUT_FREQ_1MHZ = 1024, - CODEC_MSP_INPUT_FREQ_2MHZ = 2048, - CODEC_MSP_INPUT_FREQ_3MHZ = 3072, - CODEC_MSP_INPUT_FREQ_4MHZ = 4096, - CODEC_MSP_INPUT_FREQ_5MHZ = 5760, - CODEC_MSP_INPUT_FREQ_6MHZ = 6144, - CODEC_MSP_INPUT_FREQ_8MHZ = 8192, - CODEC_MSP_INPUT_FREQ_11MHZ = 11264, - CODEC_MSP_INPUT_FREQ_12MHZ = 12288, - CODEC_MSP_INPUT_FREQ_16MHZ = 16384, - CODEC_MSP_INPUT_FREQ_22MHZ = 22579, - CODEC_MSP_INPUT_FREQ_24MHZ = 24576, - CODEC_MSP_INPUT_FREQ_48MHZ = 49152 - } codec_msp_in_clock_freq_type; - -/* msp clock source internal/external for srg_clock_sel */ - typedef enum { - CODEC_MSP_APB_CLOCK = 0, - CODEC_MSP_SCK_CLOCK = 2, - CODEC_MSP_SCK_SYNC_CLOCK = 3 - } codec_msp_srg_clock_sel_type; - -/* Sample rate supported by Codec */ - - typedef enum { - CODEC_FREQUENCY_DONT_CHANGE = -100, - CODEC_SAMPLING_FREQ_RESET = -1, - CODEC_SAMPLING_FREQ_MINLIMIT = 7, - CODEC_SAMPLING_FREQ_8KHZ = 8, /*default */ - CODEC_SAMPLING_FREQ_11KHZ = 11, - CODEC_SAMPLING_FREQ_12KHZ = 12, - CODEC_SAMPLING_FREQ_16KHZ = 16, - CODEC_SAMPLING_FREQ_22KHZ = 22, - CODEC_SAMPLING_FREQ_24KHZ = 24, - CODEC_SAMPLING_FREQ_32KHZ = 32, - CODEC_SAMPLING_FREQ_44KHZ = 44, - CODEC_SAMPLING_FREQ_48KHZ = 48, - CODEC_SAMPLING_FREQ_64KHZ = 64, /*the frequencies below this line are not supported in stw5094A */ - CODEC_SAMPLING_FREQ_88KHZ = 88, - CODEC_SAMPLING_FREQ_96KHZ = 96, - CODEC_SAMPLING_FREQ_128KHZ = 128, - CODEC_SAMPLING_FREQ_176KHZ = 176, - CODEC_SAMPLING_FREQ_192KHZ = 192, - CODEC_SAMPLING_FREQ_MAXLIMIT = 193 - } t_codec_sample_frequency; - -#define RESET -1 -#define DEFAULT -100 -/***********************************************************/ -/* -** following stuff is added to compile code without debug print support $kardad$ -*/ - -#define DBGEXIT(cr) -#define DBGEXIT0(cr) -#define DBGEXIT1(cr,ch,p1) -#define DBGEXIT2(cr,ch,p1,p2) -#define DBGEXIT3(cr,ch,p1,p2,p3) -#define DBGEXIT4(cr,ch,p1,p2,p3,p4) -#define DBGEXIT5(cr,ch,p1,p2,p3,p4,p5) -#define DBGEXIT6(cr,ch,p1,p2,p3,p4,p5,p6) - -#define DBGENTER() -#define DBGENTER0() -#define DBGENTER1(ch,p1) -#define DBGENTER2(ch,p1,p2) -#define DBGENTER3(ch,p1,p2,p3) -#define DBGENTER4(ch,p1,p2,p3,p4) -#define DBGENTER5(ch,p1,p2,p3,p4,p5) -#define DBGENTER6(ch,p1,p2,p3,p4,p5,p6) - -#define DBGPRINT(dbg_level,dbg_string) -#define DBGPRINTHEX(dbg_level,dbg_string,uint32) -#define DBGPRINTDEC(dbg_level,dbg_string,uint32) -/***********************************************************/ - -#ifdef __cplusplus -} /* allow C++ to use these headers */ -#endif /* __cplusplus */ -#endif /* _AB8500_CODEC_H_ */ -/* End of file ab8500_codec.h*/ diff --git a/arch/arm/mach-ux500/include/mach/ab8500_codec_p.h b/arch/arm/mach-ux500/include/mach/ab8500_codec_p.h deleted file mode 100644 index 847a1729e44..00000000000 --- a/arch/arm/mach-ux500/include/mach/ab8500_codec_p.h +++ /dev/null @@ -1,3082 +0,0 @@ -/*****************************************************************************/ -/** -* © ST-Ericsson, 2009 - All rights reserved -* Reproduction and Communication of this document is strictly prohibited -* unless specifically authorized in writing by ST-Ericsson - * -* \brief Private Header file for AB8500 CODEC -* \author ST-Ericsson - */ -/*****************************************************************************/ - -#ifndef _AB8500_CODECP_H_ -#define _AB8500_CODECP_H_ - -/*---------------------------------------------------------------------------- - * Includes - *---------------------------------------------------------------------------*/ -#include "hcl_defs.h" - -#define AB8500_CODEC_HCL_VERSION_ID 2 -#define AB8500_CODEC_HCL_MAJOR_ID 0 -#define AB8500_CODEC_HCL_MINOR_ID 0 - -#define AB8500_CODEC_MASK_ONE_BIT 0x1UL -#define AB8500_CODEC_MASK_TWO_BITS 0x3UL -#define AB8500_CODEC_MASK_THREE_BITS 0x7UL -#define AB8500_CODEC_MASK_FOUR_BITS 0xFUL -#define AB8500_CODEC_MASK_FIVE_BITS 0x1FUL -#define AB8500_CODEC_MASK_SIX_BITS 0x3FUL -#define AB8500_CODEC_MASK_SEVEN_BITS 0x7FUL -#define AB8500_CODEC_MASK_EIGHT_BITS 0xFFUL - -#define AB8500_CODEC_WRITE_BITS(reg, val, bit_nb, pos) (reg) = ((t_uint8) ((((reg) & (~(bit_nb << pos))) | (((val) & bit_nb) << pos)))) - -#define AB8500_CODEC_BLOCK 0x0D - -#define AB8500_CODEC_MASK_TWO_MS_BITS 0xC0UL -#define AB8500_CODEC_MASK_SIX_LS_BITS 0x3FUL - -/* Genepi AudioCodec Control Registers */ - -#define AB8500_CODEC_CR0 0x00 -#define AB8500_CODEC_CR1 0x01 -#define AB8500_CODEC_CR2 0x02 -#define AB8500_CODEC_CR3 0x03 -#define AB8500_CODEC_CR4 0x04 -#define AB8500_CODEC_CR5 0x05 -#define AB8500_CODEC_CR6 0x06 -#define AB8500_CODEC_CR7 0x07 -#define AB8500_CODEC_CR8 0x08 -#define AB8500_CODEC_CR9 0x09 -#define AB8500_CODEC_CR10 0x0A -#define AB8500_CODEC_CR11 0x0B -#define AB8500_CODEC_CR12 0x0C -#define AB8500_CODEC_CR13 0x0D -#define AB8500_CODEC_CR14 0x0E -#define AB8500_CODEC_CR15 0x0F -#define AB8500_CODEC_CR16 0x10 -#define AB8500_CODEC_CR17 0x11 -#define AB8500_CODEC_CR18 0x12 -#define AB8500_CODEC_CR19 0x13 -#define AB8500_CODEC_CR20 0x14 -#define AB8500_CODEC_CR21 0x15 -#define AB8500_CODEC_CR22 0x16 -#define AB8500_CODEC_CR23 0x17 -#define AB8500_CODEC_CR24 0x18 -#define AB8500_CODEC_CR25 0x19 -#define AB8500_CODEC_CR26 0x1A -#define AB8500_CODEC_CR27 0x1B -#define AB8500_CODEC_CR28 0x1C -#define AB8500_CODEC_CR29 0x1D -#define AB8500_CODEC_CR30 0x1E -#define AB8500_CODEC_CR31 0x1F -#define AB8500_CODEC_CR32 0x20 -#define AB8500_CODEC_CR33 0x21 -#define AB8500_CODEC_CR34 0x22 -#define AB8500_CODEC_CR35 0x23 -#define AB8500_CODEC_CR36 0x24 -#define AB8500_CODEC_CR37 0x25 -#define AB8500_CODEC_CR38 0x26 -#define AB8500_CODEC_CR39 0x27 -#define AB8500_CODEC_CR40 0x28 -#define AB8500_CODEC_CR41 0x29 -#define AB8500_CODEC_CR42 0x2A -#define AB8500_CODEC_CR43 0x2B -#define AB8500_CODEC_CR44 0x2C -#define AB8500_CODEC_CR45 0x2D -#define AB8500_CODEC_CR46 0x2E -#define AB8500_CODEC_CR47 0x2F -#define AB8500_CODEC_CR48 0x30 -#define AB8500_CODEC_CR49 0x31 -#define AB8500_CODEC_CR50 0x32 -#define AB8500_CODEC_CR51 0x33 -#define AB8500_CODEC_CR52 0x34 -#define AB8500_CODEC_CR53 0x35 -#define AB8500_CODEC_CR54 0x36 -#define AB8500_CODEC_CR55 0x37 -#define AB8500_CODEC_CR56 0x38 -#define AB8500_CODEC_CR57 0x39 -#define AB8500_CODEC_CR58 0x3A -#define AB8500_CODEC_CR59 0x3B -#define AB8500_CODEC_CR60 0x3C -#define AB8500_CODEC_CR61 0x3D -#define AB8500_CODEC_CR62 0x3E -#define AB8500_CODEC_CR63 0x3F -#define AB8500_CODEC_CR64 0x40 -#define AB8500_CODEC_CR65 0x41 -#define AB8500_CODEC_CR66 0x42 -#define AB8500_CODEC_CR67 0x43 -#define AB8500_CODEC_CR68 0x44 -#define AB8500_CODEC_CR69 0x45 -#define AB8500_CODEC_CR70 0x46 -#define AB8500_CODEC_CR71 0x47 -#define AB8500_CODEC_CR72 0x48 -#define AB8500_CODEC_CR73 0x49 -#define AB8500_CODEC_CR74 0x4A -#define AB8500_CODEC_CR75 0x4B -#define AB8500_CODEC_CR76 0x4C -#define AB8500_CODEC_CR77 0x4D -#define AB8500_CODEC_CR78 0x4E -#define AB8500_CODEC_CR79 0x4F -#define AB8500_CODEC_CR80 0x50 -#define AB8500_CODEC_CR81 0x51 -#define AB8500_CODEC_CR82 0x52 -#define AB8500_CODEC_CR83 0x53 -#define AB8500_CODEC_CR84 0x54 -#define AB8500_CODEC_CR85 0x55 -#define AB8500_CODEC_CR86 0x56 -#define AB8500_CODEC_CR87 0x57 -#define AB8500_CODEC_CR88 0x58 -#define AB8500_CODEC_CR89 0x59 -#define AB8500_CODEC_CR90 0x5A -#define AB8500_CODEC_CR91 0x5B -#define AB8500_CODEC_CR92 0x5C -#define AB8500_CODEC_CR93 0x5D -#define AB8500_CODEC_CR94 0x5E -#define AB8500_CODEC_CR95 0x5F -#define AB8500_CODEC_CR96 0x60 -#define AB8500_CODEC_CR97 0x61 -#define AB8500_CODEC_CR98 0x62 -#define AB8500_CODEC_CR99 0x63 -#define AB8500_CODEC_CR100 0x64 -#define AB8500_CODEC_CR101 0x65 -#define AB8500_CODEC_CR102 0x66 -#define AB8500_CODEC_CR103 0x67 -#define AB8500_CODEC_CR104 0x68 -#define AB8500_CODEC_CR105 0x69 -#define AB8500_CODEC_CR106 0x6A -#define AB8500_CODEC_CR107 0x6B -#define AB8500_CODEC_CR108 0x6C -#define AB8500_CODEC_CR109 0x6D - -/* CR0-CR0x0000 */ -#define AB8500_CODEC_CR0_POWERUP 7 -#define AB8500_CODEC_CR0_ENAANA 3 - -/* CR1-CR0x0001 */ -#define AB8500_CODEC_CR1_SWRESET 7 - -/* CR2-CR0x0002 */ -#define AB8500_CODEC_CR2_ENAD1 7 -#define AB8500_CODEC_CR2_ENAD2 6 -#define AB8500_CODEC_CR2_ENAD3 5 -#define AB8500_CODEC_CR2_ENAD4 4 -#define AB8500_CODEC_CR2_ENAD5 3 -#define AB8500_CODEC_CR2_ENAD6 2 - -/* CR3-CR0x0003 */ -#define AB8500_CODEC_CR3_ENDA1 7 -#define AB8500_CODEC_CR3_ENDA2 6 -#define AB8500_CODEC_CR3_ENDA3 5 -#define AB8500_CODEC_CR3_ENDA4 4 -#define AB8500_CODEC_CR3_ENDA5 3 -#define AB8500_CODEC_CR3_ENDA6 2 - -/* CR4-CR0x0004 */ -#define AB8500_CODEC_CR4_LOWPOWHS 7 -#define AB8500_CODEC_CR4_LOWPOWDACHS 5 -#define AB8500_CODEC_CR4_LOWPOWEAR 4 -#define AB8500_CODEC_CR4_EAR_SEL_CM 2 -#define AB8500_CODEC_CR4_HS_HP_DIS 1 -#define AB8500_CODEC_CR4_EAR_HP_DIS 0 - -/* CR5-CR0x0005 */ -#define AB8500_CODEC_CR5_ENMIC1 7 -#define AB8500_CODEC_CR5_ENMIC2 6 -#define AB8500_CODEC_CR5_ENLINL 5 -#define AB8500_CODEC_CR5_ENLINR 4 -#define AB8500_CODEC_CR5_MUTMIC1 3 -#define AB8500_CODEC_CR5_MUTMIC2 2 -#define AB8500_CODEC_CR5_MUTELINL 1 -#define AB8500_CODEC_CR5_MUTELINR 0 - -/* CR6-CR0x0006 */ -#define AB8500_CODEC_CR6_ENDMIC1 7 -#define AB8500_CODEC_CR6_ENDMIC2 6 -#define AB8500_CODEC_CR6_ENDMIC3 5 -#define AB8500_CODEC_CR6_ENDMIC4 4 -#define AB8500_CODEC_CR6_ENDMIC5 3 -#define AB8500_CODEC_CR6_ENDMIC6 2 - -/* CR7-CR0x0007 */ -#define AB8500_CODEC_CR7_MIC1SEL 7 -#define AB8500_CODEC_CR7_LINRSEL 6 -#define AB8500_CODEC_CR7_ENDRVHSL 5 -#define AB8500_CODEC_CR7_ENDRVHSR 4 -#define AB8500_CODEC_CR7_ENADCMIC 2 -#define AB8500_CODEC_CR7_ENADCLINL 1 -#define AB8500_CODEC_CR7_ENADCLINR 0 - -/* CR8-CR0x0008 */ -#define AB8500_CODEC_CR8_CP_DIS_PLDWN 7 -#define AB8500_CODEC_CR8_ENEAR 6 -#define AB8500_CODEC_CR8_ENHSL 5 -#define AB8500_CODEC_CR8_ENHSR 4 -#define AB8500_CODEC_CR8_ENHFL 3 -#define AB8500_CODEC_CR8_ENHFR 2 -#define AB8500_CODEC_CR8_ENVIBL 1 -#define AB8500_CODEC_CR8_ENVIBR 0 - -/* CR9-CR0x0009 */ -#define AB8500_CODEC_CR9_ENADACEAR 6 -#define AB8500_CODEC_CR9_ENADACHSL 5 -#define AB8500_CODEC_CR9_ENADACHSR 4 -#define AB8500_CODEC_CR9_ENADACHFL 3 -#define AB8500_CODEC_CR9_ENADACHFR 2 -#define AB8500_CODEC_CR9_ENADACVIBL 1 -#define AB8500_CODEC_CR9_ENADACVIBR 0 - -/* CR10-CR0x000A */ -#define AB8500_CODEC_CR10_MUTEEAR 6 -#define AB8500_CODEC_CR10_MUTEHSL 5 -#define AB8500_CODEC_CR10_MUTEHSR 4 -#define AB8500_CODEC_CR10_MUTEHFL 3 -#define AB8500_CODEC_CR10_MUTEHFR 2 -#define AB8500_CODEC_CR10_MUTEVIBL 1 -#define AB8500_CODEC_CR10_MUTEVIBR 0 - -/* CR11-CR0x000B */ -#define AB8500_CODEC_CR11_ENSHORTPWD 7 -#define AB8500_CODEC_CR11_EARSHORTDIS 6 -#define AB8500_CODEC_CR11_HSLSHORTDIS 5 -#define AB8500_CODEC_CR11_HSRSHORTDIS 4 -#define AB8500_CODEC_CR11_HFLSHORTDIS 3 -#define AB8500_CODEC_CR11_HFRSHORTDIS 2 -#define AB8500_CODEC_CR11_VIBLSHORTDIS 1 -#define AB8500_CODEC_CR11_VIBRSHORTDIS 0 - -/* CR12-CR0x000C */ -#define AB8500_CODEC_CR12_ENCPHS 7 -#define AB8500_CODEC_CR12_HSAUTOTIME 4 -#define AB8500_CODEC_CR12_HSAUTOENSEL 1 -#define AB8500_CODEC_CR12_HSAUTOEN 0 - -/* CR13-CR0x000D */ -#define AB8500_CODEC_CR13_ENVDET_HTHRESH 4 -#define AB8500_CODEC_CR13_ENVDET_LTHRESH 0 - -/* CR14-CR0x000E */ -#define AB8500_CODEC_CR14_SMPSLVEN 7 -#define AB8500_CODEC_CR14_ENVDETSMPSEN 6 -#define AB8500_CODEC_CR14_CPLVEN 5 -#define AB8500_CODEC_CR14_ENVDETCPEN 4 -#define AB8500_CODEC_CR14_ENVDET_TIME 0 - -/* CR15-CR0x000F */ -#define AB8500_CODEC_CR15_PWMTOVIBL 7 -#define AB8500_CODEC_CR15_PWMTOVIBR 6 -#define AB8500_CODEC_CR15_PWMLCTRL 5 -#define AB8500_CODEC_CR15_PWMRCTRL 4 -#define AB8500_CODEC_CR15_PWMNLCTRL 3 -#define AB8500_CODEC_CR15_PWMPLCTRL 2 -#define AB8500_CODEC_CR15_PWMNRCTRL 1 -#define AB8500_CODEC_CR15_PWMPRCTRL 0 - -/* CR16-CR0x0010 */ -#define AB8500_CODEC_CR16_PWMNLPOL 7 -#define AB8500_CODEC_CR16_PWMNLDUTYCYCLE 0 - -/* CR17-CR0x0011 */ -#define AB8500_CODEC_CR17_PWMPLPOL 7 -#define AB8500_CODEC_CR17_PWMLPDUTYCYCLE 0 - -/* CR18-CR0x0012 */ -#define AB8500_CODEC_CR18_PWMNRPOL 7 -#define AB8500_CODEC_CR18_PWMNRDUTYCYCLE 0 - -/* CR19-CR0x0013 */ -#define AB8500_CODEC_CR19_PWMPRPOL 7 -#define AB8500_CODEC_CR19_PWMRPDUTYCYCLE 0 - -/* CR20-CR0x0014 */ -#define AB8500_CODEC_CR20_EN_SE_MIC1 7 -#define AB8500_CODEC_CR20_MIC1_GAIN 0 - -/* CR21-CR0x0015 */ -#define AB8500_CODEC_CR21_EN_SE_MIC2 7 -#define AB8500_CODEC_CR21_MIC2_GAIN 0 - -/* CR22-CR0x0016 */ -#define AB8500_CODEC_CR22_HSL_GAIN 5 -#define AB8500_CODEC_CR22_LINL_GAIN 0 - -/* CR23-CR0x0017 */ -#define AB8500_CODEC_CR23_HSR_GAIN 5 -#define AB8500_CODEC_CR23_LINR_GAIN 0 - -/* CR24-CR0x0018 */ -#define AB8500_CODEC_CR24_LINTOHSL_GAIN 0 - -/* CR25-CR0x0019 */ -#define AB8500_CODEC_CR25_LINTOHSR_GAIN 0 - -/* CR26-CR0x001A */ -#define AB8500_CODEC_CR26_AD1NH 7 -#define AB8500_CODEC_CR26_AD2NH 6 -#define AB8500_CODEC_CR26_AD3NH 5 -#define AB8500_CODEC_CR26_AD4NH 4 -#define AB8500_CODEC_CR26_AD1_VOICE 3 -#define AB8500_CODEC_CR26_AD2_VOICE 2 -#define AB8500_CODEC_CR26_AD3_VOICE 1 -#define AB8500_CODEC_CR26_AD4_VOICE 0 - -/* CR27-CR0x001B */ -#define AB8500_CODEC_CR27_EN_MASTGEN 7 -#define AB8500_CODEC_CR27_IF1_BITCLK_OSR 5 -#define AB8500_CODEC_CR27_ENFS_BITCLK1 4 -#define AB8500_CODEC_CR27_IF0_BITCLK_OSR 1 -#define AB8500_CODEC_CR27_ENFS_BITCLK0 0 - -/* CR28-CR0x001C */ -#define AB8500_CODEC_CR28_FSYNC0P 6 -#define AB8500_CODEC_CR28_BITCLK0P 5 -#define AB8500_CODEC_CR28_IF0DEL 4 -#define AB8500_CODEC_CR28_IF0FORMAT 2 -#define AB8500_CODEC_CR28_IF0WL 0 - -/* CR29-CR0x001D */ -#define AB8500_CODEC_CR29_IF0DATOIF1AD 7 -#define AB8500_CODEC_CR29_IF0CKTOIF1CK 6 -#define AB8500_CODEC_CR29_IF1MASTER 5 -#define AB8500_CODEC_CR29_IF1DATOIF0AD 3 -#define AB8500_CODEC_CR29_IF1CKTOIF0CK 2 -#define AB8500_CODEC_CR29_IF0MASTER 1 -#define AB8500_CODEC_CR29_IF0BFIFOEN 0 - -/* CR30-CR0x001E */ -#define AB8500_CODEC_CR30_FSYNC1P 6 -#define AB8500_CODEC_CR30_BITCLK1P 5 -#define AB8500_CODEC_CR30_IF1DEL 4 -#define AB8500_CODEC_CR30_IF1FORMAT 2 -#define AB8500_CODEC_CR30_IF1WL 0 - -/* CR31-CR0x001F */ -#define AB8500_CODEC_CR31_ADOTOSLOT1 4 -#define AB8500_CODEC_CR31_ADOTOSLOT0 0 - -/* CR32-CR0x0020 */ -#define AB8500_CODEC_CR32_ADOTOSLOT3 4 -#define AB8500_CODEC_CR32_ADOTOSLOT2 0 - -/* CR33-CR0x0021 */ -#define AB8500_CODEC_CR33_ADOTOSLOT5 4 -#define AB8500_CODEC_CR33_ADOTOSLOT4 0 - -/* CR34-CR0x0022 */ -#define AB8500_CODEC_CR34_ADOTOSLOT7 4 -#define AB8500_CODEC_CR34_ADOTOSLOT6 0 - -/* CR35-CR0x0023 */ -#define AB8500_CODEC_CR35_ADOTOSLOT9 4 -#define AB8500_CODEC_CR35_ADOTOSLOT8 0 - -/* CR36-CR0x0024 */ -#define AB8500_CODEC_CR36_ADOTOSLOT11 4 -#define AB8500_CODEC_CR36_ADOTOSLOT10 0 - -/* CR37-CR0x0025 */ -#define AB8500_CODEC_CR37_ADOTOSLOT13 4 -#define AB8500_CODEC_CR37_ADOTOSLOT12 0 - -/* CR38-CR0x0026 */ -#define AB8500_CODEC_CR38_ADOTOSLOT15 4 -#define AB8500_CODEC_CR38_ADOTOSLOT14 0 - -/* CR39-CR0x0027 */ -#define AB8500_CODEC_CR39_ADOTOSLOT17 4 -#define AB8500_CODEC_CR39_ADOTOSLOT16 0 - -/* CR40-CR0x0028 */ -#define AB8500_CODEC_CR40_ADOTOSLOT19 4 -#define AB8500_CODEC_CR40_ADOTOSLOT18 0 - -/* CR41-CR0x0029 */ -#define AB8500_CODEC_CR41_ADOTOSLOT21 4 -#define AB8500_CODEC_CR41_ADOTOSLOT20 0 - -/* CR42-CR0x002A */ -#define AB8500_CODEC_CR42_ADOTOSLOT23 4 -#define AB8500_CODEC_CR42_ADOTOSLOT22 0 - -/* CR43-CR0x002B */ -#define AB8500_CODEC_CR43_ADOTOSLOT25 4 -#define AB8500_CODEC_CR43_ADOTOSLOT24 0 - -/* CR44-CR0x002C */ -#define AB8500_CODEC_CR44_ADOTOSLOT27 4 -#define AB8500_CODEC_CR44_ADOTOSLOT26 0 - -/* CR45-CR0x002D */ -#define AB8500_CODEC_CR45_ADOTOSLOT29 4 -#define AB8500_CODEC_CR45_ADOTOSLOT28 0 - -/* CR46-CR0x002E */ -#define AB8500_CODEC_CR46_ADOTOSLOT31 4 -#define AB8500_CODEC_CR46_ADOTOSLOT30 0 - -/* CR47-CR0x002F */ -#define AB8500_CODEC_CR47_HIZ_SL7 7 -#define AB8500_CODEC_CR47_HIZ_SL6 6 -#define AB8500_CODEC_CR47_HIZ_SL5 5 -#define AB8500_CODEC_CR47_HIZ_SL4 4 -#define AB8500_CODEC_CR47_HIZ_SL3 3 -#define AB8500_CODEC_CR47_HIZ_SL2 2 -#define AB8500_CODEC_CR47_HIZ_SL1 1 -#define AB8500_CODEC_CR47_HIZ_SL0 0 - -/* CR48-CR0x0030 */ -#define AB8500_CODEC_CR48_HIZ_SL15 7 -#define AB8500_CODEC_CR48_HIZ_SL14 6 -#define AB8500_CODEC_CR48_HIZ_SL13 5 -#define AB8500_CODEC_CR48_HIZ_SL12 4 -#define AB8500_CODEC_CR48_HIZ_SL11 3 -#define AB8500_CODEC_CR48_HIZ_SL10 2 -#define AB8500_CODEC_CR48_HIZ_SL9 1 -#define AB8500_CODEC_CR48_HIZ_SL8 0 - -/* CR49-CR0x0031 */ -#define AB8500_CODEC_CR49_HIZ_SL23 7 -#define AB8500_CODEC_CR49_HIZ_SL22 6 -#define AB8500_CODEC_CR49_HIZ_SL21 5 -#define AB8500_CODEC_CR49_HIZ_SL20 4 -#define AB8500_CODEC_CR49_HIZ_SL19 3 -#define AB8500_CODEC_CR49_HIZ_SL18 2 -#define AB8500_CODEC_CR49_HIZ_SL17 1 -#define AB8500_CODEC_CR49_HIZ_SL16 0 - -/* CR50-CR0x0032 */ -#define AB8500_CODEC_CR50_HIZ_SL31 7 -#define AB8500_CODEC_CR50_HIZ_SL30 6 -#define AB8500_CODEC_CR50_HIZ_SL29 5 -#define AB8500_CODEC_CR50_HIZ_SL28 4 -#define AB8500_CODEC_CR50_HIZ_SL27 3 -#define AB8500_CODEC_CR50_HIZ_SL26 2 -#define AB8500_CODEC_CR50_HIZ_SL25 1 -#define AB8500_CODEC_CR50_HIZ_SL24 0 - -/* CR51-CR0x0033 */ -#define AB8500_CODEC_CR51_DA12_VOICE 7 -#define AB8500_CODEC_CR51_SLDAI1TOSLADO1 5 -#define AB8500_CODEC_CR51_SLTODA1 0 - -/* CR52-CR0x0034 */ -#define AB8500_CODEC_CR52_SLDAI1TOSLADO2 5 -#define AB8500_CODEC_CR52_SLTODA2 0 - -/* CR53-CR0x0035 */ -#define AB8500_CODEC_CR53_DA34_VOICE 7 -#define AB8500_CODEC_CR53_SLDAI1TOSLADO3 5 -#define AB8500_CODEC_CR53_SLTODA3 0 - -/* CR54-CR0x0036 */ -#define AB8500_CODEC_CR54_SLDAI1TOSLADO4 5 -#define AB8500_CODEC_CR54_SLTODA4 0 - -/* CR55-CR0x0037 */ -#define AB8500_CODEC_CR55_DA56_VOICE 7 -#define AB8500_CODEC_CR55_SLDAI1TOSLADO5 5 -#define AB8500_CODEC_CR55_SLTODA5 0 - -/* CR56-CR0x0038 */ -#define AB8500_CODEC_CR56_SLDAI1TOSLADO6 5 -#define AB8500_CODEC_CR56_SLTODA6 0 - -/* CR57-CR0x0039 */ -#define AB8500_CODEC_CR57_BFIFULL_MSK 6 -#define AB8500_CODEC_CR57_BFIEMPT_MSK 5 -#define AB8500_CODEC_CR57_DACHAN_MSK 4 -#define AB8500_CODEC_CR57_GAIN_MSK 3 -#define AB8500_CODEC_CR57_DSPAD_MSK 2 -#define AB8500_CODEC_CR57_DSPDA_MSK 1 -#define AB8500_CODEC_CR57_STFIR_MSK 0 - -/* CR58-CR0x003A */ -#define AB8500_CODEC_CR58_BFIFULL_EV 6 -#define AB8500_CODEC_CR58_BFIEMPT_EV 5 -#define AB8500_CODEC_CR58_DACHAN_EV 4 -#define AB8500_CODEC_CR58_GAIN_EV 3 -#define AB8500_CODEC_CR58_DSPAD_EV 2 -#define AB8500_CODEC_CR58_DSPDA_EV 1 -#define AB8500_CODEC_CR58_STFIR_EV 0 - -/* CR59-CR0x003B */ -#define AB8500_CODEC_CR59_VSSREADY_MSK 7 -#define AB8500_CODEC_CR59_SHRTVIBL_MSK 6 -#define AB8500_CODEC_CR59_SHRTVIBR_MSK 5 -#define AB8500_CODEC_CR59_SHRTHFL_MSK 4 -#define AB8500_CODEC_CR59_SHRTHFR_MSK 3 -#define AB8500_CODEC_CR59_SHRTHSL_MSK 2 -#define AB8500_CODEC_CR59_SHRTHSR_MSK 1 -#define AB8500_CODEC_CR59_SHRTEAR_MSK 0 - -/* CR60-CR0x003C */ -#define AB8500_CODEC_CR60_VSSREADY_EV 7 -#define AB8500_CODEC_CR60_SHRTVIBL_EV 6 -#define AB8500_CODEC_CR60_SHRTVIBR_EV 5 -#define AB8500_CODEC_CR60_SHRTHFL_EV 4 -#define AB8500_CODEC_CR60_SHRTHFR_EV 3 -#define AB8500_CODEC_CR60_SHRTHSL_EV 2 -#define AB8500_CODEC_CR60_SHRTHSR_EV 1 -#define AB8500_CODEC_CR60_SHRTEAR_EV 0 - -/* CR61-CR0x003D */ -#define AB8500_CODEC_CR61_REVISION 2 -#define AB8500_CODEC_CR61_FADE_SPEED 0 - -/* CR62-CR0x003E */ -#define AB8500_CODEC_CR62_DMIC1SINC3 5 -#define AB8500_CODEC_CR62_DMIC2SINC3 4 -#define AB8500_CODEC_CR62_DMIC3SINC3 3 -#define AB8500_CODEC_CR62_DMIC4SINC3 2 -#define AB8500_CODEC_CR62_DMIC5SINC3 1 -#define AB8500_CODEC_CR62_DMIC6SINC3 0 - -/* CR63-CR0x003F */ -#define AB8500_CODEC_CR63_DATOHSLEN 7 -#define AB8500_CODEC_CR63_DATOHSREN 6 -#define AB8500_CODEC_CR63_AD1SEL 5 -#define AB8500_CODEC_CR63_AD2SEL 4 -#define AB8500_CODEC_CR63_AD3SEL 3 -#define AB8500_CODEC_CR63_AD5SEL 2 -#define AB8500_CODEC_CR63_AD6SEL 1 -#define AB8500_CODEC_CR63_ANCSEL 0 - -/* CR64-CR0x0040 */ -#define AB8500_CODEC_CR64_DATOHFREN 7 -#define AB8500_CODEC_CR64_DATOHFLEN 6 -#define AB8500_CODEC_CR64_HFRSEL 5 -#define AB8500_CODEC_CR64_HFLSEL 4 -#define AB8500_CODEC_CR64_STFIR1SEL 2 -#define AB8500_CODEC_CR64_STFIR2SEL 0 - -/* CR65-CR0x0041 */ -#define AB8500_CODEC_CR65_FADEDIS_AD1 6 -#define AB8500_CODEC_CR65_AD1GAIN 0 - -/* CR66-CR0x0042 */ -#define AB8500_CODEC_CR66_FADEDIS_AD2 6 -#define AB8500_CODEC_CR66_AD2GAIN 0 - -/* CR67-CR0x0043 */ -#define AB8500_CODEC_CR67_FADEDIS_AD3 6 -#define AB8500_CODEC_CR67_AD3GAIN 0 - -/* CR68-CR0x0044 */ -#define AB8500_CODEC_CR68_FADEDIS_AD4 6 -#define AB8500_CODEC_CR68_AD4GAIN 0 - -/* CR69-CR0x0045 */ -#define AB8500_CODEC_CR69_FADEDIS_AD5 6 -#define AB8500_CODEC_CR69_AD5GAIN 0 - -/* CR70-CR0x0046 */ -#define AB8500_CODEC_CR70_FADEDIS_AD6 6 -#define AB8500_CODEC_CR70_AD6GAIN 0 - -/* CR71-CR0x0047 */ -#define AB8500_CODEC_CR71_FADEDIS_DA1 6 -#define AB8500_CODEC_CR71_DA1GAIN 0 - -/* CR72-CR0x0048 */ -#define AB8500_CODEC_CR72_FADEDIS_DA2 6 -#define AB8500_CODEC_CR72_DA2GAIN 0 - -/* CR73-CR0x0049 */ -#define AB8500_CODEC_CR73_FADEDIS_DA3 6 -#define AB8500_CODEC_CR73_DA3GAIN 0 - -/* CR74-CR0x004A */ -#define AB8500_CODEC_CR74_FADEDIS_DA4 6 -#define AB8500_CODEC_CR74_DA4GAIN 0 - -/* CR75-CR0x004B */ -#define AB8500_CODEC_CR75_FADEDIS_DA5 6 -#define AB8500_CODEC_CR75_DA5GAIN 0 - -/* CR76-CR0x004C */ -#define AB8500_CODEC_CR76_FADEDIS_DA6 6 -#define AB8500_CODEC_CR76_DA6GAIN 0 - -/* CR77-CR0x004D */ -#define AB8500_CODEC_CR77_FADEDIS_AD1L 6 -#define AB8500_CODEC_CR77_AD1LBGAIN 0 - -/* CR78-CR0x004E */ -#define AB8500_CODEC_CR78_FADEDIS_AD2L 6 -#define AB8500_CODEC_CR78_AD2LBGAIN 0 - -/* CR79-CR0x004F */ -#define AB8500_CODEC_CR79_HSSINC1 7 -#define AB8500_CODEC_CR79_FADEDIS_HSL 4 -#define AB8500_CODEC_CR79_HSLDGAIN 0 - -/* CR80-CR0x0050 */ -#define AB8500_CODEC_CR80_FADEDIS_HSR 4 -#define AB8500_CODEC_CR80_HSRDGAIN 0 - -/* CR81-CR0x0051 */ -#define AB8500_CODEC_CR81_STFIR1GAIN 0 - -/* CR82-CR0x0052 */ -#define AB8500_CODEC_CR82_STFIR2GAIN 0 - -/* CR83-CR0x0053 */ -#define AB8500_CODEC_CR83_ENANC 2 -#define AB8500_CODEC_CR83_ANCIIRINIT 1 -#define AB8500_CODEC_CR83_ANCFIRUPDATE 0 - -/* CR84-CR0x0054 */ -#define AB8500_CODEC_CR84_ANCINSHIFT 0 - -/* CR85-CR0x0055 */ -#define AB8500_CODEC_CR85_ANCFIROUTSHIFT 0 - -/* CR86-CR0x0056 */ -#define AB8500_CODEC_CR86_ANCSHIFTOUT 0 - -/* CR87-CR0x0057 */ -#define AB8500_CODEC_CR87_ANCFIRCOEFF_MSB 0 - -/* CR88-CR0x0058 */ -#define AB8500_CODEC_CR88_ANCFIRCOEFF_LSB 0 - -/* CR89-CR0x0059 */ -#define AB8500_CODEC_CR89_ANCIIRCOEFF_MSB 0 - -/* CR90-CR0x005A */ -#define AB8500_CODEC_CR90_ANCIIRCOEFF_LSB 0 - -/* CR91-CR0x005B */ -#define AB8500_CODEC_CR91_ANCWARPDEL_MSB 0 - -/* CR92-CR0x005C */ -#define AB8500_CODEC_CR92_ANCWARPDEL_LSB 0 - -/* CR93-CR0x005D */ -#define AB8500_CODEC_CR93_ANCFIRPEAK_MSB 0 - -/* CR94-CR0x005E */ -#define AB8500_CODEC_CR94_ANCFIRPEAK_LSB 0 - -/* CR95-CR0x005F */ -#define AB8500_CODEC_CR95_ANCIIRPEAK_MSB 0 - -/* CR96-CR0x0060 */ -#define AB8500_CODEC_CR96_ANCIIRPEAK_LSB 0 - -/* CR97-CR0x0061 */ -#define AB8500_CODEC_CR97_STFIR_SET 7 -#define AB8500_CODEC_CR97_STFIR_ADDR 0 - -/* CR98-CR0x0062 */ -#define AB8500_CODEC_CR98_STFIR_COEFF_MSB 0 - -/* CR99-CR0x0063 */ -#define AB8500_CODEC_CR99_STFIR_COEFF_LSB 0 - -/* CR100-CR0x0064 */ -#define AB8500_CODEC_CR100_ENSTFIRS 2 -#define AB8500_CODEC_CR100_STFIRSTOIF1 1 -#define AB8500_CODEC_CR100_STFIR_BUSY 0 - -/* CR101-CR0x0065 */ -#define AB8500_CODEC_CR101_PARLHF 7 -#define AB8500_CODEC_CR101_PARLVIB 6 -#define AB8500_CODEC_CR101_CLASSDVIBLSWAPEN 3 -#define AB8500_CODEC_CR101_CLASSDVIBRSWAPEN 2 -#define AB8500_CODEC_CR101_CLASSDHFLSWAPEN 1 -#define AB8500_CODEC_CR101_CLASSDHFRSWAPEN 0 - -/* CR102-CR0x0066 */ -#define AB8500_CODEC_CR102_CLASSD_FIRBYP 4 -#define AB8500_CODEC_CR102_CLASSD_HIGHVOLEN 0 - -/* CR103-CR0x0067 */ -#define AB8500_CODEC_CR103_CLASSD_DITHERHPGAIN 4 -#define AB8500_CODEC_CR103_CLASSD_DITHERWGAIN 0 - -/* CR104-CR0x0068 */ -#define AB8500_CODEC_CR104_BFIFOINT 0 - -/* CR105-CR0x0069 */ -#define AB8500_CODEC_CR105_BFIFOTX 0 - -/* CR106-CR0x006A */ -#define AB8500_CODEC_CR106_BFIFOFSEXT 4 -#define AB8500_CODEC_CR106_BFIFOMSK 2 -#define AB8500_CODEC_CR106_BFIFOMSTR 1 -#define AB8500_CODEC_CR106_BFIFOSTRT 0 - -/* CR107-CR0x006B */ -#define AB8500_CODEC_CR107_BFIFOSAMPNR 0 - -/* CR108-CR0x006C */ -#define AB8500_CODEC_CR108_BFIFOWAKEUP 0 - -/* CR109-CR0x006D */ -#define AB8500_CODEC_CR109_BFIFOSAMPLES 0 - -/* For SetVolume API*/ -#define AB8500_CODEC_MAX_VOLUME 100 - -/* Analog MIC1 & MIC2 */ -#define AB8500_CODEC_MIC_VOLUME_MAX 31 -#define AB8500_CODEC_MIC_VOLUME_MEDIUM 15 -#define AB8500_CODEC_MIC_VOLUME_MIN 0 - -/* Line-in */ -#define AB8500_CODEC_LINEIN_VOLUME_MAX 31 -#define AB8500_CODEC_LINEIN_VOLUME_MEDIUM 15 -#define AB8500_CODEC_LINEIN_VOLUME_MIN 0 - -/* HeadSet */ -#define AB8500_CODEC_HEADSET_VOLUME_MAX 0 -#define AB8500_CODEC_HEADSET_VOLUME_MEDIUM 3 -#define AB8500_CODEC_HEADSET_VOLUME_MIN 7 - -/* HeadSet Digital */ -#define AB8500_CODEC_HEADSET_D_VOLUME_MAX 0 -#define AB8500_CODEC_HEADSET_D_VOLUME_MEDIUM 7 -#define AB8500_CODEC_HEADSET_D_VOLUME_MIN 15 -#define AB8500_CODEC_HEADSET_D_VOLUME_0DB 8 - -/* Digital AD Path */ -#define AB8500_CODEC_AD_D_VOLUME_MAX 0 -#define AB8500_CODEC_AD_D_VOLUME_MEDIUM 31 -#define AB8500_CODEC_AD_D_VOLUME_MIN 63 - -/* Digital DA Path */ -#define AB8500_CODEC_DA_D_VOLUME_MAX 0 -#define AB8500_CODEC_DA_D_VOLUME_MEDIUM 31 -#define AB8500_CODEC_DA_D_VOLUME_MIN 63 - -/* EarPiece Digital */ -#define AB8500_CODEC_EARPIECE_D_VOLUME_MAX 0 -#define AB8500_CODEC_EARPIECE_D_VOLUME_MEDIUM 7 -#define AB8500_CODEC_EARPIECE_D_VOLUME_MIN 15 - -/* AD1 loopback to HFL & HFR Digital */ -#define AB8500_CODEC_AD_LB_TO_HF_L_R_VOLUME_MAX 0 -#define AB8500_CODEC_AD_LB_TO_HF_L_R_VOLUME_MEDIUM 31 -#define AB8500_CODEC_AD_LB_TO_HF_L_R_VOLUME_MIN 63 - -/* Line-in to HSL & HSR */ -#define AB8500_CODEC_LINEIN_TO_HS_L_R_VOLUME_MAX 0 -#define AB8500_CODEC_LINEIN_TO_HS_L_R_VOLUME_MEDIUM 9 -#define AB8500_CODEC_LINEIN_TO_HS_L_R_VOLUME_MIN 18 -#define AB8500_CODEC_LINEIN_TO_HS_L_R_LOOP_OPEN 19 - -/* Vibrator */ -#define AB8500_CODEC_VIBRATOR_VOLUME_MAX 100 -#define AB8500_CODEC_VIBRATOR_VOLUME_MEDIUM 50 -#define AB8500_CODEC_VIBRATOR_VOLUME_MIN 0 - -/* CR0 - 7 */ -typedef enum { - AB8500_CODEC_CR0_POWERUP_OFF, - AB8500_CODEC_CR0_POWERUP_ON -} t_ab8500_codec_cr0_powerup; - -/* CR0 - 3 */ -typedef enum { - AB8500_CODEC_CR0_ENAANA_OFF, - AB8500_CODEC_CR0_ENAANA_ON -} t_ab8500_codec_cr0_enaana; - -/* CR1 - 7 */ -typedef enum { - AB8500_CODEC_CR1_SWRESET_DISABLED, - AB8500_CODEC_CR1_SWRESET_ENABLED -} t_ab8500_codec_cr1_swreset; - -/* CR2 - 7 */ -typedef enum { - AB8500_CODEC_CR2_ENAD1_DISABLED, - AB8500_CODEC_CR2_ENAD1_ENABLED -} t_ab8500_codec_cr2_enad1; - -/* CR2 - 6 */ -typedef enum { - AB8500_CODEC_CR2_ENAD2_DISABLED, - AB8500_CODEC_CR2_ENAD2_ENABLED -} t_ab8500_codec_cr2_enad2; - -/* CR2 - 5 */ -typedef enum { - AB8500_CODEC_CR2_ENAD3_DISABLED, - AB8500_CODEC_CR2_ENAD3_ENABLED -} t_ab8500_codec_cr2_enad3; - -/* CR2 - 4 */ -typedef enum { - AB8500_CODEC_CR2_ENAD4_DISABLED, - AB8500_CODEC_CR2_ENAD4_ENABLED -} t_ab8500_codec_cr2_enad4; - -/* CR2 - 3 */ -typedef enum { - AB8500_CODEC_CR2_ENAD5_DISABLED, - AB8500_CODEC_CR2_ENAD5_ENABLED -} t_ab8500_codec_cr2_enad5; - -/* CR2 - 2 */ -typedef enum { - AB8500_CODEC_CR2_ENAD6_DISABLED, - AB8500_CODEC_CR2_ENAD6_ENABLED -} t_ab8500_codec_cr2_enad6; - -/* CR3 - 7 */ -typedef enum { - AB8500_CODEC_CR3_ENDA1_DISABLED, - AB8500_CODEC_CR3_ENDA1_ENABLED -} t_ab8500_codec_cr3_enda1; - -/* CR3 - 6 */ -typedef enum { - AB8500_CODEC_CR3_ENDA2_DISABLED, - AB8500_CODEC_CR3_ENDA2_ENABLED -} t_ab8500_codec_cr3_enda2; - -/* CR3 - 5 */ -typedef enum { - AB8500_CODEC_CR3_ENDA3_DISABLED, - AB8500_CODEC_CR3_ENDA3_ENABLED -} t_ab8500_codec_cr3_enda3; - -/* CR3 - 4 */ -typedef enum { - AB8500_CODEC_CR3_ENDA4_DISABLED, - AB8500_CODEC_CR3_ENDA4_ENABLED -} t_ab8500_codec_cr3_enda4; - -/* CR3 - 3 */ -typedef enum { - AB8500_CODEC_CR3_ENDA5_DISABLED, - AB8500_CODEC_CR3_ENDA5_ENABLED -} t_ab8500_codec_cr3_enda5; - -/* CR3 - 2 */ -typedef enum { - AB8500_CODEC_CR3_ENDA6_DISABLED, - AB8500_CODEC_CR3_ENDA6_ENABLED -} t_ab8500_codec_cr3_enda6; - -/* CR4 - 7 */ -typedef enum { - AB8500_CODEC_CR4_LOWPOWHS_NORMAL, - AB8500_CODEC_CR4_LOWPOWHS_LP -} t_ab8500_codec_cr4_lowpowhs; - -/* CR4 - 6:5 */ -typedef enum { - AB8500_CODEC_CR4_LOWPOWDACHS_NORMAL, - AB8500_CODEC_CR4_LOWPOWDACHS_DRIVERS_LP, - AB8500_CODEC_CR4_LOWPOWDACHS_LP, - AB8500_CODEC_CR4_LOWPOWDACHS_BOTH_LP -} t_ab8500_codec_cr4_lowpowdachs; - -/* CR4 - 4 */ -typedef enum { - AB8500_CODEC_CR4_LOWPOWEAR_NORMAL, - AB8500_CODEC_CR4_LOWPOWEAR_LP -} t_ab8500_codec_cr4_lowpowear; - -/* CR4 - 3:2 */ -typedef enum { - AB8500_CODEC_CR4_EAR_SEL_CM_0_95V, - AB8500_CODEC_CR4_EAR_SEL_CM_1_1V, - AB8500_CODEC_CR4_EAR_SEL_CM_1_27V, - AB8500_CODEC_CR4_EAR_SEL_CM_1_58V -} t_ab8500_codec_cr4_ear_sel_cm; - -/* CR4 - 1 */ -typedef enum { - AB8500_CODEC_CR4_HS_HP_DIS_FILTER_ENABLED, - AB8500_CODEC_CR4_HS_HP_DIS_FILTER_DISABLED -} t_ab8500_codec_cr4_hs_hp_dis; - -/* CR4 - 0 */ -typedef enum { - AB8500_CODEC_CR4_EAR_HP_DIS_FILTER_ENABLED, - AB8500_CODEC_CR4_EAR_HP_DIS_FILTER_DISABLED -} t_ab8500_codec_cr4_ear_hp_dis; - -/* CR5 - 7 */ -typedef enum { - AB8500_CODEC_CR5_ENMIC1_DISABLED, - AB8500_CODEC_CR5_ENMIC1_ENABLED -} t_ab8500_codec_cr5_enmic1; - -/* CR5 - 6 */ -typedef enum { - AB8500_CODEC_CR5_ENMIC2_DISABLED, - AB8500_CODEC_CR5_ENMIC2_ENABLED -} t_ab8500_codec_cr5_enmic2; - -/* CR5 - 5 */ -typedef enum { - AB8500_CODEC_CR5_ENLINL_DISABLED, - AB8500_CODEC_CR5_ENLINL_ENABLED -} t_ab8500_codec_cr5_enlinl; - -/* CR5 - 4 */ -typedef enum { - AB8500_CODEC_CR5_ENLINR_DISABLED, - AB8500_CODEC_CR5_ENLINR_ENABLED -} t_ab8500_codec_cr5_enlinr; - -/* CR5 - 3 */ -typedef enum { - AB8500_CODEC_CR5_MUTMIC1_DISABLED, - AB8500_CODEC_CR5_MUTMIC1_ENABLED -} t_ab8500_codec_cr5_mutmic1; - -/* CR5 - 2 */ -typedef enum { - AB8500_CODEC_CR5_MUTMIC2_DISABLED, - AB8500_CODEC_CR5_MUTMIC2_ENABLED -} t_ab8500_codec_cr5_mutmic2; - -/* CR5 - 1 */ -typedef enum { - AB8500_CODEC_CR5_MUTLINL_DISABLED, - AB8500_CODEC_CR5_MUTLINL_ENABLED -} t_ab8500_codec_cr5_mutlinl; - -/* CR5 - 0 */ -typedef enum { - AB8500_CODEC_CR5_MUTLINR_DISABLED, - AB8500_CODEC_CR5_MUTLINR_ENABLED -} t_ab8500_codec_cr5_mutlinr; - -/* CR6 - 7 */ -typedef enum { - AB8500_CODEC_CR6_ENDMIC1_DISABLED, - AB8500_CODEC_CR6_ENDMIC1_ENABLED -} t_ab8500_codec_cr6_endmic1; - -/* CR6 - 6 */ -typedef enum { - AB8500_CODEC_CR6_ENDMIC2_DISABLED, - AB8500_CODEC_CR6_ENDMIC2_ENABLED -} t_ab8500_codec_cr6_endmic2; - -/* CR6 - 5 */ -typedef enum { - AB8500_CODEC_CR6_ENDMIC3_DISABLED, - AB8500_CODEC_CR6_ENDMIC3_ENABLED -} t_ab8500_codec_cr6_endmic3; - -/* CR6 - 4 */ -typedef enum { - AB8500_CODEC_CR6_ENDMIC4_DISABLED, - AB8500_CODEC_CR6_ENDMIC4_ENABLED -} t_ab8500_codec_cr6_endmic4; - -/* CR6 - 3 */ -typedef enum { - AB8500_CODEC_CR6_ENDMIC5_DISABLED, - AB8500_CODEC_CR6_ENDMIC5_ENABLED -} t_ab8500_codec_cr6_endmic5; - -/* CR6 - 2 */ -typedef enum { - AB8500_CODEC_CR6_ENDMIC6_DISABLED, - AB8500_CODEC_CR6_ENDMIC6_ENABLED -} t_ab8500_codec_cr6_endmic6; - -/* CR7 - 7 */ -typedef enum { - AB8500_CODEC_CR7_MIC1SEL_MIC1A, - AB8500_CODEC_CR7_MIC1SEL_MIC1B -} t_ab8500_codec_cr7_mic1sel; - -/* CR7 - 6 */ -typedef enum { - AB8500_CODEC_CR7_LINRSEL_MIC2, - AB8500_CODEC_CR7_LINRSEL_LINR -} t_ab8500_codec_cr7_linrsel; - -/* CR7 - 5 */ -typedef enum { - AB8500_CODEC_CR7_ENDRVHSL_DISABLED, - AB8500_CODEC_CR7_ENDRVHSL_ENABLED -} t_ab8500_codec_cr7_endrvhsl; - -/* CR7 - 4 */ -typedef enum { - AB8500_CODEC_CR7_ENDRVHSR_DISABLED, - AB8500_CODEC_CR7_ENDRVHSR_ENABLED -} t_ab8500_codec_cr7_endrvhsr; - -/* CR7 - 2 */ -typedef enum { - AB8500_CODEC_CR7_ENADCMIC_DISABLED, - AB8500_CODEC_CR7_ENADCMIC_ENABLED -} t_ab8500_codec_cr7_enadcmic; - -/* CR7 - 1 */ -typedef enum { - AB8500_CODEC_CR7_ENADCLINL_DISABLED, - AB8500_CODEC_CR7_ENADCLINL_ENABLED -} t_ab8500_codec_cr7_enadclinl; - -/* CR7 - 0 */ -typedef enum { - AB8500_CODEC_CR7_ENADCLINR_DISABLED, - AB8500_CODEC_CR7_ENADCLINR_ENABLED -} t_ab8500_codec_cr7_enadclinr; - -/* CR8 - 7 */ -typedef enum { - AB8500_CODEC_CR8_CP_DIS_PLDWN_ENABLED, - AB8500_CODEC_CR8_CP_DIS_PLDWN_DISABLED -} t_ab8500_codec_cr8_cp_dis_pldwn; - -/* CR8 - 6 */ -typedef enum { - AB8500_CODEC_CR8_ENEAR_DISABLED, - AB8500_CODEC_CR8_ENEAR_ENABLED -} t_ab8500_codec_cr8_enear; - -/* CR8 - 5 */ -typedef enum { - AB8500_CODEC_CR8_ENHSL_DISABLED, - AB8500_CODEC_CR8_ENHSL_ENABLED -} t_ab8500_codec_cr8_enhsl; - -/* CR8 - 4 */ -typedef enum { - AB8500_CODEC_CR8_ENHSR_DISABLED, - AB8500_CODEC_CR8_ENHSR_ENABLED -} t_ab8500_codec_cr8_enhsr; - -/* CR8 - 3 */ -typedef enum { - AB8500_CODEC_CR8_ENHFL_DISABLED, - AB8500_CODEC_CR8_ENHFL_ENABLED -} t_ab8500_codec_cr8_enhfl; - -/* CR8 - 2 */ -typedef enum { - AB8500_CODEC_CR8_ENHFR_DISABLED, - AB8500_CODEC_CR8_ENHFR_ENABLED -} t_ab8500_codec_cr8_enhfr; - -/* CR8 - 1 */ -typedef enum { - AB8500_CODEC_CR8_ENVIBL_DISABLED, - AB8500_CODEC_CR8_ENVIBL_ENABLED -} t_ab8500_codec_cr8_envibl; - -/* CR8 - 0 */ -typedef enum { - AB8500_CODEC_CR8_ENVIBR_DISABLED, - AB8500_CODEC_CR8_ENVIBR_ENABLED -} t_ab8500_codec_cr8_envibr; - -/* CR9 - 6 */ -typedef enum { - AB8500_CODEC_CR9_ENDACEAR_DISABLED, - AB8500_CODEC_CR9_ENDACEAR_ENABLED -} t_ab8500_codec_cr9_endacear; - -/* CR9 - 5 */ -typedef enum { - AB8500_CODEC_CR9_ENDACHSL_DISABLED, - AB8500_CODEC_CR9_ENDACHSL_ENABLED -} t_ab8500_codec_cr9_endachsl; - -/* CR9 - 4 */ -typedef enum { - AB8500_CODEC_CR9_ENDACHSR_DISABLED, - AB8500_CODEC_CR9_ENDACHSR_ENABLED -} t_ab8500_codec_cr9_endachsr; - -/* CR9 - 3 */ -typedef enum { - AB8500_CODEC_CR9_ENDACHFL_DISABLED, - AB8500_CODEC_CR9_ENDACHFL_ENABLED -} t_ab8500_codec_cr9_endachfl; - -/* CR9 - 2 */ -typedef enum { - AB8500_CODEC_CR9_ENDACHFR_DISABLED, - AB8500_CODEC_CR9_ENDACHFR_ENABLED -} t_ab8500_codec_cr9_endachfr; - -/* CR9 - 1 */ -typedef enum { - AB8500_CODEC_CR9_ENDACVIBL_DISABLED, - AB8500_CODEC_CR9_ENDACVIBL_ENABLED -} t_ab8500_codec_cr9_endacvibl; - -/* CR9 - 0 */ -typedef enum { - AB8500_CODEC_CR9_ENDACVIBR_DISABLED, - AB8500_CODEC_CR9_ENDACVIBR_ENABLED -} t_ab8500_codec_cr9_endacvibr; - -/* CR10 - 6 */ -typedef enum { - AB8500_CODEC_CR10_MUTEEAR_DISABLED, - AB8500_CODEC_CR10_MUTEEAR_ENABLED -} t_ab8500_codec_cr10_muteear; - -/* CR10 - 5 */ -typedef enum { - AB8500_CODEC_CR10_MUTEHSL_DISABLED, - AB8500_CODEC_CR10_MUTEHSL_ENABLED -} t_ab8500_codec_cr10_mutehsl; - -/* CR10 - 4 */ -typedef enum { - AB8500_CODEC_CR10_MUTEHSR_DISABLED, - AB8500_CODEC_CR10_MUTEHSR_ENABLED -} t_ab8500_codec_cr10_mutehsr; - -/* CR10 - 3 */ -typedef enum { - AB8500_CODEC_CR10_MUTEHFL_DISABLED, - AB8500_CODEC_CR10_MUTEHFL_ENABLED -} t_ab8500_codec_cr10_mutehfl; - -/* CR10 - 2 */ -typedef enum { - AB8500_CODEC_CR10_MUTEHFR_DISABLED, - AB8500_CODEC_CR10_MUTEHFR_ENABLED -} t_ab8500_codec_cr10_mutehfr; - -/* CR10 - 1 */ -typedef enum { - AB8500_CODEC_CR10_MUTEVIBL_DISABLED, - AB8500_CODEC_CR10_MUTEVIBL_ENABLED -} t_ab8500_codec_cr10_mutevibl; - -/* CR10 - 0 */ -typedef enum { - AB8500_CODEC_CR10_MUTEVIBR_DISABLED, - AB8500_CODEC_CR10_MUTEVIBR_ENABLED -} t_ab8500_codec_cr10_mutevibr; - -/* CR11 - 7 */ -typedef enum { - AB8500_CODEC_CR11_EARSHORTPWD_DISABLED, - AB8500_CODEC_CR11_EARSHORTPWD_ENABLED -} t_ab8500_codec_cr11_earshortpwd; - -/* CR11 - 6 */ -typedef enum { - AB8500_CODEC_CR11_EARSHORTDIS_ENABLED, - AB8500_CODEC_CR11_EARSHORTDIS_DISABLED -} t_ab8500_codec_cr11_earshortdis; - -/* CR11 - 5 */ -typedef enum { - AB8500_CODEC_CR11_HSLSHORTDIS_ENABLED, - AB8500_CODEC_CR11_HSLSHORTDIS_DISABLED -} t_ab8500_codec_cr11_hslshortdis; - -/* CR11 - 4 */ -typedef enum { - AB8500_CODEC_CR11_HSRSHORTDIS_ENABLED, - AB8500_CODEC_CR11_HSRSHORTDIS_DISABLED -} t_ab8500_codec_cr11_hsrshortdis; - -/* CR11 - 3 */ -typedef enum { - AB8500_CODEC_CR11_HFLSHORTDIS_ENABLED, - AB8500_CODEC_CR11_HFLSHORTDIS_DISABLED -} t_ab8500_codec_cr11_hflshortdis; - -/* CR11 - 2 */ -typedef enum { - AB8500_CODEC_CR11_HFRSHORTDIS_ENABLED, - AB8500_CODEC_CR11_HFRSHORTDIS_DISABLED -} t_ab8500_codec_cr11_hfrshortdis; - -/* CR11 - 1 */ -typedef enum { - AB8500_CODEC_CR11_VIBLSHORTDIS_ENABLED, - AB8500_CODEC_CR11_VIBLSHORTDIS_DISABLED -} t_ab8500_codec_cr11_viblshortdis; - -/* CR11 - 0 */ -typedef enum { - AB8500_CODEC_CR11_VIBRSHORTDIS_ENABLED, - AB8500_CODEC_CR11_VIBRSHORTDIS_DISABLED -} t_ab8500_codec_cr11_vibrshortdis; - -/* CR12 - 7 */ -typedef enum { - AB8500_CODEC_CR12_ENCPHS_DISABLED, - AB8500_CODEC_CR12_ENCPHS_ENABLED -} t_ab8500_codec_cr12_encphs; - -/* CR12 - 6:4 */ -typedef enum { - AB8500_CODEC_CR12_HSAUTOTIME_6_6USEC, - AB8500_CODEC_CR12_HSAUTOTIME_13_3USEC, - AB8500_CODEC_CR12_HSAUTOTIME_26_6USEC, - AB8500_CODEC_CR12_HSAUTOTIME_53_2USEC, - AB8500_CODEC_CR12_HSAUTOTIME_106_4USEC, - AB8500_CODEC_CR12_HSAUTOTIME_212_8USEC, - AB8500_CODEC_CR12_HSAUTOTIME_425_6USEC, - AB8500_CODEC_CR12_HSAUTOTIME_851_2USEC, -} t_ab8500_codec_cr12_hsautotime; - -/* CR12 - 1 */ -typedef enum { - AB8500_CODEC_CR12_HSAUTOENSEL_DISABLED, - AB8500_CODEC_CR12_HSAUTOENSEL_ENABLED -} t_ab8500_codec_cr12_hsautoensel; - -/* CR12 - 0 */ -typedef enum { - AB8500_CODEC_CR12_HSAUTOEN_DISABLED, - AB8500_CODEC_CR12_HSAUTOEN_ENABLED -} t_ab8500_codec_cr12_hsautoen; - -/* CR13 - 7:4 */ -typedef enum { - AB8500_CODEC_CR13_ENVDET_HTHRESH_25, - AB8500_CODEC_CR13_ENVDET_HTHRESH_50, - AB8500_CODEC_CR13_ENVDET_HTHRESH_100, - AB8500_CODEC_CR13_ENVDET_HTHRESH_150, - AB8500_CODEC_CR13_ENVDET_HTHRESH_200, - AB8500_CODEC_CR13_ENVDET_HTHRESH_250, - AB8500_CODEC_CR13_ENVDET_HTHRESH_300, - AB8500_CODEC_CR13_ENVDET_HTHRESH_350, - AB8500_CODEC_CR13_ENVDET_HTHRESH_400, - AB8500_CODEC_CR13_ENVDET_HTHRESH_450, - AB8500_CODEC_CR13_ENVDET_HTHRESH_500, - AB8500_CODEC_CR13_ENVDET_HTHRESH_550, - AB8500_CODEC_CR13_ENVDET_HTHRESH_600, - AB8500_CODEC_CR13_ENVDET_HTHRESH_650, - AB8500_CODEC_CR13_ENVDET_HTHRESH_700, - AB8500_CODEC_CR13_ENVDET_HTHRESH_750 -} t_ab8500_codec_cr13_envdet_hthresh; - -/* CR13 - 3:0 */ -typedef enum { - AB8500_CODEC_CR13_ENVDET_LTHRESH_25, - AB8500_CODEC_CR13_ENVDET_LTHRESH_50, - AB8500_CODEC_CR13_ENVDET_LTHRESH_100, - AB8500_CODEC_CR13_ENVDET_LTHRESH_150, - AB8500_CODEC_CR13_ENVDET_LTHRESH_200, - AB8500_CODEC_CR13_ENVDET_LTHRESH_250, - AB8500_CODEC_CR13_ENVDET_LTHRESH_300, - AB8500_CODEC_CR13_ENVDET_LTHRESH_350, - AB8500_CODEC_CR13_ENVDET_LTHRESH_400, - AB8500_CODEC_CR13_ENVDET_LTHRESH_450, - AB8500_CODEC_CR13_ENVDET_LTHRESH_500, - AB8500_CODEC_CR13_ENVDET_LTHRESH_550, - AB8500_CODEC_CR13_ENVDET_LTHRESH_600, - AB8500_CODEC_CR13_ENVDET_LTHRESH_650, - AB8500_CODEC_CR13_ENVDET_LTHRESH_700, - AB8500_CODEC_CR13_ENVDET_LTHRESH_750 -} t_ab8500_codec_cr13_envdet_lthresh; - -/* CR14 - 7 */ -typedef enum { - AB8500_CODEC_CR14_SMPSLVEN_HIGHVOLTAGE, - AB8500_CODEC_CR14_SMPSLVEN_LOWVOLTAGE -} t_ab8500_codec_cr14_smpslven; - -/* CR14 - 6 */ -typedef enum { - AB8500_CODEC_CR14_ENVDETSMPSEN_DISABLED, - AB8500_CODEC_CR14_ENVDETSMPSEN_ENABLED -} t_ab8500_codec_cr14_envdetsmpsen; - -/* CR14 - 5 */ -typedef enum { - AB8500_CODEC_CR14_CPLVEN_HIGHVOLTAGE, - AB8500_CODEC_CR14_CPLVEN_LOWVOLTAGE -} t_ab8500_codec_cr14_cplven; - -/* CR14 - 4 */ -typedef enum { - AB8500_CODEC_CR14_ENVDETCPEN_DISABLED, - AB8500_CODEC_CR14_ENVDETCPEN_ENABLED -} t_ab8500_codec_cr14_envdetcpen; - -/* CR14 - 3:0 */ -typedef enum { - AB8500_CODEC_CR14_ENVET_TIME_27USEC, - AB8500_CODEC_CR14_ENVET_TIME_53USEC, - AB8500_CODEC_CR14_ENVET_TIME_106USEC, - AB8500_CODEC_CR14_ENVET_TIME_212USEC, - AB8500_CODEC_CR14_ENVET_TIME_424USEC, - AB8500_CODEC_CR14_ENVET_TIME_848USEC, - AB8500_CODEC_CR14_ENVET_TIME_1MSEC, - AB8500_CODEC_CR14_ENVET_TIME_3MSEC, - AB8500_CODEC_CR14_ENVET_TIME_6MSEC, - AB8500_CODEC_CR14_ENVET_TIME_13MSEC, - AB8500_CODEC_CR14_ENVET_TIME_27MSEC, - AB8500_CODEC_CR14_ENVET_TIME_54MSEC, - AB8500_CODEC_CR14_ENVET_TIME_109MSEC, - AB8500_CODEC_CR14_ENVET_TIME_218MSEC, - AB8500_CODEC_CR14_ENVET_TIME_436MSEC, - AB8500_CODEC_CR14_ENVET_TIME_872MSEC, -} t_ab8500_codec_cr14_envet_time; - -/* CR15 - 7 */ -typedef enum { - AB8500_CODEC_CR15_PWMTOVIBL_DA_PATH, - AB8500_CODEC_CR15_PWMTOVIBL_PWM -} t_ab8500_codec_cr15_pwmtovibl; - -/* CR15 - 6 */ -typedef enum { - AB8500_CODEC_CR15_PWMTOVIBR_DA_PATH, - AB8500_CODEC_CR15_PWMTOVIBR_PWM -} t_ab8500_codec_cr15_pwmtovibr; - -/* CR15 - 5 */ -typedef enum { - AB8500_CODEC_CR15_PWMLCTRL_PWMNPLGPOL, - AB8500_CODEC_CR15_PWMLCTRL_PWMNPLDUTYCYCLE -} t_ab8500_codec_cr15_pwmlctrl; - -/* CR15 - 4 */ -typedef enum { - AB8500_CODEC_CR15_PWMRCTRL_PWMNPRGPOL, - AB8500_CODEC_CR15_PWMRCTRL_PWMNPRDUTYCYCLE -} t_ab8500_codec_cr15_pwmrctrl; - -/* CR15 - 3 */ -typedef enum { - AB8500_CODEC_CR15_PWMNLCTRL_PWMNLGPOL, - AB8500_CODEC_CR15_PWMNLCTRL_PWMNLDUTYCYCLE -} t_ab8500_codec_cr15_pwmnlctrl; - -/* CR15 - 2 */ -typedef enum { - AB8500_CODEC_CR15_PWMPLCTRL_PWMPLGPOL, - AB8500_CODEC_CR15_PWMPLCTRL_PWMPLDUTYCYCLE -} t_ab8500_codec_cr15_pwmplctrl; - -/* CR15 - 1 */ -typedef enum { - AB8500_CODEC_CR15_PWMNRCTRL_PWMNRGPOL, - AB8500_CODEC_CR15_PWMNRCTRL_PWMNRDUTYCYCLE -} t_ab8500_codec_cr15_pwmnrctrl; - -/* CR15 - 0 */ -typedef enum { - AB8500_CODEC_CR15_PWMPRCTRL_PWMPRGPOL, - AB8500_CODEC_CR15_PWMPRCTRL_PWMPRDUTYCYCLE -} t_ab8500_codec_cr15_pwmprctrl; - -/* CR16 - 7 */ -typedef enum { - AB8500_CODEC_CR16_PWMNLPOL_GNDVIB, - AB8500_CODEC_CR16_PWMNLPOL_VINVIB -} t_ab8500_codec_cr16_pwmnlpol; - -/* CR16 - 6:0 */ -typedef t_uint8 t_ab8500_codec_cr16_pwmnldutycycle; - -/* CR17 - 7 */ -typedef enum { - AB8500_CODEC_CR17_PWMPLPOL_GNDVIB, - AB8500_CODEC_CR17_PWMPLPOL_VINVIB -} t_ab8500_codec_cr17_pwmplpol; - -/* CR17 - 6:0 */ -typedef t_uint8 t_ab8500_codec_cr17_pwmpldutycycle; - -/* CR18 - 7 */ -typedef enum { - AB8500_CODEC_CR18_PWMNRPOL_GNDVIB, - AB8500_CODEC_CR18_PWMNRPOL_VINVIB -} t_ab8500_codec_cr18_pwmnrpol; - -/* CR18 - 6:0 */ -typedef t_uint8 t_ab8500_codec_cr18_pwmnrdutycycle; - -/* CR19 - 7 */ -typedef enum { - AB8500_CODEC_CR19_PWMPRPOL_GNDVIB, - AB8500_CODEC_CR19_PWMPRPOL_VINVIB -} t_ab8500_codec_cr19_pwmprpol; - -/* CR19 - 6:0 */ -typedef t_uint8 t_ab8500_codec_cr19_pwmprdutycycle; - -/* CR20 - 7 */ -typedef enum { - AB8500_CODEC_CR20_EN_SE_MIC1_DIFFERENTIAL, - AB8500_CODEC_CR20_EN_SE_MIC1_SINGLE -} t_ab8500_codec_cr20_en_se_mic1; - -/* CR20 - 4:0 */ -typedef t_uint8 t_ab8500_codec_cr20_mic1_gain; - -/* CR21 - 7 */ -typedef enum { - AB8500_CODEC_CR21_EN_SE_MIC2_DIFFERENTIAL, - AB8500_CODEC_CR21_EN_SE_MIC2_SINGLE -} t_ab8500_codec_cr21_en_se_mic2; - -/* CR21 - 4:0 */ -typedef t_uint8 t_ab8500_codec_cr21_mic2_gain; - -/* CR22 - 7:5 */ -typedef t_uint8 t_ab8500_codec_cr22_hsl_gain; - -/* CR22 - 4:0 */ -typedef t_uint8 t_ab8500_codec_cr22_linl_gain; - -/* CR23 - 7:5 */ -typedef t_uint8 t_ab8500_codec_cr23_hsr_gain; - -/* CR23 - 4:0 */ -typedef t_uint8 t_ab8500_codec_cr23_linr_gain; - -/* CR24 - 4:0 */ -typedef t_uint8 t_ab8500_codec_cr24_lintohsl_gain; - -/* CR25 - 4:0 */ -typedef t_uint8 t_ab8500_codec_cr25_lintohsr_gain; - -/* CR26 - 7 */ -typedef enum { - AB8500_CODEC_CR26_AD1NH_FILTER_ENABLED, - AB8500_CODEC_CR26_AD1NH_FILTER_DISABLED -} t_ab8500_codec_cr26_ad1nh; - -/* CR26 - 6 */ -typedef enum { - AB8500_CODEC_CR26_AD2NH_FILTER_ENABLED, - AB8500_CODEC_CR26_AD2NH_FILTER_DISABLED -} t_ab8500_codec_cr26_ad2nh; - -/* CR26 - 5 */ -typedef enum { - AB8500_CODEC_CR26_AD3NH_FILTER_ENABLED, - AB8500_CODEC_CR26_AD3NH_FILTER_DISABLED -} t_ab8500_codec_cr26_ad3nh; - -/* CR26 - 4 */ -typedef enum { - AB8500_CODEC_CR26_AD4NH_FILTER_ENABLED, - AB8500_CODEC_CR26_AD4NH_FILTER_DISABLED -} t_ab8500_codec_cr26_ad4nh; - -/* CR26 - 3 */ -typedef enum { - AB8500_CODEC_CR26_AD1_VOICE_AUDIOFILTER, - AB8500_CODEC_CR26_AD1_VOICE_LOWLATENCYFILTER -} t_ab8500_codec_cr26_ad1_voice; - -/* CR26 - 2 */ -typedef enum { - AB8500_CODEC_CR26_AD2_VOICE_AUDIOFILTER, - AB8500_CODEC_CR26_AD2_VOICE_LOWLATENCYFILTER -} t_ab8500_codec_cr26_ad2_voice; - -/* CR26 - 1 */ -typedef enum { - AB8500_CODEC_CR26_AD3_VOICE_AUDIOFILTER, - AB8500_CODEC_CR26_AD3_VOICE_LOWLATENCYFILTER -} t_ab8500_codec_cr26_ad3_voice; - -/* CR26 - 0 */ -typedef enum { - AB8500_CODEC_CR26_AD4_VOICE_AUDIOFILTER, - AB8500_CODEC_CR26_AD4_VOICE_LOWLATENCYFILTER -} t_ab8500_codec_cr26_ad4_voice; - -/* CR27 - 7 */ -typedef enum { - AB8500_CODEC_CR27_EN_MASTGEN_DISABLED, - AB8500_CODEC_CR27_EN_MASTGEN_ENABLED -} t_ab8500_codec_cr27_en_mastgen; - -/* CR27 - 6:5 */ -typedef enum { - AB8500_CODEC_CR27_IF1_BITCLK_OSR_32, - AB8500_CODEC_CR27_IF1_BITCLK_OSR_64, - AB8500_CODEC_CR27_IF1_BITCLK_OSR_128, - AB8500_CODEC_CR27_IF1_BITCLK_OSR_256 -} t_ab8500_codec_cr27_if1_bitclk_osr; - -/* CR27 - 4 */ -typedef enum { - AB8500_CODEC_CR27_ENFS_BITCLK1_DISABLED, - AB8500_CODEC_CR27_ENFS_BITCLK1_ENABLED -} t_ab8500_codec_cr27_enfs_bitclk1; - -/* CR27 - 2:1 */ -typedef enum { - AB8500_CODEC_CR27_IF0_BITCLK_OSR_32, - AB8500_CODEC_CR27_IF0_BITCLK_OSR_64, - AB8500_CODEC_CR27_IF0_BITCLK_OSR_128, - AB8500_CODEC_CR27_IF0_BITCLK_OSR_256 -} t_ab8500_codec_cr27_if0_bitclk_osr; - -/* CR27 - 0 */ -typedef enum { - AB8500_CODEC_CR27_ENFS_BITCLK0_DISABLED, - AB8500_CODEC_CR27_ENFS_BITCLK0_ENABLED -} t_ab8500_codec_cr27_enfs_bitclk0; - -/* CR28 - 6 */ -typedef enum { - AB8500_CODEC_CR28_FSYNC0P_RISING_EDGE, - AB8500_CODEC_CR28_FSYNC0P_FALLING_EDGE -} t_ab8500_codec_cr28_fsync0p; - -/* CR28 - 5 */ -typedef enum { - AB8500_CODEC_CR28_BITCLK0P_RISING_EDGE, - AB8500_CODEC_CR28_BITCLK0P_FALLING_EDGE -} t_ab8500_codec_cr28_bitclk0p; - -/* CR28 - 4 */ -typedef enum { - AB8500_CODEC_CR28_IF0DEL_NOT_DELAYED, - AB8500_CODEC_CR28_IF0DEL_DELAYED -} t_ab8500_codec_cr28_if0del; - -/* CR28 - 3:2 */ -typedef enum { - AB8500_CODEC_CR28_IF0FORMAT_DISABLED, - AB8500_CODEC_CR28_IF0FORMAT_TDM, - AB8500_CODEC_CR28_IF0FORMAT_I2S_LEFTALIGNED -} t_ab8500_codec_cr28_if0format; - -/* CR28 - 1:0 */ -typedef enum { - AB8500_CODEC_CR28_IF0WL_16BITS, - AB8500_CODEC_CR28_IF0WL_20BITS, - AB8500_CODEC_CR28_IF0WL_24BITS, - AB8500_CODEC_CR28_IF0WL_32BITS -} t_ab8500_codec_cr28_if0wl; - -/* CR29 - 7 */ -typedef enum { - AB8500_CODEC_CR29_IF0DATOIF1AD_NOTSENT, - AB8500_CODEC_CR29_IF0DATOIF1AD_SENT -} t_ab8500_codec_cr29_if0datoif1ad; - -/* CR29 - 6 */ -typedef enum { - AB8500_CODEC_CR29_IF0CKTOIF1CK_NOTSENT, - AB8500_CODEC_CR29_IF0CKTOIF1CK_SENT -} t_ab8500_codec_cr29_if0cktoif1ck; - -/* CR29 - 5 */ -typedef enum { - AB8500_CODEC_CR29_IF1MASTER_FS1CK1_INPUT, - AB8500_CODEC_CR29_IF1MASTER_FS1CK1_OUTPUT -} t_ab8500_codec_cr29_if1master; - -/* CR29 - 3 */ -typedef enum { - AB8500_CODEC_CR29_IF1DATOIF0AD_NOTSENT, - AB8500_CODEC_CR29_IF1DATOIF0AD_SENT -} t_ab8500_codec_cr29_if1datoif0ad; - -/* CR29 - 2 */ -typedef enum { - AB8500_CODEC_CR29_IF1CKTOIF0CK_NOTSENT, - AB8500_CODEC_CR29_IF1CKTOIF0CK_SENT -} t_ab8500_codec_cr29_if1cktoif0ck; - -/* CR29 - 1 */ -typedef enum { - AB8500_CODEC_CR29_IF0MASTER_FS0CK0_INPUT, - AB8500_CODEC_CR29_IF0MASTER_FS0CK0_OUTPUT -} t_ab8500_codec_cr29_if0master; - -/* CR29 - 0 */ -typedef enum { - AB8500_CODEC_CR29_IF0BFIFOEN_NORMAL_MODE, - AB8500_CODEC_CR29_IF0BFIFOEN_BURST_MODE -} t_ab8500_codec_cr29_if0bfifoen; - -/* CR30 - 6 */ -typedef enum { - AB8500_CODEC_CR30_FSYNC1P_RISING_EDGE, - AB8500_CODEC_CR30_FSYNC1P_FALLING_EDGE -} t_ab8500_codec_cr30_fsync1p; - -/* CR30 - 5 */ -typedef enum { - AB8500_CODEC_CR30_BITCLK1P_RISING_EDGE, - AB8500_CODEC_CR30_BITCLK1P_FALLING_EDGE -} t_ab8500_codec_cr30_bitclk1p; - -/* CR30 - 4 */ -typedef enum { - AB8500_CODEC_CR30_IF1DEL_NOT_DELAYED, - AB8500_CODEC_CR30_IF1DEL_DELAYED -} t_ab8500_codec_cr30_if1del; - -/* CR30 - 3:2 */ -typedef enum { - AB8500_CODEC_CR30_IF1FORMAT_DISABLED, - AB8500_CODEC_CR30_IF1FORMAT_TDM, - AB8500_CODEC_CR30_IF1FORMAT_I2S_LEFTALIGNED -} t_ab8500_codec_cr30_if1format; - -/* CR30 - 1:0 */ -typedef enum { - AB8500_CODEC_CR30_IF1WL_16BITS, - AB8500_CODEC_CR30_IF1WL_20BITS, - AB8500_CODEC_CR30_IF1WL_24BITS, - AB8500_CODEC_CR30_IF1WL_32BITS -} t_ab8500_codec_cr30_if1wl; - -/* CR31:46 - 7:4 or 3:0 */ -/* In ab8500_codec.h */ - -/* CR47:50 - 7/6/5/4/3/2/1/0 */ -typedef enum { - AB8500_CODEC_CR47_TO_CR50_HIZ_SL_LOW_IMPEDANCE, - AB8500_CODEC_CR47_TO_CR50_HIZ_SL_HIGH_IMPEDANCE, -} t_ab8500_codec_cr47_to_cr50_hiz_sl; - -/* CR51 - 7 */ -typedef enum { - AB8500_CODEC_CR51_DA12_VOICE_AUDIOFILTER, - AB8500_CODEC_CR51_DA12_VOICE_LOWLATENCYFILTER -} t_ab8500_codec_cr51_da12_voice; - -/* CR51 - 5 */ -typedef enum { - AB8500_CODEC_CR51_SLDAI1TOSLADO1_NOT_LOOPEDBACK, - AB8500_CODEC_CR51_SLDAI1TOSLADO1_LOOPEDBACK -} t_ab8500_codec_cr51_sldai1toslado1; - -/* CR51:56 - 4:0 */ -/* In ab8500_codec.h */ - -/* CR52 - 5 */ -typedef enum { - AB8500_CODEC_CR52_SLDAI2TOSLADO2_NOT_LOOPEDBACK, - AB8500_CODEC_CR52_SLDAI2TOSLADO2_LOOPEDBACK -} t_ab8500_codec_cr52_sldai2toslado2; - -/* CR53 - 7 */ -typedef enum { - AB8500_CODEC_CR53_DA34_VOICE_AUDIOFILTER, - AB8500_CODEC_CR53_DA34_VOICE_LOWLATENCYFILTER -} t_ab8500_codec_cr53_da34_voice; - -/* CR53 - 5 */ -typedef enum { - AB8500_CODEC_CR53_SLDAI3TOSLADO3_NOT_LOOPEDBACK, - AB8500_CODEC_CR53_SLDAI3TOSLADO3_LOOPEDBACK -} t_ab8500_codec_cr53_sldai3toslado3; - -/* CR54 - 5 */ -typedef enum { - AB8500_CODEC_CR54_SLDAI4TOSLADO4_NOT_LOOPEDBACK, - AB8500_CODEC_CR54_SLDAI4TOSLADO4_LOOPEDBACK -} t_ab8500_codec_cr54_sldai4toslado4; - -/* CR55 - 7 */ -typedef enum { - AB8500_CODEC_CR55_DA56_VOICE_AUDIOFILTER, - AB8500_CODEC_CR55_DA56_VOICE_LOWLATENCYFILTER -} t_ab8500_codec_cr55_da56_voice; - -/* CR55 - 6:5 */ -typedef enum { - AB8500_CODEC_CR55_SLDAI5TOSLADO5_NOT_LOOPEDBACK, - AB8500_CODEC_CR55_SLDAI5TOSLADO5_DA_IN1_LOOPEDBACK, - AB8500_CODEC_CR55_SLDAI5TOSLADO5_DA_IN3_LOOPEDBACK, - AB8500_CODEC_CR55_SLDAI5TOSLADO5_DA_IN5_LOOPEDBACK -} t_ab8500_codec_cr55_sldai5toslado5; - -/* CR56 - 6:5 */ -typedef enum { - AB8500_CODEC_CR56_SLDAI6TOSLADO7_NOT_LOOPEDBACK, - AB8500_CODEC_CR56_SLDAI6TOSLADO7_DA_IN2_LOOPEDBACK, - AB8500_CODEC_CR56_SLDAI6TOSLADO7_DA_IN4_LOOPEDBACK, - AB8500_CODEC_CR56_SLDAI6TOSLADO7_DA_IN6_LOOPEDBACK -} t_ab8500_codec_cr56_sldai6toslado7; - -/* CR57 - 6 */ -typedef enum { - AB8500_CODEC_CR57_BFIFULL_MSK_MASKED, - AB8500_CODEC_CR57_BFIFULL_MSK_ENABLED -} t_ab8500_codec_cr57_bfifull_msk; - -/* CR57 - 5 */ -typedef enum { - AB8500_CODEC_CR57_BFIEMPT_MSK_MASKED, - AB8500_CODEC_CR57_BFIEMPT_MSK_ENABLED -} t_ab8500_codec_cr57_bfiempt_msk; - -/* CR57 - 4 */ -typedef enum { - AB8500_CODEC_CR57_DACHAN_MSK_MASKED, - AB8500_CODEC_CR57_DACHAN_MSK_ENABLED -} t_ab8500_codec_cr57_dachan_msk; - -/* CR57 - 3 */ -typedef enum { - AB8500_CODEC_CR57_GAIN_MSK_MASKED, - AB8500_CODEC_CR57_GAIN_MSK_ENABLED -} t_ab8500_codec_cr57_gain_msk; - -/* CR57 - 2 */ -typedef enum { - AB8500_CODEC_CR57_DSPAD_MSK_MASKED, - AB8500_CODEC_CR57_DSPAD_MSK_ENABLED -} t_ab8500_codec_cr57_dspad_msk; - -/* CR57 - 1 */ -typedef enum { - AB8500_CODEC_CR57_DSPDA_MSK_MASKED, - AB8500_CODEC_CR57_DSPDA_MSK_ENABLED -} t_ab8500_codec_cr57_dspda_msk; - -/* CR57 - 0 */ -typedef enum { - AB8500_CODEC_CR57_STFIR_MSK_MASKED, - AB8500_CODEC_CR57_STFIR_MSK_ENABLED -} t_ab8500_codec_cr57_stfir_msk; - -/* CR58 - Read Only */ -/* CR58 - 6 */ -typedef enum { - AB8500_CODEC_CR58_BFIFULL_EV_NOT_FULL, - AB8500_CODEC_CR58_BFIFULL_EV_FULL -} t_ab8500_codec_cr58_bfifull_ev; - -/* CR58 - 5 */ -typedef enum { - AB8500_CODEC_CR58_BFIEMPT_EV_NOT_EMPTY, - AB8500_CODEC_CR58_BFIEMPT_EV_EMPTY -} t_ab8500_codec_cr58_bfiempt_ev; - -/* CR58 - 4 */ -typedef enum { - AB8500_CODEC_CR58_DACHAN_EV_NO_SATURATION, - AB8500_CODEC_CR58_DACHAN_EV_SATURATION -} t_ab8500_codec_cr58_dachan_ev; - -/* CR58 - 3 */ -typedef enum { - AB8500_CODEC_CR58_GAIN_EV_NO_SATURATION, - AB8500_CODEC_CR58_GAIN_EV_SATURATION -} t_ab8500_codec_cr58_gain_ev; - -/* CR58 - 2 */ -typedef enum { - AB8500_CODEC_CR58_DSPAD_EV_NO_SATURATION, - AB8500_CODEC_CR58_DSPAD_EV_SATURATION -} t_ab8500_codec_cr58_dspad_ev; - -/* CR58 - 1 */ -typedef enum { - AB8500_CODEC_CR58_DSPDA_EV_NO_SATURATION, - AB8500_CODEC_CR58_DSPDA_EV_SATURATION -} t_ab8500_codec_cr58_dspda_ev; - -/* CR58 - 0 */ -typedef enum { - AB8500_CODEC_CR58_STFIR_EV_NO_SATURATION, - AB8500_CODEC_CR58_STFIR_EV_SATURATION -} t_ab8500_codec_cr58_stfir_ev; - -/* CR59 - 7 */ -typedef enum { - AB8500_CODEC_CR59_VSSREADY_MSK_MASKED, - AB8500_CODEC_CR59_VSSREADY_MSK_ENABLED -} t_ab8500_codec_cr59_vssready_msk; - -/* CR59 - 6 */ -typedef enum { - AB8500_CODEC_CR59_SHRTVIBL_MSK_MASKED, - AB8500_CODEC_CR59_SHRTVIBL_MSK_ENABLED -} t_ab8500_codec_cr59_shrtvibl_msk; - -/* CR59 - 5 */ -typedef enum { - AB8500_CODEC_CR59_SHRTVIBR_MSK_MASKED, - AB8500_CODEC_CR59_SHRTVIBR_MSK_ENABLED -} t_ab8500_codec_cr59_shrtvibr_msk; - -/* CR59 - 4 */ -typedef enum { - AB8500_CODEC_CR59_SHRTHFL_MSK_MASKED, - AB8500_CODEC_CR59_SHRTHFL_MSK_ENABLED -} t_ab8500_codec_cr59_shrthfl_msk; - -/* CR59 - 3 */ -typedef enum { - AB8500_CODEC_CR59_SHRTHFR_MSK_MASKED, - AB8500_CODEC_CR59_SHRTHFR_MSK_ENABLED -} t_ab8500_codec_cr59_shrthfr_msk; - -/* CR59 - 2 */ -typedef enum { - AB8500_CODEC_CR59_SHRTHSL_MSK_MASKED, - AB8500_CODEC_CR59_SHRTHSL_MSK_ENABLED -} t_ab8500_codec_cr59_shrthsl_msk; - -/* CR59 - 1 */ -typedef enum { - AB8500_CODEC_CR59_SHRTHSR_MSK_MASKED, - AB8500_CODEC_CR59_SHRTHSR_MSK_ENABLED -} t_ab8500_codec_cr59_shrthsr_msk; - -/* CR59 - 0 */ -typedef enum { - AB8500_CODEC_CR59_SHRTEAR_MSK_MASKED, - AB8500_CODEC_CR59_SHRTEAR_MSK_ENABLED -} t_ab8500_codec_cr59_shrtear_msk; - -/* CR60 - Read Only */ -/* CR60 - 7 */ -typedef enum { - AB8500_CODEC_CR60_VSSREADY_EV_NOT_READY, - AB8500_CODEC_CR60_VSSREADY_EV_READY -} t_ab8500_codec_cr60_vssready_ev; - -/* CR60 - 6 */ -typedef enum { - AB8500_CODEC_CR60_SHRTVIBL_EV_NO_SHORTCIRCUIT, - AB8500_CODEC_CR60_SHRTVIBL_EV_SHORTCIRCUIT -} t_ab8500_codec_cr60_shrtvibl_ev; - -/* CR60 - 5 */ -typedef enum { - AB8500_CODEC_CR60_SHRTVIBR_EV_NO_SHORTCIRCUIT, - AB8500_CODEC_CR60_SHRTVIBR_EV_SHORTCIRCUIT -} t_ab8500_codec_cr60_shrtvibr_ev; - -/* CR60 - 4 */ -typedef enum { - AB8500_CODEC_CR60_SHRTHFL_EV_NO_SHORTCIRCUIT, - AB8500_CODEC_CR60_SHRTHFL_EV_SHORTCIRCUIT -} t_ab8500_codec_cr60_shrthfl_ev; - -/* CR60 - 3 */ -typedef enum { - AB8500_CODEC_CR60_SHRTHFR_EV_NO_SHORTCIRCUIT, - AB8500_CODEC_CR60_SHRTHFR_EV_SHORTCIRCUIT -} t_ab8500_codec_cr60_shrthfr_ev; - -/* CR60 - 2 */ -typedef enum { - AB8500_CODEC_CR60_SHRTHSL_EV_NO_SHORTCIRCUIT, - AB8500_CODEC_CR60_SHRTHSL_EV_SHORTCIRCUIT -} t_ab8500_codec_cr60_shrthsl_ev; - -/* CR60 - 1 */ -typedef enum { - AB8500_CODEC_CR60_SHRTHSR_EV_NO_SHORTCIRCUIT, - AB8500_CODEC_CR60_SHRTHSR_EV_SHORTCIRCUIT -} t_ab8500_codec_cr60_shrthsr_ev; - -/* CR60 - 0 */ -typedef enum { - AB8500_CODEC_CR60_SHRTEAR_EV_NO_SHORTCIRCUIT, - AB8500_CODEC_CR60_SHRTEAR_EV_SHORTCIRCUIT -} t_ab8500_codec_cr60_shrtear_ev; - -/* CR61 - 6:2 - Read Only */ -typedef enum { - AB8500_CODEC_CR61_REVISION_1_0, - AB8500_CODEC_CR61_REVISION_TBD -} t_ab8500_codec_cr61_revision; - -/* CR61 - 1:0 */ -typedef enum { - AB8500_CODEC_CR61_FADE_SPEED_1MS, - AB8500_CODEC_CR61_FADE_SPEED_4MS, - AB8500_CODEC_CR61_FADE_SPEED_8MS, - AB8500_CODEC_CR61_FADE_SPEED_16MS -} t_ab8500_codec_cr61_fade_speed; - -/* CR62 - Read Only */ -/* CR62 - 5 */ -typedef enum { - AB8500_CODEC_CR62_DMIC1SINC3_SINC5_SELECTED, - AB8500_CODEC_CR62_DMIC1SINC3_SINC3_SELECTED -} t_ab8500_codec_cr62_dmic1sinc3; - -/* CR62 - 4 */ -typedef enum { - AB8500_CODEC_CR62_DMIC2SINC3_SINC5_SELECTED, - AB8500_CODEC_CR62_DMIC2SINC3_SINC3_SELECTED -} t_ab8500_codec_cr62_dmic2sinc3; - -/* CR62 - 3 */ -typedef enum { - AB8500_CODEC_CR62_DMIC3SINC3_SINC5_SELECTED, - AB8500_CODEC_CR62_DMIC3SINC3_SINC3_SELECTED -} t_ab8500_codec_cr62_dmic3sinc3; - -/* CR62 - 2 */ -typedef enum { - AB8500_CODEC_CR62_DMIC4SINC3_SINC5_SELECTED, - AB8500_CODEC_CR62_DMIC4SINC3_SINC3_SELECTED -} t_ab8500_codec_cr62_dmic4sinc3; - -/* CR62 - 1 */ -typedef enum { - AB8500_CODEC_CR62_DMIC5SINC3_SINC5_SELECTED, - AB8500_CODEC_CR62_DMIC5SINC3_SINC3_SELECTED -} t_ab8500_codec_cr62_dmic5sinc3; - -/* CR62 - 0 */ -typedef enum { - AB8500_CODEC_CR62_DMIC6SINC3_SINC5_SELECTED, - AB8500_CODEC_CR62_DMIC6SINC3_SINC3_SELECTED -} t_ab8500_codec_cr62_dmic6sinc3; - -/* CR63 - 7 */ -typedef enum { - AB8500_CODEC_CR63_DATOHSLEN_DISABLED, - AB8500_CODEC_CR63_DATOHSLEN_ENABLED -} t_ab8500_codec_cr63_datohslen; - -/* CR63 - 6 */ -typedef enum { - AB8500_CODEC_CR63_DATOHSREN_DISABLED, - AB8500_CODEC_CR63_DATOHSREN_ENABLED -} t_ab8500_codec_cr63_datohsren; - -/* CR63 - 5 */ -typedef enum { - AB8500_CODEC_CR63_AD1SEL_LINLADL_SELECTED, - AB8500_CODEC_CR63_AD1SEL_DMIC1_SELECTED -} t_ab8500_codec_cr63_ad1sel; - -/* CR63 - 4 */ -typedef enum { - AB8500_CODEC_CR63_AD2SEL_LINRADR_SELECTED, - AB8500_CODEC_CR63_AD2SEL_DMIC2_SELECTED -} t_ab8500_codec_cr63_ad2sel; - -/* CR63 - 3 */ -typedef enum { - AB8500_CODEC_CR63_AD3SEL_ADMO_SELECTED, - AB8500_CODEC_CR63_AD3SEL_DMIC3_SELECTED -} t_ab8500_codec_cr63_ad3sel; - -/* CR63 - 2 */ -typedef enum { - AB8500_CODEC_CR63_AD5SEL_AMADR_SELECTED, - AB8500_CODEC_CR63_AD5SEL_DMIC5_SELECTED -} t_ab8500_codec_cr63_ad5sel; - -/* CR63 - 1 */ -typedef enum { - AB8500_CODEC_CR63_AD6SEL_ADMO_SELECTED, - AB8500_CODEC_CR63_AD6SEL_DMIC6_SELECTED -} t_ab8500_codec_cr63_ad6sel; - -/* CR63 - 0 */ -typedef enum { - AB8500_CODEC_CR63_ANCSEL_NOT_MIXED_IN_EAR, - AB8500_CODEC_CR63_ANCSEL_MIXED_IN_EAR -} t_ab8500_codec_cr63_ancsel; - -/* CR64 - 7 */ -typedef enum { - AB8500_CODEC_CR64_DATOHFREN_NOT_MIXED_TO_HFR, - AB8500_CODEC_CR64_DATOHFREN_MIXED_TO_HFR -} t_ab8500_codec_cr64_datohfren; - -/* CR64 - 6 */ -typedef enum { - AB8500_CODEC_CR64_DATOHFLEN_NOT_MIXED_TO_HFL, - AB8500_CODEC_CR64_DATOHFLEN_MIXED_TO_HFL -} t_ab8500_codec_cr64_datohflen; - -/* CR64 - 5 */ -typedef enum { - AB8500_CODEC_CR64_HFRSEL_DA4_MIXED_TO_HFR, - AB8500_CODEC_CR64_HFRSEL_ANC_MIXED_TO_HFR -} t_ab8500_codec_cr64_hfrsel; - -/* CR64 - 4 */ -typedef enum { - AB8500_CODEC_CR64_HFLSEL_DA3_MIXED_TO_HFL, - AB8500_CODEC_CR64_HFLSEL_ANC_MIXED_TO_HFL -} t_ab8500_codec_cr64_hflsel; - -/* CR64 - 3:2 */ -typedef enum { - AB8500_CODEC_CR64_STFIR1SEL_AD_OUT1_SELECTED, - AB8500_CODEC_CR64_STFIR1SEL_AD_OUT3_SELECTED, - AB8500_CODEC_CR64_STFIR1SEL_DA_IN1_SELECTED -} t_ab8500_codec_cr64_stfir1sel; - -/* CR64 - 1:0 */ -typedef enum { - AB8500_CODEC_CR64_STFIR2SEL_AD_OUT2_SELECTED, - AB8500_CODEC_CR64_STFIR2SEL_AD_OUT4_SELECTED, - AB8500_CODEC_CR64_STFIR2SEL_DA_IN2_SELECTED -} t_ab8500_codec_cr64_stfir2sel; - -/* CR65 - 6 */ -typedef enum { - AB8500_CODEC_CR65_FADEDIS_AD1_ENABLED, - AB8500_CODEC_CR65_FADEDIS_AD1_DISABLED -} t_ab8500_codec_cr65_fadedis_ad1; - -/* CR65 - 5:0 */ -typedef t_uint8 t_ab8500_codec_cr65_ad1gain; - -/* CR66 - 6 */ -typedef enum { - AB8500_CODEC_CR66_FADEDIS_AD2_ENABLED, - AB8500_CODEC_CR66_FADEDIS_AD2_DISABLED -} t_ab8500_codec_cr66_fadedis_ad2; - -/* CR66 - 5:0 */ -typedef t_uint8 t_ab8500_codec_cr66_ad2gain; - -/* CR67 - 6 */ -typedef enum { - AB8500_CODEC_CR67_FADEDIS_AD3_ENABLED, - AB8500_CODEC_CR67_FADEDIS_AD3_DISABLED -} t_ab8500_codec_cr67_fadedis_ad3; - -/* CR67 - 5:0 */ -typedef t_uint8 t_ab8500_codec_cr67_ad3gain; - -/* CR68 - 6 */ -typedef enum { - AB8500_CODEC_CR68_FADEDIS_AD4_ENABLED, - AB8500_CODEC_CR68_FADEDIS_AD4_DISABLED -} t_ab8500_codec_cr68_fadedis_ad4; - -/* CR68 - 5:0 */ -typedef t_uint8 t_ab8500_codec_cr68_ad4gain; - -/* CR69 - 6 */ -typedef enum { - AB8500_CODEC_CR69_FADEDIS_AD5_ENABLED, - AB8500_CODEC_CR69_FADEDIS_AD5_DISABLED -} t_ab8500_codec_cr69_fadedis_ad5; - -/* CR69 - 5:0 */ -typedef t_uint8 t_ab8500_codec_cr69_ad5gain; - -/* CR70 - 6 */ -typedef enum { - AB8500_CODEC_CR70_FADEDIS_AD6_ENABLED, - AB8500_CODEC_CR70_FADEDIS_AD6_DISABLED -} t_ab8500_codec_cr70_fadedis_ad6; - -/* CR70 - 5:0 */ -typedef t_uint8 t_ab8500_codec_cr70_ad6gain; - -/* CR71 - 6 */ -typedef enum { - AB8500_CODEC_CR71_FADEDIS_DA1_ENABLED, - AB8500_CODEC_CR71_FADEDIS_DA1_DISABLED -} t_ab8500_codec_cr71_fadedis_da1; - -/* CR71 - 5:0 */ -typedef t_uint8 t_ab8500_codec_cr71_da1gain; - -/* CR72 - 6 */ -typedef enum { - AB8500_CODEC_CR72_FADEDIS_DA2_ENABLED, - AB8500_CODEC_CR72_FADEDIS_DA2_DISABLED -} t_ab8500_codec_cr72_fadedis_da2; - -/* CR72 - 5:0 */ -typedef t_uint8 t_ab8500_codec_cr72_da2gain; - -/* CR73 - 6 */ -typedef enum { - AB8500_CODEC_CR73_FADEDIS_DA3_ENABLED, - AB8500_CODEC_CR73_FADEDIS_DA3_DISABLED -} t_ab8500_codec_cr73_fadedis_da3; - -/* CR73 - 5:0 */ -typedef t_uint8 t_ab8500_codec_cr73_da3gain; - -/* CR74 - 6 */ -typedef enum { - AB8500_CODEC_CR74_FADEDIS_DA4_ENABLED, - AB8500_CODEC_CR74_FADEDIS_DA4_DISABLED -} t_ab8500_codec_cr74_fadedis_da4; - -/* CR74 - 5:0 */ -typedef t_uint8 t_ab8500_codec_cr74_da4gain; - -/* CR75 - 6 */ -typedef enum { - AB8500_CODEC_CR75_FADEDIS_DA5_ENABLED, - AB8500_CODEC_CR75_FADEDIS_DA5_DISABLED -} t_ab8500_codec_cr75_fadedis_da5; - -/* CR75 - 5:0 */ -typedef t_uint8 t_ab8500_codec_cr75_da5gain; - -/* CR76 - 6 */ -typedef enum { - AB8500_CODEC_CR76_FADEDIS_DA6_ENABLED, - AB8500_CODEC_CR76_FADEDIS_DA6_DISABLED -} t_ab8500_codec_cr76_fadedis_da6; - -/* CR76 - 5:0 */ -typedef t_uint8 t_ab8500_codec_cr76_da6gain; - -/* CR77 - 6 */ -typedef enum { - AB8500_CODEC_CR77_FADEDIS_AD1L_TO_HFL_ENABLED, - AB8500_CODEC_CR77_FADEDIS_AD1L_TO_HFL_DISABLED -} t_ab8500_codec_cr77_fadedis_ad1l; - -/* CR77 - 5:0 */ -typedef t_uint8 t_ab8500_codec_cr77_ad1lbgain_to_hfl; - -/* CR78 - 6 */ -typedef enum { - AB8500_CODEC_CR78_FADEDIS_AD2L_TO_HFR_ENABLED, - AB8500_CODEC_CR78_FADEDIS_AD2L_TO_HFR_DISABLED -} t_ab8500_codec_cr78_fadedis_ad2l; - -/* CR78 - 5:0 */ -typedef t_uint8 t_ab8500_codec_cr78_ad2lbgain_to_hfr; - -/* CR79 - 7 */ -typedef enum { - AB8500_CODEC_CR79_HSSINC1_SINC3_CHOOSEN, - AB8500_CODEC_CR79_HSSINC1_SINC1_CHOOSEN -} t_ab8500_codec_cr79_hssinc1; - -/* CR79 - 4 */ -typedef enum { - AB8500_CODEC_CR79_FADEDIS_HSL_ENABLED, - AB8500_CODEC_CR79_FADEDIS_HSL_DISABLED -} t_ab8500_codec_cr79_fadedis_hsl; - -/* CR79 - 3:0 */ -typedef t_uint8 t_ab8500_codec_cr79_hsldgain; - -/* CR80 - 4 */ -typedef enum { - AB8500_CODEC_CR80_FADEDIS_HSR_ENABLED, - AB8500_CODEC_CR80_FADEDIS_HSR_DISABLED -} t_ab8500_codec_cr80_fadedis_hsr; - -/* CR80 - 3:0 */ -typedef t_uint8 t_ab8500_codec_cr80_hsrdgain; - -/* CR81 - 4:0 */ -typedef t_uint8 t_ab8500_codec_cr81_stfir1gain; - -/* CR82 - 4:0 */ -typedef t_uint8 t_ab8500_codec_cr82_stfir2gain; - -/* CR83 - 2 */ -typedef enum { - AB8500_CODEC_CR83_ENANC_DISABLED, - AB8500_CODEC_CR83_ENANC_ENABLED -} t_ab8500_codec_cr83_enanc; - -/* CR83 - 1 */ -typedef enum { - AB8500_CODEC_CR83_ANCIIRINIT_NOT_STARTED, - AB8500_CODEC_CR83_ANCIIRINIT_STARTED -} t_ab8500_codec_cr83_anciirinit; - -/* CR83 - 0 */ -typedef enum { - AB8500_CODEC_CR83_ANCFIRUPDATE_RESETTED, - AB8500_CODEC_CR83_ANCFIRUPDATE_NOT_RESETTED -} t_ab8500_codec_cr83_ancfirupdate; - -/* CR84 - 4:0 */ -typedef t_uint8 t_ab8500_codec_cr84_ancinshift; - -/* CR85 - 4:0 */ -typedef t_uint8 t_ab8500_codec_cr85_ancfiroutshift; - -/* CR86 - 4:0 */ -typedef t_uint8 t_ab8500_codec_cr86_ancshiftout; - -/* CR87 - 7:0 */ -typedef t_uint8 t_ab8500_codec_cr87_ancfircoeff_msb; - -/* CR88 - 7:0 */ -typedef t_uint8 t_ab8500_codec_cr88_ancfircoeff_lsb; - -/* CR89 - 7:0 */ -typedef t_uint8 t_ab8500_codec_cr89_anciircoeff_msb; - -/* CR90 - 7:0 */ -typedef t_uint8 t_ab8500_codec_cr90_anciircoeff_lsb; - -/* CR91 - 7:0 */ -typedef t_uint8 t_ab8500_codec_cr91_ancwarpdel_msb; - -/* CR92 - 7:0 */ -typedef t_uint8 t_ab8500_codec_cr92_ancwarpdel_lsb; - -/* CR93 - Read Only */ -/* CR93 - 7:0 */ -typedef t_uint8 t_ab8500_codec_cr93_ancfirpeak_msb; - -/* CR94 - Read Only */ -/* CR94 - 7:0 */ -typedef t_uint8 t_ab8500_codec_cr94_ancfirpeak_lsb; - -/* CR95 - Read Only */ -/* CR95 - 7:0 */ -typedef t_uint8 t_ab8500_codec_cr95_anciirpeak_msb; - -/* CR96 - Read Only */ -/* CR96 - 7:0 */ -typedef t_uint8 t_ab8500_codec_cr96_anciirpeak_lsb; - -/* CR97 - 7 */ -typedef enum { - AB8500_CODEC_CR97_STFIR_SET_LAST_NOT_APPLIED, - AB8500_CODEC_CR97_STFIR_SET_LAST_APPLIED -} t_ab8500_codec_cr97_stfir_set; - -/* CR97 - 6:0 */ -typedef t_uint8 t_ab8500_codec_cr97_stfir_addr; - -/* CR98 - 7:0 */ -typedef t_uint8 t_ab8500_codec_cr98_stfir_coeff_msb; - -/* CR99 - 7:0 */ -typedef t_uint8 t_ab8500_codec_cr99_stfir_coeff_lsb; - -/* CR100 - 2 */ -typedef enum { - AB8500_CODEC_CR100_ENSTFIRS_DISABLED, - AB8500_CODEC_CR100_ENSTFIRS_ENABLED -} t_ab8500_codec_cr100_enstfirs; - -/* CR100 - 1 */ -typedef enum { - AB8500_CODEC_CR100_STFIRSTOIF1_AUD_IF0_DATA_RATE, - AB8500_CODEC_CR100_STFIRSTOIF1_AUD_IF1_DATA_RATE -} t_ab8500_codec_cr100_stfirstoif1; - -/* CR100 - 0 */ -typedef enum { - AB8500_CODEC_CR100_STFIR_BUSY_READY, - AB8500_CODEC_CR100_STFIR_BUSY_NOT_READY -} t_ab8500_codec_cr100_stfir_busy; - -/* CR101 - 7 */ -typedef enum { - AB8500_CODEC_CR101_PARLHF_INDEPENDENT, - AB8500_CODEC_CR101_PARLHF_BRIDGED -} t_ab8500_codec_cr101_parlhf; - -/* CR101 - 6 */ -typedef enum { - AB8500_CODEC_CR101_PARLVIB_INDEPENDENT, - AB8500_CODEC_CR101_PARLVIB_BRIDGED -} t_ab8500_codec_cr101_parlvib; - -/* CR101 - 3 */ -typedef enum { - AB8500_CODEC_CR101_CLASSD_VIBLSWAPEN_DISABLED, - AB8500_CODEC_CR101_CLASSD_VIBLSWAPEN_ENABLED -} t_ab8500_codec_cr101_classd_viblswapen; - -/* CR101 - 2 */ -typedef enum { - AB8500_CODEC_CR101_CLASSD_VIBRSWAPEN_DISABLED, - AB8500_CODEC_CR101_CLASSD_VIBRSWAPEN_ENABLED -} t_ab8500_codec_cr101_classd_vibrswapen; - -/* CR101 - 1 */ -typedef enum { - AB8500_CODEC_CR101_CLASSD_HFLSWAPEN_DISABLED, - AB8500_CODEC_CR101_CLASSD_HFLSWAPEN_ENABLED -} t_ab8500_codec_cr101_classd_hflswapen; - -/* CR101 - 0 */ -typedef enum { - AB8500_CODEC_CR101_CLASSD_HFRSWAPEN_DISABLED, - AB8500_CODEC_CR101_CLASSD_HFRSWAPEN_ENABLED -} t_ab8500_codec_cr101_classd_hfrswapen; - -/* CR102 - 7:4 */ -typedef enum { - AB8500_CODEC_CR102_CLASSD_FIRBYP_ALL_ENABLED = 0, - AB8500_CODEC_CR102_CLASSD_FIRBYP_HFL_BYPASSED = 1, - AB8500_CODEC_CR102_CLASSD_FIRBYP_HFR_BYPASSED = 2, - AB8500_CODEC_CR102_CLASSD_FIRBYP_VIBL_BYPASSED = 4, - AB8500_CODEC_CR102_CLASSD_FIRBYP_VIBR_BYPASSED = 8 -} t_ab8500_codec_cr102_classd_firbyp; - -/* CR102 - 3:0 */ -typedef enum { - AB8500_CODEC_CR102_CLASSD_HIGHVOLEN_DISABLED = 0, - AB8500_CODEC_CR102_CLASSD_HIGHVOLEN_HFL_HIGHVOL = 1, - AB8500_CODEC_CR102_CLASSD_HIGHVOLEN_HFR_HIGHVOL = 2, - AB8500_CODEC_CR102_CLASSD_HIGHVOLEN_VIBL_HIGHVOL = 4, - AB8500_CODEC_CR102_CLASSD_HIGHVOLEN_VIBR_HIGHVOL = 8 -} t_ab8500_codec_cr102_classd_highvolen; - -/* CR103 - 7:4 */ -typedef t_uint8 t_ab8500_codec_cr103_classd_ditherhpgain; - -/* CR103 - 3:0 */ -typedef t_uint8 t_ab8500_codec_cr103_classd_ditherwgain; - -/* CR104 - 5:0 */ -/* In ab8500_codec.h */ - -/* CR105 - 7:0 */ -/* In ab8500_codec.h */ - -/* CR106 - 6:4 */ -/* In ab8500_codec.h */ - -/* CR106 - 2 */ -/* In ab8500_codec.h */ - -/* CR106 - 1 */ -/* In ab8500_codec.h */ - -/* CR106 - 0 */ -/* In ab8500_codec.h */ - -/* CR107 - 7:0 */ -/* In ab8500_codec.h */ - -/* CR108 - 7:0 */ -/* In ab8500_codec.h */ - -/* CR109 - Read Only */ -/* CR109 - 7:0 */ -typedef t_uint8 t_ab8500_codec_cr109_bfifosamples; - -typedef enum { - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_OUT1, - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_OUT2, - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_OUT3, - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_OUT4, - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_OUT5, - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_OUT6, - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_OUT7, - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_OUT8, - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_ZEROS, - AB8500_CODEC_CR31_TO_CR46_SLOT_IS_TRISTATE = 15, - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_UNDEFINED -} t_ab8500_codec_cr31_to_cr46_ad_data_allocation; - -typedef enum { - AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT00, - AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT01, - AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT02, - AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT03, - AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT04, - AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT05, - AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT06, - AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT07, - AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT08, - AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT09, - AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT10, - AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT11, - AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT12, - AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT13, - AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT14, - AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT15, - AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT16, - AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT17, - AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT18, - AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT19, - AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT20, - AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT21, - AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT22, - AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT23, - AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT24, - AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT25, - AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT26, - AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT27, - AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT28, - AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT29, - AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT30, - AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT31, - AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT_UNDEFINED -} t_ab8500_codec_cr51_to_cr56_sltoda; - -/* CR104 - 5:0 */ -typedef t_uint8 t_ab8500_codec_cr104_bfifoint; - -/* CR105 - 7:0 */ -typedef t_uint8 t_ab8500_codec_cr105_bfifotx; - -/* CR106 - 6:4 */ -typedef enum { - AB8500_CODEC_CR106_BFIFOFSEXT_NO_EXTRA_CLK, - AB8500_CODEC_CR106_BFIFOFSEXT_1SLOT_EXTRA_CLK, - AB8500_CODEC_CR106_BFIFOFSEXT_2SLOT_EXTRA_CLK, - AB8500_CODEC_CR106_BFIFOFSEXT_3SLOT_EXTRA_CLK, - AB8500_CODEC_CR106_BFIFOFSEXT_4SLOT_EXTRA_CLK, - AB8500_CODEC_CR106_BFIFOFSEXT_5SLOT_EXTRA_CLK, - AB8500_CODEC_CR106_BFIFOFSEXT_6SLOT_EXTRA_CLK -} t_ab8500_codec_cr106_bfifofsext; - -/* CR106 - 2 */ -typedef enum { - AB8500_CODEC_CR106_BFIFOMSK_AD_DATA0_UNMASKED, - AB8500_CODEC_CR106_BFIFOMSK_AD_DATA0_MASKED -} t_ab8500_codec_cr106_bfifomsk; - -/* CR106 - 1 */ -typedef enum { - AB8500_CODEC_CR106_BFIFOMSTR_SLAVE_MODE, - AB8500_CODEC_CR106_BFIFOMSTR_MASTER_MODE -} t_ab8500_codec_cr106_bfifomstr; - -/* CR106 - 0 */ -typedef enum { - AB8500_CODEC_CR106_BFIFOSTRT_STOPPED, - AB8500_CODEC_CR106_BFIFOSTRT_RUNNING -} t_ab8500_codec_cr106_bfifostrt; - -/* CR107 - 7:0 */ -typedef t_uint8 t_ab8500_codec_cr107_bfifosampnr; - -/* CR108 - 7:0 */ -typedef t_uint8 t_ab8500_codec_cr108_bfifowakeup; - -/*configuration structure for AB8500 Codec*/ -typedef struct { - /* CR0 */ - t_ab8500_codec_cr0_powerup cr0_powerup; - t_ab8500_codec_cr0_enaana cr0_enaana; - - /* CR1 */ - t_ab8500_codec_cr1_swreset cr1_swreset; - - /* CR2 */ - t_ab8500_codec_cr2_enad1 cr2_enad1; - t_ab8500_codec_cr2_enad2 cr2_enad2; - t_ab8500_codec_cr2_enad3 cr2_enad3; - t_ab8500_codec_cr2_enad4 cr2_enad4; - t_ab8500_codec_cr2_enad5 cr2_enad5; - t_ab8500_codec_cr2_enad6 cr2_enad6; - - /* CR3 */ - t_ab8500_codec_cr3_enda1 cr3_enda1; - t_ab8500_codec_cr3_enda2 cr3_enda2; - t_ab8500_codec_cr3_enda3 cr3_enda3; - t_ab8500_codec_cr3_enda4 cr3_enda4; - t_ab8500_codec_cr3_enda5 cr3_enda5; - t_ab8500_codec_cr3_enda6 cr3_enda6; - - /* CR4 */ - t_ab8500_codec_cr4_lowpowhs cr4_lowpowhs; - t_ab8500_codec_cr4_lowpowdachs cr4_lowpowdachs; - t_ab8500_codec_cr4_lowpowear cr4_lowpowear; - t_ab8500_codec_cr4_ear_sel_cm cr4_ear_sel_cm; - t_ab8500_codec_cr4_hs_hp_dis cr4_hs_hp_dis; - t_ab8500_codec_cr4_ear_hp_dis cr4_ear_hp_dis; - - /* CR5 */ - t_ab8500_codec_cr5_enmic1 cr5_enmic1; - t_ab8500_codec_cr5_enmic2 cr5_enmic2; - t_ab8500_codec_cr5_enlinl cr5_enlinl; - t_ab8500_codec_cr5_enlinr cr5_enlinr; - t_ab8500_codec_cr5_mutmic1 cr5_mutmic1; - t_ab8500_codec_cr5_mutmic2 cr5_mutmic2; - t_ab8500_codec_cr5_mutlinl cr5_mutlinl; - t_ab8500_codec_cr5_mutlinr cr5_mutlinr; - - /* CR6 */ - t_ab8500_codec_cr6_endmic1 cr6_endmic1; - t_ab8500_codec_cr6_endmic2 cr6_endmic2; - t_ab8500_codec_cr6_endmic3 cr6_endmic3; - t_ab8500_codec_cr6_endmic4 cr6_endmic4; - t_ab8500_codec_cr6_endmic5 cr6_endmic5; - t_ab8500_codec_cr6_endmic6 cr6_endmic6; - - /* CR7 */ - t_ab8500_codec_cr7_mic1sel cr7_mic1sel; - t_ab8500_codec_cr7_linrsel cr7_linrsel; - t_ab8500_codec_cr7_endrvhsl cr7_endrvhsl; - t_ab8500_codec_cr7_endrvhsr cr7_endrvhsr; - t_ab8500_codec_cr7_enadcmic cr7_enadcmic; - t_ab8500_codec_cr7_enadclinl cr7_enadclinl; - t_ab8500_codec_cr7_enadclinr cr7_enadclinr; - - /* CR8 */ - t_ab8500_codec_cr8_cp_dis_pldwn cr8_cp_dis_pldwn; - t_ab8500_codec_cr8_enear cr8_enear; - t_ab8500_codec_cr8_enhsl cr8_enhsl; - t_ab8500_codec_cr8_enhsr cr8_enhsr; - t_ab8500_codec_cr8_enhfl cr8_enhfl; - t_ab8500_codec_cr8_enhfr cr8_enhfr; - t_ab8500_codec_cr8_envibl cr8_envibl; - t_ab8500_codec_cr8_envibr cr8_envibr; - - /* CR9 */ - t_ab8500_codec_cr9_endacear cr9_endacear; - t_ab8500_codec_cr9_endachsl cr9_endachsl; - t_ab8500_codec_cr9_endachsr cr9_endachsr; - t_ab8500_codec_cr9_endachfl cr9_endachfl; - t_ab8500_codec_cr9_endachfr cr9_endachfr; - t_ab8500_codec_cr9_endacvibl cr9_endacvibl; - t_ab8500_codec_cr9_endacvibr cr9_endacvibr; - - /* CR10 */ - t_ab8500_codec_cr10_muteear cr10_muteear; - t_ab8500_codec_cr10_mutehsl cr10_mutehsl; - t_ab8500_codec_cr10_mutehsr cr10_mutehsr; - t_ab8500_codec_cr10_mutehfl cr10_mutehfl; - t_ab8500_codec_cr10_mutehfr cr10_mutehfr; - t_ab8500_codec_cr10_mutevibl cr10_mutevibl; - t_ab8500_codec_cr10_mutevibr cr10_mutevibr; - - /* CR11 */ - t_ab8500_codec_cr11_earshortpwd cr11_earshortpwd; - t_ab8500_codec_cr11_earshortdis cr11_earshortdis; - t_ab8500_codec_cr11_hslshortdis cr11_hslshortdis; - t_ab8500_codec_cr11_hsrshortdis cr11_hsrshortdis; - t_ab8500_codec_cr11_hflshortdis cr11_hflshortdis; - t_ab8500_codec_cr11_hfrshortdis cr11_hfrshortdis; - t_ab8500_codec_cr11_viblshortdis cr11_viblshortdis; - t_ab8500_codec_cr11_vibrshortdis cr11_vibrshortdis; - - /* CR12 */ - t_ab8500_codec_cr12_encphs cr12_encphs; - t_ab8500_codec_cr12_hsautotime cr12_hsautotime; - t_ab8500_codec_cr12_hsautoensel cr12_hsautoensel; - t_ab8500_codec_cr12_hsautoen cr12_hsautoen; - - /* CR13 */ - t_ab8500_codec_cr13_envdet_hthresh cr13_envdet_hthresh; - t_ab8500_codec_cr13_envdet_lthresh cr13_envdet_lthresh; - - /* CR14 */ - t_ab8500_codec_cr14_smpslven cr14_smpslven; - t_ab8500_codec_cr14_envdetsmpsen cr14_envdetsmpsen; - t_ab8500_codec_cr14_cplven cr14_cplven; - t_ab8500_codec_cr14_envdetcpen cr14_envdetcpen; - t_ab8500_codec_cr14_envet_time cr14_envet_time; - - /* CR15 */ - t_ab8500_codec_cr15_pwmtovibl cr15_pwmtovibl; - t_ab8500_codec_cr15_pwmtovibr cr15_pwmtovibr; - t_ab8500_codec_cr15_pwmlctrl cr15_pwmlctrl; - t_ab8500_codec_cr15_pwmrctrl cr15_pwmrctrl; - t_ab8500_codec_cr15_pwmnlctrl cr15_pwmnlctrl; - t_ab8500_codec_cr15_pwmplctrl cr15_pwmplctrl; - t_ab8500_codec_cr15_pwmnrctrl cr15_pwmnrctrl; - t_ab8500_codec_cr15_pwmprctrl cr15_pwmprctrl; - - /* CR16 */ - t_ab8500_codec_cr16_pwmnlpol cr16_pwmnlpol; - t_ab8500_codec_cr16_pwmnldutycycle cr16_pwmnldutycycle; - - /* CR17 */ - t_ab8500_codec_cr17_pwmplpol cr17_pwmplpol; - t_ab8500_codec_cr17_pwmpldutycycle cr17_pwmpldutycycle; - - /* CR18 */ - t_ab8500_codec_cr18_pwmnrpol cr18_pwmnrpol; - t_ab8500_codec_cr18_pwmnrdutycycle cr18_pwmnrdutycycle; - - /* CR19 */ - t_ab8500_codec_cr19_pwmprpol cr19_pwmprpol; - t_ab8500_codec_cr19_pwmprdutycycle cr19_pwmprdutycycle; - - /* CR20 */ - t_ab8500_codec_cr20_en_se_mic1 cr20_en_se_mic1; - t_ab8500_codec_cr20_mic1_gain cr20_mic1_gain; - - /* CR21 */ - t_ab8500_codec_cr21_en_se_mic2 cr21_en_se_mic2; - t_ab8500_codec_cr21_mic2_gain cr21_mic2_gain; - - /* CR22 */ - t_ab8500_codec_cr22_hsl_gain cr22_hsl_gain; - t_ab8500_codec_cr22_linl_gain cr22_linl_gain; - - /* CR23 */ - t_ab8500_codec_cr23_hsr_gain cr23_hsr_gain; - t_ab8500_codec_cr23_linr_gain cr23_linr_gain; - - /* CR24 */ - t_ab8500_codec_cr24_lintohsl_gain cr24_lintohsl_gain; - - /* CR25 */ - t_ab8500_codec_cr25_lintohsr_gain cr25_lintohsr_gain; - - /* CR26 */ - t_ab8500_codec_cr26_ad1nh cr26_ad1nh; - t_ab8500_codec_cr26_ad2nh cr26_ad2nh; - t_ab8500_codec_cr26_ad3nh cr26_ad3nh; - t_ab8500_codec_cr26_ad4nh cr26_ad4nh; - t_ab8500_codec_cr26_ad1_voice cr26_ad1_voice; - t_ab8500_codec_cr26_ad2_voice cr26_ad2_voice; - t_ab8500_codec_cr26_ad3_voice cr26_ad3_voice; - t_ab8500_codec_cr26_ad4_voice cr26_ad4_voice; - - /* CR27 */ - t_ab8500_codec_cr27_en_mastgen cr27_en_mastgen; - t_ab8500_codec_cr27_if1_bitclk_osr cr27_if1_bitclk_osr; - t_ab8500_codec_cr27_enfs_bitclk1 cr27_enfs_bitclk1; - t_ab8500_codec_cr27_if0_bitclk_osr cr27_if0_bitclk_osr; - t_ab8500_codec_cr27_enfs_bitclk0 cr27_enfs_bitclk0; - - /* CR28 */ - t_ab8500_codec_cr28_fsync0p cr28_fsync0p; - t_ab8500_codec_cr28_bitclk0p cr28_bitclk0p; - t_ab8500_codec_cr28_if0del cr28_if0del; - t_ab8500_codec_cr28_if0format cr28_if0format; - t_ab8500_codec_cr28_if0wl cr28_if0wl; - - /* CR29 */ - t_ab8500_codec_cr29_if0datoif1ad cr29_if0datoif1ad; - t_ab8500_codec_cr29_if0cktoif1ck cr29_if0cktoif1ck; - t_ab8500_codec_cr29_if1master cr29_if1master; - t_ab8500_codec_cr29_if1datoif0ad cr29_if1datoif0ad; - t_ab8500_codec_cr29_if1cktoif0ck cr29_if1cktoif0ck; - t_ab8500_codec_cr29_if0master cr29_if0master; - t_ab8500_codec_cr29_if0bfifoen cr29_if0bfifoen; - - /* CR30 */ - t_ab8500_codec_cr30_fsync1p cr30_fsync1p; - t_ab8500_codec_cr30_bitclk1p cr30_bitclk1p; - t_ab8500_codec_cr30_if1del cr30_if1del; - t_ab8500_codec_cr30_if1format cr30_if1format; - t_ab8500_codec_cr30_if1wl cr30_if1wl; - - /* CR31 */ - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr31_adotoslot1; - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr31_adotoslot0; - - /* CR32 */ - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr32_adotoslot3; - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr32_adotoslot2; - - /* CR33 */ - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr33_adotoslot5; - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr33_adotoslot4; - - /* CR34 */ - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr34_adotoslot7; - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr34_adotoslot6; - - /* CR35 */ - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr35_adotoslot9; - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr35_adotoslot8; - - /* CR36 */ - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr36_adotoslot11; - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr36_adotoslot10; - - /* CR37 */ - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr37_adotoslot13; - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr37_adotoslot12; - - /* CR38 */ - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr38_adotoslot15; - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr38_adotoslot14; - - /* CR39 */ - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr39_adotoslot17; - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr39_adotoslot16; - - /* CR40 */ - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr40_adotoslot19; - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr40_adotoslot18; - - /* CR41 */ - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr41_adotoslot21; - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr41_adotoslot20; - - /* CR42 */ - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr42_adotoslot23; - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr42_adotoslot22; - - /* CR43 */ - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr43_adotoslot25; - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr43_adotoslot24; - - /* CR44 */ - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr44_adotoslot27; - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr44_adotoslot26; - - /* CR45 */ - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr45_adotoslot29; - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr45_adotoslot28; - - /* CR46 */ - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr46_adotoslot31; - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr46_adotoslot30; - - /* CR47 */ - t_ab8500_codec_cr47_to_cr50_hiz_sl cr47_hiz_sl7; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr47_hiz_sl6; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr47_hiz_sl5; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr47_hiz_sl4; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr47_hiz_sl3; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr47_hiz_sl2; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr47_hiz_sl1; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr47_hiz_sl0; - - /* CR48 */ - t_ab8500_codec_cr47_to_cr50_hiz_sl cr48_hiz_sl15; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr48_hiz_sl14; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr48_hiz_sl13; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr48_hiz_sl12; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr48_hiz_sl11; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr48_hiz_sl10; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr48_hiz_sl9; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr48_hiz_sl8; - - /* CR49 */ - t_ab8500_codec_cr47_to_cr50_hiz_sl cr49_hiz_sl23; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr49_hiz_sl22; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr49_hiz_sl21; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr49_hiz_sl20; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr49_hiz_sl19; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr49_hiz_sl18; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr49_hiz_sl17; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr49_hiz_sl16; - - /* CR50 */ - t_ab8500_codec_cr47_to_cr50_hiz_sl cr50_hiz_sl31; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr50_hiz_sl30; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr50_hiz_sl29; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr50_hiz_sl28; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr50_hiz_sl27; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr50_hiz_sl26; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr50_hiz_sl25; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr50_hiz_sl24; - - /* CR51 */ - t_ab8500_codec_cr51_da12_voice cr51_da12_voice; - t_ab8500_codec_cr51_sldai1toslado1 cr51_sldai1toslado1; - t_ab8500_codec_cr51_to_cr56_sltoda cr51_sltoda1; - - /* CR52 */ - t_ab8500_codec_cr52_sldai2toslado2 cr52_sldai2toslado2; - t_ab8500_codec_cr51_to_cr56_sltoda cr52_sltoda2; - - /* CR53 */ - t_ab8500_codec_cr53_da34_voice cr53_da34_voice; - t_ab8500_codec_cr53_sldai3toslado3 cr53_sldai3toslado3; - t_ab8500_codec_cr51_to_cr56_sltoda cr53_sltoda3; - - /* CR54 */ - t_ab8500_codec_cr54_sldai4toslado4 cr54_sldai4toslado4; - t_ab8500_codec_cr51_to_cr56_sltoda cr54_sltoda4; - - /* CR55 */ - t_ab8500_codec_cr55_da56_voice cr55_da56_voice; - t_ab8500_codec_cr55_sldai5toslado5 cr55_sldai5toslado5; - t_ab8500_codec_cr51_to_cr56_sltoda cr55_sltoda5; - - /* CR56 */ - t_ab8500_codec_cr56_sldai6toslado7 cr56_sldai6toslado7; - t_ab8500_codec_cr51_to_cr56_sltoda cr56_sltoda6; - - /* CR57 */ - t_ab8500_codec_cr57_bfifull_msk cr57_bfifull_msk; - t_ab8500_codec_cr57_bfiempt_msk cr57_bfiempt_msk; - t_ab8500_codec_cr57_dachan_msk cr57_dachan_msk; - t_ab8500_codec_cr57_gain_msk cr57_gain_msk; - t_ab8500_codec_cr57_dspad_msk cr57_dspad_msk; - t_ab8500_codec_cr57_dspda_msk cr57_dspda_msk; - t_ab8500_codec_cr57_stfir_msk cr57_stfir_msk; - - /* CR58 */ - t_ab8500_codec_cr58_bfifull_ev cr58_bfifull_ev; - t_ab8500_codec_cr58_bfiempt_ev cr58_bfiempt_ev; - t_ab8500_codec_cr58_dachan_ev cr58_dachan_ev; - t_ab8500_codec_cr58_gain_ev cr58_gain_ev; - t_ab8500_codec_cr58_dspad_ev cr58_dspad_ev; - t_ab8500_codec_cr58_dspda_ev cr58_dspda_ev; - t_ab8500_codec_cr58_stfir_ev cr58_stfir_ev; - - /* CR59 */ - t_ab8500_codec_cr59_vssready_msk cr59_vssready_msk; - t_ab8500_codec_cr59_shrtvibl_msk cr59_shrtvibl_msk; - t_ab8500_codec_cr59_shrtvibr_msk cr59_shrtvibr_msk; - t_ab8500_codec_cr59_shrthfl_msk cr59_shrthfl_msk; - t_ab8500_codec_cr59_shrthfr_msk cr59_shrthfr_msk; - t_ab8500_codec_cr59_shrthsl_msk cr59_shrthsl_msk; - t_ab8500_codec_cr59_shrthsr_msk cr59_shrthsr_msk; - t_ab8500_codec_cr59_shrtear_msk cr59_shrtear_msk; - - /* CR60 */ - t_ab8500_codec_cr60_vssready_ev cr60_vssready_ev; - t_ab8500_codec_cr60_shrtvibl_ev cr60_shrtvibl_ev; - t_ab8500_codec_cr60_shrtvibr_ev cr60_shrtvibr_ev; - t_ab8500_codec_cr60_shrthfl_ev cr60_shrthfl_ev; - t_ab8500_codec_cr60_shrthfr_ev cr60_shrthfr_ev; - t_ab8500_codec_cr60_shrthsl_ev cr60_shrthsl_ev; - t_ab8500_codec_cr60_shrthsr_ev cr60_shrthsr_ev; - t_ab8500_codec_cr60_shrtear_ev cr60_shrtear_ev; - - /* CR61 */ - t_ab8500_codec_cr61_revision cr61_revision; - t_ab8500_codec_cr61_fade_speed cr61_fade_speed; - - /* CR62 */ - t_ab8500_codec_cr62_dmic1sinc3 cr62_dmic1sinc3; - t_ab8500_codec_cr62_dmic2sinc3 cr62_dmic2sinc3; - t_ab8500_codec_cr62_dmic3sinc3 cr62_dmic3sinc3; - t_ab8500_codec_cr62_dmic4sinc3 cr62_dmic4sinc3; - t_ab8500_codec_cr62_dmic5sinc3 cr62_dmic5sinc3; - t_ab8500_codec_cr62_dmic6sinc3 cr62_dmic6sinc3; - - /* CR63 */ - t_ab8500_codec_cr63_datohslen cr63_datohslen; - t_ab8500_codec_cr63_datohsren cr63_datohsren; - t_ab8500_codec_cr63_ad1sel cr63_ad1sel; - t_ab8500_codec_cr63_ad2sel cr63_ad2sel; - t_ab8500_codec_cr63_ad3sel cr63_ad3sel; - t_ab8500_codec_cr63_ad5sel cr63_ad5sel; - t_ab8500_codec_cr63_ad6sel cr63_ad6sel; - t_ab8500_codec_cr63_ancsel cr63_ancsel; - - /* CR64 */ - t_ab8500_codec_cr64_datohfren cr64_datohfren; - t_ab8500_codec_cr64_datohflen cr64_datohflen; - t_ab8500_codec_cr64_hfrsel cr64_hfrsel; - t_ab8500_codec_cr64_hflsel cr64_hflsel; - t_ab8500_codec_cr64_stfir1sel cr64_stfir1sel; - t_ab8500_codec_cr64_stfir2sel cr64_stfir2sel; - - /* CR65 */ - t_ab8500_codec_cr65_fadedis_ad1 cr65_fadedis_ad1; - t_ab8500_codec_cr65_ad1gain cr65_ad1gain; - - /* CR66 */ - t_ab8500_codec_cr66_fadedis_ad2 cr66_fadedis_ad2; - t_ab8500_codec_cr66_ad2gain cr66_ad2gain; - - /* CR67 */ - t_ab8500_codec_cr67_fadedis_ad3 cr67_fadedis_ad3; - t_ab8500_codec_cr67_ad3gain cr67_ad3gain; - - /* CR68 */ - t_ab8500_codec_cr68_fadedis_ad4 cr68_fadedis_ad4; - t_ab8500_codec_cr68_ad4gain cr68_ad4gain; - - /* CR69 */ - t_ab8500_codec_cr69_fadedis_ad5 cr69_fadedis_ad5; - t_ab8500_codec_cr69_ad5gain cr69_ad5gain; - - /* CR70 */ - t_ab8500_codec_cr70_fadedis_ad6 cr70_fadedis_ad6; - t_ab8500_codec_cr70_ad6gain cr70_ad6gain; - - /* CR71 */ - t_ab8500_codec_cr71_fadedis_da1 cr71_fadedis_da1; - t_ab8500_codec_cr71_da1gain cr71_da1gain; - - /* CR72 */ - t_ab8500_codec_cr72_fadedis_da2 cr72_fadedis_da2; - t_ab8500_codec_cr72_da2gain cr72_da2gain; - - /* CR73 */ - t_ab8500_codec_cr73_fadedis_da3 cr73_fadedis_da3; - t_ab8500_codec_cr73_da3gain cr73_da3gain; - - /* CR74 */ - t_ab8500_codec_cr74_fadedis_da4 cr74_fadedis_da4; - t_ab8500_codec_cr74_da4gain cr74_da4gain; - - /* CR75 */ - t_ab8500_codec_cr75_fadedis_da5 cr75_fadedis_da5; - t_ab8500_codec_cr75_da5gain cr75_da5gain; - - /* CR76 */ - t_ab8500_codec_cr76_fadedis_da6 cr76_fadedis_da6; - t_ab8500_codec_cr76_da6gain cr76_da6gain; - - /* CR77 */ - t_ab8500_codec_cr77_fadedis_ad1l cr77_fadedis_ad1l; - t_ab8500_codec_cr77_ad1lbgain_to_hfl cr77_ad1lbgain_to_hfl; - - /* CR78 */ - t_ab8500_codec_cr78_fadedis_ad2l cr78_fadedis_ad2l; - t_ab8500_codec_cr78_ad2lbgain_to_hfr cr78_ad2lbgain_to_hfr; - - /* CR79 */ - t_ab8500_codec_cr79_hssinc1 cr79_hssinc1; - t_ab8500_codec_cr79_fadedis_hsl cr79_fadedis_hsl; - t_ab8500_codec_cr79_hsldgain cr79_hsldgain; - - /* CR80 */ - t_ab8500_codec_cr80_fadedis_hsr cr80_fadedis_hsr; - t_ab8500_codec_cr80_hsrdgain cr80_hsrdgain; - - /* CR81 */ - t_ab8500_codec_cr81_stfir1gain cr81_stfir1gain; - - /* CR82 */ - t_ab8500_codec_cr82_stfir2gain cr82_stfir2gain; - - /* CR83 */ - t_ab8500_codec_cr83_enanc cr83_enanc; - t_ab8500_codec_cr83_anciirinit cr83_anciirinit; - t_ab8500_codec_cr83_ancfirupdate cr83_ancfirupdate; - - /* CR84 */ - t_ab8500_codec_cr84_ancinshift cr84_ancinshift; - - /* CR85 */ - t_ab8500_codec_cr85_ancfiroutshift cr85_ancfiroutshift; - - /* CR86 */ - t_ab8500_codec_cr86_ancshiftout cr86_ancshiftout; - - /* CR87 */ - t_ab8500_codec_cr87_ancfircoeff_msb cr87_ancfircoeff_msb; - - /* CR88 */ - t_ab8500_codec_cr88_ancfircoeff_lsb cr88_ancfircoeff_lsb; - - /* CR89 */ - t_ab8500_codec_cr89_anciircoeff_msb cr89_anciircoeff_msb; - - /* CR90 */ - t_ab8500_codec_cr90_anciircoeff_lsb cr90_anciircoeff_lsb; - - /* CR91 */ - t_ab8500_codec_cr91_ancwarpdel_msb cr91_ancwarpdel_msb; - - /* CR92 */ - t_ab8500_codec_cr92_ancwarpdel_lsb cr92_ancwarpdel_lsb; - - /* CR93 */ - t_ab8500_codec_cr93_ancfirpeak_msb cr93_ancfirpeak_msb; - - /* CR94 */ - t_ab8500_codec_cr94_ancfirpeak_lsb cr94_ancfirpeak_lsb; - - /* CR95 */ - t_ab8500_codec_cr95_anciirpeak_msb cr95_anciirpeak_msb; - - /* CR96 */ - t_ab8500_codec_cr96_anciirpeak_lsb cr96_anciirpeak_lsb; - - /* CR97 */ - t_ab8500_codec_cr97_stfir_set cr97_stfir_set; - t_ab8500_codec_cr97_stfir_addr cr97_stfir_addr; - - /* CR98 */ - t_ab8500_codec_cr98_stfir_coeff_msb cr98_stfir_coeff_msb; - - /* CR99 */ - t_ab8500_codec_cr99_stfir_coeff_lsb cr99_stfir_coeff_lsb; - - /* CR100 */ - t_ab8500_codec_cr100_enstfirs cr100_enstfirs; - t_ab8500_codec_cr100_stfirstoif1 cr100_stfirstoif1; - t_ab8500_codec_cr100_stfir_busy cr100_stfir_busy; - - /* CR101 */ - t_ab8500_codec_cr101_parlhf cr101_parlhf; - t_ab8500_codec_cr101_parlvib cr101_parlvib; - t_ab8500_codec_cr101_classd_viblswapen cr101_classd_viblswapen; - t_ab8500_codec_cr101_classd_vibrswapen cr101_classd_vibrswapen; - t_ab8500_codec_cr101_classd_hflswapen cr101_classd_hflswapen; - t_ab8500_codec_cr101_classd_hfrswapen cr101_classd_hfrswapen; - - /* CR102 */ - t_ab8500_codec_cr102_classd_firbyp cr102_classd_firbyp; - t_ab8500_codec_cr102_classd_highvolen cr102_classd_highvolen; - - /* CR103 */ - t_ab8500_codec_cr103_classd_ditherhpgain cr103_classd_ditherhpgain; - t_ab8500_codec_cr103_classd_ditherwgain cr103_classd_ditherwgain; - - /* CR104 */ - t_ab8500_codec_cr104_bfifoint cr104_bfifoint; - - /* CR105 */ - t_ab8500_codec_cr105_bfifotx cr105_bfifotx; - - /* CR106 */ - t_ab8500_codec_cr106_bfifofsext cr106_bfifofsext; - t_ab8500_codec_cr106_bfifomsk cr106_bfifomsk; - t_ab8500_codec_cr106_bfifomstr cr106_bfifomstr; - t_ab8500_codec_cr106_bfifostrt cr106_bfifostrt; - - /* CR107 */ - t_ab8500_codec_cr107_bfifosampnr cr107_bfifosampnr; - - /* CR108 */ - t_ab8500_codec_cr108_bfifowakeup cr108_bfifowakeup; - - /* CR109 */ - t_ab8500_codec_cr109_bfifosamples cr109_bfifosamples; - -} t_ab8500_codec_configuration; - -typedef enum { - AB8500_CODEC_DIRECTION_IN, - AB8500_CODEC_DIRECTION_OUT, - AB8500_CODEC_DIRECTION_INOUT -} t_ab8500_codec_direction; - -typedef enum { - AB8500_CODEC_MODE_HIFI, - AB8500_CODEC_MODE_VOICE, - AB8500_CODEC_MODE_MANUAL_SETTING -} t_ab8500_codec_mode; - -typedef enum { - AB8500_CODEC_AUDIO_INTERFACE_0, - AB8500_CODEC_AUDIO_INTERFACE_1 -} t_ab8500_codec_audio_interface; - -typedef enum { - AB8500_CODEC_SRC_LINEIN, - AB8500_CODEC_SRC_MICROPHONE_1A, - AB8500_CODEC_SRC_MICROPHONE_1B, - AB8500_CODEC_SRC_MICROPHONE_2, - AB8500_CODEC_SRC_D_MICROPHONE_1, - AB8500_CODEC_SRC_D_MICROPHONE_2, - AB8500_CODEC_SRC_D_MICROPHONE_3, - AB8500_CODEC_SRC_D_MICROPHONE_4, - AB8500_CODEC_SRC_D_MICROPHONE_5, - AB8500_CODEC_SRC_D_MICROPHONE_6, - AB8500_CODEC_SRC_FM_RX, - AB8500_CODEC_SRC_ALL -} t_ab8500_codec_src; - -typedef enum { - AB8500_CODEC_DEST_HEADSET, - AB8500_CODEC_DEST_EARPIECE, - AB8500_CODEC_DEST_HANDSFREE, - AB8500_CODEC_DEST_VIBRATOR_L, - AB8500_CODEC_DEST_VIBRATOR_R, - AB8500_CODEC_DEST_ALL -} t_ab8500_codec_dest; - -typedef struct { - t_uint8 slave_address_of_ab8500_codec; - t_ab8500_codec_direction ab8500_codec_direction; - t_ab8500_codec_mode ab8500_codec_mode_in; - t_ab8500_codec_mode ab8500_codec_mode_out; - t_ab8500_codec_audio_interface audio_interface; - t_ab8500_codec_src ab8500_codec_src; - t_ab8500_codec_dest ab8500_codec_dest; - t_uint8 in_left_volume; - t_uint8 in_right_volume; - t_uint8 out_left_volume; - t_uint8 out_right_volume; - - t_ab8500_codec_configuration ab8500_codec_configuration; -} t_ab8500_codec_system_context; -#endif /* _AB8500_CODECP_H_ */ - -/* End of file AB8500_CODECP.h */ diff --git a/arch/arm/mach-ux500/include/mach/ab8500_codec_p_v1_0.h b/arch/arm/mach-ux500/include/mach/ab8500_codec_p_v1_0.h deleted file mode 100644 index 866cd0c80f1..00000000000 --- a/arch/arm/mach-ux500/include/mach/ab8500_codec_p_v1_0.h +++ /dev/null @@ -1,3037 +0,0 @@ -/*****************************************************************************/ -/** -* © ST-Ericsson, 2009 - All rights reserved -* Reproduction and Communication of this document is strictly prohibited -* unless specifically authorized in writing by ST-Ericsson -* -* \brief Private Header file for AB8500 CODEC -* \author ST-Ericsson -*/ -/*****************************************************************************/ - -#ifndef _AB8500_CODECP_V1_0_H_ -#define _AB8500_CODECP_V1_0_H_ - -/*---------------------------------------------------------------------------- - * Includes - *---------------------------------------------------------------------------*/ -#include "hcl_defs.h" - -#define AB8500_CODEC_HCL_VERSION_ID 3 -#define AB8500_CODEC_HCL_MAJOR_ID 0 -#define AB8500_CODEC_HCL_MINOR_ID 0 - -#define AB8500_CODEC_MASK_ONE_BIT 0x1UL -#define AB8500_CODEC_MASK_TWO_BITS 0x3UL -#define AB8500_CODEC_MASK_THREE_BITS 0x7UL -#define AB8500_CODEC_MASK_FOUR_BITS 0xFUL -#define AB8500_CODEC_MASK_FIVE_BITS 0x1FUL -#define AB8500_CODEC_MASK_SIX_BITS 0x3FUL -#define AB8500_CODEC_MASK_SEVEN_BITS 0x7FUL -#define AB8500_CODEC_MASK_EIGHT_BITS 0xFFUL - -#define AB8500_CODEC_WRITE_BITS(reg, val, bit_nb, pos) (reg) = ((t_uint8) ((((reg) & (~(bit_nb << pos))) | (((val) & bit_nb) << pos)))) - -#define AB8500_CODEC_BLOCK 0x0D - -#define AB8500_CODEC_MASK_TWO_MS_BITS 0xC0UL -#define AB8500_CODEC_MASK_SIX_LS_BITS 0x3FUL - -/* Genepi AudioCodec Control Registers */ - -#define AB8500_CODEC_CR0 0x00 -#define AB8500_CODEC_CR1 0x01 -#define AB8500_CODEC_CR2 0x02 -#define AB8500_CODEC_CR3 0x03 -#define AB8500_CODEC_CR4 0x04 -#define AB8500_CODEC_CR5 0x05 -#define AB8500_CODEC_CR6 0x06 -#define AB8500_CODEC_CR7 0x07 -#define AB8500_CODEC_CR8 0x08 -#define AB8500_CODEC_CR9 0x09 -#define AB8500_CODEC_CR10 0x0A -#define AB8500_CODEC_CR11 0x0B -#define AB8500_CODEC_CR12 0x0C -#define AB8500_CODEC_CR13 0x0D -#define AB8500_CODEC_CR14 0x0E -#define AB8500_CODEC_CR15 0x0F -#define AB8500_CODEC_CR16 0x10 -#define AB8500_CODEC_CR17 0x11 -#define AB8500_CODEC_CR18 0x12 -#define AB8500_CODEC_CR19 0x13 -#define AB8500_CODEC_CR20 0x14 -#define AB8500_CODEC_CR21 0x15 -#define AB8500_CODEC_CR22 0x16 -#define AB8500_CODEC_CR23 0x17 -#define AB8500_CODEC_CR24 0x18 -#define AB8500_CODEC_CR25 0x19 -#define AB8500_CODEC_CR26 0x1A -#define AB8500_CODEC_CR27 0x1B -#define AB8500_CODEC_CR28 0x1C -#define AB8500_CODEC_CR29 0x1D -#define AB8500_CODEC_CR30 0x1E -#define AB8500_CODEC_CR31 0x1F -#define AB8500_CODEC_CR32 0x20 -#define AB8500_CODEC_CR33 0x21 -#define AB8500_CODEC_CR34 0x22 -#define AB8500_CODEC_CR35 0x23 -#define AB8500_CODEC_CR36 0x24 -#define AB8500_CODEC_CR37 0x25 -#define AB8500_CODEC_CR38 0x26 -#define AB8500_CODEC_CR39 0x27 -#define AB8500_CODEC_CR40 0x28 -#define AB8500_CODEC_CR41 0x29 -#define AB8500_CODEC_CR42 0x2A -#define AB8500_CODEC_CR43 0x2B -#define AB8500_CODEC_CR44 0x2C -#define AB8500_CODEC_CR45 0x2D -#define AB8500_CODEC_CR46 0x2E -#define AB8500_CODEC_CR47 0x2F -#define AB8500_CODEC_CR48 0x30 -#define AB8500_CODEC_CR49 0x31 -#define AB8500_CODEC_CR50 0x32 -#define AB8500_CODEC_CR51 0x33 -#define AB8500_CODEC_CR52 0x34 -#define AB8500_CODEC_CR53 0x35 -#define AB8500_CODEC_CR54 0x36 -#define AB8500_CODEC_CR55 0x37 -#define AB8500_CODEC_CR56 0x38 -#define AB8500_CODEC_CR57 0x39 -#define AB8500_CODEC_CR58 0x3A -#define AB8500_CODEC_CR59 0x3B -#define AB8500_CODEC_CR60 0x3C -#define AB8500_CODEC_CR61 0x3D -#define AB8500_CODEC_CR62 0x3E -#define AB8500_CODEC_CR63 0x3F -#define AB8500_CODEC_CR64 0x40 -#define AB8500_CODEC_CR65 0x41 -#define AB8500_CODEC_CR66 0x42 -#define AB8500_CODEC_CR67 0x43 -#define AB8500_CODEC_CR68 0x44 -#define AB8500_CODEC_CR69 0x45 -#define AB8500_CODEC_CR70 0x46 -#define AB8500_CODEC_CR71 0x47 -#define AB8500_CODEC_CR72 0x48 -#define AB8500_CODEC_CR73 0x49 -#define AB8500_CODEC_CR74 0x4A -#define AB8500_CODEC_CR75 0x4B -#define AB8500_CODEC_CR76 0x4C -#define AB8500_CODEC_CR77 0x4D -#define AB8500_CODEC_CR78 0x4E -#define AB8500_CODEC_CR79 0x4F -#define AB8500_CODEC_CR80 0x50 -#define AB8500_CODEC_CR81 0x51 -#define AB8500_CODEC_CR82 0x52 -#define AB8500_CODEC_CR83 0x53 -#define AB8500_CODEC_CR84 0x54 -#define AB8500_CODEC_CR85 0x55 -#define AB8500_CODEC_CR86 0x56 -#define AB8500_CODEC_CR87 0x57 -#define AB8500_CODEC_CR88 0x58 -#define AB8500_CODEC_CR89 0x59 -#define AB8500_CODEC_CR90 0x5A -#define AB8500_CODEC_CR91 0x5B -#define AB8500_CODEC_CR92 0x5C -#define AB8500_CODEC_CR93 0x5D -#define AB8500_CODEC_CR94 0x5E -#define AB8500_CODEC_CR95 0x5F -#define AB8500_CODEC_CR96 0x60 -#define AB8500_CODEC_CR97 0x61 -#define AB8500_CODEC_CR98 0x62 -#define AB8500_CODEC_CR99 0x63 -#define AB8500_CODEC_CR100 0x64 -#define AB8500_CODEC_CR101 0x65 -#define AB8500_CODEC_CR102 0x66 -#define AB8500_CODEC_CR103 0x67 -#define AB8500_CODEC_CR104 0x68 -#define AB8500_CODEC_CR105 0x69 -#define AB8500_CODEC_CR106 0x6A -#define AB8500_CODEC_CR107 0x6B -#define AB8500_CODEC_CR108 0x6C -#define AB8500_CODEC_CR109 0x6D -#define AB8500_CODEC_CR110 0x6E -#define AB8500_CODEC_CR111 0x6F - -/* CR0-CR0x0000 */ -#define AB8500_CODEC_CR0_POWERUP 7 -#define AB8500_CODEC_CR0_ENAANA 3 - -/* CR1-CR0x0001 */ -#define AB8500_CODEC_CR1_SWRESET 7 - -/* CR2-CR0x0002 */ -#define AB8500_CODEC_CR2_ENAD1 7 -#define AB8500_CODEC_CR2_ENAD2 6 -#define AB8500_CODEC_CR2_ENAD3 5 -#define AB8500_CODEC_CR2_ENAD4 4 -#define AB8500_CODEC_CR2_ENAD5 3 -#define AB8500_CODEC_CR2_ENAD6 2 - -/* CR3-CR0x0003 */ -#define AB8500_CODEC_CR3_ENDA1 7 -#define AB8500_CODEC_CR3_ENDA2 6 -#define AB8500_CODEC_CR3_ENDA3 5 -#define AB8500_CODEC_CR3_ENDA4 4 -#define AB8500_CODEC_CR3_ENDA5 3 -#define AB8500_CODEC_CR3_ENDA6 2 - -/* CR4-CR0x0004 */ -#define AB8500_CODEC_CR4_LOWPOWHS 7 -#define AB8500_CODEC_CR4_LOWPOWDACHS 5 -#define AB8500_CODEC_CR4_LOWPOWEAR 4 -#define AB8500_CODEC_CR4_EAR_SEL_CM 2 -#define AB8500_CODEC_CR4_HS_HP_EN 1 - -/* CR5-CR0x0005 */ -#define AB8500_CODEC_CR5_ENMIC1 7 -#define AB8500_CODEC_CR5_ENMIC2 6 -#define AB8500_CODEC_CR5_ENLINL 5 -#define AB8500_CODEC_CR5_ENLINR 4 -#define AB8500_CODEC_CR5_MUTMIC1 3 -#define AB8500_CODEC_CR5_MUTMIC2 2 -#define AB8500_CODEC_CR5_MUTELINL 1 -#define AB8500_CODEC_CR5_MUTELINR 0 - -/* CR6-CR0x0006 */ -#define AB8500_CODEC_CR6_ENDMIC1 7 -#define AB8500_CODEC_CR6_ENDMIC2 6 -#define AB8500_CODEC_CR6_ENDMIC3 5 -#define AB8500_CODEC_CR6_ENDMIC4 4 -#define AB8500_CODEC_CR6_ENDMIC5 3 -#define AB8500_CODEC_CR6_ENDMIC6 2 - -/* CR7-CR0x0007 */ -#define AB8500_CODEC_CR7_MIC1SEL 7 -#define AB8500_CODEC_CR7_LINRSEL 6 -#define AB8500_CODEC_CR7_ENDRVHSL 5 -#define AB8500_CODEC_CR7_ENDRVHSR 4 -#define AB8500_CODEC_CR7_ENADCMIC 2 -#define AB8500_CODEC_CR7_ENADCLINL 1 -#define AB8500_CODEC_CR7_ENADCLINR 0 - -/* CR8-CR0x0008 */ -#define AB8500_CODEC_CR8_CP_DIS_PLDWN 7 -#define AB8500_CODEC_CR8_ENEAR 6 -#define AB8500_CODEC_CR8_ENHSL 5 -#define AB8500_CODEC_CR8_ENHSR 4 -#define AB8500_CODEC_CR8_ENHFL 3 -#define AB8500_CODEC_CR8_ENHFR 2 -#define AB8500_CODEC_CR8_ENVIBL 1 -#define AB8500_CODEC_CR8_ENVIBR 0 - -/* CR9-CR0x0009 */ -#define AB8500_CODEC_CR9_ENADACEAR 6 -#define AB8500_CODEC_CR9_ENADACHSL 5 -#define AB8500_CODEC_CR9_ENADACHSR 4 -#define AB8500_CODEC_CR9_ENADACHFL 3 -#define AB8500_CODEC_CR9_ENADACHFR 2 -#define AB8500_CODEC_CR9_ENADACVIBL 1 -#define AB8500_CODEC_CR9_ENADACVIBR 0 - -/* CR10-CR0x000A */ -#define AB8500_CODEC_CR10_MUTEEAR 6 -#define AB8500_CODEC_CR10_MUTEHSL 5 -#define AB8500_CODEC_CR10_MUTEHSR 4 - -/* CR11-CR0x000B */ -#define AB8500_CODEC_CR11_ENSHORTPWD 7 -#define AB8500_CODEC_CR11_EARSHORTDIS 6 -#define AB8500_CODEC_CR11_HSSHORTDIS 5 -#define AB8500_CODEC_CR11_HSPULLDEN 4 -#define AB8500_CODEC_CR11_HSOSCEN 2 -#define AB8500_CODEC_CR11_HSFADEN 1 -#define AB8500_CODEC_CR11_HSZCDDIS 0 - -/* CR12-CR0x000C */ -#define AB8500_CODEC_CR12_ENCPHS 7 -#define AB8500_CODEC_CR12_HSAUTOEN 0 - -/* CR13-CR0x000D */ -#define AB8500_CODEC_CR13_ENVDET_HTHRESH 4 -#define AB8500_CODEC_CR13_ENVDET_LTHRESH 0 - -/* CR14-CR0x000E */ -#define AB8500_CODEC_CR14_SMPSLVEN 7 -#define AB8500_CODEC_CR14_ENVDETSMPSEN 6 -#define AB8500_CODEC_CR14_CPLVEN 5 -#define AB8500_CODEC_CR14_ENVDETCPEN 4 -#define AB8500_CODEC_CR14_ENVDET_TIME 0 - -/* CR15-CR0x000F */ -#define AB8500_CODEC_CR15_PWMTOVIBL 7 -#define AB8500_CODEC_CR15_PWMTOVIBR 6 -#define AB8500_CODEC_CR15_PWMLCTRL 5 -#define AB8500_CODEC_CR15_PWMRCTRL 4 -#define AB8500_CODEC_CR15_PWMNLCTRL 3 -#define AB8500_CODEC_CR15_PWMPLCTRL 2 -#define AB8500_CODEC_CR15_PWMNRCTRL 1 -#define AB8500_CODEC_CR15_PWMPRCTRL 0 - -/* CR16-CR0x0010 */ -#define AB8500_CODEC_CR16_PWMNLPOL 7 -#define AB8500_CODEC_CR16_PWMNLDUTYCYCLE 0 - -/* CR17-CR0x0011 */ -#define AB8500_CODEC_CR17_PWMPLPOL 7 -#define AB8500_CODEC_CR17_PWMLPDUTYCYCLE 0 - -/* CR18-CR0x0012 */ -#define AB8500_CODEC_CR18_PWMNRPOL 7 -#define AB8500_CODEC_CR18_PWMNRDUTYCYCLE 0 - -/* CR19-CR0x0013 */ -#define AB8500_CODEC_CR19_PWMPRPOL 7 -#define AB8500_CODEC_CR19_PWMRPDUTYCYCLE 0 - -/* CR20-CR0x0014 */ -#define AB8500_CODEC_CR20_EN_SE_MIC1 7 -#define AB8500_CODEC_CR20_LOW_POW_MIC1 6 -#define AB8500_CODEC_CR20_MIC1_GAIN 0 - -/* CR21-CR0x0015 */ -#define AB8500_CODEC_CR21_EN_SE_MIC2 7 -#define AB8500_CODEC_CR21_LOW_POW_MIC2 6 -#define AB8500_CODEC_CR21_MIC2_GAIN 0 - -/* CR22-CR0x0016 */ -#define AB8500_CODEC_CR22_HSL_GAIN 4 -#define AB8500_CODEC_CR22_HSR_GAIN 0 - -/* CR23-CR0x0017 */ -#define AB8500_CODEC_CR23_LINL_GAIN 4 -#define AB8500_CODEC_CR23_LINR_GAIN 0 - -/* CR24-CR0x0018 */ -#define AB8500_CODEC_CR24_LINTOHSL_GAIN 0 - -/* CR25-CR0x0019 */ -#define AB8500_CODEC_CR25_LINTOHSR_GAIN 0 - -/* CR26-CR0x001A */ -#define AB8500_CODEC_CR26_AD1NH 7 -#define AB8500_CODEC_CR26_AD2NH 6 -#define AB8500_CODEC_CR26_AD3NH 5 -#define AB8500_CODEC_CR26_AD4NH 4 -#define AB8500_CODEC_CR26_AD1_VOICE 3 -#define AB8500_CODEC_CR26_AD2_VOICE 2 -#define AB8500_CODEC_CR26_AD3_VOICE 1 -#define AB8500_CODEC_CR26_AD4_VOICE 0 - -/* CR27-CR0x001B */ -#define AB8500_CODEC_CR27_EN_MASTGEN 7 -#define AB8500_CODEC_CR27_IF1_BITCLK_OSR 5 -#define AB8500_CODEC_CR27_ENFS_BITCLK1 4 -#define AB8500_CODEC_CR27_IF0_BITCLK_OSR 1 -#define AB8500_CODEC_CR27_ENFS_BITCLK0 0 - -/* CR28-CR0x001C */ -#define AB8500_CODEC_CR28_FSYNC0P 6 -#define AB8500_CODEC_CR28_BITCLK0P 5 -#define AB8500_CODEC_CR28_IF0DEL 4 -#define AB8500_CODEC_CR28_IF0FORMAT 2 -#define AB8500_CODEC_CR28_IF0WL 0 - -/* CR29-CR0x001D */ -#define AB8500_CODEC_CR29_IF0DATOIF1AD 7 -#define AB8500_CODEC_CR29_IF0CKTOIF1CK 6 -#define AB8500_CODEC_CR29_IF1MASTER 5 -#define AB8500_CODEC_CR29_IF1DATOIF0AD 3 -#define AB8500_CODEC_CR29_IF1CKTOIF0CK 2 -#define AB8500_CODEC_CR29_IF0MASTER 1 -#define AB8500_CODEC_CR29_IF0BFIFOEN 0 - -/* CR30-CR0x001E */ -#define AB8500_CODEC_CR30_FSYNC1P 6 -#define AB8500_CODEC_CR30_BITCLK1P 5 -#define AB8500_CODEC_CR30_IF1DEL 4 -#define AB8500_CODEC_CR30_IF1FORMAT 2 -#define AB8500_CODEC_CR30_IF1WL 0 - -/* CR31-CR0x001F */ -#define AB8500_CODEC_CR31_ADOTOSLOT1 4 -#define AB8500_CODEC_CR31_ADOTOSLOT0 0 - -/* CR32-CR0x0020 */ -#define AB8500_CODEC_CR32_ADOTOSLOT3 4 -#define AB8500_CODEC_CR32_ADOTOSLOT2 0 - -/* CR33-CR0x0021 */ -#define AB8500_CODEC_CR33_ADOTOSLOT5 4 -#define AB8500_CODEC_CR33_ADOTOSLOT4 0 - -/* CR34-CR0x0022 */ -#define AB8500_CODEC_CR34_ADOTOSLOT7 4 -#define AB8500_CODEC_CR34_ADOTOSLOT6 0 - -/* CR35-CR0x0023 */ -#define AB8500_CODEC_CR35_ADOTOSLOT9 4 -#define AB8500_CODEC_CR35_ADOTOSLOT8 0 - -/* CR36-CR0x0024 */ -#define AB8500_CODEC_CR36_ADOTOSLOT11 4 -#define AB8500_CODEC_CR36_ADOTOSLOT10 0 - -/* CR37-CR0x0025 */ -#define AB8500_CODEC_CR37_ADOTOSLOT13 4 -#define AB8500_CODEC_CR37_ADOTOSLOT12 0 - -/* CR38-CR0x0026 */ -#define AB8500_CODEC_CR38_ADOTOSLOT15 4 -#define AB8500_CODEC_CR38_ADOTOSLOT14 0 - -/* CR39-CR0x0027 */ -#define AB8500_CODEC_CR39_ADOTOSLOT17 4 -#define AB8500_CODEC_CR39_ADOTOSLOT16 0 - -/* CR40-CR0x0028 */ -#define AB8500_CODEC_CR40_ADOTOSLOT19 4 -#define AB8500_CODEC_CR40_ADOTOSLOT18 0 - -/* CR41-CR0x0029 */ -#define AB8500_CODEC_CR41_ADOTOSLOT21 4 -#define AB8500_CODEC_CR41_ADOTOSLOT20 0 - -/* CR42-CR0x002A */ -#define AB8500_CODEC_CR42_ADOTOSLOT23 4 -#define AB8500_CODEC_CR42_ADOTOSLOT22 0 - -/* CR43-CR0x002B */ -#define AB8500_CODEC_CR43_ADOTOSLOT25 4 -#define AB8500_CODEC_CR43_ADOTOSLOT24 0 - -/* CR44-CR0x002C */ -#define AB8500_CODEC_CR44_ADOTOSLOT27 4 -#define AB8500_CODEC_CR44_ADOTOSLOT26 0 - -/* CR45-CR0x002D */ -#define AB8500_CODEC_CR45_ADOTOSLOT29 4 -#define AB8500_CODEC_CR45_ADOTOSLOT28 0 - -/* CR46-CR0x002E */ -#define AB8500_CODEC_CR46_ADOTOSLOT31 4 -#define AB8500_CODEC_CR46_ADOTOSLOT30 0 - -/* CR47-CR0x002F */ -#define AB8500_CODEC_CR47_HIZ_SL7 7 -#define AB8500_CODEC_CR47_HIZ_SL6 6 -#define AB8500_CODEC_CR47_HIZ_SL5 5 -#define AB8500_CODEC_CR47_HIZ_SL4 4 -#define AB8500_CODEC_CR47_HIZ_SL3 3 -#define AB8500_CODEC_CR47_HIZ_SL2 2 -#define AB8500_CODEC_CR47_HIZ_SL1 1 -#define AB8500_CODEC_CR47_HIZ_SL0 0 - -/* CR48-CR0x0030 */ -#define AB8500_CODEC_CR48_HIZ_SL15 7 -#define AB8500_CODEC_CR48_HIZ_SL14 6 -#define AB8500_CODEC_CR48_HIZ_SL13 5 -#define AB8500_CODEC_CR48_HIZ_SL12 4 -#define AB8500_CODEC_CR48_HIZ_SL11 3 -#define AB8500_CODEC_CR48_HIZ_SL10 2 -#define AB8500_CODEC_CR48_HIZ_SL9 1 -#define AB8500_CODEC_CR48_HIZ_SL8 0 - -/* CR49-CR0x0031 */ -#define AB8500_CODEC_CR49_HIZ_SL23 7 -#define AB8500_CODEC_CR49_HIZ_SL22 6 -#define AB8500_CODEC_CR49_HIZ_SL21 5 -#define AB8500_CODEC_CR49_HIZ_SL20 4 -#define AB8500_CODEC_CR49_HIZ_SL19 3 -#define AB8500_CODEC_CR49_HIZ_SL18 2 -#define AB8500_CODEC_CR49_HIZ_SL17 1 -#define AB8500_CODEC_CR49_HIZ_SL16 0 - -/* CR50-CR0x0032 */ -#define AB8500_CODEC_CR50_HIZ_SL31 7 -#define AB8500_CODEC_CR50_HIZ_SL30 6 -#define AB8500_CODEC_CR50_HIZ_SL29 5 -#define AB8500_CODEC_CR50_HIZ_SL28 4 -#define AB8500_CODEC_CR50_HIZ_SL27 3 -#define AB8500_CODEC_CR50_HIZ_SL26 2 -#define AB8500_CODEC_CR50_HIZ_SL25 1 -#define AB8500_CODEC_CR50_HIZ_SL24 0 - -/* CR51-CR0x0033 */ -#define AB8500_CODEC_CR51_DA12_VOICE 7 -#define AB8500_CODEC_CR51_SWAP_DA12_34 6 -#define AB8500_CODEC_CR51_SLDAI7TOSLADO1 5 -#define AB8500_CODEC_CR51_SLTODA1 0 - -/* CR52-CR0x0034 */ -#define AB8500_CODEC_CR52_SLDAI8TOSLADO2 5 -#define AB8500_CODEC_CR52_SLTODA2 0 - -/* CR53-CR0x0035 */ -#define AB8500_CODEC_CR53_DA34_VOICE 7 -#define AB8500_CODEC_CR53_SLDAI7TOSLADO3 5 -#define AB8500_CODEC_CR53_SLTODA3 0 - -/* CR54-CR0x0036 */ -#define AB8500_CODEC_CR54_SLDAI8TOSLADO4 5 -#define AB8500_CODEC_CR54_SLTODA4 0 - -/* CR55-CR0x0037 */ -#define AB8500_CODEC_CR55_DA56_VOICE 7 -#define AB8500_CODEC_CR55_SLDAI7TOSLADO5 5 -#define AB8500_CODEC_CR55_SLTODA5 0 - -/* CR56-CR0x0038 */ -#define AB8500_CODEC_CR56_SLDAI8TOSLADO6 5 -#define AB8500_CODEC_CR56_SLTODA6 0 - -/* CR57-CR0x0039 */ -#define AB8500_CODEC_CR57_SLDAI8TOSLADO7 5 -#define AB8500_CODEC_CR57_SLTODA7 0 - -/* CR58-CR0x003A */ -#define AB8500_CODEC_CR58_SLDAI7TOSLADO8 5 -#define AB8500_CODEC_CR58_SLTODA8 0 - -/* CR59-CR0x003B */ -#define AB8500_CODEC_CR59_PARLHF 7 -#define AB8500_CODEC_CR59_PARLVIB 6 -#define AB8500_CODEC_CR59_CLASSDVIB1SWAPEN 3 -#define AB8500_CODEC_CR59_CLASSDVIB2SWAPEN 2 -#define AB8500_CODEC_CR59_CLASSDHFLSWAPEN 1 -#define AB8500_CODEC_CR59_CLASSDHFRSWAPEN 0 - -/* CR60-CR0x003C */ -#define AB8500_CODEC_CR60_CLASSD_FIR_BYP 4 -#define AB8500_CODEC_CR60_CLASSD_HIGHVOL_EN 0 - -/* CR61-CR0x003D */ -#define AB8500_CODEC_CR61_CLASSD_DITH_HPGAIN 4 -#define AB8500_CODEC_CR61_CLASSD_DITH_WGAIN 0 - -/* CR62-CR0x003E */ -#define AB8500_CODEC_CR62_DMIC1SINC3 5 -#define AB8500_CODEC_CR62_DMIC2SINC3 4 -#define AB8500_CODEC_CR62_DMIC3SINC3 3 -#define AB8500_CODEC_CR62_DMIC4SINC3 2 -#define AB8500_CODEC_CR62_DMIC5SINC3 1 -#define AB8500_CODEC_CR62_DMIC6SINC3 0 - -/* CR63-CR0x003F */ -#define AB8500_CODEC_CR63_DATOHSLEN 7 -#define AB8500_CODEC_CR63_DATOHSREN 6 -#define AB8500_CODEC_CR63_AD1SEL 5 -#define AB8500_CODEC_CR63_AD2SEL 4 -#define AB8500_CODEC_CR63_AD3SEL 3 -#define AB8500_CODEC_CR63_AD5SEL 2 -#define AB8500_CODEC_CR63_AD6SEL 1 -#define AB8500_CODEC_CR63_ANCSEL 0 - -/* CR64-CR0x0040 */ -#define AB8500_CODEC_CR64_DATOHFREN 7 -#define AB8500_CODEC_CR64_DATOHFLEN 6 -#define AB8500_CODEC_CR64_HFRSEL 5 -#define AB8500_CODEC_CR64_HFLSEL 4 -#define AB8500_CODEC_CR64_STFIR1SEL 2 -#define AB8500_CODEC_CR64_STFIR2SEL 0 - -/* CR65-CR0x0041 */ -#define AB8500_CODEC_CR65_FADEDIS_AD1 6 -#define AB8500_CODEC_CR65_AD1GAIN 0 - -/* CR66-CR0x0042 */ -#define AB8500_CODEC_CR66_FADEDIS_AD2 6 -#define AB8500_CODEC_CR66_AD2GAIN 0 - -/* CR67-CR0x0043 */ -#define AB8500_CODEC_CR67_FADEDIS_AD3 6 -#define AB8500_CODEC_CR67_AD3GAIN 0 - -/* CR68-CR0x0044 */ -#define AB8500_CODEC_CR68_FADEDIS_AD4 6 -#define AB8500_CODEC_CR68_AD4GAIN 0 - -/* CR69-CR0x0045 */ -#define AB8500_CODEC_CR69_FADEDIS_AD5 6 -#define AB8500_CODEC_CR69_AD5GAIN 0 - -/* CR70-CR0x0046 */ -#define AB8500_CODEC_CR70_FADEDIS_AD6 6 -#define AB8500_CODEC_CR70_AD6GAIN 0 - -/* CR71-CR0x0047 */ -#define AB8500_CODEC_CR71_FADEDIS_DA1 6 -#define AB8500_CODEC_CR71_DA1GAIN 0 - -/* CR72-CR0x0048 */ -#define AB8500_CODEC_CR72_FADEDIS_DA2 6 -#define AB8500_CODEC_CR72_DA2GAIN 0 - -/* CR73-CR0x0049 */ -#define AB8500_CODEC_CR73_FADEDIS_DA3 6 -#define AB8500_CODEC_CR73_DA3GAIN 0 - -/* CR74-CR0x004A */ -#define AB8500_CODEC_CR74_FADEDIS_DA4 6 -#define AB8500_CODEC_CR74_DA4GAIN 0 - -/* CR75-CR0x004B */ -#define AB8500_CODEC_CR75_FADEDIS_DA5 6 -#define AB8500_CODEC_CR75_DA5GAIN 0 - -/* CR76-CR0x004C */ -#define AB8500_CODEC_CR76_FADEDIS_DA6 6 -#define AB8500_CODEC_CR76_DA6GAIN 0 - -/* CR77-CR0x004D */ -#define AB8500_CODEC_CR77_FADEDIS_AD1L 6 -#define AB8500_CODEC_CR77_AD1LBGAIN 0 - -/* CR78-CR0x004E */ -#define AB8500_CODEC_CR78_FADEDIS_AD2L 6 -#define AB8500_CODEC_CR78_AD2LBGAIN 0 - -/* CR79-CR0x004F */ -#define AB8500_CODEC_CR79_HSSINC1 7 -#define AB8500_CODEC_CR79_FADEDIS_HSL 4 -#define AB8500_CODEC_CR79_HSLDGAIN 0 - -/* CR80-CR0x0050 */ -#define AB8500_CODEC_CR80_FADE_SPEED 6 -#define AB8500_CODEC_CR80_FADEDIS_HSR 4 -#define AB8500_CODEC_CR80_HSRDGAIN 0 - -/* CR81-CR0x0051 */ -#define AB8500_CODEC_CR81_STFIR1GAIN 0 - -/* CR82-CR0x0052 */ -#define AB8500_CODEC_CR82_STFIR2GAIN 0 - -/* CR83-CR0x0053 */ -#define AB8500_CODEC_CR83_ENANC 2 -#define AB8500_CODEC_CR83_ANCIIRINIT 1 -#define AB8500_CODEC_CR83_ANCFIRUPDATE 0 - -/* CR84-CR0x0054 */ -#define AB8500_CODEC_CR84_ANCINSHIFT 0 - -/* CR85-CR0x0055 */ -#define AB8500_CODEC_CR85_ANCFIROUTSHIFT 0 - -/* CR86-CR0x0056 */ -#define AB8500_CODEC_CR86_ANCSHIFTOUT 0 - -/* CR87-CR0x0057 */ -#define AB8500_CODEC_CR87_ANCFIRCOEFF_MSB 0 - -/* CR88-CR0x0058 */ -#define AB8500_CODEC_CR88_ANCFIRCOEFF_LSB 0 - -/* CR89-CR0x0059 */ -#define AB8500_CODEC_CR89_ANCIIRCOEFF_MSB 0 - -/* CR90-CR0x005A */ -#define AB8500_CODEC_CR90_ANCIIRCOEFF_LSB 0 - -/* CR91-CR0x005B */ -#define AB8500_CODEC_CR91_ANCWARPDEL_MSB 0 - -/* CR92-CR0x005C */ -#define AB8500_CODEC_CR92_ANCWARPDEL_LSB 0 - -/* CR93-CR0x005D */ -#define AB8500_CODEC_CR93_ANCFIRPEAK_MSB 0 - -/* CR94-CR0x005E */ -#define AB8500_CODEC_CR94_ANCFIRPEAK_LSB 0 - -/* CR95-CR0x005F */ -#define AB8500_CODEC_CR95_ANCIIRPEAK_MSB 0 - -/* CR96-CR0x0060 */ -#define AB8500_CODEC_CR96_ANCIIRPEAK_LSB 0 - -/* CR97-CR0x0061 */ -#define AB8500_CODEC_CR97_STFIR_SET 7 -#define AB8500_CODEC_CR97_STFIR_ADDR 0 - -/* CR98-CR0x0062 */ -#define AB8500_CODEC_CR98_STFIR_COEFF_MSB 0 - -/* CR99-CR0x0063 */ -#define AB8500_CODEC_CR99_STFIR_COEFF_LSB 0 - -/* CR100-CR0x0064 */ -#define AB8500_CODEC_CR100_ENSTFIRS 2 -#define AB8500_CODEC_CR100_STFIRSTOIF1 1 -#define AB8500_CODEC_CR100_STFIR_BUSY 0 - -/* CR101-CR0x0065 */ -#define AB8500_CODEC_CR101_HSOFFSTMASK 7 -#define AB8500_CODEC_CR101_FIFOFULLMASK 6 -#define AB8500_CODEC_CR101_FIFOEMPTYMASK 5 -#define AB8500_CODEC_CR101_DASATMASK 4 -#define AB8500_CODEC_CR101_ADSATMASK 3 -#define AB8500_CODEC_CR101_ADDSPMASK 2 -#define AB8500_CODEC_CR101_DADSPMASK 1 -#define AB8500_CODEC_CR101_FIRSIDMASK 0 - -/* CR102-CR0x0066 */ -#define AB8500_CODEC_CR102_IT_HSOFFST 7 -#define AB8500_CODEC_CR102_IT_FIFOFULL 6 -#define AB8500_CODEC_CR102_IT_FIFOEMPTY 5 -#define AB8500_CODEC_CR102_IT_DASAT 4 -#define AB8500_CODEC_CR102_IT_ADSAT 3 -#define AB8500_CODEC_CR102_IT_ADDSP 2 -#define AB8500_CODEC_CR102_IT_DADSP 1 -#define AB8500_CODEC_CR102_IT_FIRSID 0 - -/* CR103-CR0x0067 */ -#define AB8500_CODEC_CR103_VSSREADYMASK 7 -#define AB8500_CODEC_CR103_SHORTHSLMASK 2 -#define AB8500_CODEC_CR103_SHORTHSRMASK 1 -#define AB8500_CODEC_CR103_SHORTEARMASK 0 - -/* CR104-CR0x0068 */ -#define AB8500_CODEC_CR104_IT_VSSREADY 7 -#define AB8500_CODEC_CR104_IT_SHORTHSL 2 -#define AB8500_CODEC_CR104_IT_SHORTHSR 1 -#define AB8500_CODEC_CR104_IT_SHORTEAR 0 - -/* CR105-CR0x0069 */ -#define AB8500_CODEC_CR105_BFIFOMASK 7 -#define AB8500_CODEC_CR105_BFIFOINT 0 - -/* CR106-CR0x006A */ -#define AB8500_CODEC_CR106_BFIFOTX 0 - -/* CR107-CR0x006B */ -#define AB8500_CODEC_CR107_BFIFOEXSL 5 -#define AB8500_CODEC_CR107_PREBITCLK0 2 -#define AB8500_CODEC_CR107_BFIFOMAST 1 -#define AB8500_CODEC_CR107_BFIFORUN 0 - -/* CR108-CR0x006C */ -#define AB8500_CODEC_CR108_BFIFOFRAMESW 0 - -/* CR109-CR0x006D */ -#define AB8500_CODEC_CR109_BFIFOWAKEUP 0 - -/* CR110-CR0x006E */ -#define AB8500_CODEC_CR110_BFIFOSAMPLE 0 - -/* CR111-CR0x006F */ -#define AB8500_CODEC_CR111_AUD_IP_REV 0 - -/* For SetVolume API*/ -#define AB8500_CODEC_MAX_VOLUME 100 - -/* Analog MIC1 & MIC2 */ -#define AB8500_CODEC_MIC_VOLUME_MAX 31 -#define AB8500_CODEC_MIC_VOLUME_MEDIUM 15 -#define AB8500_CODEC_MIC_VOLUME_MIN 0 - -/* Line-in */ -#define AB8500_CODEC_LINEIN_VOLUME_MAX 15 -#define AB8500_CODEC_LINEIN_VOLUME_MEDIUM 7 -#define AB8500_CODEC_LINEIN_VOLUME_MIN 0 - -/* HeadSet */ -#define AB8500_CODEC_HEADSET_VOLUME_MAX 13 -#define AB8500_CODEC_HEADSET_VOLUME_MEDIUM 6 -#define AB8500_CODEC_HEADSET_VOLUME_MIN 0 - -/* HeadSet Digital */ -#define AB8500_CODEC_HEADSET_D_VOLUME_MAX 0 -#define AB8500_CODEC_HEADSET_D_VOLUME_MEDIUM 7 -#define AB8500_CODEC_HEADSET_D_VOLUME_MIN 15 -#define AB8500_CODEC_HEADSET_D_VOLUME_0DB 8 - -/* Digital AD Path */ -#define AB8500_CODEC_AD_D_VOLUME_MAX 0 -#define AB8500_CODEC_AD_D_VOLUME_MEDIUM 31 -#define AB8500_CODEC_AD_D_VOLUME_MIN 63 - -/* Digital DA Path */ -#define AB8500_CODEC_DA_D_VOLUME_MAX 0 -#define AB8500_CODEC_DA_D_VOLUME_MEDIUM 31 -#define AB8500_CODEC_DA_D_VOLUME_MIN 63 - -/* EarPiece Digital */ -#define AB8500_CODEC_EARPIECE_D_VOLUME_MAX 0 -#define AB8500_CODEC_EARPIECE_D_VOLUME_MEDIUM 7 -#define AB8500_CODEC_EARPIECE_D_VOLUME_MIN 15 - -/* AD1 loopback to HFL & HFR Digital */ -#define AB8500_CODEC_AD_LB_TO_HF_L_R_VOLUME_MAX 0 -#define AB8500_CODEC_AD_LB_TO_HF_L_R_VOLUME_MEDIUM 31 -#define AB8500_CODEC_AD_LB_TO_HF_L_R_VOLUME_MIN 63 - -/* Line-in to HSL & HSR */ -#define AB8500_CODEC_LINEIN_TO_HS_L_R_VOLUME_MAX 0 -#define AB8500_CODEC_LINEIN_TO_HS_L_R_VOLUME_MEDIUM 9 -#define AB8500_CODEC_LINEIN_TO_HS_L_R_VOLUME_MIN 18 -#define AB8500_CODEC_LINEIN_TO_HS_L_R_LOOP_OPEN 19 - -/* Vibrator */ -#define AB8500_CODEC_VIBRATOR_VOLUME_MAX 100 -#define AB8500_CODEC_VIBRATOR_VOLUME_MEDIUM 50 -#define AB8500_CODEC_VIBRATOR_VOLUME_MIN 0 - -/* CR0 - 7 */ -typedef enum { - AB8500_CODEC_CR0_POWERUP_OFF, - AB8500_CODEC_CR0_POWERUP_ON -} t_ab8500_codec_cr0_powerup; - -/* CR0 - 3 */ -typedef enum { - AB8500_CODEC_CR0_ENAANA_OFF, - AB8500_CODEC_CR0_ENAANA_ON -} t_ab8500_codec_cr0_enaana; - -/* CR1 - 7 */ -typedef enum { - AB8500_CODEC_CR1_SWRESET_DISABLED, - AB8500_CODEC_CR1_SWRESET_ENABLED -} t_ab8500_codec_cr1_swreset; - -/* CR2 - 7 */ -typedef enum { - AB8500_CODEC_CR2_ENAD1_DISABLED, - AB8500_CODEC_CR2_ENAD1_ENABLED -} t_ab8500_codec_cr2_enad1; - -/* CR2 - 6 */ -typedef enum { - AB8500_CODEC_CR2_ENAD2_DISABLED, - AB8500_CODEC_CR2_ENAD2_ENABLED -} t_ab8500_codec_cr2_enad2; - -/* CR2 - 5 */ -typedef enum { - AB8500_CODEC_CR2_ENAD3_DISABLED, - AB8500_CODEC_CR2_ENAD3_ENABLED -} t_ab8500_codec_cr2_enad3; - -/* CR2 - 4 */ -typedef enum { - AB8500_CODEC_CR2_ENAD4_DISABLED, - AB8500_CODEC_CR2_ENAD4_ENABLED -} t_ab8500_codec_cr2_enad4; - -/* CR2 - 3 */ -typedef enum { - AB8500_CODEC_CR2_ENAD5_DISABLED, - AB8500_CODEC_CR2_ENAD5_ENABLED -} t_ab8500_codec_cr2_enad5; - -/* CR2 - 2 */ -typedef enum { - AB8500_CODEC_CR2_ENAD6_DISABLED, - AB8500_CODEC_CR2_ENAD6_ENABLED -} t_ab8500_codec_cr2_enad6; - -/* CR3 - 7 */ -typedef enum { - AB8500_CODEC_CR3_ENDA1_DISABLED, - AB8500_CODEC_CR3_ENDA1_ENABLED -} t_ab8500_codec_cr3_enda1; - -/* CR3 - 6 */ -typedef enum { - AB8500_CODEC_CR3_ENDA2_DISABLED, - AB8500_CODEC_CR3_ENDA2_ENABLED -} t_ab8500_codec_cr3_enda2; - -/* CR3 - 5 */ -typedef enum { - AB8500_CODEC_CR3_ENDA3_DISABLED, - AB8500_CODEC_CR3_ENDA3_ENABLED -} t_ab8500_codec_cr3_enda3; - -/* CR3 - 4 */ -typedef enum { - AB8500_CODEC_CR3_ENDA4_DISABLED, - AB8500_CODEC_CR3_ENDA4_ENABLED -} t_ab8500_codec_cr3_enda4; - -/* CR3 - 3 */ -typedef enum { - AB8500_CODEC_CR3_ENDA5_DISABLED, - AB8500_CODEC_CR3_ENDA5_ENABLED -} t_ab8500_codec_cr3_enda5; - -/* CR3 - 2 */ -typedef enum { - AB8500_CODEC_CR3_ENDA6_DISABLED, - AB8500_CODEC_CR3_ENDA6_ENABLED -} t_ab8500_codec_cr3_enda6; - -/* CR4 - 7 */ -typedef enum { - AB8500_CODEC_CR4_LOWPOWHS_NORMAL, - AB8500_CODEC_CR4_LOWPOWHS_LP -} t_ab8500_codec_cr4_lowpowhs; - -/* CR4 - 6:5 */ -typedef enum { - AB8500_CODEC_CR4_LOWPOWDACHS_NORMAL, - AB8500_CODEC_CR4_LOWPOWDACHS_DRIVERS_LP, - AB8500_CODEC_CR4_LOWPOWDACHS_LP, - AB8500_CODEC_CR4_LOWPOWDACHS_BOTH_LP -} t_ab8500_codec_cr4_lowpowdachs; - -/* CR4 - 4 */ -typedef enum { - AB8500_CODEC_CR4_LOWPOWEAR_NORMAL, - AB8500_CODEC_CR4_LOWPOWEAR_LP -} t_ab8500_codec_cr4_lowpowear; - -/* CR4 - 3:2 */ -typedef enum { - AB8500_CODEC_CR4_EAR_SEL_CM_0_95V, - AB8500_CODEC_CR4_EAR_SEL_CM_1_1V, - AB8500_CODEC_CR4_EAR_SEL_CM_1_27V, - AB8500_CODEC_CR4_EAR_SEL_CM_1_58V -} t_ab8500_codec_cr4_ear_sel_cm; - -/* CR4 - 1 */ -typedef enum { - AB8500_CODEC_CR4_HS_HP_EN_FILTER_DISABLED, - AB8500_CODEC_CR4_HS_HP_EN_FILTER_ENABLED -} t_ab8500_codec_cr4_hs_hp_en; - -/* CR5 - 7 */ -typedef enum { - AB8500_CODEC_CR5_ENMIC1_DISABLED, - AB8500_CODEC_CR5_ENMIC1_ENABLED -} t_ab8500_codec_cr5_enmic1; - -/* CR5 - 6 */ -typedef enum { - AB8500_CODEC_CR5_ENMIC2_DISABLED, - AB8500_CODEC_CR5_ENMIC2_ENABLED -} t_ab8500_codec_cr5_enmic2; - -/* CR5 - 5 */ -typedef enum { - AB8500_CODEC_CR5_ENLINL_DISABLED, - AB8500_CODEC_CR5_ENLINL_ENABLED -} t_ab8500_codec_cr5_enlinl; - -/* CR5 - 4 */ -typedef enum { - AB8500_CODEC_CR5_ENLINR_DISABLED, - AB8500_CODEC_CR5_ENLINR_ENABLED -} t_ab8500_codec_cr5_enlinr; - -/* CR5 - 3 */ -typedef enum { - AB8500_CODEC_CR5_MUTMIC1_DISABLED, - AB8500_CODEC_CR5_MUTMIC1_ENABLED -} t_ab8500_codec_cr5_mutmic1; - -/* CR5 - 2 */ -typedef enum { - AB8500_CODEC_CR5_MUTMIC2_DISABLED, - AB8500_CODEC_CR5_MUTMIC2_ENABLED -} t_ab8500_codec_cr5_mutmic2; - -/* CR5 - 1 */ -typedef enum { - AB8500_CODEC_CR5_MUTLINL_DISABLED, - AB8500_CODEC_CR5_MUTLINL_ENABLED -} t_ab8500_codec_cr5_mutlinl; - -/* CR5 - 0 */ -typedef enum { - AB8500_CODEC_CR5_MUTLINR_DISABLED, - AB8500_CODEC_CR5_MUTLINR_ENABLED -} t_ab8500_codec_cr5_mutlinr; - -/* CR6 - 7 */ -typedef enum { - AB8500_CODEC_CR6_ENDMIC1_DISABLED, - AB8500_CODEC_CR6_ENDMIC1_ENABLED -} t_ab8500_codec_cr6_endmic1; - -/* CR6 - 6 */ -typedef enum { - AB8500_CODEC_CR6_ENDMIC2_DISABLED, - AB8500_CODEC_CR6_ENDMIC2_ENABLED -} t_ab8500_codec_cr6_endmic2; - -/* CR6 - 5 */ -typedef enum { - AB8500_CODEC_CR6_ENDMIC3_DISABLED, - AB8500_CODEC_CR6_ENDMIC3_ENABLED -} t_ab8500_codec_cr6_endmic3; - -/* CR6 - 4 */ -typedef enum { - AB8500_CODEC_CR6_ENDMIC4_DISABLED, - AB8500_CODEC_CR6_ENDMIC4_ENABLED -} t_ab8500_codec_cr6_endmic4; - -/* CR6 - 3 */ -typedef enum { - AB8500_CODEC_CR6_ENDMIC5_DISABLED, - AB8500_CODEC_CR6_ENDMIC5_ENABLED -} t_ab8500_codec_cr6_endmic5; - -/* CR6 - 2 */ -typedef enum { - AB8500_CODEC_CR6_ENDMIC6_DISABLED, - AB8500_CODEC_CR6_ENDMIC6_ENABLED -} t_ab8500_codec_cr6_endmic6; - -/* CR7 - 7 */ -typedef enum { - AB8500_CODEC_CR7_MIC1SEL_MIC1A, - AB8500_CODEC_CR7_MIC1SEL_MIC1B -} t_ab8500_codec_cr7_mic1sel; - -/* CR7 - 6 */ -typedef enum { - AB8500_CODEC_CR7_LINRSEL_MIC2, - AB8500_CODEC_CR7_LINRSEL_LINR -} t_ab8500_codec_cr7_linrsel; - -/* CR7 - 5 */ -typedef enum { - AB8500_CODEC_CR7_ENDRVHSL_DISABLED, - AB8500_CODEC_CR7_ENDRVHSL_ENABLED -} t_ab8500_codec_cr7_endrvhsl; - -/* CR7 - 4 */ -typedef enum { - AB8500_CODEC_CR7_ENDRVHSR_DISABLED, - AB8500_CODEC_CR7_ENDRVHSR_ENABLED -} t_ab8500_codec_cr7_endrvhsr; - -/* CR7 - 2 */ -typedef enum { - AB8500_CODEC_CR7_ENADCMIC_DISABLED, - AB8500_CODEC_CR7_ENADCMIC_ENABLED -} t_ab8500_codec_cr7_enadcmic; - -/* CR7 - 1 */ -typedef enum { - AB8500_CODEC_CR7_ENADCLINL_DISABLED, - AB8500_CODEC_CR7_ENADCLINL_ENABLED -} t_ab8500_codec_cr7_enadclinl; - -/* CR7 - 0 */ -typedef enum { - AB8500_CODEC_CR7_ENADCLINR_DISABLED, - AB8500_CODEC_CR7_ENADCLINR_ENABLED -} t_ab8500_codec_cr7_enadclinr; - -/* CR8 - 7 */ -typedef enum { - AB8500_CODEC_CR8_CP_DIS_PLDWN_ENABLED, - AB8500_CODEC_CR8_CP_DIS_PLDWN_DISABLED -} t_ab8500_codec_cr8_cp_dis_pldwn; - -/* CR8 - 6 */ -typedef enum { - AB8500_CODEC_CR8_ENEAR_DISABLED, - AB8500_CODEC_CR8_ENEAR_ENABLED -} t_ab8500_codec_cr8_enear; - -/* CR8 - 5 */ -typedef enum { - AB8500_CODEC_CR8_ENHSL_DISABLED, - AB8500_CODEC_CR8_ENHSL_ENABLED -} t_ab8500_codec_cr8_enhsl; - -/* CR8 - 4 */ -typedef enum { - AB8500_CODEC_CR8_ENHSR_DISABLED, - AB8500_CODEC_CR8_ENHSR_ENABLED -} t_ab8500_codec_cr8_enhsr; - -/* CR8 - 3 */ -typedef enum { - AB8500_CODEC_CR8_ENHFL_DISABLED, - AB8500_CODEC_CR8_ENHFL_ENABLED -} t_ab8500_codec_cr8_enhfl; - -/* CR8 - 2 */ -typedef enum { - AB8500_CODEC_CR8_ENHFR_DISABLED, - AB8500_CODEC_CR8_ENHFR_ENABLED -} t_ab8500_codec_cr8_enhfr; - -/* CR8 - 1 */ -typedef enum { - AB8500_CODEC_CR8_ENVIBL_DISABLED, - AB8500_CODEC_CR8_ENVIBL_ENABLED -} t_ab8500_codec_cr8_envibl; - -/* CR8 - 0 */ -typedef enum { - AB8500_CODEC_CR8_ENVIBR_DISABLED, - AB8500_CODEC_CR8_ENVIBR_ENABLED -} t_ab8500_codec_cr8_envibr; - -/* CR9 - 6 */ -typedef enum { - AB8500_CODEC_CR9_ENDACEAR_DISABLED, - AB8500_CODEC_CR9_ENDACEAR_ENABLED -} t_ab8500_codec_cr9_endacear; - -/* CR9 - 5 */ -typedef enum { - AB8500_CODEC_CR9_ENDACHSL_DISABLED, - AB8500_CODEC_CR9_ENDACHSL_ENABLED -} t_ab8500_codec_cr9_endachsl; - -/* CR9 - 4 */ -typedef enum { - AB8500_CODEC_CR9_ENDACHSR_DISABLED, - AB8500_CODEC_CR9_ENDACHSR_ENABLED -} t_ab8500_codec_cr9_endachsr; - -/* CR9 - 3 */ -typedef enum { - AB8500_CODEC_CR9_ENDACHFL_DISABLED, - AB8500_CODEC_CR9_ENDACHFL_ENABLED -} t_ab8500_codec_cr9_endachfl; - -/* CR9 - 2 */ -typedef enum { - AB8500_CODEC_CR9_ENDACHFR_DISABLED, - AB8500_CODEC_CR9_ENDACHFR_ENABLED -} t_ab8500_codec_cr9_endachfr; - -/* CR9 - 1 */ -typedef enum { - AB8500_CODEC_CR9_ENDACVIBL_DISABLED, - AB8500_CODEC_CR9_ENDACVIBL_ENABLED -} t_ab8500_codec_cr9_endacvibl; - -/* CR9 - 0 */ -typedef enum { - AB8500_CODEC_CR9_ENDACVIBR_DISABLED, - AB8500_CODEC_CR9_ENDACVIBR_ENABLED -} t_ab8500_codec_cr9_endacvibr; - -/* CR10 - 6 */ -typedef enum { - AB8500_CODEC_CR10_MUTEEAR_DISABLED, - AB8500_CODEC_CR10_MUTEEAR_ENABLED -} t_ab8500_codec_cr10_muteear; - -/* CR10 - 5 */ -typedef enum { - AB8500_CODEC_CR10_MUTEHSL_DISABLED, - AB8500_CODEC_CR10_MUTEHSL_ENABLED -} t_ab8500_codec_cr10_mutehsl; - -/* CR10 - 4 */ -typedef enum { - AB8500_CODEC_CR10_MUTEHSR_DISABLED, - AB8500_CODEC_CR10_MUTEHSR_ENABLED -} t_ab8500_codec_cr10_mutehsr; - -/* CR11 - 7 */ -typedef enum { - AB8500_CODEC_CR11_ENSHORTPWD_DISABLED, - AB8500_CODEC_CR11_ENSHORTPWD_ENABLED -} t_ab8500_codec_cr11_enshortpwd; - -/* CR11 - 6 */ -typedef enum { - AB8500_CODEC_CR11_EARSHORTDIS_ENABLED, - AB8500_CODEC_CR11_EARSHORTDIS_DISABLED -} t_ab8500_codec_cr11_earshortdis; - -/* CR11 - 5 */ -typedef enum { - AB8500_CODEC_CR11_HSSHORTDIS_ENABLED, - AB8500_CODEC_CR11_HSSHORTDIS_DISABLED -} t_ab8500_codec_cr11_hsshortdis; - -/* CR11 - 4 */ -typedef enum { - AB8500_CODEC_CR11_HSPULLDEN_HIGH, - AB8500_CODEC_CR11_HSPULLDEN_DOWN -} t_ab8500_codec_cr11_hspullden; - -/* CR11 - 2 */ -typedef enum { - AB8500_CODEC_CR11_HSOSCEN_SYSTEMCLOCK, - AB8500_CODEC_CR11_HSOSCEN_LOCALOSC -} t_ab8500_codec_cr11_hsoscen; - -/* CR11 - 1 */ -typedef enum { - AB8500_CODEC_CR11_HSFADEN_FADING, - AB8500_CODEC_CR11_HSFADEN_IMMEDIATELY -} t_ab8500_codec_cr11_hsfaden; - -/* CR11 - 0 */ -typedef enum { - AB8500_CODEC_CR11_HSZCDDIS_ONZEROCROSS, - AB8500_CODEC_CR11_HSZCDDIS_WITHOUTZEROCROSS -} t_ab8500_codec_cr11_hszcddis; - -/* CR12 - 7 */ -typedef enum { - AB8500_CODEC_CR12_ENCPHS_DISABLED, - AB8500_CODEC_CR12_ENCPHS_ENABLED -} t_ab8500_codec_cr12_encphs; - -/* CR12 - 0 */ -typedef enum { - AB8500_CODEC_CR12_HSAUTOEN_DISABLED, - AB8500_CODEC_CR12_HSAUTOEN_ENABLED -} t_ab8500_codec_cr12_hsautoen; - -/* CR13 - 7:4 */ -typedef enum { - AB8500_CODEC_CR13_ENVDET_HTHRESH_25, - AB8500_CODEC_CR13_ENVDET_HTHRESH_50, - AB8500_CODEC_CR13_ENVDET_HTHRESH_100, - AB8500_CODEC_CR13_ENVDET_HTHRESH_150, - AB8500_CODEC_CR13_ENVDET_HTHRESH_200, - AB8500_CODEC_CR13_ENVDET_HTHRESH_250, - AB8500_CODEC_CR13_ENVDET_HTHRESH_300, - AB8500_CODEC_CR13_ENVDET_HTHRESH_350, - AB8500_CODEC_CR13_ENVDET_HTHRESH_400, - AB8500_CODEC_CR13_ENVDET_HTHRESH_450, - AB8500_CODEC_CR13_ENVDET_HTHRESH_500, - AB8500_CODEC_CR13_ENVDET_HTHRESH_550, - AB8500_CODEC_CR13_ENVDET_HTHRESH_600, - AB8500_CODEC_CR13_ENVDET_HTHRESH_650, - AB8500_CODEC_CR13_ENVDET_HTHRESH_700, - AB8500_CODEC_CR13_ENVDET_HTHRESH_750 -} t_ab8500_codec_cr13_envdet_hthresh; - -/* CR13 - 3:0 */ -typedef enum { - AB8500_CODEC_CR13_ENVDET_LTHRESH_25, - AB8500_CODEC_CR13_ENVDET_LTHRESH_50, - AB8500_CODEC_CR13_ENVDET_LTHRESH_100, - AB8500_CODEC_CR13_ENVDET_LTHRESH_150, - AB8500_CODEC_CR13_ENVDET_LTHRESH_200, - AB8500_CODEC_CR13_ENVDET_LTHRESH_250, - AB8500_CODEC_CR13_ENVDET_LTHRESH_300, - AB8500_CODEC_CR13_ENVDET_LTHRESH_350, - AB8500_CODEC_CR13_ENVDET_LTHRESH_400, - AB8500_CODEC_CR13_ENVDET_LTHRESH_450, - AB8500_CODEC_CR13_ENVDET_LTHRESH_500, - AB8500_CODEC_CR13_ENVDET_LTHRESH_550, - AB8500_CODEC_CR13_ENVDET_LTHRESH_600, - AB8500_CODEC_CR13_ENVDET_LTHRESH_650, - AB8500_CODEC_CR13_ENVDET_LTHRESH_700, - AB8500_CODEC_CR13_ENVDET_LTHRESH_750 -} t_ab8500_codec_cr13_envdet_lthresh; - -/* CR14 - 7 */ -typedef enum { - AB8500_CODEC_CR14_SMPSLVEN_HIGHVOLTAGE, - AB8500_CODEC_CR14_SMPSLVEN_LOWVOLTAGE -} t_ab8500_codec_cr14_smpslven; - -/* CR14 - 6 */ -typedef enum { - AB8500_CODEC_CR14_ENVDETSMPSEN_DISABLED, - AB8500_CODEC_CR14_ENVDETSMPSEN_ENABLED -} t_ab8500_codec_cr14_envdetsmpsen; - -/* CR14 - 5 */ -typedef enum { - AB8500_CODEC_CR14_CPLVEN_HIGHVOLTAGE, - AB8500_CODEC_CR14_CPLVEN_LOWVOLTAGE -} t_ab8500_codec_cr14_cplven; - -/* CR14 - 4 */ -typedef enum { - AB8500_CODEC_CR14_ENVDETCPEN_DISABLED, - AB8500_CODEC_CR14_ENVDETCPEN_ENABLED -} t_ab8500_codec_cr14_envdetcpen; - -/* CR14 - 3:0 */ -typedef enum { - AB8500_CODEC_CR14_ENVET_TIME_27USEC, - AB8500_CODEC_CR14_ENVET_TIME_53USEC, - AB8500_CODEC_CR14_ENVET_TIME_106USEC, - AB8500_CODEC_CR14_ENVET_TIME_212USEC, - AB8500_CODEC_CR14_ENVET_TIME_424USEC, - AB8500_CODEC_CR14_ENVET_TIME_848USEC, - AB8500_CODEC_CR14_ENVET_TIME_1MSEC, - AB8500_CODEC_CR14_ENVET_TIME_3MSEC, - AB8500_CODEC_CR14_ENVET_TIME_6MSEC, - AB8500_CODEC_CR14_ENVET_TIME_13MSEC, - AB8500_CODEC_CR14_ENVET_TIME_27MSEC, - AB8500_CODEC_CR14_ENVET_TIME_54MSEC, - AB8500_CODEC_CR14_ENVET_TIME_109MSEC, - AB8500_CODEC_CR14_ENVET_TIME_218MSEC, - AB8500_CODEC_CR14_ENVET_TIME_436MSEC, - AB8500_CODEC_CR14_ENVET_TIME_872MSEC, -} t_ab8500_codec_cr14_envet_time; - -/* CR15 - 7 */ -typedef enum { - AB8500_CODEC_CR15_PWMTOVIBL_DA_PATH, - AB8500_CODEC_CR15_PWMTOVIBL_PWM -} t_ab8500_codec_cr15_pwmtovibl; - -/* CR15 - 6 */ -typedef enum { - AB8500_CODEC_CR15_PWMTOVIBR_DA_PATH, - AB8500_CODEC_CR15_PWMTOVIBR_PWM -} t_ab8500_codec_cr15_pwmtovibr; - -/* CR15 - 5 */ -typedef enum { - AB8500_CODEC_CR15_PWMLCTRL_PWMNPLGPOL, - AB8500_CODEC_CR15_PWMLCTRL_PWMNPLDUTYCYCLE -} t_ab8500_codec_cr15_pwmlctrl; - -/* CR15 - 4 */ -typedef enum { - AB8500_CODEC_CR15_PWMRCTRL_PWMNPRGPOL, - AB8500_CODEC_CR15_PWMRCTRL_PWMNPRDUTYCYCLE -} t_ab8500_codec_cr15_pwmrctrl; - -/* CR15 - 3 */ -typedef enum { - AB8500_CODEC_CR15_PWMNLCTRL_PWMNLGPOL, - AB8500_CODEC_CR15_PWMNLCTRL_PWMNLDUTYCYCLE -} t_ab8500_codec_cr15_pwmnlctrl; - -/* CR15 - 2 */ -typedef enum { - AB8500_CODEC_CR15_PWMPLCTRL_PWMPLGPOL, - AB8500_CODEC_CR15_PWMPLCTRL_PWMPLDUTYCYCLE -} t_ab8500_codec_cr15_pwmplctrl; - -/* CR15 - 1 */ -typedef enum { - AB8500_CODEC_CR15_PWMNRCTRL_PWMNRGPOL, - AB8500_CODEC_CR15_PWMNRCTRL_PWMNRDUTYCYCLE -} t_ab8500_codec_cr15_pwmnrctrl; - -/* CR15 - 0 */ -typedef enum { - AB8500_CODEC_CR15_PWMPRCTRL_PWMPRGPOL, - AB8500_CODEC_CR15_PWMPRCTRL_PWMPRDUTYCYCLE -} t_ab8500_codec_cr15_pwmprctrl; - -/* CR16 - 7 */ -typedef enum { - AB8500_CODEC_CR16_PWMNLPOL_GNDVIB, - AB8500_CODEC_CR16_PWMNLPOL_VINVIB -} t_ab8500_codec_cr16_pwmnlpol; - -/* CR16 - 6:0 */ -typedef t_uint8 t_ab8500_codec_cr16_pwmnldutycycle; - -/* CR17 - 7 */ -typedef enum { - AB8500_CODEC_CR17_PWMPLPOL_GNDVIB, - AB8500_CODEC_CR17_PWMPLPOL_VINVIB -} t_ab8500_codec_cr17_pwmplpol; - -/* CR17 - 6:0 */ -typedef t_uint8 t_ab8500_codec_cr17_pwmpldutycycle; - -/* CR18 - 7 */ -typedef enum { - AB8500_CODEC_CR18_PWMNRPOL_GNDVIB, - AB8500_CODEC_CR18_PWMNRPOL_VINVIB -} t_ab8500_codec_cr18_pwmnrpol; - -/* CR18 - 6:0 */ -typedef t_uint8 t_ab8500_codec_cr18_pwmnrdutycycle; - -/* CR19 - 7 */ -typedef enum { - AB8500_CODEC_CR19_PWMPRPOL_GNDVIB, - AB8500_CODEC_CR19_PWMPRPOL_VINVIB -} t_ab8500_codec_cr19_pwmprpol; - -/* CR19 - 6:0 */ -typedef t_uint8 t_ab8500_codec_cr19_pwmprdutycycle; - -/* CR20 - 7 */ -typedef enum { - AB8500_CODEC_CR20_EN_SE_MIC1_DIFFERENTIAL, - AB8500_CODEC_CR20_EN_SE_MIC1_SINGLE -} t_ab8500_codec_cr20_en_se_mic1; - -/* CR20 - 6 */ -typedef enum { - AB8500_CODEC_CR20_LOW_POW_MIC1_NORMAL, - AB8500_CODEC_CR20_LOW_POW_MIC1_LOW_POWER -} t_ab8500_codec_cr20_low_pow_mic1; - -/* CR20 - 4:0 */ -typedef t_uint8 t_ab8500_codec_cr20_mic1_gain; - -/* CR21 - 7 */ -typedef enum { - AB8500_CODEC_CR21_EN_SE_MIC2_DIFFERENTIAL, - AB8500_CODEC_CR21_EN_SE_MIC2_SINGLE -} t_ab8500_codec_cr21_en_se_mic2; - -/* CR21 - 6 */ -typedef enum { - AB8500_CODEC_CR21_LOW_POW_MIC2_NORMAL, - AB8500_CODEC_CR21_LOW_POW_MIC2_LOW_POWER -} t_ab8500_codec_cr21_low_pow_mic2; - -/* CR21 - 4:0 */ -typedef t_uint8 t_ab8500_codec_cr21_mic2_gain; - -/* CR22 - 7:4 */ -typedef t_uint8 t_ab8500_codec_cr22_hsl_gain; - -/* CR22 - 3:0 */ -typedef t_uint8 t_ab8500_codec_cr22_hsr_gain; - -/* CR23 - 7:4 */ -typedef t_uint8 t_ab8500_codec_cr23_linl_gain; - -/* CR23 - 3:0 */ -typedef t_uint8 t_ab8500_codec_cr23_linr_gain; - -/* CR24 - 4:0 */ -typedef t_uint8 t_ab8500_codec_cr24_lintohsl_gain; - -/* CR25 - 4:0 */ -typedef t_uint8 t_ab8500_codec_cr25_lintohsr_gain; - -/* CR26 - 7 */ -typedef enum { - AB8500_CODEC_CR26_AD1NH_FILTER_ENABLED, - AB8500_CODEC_CR26_AD1NH_FILTER_DISABLED -} t_ab8500_codec_cr26_ad1nh; - -/* CR26 - 6 */ -typedef enum { - AB8500_CODEC_CR26_AD2NH_FILTER_ENABLED, - AB8500_CODEC_CR26_AD2NH_FILTER_DISABLED -} t_ab8500_codec_cr26_ad2nh; - -/* CR26 - 5 */ -typedef enum { - AB8500_CODEC_CR26_AD3NH_FILTER_ENABLED, - AB8500_CODEC_CR26_AD3NH_FILTER_DISABLED -} t_ab8500_codec_cr26_ad3nh; - -/* CR26 - 4 */ -typedef enum { - AB8500_CODEC_CR26_AD4NH_FILTER_ENABLED, - AB8500_CODEC_CR26_AD4NH_FILTER_DISABLED -} t_ab8500_codec_cr26_ad4nh; - -/* CR26 - 3 */ -typedef enum { - AB8500_CODEC_CR26_AD1_VOICE_AUDIOFILTER, - AB8500_CODEC_CR26_AD1_VOICE_LOWLATENCYFILTER -} t_ab8500_codec_cr26_ad1_voice; - -/* CR26 - 2 */ -typedef enum { - AB8500_CODEC_CR26_AD2_VOICE_AUDIOFILTER, - AB8500_CODEC_CR26_AD2_VOICE_LOWLATENCYFILTER -} t_ab8500_codec_cr26_ad2_voice; - -/* CR26 - 1 */ -typedef enum { - AB8500_CODEC_CR26_AD3_VOICE_AUDIOFILTER, - AB8500_CODEC_CR26_AD3_VOICE_LOWLATENCYFILTER -} t_ab8500_codec_cr26_ad3_voice; - -/* CR26 - 0 */ -typedef enum { - AB8500_CODEC_CR26_AD4_VOICE_AUDIOFILTER, - AB8500_CODEC_CR26_AD4_VOICE_LOWLATENCYFILTER -} t_ab8500_codec_cr26_ad4_voice; - -/* CR27 - 7 */ -typedef enum { - AB8500_CODEC_CR27_EN_MASTGEN_DISABLED, - AB8500_CODEC_CR27_EN_MASTGEN_ENABLED -} t_ab8500_codec_cr27_en_mastgen; - -/* CR27 - 6:5 */ -/* In ab8500_codec.h */ - -/* CR27 - 4 */ -typedef enum { - AB8500_CODEC_CR27_ENFS_BITCLK1_DISABLED, - AB8500_CODEC_CR27_ENFS_BITCLK1_ENABLED -} t_ab8500_codec_cr27_enfs_bitclk1; - -/* CR27 - 2:1 */ -/* In ab8500_codec.h */ - -/* CR27 - 0 */ -typedef enum { - AB8500_CODEC_CR27_ENFS_BITCLK0_DISABLED, - AB8500_CODEC_CR27_ENFS_BITCLK0_ENABLED -} t_ab8500_codec_cr27_enfs_bitclk0; - -/* CR28 - 6 */ -typedef enum { - AB8500_CODEC_CR28_FSYNC0P_RISING_EDGE, - AB8500_CODEC_CR28_FSYNC0P_FALLING_EDGE -} t_ab8500_codec_cr28_fsync0p; - -/* CR28 - 5 */ -typedef enum { - AB8500_CODEC_CR28_BITCLK0P_RISING_EDGE, - AB8500_CODEC_CR28_BITCLK0P_FALLING_EDGE -} t_ab8500_codec_cr28_bitclk0p; - -/* CR28 - 4 */ -typedef enum { - AB8500_CODEC_CR28_IF0DEL_NOT_DELAYED, - AB8500_CODEC_CR28_IF0DEL_DELAYED -} t_ab8500_codec_cr28_if0del; - -/* CR28 - 3:2 */ -typedef enum { - AB8500_CODEC_CR28_IF0FORMAT_DISABLED, - AB8500_CODEC_CR28_IF0FORMAT_TDM, - AB8500_CODEC_CR28_IF0FORMAT_I2S_LEFTALIGNED -} t_ab8500_codec_cr28_if0format; - -/* CR28 - 1:0 */ -/* In ab8500_codec.h */ - -/* CR29 - 7 */ -typedef enum { - AB8500_CODEC_CR29_IF0DATOIF1AD_NOTSENT, - AB8500_CODEC_CR29_IF0DATOIF1AD_SENT -} t_ab8500_codec_cr29_if0datoif1ad; - -/* CR29 - 6 */ -typedef enum { - AB8500_CODEC_CR29_IF0CKTOIF1CK_NOTSENT, - AB8500_CODEC_CR29_IF0CKTOIF1CK_SENT -} t_ab8500_codec_cr29_if0cktoif1ck; - -/* CR29 - 5 */ -typedef enum { - AB8500_CODEC_CR29_IF1MASTER_FS1CK1_INPUT, - AB8500_CODEC_CR29_IF1MASTER_FS1CK1_OUTPUT -} t_ab8500_codec_cr29_if1master; - -/* CR29 - 3 */ -typedef enum { - AB8500_CODEC_CR29_IF1DATOIF0AD_NOTSENT, - AB8500_CODEC_CR29_IF1DATOIF0AD_SENT -} t_ab8500_codec_cr29_if1datoif0ad; - -/* CR29 - 2 */ -typedef enum { - AB8500_CODEC_CR29_IF1CKTOIF0CK_NOTSENT, - AB8500_CODEC_CR29_IF1CKTOIF0CK_SENT -} t_ab8500_codec_cr29_if1cktoif0ck; - -/* CR29 - 1 */ -typedef enum { - AB8500_CODEC_CR29_IF0MASTER_FS0CK0_INPUT, - AB8500_CODEC_CR29_IF0MASTER_FS0CK0_OUTPUT -} t_ab8500_codec_cr29_if0master; - -/* CR29 - 0 */ -typedef enum { - AB8500_CODEC_CR29_IF0BFIFOEN_NORMAL_MODE, - AB8500_CODEC_CR29_IF0BFIFOEN_BURST_MODE -} t_ab8500_codec_cr29_if0bfifoen; - -/* CR30 - 6 */ -typedef enum { - AB8500_CODEC_CR30_FSYNC1P_RISING_EDGE, - AB8500_CODEC_CR30_FSYNC1P_FALLING_EDGE -} t_ab8500_codec_cr30_fsync1p; - -/* CR30 - 5 */ -typedef enum { - AB8500_CODEC_CR30_BITCLK1P_RISING_EDGE, - AB8500_CODEC_CR30_BITCLK1P_FALLING_EDGE -} t_ab8500_codec_cr30_bitclk1p; - -/* CR30 - 4 */ -typedef enum { - AB8500_CODEC_CR30_IF1DEL_NOT_DELAYED, - AB8500_CODEC_CR30_IF1DEL_DELAYED -} t_ab8500_codec_cr30_if1del; - -/* CR30 - 3:2 */ -typedef enum { - AB8500_CODEC_CR30_IF1FORMAT_DISABLED, - AB8500_CODEC_CR30_IF1FORMAT_TDM, - AB8500_CODEC_CR30_IF1FORMAT_I2S_LEFTALIGNED -} t_ab8500_codec_cr30_if1format; - -/* CR30 - 1:0 */ -/* In ab8500_codec.h */ - -/* CR31:46 - 7:4 or 3:0 */ -/* In ab8500_codec.h */ - -/* CR47:50 - 7/6/5/4/3/2/1/0 */ -typedef enum { - AB8500_CODEC_CR47_TO_CR50_HIZ_SL_LOW_IMPEDANCE, - AB8500_CODEC_CR47_TO_CR50_HIZ_SL_HIGH_IMPEDANCE, -} t_ab8500_codec_cr47_to_cr50_hiz_sl; - -/* CR51 - 7 */ -typedef enum { - AB8500_CODEC_CR51_DA12_VOICE_AUDIOFILTER, - AB8500_CODEC_CR51_DA12_VOICE_LOWLATENCYFILTER -} t_ab8500_codec_cr51_da12_voice; - -/* CR51 - 6 */ -typedef enum { - AB8500_CODEC_CR51_SWAPDA12_34_NORMAL, - AB8500_CODEC_CR51_SWAPDA12_34_SWAPPED -} t_ab8500_codec_cr51_swapda12_34; - -/* CR51 - 5 */ -typedef enum { - AB8500_CODEC_CR51_SLDAI7TOSLADO1_NOT_LOOPEDBACK, - AB8500_CODEC_CR51_SLDAI7TOSLADO1_LOOPEDBACK -} t_ab8500_codec_cr51_sldai7toslado1; - -/* CR51:58 - 4:0 */ -/* In ab8500_codec.h */ - -/* CR52 - 5 */ -typedef enum { - AB8500_CODEC_CR52_SLDAI8TOSLADO2_NOT_LOOPEDBACK, - AB8500_CODEC_CR52_SLDAI8TOSLADO2_LOOPEDBACK -} t_ab8500_codec_cr52_sldai8toslado2; - -/* CR53 - 7 */ -typedef enum { - AB8500_CODEC_CR53_DA34_VOICE_AUDIOFILTER, - AB8500_CODEC_CR53_DA34_VOICE_LOWLATENCYFILTER -} t_ab8500_codec_cr53_da34_voice; - -/* CR53 - 5 */ -typedef enum { - AB8500_CODEC_CR53_SLDAI7TOSLADO3_NOT_LOOPEDBACK, - AB8500_CODEC_CR53_SLDAI7TOSLADO3_LOOPEDBACK -} t_ab8500_codec_cr53_sldai7toslado3; - -/* CR54 - 5 */ -typedef enum { - AB8500_CODEC_CR54_SLDAI8TOSLADO4_NOT_LOOPEDBACK, - AB8500_CODEC_CR54_SLDAI8TOSLADO4_LOOPEDBACK -} t_ab8500_codec_cr54_sldai8toslado4; - -/* CR55 - 7 */ -typedef enum { - AB8500_CODEC_CR55_DA56_VOICE_AUDIOFILTER, - AB8500_CODEC_CR55_DA56_VOICE_LOWLATENCYFILTER -} t_ab8500_codec_cr55_da56_voice; - -/* CR55 - 5 */ -typedef enum { - AB8500_CODEC_CR55_SLDAI7TOSLADO5_NOT_LOOPEDBACK, - AB8500_CODEC_CR55_SLDAI7TOSLADO5_LOOPEDBACK -} t_ab8500_codec_cr55_sldai7toslado5; - -/* CR56 - 5 */ -typedef enum { - AB8500_CODEC_CR56_SLDAI8TOSLADO6_NOT_LOOPEDBACK, - AB8500_CODEC_CR56_SLDAI8TOSLADO6_LOOPEDBACK -} t_ab8500_codec_cr56_sldai8toslado6; - -/* CR57 - 5 */ -typedef enum { - AB8500_CODEC_CR57_SLDAI8TOSLADO7_NOT_LOOPEDBACK, - AB8500_CODEC_CR57_SLDAI8TOSLADO7_LOOPEDBACK -} t_ab8500_codec_cr57_sldai8toslado7; - -/* CR58 - 5 */ -typedef enum { - AB8500_CODEC_CR58_SLDAI7TOSLADO8_NOT_LOOPEDBACK, - AB8500_CODEC_CR58_SLDAI7TOSLADO8_LOOPEDBACK -} t_ab8500_codec_cr58_sldai7toslado8; - -/* CR59 - 7 */ -typedef enum { - AB8500_CODEC_CR59_PARLHF_INDEPENDENT, - AB8500_CODEC_CR59_PARLHF_BRIDGED -} t_ab8500_codec_cr59_parlhf; - -/* CR59 - 6 */ -typedef enum { - AB8500_CODEC_CR59_PARLVIB_INDEPENDENT, - AB8500_CODEC_CR59_PARLVIB_BRIDGED -} t_ab8500_codec_cr59_parlvib; - -/* CR59 - 3 */ -typedef enum { - AB8500_CODEC_CR59_CLASSDVIB1_SWAPEN_DISABLED, - AB8500_CODEC_CR59_CLASSDVIB1_SWAPEN_ENABLED -} t_ab8500_codec_cr59_classdvib1_swapen; - -/* CR59 - 2 */ -typedef enum { - AB8500_CODEC_CR59_CLASSDVIB2_SWAPEN_DISABLED, - AB8500_CODEC_CR59_CLASSDVIB2_SWAPEN_ENABLED -} t_ab8500_codec_cr59_classdvib2_swapen; - -/* CR59 - 1 */ -typedef enum { - AB8500_CODEC_CR59_CLASSDHFL_SWAPEN_DISABLED, - AB8500_CODEC_CR59_CLASSDHFL_SWAPEN_ENABLED -} t_ab8500_codec_cr59_classdhfl_swapen; - -/* CR59 - 0 */ -typedef enum { - AB8500_CODEC_CR59_CLASSDHFR_SWAPEN_DISABLED, - AB8500_CODEC_CR59_CLASSDHFR_SWAPEN_ENABLED -} t_ab8500_codec_cr59_classdhfr_swapen; - -/* CR60 - 7:4 */ -typedef enum { - AB8500_CODEC_CR60_CLASSD_FIRBYP_ALL_ENABLED = 0, - AB8500_CODEC_CR60_CLASSD_FIRBYP_LEFT_HF_BYPASSED = 1, - AB8500_CODEC_CR60_CLASSD_FIRBYP_RIGHT_HF_BYPASSED = 2, - AB8500_CODEC_CR60_CLASSD_FIRBYP_VIBRA1_BYPASSED = 4, - AB8500_CODEC_CR60_CLASSD_FIRBYP_VIBRA2_BYPASSED = 8 -} t_ab8500_codec_cr60_classd_firbyp; - -/* CR60 - 3:0 */ -typedef enum { - AB8500_CODEC_CR60_CLASSD_HIGHVOLEN_DISABLED = 0, - AB8500_CODEC_CR60_CLASSD_HIGHVOLEN_LEFT_HF = 1, - AB8500_CODEC_CR60_CLASSD_HIGHVOLEN_RIGHT_HF = 2, - AB8500_CODEC_CR60_CLASSD_HIGHVOLEN_VIBRA1 = 4, - AB8500_CODEC_CR60_CLASSD_HIGHVOLEN_VIBRA2 = 8 -} t_ab8500_codec_cr60_classd_highvolen; - -/* CR61 - 7:4 */ -typedef t_uint8 t_ab8500_codec_cr61_classddith_hpgain; - -/* CR61 - 3:0 */ -typedef t_uint8 t_ab8500_codec_cr61_classddith_wgain; - -/* CR62 - Read Only */ -/* CR62 - 5 */ -typedef enum { - AB8500_CODEC_CR62_DMIC1SINC3_SINC5_SELECTED, - AB8500_CODEC_CR62_DMIC1SINC3_SINC3_SELECTED -} t_ab8500_codec_cr62_dmic1sinc3; - -/* CR62 - 4 */ -typedef enum { - AB8500_CODEC_CR62_DMIC2SINC3_SINC5_SELECTED, - AB8500_CODEC_CR62_DMIC2SINC3_SINC3_SELECTED -} t_ab8500_codec_cr62_dmic2sinc3; - -/* CR62 - 3 */ -typedef enum { - AB8500_CODEC_CR62_DMIC3SINC3_SINC5_SELECTED, - AB8500_CODEC_CR62_DMIC3SINC3_SINC3_SELECTED -} t_ab8500_codec_cr62_dmic3sinc3; - -/* CR62 - 2 */ -typedef enum { - AB8500_CODEC_CR62_DMIC4SINC3_SINC5_SELECTED, - AB8500_CODEC_CR62_DMIC4SINC3_SINC3_SELECTED -} t_ab8500_codec_cr62_dmic4sinc3; - -/* CR62 - 1 */ -typedef enum { - AB8500_CODEC_CR62_DMIC5SINC3_SINC5_SELECTED, - AB8500_CODEC_CR62_DMIC5SINC3_SINC3_SELECTED -} t_ab8500_codec_cr62_dmic5sinc3; - -/* CR62 - 0 */ -typedef enum { - AB8500_CODEC_CR62_DMIC6SINC3_SINC5_SELECTED, - AB8500_CODEC_CR62_DMIC6SINC3_SINC3_SELECTED -} t_ab8500_codec_cr62_dmic6sinc3; - -/* CR63 - 7 */ -typedef enum { - AB8500_CODEC_CR63_DATOHSLEN_DISABLED, - AB8500_CODEC_CR63_DATOHSLEN_ENABLED -} t_ab8500_codec_cr63_datohslen; - -/* CR63 - 6 */ -typedef enum { - AB8500_CODEC_CR63_DATOHSREN_DISABLED, - AB8500_CODEC_CR63_DATOHSREN_ENABLED -} t_ab8500_codec_cr63_datohsren; - -/* CR63 - 5 */ -typedef enum { - AB8500_CODEC_CR63_AD1SEL_LINLADL_SELECTED, - AB8500_CODEC_CR63_AD1SEL_DMIC1_SELECTED -} t_ab8500_codec_cr63_ad1sel; - -/* CR63 - 4 */ -typedef enum { - AB8500_CODEC_CR63_AD2SEL_LINRADR_SELECTED, - AB8500_CODEC_CR63_AD2SEL_DMIC2_SELECTED -} t_ab8500_codec_cr63_ad2sel; - -/* CR63 - 3 */ -typedef enum { - AB8500_CODEC_CR63_AD3SEL_ADMO_SELECTED, - AB8500_CODEC_CR63_AD3SEL_DMIC3_SELECTED -} t_ab8500_codec_cr63_ad3sel; - -/* CR63 - 2 */ -typedef enum { - AB8500_CODEC_CR63_AD5SEL_AMADR_SELECTED, - AB8500_CODEC_CR63_AD5SEL_DMIC5_SELECTED -} t_ab8500_codec_cr63_ad5sel; - -/* CR63 - 1 */ -typedef enum { - AB8500_CODEC_CR63_AD6SEL_ADMO_SELECTED, - AB8500_CODEC_CR63_AD6SEL_DMIC6_SELECTED -} t_ab8500_codec_cr63_ad6sel; - -/* CR63 - 0 */ -typedef enum { - AB8500_CODEC_CR63_ANCSEL_NOT_MIXED_IN_EAR, - AB8500_CODEC_CR63_ANCSEL_MIXED_IN_EAR -} t_ab8500_codec_cr63_ancsel; - -/* CR64 - 7 */ -typedef enum { - AB8500_CODEC_CR64_DATOHFREN_NOT_MIXED_TO_HFR, - AB8500_CODEC_CR64_DATOHFREN_MIXED_TO_HFR -} t_ab8500_codec_cr64_datohfren; - -/* CR64 - 6 */ -typedef enum { - AB8500_CODEC_CR64_DATOHFLEN_NOT_MIXED_TO_HFL, - AB8500_CODEC_CR64_DATOHFLEN_MIXED_TO_HFL -} t_ab8500_codec_cr64_datohflen; - -/* CR64 - 5 */ -typedef enum { - AB8500_CODEC_CR64_HFRSEL_DA4_MIXED_TO_HFR, - AB8500_CODEC_CR64_HFRSEL_ANC_MIXED_TO_HFR -} t_ab8500_codec_cr64_hfrsel; - -/* CR64 - 4 */ -typedef enum { - AB8500_CODEC_CR64_HFLSEL_DA3_MIXED_TO_HFL, - AB8500_CODEC_CR64_HFLSEL_ANC_MIXED_TO_HFL -} t_ab8500_codec_cr64_hflsel; - -/* CR64 - 3:2 */ -typedef enum { - AB8500_CODEC_CR64_STFIR1SEL_AD_OUT1_SELECTED, - AB8500_CODEC_CR64_STFIR1SEL_AD_OUT3_SELECTED, - AB8500_CODEC_CR64_STFIR1SEL_DA_IN1_SELECTED -} t_ab8500_codec_cr64_stfir1sel; - -/* CR64 - 1:0 */ -typedef enum { - AB8500_CODEC_CR64_STFIR2SEL_AD_OUT2_SELECTED, - AB8500_CODEC_CR64_STFIR2SEL_AD_OUT4_SELECTED, - AB8500_CODEC_CR64_STFIR2SEL_DA_IN2_SELECTED -} t_ab8500_codec_cr64_stfir2sel; - -/* CR65 - 6 */ -typedef enum { - AB8500_CODEC_CR65_FADEDIS_AD1_ENABLED, - AB8500_CODEC_CR65_FADEDIS_AD1_DISABLED -} t_ab8500_codec_cr65_fadedis_ad1; - -/* CR65 - 5:0 */ -typedef t_uint8 t_ab8500_codec_cr65_ad1gain; - -/* CR66 - 6 */ -typedef enum { - AB8500_CODEC_CR66_FADEDIS_AD2_ENABLED, - AB8500_CODEC_CR66_FADEDIS_AD2_DISABLED -} t_ab8500_codec_cr66_fadedis_ad2; - -/* CR66 - 5:0 */ -typedef t_uint8 t_ab8500_codec_cr66_ad2gain; - -/* CR67 - 6 */ -typedef enum { - AB8500_CODEC_CR67_FADEDIS_AD3_ENABLED, - AB8500_CODEC_CR67_FADEDIS_AD3_DISABLED -} t_ab8500_codec_cr67_fadedis_ad3; - -/* CR67 - 5:0 */ -typedef t_uint8 t_ab8500_codec_cr67_ad3gain; - -/* CR68 - 6 */ -typedef enum { - AB8500_CODEC_CR68_FADEDIS_AD4_ENABLED, - AB8500_CODEC_CR68_FADEDIS_AD4_DISABLED -} t_ab8500_codec_cr68_fadedis_ad4; - -/* CR68 - 5:0 */ -typedef t_uint8 t_ab8500_codec_cr68_ad4gain; - -/* CR69 - 6 */ -typedef enum { - AB8500_CODEC_CR69_FADEDIS_AD5_ENABLED, - AB8500_CODEC_CR69_FADEDIS_AD5_DISABLED -} t_ab8500_codec_cr69_fadedis_ad5; - -/* CR69 - 5:0 */ -typedef t_uint8 t_ab8500_codec_cr69_ad5gain; - -/* CR70 - 6 */ -typedef enum { - AB8500_CODEC_CR70_FADEDIS_AD6_ENABLED, - AB8500_CODEC_CR70_FADEDIS_AD6_DISABLED -} t_ab8500_codec_cr70_fadedis_ad6; - -/* CR70 - 5:0 */ -typedef t_uint8 t_ab8500_codec_cr70_ad6gain; - -/* CR71 - 6 */ -typedef enum { - AB8500_CODEC_CR71_FADEDIS_DA1_ENABLED, - AB8500_CODEC_CR71_FADEDIS_DA1_DISABLED -} t_ab8500_codec_cr71_fadedis_da1; - -/* CR71 - 5:0 */ -typedef t_uint8 t_ab8500_codec_cr71_da1gain; - -/* CR72 - 6 */ -typedef enum { - AB8500_CODEC_CR72_FADEDIS_DA2_ENABLED, - AB8500_CODEC_CR72_FADEDIS_DA2_DISABLED -} t_ab8500_codec_cr72_fadedis_da2; - -/* CR72 - 5:0 */ -typedef t_uint8 t_ab8500_codec_cr72_da2gain; - -/* CR73 - 6 */ -typedef enum { - AB8500_CODEC_CR73_FADEDIS_DA3_ENABLED, - AB8500_CODEC_CR73_FADEDIS_DA3_DISABLED -} t_ab8500_codec_cr73_fadedis_da3; - -/* CR73 - 5:0 */ -typedef t_uint8 t_ab8500_codec_cr73_da3gain; - -/* CR74 - 6 */ -typedef enum { - AB8500_CODEC_CR74_FADEDIS_DA4_ENABLED, - AB8500_CODEC_CR74_FADEDIS_DA4_DISABLED -} t_ab8500_codec_cr74_fadedis_da4; - -/* CR74 - 5:0 */ -typedef t_uint8 t_ab8500_codec_cr74_da4gain; - -/* CR75 - 6 */ -typedef enum { - AB8500_CODEC_CR75_FADEDIS_DA5_ENABLED, - AB8500_CODEC_CR75_FADEDIS_DA5_DISABLED -} t_ab8500_codec_cr75_fadedis_da5; - -/* CR75 - 5:0 */ -typedef t_uint8 t_ab8500_codec_cr75_da5gain; - -/* CR76 - 6 */ -typedef enum { - AB8500_CODEC_CR76_FADEDIS_DA6_ENABLED, - AB8500_CODEC_CR76_FADEDIS_DA6_DISABLED -} t_ab8500_codec_cr76_fadedis_da6; - -/* CR76 - 5:0 */ -typedef t_uint8 t_ab8500_codec_cr76_da6gain; - -/* CR77 - 6 */ -typedef enum { - AB8500_CODEC_CR77_FADEDIS_AD1L_TO_HFL_ENABLED, - AB8500_CODEC_CR77_FADEDIS_AD1L_TO_HFL_DISABLED -} t_ab8500_codec_cr77_fadedis_ad1l; - -/* CR77 - 5:0 */ -typedef t_uint8 t_ab8500_codec_cr77_ad1lbgain_to_hfl; - -/* CR78 - 6 */ -typedef enum { - AB8500_CODEC_CR78_FADEDIS_AD2L_TO_HFR_ENABLED, - AB8500_CODEC_CR78_FADEDIS_AD2L_TO_HFR_DISABLED -} t_ab8500_codec_cr78_fadedis_ad2l; - -/* CR78 - 5:0 */ -typedef t_uint8 t_ab8500_codec_cr78_ad2lbgain_to_hfr; - -/* CR79 - 7 */ -typedef enum { - AB8500_CODEC_CR79_HSSINC1_SINC3_CHOOSEN, - AB8500_CODEC_CR79_HSSINC1_SINC1_CHOOSEN -} t_ab8500_codec_cr79_hssinc1; - -/* CR79 - 4 */ -typedef enum { - AB8500_CODEC_CR79_FADEDIS_HSL_ENABLED, - AB8500_CODEC_CR79_FADEDIS_HSL_DISABLED -} t_ab8500_codec_cr79_fadedis_hsl; - -/* CR79 - 3:0 */ -typedef t_uint8 t_ab8500_codec_cr79_hsldgain; - -/* CR80 - 7:6 */ -typedef enum { - AB8500_CODEC_CR80_FADE_SPEED_1MS, - AB8500_CODEC_CR80_FADE_SPEED_4MS, - AB8500_CODEC_CR80_FADE_SPEED_8MS, - AB8500_CODEC_CR80_FADE_SPEED_16MS, -} t_ab8500_codec_cr80_fade_speed; - -/* CR80 - 4 */ -typedef enum { - AB8500_CODEC_CR80_FADEDIS_HSR_ENABLED, - AB8500_CODEC_CR80_FADEDIS_HSR_DISABLED -} t_ab8500_codec_cr80_fadedis_hsr; - -/* CR80 - 3:0 */ -typedef t_uint8 t_ab8500_codec_cr80_hsrdgain; - -/* CR81 - 4:0 */ -typedef t_uint8 t_ab8500_codec_cr81_stfir1gain; - -/* CR82 - 4:0 */ -typedef t_uint8 t_ab8500_codec_cr82_stfir2gain; - -/* CR83 - 2 */ -typedef enum { - AB8500_CODEC_CR83_ENANC_DISABLED, - AB8500_CODEC_CR83_ENANC_ENABLED -} t_ab8500_codec_cr83_enanc; - -/* CR83 - 1 */ -typedef enum { - AB8500_CODEC_CR83_ANCIIRINIT_NOT_STARTED, - AB8500_CODEC_CR83_ANCIIRINIT_STARTED -} t_ab8500_codec_cr83_anciirinit; - -/* CR83 - 0 */ -typedef enum { - AB8500_CODEC_CR83_ANCFIRUPDATE_RESETTED, - AB8500_CODEC_CR83_ANCFIRUPDATE_NOT_RESETTED -} t_ab8500_codec_cr83_ancfirupdate; - -/* CR84 - 4:0 */ -typedef t_uint8 t_ab8500_codec_cr84_ancinshift; - -/* CR85 - 4:0 */ -typedef t_uint8 t_ab8500_codec_cr85_ancfiroutshift; - -/* CR86 - 4:0 */ -typedef t_uint8 t_ab8500_codec_cr86_ancshiftout; - -/* CR87 - 7:0 */ -typedef t_uint8 t_ab8500_codec_cr87_ancfircoeff_msb; - -/* CR88 - 7:0 */ -typedef t_uint8 t_ab8500_codec_cr88_ancfircoeff_lsb; - -/* CR89 - 7:0 */ -typedef t_uint8 t_ab8500_codec_cr89_anciircoeff_msb; - -/* CR90 - 7:0 */ -typedef t_uint8 t_ab8500_codec_cr90_anciircoeff_lsb; - -/* CR91 - 7:0 */ -typedef t_uint8 t_ab8500_codec_cr91_ancwarpdel_msb; - -/* CR92 - 7:0 */ -typedef t_uint8 t_ab8500_codec_cr92_ancwarpdel_lsb; - -/* CR93 - Read Only */ -/* CR93 - 7:0 */ -typedef t_uint8 t_ab8500_codec_cr93_ancfirpeak_msb; - -/* CR94 - Read Only */ -/* CR94 - 7:0 */ -typedef t_uint8 t_ab8500_codec_cr94_ancfirpeak_lsb; - -/* CR95 - Read Only */ -/* CR95 - 7:0 */ -typedef t_uint8 t_ab8500_codec_cr95_anciirpeak_msb; - -/* CR96 - Read Only */ -/* CR96 - 7:0 */ -typedef t_uint8 t_ab8500_codec_cr96_anciirpeak_lsb; - -/* CR97 - 7 */ -typedef enum { - AB8500_CODEC_CR97_STFIR_SET_LAST_NOT_APPLIED, - AB8500_CODEC_CR97_STFIR_SET_LAST_APPLIED -} t_ab8500_codec_cr97_stfir_set; - -/* CR97 - 6:0 */ -typedef t_uint8 t_ab8500_codec_cr97_stfir_addr; - -/* CR98 - 7:0 */ -typedef t_uint8 t_ab8500_codec_cr98_stfir_coeff_msb; - -/* CR99 - 7:0 */ -typedef t_uint8 t_ab8500_codec_cr99_stfir_coeff_lsb; - -/* CR100 - 2 */ -typedef enum { - AB8500_CODEC_CR100_ENSTFIRS_DISABLED, - AB8500_CODEC_CR100_ENSTFIRS_ENABLED -} t_ab8500_codec_cr100_enstfirs; - -/* CR100 - 1 */ -typedef enum { - AB8500_CODEC_CR100_STFIRSTOIF1_AUD_IF0_DATA_RATE, - AB8500_CODEC_CR100_STFIRSTOIF1_AUD_IF1_DATA_RATE -} t_ab8500_codec_cr100_stfirstoif1; - -/* CR100 - 0 */ -typedef enum { - AB8500_CODEC_CR100_STFIR_BUSY_READY, - AB8500_CODEC_CR100_STFIR_BUSY_NOT_READY -} t_ab8500_codec_cr100_stfir_busy; - -/* CR101 - 7 */ -typedef enum { - AB8500_CODEC_CR101_HSOFFST_MASK_MASKED, - AB8500_CODEC_CR101_HSOFFST_MASK_ENABLED -} t_ab8500_codec_cr101_hsoffst_mask; - -/* CR101 - 6 */ -typedef enum { - AB8500_CODEC_CR101_FIFOFULL_MASK_MASKED, - AB8500_CODEC_CR101_FIFOFULL_MASK_ENABLED -} t_ab8500_codec_cr101_fifofull_mask; - -/* CR101 - 5 */ -typedef enum { - AB8500_CODEC_CR101_FIFOEMPTY_MASK_MASKED, - AB8500_CODEC_CR101_FIFOEMPTY_MASK_ENABLED -} t_ab8500_codec_cr101_fifoempty_mask; - -/* CR101 - 4 */ -typedef enum { - AB8500_CODEC_CR101_DASAT_MASK_MASKED, - AB8500_CODEC_CR101_DASAT_MASK_ENABLED -} t_ab8500_codec_cr101_dasat_mask; - -/* CR101 - 3 */ -typedef enum { - AB8500_CODEC_CR101_ADSAT_MASK_MASKED, - AB8500_CODEC_CR101_ADSAT_MASK_ENABLED -} t_ab8500_codec_cr101_adsat_mask; - -/* CR101 - 2 */ -typedef enum { - AB8500_CODEC_CR101_ADDSP_MASK_MASKED, - AB8500_CODEC_CR101_ADDSP_MASK_ENABLED -} t_ab8500_codec_cr101_addsp_mask; - -/* CR101 - 1 */ -typedef enum { - AB8500_CODEC_CR101_DADSP_MASK_MASKED, - AB8500_CODEC_CR101_DADSP_MASK_ENABLED -} t_ab8500_codec_cr101_dadsp_mask; - -/* CR101 - 0 */ -typedef enum { - AB8500_CODEC_CR101_FIRSID_MASK_MASKED, - AB8500_CODEC_CR101_FIRSID_MASK_ENABLED -} t_ab8500_codec_cr101_firsid_mask; - -/* CR102 - Read Only */ -/* CR102 - 7 */ -typedef enum { - AB8500_CODEC_CR102_IT_HSOFFST_ON, - AB8500_CODEC_CR102_IT_HSOFFST_OFF -} t_ab8500_codec_cr102_it_hsoffst; - -/* CR102 - 6 */ -typedef enum { - AB8500_CODEC_CR102_IT_FIFOFULL_NOT_FULL, - AB8500_CODEC_CR102_IT_FIFOFULL_FULL -} t_ab8500_codec_cr102_it_fifofull; - -/* CR102 - 5 */ -typedef enum { - AB8500_CODEC_CR102_IT_FIFOEMPTY_NOT_EMPTY, - AB8500_CODEC_CR102_IT_FIFOEMPTY_EMPTY -} t_ab8500_codec_cr102_it_fifoempty; - -/* CR102 - 4 */ -typedef enum { - AB8500_CODEC_CR102_IT_DASAT_NO_SATURATION, - AB8500_CODEC_CR102_IT_DASAT_SATURATION -} t_ab8500_codec_cr102_it_dasat; - -/* CR102 - 3 */ -typedef enum { - AB8500_CODEC_CR102_IT_ADSAT_NO_SATURATION, - AB8500_CODEC_CR102_IT_ADSAT_SATURATION -} t_ab8500_codec_cr102_it_adsat; - -/* CR102 - 2 */ -typedef enum { - AB8500_CODEC_CR102_IT_ADDSP_NO_SATURATION, - AB8500_CODEC_CR102_IT_ADDSP_SATURATION -} t_ab8500_codec_cr102_it_addsp; - -/* CR102 - 1 */ -typedef enum { - AB8500_CODEC_CR102_IT_DADSP_NO_SATURATION, - AB8500_CODEC_CR102_IT_DADSP_SATURATION -} t_ab8500_codec_cr102_it_dadsp; - -/* CR102 - 0 */ -typedef enum { - AB8500_CODEC_CR102_IT_FIRSID_NO_SATURATION, - AB8500_CODEC_CR102_IT_FIRSID_SATURATION -} t_ab8500_codec_cr102_it_firsid; - -/* CR103 - 7 */ -typedef enum { - AB8500_CODEC_CR103_VSSREADY_MASK_MASKED, - AB8500_CODEC_CR103_VSSREADY_MASK_ENABLED -} t_ab8500_codec_cr103_vssready_mask; - -/* CR103 - 2 */ -typedef enum { - AB8500_CODEC_CR103_SHORTHSL_MASK_MASKED, - AB8500_CODEC_CR103_SHORTHSL_MASK_ENABLED -} t_ab8500_codec_cr103_shorthsl_mask; - -/* CR103 - 1 */ -typedef enum { - AB8500_CODEC_CR103_SHORTHSR_MASK_MASKED, - AB8500_CODEC_CR103_SHORTHSR_MASK_ENABLED -} t_ab8500_codec_cr103_shorthsr_mask; - -/* CR103 - 0 */ -typedef enum { - AB8500_CODEC_CR103_SHORTEAR_MASK_MASKED, - AB8500_CODEC_CR103_SHORTEAR_MASK_ENABLED -} t_ab8500_codec_cr103_shortear_mask; - -/* CR104 - Read Only */ -/* CR104 - 7 */ -typedef enum { - AB8500_CODEC_CR104_IT_VSSREADY_NOT_READY, - AB8500_CODEC_CR104_IT_VSSREADY_READY -} t_ab8500_codec_cr104_it_vssready; - -/* CR104 - 2 */ -typedef enum { - AB8500_CODEC_CR104_IT_SHORTHSL_NOT_DETECTED, - AB8500_CODEC_CR104_IT_SHORTHSL_DETECTED -} t_ab8500_codec_cr104_it_shorthsl; - -/* CR104 - 1 */ -typedef enum { - AB8500_CODEC_CR104_IT_SHORTHSR_NOT_DETECTED, - AB8500_CODEC_CR104_IT_SHORTHSR_DETECTED -} t_ab8500_codec_cr104_it_shorthsr; - -/* CR104 - 0 */ -typedef enum { - AB8500_CODEC_CR104_IT_SHORTEAR_NOT_DETECTED, - AB8500_CODEC_CR104_IT_SHORTEAR_DETECTED -} t_ab8500_codec_cr104_it_shortear; - -/* CR105 - 7 */ -/* In ab8500_codec.h */ - -/* CR105 - 5:0 */ -/* In ab8500_codec.h */ - -/* CR106 - 7:0 */ -/* In ab8500_codec.h */ - -/* CR107 - 7:0 */ -/* In ab8500_codec.h */ - -/* CR108 - 7:0 */ -/* In ab8500_codec.h */ - -/* CR109 - 7:0 */ -/* In ab8500_codec.h */ - -/* CR110 - Read Only */ -/* CR110 - 7:0 */ -typedef t_uint8 t_ab8500_codec_cr110_bfifosamples; - -/* CR111 - Read Only */ -/* CR111 - 4:0 */ -typedef t_uint8 t_ab8500_codec_cr111_aud_ip_rev; - -/* CR27 - 6:5 */ -typedef enum { - AB8500_CODEC_CR27_IF1_BITCLK_OSR_32, - AB8500_CODEC_CR27_IF1_BITCLK_OSR_64, - AB8500_CODEC_CR27_IF1_BITCLK_OSR_128, - AB8500_CODEC_CR27_IF1_BITCLK_OSR_256 -} t_ab8500_codec_cr27_if1_bitclk_osr; - -/* CR27 - 2:1 */ -typedef enum { - AB8500_CODEC_CR27_IF0_BITCLK_OSR_32, - AB8500_CODEC_CR27_IF0_BITCLK_OSR_64, - AB8500_CODEC_CR27_IF0_BITCLK_OSR_128, - AB8500_CODEC_CR27_IF0_BITCLK_OSR_256 -} t_ab8500_codec_cr27_if0_bitclk_osr; - -/* CR28 - 1:0 */ -typedef enum { - AB8500_CODEC_CR28_IF0WL_16BITS, - AB8500_CODEC_CR28_IF0WL_20BITS, - AB8500_CODEC_CR28_IF0WL_24BITS, - AB8500_CODEC_CR28_IF0WL_32BITS -} t_ab8500_codec_cr28_if0wl; - -/* CR30 - 1:0 */ -typedef enum { - AB8500_CODEC_CR30_IF1WL_16BITS, - AB8500_CODEC_CR30_IF1WL_20BITS, - AB8500_CODEC_CR30_IF1WL_24BITS, - AB8500_CODEC_CR30_IF1WL_32BITS -} t_ab8500_codec_cr30_if1wl; - -/* CR105 - 7 */ -typedef enum { - AB8500_CODEC_CR105_BFIFOMSK_AD_DATA0_UNMASKED, - AB8500_CODEC_CR105_BFIFOMSK_AD_DATA0_MASKED -} t_ab8500_codec_cr105_bfifomsk; - -/* CR105 - 5:0 */ -typedef t_uint8 t_ab8500_codec_cr105_bfifoint; - -/* CR106 - 7:0 */ -typedef t_uint8 t_ab8500_codec_cr106_bfifotx; - -/* CR107 - 7:5 */ -typedef enum { - AB8500_CODEC_CR107_BFIFOEXSL_0_EXTRA_SLOT, - AB8500_CODEC_CR107_BFIFOEXSL_1_EXTRA_SLOT, - AB8500_CODEC_CR107_BFIFOEXSL_2_EXTRA_SLOT, - AB8500_CODEC_CR107_BFIFOEXSL_3_EXTRA_SLOT, - AB8500_CODEC_CR107_BFIFOEXSL_4_EXTRA_SLOT, - AB8500_CODEC_CR107_BFIFOEXSL_5_EXTRA_SLOT, - AB8500_CODEC_CR107_BFIFOEXSL_6_EXTRA_SLOT, -} t_ab8500_codec_cr107_bfifoexsl; - -/* CR107 - 4:2 */ -typedef enum { - AB8500_CODEC_CR107_PREBITCLK0_0_EXTRA_CLK, - AB8500_CODEC_CR107_PREBITCLK0_1_EXTRA_CLK, - AB8500_CODEC_CR107_PREBITCLK0_2_EXTRA_CLK, - AB8500_CODEC_CR107_PREBITCLK0_3_EXTRA_CLK, - AB8500_CODEC_CR107_PREBITCLK0_4_EXTRA_CLK, - AB8500_CODEC_CR107_PREBITCLK0_5_EXTRA_CLK, - AB8500_CODEC_CR107_PREBITCLK0_6_EXTRA_CLK, - AB8500_CODEC_CR107_PREBITCLK0_7_EXTRA_CLK -} t_ab8500_codec_cr107_prebitclk0; - -/* CR107 - 1 */ -typedef enum { - AB8500_CODEC_CR107_BFIFOMAST_SLAVE_MODE, - AB8500_CODEC_CR107_BFIFOMAST_MASTER_MODE -} t_ab8500_codec_cr107_bfifomast; - -/* CR107 - 0 */ -typedef enum { - AB8500_CODEC_CR107_BFIFORUN_STOPPED, - AB8500_CODEC_CR107_BFIFORUN_RUNNING -} t_ab8500_codec_cr107_bfiforun; - -/* CR108 - 7:0 */ -typedef t_uint8 t_ab8500_codec_cr108_bfifoframsw; - -/* CR109 - 7:0 */ -typedef t_uint8 t_ab8500_codec_cr109_bfifowakeup; - -typedef enum { - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_OUT1, - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_OUT2, - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_OUT3, - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_OUT4, - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_OUT5, - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_OUT6, - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_OUT7, - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_OUT8, - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_ZEROS, - AB8500_CODEC_CR31_TO_CR46_SLOT_IS_TRISTATE = 15, - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_UNDEFINED -} t_ab8500_codec_cr31_to_cr46_ad_data_allocation; - -typedef enum { - AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT00, - AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT01, - AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT02, - AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT03, - AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT04, - AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT05, - AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT06, - AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT07, - AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT08, - AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT09, - AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT10, - AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT11, - AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT12, - AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT13, - AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT14, - AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT15, - AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT16, - AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT17, - AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT18, - AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT19, - AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT20, - AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT21, - AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT22, - AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT23, - AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT24, - AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT25, - AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT26, - AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT27, - AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT28, - AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT29, - AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT30, - AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT31, - AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT_UNDEFINED -} t_ab8500_codec_cr51_to_cr58_sltoda; - -/*configuration structure for AB8500 Codec*/ -typedef struct { - /* CR0 */ - t_ab8500_codec_cr0_powerup cr0_powerup; - t_ab8500_codec_cr0_enaana cr0_enaana; - - /* CR1 */ - t_ab8500_codec_cr1_swreset cr1_swreset; - - /* CR2 */ - t_ab8500_codec_cr2_enad1 cr2_enad1; - t_ab8500_codec_cr2_enad2 cr2_enad2; - t_ab8500_codec_cr2_enad3 cr2_enad3; - t_ab8500_codec_cr2_enad4 cr2_enad4; - t_ab8500_codec_cr2_enad5 cr2_enad5; - t_ab8500_codec_cr2_enad6 cr2_enad6; - - /* CR3 */ - t_ab8500_codec_cr3_enda1 cr3_enda1; - t_ab8500_codec_cr3_enda2 cr3_enda2; - t_ab8500_codec_cr3_enda3 cr3_enda3; - t_ab8500_codec_cr3_enda4 cr3_enda4; - t_ab8500_codec_cr3_enda5 cr3_enda5; - t_ab8500_codec_cr3_enda6 cr3_enda6; - - /* CR4 */ - t_ab8500_codec_cr4_lowpowhs cr4_lowpowhs; - t_ab8500_codec_cr4_lowpowdachs cr4_lowpowdachs; - t_ab8500_codec_cr4_lowpowear cr4_lowpowear; - t_ab8500_codec_cr4_ear_sel_cm cr4_ear_sel_cm; - t_ab8500_codec_cr4_hs_hp_en cr4_hs_hp_en; - - /* CR5 */ - t_ab8500_codec_cr5_enmic1 cr5_enmic1; - t_ab8500_codec_cr5_enmic2 cr5_enmic2; - t_ab8500_codec_cr5_enlinl cr5_enlinl; - t_ab8500_codec_cr5_enlinr cr5_enlinr; - t_ab8500_codec_cr5_mutmic1 cr5_mutmic1; - t_ab8500_codec_cr5_mutmic2 cr5_mutmic2; - t_ab8500_codec_cr5_mutlinl cr5_mutlinl; - t_ab8500_codec_cr5_mutlinr cr5_mutlinr; - - /* CR6 */ - t_ab8500_codec_cr6_endmic1 cr6_endmic1; - t_ab8500_codec_cr6_endmic2 cr6_endmic2; - t_ab8500_codec_cr6_endmic3 cr6_endmic3; - t_ab8500_codec_cr6_endmic4 cr6_endmic4; - t_ab8500_codec_cr6_endmic5 cr6_endmic5; - t_ab8500_codec_cr6_endmic6 cr6_endmic6; - - /* CR7 */ - t_ab8500_codec_cr7_mic1sel cr7_mic1sel; - t_ab8500_codec_cr7_linrsel cr7_linrsel; - t_ab8500_codec_cr7_endrvhsl cr7_endrvhsl; - t_ab8500_codec_cr7_endrvhsr cr7_endrvhsr; - t_ab8500_codec_cr7_enadcmic cr7_enadcmic; - t_ab8500_codec_cr7_enadclinl cr7_enadclinl; - t_ab8500_codec_cr7_enadclinr cr7_enadclinr; - - /* CR8 */ - t_ab8500_codec_cr8_cp_dis_pldwn cr8_cp_dis_pldwn; - t_ab8500_codec_cr8_enear cr8_enear; - t_ab8500_codec_cr8_enhsl cr8_enhsl; - t_ab8500_codec_cr8_enhsr cr8_enhsr; - t_ab8500_codec_cr8_enhfl cr8_enhfl; - t_ab8500_codec_cr8_enhfr cr8_enhfr; - t_ab8500_codec_cr8_envibl cr8_envibl; - t_ab8500_codec_cr8_envibr cr8_envibr; - - /* CR9 */ - t_ab8500_codec_cr9_endacear cr9_endacear; - t_ab8500_codec_cr9_endachsl cr9_endachsl; - t_ab8500_codec_cr9_endachsr cr9_endachsr; - t_ab8500_codec_cr9_endachfl cr9_endachfl; - t_ab8500_codec_cr9_endachfr cr9_endachfr; - t_ab8500_codec_cr9_endacvibl cr9_endacvibl; - t_ab8500_codec_cr9_endacvibr cr9_endacvibr; - - /* CR10 */ - t_ab8500_codec_cr10_muteear cr10_muteear; - t_ab8500_codec_cr10_mutehsl cr10_mutehsl; - t_ab8500_codec_cr10_mutehsr cr10_mutehsr; - - /* CR11 */ - t_ab8500_codec_cr11_enshortpwd cr11_enshortpwd; - t_ab8500_codec_cr11_earshortdis cr11_earshortdis; - t_ab8500_codec_cr11_hsshortdis cr11_hsshortdis; - t_ab8500_codec_cr11_hspullden cr11_hspullden; - t_ab8500_codec_cr11_hsoscen cr11_hsoscen; - t_ab8500_codec_cr11_hsfaden cr11_hsfaden; - t_ab8500_codec_cr11_hszcddis cr11_hszcddis; - - /* CR12 */ - t_ab8500_codec_cr12_encphs cr12_encphs; - t_ab8500_codec_cr12_hsautoen cr12_hsautoen; - - /* CR13 */ - t_ab8500_codec_cr13_envdet_hthresh cr13_envdet_hthresh; - t_ab8500_codec_cr13_envdet_lthresh cr13_envdet_lthresh; - - /* CR14 */ - t_ab8500_codec_cr14_smpslven cr14_smpslven; - t_ab8500_codec_cr14_envdetsmpsen cr14_envdetsmpsen; - t_ab8500_codec_cr14_cplven cr14_cplven; - t_ab8500_codec_cr14_envdetcpen cr14_envdetcpen; - t_ab8500_codec_cr14_envet_time cr14_envet_time; - - /* CR15 */ - t_ab8500_codec_cr15_pwmtovibl cr15_pwmtovibl; - t_ab8500_codec_cr15_pwmtovibr cr15_pwmtovibr; - t_ab8500_codec_cr15_pwmlctrl cr15_pwmlctrl; - t_ab8500_codec_cr15_pwmrctrl cr15_pwmrctrl; - t_ab8500_codec_cr15_pwmnlctrl cr15_pwmnlctrl; - t_ab8500_codec_cr15_pwmplctrl cr15_pwmplctrl; - t_ab8500_codec_cr15_pwmnrctrl cr15_pwmnrctrl; - t_ab8500_codec_cr15_pwmprctrl cr15_pwmprctrl; - - /* CR16 */ - t_ab8500_codec_cr16_pwmnlpol cr16_pwmnlpol; - t_ab8500_codec_cr16_pwmnldutycycle cr16_pwmnldutycycle; - - /* CR17 */ - t_ab8500_codec_cr17_pwmplpol cr17_pwmplpol; - t_ab8500_codec_cr17_pwmpldutycycle cr17_pwmpldutycycle; - - /* CR18 */ - t_ab8500_codec_cr18_pwmnrpol cr18_pwmnrpol; - t_ab8500_codec_cr18_pwmnrdutycycle cr18_pwmnrdutycycle; - - /* CR19 */ - t_ab8500_codec_cr19_pwmprpol cr19_pwmprpol; - t_ab8500_codec_cr19_pwmprdutycycle cr19_pwmprdutycycle; - - /* CR20 */ - t_ab8500_codec_cr20_en_se_mic1 cr20_en_se_mic1; - t_ab8500_codec_cr20_low_pow_mic1 cr20_low_pow_mic1; - t_ab8500_codec_cr20_mic1_gain cr20_mic1_gain; - - /* CR21 */ - t_ab8500_codec_cr21_en_se_mic2 cr21_en_se_mic2; - t_ab8500_codec_cr21_low_pow_mic2 cr21_low_pow_mic2; - t_ab8500_codec_cr21_mic2_gain cr21_mic2_gain; - - /* CR22 */ - t_ab8500_codec_cr22_hsl_gain cr22_hsl_gain; - t_ab8500_codec_cr22_hsr_gain cr22_hsr_gain; - - /* CR23 */ - t_ab8500_codec_cr23_linl_gain cr23_linl_gain; - t_ab8500_codec_cr23_linr_gain cr23_linr_gain; - - /* CR24 */ - t_ab8500_codec_cr24_lintohsl_gain cr24_lintohsl_gain; - - /* CR25 */ - t_ab8500_codec_cr25_lintohsr_gain cr25_lintohsr_gain; - - /* CR26 */ - t_ab8500_codec_cr26_ad1nh cr26_ad1nh; - t_ab8500_codec_cr26_ad2nh cr26_ad2nh; - t_ab8500_codec_cr26_ad3nh cr26_ad3nh; - t_ab8500_codec_cr26_ad4nh cr26_ad4nh; - t_ab8500_codec_cr26_ad1_voice cr26_ad1_voice; - t_ab8500_codec_cr26_ad2_voice cr26_ad2_voice; - t_ab8500_codec_cr26_ad3_voice cr26_ad3_voice; - t_ab8500_codec_cr26_ad4_voice cr26_ad4_voice; - - /* CR27 */ - t_ab8500_codec_cr27_en_mastgen cr27_en_mastgen; - t_ab8500_codec_cr27_if1_bitclk_osr cr27_if1_bitclk_osr; - t_ab8500_codec_cr27_enfs_bitclk1 cr27_enfs_bitclk1; - t_ab8500_codec_cr27_if0_bitclk_osr cr27_if0_bitclk_osr; - t_ab8500_codec_cr27_enfs_bitclk0 cr27_enfs_bitclk0; - - /* CR28 */ - t_ab8500_codec_cr28_fsync0p cr28_fsync0p; - t_ab8500_codec_cr28_bitclk0p cr28_bitclk0p; - t_ab8500_codec_cr28_if0del cr28_if0del; - t_ab8500_codec_cr28_if0format cr28_if0format; - t_ab8500_codec_cr28_if0wl cr28_if0wl; - - /* CR29 */ - t_ab8500_codec_cr29_if0datoif1ad cr29_if0datoif1ad; - t_ab8500_codec_cr29_if0cktoif1ck cr29_if0cktoif1ck; - t_ab8500_codec_cr29_if1master cr29_if1master; - t_ab8500_codec_cr29_if1datoif0ad cr29_if1datoif0ad; - t_ab8500_codec_cr29_if1cktoif0ck cr29_if1cktoif0ck; - t_ab8500_codec_cr29_if0master cr29_if0master; - t_ab8500_codec_cr29_if0bfifoen cr29_if0bfifoen; - - /* CR30 */ - t_ab8500_codec_cr30_fsync1p cr30_fsync1p; - t_ab8500_codec_cr30_bitclk1p cr30_bitclk1p; - t_ab8500_codec_cr30_if1del cr30_if1del; - t_ab8500_codec_cr30_if1format cr30_if1format; - t_ab8500_codec_cr30_if1wl cr30_if1wl; - - /* CR31 */ - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr31_adotoslot1; - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr31_adotoslot0; - - /* CR32 */ - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr32_adotoslot3; - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr32_adotoslot2; - - /* CR33 */ - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr33_adotoslot5; - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr33_adotoslot4; - - /* CR34 */ - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr34_adotoslot7; - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr34_adotoslot6; - - /* CR35 */ - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr35_adotoslot9; - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr35_adotoslot8; - - /* CR36 */ - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr36_adotoslot11; - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr36_adotoslot10; - - /* CR37 */ - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr37_adotoslot13; - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr37_adotoslot12; - - /* CR38 */ - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr38_adotoslot15; - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr38_adotoslot14; - - /* CR39 */ - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr39_adotoslot17; - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr39_adotoslot16; - - /* CR40 */ - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr40_adotoslot19; - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr40_adotoslot18; - - /* CR41 */ - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr41_adotoslot21; - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr41_adotoslot20; - - /* CR42 */ - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr42_adotoslot23; - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr42_adotoslot22; - - /* CR43 */ - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr43_adotoslot25; - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr43_adotoslot24; - - /* CR44 */ - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr44_adotoslot27; - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr44_adotoslot26; - - /* CR45 */ - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr45_adotoslot29; - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr45_adotoslot28; - - /* CR46 */ - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr46_adotoslot31; - t_ab8500_codec_cr31_to_cr46_ad_data_allocation cr46_adotoslot30; - - /* CR47 */ - t_ab8500_codec_cr47_to_cr50_hiz_sl cr47_hiz_sl7; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr47_hiz_sl6; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr47_hiz_sl5; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr47_hiz_sl4; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr47_hiz_sl3; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr47_hiz_sl2; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr47_hiz_sl1; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr47_hiz_sl0; - - /* CR48 */ - t_ab8500_codec_cr47_to_cr50_hiz_sl cr48_hiz_sl15; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr48_hiz_sl14; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr48_hiz_sl13; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr48_hiz_sl12; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr48_hiz_sl11; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr48_hiz_sl10; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr48_hiz_sl9; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr48_hiz_sl8; - - /* CR49 */ - t_ab8500_codec_cr47_to_cr50_hiz_sl cr49_hiz_sl23; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr49_hiz_sl22; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr49_hiz_sl21; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr49_hiz_sl20; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr49_hiz_sl19; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr49_hiz_sl18; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr49_hiz_sl17; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr49_hiz_sl16; - - /* CR50 */ - t_ab8500_codec_cr47_to_cr50_hiz_sl cr50_hiz_sl31; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr50_hiz_sl30; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr50_hiz_sl29; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr50_hiz_sl28; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr50_hiz_sl27; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr50_hiz_sl26; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr50_hiz_sl25; - t_ab8500_codec_cr47_to_cr50_hiz_sl cr50_hiz_sl24; - - /* CR51 */ - t_ab8500_codec_cr51_da12_voice cr51_da12_voice; - t_ab8500_codec_cr51_swapda12_34 cr51_swapda12_34; - t_ab8500_codec_cr51_sldai7toslado1 cr51_sldai7toslado1; - t_ab8500_codec_cr51_to_cr58_sltoda cr51_sltoda1; - - /* CR52 */ - t_ab8500_codec_cr52_sldai8toslado2 cr52_sldai8toslado2; - t_ab8500_codec_cr51_to_cr58_sltoda cr52_sltoda2; - - /* CR53 */ - t_ab8500_codec_cr53_da34_voice cr53_da34_voice; - t_ab8500_codec_cr53_sldai7toslado3 cr53_sldai7toslado3; - t_ab8500_codec_cr51_to_cr58_sltoda cr53_sltoda3; - - /* CR54 */ - t_ab8500_codec_cr54_sldai8toslado4 cr54_sldai8toslado4; - t_ab8500_codec_cr51_to_cr58_sltoda cr54_sltoda4; - - /* CR55 */ - t_ab8500_codec_cr55_da56_voice cr55_da56_voice; - t_ab8500_codec_cr55_sldai7toslado5 cr55_sldai7toslado5; - t_ab8500_codec_cr51_to_cr58_sltoda cr55_sltoda5; - - /* CR56 */ - t_ab8500_codec_cr56_sldai8toslado6 cr56_sldai8toslado6; - t_ab8500_codec_cr51_to_cr58_sltoda cr56_sltoda6; - - /* CR57 */ - t_ab8500_codec_cr57_sldai8toslado7 cr57_sldai8toslado7; - t_ab8500_codec_cr51_to_cr58_sltoda cr57_sltoda7; - - /* CR58 */ - t_ab8500_codec_cr58_sldai7toslado8 cr58_sldai7toslado8; - t_ab8500_codec_cr51_to_cr58_sltoda cr58_sltoda8; - - /* CR59 */ - t_ab8500_codec_cr59_parlhf cr59_parlhf; - t_ab8500_codec_cr59_parlvib cr59_parlvib; - t_ab8500_codec_cr59_classdvib1_swapen cr59_classdvib1_swapen; - t_ab8500_codec_cr59_classdvib2_swapen cr59_classdvib2_swapen; - t_ab8500_codec_cr59_classdhfl_swapen cr59_classdhfl_swapen; - t_ab8500_codec_cr59_classdhfr_swapen cr59_classdhfr_swapen; - - /* CR60 */ - t_ab8500_codec_cr60_classd_firbyp cr60_classd_firbyp; - t_ab8500_codec_cr60_classd_highvolen cr60_classd_highvolen; - - /* CR61 */ - t_ab8500_codec_cr61_classddith_hpgain cr61_classddith_hpgain; - t_ab8500_codec_cr61_classddith_wgain cr61_classddith_wgain; - - /* CR62 */ - t_ab8500_codec_cr62_dmic1sinc3 cr62_dmic1sinc3; - t_ab8500_codec_cr62_dmic2sinc3 cr62_dmic2sinc3; - t_ab8500_codec_cr62_dmic3sinc3 cr62_dmic3sinc3; - t_ab8500_codec_cr62_dmic4sinc3 cr62_dmic4sinc3; - t_ab8500_codec_cr62_dmic5sinc3 cr62_dmic5sinc3; - t_ab8500_codec_cr62_dmic6sinc3 cr62_dmic6sinc3; - - /* CR63 */ - t_ab8500_codec_cr63_datohslen cr63_datohslen; - t_ab8500_codec_cr63_datohsren cr63_datohsren; - t_ab8500_codec_cr63_ad1sel cr63_ad1sel; - t_ab8500_codec_cr63_ad2sel cr63_ad2sel; - t_ab8500_codec_cr63_ad3sel cr63_ad3sel; - t_ab8500_codec_cr63_ad5sel cr63_ad5sel; - t_ab8500_codec_cr63_ad6sel cr63_ad6sel; - t_ab8500_codec_cr63_ancsel cr63_ancsel; - - /* CR64 */ - t_ab8500_codec_cr64_datohfren cr64_datohfren; - t_ab8500_codec_cr64_datohflen cr64_datohflen; - t_ab8500_codec_cr64_hfrsel cr64_hfrsel; - t_ab8500_codec_cr64_hflsel cr64_hflsel; - t_ab8500_codec_cr64_stfir1sel cr64_stfir1sel; - t_ab8500_codec_cr64_stfir2sel cr64_stfir2sel; - - /* CR65 */ - t_ab8500_codec_cr65_fadedis_ad1 cr65_fadedis_ad1; - t_ab8500_codec_cr65_ad1gain cr65_ad1gain; - - /* CR66 */ - t_ab8500_codec_cr66_fadedis_ad2 cr66_fadedis_ad2; - t_ab8500_codec_cr66_ad2gain cr66_ad2gain; - - /* CR67 */ - t_ab8500_codec_cr67_fadedis_ad3 cr67_fadedis_ad3; - t_ab8500_codec_cr67_ad3gain cr67_ad3gain; - - /* CR68 */ - t_ab8500_codec_cr68_fadedis_ad4 cr68_fadedis_ad4; - t_ab8500_codec_cr68_ad4gain cr68_ad4gain; - - /* CR69 */ - t_ab8500_codec_cr69_fadedis_ad5 cr69_fadedis_ad5; - t_ab8500_codec_cr69_ad5gain cr69_ad5gain; - - /* CR70 */ - t_ab8500_codec_cr70_fadedis_ad6 cr70_fadedis_ad6; - t_ab8500_codec_cr70_ad6gain cr70_ad6gain; - - /* CR71 */ - t_ab8500_codec_cr71_fadedis_da1 cr71_fadedis_da1; - t_ab8500_codec_cr71_da1gain cr71_da1gain; - - /* CR72 */ - t_ab8500_codec_cr72_fadedis_da2 cr72_fadedis_da2; - t_ab8500_codec_cr72_da2gain cr72_da2gain; - - /* CR73 */ - t_ab8500_codec_cr73_fadedis_da3 cr73_fadedis_da3; - t_ab8500_codec_cr73_da3gain cr73_da3gain; - - /* CR74 */ - t_ab8500_codec_cr74_fadedis_da4 cr74_fadedis_da4; - t_ab8500_codec_cr74_da4gain cr74_da4gain; - - /* CR75 */ - t_ab8500_codec_cr75_fadedis_da5 cr75_fadedis_da5; - t_ab8500_codec_cr75_da5gain cr75_da5gain; - - /* CR76 */ - t_ab8500_codec_cr76_fadedis_da6 cr76_fadedis_da6; - t_ab8500_codec_cr76_da6gain cr76_da6gain; - - /* CR77 */ - t_ab8500_codec_cr77_fadedis_ad1l cr77_fadedis_ad1l; - t_ab8500_codec_cr77_ad1lbgain_to_hfl cr77_ad1lbgain_to_hfl; - - /* CR78 */ - t_ab8500_codec_cr78_fadedis_ad2l cr78_fadedis_ad2l; - t_ab8500_codec_cr78_ad2lbgain_to_hfr cr78_ad2lbgain_to_hfr; - - /* CR79 */ - t_ab8500_codec_cr79_hssinc1 cr79_hssinc1; - t_ab8500_codec_cr79_fadedis_hsl cr79_fadedis_hsl; - t_ab8500_codec_cr79_hsldgain cr79_hsldgain; - - /* CR80 */ - t_ab8500_codec_cr80_fade_speed cr80_fade_speed; - t_ab8500_codec_cr80_fadedis_hsr cr80_fadedis_hsr; - t_ab8500_codec_cr80_hsrdgain cr80_hsrdgain; - - /* CR81 */ - t_ab8500_codec_cr81_stfir1gain cr81_stfir1gain; - - /* CR82 */ - t_ab8500_codec_cr82_stfir2gain cr82_stfir2gain; - - /* CR83 */ - t_ab8500_codec_cr83_enanc cr83_enanc; - t_ab8500_codec_cr83_anciirinit cr83_anciirinit; - t_ab8500_codec_cr83_ancfirupdate cr83_ancfirupdate; - - /* CR84 */ - t_ab8500_codec_cr84_ancinshift cr84_ancinshift; - - /* CR85 */ - t_ab8500_codec_cr85_ancfiroutshift cr85_ancfiroutshift; - - /* CR86 */ - t_ab8500_codec_cr86_ancshiftout cr86_ancshiftout; - - /* CR87 */ - t_ab8500_codec_cr87_ancfircoeff_msb cr87_ancfircoeff_msb; - - /* CR88 */ - t_ab8500_codec_cr88_ancfircoeff_lsb cr88_ancfircoeff_lsb; - - /* CR89 */ - t_ab8500_codec_cr89_anciircoeff_msb cr89_anciircoeff_msb; - - /* CR90 */ - t_ab8500_codec_cr90_anciircoeff_lsb cr90_anciircoeff_lsb; - - /* CR91 */ - t_ab8500_codec_cr91_ancwarpdel_msb cr91_ancwarpdel_msb; - - /* CR92 */ - t_ab8500_codec_cr92_ancwarpdel_lsb cr92_ancwarpdel_lsb; - - /* CR93 */ - t_ab8500_codec_cr93_ancfirpeak_msb cr93_ancfirpeak_msb; - - /* CR94 */ - t_ab8500_codec_cr94_ancfirpeak_lsb cr94_ancfirpeak_lsb; - - /* CR95 */ - t_ab8500_codec_cr95_anciirpeak_msb cr95_anciirpeak_msb; - - /* CR96 */ - t_ab8500_codec_cr96_anciirpeak_lsb cr96_anciirpeak_lsb; - - /* CR97 */ - t_ab8500_codec_cr97_stfir_set cr97_stfir_set; - t_ab8500_codec_cr97_stfir_addr cr97_stfir_addr; - - /* CR98 */ - t_ab8500_codec_cr98_stfir_coeff_msb cr98_stfir_coeff_msb; - - /* CR99 */ - t_ab8500_codec_cr99_stfir_coeff_lsb cr99_stfir_coeff_lsb; - - /* CR100 */ - t_ab8500_codec_cr100_enstfirs cr100_enstfirs; - t_ab8500_codec_cr100_stfirstoif1 cr100_stfirstoif1; - t_ab8500_codec_cr100_stfir_busy cr100_stfir_busy; - - /* CR101 */ - t_ab8500_codec_cr101_hsoffst_mask cr101_hsoffst_mask; - t_ab8500_codec_cr101_fifofull_mask cr101_fifofull_mask; - t_ab8500_codec_cr101_fifoempty_mask cr101_fifoempty_mask; - t_ab8500_codec_cr101_dasat_mask cr101_dasat_mask; - t_ab8500_codec_cr101_adsat_mask cr101_adsat_mask; - t_ab8500_codec_cr101_addsp_mask cr101_addsp_mask; - t_ab8500_codec_cr101_dadsp_mask cr101_dadsp_mask; - t_ab8500_codec_cr101_firsid_mask cr101_firsid_mask; - - /* CR102 */ - t_ab8500_codec_cr102_it_hsoffst cr102_it_hsoffst; - t_ab8500_codec_cr102_it_fifofull cr102_it_fifofull; - t_ab8500_codec_cr102_it_fifoempty cr102_it_fifoempty; - t_ab8500_codec_cr102_it_dasat cr102_it_dasat; - t_ab8500_codec_cr102_it_adsat cr102_it_adsat; - t_ab8500_codec_cr102_it_addsp cr102_it_addsp; - t_ab8500_codec_cr102_it_dadsp cr102_it_dadsp; - t_ab8500_codec_cr102_it_firsid cr102_it_firsid; - - /* CR103 */ - t_ab8500_codec_cr103_vssready_mask cr103_vssready_mask; - t_ab8500_codec_cr103_shorthsl_mask cr103_shorthsl_mask; - t_ab8500_codec_cr103_shorthsr_mask cr103_shorthsr_mask; - t_ab8500_codec_cr103_shortear_mask cr103_shortear_mask; - - /* CR104 */ - t_ab8500_codec_cr104_it_vssready cr104_it_vssready; - t_ab8500_codec_cr104_it_shorthsl cr104_it_shorthsl; - t_ab8500_codec_cr104_it_shorthsr cr104_it_shorthsr; - t_ab8500_codec_cr104_it_shortear cr104_it_shortear; - - /* CR105 */ - t_ab8500_codec_cr105_bfifomsk cr105_bfifomsk; - t_ab8500_codec_cr105_bfifoint cr105_bfifoint; - - /* CR106 */ - t_ab8500_codec_cr106_bfifotx cr106_bfifotx; - - /* CR107 */ - t_ab8500_codec_cr107_bfifoexsl cr107_bfifoexsl; - t_ab8500_codec_cr107_prebitclk0 cr107_prebitclk0; - t_ab8500_codec_cr107_bfifomast cr107_bfifomast; - t_ab8500_codec_cr107_bfiforun cr107_bfiforun; - - /* CR108 */ - t_ab8500_codec_cr108_bfifoframsw cr108_bfifoframsw; - - /* CR109 */ - t_ab8500_codec_cr109_bfifowakeup cr109_bfifowakeup; - - /* CR110 */ - t_ab8500_codec_cr110_bfifosamples cr110_bfifosamples; - - /* CR111 */ - t_ab8500_codec_cr111_aud_ip_rev cr111_aud_ip_rev; - -} t_ab8500_codec_configuration; - -typedef enum { - AB8500_CODEC_DIRECTION_IN, - AB8500_CODEC_DIRECTION_OUT, - AB8500_CODEC_DIRECTION_INOUT -} t_ab8500_codec_direction; - -typedef enum { - AB8500_CODEC_AUDIO_INTERFACE_0, - AB8500_CODEC_AUDIO_INTERFACE_1 -} t_ab8500_codec_audio_interface; - -typedef enum { - AB8500_CODEC_MODE_HIFI, - AB8500_CODEC_MODE_VOICE, - AB8500_CODEC_MODE_MANUAL_SETTING -} t_ab8500_codec_mode; - -typedef enum { - AB8500_CODEC_DEST_HEADSET, - AB8500_CODEC_DEST_EARPIECE, - AB8500_CODEC_DEST_HANDSFREE, - AB8500_CODEC_DEST_VIBRATOR_L, - AB8500_CODEC_DEST_VIBRATOR_R, - AB8500_CODEC_DEST_FM_TX, - AB8500_CODEC_DEST_ALL -} t_ab8500_codec_dest; - -typedef enum { - AB8500_CODEC_SRC_LINEIN, - AB8500_CODEC_SRC_MICROPHONE_1A, - AB8500_CODEC_SRC_MICROPHONE_1B, - AB8500_CODEC_SRC_MICROPHONE_2, - AB8500_CODEC_SRC_D_MICROPHONE_1, - AB8500_CODEC_SRC_D_MICROPHONE_2, - AB8500_CODEC_SRC_D_MICROPHONE_3, - AB8500_CODEC_SRC_D_MICROPHONE_4, - AB8500_CODEC_SRC_D_MICROPHONE_5, - AB8500_CODEC_SRC_D_MICROPHONE_6, - AB8500_CODEC_SRC_D_MICROPHONE_12, - AB8500_CODEC_SRC_D_MICROPHONE_34, - AB8500_CODEC_SRC_D_MICROPHONE_56, - AB8500_CODEC_SRC_FM_RX, - AB8500_CODEC_SRC_ALL -} t_ab8500_codec_src; - -typedef struct { - t_uint8 slave_address_of_ab8500_codec; - t_ab8500_codec_direction ab8500_codec_direction; - t_ab8500_codec_mode ab8500_codec_mode_in; - t_ab8500_codec_mode ab8500_codec_mode_out; - t_ab8500_codec_audio_interface audio_interface; - t_ab8500_codec_src ab8500_codec_src; - t_ab8500_codec_dest ab8500_codec_dest; - t_uint8 in_left_volume; - t_uint8 in_right_volume; - t_uint8 out_left_volume; - t_uint8 out_right_volume; - - t_ab8500_codec_configuration ab8500_codec_configuration; -} t_ab8500_codec_system_context; - -#endif /* _AB8500_CODECP_H_ */ - -/* End of file AB8500_CODECP.h */ diff --git a/arch/arm/mach-ux500/include/mach/ab8500_codec_v1_0.h b/arch/arm/mach-ux500/include/mach/ab8500_codec_v1_0.h deleted file mode 100644 index a5b8a57f341..00000000000 --- a/arch/arm/mach-ux500/include/mach/ab8500_codec_v1_0.h +++ /dev/null @@ -1,329 +0,0 @@ -/*****************************************************************************/ -/** -* © ST-Ericsson, 2009 - All rights reserved -* Reproduction and Communication of this document is strictly prohibited -* unless specifically authorized in writing by ST-Ericsson -* -* \brief Public header file for AB8500 Codec -* \author ST-Ericsson -*/ -/*****************************************************************************/ - -#ifndef _AB8500_CODEC_V1_0_H_ -#define _AB8500_CODEC_V1_0_H_ - -/*--------------------------------------------------------------------- - * Includes - *--------------------------------------------------------------------*/ -#include "hcl_defs.h" -#include "debug.h" -#include <mach/ab8500_codec_p_v1_0.h> -/*--------------------------------------------------------------------- - * Define - *--------------------------------------------------------------------*/ -#ifdef __cplusplus -extern "C" { -#endif - typedef enum { - AB8500_CODEC_OK, - AB8500_CODEC_ERROR, - AB8500_CODEC_UNSUPPORTED_FEATURE, - AB8500_CODEC_INVALID_PARAMETER, - AB8500_CODEC_CONFIG_NOT_COHERENT, - AB8500_CODEC_TRANSACTION_FAILED - } t_ab8500_codec_error; - - typedef enum { - AB8500_CODEC_SRC_STATE_DISABLE, - AB8500_CODEC_SRC_STATE_ENABLE - } t_ab8500_codec_src_state; - - typedef enum { - AB8500_CODEC_DEST_STATE_DISABLE, - AB8500_CODEC_DEST_STATE_ENABLE - } t_ab8500_codec_dest_state; - - typedef enum { - AB8500_CODEC_MASTER_MODE_DISABLE, - AB8500_CODEC_MASTER_MODE_ENABLE - } t_ab8500_codec_master_mode; - - typedef enum { - AB8500_CODEC_SLOT0, - AB8500_CODEC_SLOT1, - AB8500_CODEC_SLOT2, - AB8500_CODEC_SLOT3, - AB8500_CODEC_SLOT4, - AB8500_CODEC_SLOT5, - AB8500_CODEC_SLOT6, - AB8500_CODEC_SLOT7, - AB8500_CODEC_SLOT8, - AB8500_CODEC_SLOT9, - AB8500_CODEC_SLOT10, - AB8500_CODEC_SLOT11, - AB8500_CODEC_SLOT12, - AB8500_CODEC_SLOT13, - AB8500_CODEC_SLOT14, - AB8500_CODEC_SLOT15, - AB8500_CODEC_SLOT16, - AB8500_CODEC_SLOT17, - AB8500_CODEC_SLOT18, - AB8500_CODEC_SLOT19, - AB8500_CODEC_SLOT20, - AB8500_CODEC_SLOT21, - AB8500_CODEC_SLOT22, - AB8500_CODEC_SLOT23, - AB8500_CODEC_SLOT24, - AB8500_CODEC_SLOT25, - AB8500_CODEC_SLOT26, - AB8500_CODEC_SLOT27, - AB8500_CODEC_SLOT28, - AB8500_CODEC_SLOT29, - AB8500_CODEC_SLOT30, - AB8500_CODEC_SLOT31, - AB8500_CODEC_SLOT_UNDEFINED - } t_ab8500_codec_slot; - - typedef enum { - AB8500_CODEC_DA_CHANNEL_NUMBER_1, - AB8500_CODEC_DA_CHANNEL_NUMBER_2, - AB8500_CODEC_DA_CHANNEL_NUMBER_3, - AB8500_CODEC_DA_CHANNEL_NUMBER_4, - AB8500_CODEC_DA_CHANNEL_NUMBER_5, - AB8500_CODEC_DA_CHANNEL_NUMBER_6, - AB8500_CODEC_DA_CHANNEL_NUMBER_7, - AB8500_CODEC_DA_CHANNEL_NUMBER_8, - AB8500_CODEC_DA_CHANNEL_NUMBER_UNDEFINED - } t_ab8500_codec_da_channel_number; - - typedef struct { - t_ab8500_codec_cr105_bfifomsk cr105_bfifomsk; - t_ab8500_codec_cr105_bfifoint cr105_bfifoint; - t_ab8500_codec_cr106_bfifotx cr106_bfifotx; - t_ab8500_codec_cr107_bfifoexsl cr107_bfifoexsl; - t_ab8500_codec_cr107_prebitclk0 cr107_prebitclk0; - t_ab8500_codec_cr107_bfifomast cr107_bfifomast; - t_ab8500_codec_cr107_bfiforun cr107_bfiforun; - t_ab8500_codec_cr108_bfifoframsw cr108_bfifoframsw; - t_ab8500_codec_cr109_bfifowakeup cr109_bfifowakeup; - } t_ab8500_codec_burst_fifo_config; - - typedef struct { - t_ab8500_codec_cr27_if1_bitclk_osr cr27_if1_bitclk_osr; - t_ab8500_codec_cr27_if0_bitclk_osr cr27_if0_bitclk_osr; - t_ab8500_codec_cr28_if0wl cr28_if0wl; - t_ab8500_codec_cr30_if1wl cr30_if1wl; - t_ab8500_codec_cr28_bitclk0p cr28_bitclk0p; - t_ab8500_codec_cr28_if0del cr28_if0del; - } t_ab8500_codec_tdm_config; - -/************************************************************/ -/*--------------------------------------------------------------------- - * Exported APIs - *--------------------------------------------------------------------*/ -/* Initialization */ - t_ab8500_codec_error AB8500_CODEC_Init(IN t_uint8 - slave_address_of_codec); - t_ab8500_codec_error AB8500_CODEC_Reset(void); - -/* Audio Codec basic configuration */ - t_ab8500_codec_error AB8500_CODEC_SetModeAndDirection(IN - t_ab8500_codec_direction - ab8500_codec_direction, - IN - t_ab8500_codec_mode - ab8500_codec_mode_in, - IN - t_ab8500_codec_mode - ab8500_codec_mode_out, - IN - t_ab8500_codec_tdm_config - const *const - p_tdm_config); - t_ab8500_codec_error AB8500_CODEC_SelectInput(IN t_ab8500_codec_src - ab8500_codec_src); - t_ab8500_codec_error AB8500_CODEC_SelectOutput(IN t_ab8500_codec_dest - ab8500_codec_dest); - -/* Burst FIFO configuration */ - t_ab8500_codec_error AB8500_CODEC_ConfigureBurstFifo(IN - t_ab8500_codec_burst_fifo_config - const *const - p_burst_fifo_config); - t_ab8500_codec_error AB8500_CODEC_EnableBurstFifo(void); - t_ab8500_codec_error AB8500_CODEC_DisableBurstFifo(void); - -/* Audio Codec Master mode configuration */ - t_ab8500_codec_error AB8500_CODEC_SetMasterMode(IN - t_ab8500_codec_master_mode - mode); - -/* APIs to be implemented by user */ - t_ab8500_codec_error AB8500_CODEC_Write(IN t_uint8 register_offset, - IN t_uint8 count, - IN t_uint8 * p_data); - t_ab8500_codec_error AB8500_CODEC_Read(IN t_uint8 register_offset, - IN t_uint8 count, - IN t_uint8 * p_dummy_data, - IN t_uint8 * p_data); - -/* Volume Management */ - t_ab8500_codec_error AB8500_CODEC_SetSrcVolume(IN t_ab8500_codec_src - src_device, - IN t_uint8 - in_left_volume, - IN t_uint8 - in_right_volume); - t_ab8500_codec_error AB8500_CODEC_SetDestVolume(IN t_ab8500_codec_dest - dest_device, - IN t_uint8 - out_left_volume, - IN t_uint8 - out_right_volume); - -/* Power management */ - t_ab8500_codec_error AB8500_CODEC_PowerDown(void); - t_ab8500_codec_error AB8500_CODEC_PowerUp(void); - -/* Interface Management */ - t_ab8500_codec_error AB8500_CODEC_SelectInterface(IN - t_ab8500_codec_audio_interface - audio_interface); - t_ab8500_codec_error AB8500_CODEC_GetInterface(OUT - t_ab8500_codec_audio_interface - * p_audio_interface); - -/* Slot Allocation */ - t_ab8500_codec_error AB8500_CODEC_ADSlotAllocation(IN - t_ab8500_codec_slot - ad_slot, - IN - t_ab8500_codec_cr31_to_cr46_ad_data_allocation - value); - t_ab8500_codec_error AB8500_CODEC_DASlotAllocation(IN - t_ab8500_codec_da_channel_number - channel_number, - IN - t_ab8500_codec_cr51_to_cr58_sltoda - slot); - -/* Loopback Management */ - t_ab8500_codec_error AB8500_CODEC_SetAnalogLoopback(IN t_uint8 - out_left_volume, - IN t_uint8 - out_right_volume); - t_ab8500_codec_error AB8500_CODEC_RemoveAnalogLoopback(void); - -/* Bypass Management */ - t_ab8500_codec_error AB8500_CODEC_EnableBypassMode(void); - t_ab8500_codec_error AB8500_CODEC_DisableBypassMode(void); - -/* Power Control Management */ - t_ab8500_codec_error AB8500_CODEC_SrcPowerControl(IN t_ab8500_codec_src - src_device, - t_ab8500_codec_src_state - state); - t_ab8500_codec_error AB8500_CODEC_DestPowerControl(IN - t_ab8500_codec_dest - dest_device, - t_ab8500_codec_dest_state - state); - -/* Version Management */ - t_ab8500_codec_error AB8500_CODEC_GetVersion(OUT t_version * p_version); - -#if 0 -/* Debug management */ - t_ab8500_codec_error AB8500_CODEC_SetDbgLevel(IN t_dbg_level dbg_level); - t_ab8500_codec_error AB8500_CODEC_GetDbgLevel(OUT t_dbg_level * - p_dbg_level); -#endif - -/* -** following is added by $kardad$ -*/ - -/* duplicate copy of enum from msp.h */ -/* for MSPConfiguration.in_clock_freq parameter to select msp clock freq */ - typedef enum { - CODEC_MSP_INPUT_FREQ_1MHZ = 1024, - CODEC_MSP_INPUT_FREQ_2MHZ = 2048, - CODEC_MSP_INPUT_FREQ_3MHZ = 3072, - CODEC_MSP_INPUT_FREQ_4MHZ = 4096, - CODEC_MSP_INPUT_FREQ_5MHZ = 5760, - CODEC_MSP_INPUT_FREQ_6MHZ = 6144, - CODEC_MSP_INPUT_FREQ_8MHZ = 8192, - CODEC_MSP_INPUT_FREQ_11MHZ = 11264, - CODEC_MSP_INPUT_FREQ_12MHZ = 12288, - CODEC_MSP_INPUT_FREQ_16MHZ = 16384, - CODEC_MSP_INPUT_FREQ_22MHZ = 22579, - CODEC_MSP_INPUT_FREQ_24MHZ = 24576, - CODEC_MSP_INPUT_FREQ_48MHZ = 49152 - } codec_msp_in_clock_freq_type; - -/* msp clock source internal/external for srg_clock_sel */ - typedef enum { - CODEC_MSP_APB_CLOCK = 0, - CODEC_MSP_SCK_CLOCK = 2, - CODEC_MSP_SCK_SYNC_CLOCK = 3 - } codec_msp_srg_clock_sel_type; - -/* Sample rate supported by Codec */ - - typedef enum { - CODEC_FREQUENCY_DONT_CHANGE = -100, - CODEC_SAMPLING_FREQ_RESET = -1, - CODEC_SAMPLING_FREQ_MINLIMIT = 7, - CODEC_SAMPLING_FREQ_8KHZ = 8, /*default */ - CODEC_SAMPLING_FREQ_11KHZ = 11, - CODEC_SAMPLING_FREQ_12KHZ = 12, - CODEC_SAMPLING_FREQ_16KHZ = 16, - CODEC_SAMPLING_FREQ_22KHZ = 22, - CODEC_SAMPLING_FREQ_24KHZ = 24, - CODEC_SAMPLING_FREQ_32KHZ = 32, - CODEC_SAMPLING_FREQ_44KHZ = 44, - CODEC_SAMPLING_FREQ_48KHZ = 48, - CODEC_SAMPLING_FREQ_64KHZ = 64, /*the frequencies below this line are not supported in stw5094A */ - CODEC_SAMPLING_FREQ_88KHZ = 88, - CODEC_SAMPLING_FREQ_96KHZ = 96, - CODEC_SAMPLING_FREQ_128KHZ = 128, - CODEC_SAMPLING_FREQ_176KHZ = 176, - CODEC_SAMPLING_FREQ_192KHZ = 192, - CODEC_SAMPLING_FREQ_MAXLIMIT = 193 - } t_codec_sample_frequency; - -#define RESET -1 -#define DEFAULT -100 -/***********************************************************/ -/* -** following stuff is added to compile code without debug print support $kardad$ -*/ - -#define DBGEXIT(cr) -#define DBGEXIT0(cr) -#define DBGEXIT1(cr,ch,p1) -#define DBGEXIT2(cr,ch,p1,p2) -#define DBGEXIT3(cr,ch,p1,p2,p3) -#define DBGEXIT4(cr,ch,p1,p2,p3,p4) -#define DBGEXIT5(cr,ch,p1,p2,p3,p4,p5) -#define DBGEXIT6(cr,ch,p1,p2,p3,p4,p5,p6) - -#define DBGENTER() -#define DBGENTER0() -#define DBGENTER1(ch,p1) -#define DBGENTER2(ch,p1,p2) -#define DBGENTER3(ch,p1,p2,p3) -#define DBGENTER4(ch,p1,p2,p3,p4) -#define DBGENTER5(ch,p1,p2,p3,p4,p5) -#define DBGENTER6(ch,p1,p2,p3,p4,p5,p6) - -#define DBGPRINT(dbg_level,dbg_string) -#define DBGPRINTHEX(dbg_level,dbg_string,uint32) -#define DBGPRINTDEC(dbg_level,dbg_string,uint32) -/***********************************************************/ - -#ifdef __cplusplus -} /* allow C++ to use these headers */ -#endif /* __cplusplus */ -#endif /* _AB8500_CODEC_H_ */ -/* End of file ab8500_codec.h*/ diff --git a/arch/arm/mach-ux500/include/mach/ste_audio_io_ioctl.h b/arch/arm/mach-ux500/include/mach/ste_audio_io_ioctl.h deleted file mode 100644 index e04734d65a5..00000000000 --- a/arch/arm/mach-ux500/include/mach/ste_audio_io_ioctl.h +++ /dev/null @@ -1,234 +0,0 @@ -/* - * Copyright (C) ST-Ericsson SA 2010 - * Author: Deepak KARDA/ deepak.karda@stericsson.com for ST-Ericsson - * License terms: GNU General Public License (GPL) version 2. - */ - -#ifndef _AUDIOIO_IOCTL_H_ -#define _AUDIOIO_IOCTL_H_ - - -#define AUDIOIO_IOC_MAGIC 'N' -#define AUDIOIO_READ_REGISTER _IOWR(AUDIOIO_IOC_MAGIC, 1,\ - struct audioio_data_t) -#define AUDIOIO_WRITE_REGISTER _IOW(AUDIOIO_IOC_MAGIC, 2,\ - struct audioio_data_t) -#define AUDIOIO_PWR_CTRL_TRNSDR _IOW(AUDIOIO_IOC_MAGIC, 3,\ - struct audioio_pwr_ctrl_t) -#define AUDIOIO_PWR_STS_TRNSDR _IOR(AUDIOIO_IOC_MAGIC, 4,\ - struct audioio_pwr_ctrl_t) -#define AUDIOIO_LOOP_CTRL _IOW(AUDIOIO_IOC_MAGIC, 5,\ - struct audioio_loop_ctrl_t) -#define AUDIOIO_LOOP_STS _IOR(AUDIOIO_IOC_MAGIC, 6,\ - struct audioio_loop_ctrl_t) -#define AUDIOIO_GET_TRNSDR_GAIN_CAPABILITY _IOR(AUDIOIO_IOC_MAGIC, 7,\ - struct audioio_get_gain_t) -#define AUDIOIO_GAIN_CAP_LOOP _IOR(AUDIOIO_IOC_MAGIC, 8,\ - struct audioio_gain_loop_t) -#define AUDIOIO_SUPPORT_LOOP _IOR(AUDIOIO_IOC_MAGIC, 9,\ - struct audioio_support_loop_t) -#define AUDIOIO_GAIN_DESC_TRNSDR _IOR(AUDIOIO_IOC_MAGIC, 10,\ - struct audioio_gain_desc_trnsdr_t) -#define AUDIOIO_GAIN_CTRL_TRNSDR _IOW(AUDIOIO_IOC_MAGIC, 11,\ - struct audioio_gain_ctrl_trnsdr_t) -#define AUDIOIO_GAIN_QUERY_TRNSDR _IOR(AUDIOIO_IOC_MAGIC, 12,\ - struct audioio_gain_ctrl_trnsdr_t) -#define AUDIOIO_MUTE_CTRL_TRNSDR _IOW(AUDIOIO_IOC_MAGIC, 13,\ - struct audioio_mute_trnsdr_t) -#define AUDIOIO_MUTE_STS_TRNSDR _IOR(AUDIOIO_IOC_MAGIC, 14,\ - struct audioio_mute_trnsdr_t) -#define AUDIOIO_FADE_CTRL _IOW(AUDIOIO_IOC_MAGIC, 15,\ - struct audioio_fade_ctrl_t) -#define AUDIOIO_BURST_CTRL _IOW(AUDIOIO_IOC_MAGIC, 16,\ - struct audioio_burst_ctrl_t) -#define AUDIOIO_READ_ALL_ACODEC_REGS_CTRL _IOW(AUDIOIO_IOC_MAGIC, 17,\ - struct audioio_read_all_acodec_reg_ctrl_t) -#define AUDIOIO_FSBITCLK_CTRL _IOW(AUDIOIO_IOC_MAGIC, 18,\ - struct audioio_fsbitclk_ctrl_t) -#define AUDIOIO_PSEUDOBURST_CTRL _IOW(AUDIOIO_IOC_MAGIC, 19,\ - struct audioio_pseudoburst_ctrl_t) -#define AUDIOIO_AUDIOCODEC_PWR_CTRL _IOW(AUDIOIO_IOC_MAGIC, 20, \ - struct audioio_acodec_pwr_ctrl_t) -#define AUDIOIO_FIR_COEFFS_CTRL _IOW(AUDIOIO_IOC_MAGIC, 21, \ - struct audioio_fir_coefficients_t) -#define AUDIOIO_LOOP_GAIN_DESC_TRNSDR _IOR(AUDIOIO_IOC_MAGIC, 22,\ - struct audioio_gain_desc_trnsdr_t) -#define AUDIOIO_CLK_SELECT_CTRL _IOR(AUDIOIO_IOC_MAGIC, 23,\ - struct audioio_clk_select_t) -/* audio codec channel ids */ -#define EAR_CH 0 -#define HS_CH 1 -#define IHF_CH 2 -#define VIBL_CH 3 -#define VIBR_CH 4 -#define MIC1A_CH 5 -#define MIC1B_CH 6 -#define MIC2_CH 7 -#define LIN_CH 8 -#define DMIC12_CH 9 -#define DMIC34_CH 10 -#define DMIC56_CH 11 -#define MULTI_MIC_CH 12 -#define FMRX_CH 13 -#define FMTX_CH 14 -#define BLUETOOTH_CH 15 - -#define FIRST_CH EAR_CH -#define LAST_CH BLUETOOTH_CH - -#define MAX_NO_TRANSDUCERS 16 -#define STE_AUDIOIO_MAX_COEFFICIENTS 128 -#define MAX_NO_OF_LOOPS 19 - -#define AUDIOIO_TRUE 1 -#define AUDIOIO_FALSE 0 - -enum AUDIOIO_CLK_TYPE { - AUDIOIO_ULP_CLK, - AUDIOIO_SYS_CLK -}; - -enum AUDIOIO_COMMON_SWITCH { - AUDIOIO_COMMON_OFF = 0, - AUDIOIO_COMMON_ON, - AUDIOIO_COMMON_ALLCHANNEL_UNSUPPORTED = 0xFFFF -}; - -enum AUDIOIO_HAL_HW_LOOPS { - AUDIOIO_NO_LOOP = 0x0, - AUDIOIO_SIDETONE_LOOP = 0x01, - AUDIOIO_MIC1B_TO_HFL = 0x02, - AUDIOIO_MIC1B_TO_HFR = 0x04, - AUDIOIO_MIC1B_TO_EAR = 0x08, - AUDIOIO_MIC1A_TO_HSL = 0x10, - AUDIOIO_MIC1A_TO_HSR = 0x20, - AUDIOIO_MIC1A_TO_HSR_HSL = 0x40, - AUDIOIO_LINEIN_TO_HF = 0x80, - AUDIOIO_DMIC12_TO_HSR_HSL = 0x100, - AUDIOIO_DIC34_TO_HSR_HSL = 0x200, - AUDIOIO_DIC56_TO_HSR_HSL = 0x400, - AUDIOIO_DMIC12_TO_ST = 0x800, - AUDIOIO_DMIC34_TO_ST = 0x1000, - AUDIOIO_DMIC56_TO_ST = 0x2000, - AUDIOIO_ANC_LOOP = 0x4000, - AUDIOIO_LININ_HS = 0x8000, - AUDIOIO_LININL_HSL = 0x10000, - AUDIOIO_LININ_HSR = 0x20000 -}; - - -enum AUDIOIO_FADE_PERIOD { - e_FADE_00, - e_FADE_01, - e_FADE_10, - e_FADE_11 -}; - -enum AUDIOIO_CH_INDEX { - e_CHANNEL_1 = 0x01, - e_CHANNEL_2 = 0x02, - e_CHANNEL_3 = 0x04, - e_CHANNEL_4 = 0x08, - e_CHANNEL_ALL = 0x0f -}; - -struct audioio_data_t { - unsigned char block; - unsigned char addr; - unsigned char data; -}; - -struct audioio_pwr_ctrl_t { - enum AUDIOIO_COMMON_SWITCH ctrl_switch; - int channel_type; - enum AUDIOIO_CH_INDEX channel_index; -}; - -struct audioio_acodec_pwr_ctrl_t { - enum AUDIOIO_COMMON_SWITCH ctrl_switch; -}; - -struct audioio_loop_ctrl_t { - enum AUDIOIO_HAL_HW_LOOPS hw_loop; - enum AUDIOIO_COMMON_SWITCH ctrl_switch; - int channel_type; - enum AUDIOIO_CH_INDEX channel_index; - int loop_gain; -}; - -struct audioio_get_gain_t { - unsigned int num_channels; - unsigned short max_num_gain; -}; - -struct audioio_gain_loop_t { - int channel_type; - unsigned short num_loop; - unsigned short max_gains; -}; - -struct audioio_support_loop_t { - int channel_type; - unsigned short spprtd_loop_index; -}; - -struct audioio_gain_desc_trnsdr_t { - enum AUDIOIO_CH_INDEX channel_index; - int channel_type; - unsigned short gain_index; - int min_gain; - int max_gain; - unsigned int gain_step; -}; - -struct audioio_gain_ctrl_trnsdr_t { - enum AUDIOIO_CH_INDEX channel_index; - int channel_type; - unsigned short gain_index; - int gain_value; - unsigned int linear; -}; - -struct audioio_mute_trnsdr_t { - int channel_type; - enum AUDIOIO_CH_INDEX channel_index; - enum AUDIOIO_COMMON_SWITCH ctrl_switch; -}; - -struct audioio_fade_ctrl_t { - enum AUDIOIO_COMMON_SWITCH ctrl_switch; - enum AUDIOIO_FADE_PERIOD fade_period; - int channel_type; - enum AUDIOIO_CH_INDEX channel_index; -}; - -struct audioio_burst_ctrl_t { - enum AUDIOIO_COMMON_SWITCH ctrl_switch; - int channel_type; - int burst_fifo_interrupt_sample_count; - int burst_fifo_length;/* BFIFOTx */ - int burst_fifo_switch_frame; - int burst_fifo_sample_number; -}; - -struct audioio_read_all_acodec_reg_ctrl_t { - unsigned char data[200]; -}; - -struct audioio_fsbitclk_ctrl_t { - enum AUDIOIO_COMMON_SWITCH ctrl_switch; -}; - -struct audioio_pseudoburst_ctrl_t { - enum AUDIOIO_COMMON_SWITCH ctrl_switch; -}; - -struct audioio_fir_coefficients_t { - unsigned char start_addr; - unsigned short coefficients[STE_AUDIOIO_MAX_COEFFICIENTS]; -}; - -struct audioio_clk_select_t { - enum AUDIOIO_CLK_TYPE required_clk; -}; -#endif diff --git a/arch/arm/mach-ux500/include/mach/ste_audio_io_vibrator.h b/arch/arm/mach-ux500/include/mach/ste_audio_io_vibrator.h deleted file mode 100644 index 6b6a558e90a..00000000000 --- a/arch/arm/mach-ux500/include/mach/ste_audio_io_vibrator.h +++ /dev/null @@ -1,37 +0,0 @@ -/* -* Overview: -* Header File defining vibrator kernel space interface -* -* Copyright (C) 2010 ST Ericsson -* -* 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 _STE_AUDIO_IO_VIBRATOR_H_ -#define _STE_AUDIO_IO_VIBRATOR_H_ - -/* Client definitions which can use vibrator, defined as bitmask */ -#define STE_AUDIOIO_CLIENT_AUDIO_L 1 -#define STE_AUDIOIO_CLIENT_AUDIO_R 2 -#define STE_AUDIOIO_CLIENT_FF_VIBRA 4 -#define STE_AUDIOIO_CLIENT_TIMED_VIBRA 8 - -/* - * Define vibrator's maximum speed allowed - * Duty cycle supported by vibrator's PWM is 0-100 - */ -#define STE_AUDIOIO_VIBRATOR_MAX_SPEED 100 - -/* Vibrator speed structure */ -struct ste_vibra_speed { - unsigned char positive; - unsigned char negative; -}; - -/* Vibrator control function - uses PWM source */ -int ste_audioio_vibrator_pwm_control(int client, - struct ste_vibra_speed left_speed, struct ste_vibra_speed right_speed); - -#endif diff --git a/arch/arm/mach-ux500/include/mach/u8500_acodec_ab8500.h b/arch/arm/mach-ux500/include/mach/u8500_acodec_ab8500.h deleted file mode 100644 index 0575bbdb730..00000000000 --- a/arch/arm/mach-ux500/include/mach/u8500_acodec_ab8500.h +++ /dev/null @@ -1,284 +0,0 @@ -/* Header file for u8500 audiocodec specific data structures, enums - * and private & public functions. - * Author: Deepak Karda - * Copyright (C) 2009 ST-Ericsson Pvt. Ltd. - * - * 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 program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ - -#ifndef _U8500_ACODEC_AB8500_H_ -#define _U8500_ACODEC_AB8500_H_ - -#include <mach/ab8500.h> -#include <linux/i2s/i2s.h> - -#ifdef CONFIG_U8500_AB8500_CUT10 -#include <mach/ab8500_codec_v1_0.h> -//#include <mach/ab8500_codec_p_v1_0.h> -#else /*CONFIG_U8500_4500_ED */ -#include <mach/ab8500_codec.h> -#include <mach/ab8500_codec_p.h> -#endif - -#define NUMBER_OUTPUT_DEVICE 5 -#define NUMBER_INPUT_DEVICE 13 -#define NUMBER_LOOPBACK_STATE 2 -#define NUMBER_SWITCH_STATE 2 -#define NUMBER_POWER_STATE 2 -#define NUMBER_TDM_MODE_STATE 2 -#define NUMBER_DIRECT_RENDERING_STATE 2 -#define NUMBER_PCM_RENDERING_STATE 3 - -#define CODEC_MUTE 0x20 -#define DEFAULT_VOLUME 0x64 -#define DEFAULT_GAIN 0x32 -#define VOL_MAX 0x64 -#define VOL_MIN 0x00 -#define DEFAULT_OUTPUT_DEVICE AB8500_CODEC_DEST_HEADSET -#define DEFAULT_INPUT_DEVICE AB8500_CODEC_SRC_D_MICROPHONE_1 -#define DEFAULT_LOOPBACK_STATE DISABLE -#define DEFAULT_SWITCH_STATE DISABLE -#define DEFAULT_TDM8_CH_MODE_STATE DISABLE -#define DEFAULT_DIRECT_RENDERING_STATE DISABLE -#define DEFAULT_BURST_FIFO_STATE RENDERING_DISABLE -#define DEFAULT_FM_PLAYBACK_STATE RENDERING_DISABLE -#define DEFAULT_FM_TX_STATE RENDERING_DISABLE - -#define MIN_RATE_PLAYBACK 48000 -#define MAX_RATE_PLAYBACK 48000 -#define MIN_RATE_CAPTURE 48000 -#define MAX_RATE_CAPTURE 48000 -#define MAX_NO_OF_RATES 1 - -#define ALSA_MSP_BT_NUM 0 -#define ALSA_MSP_PCM_NUM 1 -#define ALSA_MSP_HDMI_NUM 2 - -#define I2S_CLIENT_MSP0 0 -#define I2S_CLIENT_MSP1 1 -#define I2S_CLIENT_MSP2 2 - -typedef enum { - DISABLE, - ENABLE -} t_u8500_bool_state; - -typedef enum { - RENDERING_DISABLE, - RENDERING_ENABLE, - RENDERING_PENDING -} t_u8500_pmc_rendering_state; - -typedef enum { - ACODEC_CONFIG_REQUIRED, - ACODEC_CONFIG_NOT_REQUIRED -} t_u8500_acodec_config_need; - -typedef enum { - CLASSICAL_MODE, - TDM_8_CH_MODE -} t_u8500_mode; - -typedef struct { - unsigned int left_volume; - unsigned int right_volume; - unsigned int mute_state; - t_u8500_bool_state power_state; -} u8500_io_dev_config_t; - -typedef enum { - NO_USER = 0, - USER_ALSA = 2, /*To make it equivalent to user id for MSP */ - USER_SAA, -} t_acodec_user; - -typedef struct { - u8500_io_dev_config_t output_config[NUMBER_OUTPUT_DEVICE]; - u8500_io_dev_config_t input_config[NUMBER_INPUT_DEVICE]; - //t_acodec_user user; - t_acodec_user cur_user; -} t_u8500_codec_system_context; - -typedef enum { - T_CODEC_SAMPLING_FREQ_48KHZ = 48, -} acodec_sample_frequency; - -struct acodec_configuration { - t_ab8500_codec_direction direction; - acodec_sample_frequency input_frequency; - acodec_sample_frequency output_frequency; - codec_msp_srg_clock_sel_type mspClockSel; - codec_msp_in_clock_freq_type mspInClockFreq; - u32 channels; - t_acodec_user user; - t_u8500_acodec_config_need acodec_config_need; - t_u8500_bool_state direct_rendering_mode; - t_u8500_bool_state tdm8_ch_mode; - t_u8500_bool_state digital_loopback; - void (*handler) (void *data); - void *tx_callback_data; - void *rx_callback_data; -}; - -typedef enum { - ACODEC_DISABLE_ALL, - ACODEC_DISABLE_TRANSMIT, - ACODEC_DISABLE_RECEIVE, -} t_acodec_disable; - -struct i2sdrv_data { - struct i2s_device *i2s; - spinlock_t i2s_lock; - /* buffer is NULL unless this device is open (users > 0) */ - int flag; - u32 tx_status; - u32 rx_status; -}; - -#define MAX_I2S_CLIENTS 3 //0=BT, 1=ACODEC, 2=HDMI - -/*extern t_ab8500_codec_error u8500_acodec_set_volume(int input_vol_left, - int input_vol_right, - int output_vol_left, - int output_vol_right, t_acodec_user user);*/ - -extern t_ab8500_codec_error u8500_acodec_open(int client_id, int stream_id); -//extern t_ab8500_codec_error u8500_acodec_pause_transfer(void); -//extern t_ab8500_codec_error u8500_acodec_unpause_transfer(void); -extern t_ab8500_codec_error u8500_acodec_send_data(int client_id, void *data, - size_t bytes, int dma_flag); -extern t_ab8500_codec_error u8500_acodec_receive_data(int client_id, void *data, - size_t bytes, - int dma_flag); -extern t_ab8500_codec_error u8500_acodec_close(int client_id, - t_acodec_disable flag); -extern t_ab8500_codec_error u8500_acodec_tx_rx_data(int client_id, - void *tx_data, - size_t tx_bytes, - void *rx_data, - size_t rx_bytes, - int dma_flag); - -extern t_ab8500_codec_error u8500_acodec_set_output_volume(t_ab8500_codec_dest - dest_device, - int left_volume, - int right_volume, - t_acodec_user user); - -extern t_ab8500_codec_error u8500_acodec_get_output_volume(t_ab8500_codec_dest - dest_device, - int *p_left_volume, - int *p_right_volume, - t_acodec_user user); - -extern t_ab8500_codec_error u8500_acodec_set_input_volume(t_ab8500_codec_src - src_device, - int left_volume, - int right_volume, - t_acodec_user user); - -extern t_ab8500_codec_error u8500_acodec_get_input_volume(t_ab8500_codec_src - src_device, - int *p_left_volume, - int *p_right_volume, - t_acodec_user user); - -extern t_ab8500_codec_error u8500_acodec_toggle_analog_lpbk(t_u8500_bool_state - lpbk_state, - t_acodec_user user); - -extern t_ab8500_codec_error u8500_acodec_toggle_digital_lpbk(t_u8500_bool_state - lpbk_state, - t_ab8500_codec_dest - dest_device, - t_ab8500_codec_src - src_device, - t_acodec_user user, - t_u8500_bool_state - tdm8_ch_mode); - -extern t_ab8500_codec_error -u8500_acodec_toggle_playback_mute_control(t_ab8500_codec_dest dest_device, - t_u8500_bool_state mute_state, - t_acodec_user user); -extern t_ab8500_codec_error -u8500_acodec_toggle_capture_mute_control(t_ab8500_codec_src src_device, - t_u8500_bool_state mute_state, - t_acodec_user user); - -extern t_ab8500_codec_error u8500_acodec_enable_audio_mode(struct - acodec_configuration - *acodec_config); -/*extern t_ab8500_codec_error u8500_acodec_enable_voice_mode(struct acodec_configuration *acodec_config);*/ - -extern t_ab8500_codec_error u8500_acodec_select_input(t_ab8500_codec_src - input_device, - t_acodec_user user, - t_u8500_mode mode); -extern t_ab8500_codec_error u8500_acodec_select_output(t_ab8500_codec_dest - output_device, - t_acodec_user user, - t_u8500_mode mode); - -extern t_ab8500_codec_error u8500_acodec_allocate_ad_slot(t_ab8500_codec_src - input_device, - t_u8500_mode mode); -extern t_ab8500_codec_error u8500_acodec_unallocate_ad_slot(t_ab8500_codec_src - input_device, - t_u8500_mode mode); -extern t_ab8500_codec_error u8500_acodec_allocate_da_slot(t_ab8500_codec_dest - output_device, - t_u8500_mode mode); -extern t_ab8500_codec_error u8500_acodec_unallocate_da_slot(t_ab8500_codec_dest - output_device, - t_u8500_mode mode); - -extern t_ab8500_codec_error u8500_acodec_set_src_power_cntrl(t_ab8500_codec_src - input_device, - t_u8500_bool_state - pwr_state); -extern t_ab8500_codec_error -u8500_acodec_set_dest_power_cntrl(t_ab8500_codec_dest output_device, - t_u8500_bool_state pwr_state); - -extern t_u8500_bool_state u8500_acodec_get_src_power_state(t_ab8500_codec_src - input_device); -extern t_u8500_bool_state u8500_acodec_get_dest_power_state(t_ab8500_codec_dest - output_device); -extern t_ab8500_codec_error -u8500_acodec_set_burst_mode_fifo(t_u8500_pmc_rendering_state fifo_state); - -extern t_ab8500_codec_error u8500_acodec_unsetuser(t_acodec_user user); -extern t_ab8500_codec_error u8500_acodec_setuser(t_acodec_user user); - -extern void codec_power_init(void); -extern void u8500_acodec_powerdown(void); - -//t_ab8500_codec_error acodec_msp_enable(t_touareg_codec_sample_frequency freq,int channels, t_acodec_user user); - -#define TRG_CODEC_ADDRESS_ON_SPI_BUS (0x0D) - -extern int ab8500_write(u8 block, u32 adr, u8 data); -extern int ab8500_read(u8 block, u32 adr); - -#if 0 -#define FUNC_ENTER() printk("\n -Enter : %s",__FUNCTION__) -#define FUNC_EXIT() printk("\n -Exit : %s",__FUNCTION__) -#else -#define FUNC_ENTER() -#define FUNC_EXIT() -#endif -#endif /*END OF HEADSER FILE */ diff --git a/drivers/misc/audio_io_dev/Kconfig b/drivers/misc/audio_io_dev/Kconfig deleted file mode 100644 index 57bb77172f7..00000000000 --- a/drivers/misc/audio_io_dev/Kconfig +++ /dev/null @@ -1,11 +0,0 @@ -# -# AB8500 Audio IO Device Driver configuration -# -config STE_AUDIO_IO_DEV - bool "AB8500 Audio IO device driver" - depends on ARCH_U8500 && AB8500_CORE && STM_MSP_I2S - default y - ---help--- - If you say Y here, you will enable the AB8500 Audio IO device driver. - - If unsure, say N. diff --git a/drivers/misc/audio_io_dev/Makefile b/drivers/misc/audio_io_dev/Makefile deleted file mode 100644 index 44b21fcc573..00000000000 --- a/drivers/misc/audio_io_dev/Makefile +++ /dev/null @@ -1,9 +0,0 @@ -# -# Makefile for AB8500 device drivers -# -obj-$(CONFIG_STE_AUDIO_IO_DEV) += ste_audio_io.o -ste_audio_io-objs := ste_audio_io_dev.o\ - ste_audio_io_core.o\ - ste_audio_io_func.o\ - ste_audio_io_hwctrl_common.o - diff --git a/drivers/misc/audio_io_dev/ste_audio_io_ab8500_reg_defs.h b/drivers/misc/audio_io_dev/ste_audio_io_ab8500_reg_defs.h deleted file mode 100644 index 1436430f7de..00000000000 --- a/drivers/misc/audio_io_dev/ste_audio_io_ab8500_reg_defs.h +++ /dev/null @@ -1,349 +0,0 @@ -/* - * Copyright (C) ST-Ericsson SA 2010 - * Author: Deepak KARDA/ deepak.karda@stericsson.com for ST-Ericsson - * License terms: GNU General Public License (GPL) version 2. - */ - - -#ifndef _AUDIOIO_REG_DEFS_H_ -#define _AUDIOIO_REG_DEFS_H_ - - - /* Registers */ -#define POWER_UP_CONTROL_REG 0x0D00 -#define SOFTWARE_RESET_REG 0x0D01 -#define DIGITAL_AD_CHANNELS_ENABLE_REG 0x0D02 -#define DIGITAL_DA_CHANNELS_ENABLE_REG 0x0D03 -#define LOW_POWER_HS_EAR_CONF_REG 0x0D04 -#define LINE_IN_MIC_CONF_REG 0x0D05 -#define DMIC_ENABLE_REG 0x0D06 -#define ADC_DAC_ENABLE_REG 0x0D07 -#define ANALOG_OUTPUT_ENABLE_REG 0x0D08 -#define DIGITAL_OUTPUT_ENABLE_REG 0x0D09 -#define MUTE_HS_EAR_REG 0x0D0A -#define SHORT_CIRCUIT_DISABLE_REG 0x0D0B -#define NCP_ENABLE_HS_AUTOSTART_REG 0x0D0C -#define ENVELOPE_THRESHOLD_REG 0x0D0D -#define ENVELOPE_DECAY_TIME_REG 0x0D0E -#define VIB_DRIVER_CONF_REG 0x0D0F -#define PWM_VIBNL_CONF_REG 0x0D10 -#define PWM_VIBPL_CONF_REG 0x0D11 -#define PWM_VIBNR_CONF_REG 0x0D12 -#define PWM_VIBPR_CONF_REG 0x0D13 -#define ANALOG_MIC1_GAIN_REG 0x0D14 -#define ANALOG_MIC2_GAIN_REG 0x0D15 -#define ANALOG_HS_GAIN_REG 0x0D16 -#define ANALOG_LINE_IN_GAIN_REG 0x0D17 -#define LINE_IN_TO_HSL_GAIN_REG 0x0D18 -#define LINE_IN_TO_HSR_GAIN_REG 0x0D19 -#define AD_FILTER_CONF_REG 0x0D1A -#define IF0_IF1_MASTER_CONF_REG 0x0D1B -#define IF0_CONF_REG 0x0D1C -#define TDM_IF_BYPASS_B_FIFO_REG 0x0D1D -#define IF1_CONF_REG 0x0D1E -#define AD_ALLOCATION_TO_SLOT0_1_REG 0x0D1F -#define AD_ALLOCATION_TO_SLOT2_3_REG 0x0D20 -#define AD_ALLOCATION_TO_SLOT4_5_REG 0x0D21 -#define AD_ALLOCATION_TO_SLOT6_7_REG 0x0D22 -#define AD_ALLOCATION_TO_SLOT8_9_REG 0x0D23 -#define AD_ALLOCATION_TO_SLOT10_11_REG 0x0D24 -#define AD_ALLOCATION_TO_SLOT12_13_REG 0x0D25 -#define AD_ALLOCATION_TO_SLOT14_15_REG 0x0D26 -#define AD_ALLOCATION_TO_SLOT16_17_REG 0x0D27 -#define AD_ALLOCATION_TO_SLOT18_19_REG 0x0D28 -#define AD_ALLOCATION_TO_SLOT20_21_REG 0x0D29 -#define AD_ALLOCATION_TO_SLOT22_23_REG 0x0D2A -#define AD_ALLOCATION_TO_SLOT24_25_REG 0x0D2B -#define AD_ALLOCATION_TO_SLOT26_27_REG 0x0D2C -#define AD_ALLOCATION_TO_SLOT28_29_REG 0x0D2D -#define AD_ALLOCATION_TO_SLOT30_31_REG 0x0D2E -#define AD_SLOT_0_TO_7_TRISTATE_REG 0x0D2F -#define AD_SLOT_8_TO_15_TRISTATE_REG 0x0D30 -#define AD_SLOT_16_TO_23_TRISTATE_REG 0x0D31 -#define AD_SLOT_24_TO_31_TRISTATE_REG 0x0D32 -#define SLOT_SELECTION_TO_DA1_REG 0x0D33 -#define SLOT_SELECTION_TO_DA2_REG 0x0D34 -#define SLOT_SELECTION_TO_DA3_REG 0x0D35 -#define SLOT_SELECTION_TO_DA4_REG 0x0D36 -#define SLOT_SELECTION_TO_DA5_REG 0x0D37 -#define SLOT_SELECTION_TO_DA6_REG 0x0D38 -#define SLOT_SELECTION_TO_DA7_REG 0x0D39 -#define SLOT_SELECTION_TO_DA8_REG 0x0D3A -#define CLASS_D_EMI_PARALLEL_CONF_REG 0x0D3B -#define CLASS_D_PATH_CONTROL_REG 0x0D3C -#define CLASS_D_DITHER_CONTROL_REG 0x0D3D -#define DMIC_DECIMATOR_FILTER_REG 0x0D3E -#define DIGITAL_MUXES_REG1 0x0D3F -#define DIGITAL_MUXES_REG2 0x0D40 -#define AD1_DIGITAL_GAIN_REG 0x0D41 -#define AD2_DIGITAL_GAIN_REG 0x0D42 -#define AD3_DIGITAL_GAIN_REG 0x0D43 -#define AD4_DIGITAL_GAIN_REG 0x0D44 -#define AD5_DIGITAL_GAIN_REG 0x0D45 -#define AD6_DIGITAL_GAIN_REG 0x0D46 -#define DA1_DIGITAL_GAIN_REG 0x0D47 -#define DA2_DIGITAL_GAIN_REG 0x0D48 -#define DA3_DIGITAL_GAIN_REG 0x0D49 -#define DA4_DIGITAL_GAIN_REG 0x0D4A -#define DA5_DIGITAL_GAIN_REG 0x0D4B -#define DA6_DIGITAL_GAIN_REG 0x0D4C -#define AD1_TO_HFL_DIGITAL_GAIN_REG 0x0D4D -#define AD2_TO_HFR_DIGITAL_GAIN_REG 0x0D4E -#define HSL_EAR_DIGITAL_GAIN_REG 0x0D4F -#define HSR_DIGITAL_GAIN_REG 0x0D50 -#define SIDETONE_FIR1_GAIN_REG 0x0D51 -#define SIDETONE_FIR2_GAIN_REG 0x0D52 -#define ANC_FILTER_CONTROL_REG 0x0D53 -#define ANC_WARPED_GAIN_REG 0x0D54 -#define ANC_FIR_OUTPUT_GAIN_REG 0x0D55 -#define ANC_IIR_OUTPUT_GAIN_REG 0x0D56 -#define ANC_FIR_COEFF_MSB_REG 0x0D57 -#define ANC_FIR_COEFF_LSB_REG 0x0D58 -#define ANC_IIR_COEFF_MSB_REG 0x0D59 -#define ANC_IIR_COEFF_LSB_REG 0x0D5A -#define ANC_WARP_DELAY_MSB_REG 0x0D5B -#define ANC_WARP_DELAY_LSB_REG 0x0D5C -#define ANC_FIR_PEAK_MSB_REG 0x0D5D -#define ANC_FIR_PEAK_LSB_REG 0x0D5E -#define ANC_IIR_PEAK_MSB_REG 0x0D5F -#define ANC_IIR_PEAK_LSB_REG 0x0D60 -#define SIDETONE_FIR_ADDR_REG 0x0D61 -#define SIDETONE_FIR_COEFF_MSB_REG 0x0D62 -#define SIDETONE_FIR_COEFF_LSB_REG 0x0D63 -#define FILTERS_CONTROL_REG 0x0D64 -#define IRQ_MASK_LSB_REG 0x0D65 -#define IRQ_STATUS_LSB_REG 0x0D66 -#define IRQ_MASK_MSB_REG 0x0D67 -#define IRQ_STATUS_MSB_REG 0x0D68 -#define BURST_FIFO_INT_CONTROL_REG 0x0D69 -#define BURST_FIFO_LENGTH_REG 0x0D6A -#define BURST_FIFO_CONTROL_REG 0x0D6B -#define BURST_FIFO_SWITCH_FRAME_REG 0x0D6C -#define BURST_FIFO_WAKE_UP_DELAY_REG 0x0D6D -#define BURST_FIFO_SAMPLES_REG 0x0D6E -#define REVISION_REG 0x0D6F - -/* POWER_UP_CONTROL_REG Masks */ -#define DEVICE_POWER_UP 0x80 -#define ANALOG_PARTS_POWER_UP 0x08 - -/* SOFTWARE_RESET_REG Masks */ -#define SW_RESET 0x80 - -/* DIGITAL_AD_CHANNELS_ENABLE_REG Masks */ -#define EN_AD1 0x80 -#define EN_AD2 0x80 -#define EN_AD3 0x20 -#define EN_AD4 0x20 -#define EN_AD5 0x08 -#define EN_AD6 0x04 - -/* DIGITAL_DA_CHANNELS_ENABLE_REG Masks */ -#define EN_DA1 0x80 -#define EN_DA2 0x40 -#define EN_DA3 0x20 -#define EN_DA4 0x10 -#define EN_DA5 0x08 -#define EN_DA6 0x04 - -/* LOW_POWER_HS_EAR_CONF_REG Masks */ -#define LOW_POWER_HS 0x80 -#define HS_DAC_DRIVER_LP 0x40 -#define HS_DAC_LP 0x20 -#define EAR_DAC_LP 0x10 - -/* LINE_IN_MIC_CONF_REG Masks */ -#define EN_MIC1 0x80 -#define EN_MIC2 0x40 -#define EN_LIN_IN_L 0x20 -#define EN_LIN_IN_R 0x10 -#define MUT_MIC1 0x08 -#define MUT_MIC2 0x04 -#define MUT_LIN_IN_L 0x02 -#define MUT_LIN_IN_R 0x01 - -/* DMIC_ENABLE_REG Masks */ -#define EN_DMIC1 0x80 -#define EN_DMIC2 0x40 -#define EN_DMIC3 0x20 -#define EN_DMIC4 0x10 -#define EN_DMIC5 0x08 -#define EN_DMIC6 0x04 - -/* ADC_DAC_ENABLE_REG Masks */ -#define SEL_MIC1B_CLR_MIC1A 0x80 -#define SEL_LINR_CLR_MIC2 0x40 -#define POWER_UP_HSL_DAC 0x20 -#define POWER_UP_HSR_DAC 0x10 -#define POWER_UP_ADC1 0x04 -#define POWER_UP_ADC3 0x02 -#define POWER_UP_ADC2 0x01 - -/* ANALOG_OUTPUT_ENABLE_REG and DIGITAL_OUTPUT_ENABLE_REG and - MUTE_HS_EAR_REG Masks */ -#define EN_EAR_DAC_MASK 0x04 -#define EN_HSL_DAC_MASK 0x02 -#define EN_HSR_DAC_MASK 0x01 -#define EN_EAR_MASK 0x40 -#define EN_HSL_MASK 0x20 -#define EN_HSR_MASK 0x10 -#define EN_HFL_MASK 0x08 -#define EN_HFR_MASK 0x04 -#define EN_VIBL_MASK 0x02 -#define EN_VIBR_MASK 0x01 - -/* SHORT_CIRCUIT_DISABLE_REG Masks */ -#define HS_SHORT_DIS 0x20 -#define HS_PULL_DOWN_EN 0x10 -#define HS_OSC_EN 0x04 -#define DIS_HS_FAD 0x02 -#define HS_ZCD_DIS 0x01 - -/* NCP_ENABLE_HS_AUTOSTART_REG Masks */ -#define EN_NEG_CP 0x80 -#define HS_AUTO_EN 0x01 - -/* ANALOG_MIC1_GAIN_REG and ANALOG_MIC1_GAIN_REG Masks */ -#define MIC_ANALOG_GAIN_MASK 0x1F - -/*ANALOG_HS_GAIN_REG and ANALOG_LINE_IN_GAIN_REG Masks*/ -#define L_ANALOG_GAIN_MASK 0xF0 -#define R_ANALOG_GAIN_MASK 0x0F - -/* IF0_IF1_MASTER_CONF_REG Masks */ -#define EN_MASTGEN 0x80 -#define BITCLK_OSR_N_64 0x02 -#define BITCLK_OSR_N_128 0x04 -#define BITCLK_OSR_N_256 0x06 -#define EN_FSYNC_BITCLK 0x01 -#define EN_FSYNC_BITCLK1 0x10 - -/* IF0_CONF_REG and IF1_CONF_REG Masks */ -#define FSYNC_FALLING_EDGE 0x40 -#define BITCLK_FALLING_EDGE 0x20 -#define IF_DELAYED 0x10 -#define I2S_LEFT_ALIGNED_FORMAT 0x08 -#define TDM_FORMAT 0x04 -#define WORD_LENGTH_32 0x03 -#define WORD_LENGTH_24 0x02 -#define WORD_LENGTH_20 0x01 -#define WORD_LENGTH_16 0x00 - -/* TDM_IF_BYPASS_B_FIFO_REG Masks */ -#define IF0_BFifoEn 0x01 -#define IF0_MASTER 0x02 - -#define IF1_MASTER 0x20 -/* - * AD_ALLOCATION_TO_SLOT0_1_REG and AD_ALLOCATION_TO_SLOT2_3_REG and - * AD_ALLOCATION_TO_SLOT4_5_REG and AD_ALLOCATION_TO_SLOT6_7_REG Masks - */ -#define DATA_FROM_AD_OUT1 0x00 -#define DATA_FROM_AD_OUT2 0x01 -#define DATA_FROM_AD_OUT3 0x02 -#define DATA_FROM_AD_OUT4 0x03 -#define DATA_FROM_AD_OUT5 0x04 -#define DATA_FROM_AD_OUT6 0x05 -#define DATA_FROM_AD_OUT7 0x06 -#define DATA_FROM_AD_OUT8 0x07 -#define TRISTATE 0x0C - -/* - * SLOT_SELECTION_TO_DA1_REG and SLOT_SELECTION_TO_DA2_REG and - * SLOT_SELECTION_TO_DA3_REG and SLOT_SELECTION_TO_DA4_REG Masks - * SLOT_SELECTION_TO_DA5_REG and SLOT_SELECTION_TO_DA6_REG Masks - */ -#define SLOT08_FOR_DA_PATH 0x08 -#define SLOT09_FOR_DA_PATH 0x09 -#define SLOT10_FOR_DA_PATH 0x0A -#define SLOT11_FOR_DA_PATH 0x0B -#define SLOT12_FOR_DA_PATH 0x0C -#define SLOT13_FOR_DA_PATH 0x0D -#define SLOT14_FOR_DA_PATH 0x0E -#define SLOT15_FOR_DA_PATH 0x0F - -/* DIGITAL_MUXES_REG1 Masks */ -#define DA1_TO_HSL 0x80 -#define DA2_TO_HSR 0x40 -#define SEL_DMIC1_FOR_AD_OUT1 0x20 -#define SEL_DMIC2_FOR_AD_OUT2 0x10 -#define SEL_DMIC3_FOR_AD_OUT3 0x08 -/*#define SEL_DMIC5_FOR_AD_OUT5 0x04*/ -/*#define SEL_DMIC6_FOR_AD_OUT6 0x02*/ -/*#define SEL_DMIC1_FOR_AD_OUT1 0x01*/ - -/* - * AD1_DIGITAL_GAIN_REG and AD2_DIGITAL_GAIN_REG & AD3_DIGITAL_GAIN_REG Masks - * AD4_DIGITAL_GAIN_REG and AD5_DIGITAL_GAIN_REG & AD6_DIGITAL_GAIN_REG Masks - * DA1_DIGITAL_GAIN_REG and DA2_DIGITAL_GAIN_REG & DA3_DIGITAL_GAIN_REG Masks - * DA4_DIGITAL_GAIN_REG and DA5_DIGITAL_GAIN_REG & DA6_DIGITAL_GAIN_REG Masks - */ -#define DIS_FADING 0x40 -#define DIGITAL_GAIN_MASK 0x3F - -/* - * HSL_EAR_DIGITAL_GAIN_REG and HSR_DIGITAL_GAIN_REG Masks - */ -#define FADE_SPEED_MASK 0xC0 -#define DIS_DIG_GAIN_FADING 0x10 -#define HS_DIGITAL_GAIN_MASK 0x0F - -/* FMRx/FMTx Masks */ -#define SLOT24_FOR_DA_PATH 0x18 -#define SEL_AD_OUT8_FROM_DAIN7 0x20 -#define SLOT25_FOR_DA_PATH 0x19 -#define SEL_AD_OUT6_FROM_DAIN8 0x20 -#define SEL_IF8_FROM_AD_OUT7 0x60 -#define SEL_IF17_FROM_AD_OUT7 0x60 -#define SEL_IF16_FROM_AD_OUT8 0x07 - -#define SEL_IF6_FROM_AD_OUT5 0x04 -#define SEL_IF7_FROM_AD_OUT6 0x50 -#define SEL_IF17_FROM_AD_OUT6 0x50 -#define SEL_AD_OUT5_FROM_DAIN7 0x20 - -/* Burst FIFO Control Masks */ -#define WAKEUP_SIGNAL_SAMPLE_COUNT 0x1B -#define BURST_FIFO_TRANSFER_LENGTH 0xC0 -#define BURST_FIFO_INF_RUNNING 0x01 -#define BURST_FIFO_INF_IN_MASTER_MODE 0x02 -#define PRE_BIT_CLK0_COUNT 0x1C -#define BURST_FIFO_WAKUP_DEALAY 0x70 - -/* Filter Control Masks */ -/* SideTone Masks */ -#define SIDETONE_DIGITAL_GAIN_MASK 0x1F -#define FIR1_FROMAD1 0x0C -#define FIR1_FROMAD2 0x03 -#define FIR1_FROMAD3 0x08 -#define FIR1_DAIN1 0x0C - -#define FIR2_FROMAD2 0x00 -#define FIR2_FROMAD3 0x01 -#define FIR2_FROMAD4 0x02 -#define FIR2_DAIN2 0x03 - -#define FIR2_ANDFIR1AD3 0x09 -#define FIR_FILTERCONTROL 0x04 -#define APPLY_FIR_COEFFS_MASK 0x80 - -/* IRQ status masks */ -#define NCP_READY_MASK 0x80 - -/* AB8500 power control Masks */ -#define AB8500_VER_1_0 0x10 -#define AB8500_VER_1_1 0x11 -#define CLK_32K_OUT2_DISABLE 0x01 -#define INACTIVE_RESET_AUDIO 0x02 -#define AB8500_REQ_SYS_CLK 0x08 -#define ENABLE_AUDIO_CLK_TO_AUDIO_BLK 0x10 -#define ENABLE_VINTCORE12_SUPPLY 0x04 -#define VAMIC2_ENABLE 0x10 -#define VAMIC1_ENABLE 0x08 -#define VDMIC_ENABLE 0x04 -#define VAUDIO_ENABLE 0x02 -#define GPIO27_DIR_OUTPUT 0x04 -#define GPIO29_DIR_OUTPUT 0x10 -#define GPIO31_DIR_OUTPUT 0x40 -#define GPIO35_DIR_OUTPUT 0X04 -#endif diff --git a/drivers/misc/audio_io_dev/ste_audio_io_core.c b/drivers/misc/audio_io_dev/ste_audio_io_core.c deleted file mode 100644 index 7f3636b9291..00000000000 --- a/drivers/misc/audio_io_dev/ste_audio_io_core.c +++ /dev/null @@ -1,1589 +0,0 @@ -/* - * Copyright (C) ST-Ericsson SA 2010 - * Author: Deepak KARDA/ deepak.karda@stericsson.com for ST-Ericsson - * License terms: GNU General Public License (GPL) version 2. - */ - -#include <linux/clk.h> -#include <linux/err.h> -#include <linux/slab.h> -#include <linux/regulator/consumer.h> -#include <mach/ste_audio_io_vibrator.h> -#include <mach/ste_audio.h> - -#include "ste_audio_io_core.h" -#include "ste_audio_io_hwctrl_common.h" -#include "ste_audio_io_ab8500_reg_defs.h" - -static struct audiocodec_context_t *ptr_audio_codec_cnxt; - -static struct clk *clk_ptr_msp1; -static struct clk *clk_ptr_msp3; -static struct clk *clk_ptr_audioclk; -static struct clk *clk_ptr_sysclk; -static struct clk *clk_ptr_ulpclk; - -static struct regulator *regulator_vdmic; -static struct regulator *regulator_vaudio; -static struct regulator *regulator_vamic1; -static struct regulator *regulator_vamic2; -struct regulator *regulator_avsource; - -static void ste_audio_io_init_transducer_cnxt(void); -static int ste_audio_io_core_init_regulators(void); -static int ste_audio_io_core_init_clocks(void); -static int ste_audio_io_core_free_regulators(void); -static int ste_audio_io_core_free_clocks(void); -static int ste_audio_io_enable_audio_clock(void); -static int ste_audio_io_disable_audio_clock(void); - -static struct transducer_context_t transducer_headset = { - .pwr_up_func = ste_audio_io_power_up_headset, - .pwr_down_func = ste_audio_io_power_down_headset, - .set_gain_func = ste_audio_io_set_headset_gain, - .get_gain_func = ste_audio_io_get_headset_gain, - .mute_func = ste_audio_io_mute_headset, - .unmute_func = ste_audio_io_unmute_headset, - .enable_fade_func = ste_audio_io_enable_fade_headset, - .disable_fade_func = ste_audio_io_disable_fade_headset, - .switch_to_burst_func = ste_audio_io_switch_to_burst_mode_headset, - .switch_to_normal_func = ste_audio_io_switch_to_normal_mode_headset -}; - -static struct transducer_context_t transducer_earpiece = { - .pwr_up_func = ste_audio_io_power_up_earpiece, - .pwr_down_func = ste_audio_io_power_down_earpiece, - .set_gain_func = ste_audio_io_set_earpiece_gain, - .get_gain_func = ste_audio_io_get_earpiece_gain, - .mute_func = ste_audio_io_mute_earpiece, - .unmute_func = ste_audio_io_unmute_earpiece, - .enable_fade_func = ste_audio_io_enable_fade_earpiece, - .disable_fade_func = ste_audio_io_disable_fade_earpiece -}; - -static struct transducer_context_t transducer_ihf = { - .pwr_up_func = ste_audio_io_power_up_ihf, - .pwr_down_func = ste_audio_io_power_down_ihf, - .set_gain_func = ste_audio_io_set_ihf_gain, - .get_gain_func = ste_audio_io_get_ihf_gain, - .mute_func = ste_audio_io_mute_ihf, - .unmute_func = ste_audio_io_unmute_ihf, - .enable_fade_func = ste_audio_io_enable_fade_ihf, - .disable_fade_func = ste_audio_io_disable_fade_ihf - -}; - -static struct transducer_context_t transducer_vibl = { - .pwr_up_func = ste_audio_io_power_up_vibl, - .pwr_down_func = ste_audio_io_power_down_vibl, - .set_gain_func = ste_audio_io_set_vibl_gain, - .get_gain_func = ste_audio_io_get_vibl_gain, - .mute_func = ste_audio_io_mute_vibl, - .unmute_func = ste_audio_io_unmute_vibl, - .enable_fade_func = ste_audio_io_enable_fade_vibl, - .disable_fade_func = ste_audio_io_disable_fade_vibl -}; - -static struct transducer_context_t transducer_vibr = { - .pwr_up_func = ste_audio_io_power_up_vibr, - .pwr_down_func = ste_audio_io_power_down_vibr, - .set_gain_func = ste_audio_io_set_vibr_gain, - .get_gain_func = ste_audio_io_get_vibr_gain, - .mute_func = ste_audio_io_mute_vibr, - .unmute_func = ste_audio_io_unmute_vibr, - .enable_fade_func = ste_audio_io_enable_fade_vibr, - .disable_fade_func = ste_audio_io_disable_fade_vibr -}; - -static struct transducer_context_t transducer_mic1a = { - .pwr_up_func = ste_audio_io_power_up_mic1a, - .pwr_down_func = ste_audio_io_power_down_mic1a, - .set_gain_func = ste_audio_io_set_mic1a_gain, - .get_gain_func = ste_audio_io_get_mic1a_gain, - .mute_func = ste_audio_io_mute_mic1a, - .unmute_func = ste_audio_io_unmute_mic1a, - .enable_fade_func = ste_audio_io_enable_fade_mic1a, - .disable_fade_func = ste_audio_io_disable_fade_mic1a -}; - -static struct transducer_context_t transducer_mic1b = { - .pwr_up_func = ste_audio_io_power_up_mic1b, - .pwr_down_func = ste_audio_io_power_down_mic1b, - .set_gain_func = ste_audio_io_set_mic1a_gain, - .get_gain_func = ste_audio_io_get_mic1a_gain, - .mute_func = ste_audio_io_mute_mic1a, - .unmute_func = ste_audio_io_unmute_mic1a, - .enable_fade_func = ste_audio_io_enable_fade_mic1a, - .disable_fade_func = ste_audio_io_disable_fade_mic1a, - .enable_loop = ste_audio_io_enable_loop_mic1b, - .disable_loop = ste_audio_io_disable_loop_mic1b -}; - -static struct transducer_context_t transducer_mic2 = { - .pwr_up_func = ste_audio_io_power_up_mic2, - .pwr_down_func = ste_audio_io_power_down_mic2, - .set_gain_func = ste_audio_io_set_mic2_gain, - .get_gain_func = ste_audio_io_get_mic2_gain, - .mute_func = ste_audio_io_mute_mic2, - .unmute_func = ste_audio_io_unmute_mic2, - .enable_fade_func = ste_audio_io_enable_fade_mic2, - .disable_fade_func = ste_audio_io_disable_fade_mic2 -}; - -static struct transducer_context_t transducer_lin = { - .pwr_up_func = ste_audio_io_power_up_lin, - .pwr_down_func = ste_audio_io_power_down_lin, - .set_gain_func = ste_audio_io_set_lin_gain, - .get_gain_func = ste_audio_io_get_lin_gain, - .mute_func = ste_audio_io_mute_lin, - .unmute_func = ste_audio_io_unmute_lin, - .enable_fade_func = ste_audio_io_enable_fade_lin, - .disable_fade_func = ste_audio_io_disable_fade_lin -}; - -static struct transducer_context_t transducer_dmic12 = { - .pwr_up_func = ste_audio_io_power_up_dmic12, - .pwr_down_func = ste_audio_io_power_down_dmic12, - .set_gain_func = ste_audio_io_set_dmic12_gain, - .get_gain_func = ste_audio_io_get_dmic12_gain, - .mute_func = ste_audio_io_mute_dmic12, - .unmute_func = ste_audio_io_unmute_dmic12, - .enable_fade_func = ste_audio_io_enable_fade_dmic12, - .disable_fade_func = ste_audio_io_disable_fade_dmic12, - .enable_loop = ste_audio_io_enable_loop_dmic12, - .disable_loop = ste_audio_io_disable_loop_dmic12 -}; - -static struct transducer_context_t transducer_dmic34 = { - .pwr_up_func = ste_audio_io_power_up_dmic34, - .pwr_down_func = ste_audio_io_power_down_dmic34, - .set_gain_func = ste_audio_io_set_dmic34_gain, - .get_gain_func = ste_audio_io_get_dmic34_gain, - .mute_func = ste_audio_io_mute_dmic34, - .unmute_func = ste_audio_io_unmute_dmic34, - .enable_fade_func = ste_audio_io_enable_fade_dmic34, - .disable_fade_func = ste_audio_io_disable_fade_dmic34 -}; - -static struct transducer_context_t transducer_dmic56 = { - .pwr_up_func = ste_audio_io_power_up_dmic56, - .pwr_down_func = ste_audio_io_power_down_dmic56, - .set_gain_func = ste_audio_io_set_dmic56_gain, - .get_gain_func = ste_audio_io_get_dmic56_gain, - .mute_func = ste_audio_io_mute_dmic56, - .unmute_func = ste_audio_io_unmute_dmic56, - .enable_fade_func = ste_audio_io_enable_fade_dmic56, - .disable_fade_func = ste_audio_io_disable_fade_dmic56, -}; - -static struct transducer_context_t transducer_fmrx = { - .pwr_up_func = ste_audio_io_power_up_fmrx, - .pwr_down_func = ste_audio_io_power_down_fmrx, -}; - -static struct transducer_context_t transducer_fmtx = { - .pwr_up_func = ste_audio_io_power_up_fmtx, - .pwr_down_func = ste_audio_io_power_down_fmtx, -}; - -static struct transducer_context_t transducer_bluetooth = { - .pwr_up_func = ste_audio_io_power_up_bluetooth, - .pwr_down_func = ste_audio_io_power_down_bluetooth, -}; - -bool ste_audio_io_core_is_ready_for_suspend() -{ - bool err = false; - mutex_lock(&(ptr_audio_codec_cnxt->audio_io_mutex)); - if ((!ptr_audio_codec_cnxt->power_client) && - (!ptr_audio_codec_cnxt->audio_codec_powerup)) - err = true; - mutex_unlock(&(ptr_audio_codec_cnxt->audio_io_mutex)); - return err; -} - -static int ste_audio_io_core_init_regulators() -{ - int error = 0; - regulator_vdmic = regulator_get(NULL, "v-dmic"); - if (IS_ERR(regulator_vdmic)) { - error = PTR_ERR(regulator_vdmic); - dev_err(ptr_audio_codec_cnxt->dev, - "Register error for v-dmic=%d", error); - return error; - } - regulator_vamic1 = regulator_get(NULL, "v-amic1"); - if (IS_ERR(regulator_vamic1)) { - error = PTR_ERR(regulator_vamic1); - dev_err(ptr_audio_codec_cnxt->dev, - "Register error for v-amic1=%d", error); - goto free_regulator_vdmic; - } - regulator_vamic2 = regulator_get(NULL, "v-amic2"); - if (IS_ERR(regulator_vamic2)) { - error = PTR_ERR(regulator_vamic2); - dev_err(ptr_audio_codec_cnxt->dev, - "Register error for v-amic2=%d", error); - goto free_regulator_vdmic_vamic1; - } - regulator_vaudio = regulator_get(NULL, "v-audio"); - if (IS_ERR(regulator_vaudio)) { - error = PTR_ERR(regulator_vaudio); - dev_err(ptr_audio_codec_cnxt->dev, - "Register error for v-audio=%d", error); - goto free_regulator_vdmic_vamic1_vamic2; - } - regulator_avsource = regulator_get(ptr_audio_codec_cnxt->dev, - "vcc-avswitch"); - if (IS_ERR(regulator_avsource)) { - error = PTR_ERR(regulator_avsource); - dev_err(ptr_audio_codec_cnxt->dev, - "Register error for vcc-avswitch =%d", error); - goto free_regulator_vdmic_vamic1_vamic2_vaudio; - } - return error; -free_regulator_vdmic_vamic1_vamic2_vaudio: - regulator_put(regulator_vaudio); -free_regulator_vdmic_vamic1_vamic2: - regulator_put(regulator_vamic2); -free_regulator_vdmic_vamic1: - regulator_put(regulator_vamic1); -free_regulator_vdmic: - regulator_put(regulator_vdmic); - return error; -} - -static int ste_audio_io_core_free_regulators() -{ - regulator_put(regulator_vdmic); - regulator_put(regulator_vamic1); - regulator_put(regulator_vamic2); - regulator_put(regulator_vaudio); - regulator_put(regulator_avsource); - return 0; -} - -static int ste_audio_io_core_init_clocks() -{ - int error = 0; - clk_ptr_sysclk = clk_get(ptr_audio_codec_cnxt->dev, "sysclk"); - if (IS_ERR(clk_ptr_sysclk)) { - error = -EFAULT; - dev_err(ptr_audio_codec_cnxt->dev, - "Sysclk get failed error = %d", error); - return error; - } - clk_ptr_ulpclk = clk_get(ptr_audio_codec_cnxt->dev, "ulpclk"); - if (IS_ERR(clk_ptr_ulpclk)) { - error = -EFAULT; - dev_err(ptr_audio_codec_cnxt->dev, - "Ulpclk get failed error = %d", error); - goto free_sysclk; - } - clk_ptr_audioclk = clk_get(ptr_audio_codec_cnxt->dev, "audioclk"); - if (IS_ERR(clk_ptr_audioclk)) { - error = -EFAULT; - dev_err(ptr_audio_codec_cnxt->dev, - "Audioclk get failed error = %d", error); - goto free_ulpclk; - } - return error; -free_ulpclk: - clk_put(clk_ptr_ulpclk); -free_sysclk: - clk_put(clk_ptr_sysclk); - return error; -} - -static int ste_audio_io_core_free_clocks() -{ - clk_put(clk_ptr_audioclk); - clk_put(clk_ptr_ulpclk); - clk_put(clk_ptr_sysclk); - return 0; -} - -int ste_audio_io_core_api_init_data(struct platform_device *pdev) -{ - struct ab8500 *ab8500 = dev_get_drvdata(pdev->dev.parent); - struct ab8500_platform_data *pdata = dev_get_platdata(ab8500->dev); - int error = 0; - ptr_audio_codec_cnxt = kmalloc(sizeof(struct audiocodec_context_t), - GFP_KERNEL); - if (!ptr_audio_codec_cnxt) - return -ENOMEM; - - memset(ptr_audio_codec_cnxt, 0, sizeof(*ptr_audio_codec_cnxt)); - ptr_audio_codec_cnxt->dev = &pdev->dev; - ptr_audio_codec_cnxt->clk_type = AUDIOIO_ULP_CLK; - mutex_init(&(ptr_audio_codec_cnxt->audio_io_mutex)); - - if (pdata) { - if (pdata->audio) { - ptr_audio_codec_cnxt->gpio_altf_init = - pdata->audio->ste_gpio_altf_init; - ptr_audio_codec_cnxt->gpio_altf_exit = - pdata->audio->ste_gpio_altf_exit; - } - } - - error = ste_audio_io_core_init_regulators(); - if (error) - goto free_audio_codec_cnxt; - error = ste_audio_io_core_init_clocks(); - if (error) - goto free_audio_codec_cnxt_regulators; - ste_audio_io_init_transducer_cnxt(); - return error; - -free_audio_codec_cnxt_regulators: - ste_audio_io_core_free_regulators(); -free_audio_codec_cnxt: - kfree(ptr_audio_codec_cnxt); - return error; -} - -static int ste_audio_io_enable_audio_clock() -{ - int error = 0; - if (ptr_audio_codec_cnxt->is_audio_clk_enabled) - return 0; - - if (AUDIOIO_ULP_CLK == ptr_audio_codec_cnxt->clk_type) { - error = clk_set_parent(clk_ptr_audioclk, clk_ptr_ulpclk); - if (error) { - dev_err(ptr_audio_codec_cnxt->dev, - "Setting Ulpclk as parent failed error = %d", error); - return error; - } - } else { - error = clk_set_parent(clk_ptr_audioclk, clk_ptr_sysclk); - if (error) { - dev_err(ptr_audio_codec_cnxt->dev, - "Setting Sysclk as parent failed error = %d", error); - return error; - } - } - error = clk_enable(clk_ptr_audioclk); - if (error) { - dev_err(ptr_audio_codec_cnxt->dev, - "Audioclk enable failed error = %d", error); - return error; - } - ptr_audio_codec_cnxt->is_audio_clk_enabled = 1; - return error; -} - -static int ste_audio_io_disable_audio_clock() -{ - if (!ptr_audio_codec_cnxt->is_audio_clk_enabled) - return 0; - clk_disable(clk_ptr_audioclk); - ptr_audio_codec_cnxt->is_audio_clk_enabled = 0; - return 0; -} - -static void ste_audio_io_init_transducer_cnxt(void) -{ - ptr_audio_codec_cnxt->transducer[HS_CH] = &transducer_headset; - ptr_audio_codec_cnxt->transducer[EAR_CH] = &transducer_earpiece; - ptr_audio_codec_cnxt->transducer[IHF_CH] = &transducer_ihf; - ptr_audio_codec_cnxt->transducer[VIBL_CH] = &transducer_vibl; - ptr_audio_codec_cnxt->transducer[VIBR_CH] = &transducer_vibr; - ptr_audio_codec_cnxt->transducer[MIC1A_CH] = &transducer_mic1a; - ptr_audio_codec_cnxt->transducer[MIC1B_CH] = &transducer_mic1b; - ptr_audio_codec_cnxt->transducer[MIC2_CH] = &transducer_mic2; - ptr_audio_codec_cnxt->transducer[LIN_CH] = &transducer_lin; - ptr_audio_codec_cnxt->transducer[DMIC12_CH] = &transducer_dmic12; - ptr_audio_codec_cnxt->transducer[DMIC34_CH] = &transducer_dmic34; - ptr_audio_codec_cnxt->transducer[DMIC56_CH] = &transducer_dmic56; - ptr_audio_codec_cnxt->transducer[FMRX_CH] = &transducer_fmrx; - ptr_audio_codec_cnxt->transducer[FMTX_CH] = &transducer_fmtx; - ptr_audio_codec_cnxt->transducer[BLUETOOTH_CH] = &transducer_bluetooth; -} - -void ste_audio_io_core_api_free_data(void) -{ - ste_audio_io_core_free_regulators(); - ste_audio_io_core_free_clocks(); - kfree(ptr_audio_codec_cnxt); -} - -static int ste_audio_io_core_api_enable_regulators(int channel_type) -{ - int error = 0; - - switch (channel_type) { - case EAR_CH: - case HS_CH: - case IHF_CH: - case VIBL_CH: - case VIBR_CH: - case LIN_CH: - case FMRX_CH: - case FMTX_CH: - case BLUETOOTH_CH: - /* vaduio already enabled - no additional regualtor required */ - break; - - case MIC1A_CH: - case MIC1B_CH: - error = regulator_enable(regulator_vamic1); - if (error) - dev_err(ptr_audio_codec_cnxt->dev, - "unable to enable regulator vamic1 error = %d", error); - break; - - case MIC2_CH: - error = regulator_enable(regulator_vamic2); - if (error) - dev_err(ptr_audio_codec_cnxt->dev, - "unable to enable regulator vamic2 error = %d", error); - break; - - case DMIC12_CH: - case DMIC34_CH: - case DMIC56_CH: - case MULTI_MIC_CH: - error = regulator_enable(regulator_vdmic); - if (error) - dev_err(ptr_audio_codec_cnxt->dev, - "unable to enable regulator vdmic error = %d", error); - } - return error; -} - -static int ste_audio_io_core_api_disable_regulators(int channel_type) -{ - int error = 0; - - switch (channel_type) { - case EAR_CH: - case HS_CH: - case IHF_CH: - case VIBL_CH: - case VIBR_CH: - case LIN_CH: - case FMRX_CH: - case FMTX_CH: - case BLUETOOTH_CH: - /* no need to disable separately*/ - break; - - case MIC1A_CH: - case MIC1B_CH: - error = regulator_disable(regulator_vamic1); - if (error) - dev_err(ptr_audio_codec_cnxt->dev, - "unable to disable regulator vamic1 error = %d", error); - break; - - case MIC2_CH: - error = regulator_disable(regulator_vamic2); - if (error) - dev_err(ptr_audio_codec_cnxt->dev, - "unable to disable regulator vamic2 error = %d", error); - break; - - case DMIC12_CH: - case DMIC34_CH: - case DMIC56_CH: - case MULTI_MIC_CH: - error = regulator_disable(regulator_vdmic); - if (error) - dev_err(ptr_audio_codec_cnxt->dev, - "unable to disable regulator vdmic error = %d", error); - } - return error; -} - -int ste_audio_io_core_api_powerup_audiocodec(int power_client) -{ - int error = 0; - int acodec_device_id; - __u8 data, old_data; - /* aquire mutex */ - mutex_lock(&(ptr_audio_codec_cnxt->audio_io_mutex)); - - acodec_device_id = abx500_get_chip_id(&ste_audio_io_device->dev); - - /* - * If there is no power client registered, power up - * common audio blocks for audio and vibrator - */ - if (!ptr_audio_codec_cnxt->power_client) { - error = ste_audio_io_enable_audio_clock(); - if (error) { - dev_err(ptr_audio_codec_cnxt->dev, - "Unable to enable audio clock = %d", error); - goto err_cleanup; - } - old_data = HW_REG_READ(AB8500_CTRL3_REG); - - /* Enable 32 Khz clock signal on Clk32KOut2 ball */ - data = (~CLK_32K_OUT2_DISABLE) & old_data; - error = HW_REG_WRITE(AB8500_CTRL3_REG, data); - if (error) { - dev_err(ptr_audio_codec_cnxt->dev, - "enabling 32KHz clock error = %d", error); - goto err_cleanup; - } - data = INACTIVE_RESET_AUDIO | old_data; - error = HW_REG_WRITE(AB8500_CTRL3_REG, data); - if (error) { - dev_err(ptr_audio_codec_cnxt->dev, - "deactivate audio codec reset error = %d", error); - goto err_cleanup; - } - regulator_enable(regulator_vaudio); - - old_data = HW_REG_READ(AB8500_GPIO_DIR4_REG); - data = (GPIO27_DIR_OUTPUT | GPIO29_DIR_OUTPUT | - GPIO31_DIR_OUTPUT) | old_data; - error = HW_REG_WRITE(AB8500_GPIO_DIR4_REG, data); - if (error) { - dev_err(ptr_audio_codec_cnxt->dev, - "setting gpio dir4 error = %d", error); - goto err_cleanup; - } - error = HW_REG_WRITE(SOFTWARE_RESET_REG, SW_RESET); - if (error != 0) { - dev_err(ptr_audio_codec_cnxt->dev, - "Software reset error=%d", error); - goto err_cleanup; - } - - error = HW_ACODEC_MODIFY_WRITE(POWER_UP_CONTROL_REG, - (DEVICE_POWER_UP|ANALOG_PARTS_POWER_UP), 0); - if (error != 0) { - dev_err(ptr_audio_codec_cnxt->dev, - "Device Power Up, error=%d", error); - goto err_cleanup; - } - } - /* Save information that given client already powered up audio block */ - ptr_audio_codec_cnxt->power_client |= power_client; - - /* If audio block requested power up, turn on additional audio blocks */ - if (power_client == STE_AUDIOIO_POWER_AUDIO) { - if (!ptr_audio_codec_cnxt->audio_codec_powerup) { - clk_ptr_msp1 = clk_get_sys("msp1", NULL); - if (!IS_ERR(clk_ptr_msp1)) { - error = clk_enable(clk_ptr_msp1); - if (error) - goto err_cleanup; - } else { - error = -EFAULT; - goto err_cleanup; - } - - if (AB8500_REV_20 <= acodec_device_id) { - clk_ptr_msp3 = clk_get_sys("msp3", NULL); - if (!IS_ERR(clk_ptr_msp3)) { - error = clk_enable(clk_ptr_msp3); - if (error) - goto err_cleanup; - } else { - error = -EFAULT; - goto err_cleanup; - } - } - - if (ptr_audio_codec_cnxt->gpio_altf_init) { - error = ptr_audio_codec_cnxt->gpio_altf_init(); - if (error) - goto err_cleanup; - } - - error = HW_ACODEC_MODIFY_WRITE(IF0_IF1_MASTER_CONF_REG, - EN_MASTGEN, 0); - if (error != 0) { - dev_err(ptr_audio_codec_cnxt->dev, - "Enable Master Generator, error=%d", error); - goto err_cleanup; - } - - error = HW_ACODEC_MODIFY_WRITE(TDM_IF_BYPASS_B_FIFO_REG, - IF0_MASTER, 0); - if (error != 0) { - dev_err(ptr_audio_codec_cnxt->dev, - "IF0: Master Mode, error=%d", error); - goto err_cleanup; - } - - /* Configuring IF0 */ - - error = HW_ACODEC_MODIFY_WRITE(IF0_IF1_MASTER_CONF_REG, - BITCLK_OSR_N_256, 0); - if (error != 0) { - dev_err(ptr_audio_codec_cnxt->dev, - "IF0: Enable FsBitClk & FSync error=%d", error); - goto err_cleanup; - } - - error = HW_REG_WRITE(IF0_CONF_REG, IF_DELAYED - | TDM_FORMAT | WORD_LENGTH_20); - if (error != 0) { - dev_err(ptr_audio_codec_cnxt->dev, - "IF0: TDM Format 16 Bits word length, error=%d", - error); - goto err_cleanup; - } - } - ptr_audio_codec_cnxt->audio_codec_powerup++; - } -err_cleanup: - /* release mutex */ - mutex_unlock(&(ptr_audio_codec_cnxt->audio_io_mutex)); - return error; -} - -int ste_audio_io_core_api_powerdown_audiocodec(int power_client) -{ - int error = 0; - /* aquire mutex */ - mutex_lock(&(ptr_audio_codec_cnxt->audio_io_mutex)); - - /* Update power client status */ - if (power_client == STE_AUDIOIO_POWER_AUDIO) { - ptr_audio_codec_cnxt->audio_codec_powerup--; - if (!ptr_audio_codec_cnxt->audio_codec_powerup) { - ptr_audio_codec_cnxt->power_client &= ~power_client; - ste_audio_io_disable_audio_clock(); - clk_disable(clk_ptr_msp1); - clk_put(clk_ptr_msp1); - if (AB8500_REV_20 <= - abx500_get_chip_id(&ste_audio_io_device->dev)) { - clk_disable(clk_ptr_msp3); - clk_put(clk_ptr_msp3); - } - - if (ptr_audio_codec_cnxt->gpio_altf_exit) { - error = ptr_audio_codec_cnxt->gpio_altf_exit(); - if (error) - goto err_cleanup; - } - } - } else - ptr_audio_codec_cnxt->power_client &= ~power_client; - - /* If no power client registered, power down audio block */ - if (!ptr_audio_codec_cnxt->power_client) { - regulator_disable(regulator_vaudio); - ste_audio_io_disable_audio_clock(); - if (error != 0) { - dev_err(ptr_audio_codec_cnxt->dev, - "Device Power Down and Analog Parts Power Down error = %d ", - error); - goto err_cleanup; - } - } - -err_cleanup: - /* release mutex */ - mutex_unlock(&(ptr_audio_codec_cnxt->audio_io_mutex)); - return error; -} -/** - * @brief Read from AB8500 device - * @dev_data Pointer to the structure __audioio_data - * @return 0 - */ - -int ste_audio_io_core_api_access_read(struct audioio_data_t *dev_data) -{ - int reg; - if (NULL == dev_data) - return -EFAULT; - reg = (dev_data->block<<8)|(dev_data->addr&0xff); - dev_data->data = HW_REG_READ(reg); - return 0; -} -/** - * @brief Write on AB8500 device - * @dev_data Pointer to the structure __audioio_data - * @return 0 on success otherwise negative error code - */ -int ste_audio_io_core_api_access_write(struct audioio_data_t *dev_data) -{ - int retval, reg; - if (NULL == dev_data) - return -EFAULT; - - reg = (dev_data->block<<8)|(dev_data->addr&0xff); - retval = HW_REG_WRITE(reg, dev_data->data); - - return retval; -} -/** - * @brief Store the power and mute status of transducer - * @channel_index Channel-index of transducer - * @ptr Array storing the status - * @value status being stored - * @return 0 on success otherwise negative error code - */ - -void ste_audio_io_core_api_store_data(enum AUDIOIO_CH_INDEX channel_index, - int *ptr, int value) -{ - if (channel_index & e_CHANNEL_1) - ptr[0] = value; - - if (channel_index & e_CHANNEL_2) - ptr[1] = value; - - if (channel_index & e_CHANNEL_3) - ptr[2] = value; - - if (channel_index & e_CHANNEL_4) - ptr[3] = value; -} -/** - * @brief Get power or mute status on a specific channel - * @channel_index Channel-index of the transducer - * @ptr Pointer to is_power_up array or is_muted array - * @return status of control switch - */ -enum AUDIOIO_COMMON_SWITCH ste_audio_io_core_api_get_status( - enum AUDIOIO_CH_INDEX channel_index, int *ptr) -{ - if (channel_index & e_CHANNEL_1) { - if (AUDIOIO_TRUE == ptr[0]) - return AUDIOIO_COMMON_ON; - else - return AUDIOIO_COMMON_OFF; - } - - if (channel_index & e_CHANNEL_2) { - if (AUDIOIO_TRUE == ptr[1]) - return AUDIOIO_COMMON_ON; - else - return AUDIOIO_COMMON_OFF; - } - - if (channel_index & e_CHANNEL_3) { - if (AUDIOIO_TRUE == ptr[2]) - return AUDIOIO_COMMON_ON; - else - return AUDIOIO_COMMON_OFF; - } - - if (channel_index & e_CHANNEL_4) { - if (AUDIOIO_TRUE == ptr[3]) - return AUDIOIO_COMMON_ON; - else - return AUDIOIO_COMMON_OFF; - } - return 0; -} - -int ste_audio_io_core_api_acodec_power_control(struct audioio_acodec_pwr_ctrl_t - *audio_acodec_pwr_ctrl) -{ - int error = 0; - if (audio_acodec_pwr_ctrl->ctrl_switch == AUDIOIO_COMMON_ON) - error = ste_audio_io_core_api_powerup_audiocodec( - STE_AUDIOIO_POWER_AUDIO); - else - error = ste_audio_io_core_api_powerdown_audiocodec( - STE_AUDIOIO_POWER_AUDIO); - - return error; -} -/** - * @brief Control for powering on/off HW components on a specific channel - * @pwr_ctrl Pointer to the structure __audioio_pwr_ctrl - * @return 0 on success otherwise negative error code - */ -int ste_audio_io_core_api_power_control_transducer( - struct audioio_pwr_ctrl_t *pwr_ctrl) -{ - int error = 0; - struct transducer_context_t *ptr = NULL; - enum AUDIOIO_CH_INDEX channel_index; - - channel_index = pwr_ctrl->channel_index; - - if ((pwr_ctrl->channel_type < FIRST_CH) - || (pwr_ctrl->channel_type > LAST_CH)) - return -EINVAL; - - ptr = ptr_audio_codec_cnxt->transducer[pwr_ctrl->channel_type]; - - /* aquire mutex */ - mutex_lock(&(ptr_audio_codec_cnxt->audio_io_mutex)); - - if (AUDIOIO_COMMON_ON == pwr_ctrl->ctrl_switch) { - if (ptr->pwr_up_func) { - error = ste_audio_io_core_api_enable_regulators( - pwr_ctrl->channel_type); - if (error) - goto free_mutex; - - error = ptr->pwr_up_func(pwr_ctrl->channel_index, - ptr_audio_codec_cnxt->dev); - if (0 == error) { - ste_audio_io_core_api_store_data(channel_index, - ptr->is_power_up, AUDIOIO_TRUE); - } - } - } else { - if (ptr->pwr_down_func) { - error = ptr->pwr_down_func(pwr_ctrl->channel_index, - ptr_audio_codec_cnxt->dev); - if (0 == error) { - ste_audio_io_core_api_store_data(channel_index, - ptr->is_power_up, AUDIOIO_FALSE); - } - error = ste_audio_io_core_api_disable_regulators( - pwr_ctrl->channel_type); - } - } - -free_mutex: - /* release mutex */ - mutex_unlock(&(ptr_audio_codec_cnxt->audio_io_mutex)); - - return error; -} -/** - * @brief Query power state of HW path on specified channel - * @pwr_ctrl Pointer to the structure __audioio_pwr_ctrl - * @return 0 on success otherwise negative error code - */ - -int ste_audio_io_core_api_power_status_transducer( - struct audioio_pwr_ctrl_t *pwr_ctrl) -{ - - struct transducer_context_t *ptr = NULL; - enum AUDIOIO_CH_INDEX channel_index; - - channel_index = pwr_ctrl->channel_index; - - if ((pwr_ctrl->channel_type < FIRST_CH) - || (pwr_ctrl->channel_type > LAST_CH)) - return -EINVAL; - - ptr = ptr_audio_codec_cnxt->transducer[pwr_ctrl->channel_type]; - - - /* aquire mutex */ - mutex_lock(&(ptr_audio_codec_cnxt->audio_io_mutex)); - - - pwr_ctrl->ctrl_switch = ste_audio_io_core_api_get_status(channel_index, - ptr->is_power_up); - - /* release mutex */ - mutex_unlock(&(ptr_audio_codec_cnxt->audio_io_mutex)); - - return 0; - -} - -int ste_audio_io_core_api_loop_control(struct audioio_loop_ctrl_t *loop_ctrl) -{ - int error = 0; - struct transducer_context_t *ptr = NULL; - - if ((loop_ctrl->channel_type < FIRST_CH) - || (loop_ctrl->channel_type > LAST_CH)) - return -EINVAL; - - ptr = ptr_audio_codec_cnxt->transducer[loop_ctrl->channel_type]; - - mutex_lock(&(ptr_audio_codec_cnxt->audio_io_mutex)); - - if (AUDIOIO_COMMON_ON == loop_ctrl->ctrl_switch) { - if (ptr->enable_loop) { - error = ptr->enable_loop(loop_ctrl->channel_index, - loop_ctrl->hw_loop, - loop_ctrl->loop_gain, - ptr_audio_codec_cnxt->dev, - ptr_audio_codec_cnxt->transducer); - if (error) - dev_err(ptr_audio_codec_cnxt->dev, - "Loop enable failed for hw loop = %d, error = %d ", - (int)loop_ctrl->hw_loop, error); - } else { - error = -EFAULT; - dev_err(ptr_audio_codec_cnxt->dev, - "Hw Loop enable does not exist for channel= %d, error = %d ", - (int)loop_ctrl->channel_type, error); - } - } else { - if (ptr->disable_loop) { - error = ptr->disable_loop(loop_ctrl->channel_index, - loop_ctrl->hw_loop, - ptr_audio_codec_cnxt->dev, - ptr_audio_codec_cnxt->transducer); - if (error) - dev_err(ptr_audio_codec_cnxt->dev, - "Loop disable failed for hw loop = %d, error = %d ", - (int)loop_ctrl->hw_loop, error); - } else { - error = -EFAULT; - dev_err(ptr_audio_codec_cnxt->dev, - "Hw Loop disable does not exist for channel= %d, error = %d ", - (int)loop_ctrl->channel_type, error); - } - } - - mutex_unlock(&(ptr_audio_codec_cnxt->audio_io_mutex)); - - return error; -} - -int ste_audio_io_core_api_loop_status(struct audioio_loop_ctrl_t *loop_ctrl) -{ - return 0; -} - -int ste_audio_io_core_api_get_transducer_gain_capability( - struct audioio_get_gain_t *get_gain) -{ - return 0; -} - -int ste_audio_io_core_api_gain_capabilities_loop( - struct audioio_gain_loop_t *gain_loop) -{ - if ((gain_loop->channel_type < FIRST_CH) - || (gain_loop->channel_type > LAST_CH)) - return -EINVAL; - - mutex_lock(&(ptr_audio_codec_cnxt->audio_io_mutex)); - - gain_loop->num_loop = - transducer_max_no_Of_supported_loops[gain_loop->channel_type]; - gain_loop->max_gains = max_no_of_loop_gains[gain_loop->channel_type]; - mutex_unlock(&(ptr_audio_codec_cnxt->audio_io_mutex)); - return 0; -} - -int ste_audio_io_core_api_supported_loops( - struct audioio_support_loop_t *support_loop) -{ - if ((support_loop->channel_type < FIRST_CH) - || (support_loop->channel_type > LAST_CH)) - return -EINVAL; - - mutex_lock(&(ptr_audio_codec_cnxt->audio_io_mutex)); - support_loop->spprtd_loop_index = - transducer_no_Of_supported_loop_indexes[support_loop->channel_type]; - mutex_unlock(&(ptr_audio_codec_cnxt->audio_io_mutex)); - return 0; -} - -int ste_audio_io_core_api_gain_descriptor_transducer( - struct audioio_gain_desc_trnsdr_t *gdesc_trnsdr) -{ - return 0; -} -/** - * @brief Control for muting a specific channel in HW - * @mute_trnsdr Pointer to the structure __audioio_mute_trnsdr - * @return 0 on success otherwise negative error code - */ -int ste_audio_io_core_api_mute_control_transducer( - struct audioio_mute_trnsdr_t *mute_trnsdr) -{ - int error = 0; - struct transducer_context_t *ptr = NULL; - enum AUDIOIO_CH_INDEX channel_index; - - channel_index = mute_trnsdr->channel_index; - - if ((mute_trnsdr->channel_type < FIRST_CH) - || (mute_trnsdr->channel_type > LAST_CH)) - return -EINVAL; - - ptr = ptr_audio_codec_cnxt->transducer[mute_trnsdr->channel_type]; - - /* aquire mutex */ - mutex_lock(&(ptr_audio_codec_cnxt->audio_io_mutex)); - - if (AUDIOIO_COMMON_ON == mute_trnsdr->ctrl_switch) { - if (ptr->mute_func) { - error = ptr->mute_func(mute_trnsdr->channel_index, - ptr_audio_codec_cnxt->dev); - if (0 == error) { - ste_audio_io_core_api_store_data(channel_index , - ptr->is_muted, AUDIOIO_TRUE); - } - } - } else { - if (ptr->unmute_func) { - if (0 == ptr->unmute_func(channel_index, ptr->gain, - ptr_audio_codec_cnxt->dev)) { - ste_audio_io_core_api_store_data(channel_index, - ptr->is_muted, AUDIOIO_FALSE); - } - } - } - - /* release mutex */ - mutex_unlock(&(ptr_audio_codec_cnxt->audio_io_mutex)); - - return error; -} -/** - * @brief Query state of mute on specified channel - * @mute_trnsdr Pointer to the structure __audioio_mute_trnsdr - * @return 0 on success otherwise negative error code - */ -int ste_audio_io_core_api_mute_status_transducer( - struct audioio_mute_trnsdr_t *mute_trnsdr) -{ - struct transducer_context_t *ptr = NULL; - enum AUDIOIO_CH_INDEX channel_index; - - channel_index = mute_trnsdr->channel_index; - - if ((mute_trnsdr->channel_type < FIRST_CH) - || (mute_trnsdr->channel_type > LAST_CH)) - return -EINVAL; - - ptr = ptr_audio_codec_cnxt->transducer[mute_trnsdr->channel_type]; - - /* aquire mutex */ - mutex_lock(&(ptr_audio_codec_cnxt->audio_io_mutex)); - - mute_trnsdr->ctrl_switch = ste_audio_io_core_api_get_status( - channel_index, ptr->is_muted); - /* release mutex */ - mutex_unlock(&(ptr_audio_codec_cnxt->audio_io_mutex)); - - return 0; -} -/** - * @brief control the fading on the transducer called on. - * @fade_ctrl Pointer to the structure __audioio_fade_ctrl - * @return 0 on success otherwise negative error code - */ - -int ste_audio_io_core_api_fading_control(struct audioio_fade_ctrl_t *fade_ctrl) -{ - int error = 0; - struct transducer_context_t *ptr = NULL; - - if ((fade_ctrl->channel_type < FIRST_CH) - || (fade_ctrl->channel_type > LAST_CH)) - return -EINVAL; - ptr = ptr_audio_codec_cnxt->transducer[fade_ctrl->channel_type]; - - /* aquire mutex */ - mutex_lock(&(ptr_audio_codec_cnxt->audio_io_mutex)); - - if (AUDIOIO_COMMON_ON == fade_ctrl->ctrl_switch) - error = ptr->enable_fade_func(ptr_audio_codec_cnxt->dev); - - else - error = ptr->disable_fade_func(ptr_audio_codec_cnxt->dev); - - - /* release mutex */ - mutex_unlock(&(ptr_audio_codec_cnxt->audio_io_mutex)); - - return error; -} -/** - * @brief control the low power mode of headset. - * @burst_ctrl Pointer to the structure __audioio_burst_ctrl - * @return 0 on success otherwise negative error code - */ - -int ste_audio_io_core_api_burstmode_control( - struct audioio_burst_ctrl_t *burst_ctrl) -{ - int error = 0; - struct transducer_context_t *ptr = NULL; - int burst_fifo_switch_frame; - - burst_fifo_switch_frame = burst_ctrl->burst_fifo_switch_frame; - - if ((burst_ctrl->channel_type < FIRST_CH) - || (burst_ctrl->channel_type > LAST_CH)) - return -EINVAL; - ptr = ptr_audio_codec_cnxt->transducer[burst_ctrl->channel_type]; - - /* aquire mutex */ - mutex_lock(&(ptr_audio_codec_cnxt->audio_io_mutex)); - - if (AUDIOIO_COMMON_ON == burst_ctrl->ctrl_switch) { - if (ptr->switch_to_burst_func) - error = ptr->switch_to_burst_func( - burst_fifo_switch_frame, - ptr_audio_codec_cnxt->dev); - } else - if (ptr->switch_to_normal_func) - error = ptr->switch_to_normal_func( - ptr_audio_codec_cnxt->dev); - /* release mutex */ - mutex_unlock(&(ptr_audio_codec_cnxt->audio_io_mutex)); - - return error; -} -/** - * @brief Convert channel index to array index - * @channel_index Channel Index of transducer - * @return Array index corresponding to the specified channel index - */ - -int convert_channel_index_to_array_index(enum AUDIOIO_CH_INDEX channel_index) -{ - if (channel_index & e_CHANNEL_1) - return 0; - else if (channel_index & e_CHANNEL_2) - return 1; - else if (channel_index & e_CHANNEL_3) - return 2; - else - return 3; -} - -/** - * @brief Set individual gain along the HW path of a specified channel - * @gctrl_trnsdr Pointer to the structure __audioio_gain_ctrl_trnsdr - * @return 0 on success otherwise negative error code - */ - -int ste_audio_io_core_api_gain_control_transducer( - struct audioio_gain_ctrl_trnsdr_t *gctrl_trnsdr) -{ - struct transducer_context_t *ptr = NULL; - enum AUDIOIO_CH_INDEX channel_index; - int ch_array_index; - u16 gain_index; - int gain_value; - u32 linear; - int channel_type; - int error; - int min_gain, max_gain, gain; - - if ((gctrl_trnsdr->channel_type < FIRST_CH) - || (gctrl_trnsdr->channel_type > LAST_CH)) - return -EINVAL; - - if (gctrl_trnsdr->gain_index >= MAX_NO_GAINS) - return -EINVAL; - - ptr = ptr_audio_codec_cnxt->transducer[gctrl_trnsdr->channel_type]; - channel_index = gctrl_trnsdr->channel_index; - gain_index = gctrl_trnsdr->gain_index; - gain_value = gctrl_trnsdr->gain_value; - linear = gctrl_trnsdr->linear; - channel_type = gctrl_trnsdr->channel_type; - - ch_array_index = convert_channel_index_to_array_index(channel_index); - if (linear) { /* Gain is in the range 0 to 100 */ - min_gain = gain_descriptor[channel_type]\ - [ch_array_index][gain_index].min_gain; - max_gain = gain_descriptor[channel_type]\ - [ch_array_index][gain_index].max_gain; - - gain = ((gain_value * (max_gain - min_gain))/100) + min_gain; - } else - /* Convert to db */ - gain = gain_value/100; - - gain_value = gain; - -#if 1 - if (gain_index >= transducer_no_of_gains[channel_type]) - return -EINVAL; - - if (gain_value < gain_descriptor[channel_type]\ - [ch_array_index][gain_index].min_gain) - return -EINVAL; - - if (gain_value > gain_descriptor[channel_type]\ - [ch_array_index][gain_index].max_gain) - return -EINVAL; - -#endif - - /* aquire mutex */ - mutex_lock(&(ptr_audio_codec_cnxt->audio_io_mutex)); - - error = ptr->set_gain_func(channel_index, - gain_index, gain_value, linear, - ptr_audio_codec_cnxt->dev); - if (0 == error) - ste_audio_io_core_api_store_data(channel_index , - ptr->gain, gain_value); - - - /* release mutex */ - mutex_unlock(&(ptr_audio_codec_cnxt->audio_io_mutex)); - - return error; -} -/** - * @brief Get individual gain along the HW path of a specified channel - * @gctrl_trnsdr Pointer to the structure __audioio_gain_ctrl_trnsdr - * @return 0 on success otherwise negative error code - */ - - -int ste_audio_io_core_api_gain_query_transducer( - struct audioio_gain_ctrl_trnsdr_t *gctrl_trnsdr) -{ - struct transducer_context_t *ptr = NULL; - enum AUDIOIO_CH_INDEX channel_index; - u16 gain_index; - u32 linear; - int left_volume, right_volume; - int max_gain, min_gain; - int ch_array_index; - - if ((gctrl_trnsdr->channel_type < FIRST_CH) - || (gctrl_trnsdr->channel_type > LAST_CH)) - return -EINVAL; - - if (gctrl_trnsdr->gain_index >= MAX_NO_GAINS) - return -EINVAL; - - ptr = ptr_audio_codec_cnxt->transducer[gctrl_trnsdr->channel_type]; - - channel_index = gctrl_trnsdr->channel_index; - gain_index = gctrl_trnsdr->gain_index; - linear = gctrl_trnsdr->linear; - - ptr->get_gain_func(&left_volume, &right_volume, gain_index, - ptr_audio_codec_cnxt->dev); - - ch_array_index = convert_channel_index_to_array_index(channel_index); - max_gain = gain_descriptor[gctrl_trnsdr->channel_type]\ - [ch_array_index][gain_index].max_gain; - min_gain = gain_descriptor[gctrl_trnsdr->channel_type]\ - [ch_array_index][gain_index].min_gain; - - switch (channel_index) { - case e_CHANNEL_1: - gctrl_trnsdr->gain_value = linear ? \ - min_gain+left_volume*(max_gain-min_gain)/100 : left_volume; - break; - case e_CHANNEL_2: - gctrl_trnsdr->gain_value = linear ? \ - min_gain+right_volume*(max_gain-min_gain)/100 : right_volume; - break; - case e_CHANNEL_3: - break; - case e_CHANNEL_4: - break; - case e_CHANNEL_ALL: - if (left_volume == right_volume) { - if (linear) - gctrl_trnsdr->gain_value = - min_gain+right_volume*(max_gain-min_gain)/100; - else - gctrl_trnsdr->gain_value = right_volume; - } - } - - return 0; -} - - -int ste_audio_io_core_api_fsbitclk_control( - struct audioio_fsbitclk_ctrl_t *fsbitclk_ctrl) -{ - int error = 0; - - if (AUDIOIO_COMMON_ON == fsbitclk_ctrl->ctrl_switch) - error = HW_ACODEC_MODIFY_WRITE(IF0_IF1_MASTER_CONF_REG, - EN_FSYNC_BITCLK, 0); - else - error = HW_ACODEC_MODIFY_WRITE(IF0_IF1_MASTER_CONF_REG, 0, - EN_FSYNC_BITCLK); - - return error; -} -int ste_audio_io_core_api_pseudoburst_control( - struct audioio_pseudoburst_ctrl_t *pseudoburst_ctrl) -{ - int error = 0; - - return error; -} -int ste_audio_io_core_debug(int x) -{ - debug_audioio(x); - -return 0; -} - -/** - * ste_audioio_vibrator_alloc() - * @client: Client id which allocates vibrator - * @mask: Mask against which vibrator usage is checked - * - * This function allocates vibrator. - * Mask is added here as audioio driver controls left and right vibrator - * separately (can work independently). In case when audioio has allocated - * one of its channels (left or right) it should be still able to allocate - * the other channel. - * - * Returns: - * 0 - Success - * -EBUSY - other client already registered - **/ -int ste_audioio_vibrator_alloc(int client, int mask) -{ - int error = 0; - - /* Check if other client is already using vibrator */ - if (ptr_audio_codec_cnxt->vibra_client & ~mask) - error = -EBUSY; - else - ptr_audio_codec_cnxt->vibra_client |= client; - - return error; -} - -/** - * ste_audioio_vibrator_release() - * @client: Client id which releases vibrator - * - * This function releases vibrator - **/ -void ste_audioio_vibrator_release(int client) -{ - ptr_audio_codec_cnxt->vibra_client &= ~client; -} - -/** - * ste_audioio_vibrator_pwm_control() - * @client: Client id which will use vibrator - * @left_speed: Left vibrator speed - * @right_speed: Right vibrator speed - * - * This function controls vibrator using PWM source - * - * Returns: - * 0 - success - * -EBUSY - Vibrator already used - **/ -int ste_audioio_vibrator_pwm_control( - int client, - struct ste_vibra_speed left_speed, - struct ste_vibra_speed right_speed) -{ - int error = 0; - - mutex_lock(&ptr_audio_codec_cnxt->audio_io_mutex); - - /* Try to allocate vibrator for given client */ - error = ste_audioio_vibrator_alloc(client, client); - - mutex_unlock(&ptr_audio_codec_cnxt->audio_io_mutex); - - if (error) - return error; - - /* Duty cycle supported by vibrator's PWM is 0-100 */ - if (left_speed.positive > STE_AUDIOIO_VIBRATOR_MAX_SPEED) - left_speed.positive = STE_AUDIOIO_VIBRATOR_MAX_SPEED; - - if (right_speed.positive > STE_AUDIOIO_VIBRATOR_MAX_SPEED) - right_speed.positive = STE_AUDIOIO_VIBRATOR_MAX_SPEED; - - if (left_speed.negative > STE_AUDIOIO_VIBRATOR_MAX_SPEED) - left_speed.negative = STE_AUDIOIO_VIBRATOR_MAX_SPEED; - - if (right_speed.negative > STE_AUDIOIO_VIBRATOR_MAX_SPEED) - right_speed.negative = STE_AUDIOIO_VIBRATOR_MAX_SPEED; - - if (left_speed.negative || right_speed.negative || - left_speed.positive || right_speed.positive) { - /* Power up audio block for vibrator */ - error = ste_audio_io_core_api_powerup_audiocodec( - STE_AUDIOIO_POWER_VIBRA); - if (error) { - dev_err(ptr_audio_codec_cnxt->dev, - "Audio power up failed %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(ANALOG_OUTPUT_ENABLE_REG, - (EN_VIBL_MASK|EN_VIBR_MASK), 0); - if (error) { - dev_err(ptr_audio_codec_cnxt->dev, - "Powerup Vibrator Class-D driver %d", - error); - return error; - } - - error = HW_REG_WRITE(VIB_DRIVER_CONF_REG, 0xff); - if (error) { - dev_err(ptr_audio_codec_cnxt->dev, - "Enable Vibrator PWM generator %d", - error); - return error; - } - } - - error = HW_REG_WRITE(PWM_VIBNL_CONF_REG, left_speed.negative); - if (error) { - dev_err(ptr_audio_codec_cnxt->dev, - "Write Left Vibrator negative PWM %d", error); - goto err_cleanup; - } - - error = HW_REG_WRITE(PWM_VIBPL_CONF_REG, left_speed.positive); - if (error) { - dev_err(ptr_audio_codec_cnxt->dev, - "Write Left Vibrator positive PWM %d", error); - goto err_cleanup; - } - - error = HW_REG_WRITE(PWM_VIBNR_CONF_REG, right_speed.negative); - if (error) { - dev_err(ptr_audio_codec_cnxt->dev, - "Write Right Vibrator negative PWM %d", error); - goto err_cleanup; - } - - error = HW_REG_WRITE(PWM_VIBPR_CONF_REG, right_speed.positive); - if (error) { - dev_err(ptr_audio_codec_cnxt->dev, - "Write Right Vibrator positive PWM %d", error); - goto err_cleanup; - } - - if (!left_speed.negative && !right_speed.negative && - !left_speed.positive && !right_speed.positive) { - error = HW_REG_WRITE(VIB_DRIVER_CONF_REG, 0); - if (error) { - dev_err(ptr_audio_codec_cnxt->dev, - "Disable PWM Vibrator generator %d", - error); - goto err_cleanup; - } - - error = HW_ACODEC_MODIFY_WRITE(ANALOG_OUTPUT_ENABLE_REG, - 0, (EN_VIBL_MASK|EN_VIBR_MASK)); - if (error) { - dev_err(ptr_audio_codec_cnxt->dev, - "Power down Vibrator Class-D driver %d", - error); - goto err_cleanup; - } - - /* Power down audio block */ - error = ste_audio_io_core_api_powerdown_audiocodec( - STE_AUDIOIO_POWER_VIBRA); - if (error) { - dev_err(ptr_audio_codec_cnxt->dev, - "Audio power down failed %d", error); - goto err_cleanup; - } - } - -err_cleanup: - /* Release client */ - if (!left_speed.negative && !right_speed.negative && - !left_speed.positive && !right_speed.positive) { - mutex_lock(&ptr_audio_codec_cnxt->audio_io_mutex); - ste_audioio_vibrator_release(client); - mutex_unlock(&ptr_audio_codec_cnxt->audio_io_mutex); - } - return error; -} -EXPORT_SYMBOL(ste_audioio_vibrator_pwm_control); - -/** - * @brief This function sets FIR coefficients - * @fir_coeffs: pointer to structure audioio_fir_coefficients_t - * @return 0 on success otherwise negative error code - */ -int ste_audio_io_core_api_fir_coeffs_control(struct audioio_fir_coefficients_t - *fir_coeffs) -{ - unsigned char coefficient; - int i, error; - - if (fir_coeffs->start_addr >= STE_AUDIOIO_MAX_COEFFICIENTS) - return -EINVAL; - - mutex_lock(&(ptr_audio_codec_cnxt->audio_io_mutex)); - - error = HW_REG_WRITE(SIDETONE_FIR_ADDR_REG, fir_coeffs->start_addr); - if (error) { - dev_err(ptr_audio_codec_cnxt->dev, - "FIR start address write failed %d", error); - goto err_cleanup; - } - - for (i = fir_coeffs->start_addr; - i < STE_AUDIOIO_MAX_COEFFICIENTS; i++) { - - coefficient = (fir_coeffs->coefficients[i]>>8) & 0xff; - error = HW_REG_WRITE(SIDETONE_FIR_COEFF_MSB_REG, coefficient); - if (error) { - dev_err(ptr_audio_codec_cnxt->dev, - "FIR coefficient [%d] msb write failed %d", i, error); - goto err_cleanup; - } - - coefficient = fir_coeffs->coefficients[i] & 0xff; - error = HW_REG_WRITE(SIDETONE_FIR_COEFF_LSB_REG, coefficient); - if (error) { - dev_err(ptr_audio_codec_cnxt->dev, - "FIR coefficient [%d] lsb write failed %d", i, error); - goto err_cleanup; - } - } - - error = HW_ACODEC_MODIFY_WRITE(SIDETONE_FIR_ADDR_REG, - APPLY_FIR_COEFFS_MASK, 0); - if (error) { - dev_err(ptr_audio_codec_cnxt->dev, - "FIR coefficients activation failed %d", error); - goto err_cleanup; - } - - error = HW_ACODEC_MODIFY_WRITE(FILTERS_CONTROL_REG, - FIR_FILTERCONTROL, 0); - if (error) { - dev_err(ptr_audio_codec_cnxt->dev, - "ST FIR Filters enable failed %d", error); - goto err_cleanup; - } - -err_cleanup: - mutex_unlock(&(ptr_audio_codec_cnxt->audio_io_mutex)); - return error; -} - -/** - * @brief This function sets and enable clock - * @clk_type: pointer to structure audioio_clk_select_t - * @return 0 on success otherwise negative error code - */ -int ste_audio_io_core_clk_select_control(struct audioio_clk_select_t - *clk_type) -{ - int error = 0; - mutex_lock(&(ptr_audio_codec_cnxt->audio_io_mutex)); - if (ptr_audio_codec_cnxt->clk_type != clk_type->required_clk) { - /* disable running clk*/ - ste_audio_io_disable_audio_clock(); - /* assign required clk*/ - ptr_audio_codec_cnxt->clk_type = clk_type->required_clk; - /* enable required clk*/ - error = ste_audio_io_enable_audio_clock(); - if (error) { - dev_err(ptr_audio_codec_cnxt->dev, - "Clock enabled failed = %d", error); - goto err_cleanup; - } - } -err_cleanup: - mutex_unlock(&(ptr_audio_codec_cnxt->audio_io_mutex)); - return error; -} - diff --git a/drivers/misc/audio_io_dev/ste_audio_io_core.h b/drivers/misc/audio_io_dev/ste_audio_io_core.h deleted file mode 100644 index 44849f1d5e8..00000000000 --- a/drivers/misc/audio_io_dev/ste_audio_io_core.h +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright (C) ST-Ericsson SA 2010 - * Author: Deepak KARDA/ deepak.karda@stericsson.com for ST-Ericsson - * License terms: GNU General Public License (GPL) version 2. - */ - -#ifndef _AUDIOIO_CORE_H_ -#define _AUDIOIO_CORE_H_ - -#include <mach/ste_audio_io_ioctl.h> -#include "ste_audio_io_func.h" -#include "ste_audio_io_hwctrl_common.h" - -#define MAX_NO_CHANNELS 4 - -#define STE_AUDIOIO_POWER_AUDIO 1 -#define STE_AUDIOIO_POWER_VIBRA 2 - -struct transducer_context_t { - /* public variables */ - int gain[MAX_NO_CHANNELS]; - int is_muted[MAX_NO_CHANNELS]; - int is_power_up[MAX_NO_CHANNELS]; - /* public funcs */ - int (*pwr_up_func)(enum AUDIOIO_CH_INDEX, struct device *); - int (*pwr_down_func)(enum AUDIOIO_CH_INDEX, struct device *); - int (*pwr_state_func)(struct device *); - int (*set_gain_func)(enum AUDIOIO_CH_INDEX, u16, int, u32, - struct device *); - int (*get_gain_func)(int *, int *, u16, struct device *); - int (*mute_func)(enum AUDIOIO_CH_INDEX, struct device *); - int (*unmute_func)(enum AUDIOIO_CH_INDEX, int *, struct device *); - int (*mute_state_func)(struct device *); - int (*enable_fade_func)(struct device *); - int (*disable_fade_func)(struct device *); - int (*switch_to_burst_func)(int, struct device *); - int (*switch_to_normal_func)(struct device *); - int (*enable_loop)(enum AUDIOIO_CH_INDEX, enum AUDIOIO_HAL_HW_LOOPS, - int, struct device *, void *); - int (*disable_loop)(enum AUDIOIO_CH_INDEX, enum AUDIOIO_HAL_HW_LOOPS, - struct device *, void *); -}; - -struct audiocodec_context_t { - int audio_codec_powerup; - int is_audio_clk_enabled; - enum AUDIOIO_CLK_TYPE clk_type; - int power_client; - int vibra_client; - struct mutex audio_io_mutex; - struct mutex vibrator_mutex; - struct transducer_context_t *transducer[MAX_NO_TRANSDUCERS]; - struct device *dev; - int (*gpio_altf_init) (void); - int (*gpio_altf_exit) (void); -}; - - -int ste_audio_io_core_api_access_read(struct audioio_data_t *dev_data); - -int ste_audio_io_core_api_access_write(struct audioio_data_t *dev_data); - -int ste_audio_io_core_api_power_control_transducer( - struct audioio_pwr_ctrl_t *pwr_ctrl); - -int ste_audio_io_core_api_power_status_transducer( - struct audioio_pwr_ctrl_t *pwr_ctrl); - -int ste_audio_io_core_api_loop_control(struct audioio_loop_ctrl_t *loop_ctrl); - -int ste_audio_io_core_api_loop_status(struct audioio_loop_ctrl_t *loop_ctrl); - -int ste_audio_io_core_api_get_transducer_gain_capability( - struct audioio_get_gain_t *get_gain); - -int ste_audio_io_core_api_gain_capabilities_loop( - struct audioio_gain_loop_t *gain_loop); - -int ste_audio_io_core_api_supported_loops( - struct audioio_support_loop_t *support_loop); - -int ste_audio_io_core_api_gain_descriptor_transducer( - struct audioio_gain_desc_trnsdr_t *gdesc_trnsdr); - -int ste_audio_io_core_api_gain_control_transducer( - struct audioio_gain_ctrl_trnsdr_t *gctrl_trnsdr); - -int ste_audio_io_core_api_gain_query_transducer( - struct audioio_gain_ctrl_trnsdr_t *gctrl_trnsdr); - -int ste_audio_io_core_api_mute_control_transducer( - struct audioio_mute_trnsdr_t *mute_trnsdr); - -int ste_audio_io_core_api_mute_status_transducer( - struct audioio_mute_trnsdr_t *mute_trnsdr); - -int ste_audio_io_core_api_fading_control(struct audioio_fade_ctrl_t *fade_ctrl); - -int ste_audio_io_core_api_burstmode_control( - struct audioio_burst_ctrl_t *burst_ctrl); - -int ste_audio_io_core_api_powerup_audiocodec(int power_client); - -int ste_audio_io_core_api_powerdown_audiocodec(int power_client); - -int ste_audio_io_core_api_init_data(struct platform_device *pdev); - -bool ste_audio_io_core_is_ready_for_suspend(void); -void ste_audio_io_core_api_free_data(void); - -int ste_audio_io_core_api_fsbitclk_control( - struct audioio_fsbitclk_ctrl_t *fsbitclk_ctrl); -int ste_audio_io_core_api_pseudoburst_control( - struct audioio_pseudoburst_ctrl_t *pseudoburst_ctrl); - -void ste_audio_io_core_api_store_data(enum AUDIOIO_CH_INDEX channel_index, - int *ptr, int value); - -int ste_audioio_vibrator_alloc(int client, int mask); - -void ste_audioio_vibrator_release(int client); - -enum AUDIOIO_COMMON_SWITCH ste_audio_io_core_api_get_status( - enum AUDIOIO_CH_INDEX channel_index, int *ptr); - -int ste_audio_io_core_api_acodec_power_control(struct audioio_acodec_pwr_ctrl_t - *audio_acodec_pwr_ctrl); - -int ste_audio_io_core_api_fir_coeffs_control(struct audioio_fir_coefficients_t - *fir_coeffs); - -int ste_audio_io_core_clk_select_control(struct audioio_clk_select_t - *clk_type); - -int ste_audio_io_core_debug(int x); - -#endif /* _AUDIOIO_CORE_H_ */ - diff --git a/drivers/misc/audio_io_dev/ste_audio_io_dev.c b/drivers/misc/audio_io_dev/ste_audio_io_dev.c deleted file mode 100644 index edea31e4315..00000000000 --- a/drivers/misc/audio_io_dev/ste_audio_io_dev.c +++ /dev/null @@ -1,759 +0,0 @@ -/* - * Copyright (C) ST-Ericsson SA 2010 - * Author: Deepak KARDA/ deepak.karda@stericsson.com for ST-Ericsson - * License terms: GNU General Public License (GPL) version 2. - */ - -#include <linux/init.h> -#include <linux/module.h> -#include <linux/ioctl.h> -#include <linux/fs.h> -#include <linux/device.h> -#include <linux/err.h> -#include <linux/errno.h> -#include <linux/cdev.h> -#include <linux/uaccess.h> -#include <linux/types.h> -#include <linux/slab.h> -#include <linux/gpio.h> -#include <linux/clk.h> -#include <linux/platform_device.h> -#include <linux/miscdevice.h> -#include "ste_audio_io_dev.h" - -#define STR_DEBUG_ON "debug on" -#define AUDIOIO_DEVNAME "ab8500-codec" - -static int ste_audio_io_open(struct inode *inode, struct file *filp); -static int ste_audio_io_release(struct inode *inode, struct file *filp); -static long ste_audio_io_ioctl(struct file *file, unsigned int cmd, - unsigned long arg); -static int ste_audio_io_cmd_parser(unsigned int cmd, unsigned long arg); -static ssize_t ste_audio_io_write(struct file *filp, - const char __user *buf, size_t count, loff_t *f_pos); - - -/** - * @brief Check IOCTL type, command no and access direction - * @ inode value corresponding to the file descriptor - * @file value corresponding to the file descriptor - * @cmd IOCTL command code - * @arg Command argument - * @return 0 on success otherwise negative error code - */ -static long ste_audio_io_ioctl(struct file *file, unsigned int cmd, - unsigned long arg) -{ - int retval = 0; - int err = 0; - - /* Check type and command number */ - if (_IOC_TYPE(cmd) != AUDIOIO_IOC_MAGIC) - return -ENOTTY; - - /* IOC_DIR is from the user perspective, while access_ok is - * from the kernel perspective; so they look reversed. - */ - if (_IOC_DIR(cmd) & _IOC_READ) - err = !access_ok(VERIFY_WRITE, (void __user *)arg, - _IOC_SIZE(cmd)); - if (err == 0 && _IOC_DIR(cmd) & _IOC_WRITE) - err = !access_ok(VERIFY_READ, (void __user *)arg, - _IOC_SIZE(cmd)); - if (err) - return -EFAULT; - - retval = ste_audio_io_cmd_parser(cmd, arg); - - return retval; -} -/** - * @brief IOCTL call to read the value from AB8500 device - * @cmd IOCTL command code - * @arg Command argument - * @return 0 on success otherwise negative error code - */ - -static int process_read_register_cmd(unsigned int cmd, unsigned long arg) -{ - int retval = 0; - union audioio_cmd_data_t cmd_data; - struct audioio_data_t *audio_dev_data; - - audio_dev_data = (struct audioio_data_t *)&cmd_data; - - if (copy_from_user(audio_dev_data, (void __user *)arg, - sizeof(struct audioio_data_t))) - return -EFAULT; - - retval = ste_audio_io_core_api_access_read(audio_dev_data); - if (0 != retval) - return retval; - - if (copy_to_user((void __user *)arg, audio_dev_data, - sizeof(struct audioio_data_t))) - return -EFAULT; - return 0; -} -/** - * @brief IOCTL call to write the given value to the AB8500 device - * @cmd IOCTL command code - * @arg Command argument - * @return 0 on success otherwise negative error code - */ - -static int process_write_register_cmd(unsigned int cmd, unsigned long arg) -{ - int retval = 0; - union audioio_cmd_data_t cmd_data; - struct audioio_data_t *audio_dev_data; - - audio_dev_data = (struct audioio_data_t *)&cmd_data; - - if (copy_from_user(audio_dev_data, (void __user *)arg, - sizeof(struct audioio_data_t))) - return -EFAULT; - - retval = ste_audio_io_core_api_access_write(audio_dev_data); - - return retval; -} -/** - * @brief IOCTL call to control the power on/off of hardware components - * @cmd IOCTL command code - * @arg Command argument - * @return 0 on success otherwise negative error code - */ - -static int process_pwr_ctrl_cmd(unsigned int cmd, unsigned long arg) -{ - int retval = 0; - union audioio_cmd_data_t cmd_data; - struct audioio_pwr_ctrl_t *audio_pwr_ctrl; - - audio_pwr_ctrl = (struct audioio_pwr_ctrl_t *)&cmd_data; - - if (copy_from_user(audio_pwr_ctrl, (void __user *)arg, - sizeof(struct audioio_pwr_ctrl_t))) - return -EFAULT; - - retval = ste_audio_io_core_api_power_control_transducer(audio_pwr_ctrl); - - return retval; -} - -static int process_pwr_sts_cmd(unsigned int cmd, unsigned long arg) -{ - int retval = 0; - union audioio_cmd_data_t cmd_data; - struct audioio_pwr_ctrl_t *audio_pwr_sts; - - audio_pwr_sts = (struct audioio_pwr_ctrl_t *)&cmd_data; - - if (copy_from_user(audio_pwr_sts, (void __user *)arg, - sizeof(struct audioio_pwr_ctrl_t))) - return -EFAULT; - - retval = ste_audio_io_core_api_power_status_transducer(audio_pwr_sts); - if (0 != retval) - return retval; - - if (copy_to_user((void __user *)arg, audio_pwr_sts, - sizeof(struct audioio_pwr_ctrl_t))) - return -EFAULT; - - return 0; -} - -static int process_lp_ctrl_cmd(unsigned int cmd, unsigned long arg) -{ - int retval = 0; - union audioio_cmd_data_t cmd_data; - struct audioio_loop_ctrl_t *audio_lp_ctrl; - - audio_lp_ctrl = (struct audioio_loop_ctrl_t *)&cmd_data; - - if (copy_from_user(audio_lp_ctrl, (void __user *)arg, - sizeof(struct audioio_loop_ctrl_t))) - return -EFAULT; - - retval = ste_audio_io_core_api_loop_control(audio_lp_ctrl); - - return retval; -} - -static int process_lp_sts_cmd(unsigned int cmd, unsigned long arg) -{ - int retval = 0; - union audioio_cmd_data_t cmd_data; - struct audioio_loop_ctrl_t *audio_lp_sts; - - audio_lp_sts = (struct audioio_loop_ctrl_t *)&cmd_data; - - - if (copy_from_user(audio_lp_sts, (void __user *)arg, - sizeof(struct audioio_loop_ctrl_t))) - return -EFAULT; - - retval = ste_audio_io_core_api_loop_status(audio_lp_sts); - if (0 != retval) - return retval; - - if (copy_to_user((void __user *)arg, audio_lp_sts, - sizeof(struct audioio_loop_ctrl_t))) - return -EFAULT; - return 0; -} - -static int process_get_trnsdr_gain_capability_cmd(unsigned int cmd, - unsigned long arg) -{ - int retval = 0; - union audioio_cmd_data_t cmd_data; - struct audioio_get_gain_t *audio_trnsdr_gain; - - audio_trnsdr_gain = (struct audioio_get_gain_t *)&cmd_data; - - if (copy_from_user(audio_trnsdr_gain, (void __user *)arg, - sizeof(struct audioio_get_gain_t))) - return -EFAULT; - - retval = ste_audio_io_core_api_get_transducer_gain_capability( - audio_trnsdr_gain); - if (0 != retval) - return retval; - - if (copy_to_user((void __user *)arg, audio_trnsdr_gain, - sizeof(struct audioio_get_gain_t))) - return -EFAULT; - return 0; -} - -static int process_gain_cap_loop_cmd(unsigned int cmd, unsigned long arg) -{ - int retval = 0; - union audioio_cmd_data_t cmd_data; - struct audioio_gain_loop_t *audio_gain_loop; - - audio_gain_loop = (struct audioio_gain_loop_t *)&cmd_data; - - if (copy_from_user(audio_gain_loop, (void __user *)arg, - sizeof(struct audioio_gain_loop_t))) - return -EFAULT; - - retval = ste_audio_io_core_api_gain_capabilities_loop(audio_gain_loop); - if (0 != retval) - return retval; - - if (copy_to_user((void __user *)arg, audio_gain_loop, - sizeof(struct audioio_gain_loop_t))) - return -EFAULT; - return 0; -} - - -static int process_support_loop_cmd(unsigned int cmd, unsigned long arg) -{ - int retval = 0; - union audioio_cmd_data_t cmd_data; - struct audioio_support_loop_t *audio_spprt_loop; - - audio_spprt_loop = (struct audioio_support_loop_t *)&cmd_data; - - if (copy_from_user(audio_spprt_loop, (void __user *)arg, - sizeof(struct audioio_support_loop_t))) - return -EFAULT; - - retval = ste_audio_io_core_api_supported_loops(audio_spprt_loop); - if (0 != retval) - return retval; - - if (copy_to_user((void __user *)arg, audio_spprt_loop, - sizeof(struct audioio_support_loop_t))) - return -EFAULT; - return 0; -} - - -static int process_gain_desc_trnsdr_cmd(unsigned int cmd, unsigned long arg) - -{ - int retval = 0; - union audioio_cmd_data_t cmd_data; - struct audioio_gain_desc_trnsdr_t *audio_gain_desc; - - audio_gain_desc = (struct audioio_gain_desc_trnsdr_t *)&cmd_data; - - if (copy_from_user(audio_gain_desc, (void __user *)arg, - sizeof(struct audioio_gain_desc_trnsdr_t))) - return -EFAULT; - - retval = ste_audio_io_core_api_gain_descriptor_transducer( - audio_gain_desc); - if (0 != retval) - return retval; - - if (copy_to_user((void __user *)arg, audio_gain_desc, - sizeof(struct audioio_gain_desc_trnsdr_t))) - return -EFAULT; - return 0; -} - - -static int process_gain_ctrl_trnsdr_cmd(unsigned int cmd, unsigned long arg) -{ - int retval = 0; - union audioio_cmd_data_t cmd_data; - struct audioio_gain_ctrl_trnsdr_t *audio_gain_ctrl; - - audio_gain_ctrl = (struct audioio_gain_ctrl_trnsdr_t *)&cmd_data; - - if (copy_from_user(audio_gain_ctrl, (void __user *)arg, - sizeof(struct audioio_gain_ctrl_trnsdr_t))) - return -EFAULT; - - retval = ste_audio_io_core_api_gain_control_transducer( - audio_gain_ctrl); - - return retval; -} - -static int process_gain_query_trnsdr_cmd(unsigned int cmd, unsigned long arg) -{ - int retval = 0; - union audioio_cmd_data_t cmd_data; - struct audioio_gain_ctrl_trnsdr_t *audio_gain_query; - - audio_gain_query = (struct audioio_gain_ctrl_trnsdr_t *)&cmd_data; - - if (copy_from_user(audio_gain_query, (void __user *)arg, - sizeof(struct audioio_gain_ctrl_trnsdr_t))) - return -EFAULT; - - retval = ste_audio_io_core_api_gain_query_transducer(audio_gain_query); - if (0 != retval) - return retval; - - if (copy_to_user((void __user *)arg, audio_gain_query, - sizeof(struct audioio_gain_ctrl_trnsdr_t))) - return -EFAULT; - return 0; -} - -static int process_mute_ctrl_cmd(unsigned int cmd, unsigned long arg) -{ - int retval = 0; - union audioio_cmd_data_t cmd_data; - struct audioio_mute_trnsdr_t *audio_mute_ctrl; - - audio_mute_ctrl = (struct audioio_mute_trnsdr_t *)&cmd_data; - if (copy_from_user(audio_mute_ctrl , (void __user *)arg, - sizeof(struct audioio_mute_trnsdr_t))) - return -EFAULT; - - retval = ste_audio_io_core_api_mute_control_transducer( - audio_mute_ctrl); - - return retval; -} - -static int process_mute_sts_cmd(unsigned int cmd, unsigned long arg) -{ - int retval = 0; - union audioio_cmd_data_t cmd_data; - struct audioio_mute_trnsdr_t *audio_mute_sts; - - audio_mute_sts = (struct audioio_mute_trnsdr_t *)&cmd_data; - - if (copy_from_user(audio_mute_sts, (void __user *)arg, - sizeof(struct audioio_mute_trnsdr_t))) - return -EFAULT; - - retval = ste_audio_io_core_api_mute_status_transducer(audio_mute_sts); - if (0 != retval) - return retval; - - if (copy_to_user((void __user *)arg, audio_mute_sts, - sizeof(struct audioio_mute_trnsdr_t))) - return -EFAULT; - return 0; -} - -static int process_fade_cmd(unsigned int cmd, unsigned long arg) -{ - int retval = 0; - union audioio_cmd_data_t cmd_data; - struct audioio_fade_ctrl_t *audio_fade; - audio_fade = (struct audioio_fade_ctrl_t *)&cmd_data; - - if (copy_from_user(audio_fade , (void __user *)arg, - sizeof(struct audioio_fade_ctrl_t))) - return -EFAULT; - - retval = ste_audio_io_core_api_fading_control(audio_fade); - - return retval; -} - -static int process_burst_ctrl_cmd(unsigned int cmd, unsigned long arg) -{ - int retval = 0; - union audioio_cmd_data_t cmd_data; - struct audioio_burst_ctrl_t *audio_burst; - - audio_burst = (struct audioio_burst_ctrl_t *)&cmd_data; - if (copy_from_user(audio_burst , (void __user *)arg, - sizeof(struct audioio_burst_ctrl_t))) - return -EFAULT; - - retval = ste_audio_io_core_api_burstmode_control(audio_burst); - - return retval; - - return 0; -} - -static int process_fsbitclk_ctrl_cmd(unsigned int cmd, unsigned long arg) -{ - int retval = 0; - union audioio_cmd_data_t cmd_data; - struct audioio_fsbitclk_ctrl_t *audio_fsbitclk; - - audio_fsbitclk = (struct audioio_fsbitclk_ctrl_t *)&cmd_data; - - if (copy_from_user(audio_fsbitclk , (void __user *)arg, - sizeof(struct audioio_fsbitclk_ctrl_t))) - return -EFAULT; - - retval = ste_audio_io_core_api_fsbitclk_control(audio_fsbitclk); - - return retval; - - return 0; - -} - -static int process_pseudoburst_ctrl_cmd(unsigned int cmd, unsigned long arg) -{ - int retval = 0; - union audioio_cmd_data_t cmd_data; - struct audioio_pseudoburst_ctrl_t *audio_pseudoburst; - - audio_pseudoburst = (struct audioio_pseudoburst_ctrl_t *)&cmd_data; - - if (copy_from_user(audio_pseudoburst , (void __user *)arg, - sizeof(struct audioio_pseudoburst_ctrl_t))) - return -EFAULT; - - retval = ste_audio_io_core_api_pseudoburst_control(audio_pseudoburst); - - return retval; - - return 0; - -} -static int process_audiocodec_pwr_ctrl_cmd(unsigned int cmd, unsigned long arg) -{ - int retval = 0; - union audioio_cmd_data_t cmd_data; - struct audioio_acodec_pwr_ctrl_t *audio_acodec_pwr_ctrl; - audio_acodec_pwr_ctrl = (struct audioio_acodec_pwr_ctrl_t *)&cmd_data; - if (copy_from_user(audio_acodec_pwr_ctrl, (void __user *)arg, - sizeof(struct audioio_acodec_pwr_ctrl_t))) - return -EFAULT; - retval = ste_audio_io_core_api_acodec_power_control( - audio_acodec_pwr_ctrl); - return retval; -} - -static int process_fir_coeffs_ctrl_cmd(unsigned int cmd, unsigned long arg) -{ - int retval; - struct audioio_fir_coefficients_t *cmd_data; - cmd_data = kmalloc(sizeof(struct audioio_fir_coefficients_t), - GFP_KERNEL); - if (!cmd_data) - return -ENOMEM; - if (copy_from_user(cmd_data, (void __user *)arg, - sizeof(struct audioio_fir_coefficients_t))) { - kfree(cmd_data); - return -EFAULT; - } - retval = ste_audio_io_core_api_fir_coeffs_control(cmd_data); - kfree(cmd_data); - return retval; -} - -static int process_clk_select_cmd(unsigned int cmd, unsigned long arg) -{ - int retval; - struct audioio_clk_select_t *cmd_data; - cmd_data = kmalloc(sizeof(struct audioio_clk_select_t), - GFP_KERNEL); - if (!cmd_data) - return -ENOMEM; - if (copy_from_user(cmd_data, (void __user *)arg, - sizeof(struct audioio_clk_select_t))) { - kfree(cmd_data); - return -EFAULT; - } - retval = ste_audio_io_core_clk_select_control(cmd_data); - kfree(cmd_data); - return retval; -} - -static int ste_audio_io_cmd_parser(unsigned int cmd, unsigned long arg) -{ - int retval = 0; - - switch (cmd) { - case AUDIOIO_READ_REGISTER: - retval = process_read_register_cmd(cmd, arg); - break; - - case AUDIOIO_WRITE_REGISTER: - retval = process_write_register_cmd(cmd, arg); - break; - - case AUDIOIO_PWR_CTRL_TRNSDR: - retval = process_pwr_ctrl_cmd(cmd, arg); - break; - - case AUDIOIO_PWR_STS_TRNSDR: - retval = process_pwr_sts_cmd(cmd, arg); - break; - - case AUDIOIO_LOOP_CTRL: - retval = process_lp_ctrl_cmd(cmd, arg); - break; - - case AUDIOIO_LOOP_STS: - retval = process_lp_sts_cmd(cmd, arg); - break; - - case AUDIOIO_GET_TRNSDR_GAIN_CAPABILITY: - retval = process_get_trnsdr_gain_capability_cmd(cmd, arg); - break; - - case AUDIOIO_GAIN_CAP_LOOP: - retval = process_gain_cap_loop_cmd(cmd, arg); - break; - - case AUDIOIO_SUPPORT_LOOP: - retval = process_support_loop_cmd(cmd, arg); - break; - - case AUDIOIO_GAIN_DESC_TRNSDR: - retval = process_gain_desc_trnsdr_cmd(cmd, arg); - break; - - case AUDIOIO_GAIN_CTRL_TRNSDR: - retval = process_gain_ctrl_trnsdr_cmd(cmd, arg); - break; - - case AUDIOIO_GAIN_QUERY_TRNSDR: - retval = process_gain_query_trnsdr_cmd(cmd, arg); - break; - - case AUDIOIO_MUTE_CTRL_TRNSDR: - retval = process_mute_ctrl_cmd(cmd, arg); - break; - - case AUDIOIO_MUTE_STS_TRNSDR: - retval = process_mute_sts_cmd(cmd, arg); - break; - - case AUDIOIO_FADE_CTRL: - retval = process_fade_cmd(cmd, arg); - break; - - case AUDIOIO_BURST_CTRL: - retval = process_burst_ctrl_cmd(cmd, arg); - break; - - case AUDIOIO_FSBITCLK_CTRL: - retval = process_fsbitclk_ctrl_cmd(cmd, arg); - break; - - case AUDIOIO_PSEUDOBURST_CTRL: - retval = process_pseudoburst_ctrl_cmd(cmd, arg); - break; - - case AUDIOIO_AUDIOCODEC_PWR_CTRL: - retval = process_audiocodec_pwr_ctrl_cmd(cmd, arg); - break; - - case AUDIOIO_FIR_COEFFS_CTRL: - retval = process_fir_coeffs_ctrl_cmd(cmd, arg); - break; - case AUDIOIO_CLK_SELECT_CTRL: - retval = process_clk_select_cmd(cmd, arg); - break; - } - return retval; -} - -static int ste_audio_io_open(struct inode *inode, struct file *filp) -{ - if (!try_module_get(THIS_MODULE)) - return -ENODEV; - return 0; -} - -static int ste_audio_io_release(struct inode *inode, struct file *filp) -{ - module_put(THIS_MODULE); - return 0; -} - -static ssize_t ste_audio_io_write(struct file *filp, - const char __user *buf, size_t count, loff_t *f_pos) -{ - char *x = kmalloc(count, GFP_KERNEL); - int debug_flag = 0; - - if (copy_from_user(x, buf, count)) - return -EFAULT; - - if (count >= strlen(STR_DEBUG_ON)) { - - if (!strncmp(STR_DEBUG_ON, x, strlen(STR_DEBUG_ON))) - debug_flag = 1; - else - debug_flag = 0; - } - - ste_audio_io_core_debug(debug_flag); - - kfree(x); - - return count; -} - -static const struct file_operations ste_audio_io_fops = { - .owner = THIS_MODULE, - .unlocked_ioctl = ste_audio_io_ioctl, - .open = ste_audio_io_open, - .release = ste_audio_io_release, - .write = ste_audio_io_write, -}; - -/** - * audio_io_misc_dev - Misc device config for audio_io - */ -static struct miscdevice audio_io_misc_dev = { - MISC_DYNAMIC_MINOR, - "audioio", - &ste_audio_io_fops -}; - -/** - * ste_audio_io_probe() - probe the device - * @pdev: pointer to the platform device structure - * - * This funtion is called after the driver is registered to platform - * device framework. It does allocate the memory for the internal - * data structure and intialized core APIs. - */ -static int ste_audio_io_drv_probe(struct platform_device *pdev) -{ - int error; - - ste_audio_io_device = pdev; - - dev_dbg(&ste_audio_io_device->dev, "ste_audio_io device probe\n"); - - error = misc_register(&audio_io_misc_dev); - if (error) { - printk(KERN_WARNING "%s: registering misc device failed\n", - __func__); - return error; - } - - error = ste_audio_io_core_api_init_data(ste_audio_io_device); - if (error < 0) { - dev_err(&ste_audio_io_device->dev, - "ste_audioio_core_api_init_data failed err = %d", - error); - goto ste_audio_io_misc_deregister; - } - return 0; - -ste_audio_io_misc_deregister: - misc_deregister(&audio_io_misc_dev); - return error; -} - -/** - * ste_audio_io_remove() - Removes the device - * @pdev: pointer to the platform_device structure - * - * This function is called when this mnodule is removed using rmmod - */ -static int ste_audio_io_drv_remove(struct platform_device *pdev) -{ - ste_audio_io_core_api_free_data(); - misc_deregister(&audio_io_misc_dev); - return 0; -} - -/** - * ste_audio_io_drv_suspend - suspend audio_io - * @pdev: platform data - * @state: power down level - */ -static int ste_audio_io_drv_suspend(struct platform_device *pdev, - pm_message_t state) -{ - if (ste_audio_io_core_is_ready_for_suspend()) - return 0; - else - return -EINVAL; -} - -/** - * ste_audio_io_drv_resume - put back audio_io in the normal state - * @pdev: platform data - */ -static int ste_audio_io_drv_resume(struct platform_device *pdev) -{ - return 0; -} - -/** - * struct audio_io_driver: audio_io platform structure - * @probe: The probe funtion to be called - * @remove: The remove funtion to be called - * @resume: The resume function to be called - * @suspend: The suspend function to be called - * @driver: The driver data - */ -static struct platform_driver ste_audio_io_driver = { - .probe = ste_audio_io_drv_probe, - .remove = ste_audio_io_drv_remove, - .driver = { - .name = AUDIOIO_DEVNAME, - .owner = THIS_MODULE, - }, - .suspend = ste_audio_io_drv_suspend, - .resume = ste_audio_io_drv_resume, -}; - -/** Pointer to platform device needed to access abx500 core functions */ -struct platform_device *ste_audio_io_device; - -static int __init ste_audio_io_init(void) -{ - return platform_driver_register(&ste_audio_io_driver); -} -module_init(ste_audio_io_init); - -static void __exit ste_audio_io_exit(void) -{ - platform_driver_unregister(&ste_audio_io_driver); -} -module_exit(ste_audio_io_exit); - -MODULE_AUTHOR("Deepak KARDA <deepak.karda@stericsson.com>"); -MODULE_DESCRIPTION("STE_AUDIO_IO"); -MODULE_LICENSE("GPL v2"); diff --git a/drivers/misc/audio_io_dev/ste_audio_io_dev.h b/drivers/misc/audio_io_dev/ste_audio_io_dev.h deleted file mode 100644 index bcb9dce3ad2..00000000000 --- a/drivers/misc/audio_io_dev/ste_audio_io_dev.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (C) ST-Ericsson SA 2010 - * Author: Deepak KARDA/ deepak.karda@stericsson.com for ST-Ericsson - * License terms: GNU General Public License (GPL) version 2. - */ - -#ifndef _AUDIOIO_DEV_H_ -#define _AUDIOIO_DEV_H_ - -#include <mach/ste_audio_io_ioctl.h> -#include "ste_audio_io_core.h" - -union audioio_cmd_data_t { - struct audioio_burst_ctrl_t audioio_burst_ctrl; - struct audioio_fade_ctrl_t audioio_fade_ctrl; - struct audioio_mute_trnsdr_t audioio_mute_trnsdr; - struct audioio_gain_ctrl_trnsdr_t audioio_gain_ctrl_trnsdr; - struct audioio_gain_desc_trnsdr_t audioio_gain_desc_trnsdr; - struct audioio_support_loop_t audioio_support_loop; - struct audioio_gain_loop_t audioio_gain_loop; - struct audioio_get_gain_t audioio_get_gain; - struct audioio_loop_ctrl_t audioio_loop_ctrl; - struct audioio_pwr_ctrl_t audioio_pwr_ctrl; - struct audioio_data_t audioio_data; - struct audioio_fsbitclk_ctrl_t audioio_fsbitclk_ctrl; - struct audioio_acodec_pwr_ctrl_t audioio_acodec_pwr_ctrl; - struct audioio_pseudoburst_ctrl_t audioio_pseudoburst_ctrl; -}; - - -#endif /* _AUDIOIO_DEV_H_ */ - diff --git a/drivers/misc/audio_io_dev/ste_audio_io_func.c b/drivers/misc/audio_io_dev/ste_audio_io_func.c deleted file mode 100644 index 7238085938e..00000000000 --- a/drivers/misc/audio_io_dev/ste_audio_io_func.c +++ /dev/null @@ -1,4371 +0,0 @@ -/* - * Copyright (C) ST-Ericsson SA 2010 - * Author: Deepak KARDA/ deepak.karda@stericsson.com for ST-Ericsson - * License terms: GNU General Public License (GPL) version 2. - */ - -#include <linux/gpio.h> -#include <linux/clk.h> -#include <linux/err.h> -#include <linux/delay.h> -#include <linux/jiffies.h> -#include <mach/ste_audio_io_vibrator.h> -#include <mach/ste_audio.h> -#include "ste_audio_io_func.h" -#include "ste_audio_io_core.h" -#include "ste_audio_io_ab8500_reg_defs.h" -#include "ste_audio_io_hwctrl_common.h" - -static struct clk *clk_ptr_msp0; -static int bluetooth_power_up_count; -static int acodec_reg_dump; - -#define NCP_TIMEOUT 200 /* 200 ms */ -/* - * TODO: Use proper register defines instead of home-made generic ones. - */ -#define SHIFT_QUARTET0 0 -#define SHIFT_QUARTET1 4 -#define MASK_QUARTET (0xFUL) -#define MASK_QUARTET1 (MASK_QUARTET << SHIFT_QUARTET1) -#define MASK_QUARTET0 (MASK_QUARTET << SHIFT_QUARTET0) - -/** - * @brief Modify the specified register - * @reg Register - * @mask_set Bit to be set - * @mask_clear Bit to be cleared - * @return 0 on success otherwise negative error code - */ - -unsigned int ab8500_acodec_modify_write(unsigned int reg, u8 mask_set, - u8 mask_clear) -{ - u8 value8, retval = 0; - value8 = HW_REG_READ(reg); - /* clear the specified bit */ - value8 &= ~mask_clear; - /* set the asked bit */ - value8 |= mask_set; - retval = HW_REG_WRITE(reg, value8); - return retval; -} - -/** - * @brief Power up headset on a specific channel - * @channel_index Channel-index of headset - * @return 0 on success otherwise negative error code - */ - -int ste_audio_io_power_up_headset(enum AUDIOIO_CH_INDEX channel_index, - struct device *dev) -{ - int error = 0; - unsigned char initialVal_DA = 0; - unsigned long end_time; - - /* Check if HS PowerUp request is mono or Stereo channel */ - if (!(channel_index & (e_CHANNEL_1 | e_CHANNEL_2))) { - dev_err(dev, "HS should have mono or stereo channels"); - return -EINVAL; - } - - ste_audio_io_mute_headset(channel_index, dev); - - error = HW_ACODEC_MODIFY_WRITE(NCP_ENABLE_HS_AUTOSTART_REG, - HS_AUTO_EN, 0); - if (0 != error) { - dev_err(dev, "NCP fully controlled with EnCpHs bit %d", error); - return error; - } - error = HW_ACODEC_MODIFY_WRITE(NCP_ENABLE_HS_AUTOSTART_REG, - (EN_NEG_CP|HS_AUTO_EN), 0); - if (0 != error) { - dev_err(dev, "Enable Negative Charge Pump %d", error); - return error; - } - - /* Wait for negative charge pump to start */ - end_time = jiffies + msecs_to_jiffies(NCP_TIMEOUT); - while (!(HW_REG_READ(IRQ_STATUS_MSB_REG) & NCP_READY_MASK) - && time_after_eq(end_time, jiffies)) { - set_current_state(TASK_UNINTERRUPTIBLE); - schedule_timeout(1); - } - - if (!(HW_REG_READ(IRQ_STATUS_MSB_REG) & NCP_READY_MASK)) { - error = -EFAULT; - dev_err(dev, "Negative Charge Pump start error % d", error); - return error; - } - - /* Enable DA1 for HSL */ - if (channel_index & e_CHANNEL_1) { - - /* Power Up HSL driver */ - error = HW_ACODEC_MODIFY_WRITE(ANALOG_OUTPUT_ENABLE_REG, - EN_HSL_MASK, 0); - if (0 != error) { - dev_err(dev, "Power Up HSL Driver %d", error); - return error; - } - - initialVal_DA = HW_REG_READ(DIGITAL_DA_CHANNELS_ENABLE_REG); - - if (EN_DA1 & initialVal_DA) - return 0; - - error = HW_ACODEC_MODIFY_WRITE(SLOT_SELECTION_TO_DA1_REG, - SLOT08_FOR_DA_PATH, 0); - if (0 != error) { - dev_err(dev, "Data sent to DA1 from Slot 08 %d", - error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_MUXES_REG1, - DA1_TO_HSL, 0); - if (0 != error) { - dev_err(dev, - "DA_IN1 path mixed with sidetone FIR %d", - error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_DA_CHANNELS_ENABLE_REG, - EN_DA1, 0); - if (0 != error) { - dev_err(dev, "Power up HSL %d ", error); - return error; - } - - /* Power Up HSL DAC driver */ - error = HW_ACODEC_MODIFY_WRITE(ADC_DAC_ENABLE_REG, - POWER_UP_HSL_DAC, 0); - if (0 != error) { - dev_err(dev, "Power Up HSL DAC driver %d", error); - return error; - } - - /* Power up HSL DAC and digital path */ - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_OUTPUT_ENABLE_REG, - EN_HSL_MASK, 0); - if (0 != error) { - dev_err(dev, - "Power up HSL DAC and digital path %d", - error); - return error; - } - - /* - * Disable short detection. Pull Down output to ground, - * Use local oscillator, Gain change without zero cross control - */ - error = HW_ACODEC_MODIFY_WRITE(SHORT_CIRCUIT_DISABLE_REG, - HS_SHORT_DIS|HS_PULL_DOWN_EN|HS_OSC_EN|HS_ZCD_DIS, 0); - if (0 != error) { - dev_err(dev, "Disable short detection." - "Pull Down output to ground,Use local oscillator,Gain" - "change without zero cross control %d", error); - return error; - } - } - - /* Enable DA2 for HSR */ - if (channel_index & e_CHANNEL_2) { - - /* Power Up HSR driver */ - error = HW_ACODEC_MODIFY_WRITE(ANALOG_OUTPUT_ENABLE_REG, - EN_HSR_MASK, 0); - if (0 != error) { - dev_err(dev, "Power Up HSR Driver %d", error); - return error; - } - - initialVal_DA = HW_REG_READ(DIGITAL_DA_CHANNELS_ENABLE_REG); - if (EN_DA2 & initialVal_DA) - return 0; - - error = HW_ACODEC_MODIFY_WRITE(SLOT_SELECTION_TO_DA2_REG, - SLOT09_FOR_DA_PATH, 0); - if (0 != error) { - dev_err(dev, - "Data sent to DA2 from Slot 09 %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_MUXES_REG1, DA2_TO_HSR, - 0); - if (0 != error) { - dev_err(dev, - "DA_IN2 path mixed with sidetone FIR %d", - error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_DA_CHANNELS_ENABLE_REG, - EN_DA2, 0); - if (0 != error) { - dev_err(dev, "Power up HSR %d ", error); - return error; - } - - /* Power Up HSR DAC driver */ - error = HW_ACODEC_MODIFY_WRITE(ADC_DAC_ENABLE_REG, - POWER_UP_HSR_DAC, 0); - if (0 != error) { - dev_err(dev, "Power Up HSR DAC driver %d", error); - return error; - } - - /* Power up HSR DAC and digital path */ - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_OUTPUT_ENABLE_REG, - EN_HSR_MASK, 0); - if (0 != error) { - dev_err(dev, - "Power up HSR DAC and digital path %d", - error); - return error; - } - - /* - * TEST START .havent cleared the bits in power down.Disable short - * detection. Pull Down output to ground, Use local oscillator, - * Gain change without zero cross control - */ - - error = HW_ACODEC_MODIFY_WRITE(SHORT_CIRCUIT_DISABLE_REG, - HS_SHORT_DIS|HS_PULL_DOWN_EN|HS_OSC_EN|HS_ZCD_DIS, 0); - if (0 != error) { - dev_err(dev, "Disable short detection." - "Pull Down output to ground, Use local oscillator," - "Gain change without zero cross control %d", error); - return error; - } - /* TEST END */ - } - ste_audio_io_unmute_headset(channel_index, 0, dev); - dump_acodec_registers(__func__, dev); - return error; -} - -/** - * @brief Power down headset on a specific channel - * @channel_index Channel-index of headset - * @return 0 on success otherwise negative error code - */ -int ste_audio_io_power_down_headset(enum AUDIOIO_CH_INDEX channel_index, - struct device *dev) -{ - int error = 0; - unsigned char initialVal_DA = 0; - unsigned long end_time; - - /* Check if HS Power Down request is mono or Stereo channel */ - if (!(channel_index & (e_CHANNEL_1 | e_CHANNEL_2))) { - dev_err(dev, "HS should have mono or stereo channels"); - return -EINVAL; - } - - /* Disable Negative Charge Pump */ - error = HW_ACODEC_MODIFY_WRITE(NCP_ENABLE_HS_AUTOSTART_REG, - (EN_NEG_CP|HS_AUTO_EN), 0); - if (0 != error) { - dev_err(dev, "NCP not fully controlled with EnCpHs bit %d", - error); - return error; - } - error = HW_ACODEC_MODIFY_WRITE(NCP_ENABLE_HS_AUTOSTART_REG, 0, - EN_NEG_CP); - if (0 != error) { - dev_err(dev, "Disable Negative Charge Pump %d", error); - return error; - } - - /* Wait for negative charge pump to stop */ - end_time = jiffies + msecs_to_jiffies(NCP_TIMEOUT); - while ((HW_REG_READ(IRQ_STATUS_MSB_REG) & NCP_READY_MASK) - && time_after_eq(end_time, jiffies)) { - set_current_state(TASK_UNINTERRUPTIBLE); - schedule_timeout(1); - } - - if (HW_REG_READ(IRQ_STATUS_MSB_REG) & NCP_READY_MASK) { - error = -EFAULT; - dev_err(dev, "Negative Charge Pump stop error % d", error); - return error; - } - - if (channel_index & e_CHANNEL_1) { - initialVal_DA = HW_REG_READ(DIGITAL_DA_CHANNELS_ENABLE_REG); - if (!(initialVal_DA & EN_DA1)) - return 0; - - /* Power Down HSL driver */ - error = HW_ACODEC_MODIFY_WRITE(ANALOG_OUTPUT_ENABLE_REG, 0, - EN_HSL_MASK); - if (0 != error) { - dev_err(dev, "Power down HSL Driver %d", error); - return error; - } - - /* Power Down HSL DAC driver */ - error = HW_ACODEC_MODIFY_WRITE(ADC_DAC_ENABLE_REG, 0, - POWER_UP_HSL_DAC); - if (0 != error) { - dev_err(dev, "Power Up HSL DAC Driver %d", error); - return error; - } - - /* Power Down HSL DAC and digital path */ - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_OUTPUT_ENABLE_REG, 0, - EN_HSL_MASK); - if (0 != error) { - dev_err(dev, - "Power down HSL DAC and digital path %d", - error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_DA_CHANNELS_ENABLE_REG, - 0, EN_DA1); - if (0 != error) { - dev_err(dev, "Disable DA1 %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_MUXES_REG1, - 0, DA1_TO_HSL); - if (0 != error) { - dev_err(dev, - "Clear DA_IN1 path mixed with sidetone FIR %d", - error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(SLOT_SELECTION_TO_DA1_REG, 0, - SLOT08_FOR_DA_PATH); - if (0 != error) { - dev_err(dev, - "Data sent to DA1 cleared from Slot 08 %d", - error); - return error; - } - - - } - /* Enable DA2 for HSR */ - - if (channel_index & e_CHANNEL_2) { - initialVal_DA = HW_REG_READ(DIGITAL_DA_CHANNELS_ENABLE_REG); - if (!(initialVal_DA & EN_DA2)) - return 0; - - /* Power Down HSR driver */ - error = HW_ACODEC_MODIFY_WRITE(ANALOG_OUTPUT_ENABLE_REG, 0, - EN_HSR_MASK); - if (0 != error) { - dev_err(dev, "Power down HSR Driver %d", error); - return error; - } - - /* Power Down HSR DAC driver */ - error = HW_ACODEC_MODIFY_WRITE(ADC_DAC_ENABLE_REG, 0, - POWER_UP_HSR_DAC); - if (0 != error) { - dev_err(dev, "Power down HSR DAC Driver %d", error); - return error; - } - - /* Power Down HSR DAC and digital path */ - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_OUTPUT_ENABLE_REG, 0, - EN_HSR_MASK); - if (0 != error) { - dev_err(dev, - "Power down HSR DAC and digital path %d", - error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_DA_CHANNELS_ENABLE_REG, - 0, EN_DA2); - if (0 != error) { - dev_err(dev, "Disable DA2 %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_MUXES_REG1, 0, - DA2_TO_HSR); - if (0 != error) { - dev_err(dev, - "Clear DA_IN2 path mixed with sidetone FIR %d", - error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(SLOT_SELECTION_TO_DA2_REG, 0, - SLOT09_FOR_DA_PATH); - if (0 != error) { - dev_err(dev, - "Data sent to DA2 cleared from Slot 09 %d", - error); - return error; - } - - } - dump_acodec_registers(__func__, dev); - return error; -} - -/** - * @brief Mute headset on a specific channel - * @channel_index Headeset channel-index - * @return 0 on success otherwise negative error code - */ -int ste_audio_io_mute_headset(enum AUDIOIO_CH_INDEX channel_index, - struct device *dev) -{ - int error = 0; - /* Check if HS Mute request is mono or Stereo channel */ - if (!(channel_index & (e_CHANNEL_1 | e_CHANNEL_2))) { - dev_err(dev, "HS should have mono or stereo channels"); - return -EINVAL; - } - - if (channel_index & e_CHANNEL_1) { - /* Mute HSL */ - error = HW_ACODEC_MODIFY_WRITE(MUTE_HS_EAR_REG, - EN_HSL_MASK | EN_HSL_DAC_MASK, - 0); - if (0 != error) { - dev_err(dev, "Mute HSL %d", error); - return error; - } - } - - if (channel_index & e_CHANNEL_2) { - /* Mute HSR */ - error = HW_ACODEC_MODIFY_WRITE(MUTE_HS_EAR_REG, - EN_HSR_MASK | EN_HSR_DAC_MASK, - 0); - if (0 != error) { - dev_err(dev, "Mute HSR %d", error); - return error; - } - } - - dump_acodec_registers(__func__, dev); - return error; -} - -/** - * @brief Unmute headset on a specific channel - * @channel_index Headeset channel-index - * @gain Gain index of headset - * @return 0 on success otherwise negative error code - */ -int ste_audio_io_unmute_headset(enum AUDIOIO_CH_INDEX channel_index, int *gain, - struct device *dev) -{ - int error = 0; - - /* Check if HS UnMute request is mono or Stereo channel */ - if (!(channel_index & (e_CHANNEL_1 | e_CHANNEL_2))) { - dev_err(dev, "HS should have mono or stereo channels"); - return -EINVAL; - } - - if (channel_index & e_CHANNEL_1) { - /* UnMute HSL */ - error = HW_ACODEC_MODIFY_WRITE(MUTE_HS_EAR_REG, 0, - EN_HSL_MASK | EN_HSL_DAC_MASK); - if (0 != error) { - dev_err(dev, "UnMute HSL %d", error); - return error; - } - } - - if (channel_index & e_CHANNEL_2) { - /* UnMute HSR */ - error = HW_ACODEC_MODIFY_WRITE(MUTE_HS_EAR_REG, 0, - EN_HSR_MASK | EN_HSR_DAC_MASK); - if (0 != error) { - dev_err(dev, "UnMute HSR %d", error); - return error; - } - } - dump_acodec_registers(__func__, dev); - return error; -} - -/** - * @brief Enables fading of headset on a specific channel - * @return 0 on success otherwise negative error code - */ -int ste_audio_io_enable_fade_headset(struct device *dev) -{ - int error = 0; - - error = HW_ACODEC_MODIFY_WRITE(SHORT_CIRCUIT_DISABLE_REG, - 0, DIS_HS_FAD); - if (0 != error) { - dev_err(dev, "Enable fading for HS %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DA1_DIGITAL_GAIN_REG, 0, DIS_FADING); - if (0 != error) { - dev_err(dev, "Enable fading for HSL %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(HSL_EAR_DIGITAL_GAIN_REG, 0, - DIS_DIG_GAIN_FADING); - if (0 != error) { - dev_err(dev, "Enable fading for Digital Gain of HSL %d", - error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DA2_DIGITAL_GAIN_REG, 0, DIS_FADING); - if (0 != error) { - dev_err(dev, "Enable fading for HSR %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(HSR_DIGITAL_GAIN_REG, 0, - DIS_DIG_GAIN_FADING); - if (0 != error) { - dev_err(dev, "Enable fading for Digital Gain of HSR %d", - error); - return error; - } - - return error; -} -/** - * @brief Disables fading of headset on a specific channel - * @return 0 on success otherwise negative error code - */ - -int ste_audio_io_disable_fade_headset(struct device *dev) -{ - int error = 0; - error = HW_ACODEC_MODIFY_WRITE(SHORT_CIRCUIT_DISABLE_REG, - DIS_HS_FAD, 0); - if (0 != error) { - dev_err(dev, "Disable fading for HS %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DA1_DIGITAL_GAIN_REG, DIS_FADING, 0); - if (0 != error) { - dev_err(dev, "Disable fading for HSL %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(HSL_EAR_DIGITAL_GAIN_REG, - DIS_DIG_GAIN_FADING, 0); - if (0 != error) { - dev_err(dev, "Disable fading for Digital Gain of HSL %d", - error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DA2_DIGITAL_GAIN_REG, DIS_FADING, 0); - if (0 != error) { - dev_err(dev, "Disable fading for HSR %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(HSR_DIGITAL_GAIN_REG, - DIS_DIG_GAIN_FADING, 0); - if (0 != error) { - dev_err(dev, "Disable fading for Digital Gain of HSR %d", - error); - return error; - } - return error; -} -/** - * @brief Power up earpiece - * @channel_index Channel-index - * @return 0 on success otherwise negative error code - */ -int ste_audio_io_power_up_earpiece(enum AUDIOIO_CH_INDEX channel_index, - struct device *dev) -{ - int error = 0; - unsigned char initialVal_DA = 0; - - /* Check if Earpiece PowerUp request is mono channel */ - if (!(channel_index & e_CHANNEL_1)) { - dev_err(dev, "EARPIECE should have mono channel"); - return -EINVAL; - } - - initialVal_DA = HW_REG_READ(DIGITAL_DA_CHANNELS_ENABLE_REG); - - /* Check if Earpiece is already powered up or DA1 being used by HS */ - if (EN_DA1 & initialVal_DA) - return 0; - - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_MUXES_REG1, - DA1_TO_HSL, 0); - if (0 != error) { - dev_err(dev, - "DA_IN1 path mixed with sidetone FIR %d", error); - return error; - } - - /* Enable DA1 */ - error = HW_ACODEC_MODIFY_WRITE(SLOT_SELECTION_TO_DA1_REG, - SLOT08_FOR_DA_PATH, 0); - if (0 != error) { - dev_err(dev, "Data sent to DA1 from Slot 08 %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_DA_CHANNELS_ENABLE_REG, - EN_DA1, 0); - if (0 != error) { - dev_err(dev, "Enable DA1 %d", error); - return error; - } - - /* Power Up EAR class-AB driver */ - error = HW_ACODEC_MODIFY_WRITE(ANALOG_OUTPUT_ENABLE_REG, - EN_EAR_MASK, 0); - if (0 != error) { - dev_err(dev, "Power Up EAR class-AB driver %d", error); - return error; - } - - /* Power up EAR DAC and digital path */ - error = HW_ACODEC_MODIFY_WRITE( - DIGITAL_OUTPUT_ENABLE_REG, EN_EAR_MASK, 0); - if (0 != error) { - dev_err(dev, "Power up EAR DAC and digital path %d", error); - return error; - } - dump_acodec_registers(__func__, dev); - return error; -} -/** - * @brief Power down earpiece - * @channel_index Channel-index - * @return 0 on success otherwise negative error code - */ -int ste_audio_io_power_down_earpiece(enum AUDIOIO_CH_INDEX channel_index, - struct device *dev) -{ - int error = 0; - unsigned char initialVal_DA = 0; - - /* Check if Earpiece PowerDown request is mono channel */ - if (!(channel_index & e_CHANNEL_1)) { - dev_err(dev, "EARPIECE should have mono channel"); - return -EINVAL; - } - - /* Check if Earpiece is already powered down or DA1 being used by HS */ - initialVal_DA = HW_REG_READ(DIGITAL_DA_CHANNELS_ENABLE_REG); - if (!(initialVal_DA & EN_DA1)) - return 0; - - /* Power Down EAR class-AB driver */ - error = HW_ACODEC_MODIFY_WRITE(ANALOG_OUTPUT_ENABLE_REG, - 0, EN_EAR_MASK); - if (0 != error) { - dev_err(dev, "Power Down EAR class-AB driver %d", error); - return error; - } - - /* Power Down EAR DAC and digital path */ - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_OUTPUT_ENABLE_REG, - 0, EN_EAR_MASK); - if (0 != error) { - dev_err(dev, - "Power Down EAR DAC and digital path %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_MUXES_REG1, 0, DA1_TO_HSL); - if (0 != error) { - dev_err(dev, - "Clear DA_IN1 path mixed with sidetone FIR %d", - error); - return error; - } - - /* Disable DA1 */ - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_DA_CHANNELS_ENABLE_REG, - 0, EN_DA1); - if (0 != error) { - dev_err(dev, "Disable DA1 %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(SLOT_SELECTION_TO_DA1_REG, 0, - SLOT08_FOR_DA_PATH); - if (0 != error) { - dev_err(dev, - "Data sent to DA1 cleared from Slot 08 %d", error); - return error; - } - dump_acodec_registers(__func__, dev); - return error; -} -/** - * @brief Mute earpiece - * @channel_index Channel-index - * @return 0 on success otherwise negative error code - */ - -int ste_audio_io_mute_earpiece(enum AUDIOIO_CH_INDEX channel_index, - struct device *dev) -{ - int error = 0; - - /* Check if Earpiece Mute request is mono channel */ - if (!(channel_index & e_CHANNEL_1)) { - dev_err(dev, "EARPIECE should have mono channel"); - return -EINVAL; - } - - /* Mute Earpiece */ - error = HW_ACODEC_MODIFY_WRITE(MUTE_HS_EAR_REG, - EN_EAR_MASK | EN_EAR_DAC_MASK, 0); - if (0 != error) { - dev_err(dev, "Mute Earpiece %d", error); - return error; - } - dump_acodec_registers(__func__, dev); - return error; -} -/** - * @brief Unmute earpiece - * @channel_index Channel-index - * @gain Gain index of earpiece - * @return 0 on success otherwise negative error code - */ -int ste_audio_io_unmute_earpiece(enum AUDIOIO_CH_INDEX channel_index, int *gain, - struct device *dev) -{ - int error = 0; - - /* Check if Earpiece UnMute request is mono channel */ - if (!(channel_index & e_CHANNEL_1)) { - dev_err(dev, "EARPIECE should have mono channel"); - return -EINVAL; - } - - /* UnMute Earpiece */ - error = HW_ACODEC_MODIFY_WRITE(MUTE_HS_EAR_REG, 0, - EN_EAR_MASK | EN_EAR_DAC_MASK); - if (0 != error) { - dev_err(dev, "UnMute Earpiece %d", error); - return error; - } - dump_acodec_registers(__func__, dev); - return error; -} -/** - * @brief Enables fading of earpiece - * @return 0 on success otherwise negative error code - */ -int ste_audio_io_enable_fade_earpiece(struct device *dev) -{ - int error = 0; - - error = HW_ACODEC_MODIFY_WRITE(DA1_DIGITAL_GAIN_REG, 0, DIS_FADING); - if (0 != error) { - dev_err(dev, "Enable fading for Ear %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(HSL_EAR_DIGITAL_GAIN_REG, 0, - DIS_DIG_GAIN_FADING); - if (0 != error) { - dev_err(dev, - "Enable fading for Digital Gain of Ear %d", error); - return error; - } - - return error; -} -/** - * @brief Disables fading of earpiece - * @return 0 on success otherwise negative error code - */ -int ste_audio_io_disable_fade_earpiece(struct device *dev) -{ - int error = 0; - error = HW_ACODEC_MODIFY_WRITE(DA1_DIGITAL_GAIN_REG, DIS_FADING, 0); - if (0 != error) { - dev_err(dev, "Disable fading for Ear %d", error); - return error; - } - return error; -} -/** - * @brief Power up IHF on a specific channel - * @channel_index Channel-index - * @return 0 on success otherwise negative error code - */ - -int ste_audio_io_power_up_ihf(enum AUDIOIO_CH_INDEX channel_index, - struct device *dev) -{ - int error = 0; - unsigned char initialVal_DA = 0; - - /* Check if IHF PowerUp request is mono or Stereo channel */ - if (!(channel_index & (e_CHANNEL_1 | e_CHANNEL_2))) { - dev_err(dev, "IHF should have mono or stereo channels"); - return -EINVAL; - } - - if (channel_index & e_CHANNEL_1) { - initialVal_DA = HW_REG_READ(DIGITAL_DA_CHANNELS_ENABLE_REG); - if (EN_DA3 & initialVal_DA) - return 0; - - /* Enable DA3 for IHFL */ - error = HW_ACODEC_MODIFY_WRITE(SLOT_SELECTION_TO_DA3_REG, - SLOT10_FOR_DA_PATH, 0); - if (0 != error) { - dev_err(dev, "Data sent to DA3 from Slot 10 %d", - error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_DA_CHANNELS_ENABLE_REG, - EN_DA3, 0); - if (0 != error) { - dev_err(dev, "Power up IHFL %d", error); - return error; - } - - /* Power Up HFL Class-D driver */ - error = HW_ACODEC_MODIFY_WRITE(ANALOG_OUTPUT_ENABLE_REG, - EN_HFL_MASK, 0); - if (0 != error) { - dev_err(dev, "Power Up HFL Class-D Driver %d", error); - return error; - } - - /* Power up HFL Class D driver and digital path */ - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_OUTPUT_ENABLE_REG, - EN_HFL_MASK, 0); - if (0 != error) { - dev_err(dev, - "Power up HFL Class D driver & digital path %d", - error); - return error; - } - } - - /* Enable DA4 for IHFR */ - if (channel_index & e_CHANNEL_2) { - initialVal_DA = HW_REG_READ(DIGITAL_DA_CHANNELS_ENABLE_REG); - if (EN_DA4 & initialVal_DA) - return 0; - - error = HW_ACODEC_MODIFY_WRITE(SLOT_SELECTION_TO_DA4_REG, - SLOT11_FOR_DA_PATH, 0); - if (0 != error) { - dev_err(dev, "Data sent to DA4 from Slot 11 %d", - error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_DA_CHANNELS_ENABLE_REG, - EN_DA4, 0); - if (0 != error) { - dev_err(dev, "Enable DA4 %d", error); - return error; - } - - /* Power Up HFR Class-D driver */ - error = HW_ACODEC_MODIFY_WRITE(ANALOG_OUTPUT_ENABLE_REG, - EN_HFR_MASK, 0); - if (0 != error) { - dev_err(dev, "Power Up HFR Class-D Driver %d", error); - return error; - } - - /* Power up HFR Class D driver and digital path */ - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_OUTPUT_ENABLE_REG, - EN_HFR_MASK, 0); - if (0 != error) { - dev_err(dev, - "Power up HFR Class D driver and digital path %d", - error); - return error; - } - } - dump_acodec_registers(__func__, dev); - return error; -} -/** - * @brief Power down IHF on a specific channel - * @channel_index Channel-index - * @return 0 on success otherwise negative error code - */ -int ste_audio_io_power_down_ihf(enum AUDIOIO_CH_INDEX channel_index, - struct device *dev) -{ - int error = 0; - unsigned char initialVal_DA = 0; - - /* Check if IHF Power Down request is mono or Stereo channel */ - if (!(channel_index & (e_CHANNEL_1 | e_CHANNEL_2))) { - dev_err(dev, "IHF should have mono or stereo channels"); - return -EINVAL; - } - - if (channel_index & e_CHANNEL_1) { - initialVal_DA = HW_REG_READ(DIGITAL_DA_CHANNELS_ENABLE_REG); - if (!(initialVal_DA & EN_DA3)) - return 0; - - /* Power Down HFL Class-D driver */ - error = HW_ACODEC_MODIFY_WRITE(ANALOG_OUTPUT_ENABLE_REG, 0, - EN_HFL_MASK); - if (0 != error) { - dev_err(dev, "Power Down HFL Class-D Driver %d", - error); - return error; - } - - /* Power Down HFL Class D driver and digital path */ - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_OUTPUT_ENABLE_REG, 0, - EN_HFL_MASK); - if (0 != error) { - dev_err(dev, - "Power Down HFL Class D driver & digital path %d", - error); - return error; - } - - /* Disable DA3 for IHFL */ - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_DA_CHANNELS_ENABLE_REG, - 0, EN_DA3); - if (0 != error) { - dev_err(dev, "Disable DA3 %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(SLOT_SELECTION_TO_DA3_REG, 0, - SLOT10_FOR_DA_PATH); - if (0 != error) { - dev_err(dev, - "Data sent to DA3 cleared from Slot 10 %d", - error); - return error; - } - } - - if (channel_index & e_CHANNEL_2) { - initialVal_DA = HW_REG_READ(DIGITAL_DA_CHANNELS_ENABLE_REG); - - /* Check if IHF is already powered Down */ - if (!(initialVal_DA & EN_DA4)) - return 0; - - /* Power Down HFR Class-D Driver */ - error = HW_ACODEC_MODIFY_WRITE(ANALOG_OUTPUT_ENABLE_REG, 0, - EN_HFR_MASK); - if (0 != error) { - dev_err(dev, "Power Down HFR Class-D Driver %d", - error); - return error; - } - - /* Power Down HFR Class D driver and digital path */ - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_OUTPUT_ENABLE_REG, 0, - EN_HFR_MASK); - if (0 != error) { - dev_err(dev, - "Power Down HFR Class D driver & digital path %d", - error); - return error; - } - - /* Disable DA4 for IHFR */ - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_DA_CHANNELS_ENABLE_REG, - 0, EN_DA4); - if (0 != error) { - dev_err(dev, "Disable DA4 %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(SLOT_SELECTION_TO_DA4_REG, 0, - SLOT11_FOR_DA_PATH); - if (0 != error) { - dev_err(dev, - "Data sent to DA4 cleared from Slot 11 %d", - error); - return error; - } - } - dump_acodec_registers(__func__, dev); - return error; -} -/** - * @brief Mute IHF on a specific channel - * @channel_index Channel-index - * @return 0 on success otherwise negative error code - */ - -int ste_audio_io_mute_ihf(enum AUDIOIO_CH_INDEX channel_index, - struct device *dev) -{ - int error = 0; - - if ((channel_index & (e_CHANNEL_1 | e_CHANNEL_2))) { - error = ste_audio_io_set_ihf_gain(channel_index, 0, -63, - 0, dev); - if (0 != error) { - dev_err(dev, "Mute ihf %d", error); - return error; - } - } - dump_acodec_registers(__func__, dev); - return error; -} -/** - * @brief Unmute IHF on a specific channel - * @channel_index Channel-index - * @gain Gain index of IHF - * @return 0 on success otherwise negative error code - */ - -int ste_audio_io_unmute_ihf(enum AUDIOIO_CH_INDEX channel_index, int *gain, - struct device *dev) -{ - int error = 0; - - if (channel_index & e_CHANNEL_1) { - error = ste_audio_io_set_ihf_gain(channel_index, 0, gain[0], - 0, dev); - if (0 != error) { - dev_err(dev, "UnMute ihf %d", error); - return error; - } - } - - if (channel_index & e_CHANNEL_2) { - error = ste_audio_io_set_ihf_gain(channel_index, 0, gain[1], - 0, dev); - if (0 != error) { - dev_err(dev, "UnMute ihf %d", error); - return error; - } - } - dump_acodec_registers(__func__, dev); - return error; -} -/** - * @brief Enable fading of IHF - * @return 0 on success otherwise negative error code - */ - -int ste_audio_io_enable_fade_ihf(struct device *dev) -{ - int error = 0; - - error = HW_ACODEC_MODIFY_WRITE(DA3_DIGITAL_GAIN_REG, 0, DIS_FADING); - if (0 != error) { - dev_err(dev, "Enable fading for HFL %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DA4_DIGITAL_GAIN_REG, 0, DIS_FADING); - if (0 != error) { - dev_err(dev, "Enable fading for HFR %d", error); - return error; - } - return error; -} -/** - * @brief Disable fading of IHF - * @return 0 on success otherwise negative error code - */ - -int ste_audio_io_disable_fade_ihf(struct device *dev) -{ - int error = 0; - - error = HW_ACODEC_MODIFY_WRITE(DA3_DIGITAL_GAIN_REG, DIS_FADING, 0); - if (0 != error) { - dev_err(dev, "Disable fading for HFL %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DA4_DIGITAL_GAIN_REG, DIS_FADING, 0); - if (0 != error) { - dev_err(dev, "Disable fading for HFR %d", error); - return error; - } - return error; -} -/** - * @brief Power up VIBL - * @channel_index Channel-index of VIBL - * @return 0 on success otherwise negative error code - */ - -int ste_audio_io_power_up_vibl(enum AUDIOIO_CH_INDEX channel_index, - struct device *dev) -{ - int error = 0; - unsigned char initialVal_DA = 0; - - /* Check if VibL PowerUp request is mono channel */ - if (!(channel_index & e_CHANNEL_1)) { - dev_err(dev, "VibL should have mono channel"); - return -EINVAL; - } - - /* Try to allocate vibrator for audio left channel */ - error = ste_audioio_vibrator_alloc(STE_AUDIOIO_CLIENT_AUDIO_L, - STE_AUDIOIO_CLIENT_AUDIO_R | STE_AUDIOIO_CLIENT_AUDIO_L); - if (error) { - dev_err(dev, " Couldn't allocate vibrator %d, client %d", - error, STE_AUDIOIO_CLIENT_AUDIO_L); - return error; - } - - initialVal_DA = HW_REG_READ(DIGITAL_DA_CHANNELS_ENABLE_REG); - - /* Check if VibL is already powered up */ - if (initialVal_DA & EN_DA5) - return 0; - - /* Enable DA5 for vibl */ - error = HW_ACODEC_MODIFY_WRITE(SLOT_SELECTION_TO_DA5_REG, - SLOT12_FOR_DA_PATH, 0); - if (0 != error) { - dev_err(dev, "Data sent to DA5 from Slot 12 %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_DA_CHANNELS_ENABLE_REG, - EN_DA5, 0); - if (0 != error) { - dev_err(dev, "Enable DA5 for VibL %d", error); - return error; - } - - /* Power Up VibL Class-D driver */ - error = HW_ACODEC_MODIFY_WRITE( - ANALOG_OUTPUT_ENABLE_REG, EN_VIBL_MASK, 0); - if (0 != error) { - dev_err(dev, "Power Up VibL Class-D Driver %d", error); - return error; - } - - /* Power up VibL Class D driver and digital path */ - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_OUTPUT_ENABLE_REG, - EN_VIBL_MASK, 0); - if (0 != error) { - dev_err(dev, - "Power up VibL Class D driver and digital path %d", - error); - return error; - } - return error; -} -/** - * @brief Power down VIBL - * @channel_index Channel-index of VIBL - * @return 0 on success otherwise negative error code - */ -int ste_audio_io_power_down_vibl(enum AUDIOIO_CH_INDEX channel_index, - struct device *dev) -{ - int error = 0; - unsigned char initialVal_DA = 0; - - /* Check if VibL Power Down request is mono channel */ - if (!(channel_index & e_CHANNEL_1)) { - dev_err(dev, "VibL should have mono channel"); - return -EINVAL; - } - - initialVal_DA = HW_REG_READ(DIGITAL_DA_CHANNELS_ENABLE_REG); - - /* Check if VibL is already powered down */ - if (!(initialVal_DA & EN_DA5)) - return 0; - - - /* Power Down VibL Class-D driver */ - error = HW_ACODEC_MODIFY_WRITE(ANALOG_OUTPUT_ENABLE_REG, - 0, EN_VIBL_MASK); - if (0 != error) { - dev_err(dev, "Power Down VibL Class-D Driver %d", error); - return error; - } - - /* Power Down VibL Class D driver and digital path */ - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_OUTPUT_ENABLE_REG, 0, - EN_VIBL_MASK); - if (0 != error) { - dev_err(dev, - "Power Down VibL Class D driver & digital path %d", - error); - return error; - } - - /* Disable DA5 for VibL */ - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_DA_CHANNELS_ENABLE_REG, - 0, EN_DA5); - if (0 != error) { - dev_err(dev, "Disable DA5 for VibL %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(SLOT_SELECTION_TO_DA5_REG, 0, - SLOT12_FOR_DA_PATH); - if (0 != error) { - dev_err(dev, - "Data sent to DA5 cleared from Slot 12 %d", error); - return error; - } - - /* Release vibrator */ - ste_audioio_vibrator_release(STE_AUDIOIO_CLIENT_AUDIO_L); - - return error; -} -/** - * @brief Enable fading of VIBL - * @return 0 on success otherwise negative error code - */ -int ste_audio_io_enable_fade_vibl(struct device *dev) -{ - int error = 0; - - error = HW_ACODEC_MODIFY_WRITE(DA5_DIGITAL_GAIN_REG, 0, DIS_FADING); - if (0 != error) { - dev_err(dev, "Enable fading for VibL %d", error); - return error; - } - return error; -} -/** - * @brief Disable fading of VIBL - * @return 0 on success otherwise negative error code - */ -int ste_audio_io_disable_fade_vibl(struct device *dev) -{ - int error = 0; - - error = HW_ACODEC_MODIFY_WRITE(DA5_DIGITAL_GAIN_REG, DIS_FADING, 0); - if (0 != error) { - dev_err(dev, "Disable fading for VibL %d", error); - return error; - } - return error; -} -/** - * @brief Power up VIBR - * @channel_index Channel-index of VIBR - * @return 0 on success otherwise negative error code - */ -int ste_audio_io_power_up_vibr(enum AUDIOIO_CH_INDEX channel_index, - struct device *dev) -{ - int error = 0; - unsigned char initialVal_DA = 0; - - /* Check if VibR PowerUp request is mono channel */ - if (!(channel_index & e_CHANNEL_1)) { - dev_err(dev, "VibR should have mono channel"); - return -EINVAL; - } - - /* Try to allocate vibrator for audio right channel */ - error = ste_audioio_vibrator_alloc(STE_AUDIOIO_CLIENT_AUDIO_R, - STE_AUDIOIO_CLIENT_AUDIO_R | STE_AUDIOIO_CLIENT_AUDIO_L); - if (error) { - dev_err(dev, " Couldn't allocate vibrator %d, client %d", - error, STE_AUDIOIO_CLIENT_AUDIO_R); - return error; - } - - initialVal_DA = HW_REG_READ(DIGITAL_DA_CHANNELS_ENABLE_REG); - - /* Check if VibR is already powered up */ - if (initialVal_DA & EN_DA6) - return 0; - - /* Enable DA6 for vibr */ - error = HW_ACODEC_MODIFY_WRITE(SLOT_SELECTION_TO_DA6_REG, - SLOT13_FOR_DA_PATH, 0); - if (0 != error) { - dev_err(dev, "Data sent to DA5 from Slot 13 %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE( - DIGITAL_DA_CHANNELS_ENABLE_REG, EN_DA6, 0); - if (0 != error) { - dev_err(dev, "Enable DA6 for VibR %d", error); - return error; - } - - /* Power Up VibR Class-D driver */ - error = HW_ACODEC_MODIFY_WRITE( - ANALOG_OUTPUT_ENABLE_REG, EN_VIBR_MASK, 0); - if (0 != error) { - dev_err(dev, "Power Up VibR Class-D Driver %d", error); - return error; - } - - /* Power up VibR Class D driver and digital path */ - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_OUTPUT_ENABLE_REG, - EN_VIBR_MASK, 0); - if (0 != error) { - dev_err(dev, - "Power up VibR Class D driver & digital path %d", - error); - return error; - } - return error; -} -/** - * @brief Power down VIBR - * @channel_index Channel-index of VIBR - * @return 0 on success otherwise negative error code - */ -int ste_audio_io_power_down_vibr(enum AUDIOIO_CH_INDEX channel_index, - struct device *dev) -{ - int error = 0; - unsigned char initialVal_DA = 0; - - /* Check if VibR PowerDown request is mono channel */ - if (!(channel_index & e_CHANNEL_1)) { - dev_err(dev, "VibR should have mono channel"); - return -EINVAL; - } - - initialVal_DA = HW_REG_READ(DIGITAL_DA_CHANNELS_ENABLE_REG); - - /* Check if VibR is already powered down */ - if (!(initialVal_DA & EN_DA6)) - return 0; - - - /* Power Down VibR Class-D driver */ - error = HW_ACODEC_MODIFY_WRITE(ANALOG_OUTPUT_ENABLE_REG, 0, - EN_VIBR_MASK); - if (0 != error) { - dev_err(dev, "Power Down VibR Class-D Driver %d", error); - return error; - } - - /* Power Down VibR Class D driver and digital path */ - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_OUTPUT_ENABLE_REG, 0, - EN_VIBR_MASK); - if (0 != error) { - dev_err(dev, - "Power Down VibR Class D driver & digital path %d", - error); - return error; - } - - /* Disable DA6 for VibR */ - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_DA_CHANNELS_ENABLE_REG, - 0, EN_DA6); - if (0 != error) { - dev_err(dev, "Disable DA6 for VibR %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(SLOT_SELECTION_TO_DA6_REG, 0, - SLOT13_FOR_DA_PATH); - if (0 != error) { - dev_err(dev, "Data sent to DA5 cleared from Slot 13 %d", - error); - return error; - } - - /* Release vibrator */ - ste_audioio_vibrator_release(STE_AUDIOIO_CLIENT_AUDIO_R); - - return error; -} -/** - * @brief Enable fading of VIBR - * @return 0 on success otherwise negative error code - */ -int ste_audio_io_enable_fade_vibr(struct device *dev) -{ - int error = 0; - - error = HW_ACODEC_MODIFY_WRITE(DA6_DIGITAL_GAIN_REG, 0, DIS_FADING); - if (0 != error) { - dev_err(dev, "Enable fading for VibR %d", error); - return error; - } - return error; -} -/** - * @brief Disable fading of VIBR - * @return 0 on success otherwise negative error code - */ -int ste_audio_io_disable_fade_vibr(struct device *dev) -{ - int error = 0; - - error = HW_ACODEC_MODIFY_WRITE(DA6_DIGITAL_GAIN_REG, DIS_FADING, 0); - if (0 != error) { - dev_err(dev, "Disable fading for VibR %d", error); - return error; - } - return error; -} -/** - * @brief Power up MIC1A - * @channel_index Channel-index of MIC1A - * @return 0 on success otherwise negative error code - */ -int ste_audio_io_power_up_mic1a(enum AUDIOIO_CH_INDEX channel_index, - struct device *dev) -{ - int error = 0; - unsigned char initialVal_AD = 0; - - /* Check if Mic1 PowerUp request is mono channel */ - - if (!(channel_index & e_CHANNEL_1)) { - dev_err(dev, "MIC1 should have mono channel"); - return -EINVAL; - } - - initialVal_AD = HW_REG_READ(DIGITAL_DA_CHANNELS_ENABLE_REG); - /* Check if Mic1 is already powered up or used by Dmic3 */ - if (EN_AD3 & initialVal_AD) - return 0; - - error = HW_REG_WRITE(AD_ALLOCATION_TO_SLOT0_1_REG, DATA_FROM_AD_OUT3); - if (0 != error) { - dev_err(dev, "Slot 02 outputs data from AD_OUT3 %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_AD_CHANNELS_ENABLE_REG, - EN_AD3, 0); - if (0 != error) { - dev_err(dev, "Enable AD3 for Mic1 %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_MUXES_REG1, 0, - SEL_DMIC3_FOR_AD_OUT3); - if (0 != error) { - dev_err(dev, "Select ADC1 for AD_OUT3 %d", error); - return error; - } - - /* Select MIC1A */ - error = HW_ACODEC_MODIFY_WRITE(ADC_DAC_ENABLE_REG, 0, - SEL_MIC1B_CLR_MIC1A); - if (0 != error) { - dev_err(dev, "Select MIC1A %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(LINE_IN_MIC_CONF_REG, EN_MIC1, 0); - if (0 != error) { - dev_err(dev, "Power up Mic1 %d", error); - return error; - } - - /* Power Up ADC1 */ - error = HW_ACODEC_MODIFY_WRITE(ADC_DAC_ENABLE_REG, POWER_UP_ADC1, 0); - if (0 != error) { - dev_err(dev, "Power Up ADC1 %d", error); - return error; - } - -return error; -} -/** - * @brief Power down MIC1A - * @channel_index Channel-index of MIC1A - * @return 0 on success otherwise negative error code - */ - -int ste_audio_io_power_down_mic1a(enum AUDIOIO_CH_INDEX channel_index, - struct device *dev) -{ - int error = 0; - unsigned char initialVal_AD = 0; - - /* Check if Mic1 PowerDown request is mono channel */ - - if (!(channel_index & e_CHANNEL_1)) { - dev_err(dev, "Mic1 should have mono channel"); - return -EINVAL; - } - - initialVal_AD = HW_REG_READ(DIGITAL_DA_CHANNELS_ENABLE_REG); - /* Check if Mic1 is already powered down or used by Dmic3 */ - if (!(initialVal_AD & EN_AD3)) - return 0; - - error = HW_ACODEC_MODIFY_WRITE(LINE_IN_MIC_CONF_REG, 0, EN_MIC1); - if (0 != error) { - dev_err(dev, "Power Down Mic1 %d", error); - return error; - } - - /* Power Down ADC1 */ - error = HW_ACODEC_MODIFY_WRITE(ADC_DAC_ENABLE_REG, 0, POWER_UP_ADC1); - if (0 != error) { - dev_err(dev, "Power Down ADC1 %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_AD_CHANNELS_ENABLE_REG, - 0, EN_AD3); - if (0 != error) { - dev_err(dev, "Disable AD3 for Mic1 %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(AD_ALLOCATION_TO_SLOT2_3_REG, 0, - DATA_FROM_AD_OUT3); - if (0 != error) { - dev_err(dev, "Slot 02 outputs data cleared from AD_OUT3 %d", - error); - return error; - } - return error; -} -/** - * @brief Mute MIC1A - * @channel_index Channel-index of MIC1A - * @return 0 on success otherwise negative error code - */ - - -int ste_audio_io_mute_mic1a(enum AUDIOIO_CH_INDEX channel_index, - struct device *dev) -{ - int error = 0; - if (!(channel_index & e_CHANNEL_1)) { - dev_err(dev, "MIC1 should have mono channel"); - return -EINVAL; - } - - /* Mute mic1 */ - error = HW_ACODEC_MODIFY_WRITE(LINE_IN_MIC_CONF_REG, MUT_MIC1, 0); - if (0 != error) { - dev_err(dev, "Mute Mic1 %d", error); - return error; - } - return error; -} -/** - * @brief Unmute MIC1A - * @channel_index Channel-index of MIC1A - * @gain Gain index of MIC1A - * @return 0 on success otherwise negative error code - */ -int ste_audio_io_unmute_mic1a(enum AUDIOIO_CH_INDEX channel_index, int *gain, - struct device *dev) -{ - int error = 0; - if (!(channel_index & e_CHANNEL_1)) { - dev_err(dev, "Mic1 should have mono channel"); - return -EINVAL; - } - /* UnMute mic1 */ - error = HW_ACODEC_MODIFY_WRITE(LINE_IN_MIC_CONF_REG, 0, MUT_MIC1); - if (0 != error) { - dev_err(dev, "UnMute Mic1 %d", error); - return error; - } - return error; -} -/** - * @brief Enable fading of MIC1A - * @return 0 on success otherwise negative error code - */ - -int ste_audio_io_enable_fade_mic1a(struct device *dev) -{ - int error = 0; - - error = HW_ACODEC_MODIFY_WRITE(AD3_DIGITAL_GAIN_REG, 0, DIS_FADING); - if (0 != error) { - dev_err(dev, "Enable fading for Mic1 %d", error); - return error; - } - return error; -} -/** - * @brief Disable fading of MIC1A - * @return 0 on success otherwise negative error code - */ - -int ste_audio_io_disable_fade_mic1a(struct device *dev) -{ - int error = 0; - - error = HW_ACODEC_MODIFY_WRITE(AD3_DIGITAL_GAIN_REG, DIS_FADING, 0); - if (0 != error) { - dev_err(dev, "Disable fading for Mic1 %d", error); - return error; - } - return error; -} -/** - * @brief Power up MIC1B - * @channel_index Channel-index of MIC1B - * @return 0 on success otherwise negative error code - */ - -int ste_audio_io_power_up_mic1b(enum AUDIOIO_CH_INDEX channel_index, - struct device *dev) -{ - int error; - unsigned char initialVal_AD = 0; - - error = regulator_enable(regulator_avsource); - if (0 != error) { - dev_err(dev, "regulator avsource enable failed = %d", error); - return error; - } - /* GPIO35 settings to enable MIC 1B input instead of TVOUT */ - error = HW_ACODEC_MODIFY_WRITE(AB8500_GPIO_DIR5_REG, - GPIO35_DIR_OUTPUT, 0); - if (0 != error) { - dev_err(dev, "setting AB8500_GPIO_DIR5_REG reg %d", error); - return error; - } - error = HW_ACODEC_MODIFY_WRITE(AB8500_GPIO_OUT5_REG, - GPIO35_DIR_OUTPUT, 0); - if (0 != error) { - dev_err(dev, "setting AB8500_GPIO_OUT5_REG reg %d", error); - return error; - } - - if (!(channel_index & e_CHANNEL_1)) { - dev_err(dev, "Mic1 should have mono channel"); - return -EINVAL; - } - - initialVal_AD = HW_REG_READ(DIGITAL_AD_CHANNELS_ENABLE_REG); - /* Check if Mic1 is already powered up or used by Dmic3 */ - if (EN_AD3 & initialVal_AD) - return 0; - - error = HW_REG_WRITE(AD_ALLOCATION_TO_SLOT0_1_REG, DATA_FROM_AD_OUT3); - if (0 != error) { - dev_err(dev, "Slot 02 outputs data from AD_OUT3 %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_AD_CHANNELS_ENABLE_REG, - EN_AD3, 0); - if (0 != error) { - dev_err(dev, "Enable AD3 for Mic1 %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_MUXES_REG1, 0, - SEL_DMIC3_FOR_AD_OUT3); - if (0 != error) { - dev_err(dev, "Select ADC1 for AD_OUT3 %d", error); - return error; - } - - /* Select MIC1B */ - error = HW_ACODEC_MODIFY_WRITE(ADC_DAC_ENABLE_REG, SEL_MIC1B_CLR_MIC1A, - 0); - if (0 != error) { - dev_err(dev, "Select MIC1B %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(LINE_IN_MIC_CONF_REG, EN_MIC1, 0); - if (0 != error) { - dev_err(dev, "Power up Mic1 %d", error); - return error; - } - - /* Power Up ADC1 */ - error = HW_ACODEC_MODIFY_WRITE(ADC_DAC_ENABLE_REG, POWER_UP_ADC1, 0); - if (0 != error) { - dev_err(dev, "Power Up ADC1 %d", error); - return error; - } - return error; -} -/** - * @brief Power down MIC1B - * @channel_index Channel-index of MIC1B - * @return 0 on success otherwise negative error code - */ -int ste_audio_io_power_down_mic1b(enum AUDIOIO_CH_INDEX channel_index, - struct device *dev) -{ - int error; - unsigned char initialVal_AD = 0; - - /* Check if Mic1 PowerDown request is mono channel */ - if (!(channel_index & e_CHANNEL_1)) { - dev_err(dev, "Mic1 should have mono channel"); - return -EINVAL; - } - - initialVal_AD = HW_REG_READ(DIGITAL_DA_CHANNELS_ENABLE_REG); - - /* Check if Mic1 is already powered down or used by Dmic3 */ - if (!(initialVal_AD & EN_AD3)) - return 0; - - - error = HW_ACODEC_MODIFY_WRITE(LINE_IN_MIC_CONF_REG, 0, EN_MIC1); - if (0 != error) { - dev_err(dev, "Power Down Mic1 %d", error); - return error; - } - - /* Power Down ADC1 */ - error = HW_ACODEC_MODIFY_WRITE(ADC_DAC_ENABLE_REG, 0, POWER_UP_ADC1); - if (0 != error) { - dev_err(dev, "Power Down ADC1 %d", error); - return error; - } - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_AD_CHANNELS_ENABLE_REG, 0, - EN_AD3); - if (0 != error) { - dev_err(dev, "Disable AD3 for Mic1 %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(AD_ALLOCATION_TO_SLOT2_3_REG, 0, - DATA_FROM_AD_OUT3); - if (0 != error) { - dev_err(dev, "Slot 02 outputs data cleared from AD_OUT3 %d", - error); - return error; - } - - /* undo GPIO35 settings */ - error = HW_ACODEC_MODIFY_WRITE(AB8500_GPIO_DIR5_REG, - 0, GPIO35_DIR_OUTPUT); - if (0 != error) { - dev_err(dev, "resetting AB8500_GPIO_DIR5_REG reg %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(AB8500_GPIO_OUT5_REG, - 0, GPIO35_DIR_OUTPUT); - if (0 != error) { - dev_err(dev, "resetting AB8500_GPIO_OUT5_REG reg %d", error); - return error; - } - - error = regulator_disable(regulator_avsource); - if (0 != error) { - dev_err(dev, "regulator avsource disable failed = %d", error); - return error; - } - dump_acodec_registers(__func__, dev); - return error; -} - -/** - * @brief enable hardware loop of mic1b - * @chnl_index Channel-index of MIC1B - * @hw_loop type of hardware loop - * @loop_gain gain value to be used in hardware loop - * @return 0 on success otherwise negative error code - */ -int ste_audio_io_enable_loop_mic1b(enum AUDIOIO_CH_INDEX chnl_index, - enum AUDIOIO_HAL_HW_LOOPS hw_loop, - int loop_gain, struct device *dev, - void *cookie) -{ - int error; - struct transducer_context_t *trnsdr; - trnsdr = (struct transducer_context_t *)cookie; - - switch (hw_loop) { - /* Check if HSL is active */ - case AUDIOIO_SIDETONE_LOOP: - if (!(trnsdr[HS_CH].is_power_up[e_CHANNEL_1]) - && !(trnsdr[EAR_CH].is_power_up[e_CHANNEL_1])) { - error = -EFAULT; - dev_err(dev, - "HS or Earpiece not powered up error = %d", - error); - return error; - } - - /* For ch1, Power On STFIR1, data comes from AD3*/ - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_MUXES_REG2, - FIR1_FROMAD3, 0); - if (error) - dev_err(dev, "FIR1 data comes from AD_OUT3 %d", - error); - error = HW_REG_WRITE(SIDETONE_FIR1_GAIN_REG, loop_gain); - if (error) { - dev_err(dev, - "Set FIR1 Gain index = %d", - error); - return error; - } - break; - default: - error = -EINVAL; - dev_err(dev, "loop not supported %d", error); - } - return error; -} - -/** - * @brief disable hardware loop of mic1b - * @chnl_index Channel-index of MIC1B - * @hw_loop type of hardware loop - * @return 0 on success otherwise negative error code - */ -int ste_audio_io_disable_loop_mic1b(enum AUDIOIO_CH_INDEX chnl_index, - enum AUDIOIO_HAL_HW_LOOPS hw_loop, - struct device *dev, void *cookie) -{ - int error; - struct transducer_context_t *trnsdr; - trnsdr = (struct transducer_context_t *)cookie; - - switch (hw_loop) { - /* Check if HSL is active */ - case AUDIOIO_SIDETONE_LOOP: - if (!trnsdr[HS_CH].is_power_up[e_CHANNEL_1] - && !trnsdr[EAR_CH].is_power_up[e_CHANNEL_1]) { - error = -EFAULT; - dev_err(dev, "HS or Earpiece not powered up, err = %d", - error); - return error; - } - - /* For ch1, Power down STFIR1, data comes from AD3*/ - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_MUXES_REG2, - 0, FIR1_FROMAD3); - if (error) { - dev_err(dev, "FIR1 data comes from AD_OUT3, err = %d", - error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(FILTERS_CONTROL_REG, - 0, FIR_FILTERCONTROL); - if (error) { - dev_err(dev, - "ST FIR Filters disable failed %d", error); - return error; - } - break; - default: - error = -EINVAL; - dev_err(dev, "loop not supported %d", error); - } - return error; -} - -/** - * @brief Power up MIC2 - * @channel_index Channel-index of MIC2 - * @return 0 on success otherwise negative error code - */ - -int ste_audio_io_power_up_mic2(enum AUDIOIO_CH_INDEX channel_index, - struct device *dev) -{ - int error = 0; - unsigned char initialVal_AD = 0; - - /* Check if Mic2 PowerUp request is mono channel */ - if (!(channel_index & e_CHANNEL_1)) { - dev_err(dev, "Mic2 should have mono channel"); - return -EINVAL; - } - - initialVal_AD = HW_REG_READ(DIGITAL_DA_CHANNELS_ENABLE_REG); - - /* Check if Mic2 is already powered up or used by LINR or Dmic2 */ - if (EN_AD2 & initialVal_AD) - return 0; - - - error = HW_REG_WRITE(AD_ALLOCATION_TO_SLOT0_1_REG, DATA_FROM_AD_OUT2); - if (0 != error) { - dev_err(dev, "Slot 01 outputs data from AD_OUT2 %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_AD_CHANNELS_ENABLE_REG, EN_AD2, - 0); - if (0 != error) { - dev_err(dev, "Enable AD2 for Mic2 %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_MUXES_REG1, 0, - SEL_DMIC2_FOR_AD_OUT2); - if (0 != error) { - dev_err(dev, "Select ADC2 for AD_OUT2 %d", error); - return error; - } - - /* Select mic2 */ - error = HW_ACODEC_MODIFY_WRITE(ADC_DAC_ENABLE_REG, 0, - SEL_LINR_CLR_MIC2); - if (0 != error) { - dev_err(dev, "Select MIC2 %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(LINE_IN_MIC_CONF_REG, EN_MIC2, 0); - if (0 != error) { - dev_err(dev, "Power up Mic2 %d", error); - return error; - } - - /* Power Up ADC1 */ - error = HW_ACODEC_MODIFY_WRITE(ADC_DAC_ENABLE_REG, POWER_UP_ADC2, 0); - if (0 != error) { - dev_err(dev, "Power Up ADC2 %d", error); - return error; - } - return error; -} -/** - * @brief Power down MIC2 - * @channel_index Channel-index of MIC2 - * @return 0 on success otherwise negative error code - */ -int ste_audio_io_power_down_mic2(enum AUDIOIO_CH_INDEX channel_index, - struct device *dev) -{ - int error = 0; - unsigned char initialVal_AD = 0; - - /* Check if Mic2 PowerDown request is mono channel */ - if (!(channel_index & e_CHANNEL_1)) { - dev_err(dev, "Mic2 should have mono channel"); - return -EINVAL; - } - - initialVal_AD = HW_REG_READ(DIGITAL_DA_CHANNELS_ENABLE_REG); - - /* Check if Mic2 is already powered down or used by LINR or Dmic2 */ - if (!(initialVal_AD & EN_AD2)) - return 0; - - error = HW_ACODEC_MODIFY_WRITE(LINE_IN_MIC_CONF_REG, 0, EN_MIC2); - if (0 != error) { - dev_err(dev, "Power Down Mic2 %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_AD_CHANNELS_ENABLE_REG, - 0, EN_AD2); - if (0 != error) { - dev_err(dev, "Disable AD2 for Mic2 %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(AD_ALLOCATION_TO_SLOT0_1_REG, 0, - (DATA_FROM_AD_OUT2<<4)); - if (0 != error) { - dev_err(dev, "Slot 01 outputs data cleared from AD_OUT2 %d", - error); - return error; - } - return error; -} -/** - * @brief Mute MIC2 - * @channel_index Channel-index of MIC2 - * @return 0 on success otherwise negative error code - */ -int ste_audio_io_mute_mic2(enum AUDIOIO_CH_INDEX channel_index, - struct device *dev) -{ - int error = 0; - if (!(channel_index & e_CHANNEL_1)) { - dev_err(dev, "Mic2 should have mono channel"); - return -EINVAL; - } - - /* Mute mic2 */ - error = HW_ACODEC_MODIFY_WRITE(LINE_IN_MIC_CONF_REG, MUT_MIC2, 0); - if (0 != error) { - dev_err(dev, "Mute Mic2 %d", error); - return error; - } - return error; -} -/** - * @brief Unmute MIC2 - * @channel_index Channel-index of MIC2 - * @gain Gain index of MIC2 - * @return 0 on success otherwise negative error code - */ -int ste_audio_io_unmute_mic2(enum AUDIOIO_CH_INDEX channel_index, int *gain, - struct device *dev) -{ - int error = 0; - if (!(channel_index & e_CHANNEL_1)) { - dev_err(dev, "Mic2 should have mono channel"); - return -EINVAL; - } - /* UnMute mic2 */ - error = HW_ACODEC_MODIFY_WRITE(LINE_IN_MIC_CONF_REG, 0, MUT_MIC2); - if (0 != error) { - dev_err(dev, "UnMute Mic2 %d", error); - return error; - } - return error; -} -/** - * @brief Enable fading of MIC2 - * @return 0 on success otherwise negative error code - */ - -int ste_audio_io_enable_fade_mic2(struct device *dev) -{ - int error = 0; - - error = HW_ACODEC_MODIFY_WRITE(AD2_DIGITAL_GAIN_REG, 0, DIS_FADING); - if (0 != error) { - dev_err(dev, "Enable fading for Mic2 %d", error); - return error; - } - return error; -} -/** - * @brief Disable fading of MIC2 - * @return 0 on success otherwise negative error code - */ -int ste_audio_io_disable_fade_mic2(struct device *dev) -{ - int error = 0; - - error = HW_ACODEC_MODIFY_WRITE(AD2_DIGITAL_GAIN_REG, DIS_FADING, 0); - if (0 != error) { - dev_err(dev, "Disable fading for Mic2 %d", error); - return error; - } - - return error; -} -/** - * @brief Power up LinIn - * @channel_index Channel-index of LinIn - * @return 0 on success otherwise negative error code - */ - -int ste_audio_io_power_up_lin(enum AUDIOIO_CH_INDEX channel_index, - struct device *dev) -{ - int error = 0; - unsigned char initialVal_AD = 0; - - /* Check if LinIn PowerUp request is mono or Stereo channel */ - if (!(channel_index & (e_CHANNEL_1 | e_CHANNEL_2))) { - dev_err(dev, "LinIn should have mono or stereo channels"); - return -EINVAL; - } - - /* Enable AD1 for LinInL */ - if (channel_index & e_CHANNEL_1) { - initialVal_AD = HW_REG_READ(DIGITAL_DA_CHANNELS_ENABLE_REG); - if (initialVal_AD & EN_AD1) - return 0; - - error = HW_ACODEC_MODIFY_WRITE(AD_ALLOCATION_TO_SLOT0_1_REG, - DATA_FROM_AD_OUT1, 0); - if (0 != error) { - dev_err(dev, "Slot 00 outputs data from AD_OUT1 %d", - error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_AD_CHANNELS_ENABLE_REG, - EN_AD1, 0); - if (0 != error) { - dev_err(dev, "Enable AD1 for LinInL %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_MUXES_REG1, 0, - SEL_DMIC1_FOR_AD_OUT1); - if (0 != error) { - dev_err(dev, "Select ADC3 for AD_OUT1 %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE( - LINE_IN_MIC_CONF_REG, EN_LIN_IN_L, 0); - if (0 != error) { - dev_err(dev, "Power up LinInL %d", error); - return error; - } - - /* Power Up ADC3 */ - error = HW_ACODEC_MODIFY_WRITE(ADC_DAC_ENABLE_REG, - POWER_UP_ADC3, 0); - if (0 != error) { - dev_err(dev, "Power Up ADC3 %d", error); - return error; - } - } - /* Enable AD2 for LinInR */ - - if (channel_index & e_CHANNEL_2) { - initialVal_AD = HW_REG_READ(DIGITAL_DA_CHANNELS_ENABLE_REG); - if (EN_AD2 & initialVal_AD) - return 0; - - error = HW_ACODEC_MODIFY_WRITE(AD_ALLOCATION_TO_SLOT0_1_REG, - (DATA_FROM_AD_OUT2<<4), 0); - if (0 != error) { - dev_err(dev, "Slot 01 outputs data from AD_OUT2 %d", - error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_AD_CHANNELS_ENABLE_REG, - EN_AD2, 0); - if (0 != error) { - dev_err(dev, "Enable AD2 LinInR %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_MUXES_REG1, 0, - SEL_DMIC2_FOR_AD_OUT2); - if (0 != error) { - dev_err(dev, "Select ADC2 for AD_OUT2 %d", error); - return error; - } - - /* Select LinInR */ - error = HW_ACODEC_MODIFY_WRITE(ADC_DAC_ENABLE_REG, - SEL_LINR_CLR_MIC2, 0); - if (0 != error) { - dev_err(dev, "Select LinInR %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(LINE_IN_MIC_CONF_REG, - EN_LIN_IN_R, 0); - if (0 != error) { - dev_err(dev, "Power up LinInR %d", error); - return error; - } - - /* Power Up ADC2 */ - error = HW_ACODEC_MODIFY_WRITE( - ADC_DAC_ENABLE_REG, POWER_UP_ADC2, 0); - if (0 != error) { - dev_err(dev, "Power Up ADC2 %d", error); - return error; - } - } - return error; -} -/** - * @brief Power down LinIn - * @channel_index Channel-index of LinIn - * @return 0 on success otherwise negative error code - */ - -int ste_audio_io_power_down_lin(enum AUDIOIO_CH_INDEX channel_index, - struct device *dev) -{ - int error = 0; - unsigned char initialVal_AD = 0; - - /* Check if LinIn PowerDown request is mono or Stereo channel */ - if (!(channel_index & (e_CHANNEL_1 | e_CHANNEL_2))) { - dev_err(dev, "LinIn should have mono or stereo channels"); - return -EINVAL; - } - - /* Enable AD1 for LinInL */ - if (channel_index & e_CHANNEL_1) { - initialVal_AD = HW_REG_READ(DIGITAL_DA_CHANNELS_ENABLE_REG); - if (!(initialVal_AD & EN_AD1)) - return 0; - - error = HW_ACODEC_MODIFY_WRITE(LINE_IN_MIC_CONF_REG, 0, - EN_LIN_IN_L); - if (0 != error) { - dev_err(dev, "Power Down LinInL %d", error); - return error; - } - - /* Power Down ADC3 */ - error = HW_ACODEC_MODIFY_WRITE(ADC_DAC_ENABLE_REG, 0, - POWER_UP_ADC3); - if (0 != error) { - dev_err(dev, "Power Down ADC3 %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_AD_CHANNELS_ENABLE_REG, - 0, EN_AD1); - if (0 != error) { - dev_err(dev, "Disable AD1 for LinInL %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(AD_ALLOCATION_TO_SLOT0_1_REG, 0, - DATA_FROM_AD_OUT1); - if (0 != error) { - dev_err(dev, - "Slot 00 outputs data cleared from AD_OUT1 %d", - error); - return error; - } - } - - /* Enable AD2 for LinInR */ - if (channel_index & e_CHANNEL_2) { - initialVal_AD = HW_REG_READ(DIGITAL_DA_CHANNELS_ENABLE_REG); - if (!(initialVal_AD & EN_AD2)) - return 0; - - error = HW_ACODEC_MODIFY_WRITE(LINE_IN_MIC_CONF_REG, 0, - EN_LIN_IN_R); - if (0 != error) { - dev_err(dev, "Power Down LinInR %d", error); - return error; - } - - /* Power Down ADC2 */ - error = HW_ACODEC_MODIFY_WRITE(ADC_DAC_ENABLE_REG, 0, - POWER_UP_ADC2); - if (0 != error) { - dev_err(dev, "Power Down ADC2 %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_AD_CHANNELS_ENABLE_REG, - 0, EN_AD2); - if (0 != error) { - dev_err(dev, "Disable AD2 LinInR %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(AD_ALLOCATION_TO_SLOT0_1_REG, 0, - (DATA_FROM_AD_OUT2<<4)); - if (0 != error) { - dev_err(dev, - "Slot01 outputs data cleared from AD_OUT2 %d", - error); - return error; - } - } - return error; -} -/** - * @brief Mute LinIn - * @channel_index Channel-index of LinIn - * @return 0 on success otherwise negative error code - */ - -int ste_audio_io_mute_lin(enum AUDIOIO_CH_INDEX channel_index, - struct device *dev) -{ - int error = 0; - - if (!(channel_index & (e_CHANNEL_1 | e_CHANNEL_2))) { - dev_err(dev, "LinIn should have mono or stereo channels"); - return -EINVAL; - } - - if (channel_index & e_CHANNEL_1) { - /* Mute LinInL */ - error = HW_ACODEC_MODIFY_WRITE(LINE_IN_MIC_CONF_REG, - MUT_LIN_IN_L, 0); - if (0 != error) { - dev_err(dev, "Mute LinInL %d", error); - return error; - } - } - - if (channel_index & e_CHANNEL_2) { - /* Mute LinInR */ - error = HW_ACODEC_MODIFY_WRITE(LINE_IN_MIC_CONF_REG, - MUT_LIN_IN_R, - 0); - if (0 != error) { - dev_err(dev, "Mute LinInR %d", error); - return error; - } - } - return error; -} -/** - * @brief Unmute LinIn - * @channel_index Channel-index of LinIn - * @gain Gain index of LinIn - * @return 0 on success otherwise negative error code - */ - -int ste_audio_io_unmute_lin(enum AUDIOIO_CH_INDEX channel_index, int *gain, - struct device *dev) -{ - int error = 0; - - if (!(channel_index & (e_CHANNEL_1 | e_CHANNEL_2))) { - dev_err(dev, "LinIn should have mono or stereo channels"); - return -EINVAL; - } - - if (channel_index & e_CHANNEL_1) { - /* UnMute LinInL */ - error = HW_ACODEC_MODIFY_WRITE(LINE_IN_MIC_CONF_REG, 0, - MUT_LIN_IN_L); - if (0 != error) { - dev_err(dev, "UnMute LinInL %d", error); - return error; - } - } - - if (channel_index & e_CHANNEL_2) { - /* UnMute LinInR */ - error = HW_ACODEC_MODIFY_WRITE(LINE_IN_MIC_CONF_REG, 0, - MUT_LIN_IN_R); - if (0 != error) { - dev_err(dev, "UnMute LinInR %d", error); - return error; - } - } - return error; -} -/** - * @brief Enables fading of LinIn - * @return 0 on success otherwise negative error code - */ - -int ste_audio_io_enable_fade_lin(struct device *dev) -{ - int error = 0; - - error = HW_ACODEC_MODIFY_WRITE(AD1_DIGITAL_GAIN_REG, 0, DIS_FADING); - if (0 != error) { - dev_err(dev, "Enable fading for LinInL %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(AD2_DIGITAL_GAIN_REG, 0, DIS_FADING); - if (0 != error) { - dev_err(dev, "Enable fading for LinInR %d", error); - return error; - } - return error; -} -/** - * @brief Disables fading of LinIn - * @return 0 on success otherwise negative error code - */ - -int ste_audio_io_disable_fade_lin(struct device *dev) -{ - int error = 0; - - error = HW_ACODEC_MODIFY_WRITE(AD1_DIGITAL_GAIN_REG, DIS_FADING, 0); - if (0 != error) { - dev_err(dev, "Disable fading for LinInL %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(AD2_DIGITAL_GAIN_REG, DIS_FADING, 0); - if (0 != error) { - dev_err(dev, "Disable fading for LinInR %d", error); - return error; - } - return error; -} -/** - * @brief Power Up DMIC12 LinIn - * @channel_index Channel-index of DMIC12 - * @return 0 on success otherwise negative error code - */ - -int ste_audio_io_power_up_dmic12(enum AUDIOIO_CH_INDEX channel_index, - struct device *dev) -{ - int error = 0; - unsigned char initialVal_AD = 0; - - /* Check if DMic12 request is mono or Stereo */ - if (!(channel_index & (e_CHANNEL_1 | e_CHANNEL_2))) { - dev_err(dev, "DMic12 does not support more than 2 channels"); - - return -EINVAL; - } - - /* Setting Direction for GPIO pins on AB8500 */ - error = HW_REG_WRITE(AB8500_GPIO_DIR4_REG, GPIO27_DIR_OUTPUT); - if (0 != error) { - dev_err(dev, "Setting Direction for GPIO pins on AB8500 %d", - error); - return error; - } - - /* Enable AD1 for Dmic1 */ - if (channel_index & e_CHANNEL_1) { - /* Check if DMIC1 is already powered up or used by LinInL */ - initialVal_AD = HW_REG_READ(DIGITAL_AD_CHANNELS_ENABLE_REG); - if (initialVal_AD & EN_AD1) - return 0; - - error = HW_REG_WRITE(AD_ALLOCATION_TO_SLOT0_1_REG, - DATA_FROM_AD_OUT1); - if (0 != error) { - dev_err(dev, "Slot 00 outputs data from AD_OUT1 %d", - error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_AD_CHANNELS_ENABLE_REG, - EN_AD1, 0); - if (0 != error) { - dev_err(dev, "Enable AD1 for DMIC1 %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_MUXES_REG1, - SEL_DMIC1_FOR_AD_OUT1, 0); - if (0 != error) { - dev_err(dev, "Select DMIC1 for AD_OUT1 %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DMIC_ENABLE_REG, EN_DMIC1, 0); - if (0 != error) { - dev_err(dev, "Enable DMIC1 %d", error); - return error; - } - } - /* Enable AD2 for Dmic2 */ - - if (channel_index & e_CHANNEL_2) { - /* Check if DMIC2 is already powered up - or used by Mic2 or LinInR */ - initialVal_AD = HW_REG_READ(DIGITAL_AD_CHANNELS_ENABLE_REG); - if (initialVal_AD & EN_AD2) - return 0; - - error = HW_ACODEC_MODIFY_WRITE(AD_ALLOCATION_TO_SLOT0_1_REG, - (DATA_FROM_AD_OUT2<<4), 0); - if (0 != error) { - dev_err(dev, "Slot 01 outputs data from AD_OUT2 %d", - error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_AD_CHANNELS_ENABLE_REG, - EN_AD2, 0); - if (0 != error) { - dev_err(dev, "Enable AD2 for DMIC2 %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_MUXES_REG1, - SEL_DMIC2_FOR_AD_OUT2, 0); - if (0 != error) { - dev_err(dev, "Select DMIC2 for AD_OUT2 %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DMIC_ENABLE_REG, EN_DMIC2, 0); - if (0 != error) { - dev_err(dev, "Enable DMIC2 %d", error); - return error; - } - } - - return error; -} -/** - * @brief Power down DMIC12 LinIn - * @channel_index Channel-index of DMIC12 - * @return 0 on success otherwise negative error code - */ - - -int ste_audio_io_power_down_dmic12(enum AUDIOIO_CH_INDEX channel_index, - struct device *dev) -{ - int error = 0; - unsigned char initialVal_AD = 0; - - /* Check if DMic12 request is mono or Stereo or multi channel */ - if (!(channel_index & (e_CHANNEL_1 | e_CHANNEL_2))) { - dev_err(dev, "DMic12 does not support more than 2 channels"); - - return -EINVAL; - } - - /* Setting Direction for GPIO pins on AB8500 */ - error = HW_ACODEC_MODIFY_WRITE(AB8500_GPIO_DIR4_REG, 0, - GPIO27_DIR_OUTPUT); - if (0 != error) { - dev_err(dev, "Clearing Direction for GPIO pins on AB8500 %d", - error); - return error; - } - /* Enable AD1 for Dmic1 */ - if (channel_index & e_CHANNEL_1) { - /* Check if DMIC1 is already powered Down or used by LinInL */ - initialVal_AD = HW_REG_READ(DIGITAL_AD_CHANNELS_ENABLE_REG); - if (!(initialVal_AD & EN_AD1)) - return 0; - - error = HW_ACODEC_MODIFY_WRITE(DMIC_ENABLE_REG, 0, EN_DMIC1); - if (0 != error) { - dev_err(dev, "Enable DMIC1 %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_AD_CHANNELS_ENABLE_REG, - 0, EN_AD1); - if (0 != error) { - dev_err(dev, "Disable AD1 for DMIC1 %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(AD_ALLOCATION_TO_SLOT0_1_REG, 0, - DATA_FROM_AD_OUT1); - if (0 != error) { - dev_err(dev, - "Slot 00 outputs data cleared from AD_OUT1 %d", - error); - return error; - } - } - - /* Enable AD2 for Dmic2 */ - if (channel_index & e_CHANNEL_2) { - /* MIC2 is already powered Down or used by Mic2 or LinInR */ - initialVal_AD = HW_REG_READ(DIGITAL_AD_CHANNELS_ENABLE_REG); - if (!(initialVal_AD & EN_AD2)) - return 0; - - error = HW_ACODEC_MODIFY_WRITE(DMIC_ENABLE_REG, 0, EN_DMIC2); - if (0 != error) { - dev_err(dev, "Enable DMIC2 %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_AD_CHANNELS_ENABLE_REG, - 0, EN_AD2); - if (0 != error) { - dev_err(dev, "Disable AD2 for DMIC2 %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(AD_ALLOCATION_TO_SLOT0_1_REG, 0, - (DATA_FROM_AD_OUT2<<4)); - if (0 != error) { - dev_err(dev, - "Slot 01 outputs data cleared from AD_OUT2 %d", - error); - return error; - } - } - return error; -} -/** - * @brief Get headset gain - * @left_volume - * @right_volume - * @return 0 on success otherwise negative error code - */ - - -int ste_audio_io_get_headset_gain(int *left_volume, int *right_volume, - u16 gain_index, struct device *dev) -{ - int i = 0; - if (gain_index == 0) { - - *left_volume = 0 - HW_REG_READ(DA1_DIGITAL_GAIN_REG); - *right_volume = 0 - HW_REG_READ(DA2_DIGITAL_GAIN_REG); - - } - - if (gain_index == 1) { - *left_volume = 8 - HW_REG_READ(HSL_EAR_DIGITAL_GAIN_REG); - *right_volume = 8 - HW_REG_READ(HSR_DIGITAL_GAIN_REG); - } - - if (gain_index == 2) { - i = (HW_REG_READ(ANALOG_HS_GAIN_REG)>>4); - *left_volume = hs_analog_gain_table[i]; - i = (HW_REG_READ(ANALOG_HS_GAIN_REG) & MASK_QUARTET0); - *right_volume = hs_analog_gain_table[i]; - } - return 0; -} -/** - * @brief Get earpiece gain - * @left_volume - * @right_volume - * @return 0 on success otherwise negative error code - */ - - -int ste_audio_io_get_earpiece_gain(int *left_volume, int *right_volume, - u16 gain_index, struct device *dev) -{ - if (0 == gain_index) - *left_volume = 0 - HW_REG_READ(DA1_DIGITAL_GAIN_REG); - if (1 == gain_index) - *left_volume = 8 - HW_REG_READ(HSL_EAR_DIGITAL_GAIN_REG); - return 0; -} -/** - * @brief Get ihf gain - * @left_volume - * @right_volume - * @return 0 on success otherwise negative error code - */ - -int ste_audio_io_get_ihf_gain(int *left_volume, int *right_volume, - u16 gain_index, struct device *dev) -{ - - *left_volume = 0 - HW_REG_READ(DA3_DIGITAL_GAIN_REG); - *right_volume = 0 - HW_REG_READ(DA4_DIGITAL_GAIN_REG); - return 0; -} -/** - * @brief Get vibl gain - * @left_volume - * @right_volume - * @return 0 on success otherwise negative error code - */ - -int ste_audio_io_get_vibl_gain(int *left_volume, int *right_volume, - u16 gain_index, struct device *dev) -{ - - *left_volume = 0 - HW_REG_READ(DA5_DIGITAL_GAIN_REG); - - return 0; -} -/** - * @brief Get vibr gain - * @left_volume - * @right_volume - * @return 0 on success otherwise negative error code - */ - - -int ste_audio_io_get_vibr_gain(int *left_volume, int *right_volume, - u16 gain_index, struct device *dev) -{ - - *right_volume = 0 - HW_REG_READ(DA6_DIGITAL_GAIN_REG); - return 0; -} -/** - * @brief Get MIC1A & MIC2A gain - * @left_volume - * @right_volume - * @return 0 on success otherwise negative error code - */ - - -int ste_audio_io_get_mic1a_gain(int *left_volume, int *right_volume, - u16 gain_index, struct device *dev) -{ - if (gain_index == 0) - *left_volume = 31 - HW_REG_READ(AD3_DIGITAL_GAIN_REG); - if (gain_index == 1) - *left_volume = HW_REG_READ(ANALOG_MIC1_GAIN_REG); - - return 0; -} -/** - * @brief Get MIC2 gain - * @left_volume - * @right_volume - * @return 0 on success otherwise negative error code - */ - -int ste_audio_io_get_mic2_gain(int *left_volume, int *right_volume, - u16 gain_index, struct device *dev) -{ - if (gain_index == 0) - *left_volume = 31 - HW_REG_READ(AD2_DIGITAL_GAIN_REG); - if (gain_index == 1) - *left_volume = HW_REG_READ(ANALOG_MIC2_GAIN_REG); - - return 0; -} -/** - * @brief Get Lin IN gain - * @left_volume - * @right_volume - * @return 0 on success otherwise negative error code - */ -int ste_audio_io_get_lin_gain(int *left_volume, int *right_volume, - u16 gain_index, struct device *dev) -{ - if (gain_index == 0) { - *left_volume = 31 - HW_REG_READ(AD1_DIGITAL_GAIN_REG); - *right_volume = 31 - HW_REG_READ(AD2_DIGITAL_GAIN_REG); - } - - if (gain_index == 0) { - *left_volume = 2 * ((HW_REG_READ(ANALOG_HS_GAIN_REG)>>4) - 5); - *right_volume = 2 * (HW_REG_READ(ANALOG_LINE_IN_GAIN_REG) - 5); - } - - return 0; -} -/** - * @brief Get DMIC12 gain - * @left_volume - * @right_volume - * @return 0 on success otherwise negative error code - */ -int ste_audio_io_get_dmic12_gain(int *left_volume, int *right_volume, - u16 gain_index, struct device *dev) -{ - - *left_volume = HW_REG_READ(AD1_DIGITAL_GAIN_REG); - - *right_volume = HW_REG_READ(AD2_DIGITAL_GAIN_REG); - - return 0; -} -/** - * @brief Get DMIC34 gain - * @left_volume - * @right_volume - * @return 0 on success otherwise negative error code - */ -int ste_audio_io_get_dmic34_gain(int *left_volume, int *right_volume, - u16 gain_index, struct device *dev) -{ - *left_volume = HW_REG_READ(AD3_DIGITAL_GAIN_REG); - *right_volume = HW_REG_READ(AD4_DIGITAL_GAIN_REG); - - return 0; -} -/** - * @brief Get DMIC56 gain - * @left_volume - * @right_volume - * @return 0 on success otherwise negative error code - */ -int ste_audio_io_get_dmic56_gain(int *left_volume, int *right_volume, - u16 gain_index, struct device *dev) -{ - *left_volume = HW_REG_READ(AD5_DIGITAL_GAIN_REG); - - *right_volume = HW_REG_READ(AD6_DIGITAL_GAIN_REG); - return 0; -} -/** - * @brief Set gain of headset along a specified channel - * @channel_index Channel-index of headset - * @gain_index Gain index of headset - * @gain_value Gain value of headset - * @linear - * @return 0 on success otherwise negative error code - */ - - -int ste_audio_io_set_headset_gain(enum AUDIOIO_CH_INDEX channel_index, - u16 gain_index, int gain_value, u32 linear, - struct device *dev) -{ - int error = 0; - unsigned char initial_val = 0; - int i = 0; - int acodec_device_id; - - acodec_device_id = abx500_get_chip_id(dev); - - if (channel_index & e_CHANNEL_1) { - if (gain_index == 0) { - int gain = 0; - gain = 0 - gain_value; - - initial_val = HW_REG_READ(DA1_DIGITAL_GAIN_REG); - /* Write gain */ - error = HW_REG_WRITE(DA1_DIGITAL_GAIN_REG, - ((initial_val - & (~DIGITAL_GAIN_MASK)) | (gain & DIGITAL_GAIN_MASK))); - if (0 != error) { - dev_err(dev, - "Set Gain HSL gainindex = %d %d", - gain_index, error); - return error; - } - } - - if (gain_index == 1) { - int gain = 0; - gain = 8 - gain_value; - - initial_val = HW_REG_READ(HSL_EAR_DIGITAL_GAIN_REG); - /* Write gain */ - error = HW_REG_WRITE(HSL_EAR_DIGITAL_GAIN_REG, - ((initial_val & (~HS_DIGITAL_GAIN_MASK)) | (gain & - HS_DIGITAL_GAIN_MASK))); - if (0 != error) { - dev_err(dev, - "Set Gain HSL gain index = %d %d", - gain_index, error); - return error; - } - } - - if (gain_index == 2) { - /* Set Analog gain */ - int gain = -1; - - if (gain_value % 2) { - gain_value -= 1; - dev_err(dev, - "Odd Gain received.Fixing it to 2dB step gain_value = %d", - gain_value); - } - /* Fix for 4dB step gains. Select one lower value */ - if (gain_value == -22) - gain_value = -24; - - if (gain_value == -26) - gain_value = -28; - - if (gain_value == -30) - gain_value = -32; - - for (i = 0 ; i < 16; i++) { - if (hs_analog_gain_table[i] == gain_value) { - gain = i<<4; - break; - } - } - if (gain == -1) - return -1; - - if ((AB8500_REV_10 == acodec_device_id) || - (AB8500_REV_11 == acodec_device_id)) { - if (!gain) - gain = 0x10; - gain = 0xF0 - gain; - } - initial_val = HW_REG_READ(ANALOG_HS_GAIN_REG); - - /* Write gain */ - error = HW_REG_WRITE(ANALOG_HS_GAIN_REG, ((initial_val & - (~L_ANALOG_GAIN_MASK)) | (gain & L_ANALOG_GAIN_MASK))); - if (0 != error) { - dev_err(dev, - "Set Gain HSL gain index = %d %d", - gain_index, error); - return error; - } - } - } - - /* for HSR */ - if (channel_index & e_CHANNEL_2) { - /* Set Gain HSR */ - if (gain_index == 0) { - int gain = 0; - gain = 0 - gain_value; - - initial_val = HW_REG_READ(DA2_DIGITAL_GAIN_REG); - /* Write gain */ - error = HW_REG_WRITE(DA2_DIGITAL_GAIN_REG, ((initial_val - & (~DIGITAL_GAIN_MASK)) | (gain & DIGITAL_GAIN_MASK))); - if (0 != error) { - dev_err(dev, - "Set Gain HSR gain index = %d %d", - gain_index, error); - return error; - } - } - - if (gain_index == 1) { - int gain = 0; - gain = 8 - gain_value; - - initial_val = HW_REG_READ(HSR_DIGITAL_GAIN_REG); - /* Write gain */ - error = HW_REG_WRITE(HSR_DIGITAL_GAIN_REG, ((initial_val - & (~HS_DIGITAL_GAIN_MASK)) | (gain & - HS_DIGITAL_GAIN_MASK))); - if (0 != error) { - dev_err(dev, - "Set Gain HSR gain index = %d %d", - gain_index, error); - return error; - } - - } - - if (gain_index == 2) { - /* Set Analog gain */ - int gain = -1; - - if (gain_value % 2) { - gain_value -= 1; - dev_err(dev, - "Odd Gain received.Fixing it to 2dB step gain_value = %d", - gain_value); - } - /* Fix for 4dB step gains. Select one lower value */ - if (gain_value == -22) - gain_value = -24; - - if (gain_value == -26) - gain_value = -28; - - if (gain_value == -30) - gain_value = -32; - - for (i = 0 ; i < 16 ; i++) { - if (hs_analog_gain_table[i] == gain_value) { - gain = i; - break; - } - } - if (gain == -1) - return -1; - - if ((AB8500_REV_10 == acodec_device_id) || - (AB8500_REV_11 == acodec_device_id)) { - if (!gain) - gain = 1; - gain = 0x0F - gain; - } - initial_val = HW_REG_READ(ANALOG_HS_GAIN_REG); - /* Write gain */ - error = HW_REG_WRITE(ANALOG_HS_GAIN_REG, ((initial_val & - (~R_ANALOG_GAIN_MASK)) | (gain & R_ANALOG_GAIN_MASK))); - if (0 != error) { - dev_err(dev, - "Set Gain HSR gainindex = %d %d", - gain_index, error); - return error; - } - } - } - dump_acodec_registers(__func__, dev); - return error; -} -/** - * @brief Set gain of earpiece - * @channel_index Channel-index of earpiece - * @gain_index Gain index of earpiece - * @gain_value Gain value of earpiece - * @linear - * @return 0 on success otherwise negative error code - */ - -int ste_audio_io_set_earpiece_gain(enum AUDIOIO_CH_INDEX channel_index, - u16 gain_index, int gain_value, u32 linear, - struct device *dev) -{ - int error = 0; - unsigned char initial_val = 0; - if (channel_index & e_CHANNEL_1) { - if (0 == gain_index) { - int gain = 0; - gain = 0 - gain_value; - - initial_val = HW_REG_READ(DA1_DIGITAL_GAIN_REG); - /* Write gain */ - error = HW_REG_WRITE(DA1_DIGITAL_GAIN_REG, ((initial_val - & (~DIGITAL_GAIN_MASK)) | (gain & DIGITAL_GAIN_MASK))); - if (0 != error) { - dev_err(dev, - "Set Gain Ear gainindex = %d %d", - gain_index, error); - return error; - } - } - - if (gain_index == 1) { - int gain = 0; - gain = 8 - gain_value; - - initial_val = HW_REG_READ(HSL_EAR_DIGITAL_GAIN_REG); - /* Write gain */ - error = HW_REG_WRITE(HSL_EAR_DIGITAL_GAIN_REG, - ((initial_val & (~HS_DIGITAL_GAIN_MASK)) | (gain & - HS_DIGITAL_GAIN_MASK))); - if (0 != error) { - dev_err(dev, - "Set Gain Ear gainindex = %d %d", - gain_index, error); - return error; - } - } - } - dump_acodec_registers(__func__, dev); - return error; -} -/** - * @brief Set gain of vibl - * @channel_index Channel-index of vibl - * @gain_index Gain index of vibl - * @gain_value Gain value of vibl - * @linear - * @return 0 on success otherwise negative error code - */ - -int ste_audio_io_set_vibl_gain(enum AUDIOIO_CH_INDEX channel_index, - u16 gain_index, int gain_value, u32 linear, - struct device *dev) -{ - - int error = 0; - unsigned char initial_val = 0; - - if (channel_index & e_CHANNEL_1) { - /* Set Gain vibl */ - if (gain_index == 0) { - int gain = 0; - gain = 0 - gain_value; - - initial_val = HW_REG_READ(DA5_DIGITAL_GAIN_REG); - /* Write gain */ - error = HW_REG_WRITE(DA5_DIGITAL_GAIN_REG, ((initial_val - & (~DIGITAL_GAIN_MASK)) | (gain & DIGITAL_GAIN_MASK))); - if (0 != error) { - dev_err(dev, - "Set Gain VibL gain index = %d %d", - gain_index, error); - return error; - } - } - } - return error; -} -/** - * @brief Set gain of vibr - * @channel_index Channel-index of vibr - * @gain_index Gain index of vibr - * @gain_value Gain value of vibr - * @linear - * @return 0 on success otherwise negative error code - */ -int ste_audio_io_set_vibr_gain(enum AUDIOIO_CH_INDEX channel_index, - u16 gain_index, int gain_value, - u32 linear, - struct device *dev) -{ - - int error = 0; - unsigned char initial_val = 0; - - if (channel_index & e_CHANNEL_1) { - /* Set Gain vibr */ - if (gain_index == 0) { - int gain = 0; - gain = 0 - gain_value; - - initial_val = HW_REG_READ(DA6_DIGITAL_GAIN_REG); - /* Write gain */ - error = HW_REG_WRITE(DA6_DIGITAL_GAIN_REG, - ((initial_val - & (~DIGITAL_GAIN_MASK)) | (gain & DIGITAL_GAIN_MASK))); - if (0 != error) { - dev_err(dev, - "Set Gain VibR gain index = %d %d", - gain_index, error); - return error; - } - } - } - return error; -} -/** - * @brief Set gain of ihf along a specified channel - * @channel_index Channel-index of ihf - * @gain_index Gain index of ihf - * @gain_value Gain value of ihf - * @linear - * @return 0 on success otherwise negative error code - */ - -int ste_audio_io_set_ihf_gain(enum AUDIOIO_CH_INDEX channel_index, - u16 gain_index, int gain_value, u32 linear, - struct device *dev) -{ - int error = 0; - unsigned char initial_val = 0; - - if (channel_index & e_CHANNEL_1) { - /* Set Gain IHFL */ - if (gain_index == 0) { - int gain = 0; - gain = 0 - gain_value; - - initial_val = HW_REG_READ(DA3_DIGITAL_GAIN_REG); - error = HW_REG_WRITE(DA3_DIGITAL_GAIN_REG, ((initial_val - & (~DIGITAL_GAIN_MASK)) | (gain & DIGITAL_GAIN_MASK))); - if (0 != error) { - dev_err(dev, - "Set Gain IHFL gain index = %d %d", - gain_index, error); - return error; - } - - } - } - if (channel_index & e_CHANNEL_2) { - /* Set Gain IHFR */ - if (gain_index == 0) { - int gain = 0; - gain = 0 - gain_value; - - initial_val = HW_REG_READ(DA4_DIGITAL_GAIN_REG); - error = HW_REG_WRITE(DA4_DIGITAL_GAIN_REG, ((initial_val - & (~DIGITAL_GAIN_MASK)) | (gain & DIGITAL_GAIN_MASK))); - if (0 != error) { - dev_err(dev, - "Set Gain IHFR gain index = %d %d", - gain_index, error); - return error; - } - } - } - - return error; -} -/** - * @brief Set gain of MIC1A & MIC1B - * @channel_index Channel-index of MIC1 - * @gain_index Gain index of MIC1 - * @gain_value Gain value of MIC1 - * @linear - * @return 0 on success otherwise negative error code - */ - -int ste_audio_io_set_mic1a_gain(enum AUDIOIO_CH_INDEX channel_index, - u16 gain_index, int gain_value, u32 linear, - struct device *dev) -{ - int error = 0; - unsigned char initial_val = 0; - - if (channel_index & e_CHANNEL_1) { - /* Set Gain mic1 */ - if (gain_index == 0) { - int gain = 0; - gain = 31 - gain_value; - - initial_val = HW_REG_READ(AD3_DIGITAL_GAIN_REG); - /* Write gain */ - error = HW_REG_WRITE(AD3_DIGITAL_GAIN_REG, ((initial_val - & (~DIGITAL_GAIN_MASK)) | (gain & DIGITAL_GAIN_MASK))); - if (0 != error) { - dev_err(dev, - "Set Gain Mic1 gain index = %d %d", - gain_index, error); - return error; - } - - } - - if (gain_index == 1) { - /* Set Analog gain */ - initial_val = HW_REG_READ(ANALOG_MIC1_GAIN_REG); - - /* Write gain */ - error = HW_REG_WRITE(ANALOG_MIC1_GAIN_REG, ((initial_val - & (~MIC_ANALOG_GAIN_MASK)) | (gain_value & - MIC_ANALOG_GAIN_MASK))); - if (0 != error) { - dev_err(dev, - "Set Gain Mic1 gain index = %d %d", - gain_index, error); - return error; - } - } - } - return error; -} -/** - * @brief Set gain of MIC2 - * @channel_index Channel-index of MIC2 - * @gain_index Gain index of MIC2 - * @gain_value Gain value of MIC2 - * @linear - * @return 0 on success otherwise negative error code - */ - -int ste_audio_io_set_mic2_gain(enum AUDIOIO_CH_INDEX channel_index, - u16 gain_index, int gain_value, - u32 linear, - struct device *dev) -{ - int error = 0; - unsigned char initial_val = 0; - - if (channel_index & e_CHANNEL_1) { - /* Set Gain mic2 */ - if (gain_index == 0) { - int gain = 0; - gain = 31 - gain_value; - - initial_val = HW_REG_READ(AD2_DIGITAL_GAIN_REG); - /* Write gain */ - error = HW_REG_WRITE(AD2_DIGITAL_GAIN_REG, ((initial_val - & (~DIGITAL_GAIN_MASK)) | (gain & DIGITAL_GAIN_MASK))); - if (0 != error) { - dev_err(dev, - "Set Gain Mic2 gain index = %d %d", - gain_index, error); - return error; - } - - } - - if (gain_index == 1) { - /* Set Analog gain */ - initial_val = HW_REG_READ(ANALOG_MIC2_GAIN_REG); - - /* Write gain */ - error = HW_REG_WRITE(ANALOG_MIC2_GAIN_REG, ((initial_val - & (~MIC_ANALOG_GAIN_MASK)) | (gain_value & - MIC_ANALOG_GAIN_MASK))); - if (0 != error) { - dev_err(dev, - "Set Gain Mic2 gain index = %d %d", - gain_index, error); - return error; - } - } - } - return error; -} -/** - * @brief Set gain of Lin IN along a specified channel - * @channel_index Channel-index of Lin In - * @gain_index Gain index of Lin In - * @gain_value Gain value of Lin In - * @linear - * @return 0 on success otherwise negative error code - */ - -int ste_audio_io_set_lin_gain(enum AUDIOIO_CH_INDEX channel_index, - u16 gain_index, int gain_value, u32 linear, - struct device *dev) -{ - int error = 0; - unsigned char initial_val = 0; - - if (channel_index & e_CHANNEL_1) { - if (gain_index == 0) { - int gain = 0; - gain = 31 - gain_value; - - initial_val = HW_REG_READ(AD1_DIGITAL_GAIN_REG); - /* Write gain */ - error = HW_REG_WRITE(AD1_DIGITAL_GAIN_REG, - ((initial_val - & (~DIGITAL_GAIN_MASK)) | (gain & DIGITAL_GAIN_MASK))); - if (0 != error) { - dev_err(dev, - "Set Gain LinInL gain index = %d %d", - gain_index, error); - return error; - } - - } - - if (gain_index == 1) { - int gain = 0; - /* - * Converting -10 to 20 range into 0 - 15 - * & shifting it left by 4 bits - */ - gain = ((gain_value/2) + 5)<<4; - - initial_val = HW_REG_READ(ANALOG_LINE_IN_GAIN_REG); - /* Write gain */ - error = HW_REG_WRITE(ANALOG_LINE_IN_GAIN_REG, - ((initial_val & (~L_ANALOG_GAIN_MASK)) | (gain & - L_ANALOG_GAIN_MASK))); - if (0 != error) { - dev_err(dev, - "Set Gain LinInL gain index = %d %d", - gain_index, error); - return error; - } - } - } - - if (channel_index & e_CHANNEL_2) { - /* Set Gain LinInR */ - if (gain_index == 0) { - int gain = 0; - gain = 31 - gain_value; - - initial_val = HW_REG_READ(AD2_DIGITAL_GAIN_REG); - /* Write gain */ - error = HW_REG_WRITE(AD2_DIGITAL_GAIN_REG, - ((initial_val - & (~DIGITAL_GAIN_MASK)) | (gain & DIGITAL_GAIN_MASK))); - if (0 != error) { - dev_err(dev, - "Set Gain LinInR gain index = %d%d", - gain_index, error); - return error; - } - } - if (gain_index == 1) { - int gain = 0; - /* Converting -10 to 20 range into 0 - 15 */ - gain = ((gain_value/2) + 5); - - initial_val = HW_REG_READ(ANALOG_LINE_IN_GAIN_REG); - /* Write gain */ - error = HW_REG_WRITE(ANALOG_LINE_IN_GAIN_REG, - ((initial_val & (~R_ANALOG_GAIN_MASK)) | (gain & - R_ANALOG_GAIN_MASK))); - if (0 != error) { - dev_err(dev, - "Set Gain LinInR gain index = %d %d", - gain_index, error); - return error; - } - } - } - - return error; -} -/** - * @brief Set gain of DMIC12 along a specified channel - * @channel_index Channel-index of DMIC12 - * @gain_index Gain index of DMIC12 - * @gain_value Gain value of DMIC12 - * @linear - * @return 0 on success otherwise negative error code - */ - -int ste_audio_io_set_dmic12_gain(enum AUDIOIO_CH_INDEX channel_index, - u16 gain_index, int gain_value, u32 linear, - struct device *dev) -{ - int error = 0; - unsigned char initial_val = 0; - - if (channel_index & e_CHANNEL_1) { - /* Set Gain Dmic1 */ - if (gain_index == 0) { - int gain = 0; - gain = 31 - gain_value; - - initial_val = HW_REG_READ(AD1_DIGITAL_GAIN_REG); - error = HW_REG_WRITE(AD1_DIGITAL_GAIN_REG, - ((initial_val - & (~DIGITAL_GAIN_MASK)) | (gain & DIGITAL_GAIN_MASK))); - if (0 != error) { - dev_err(dev, - "Set Gain DMic1 gain index = %d %d", - gain_index, error); - return error; - } - } - } - if (channel_index & e_CHANNEL_2) { - /* Set Gain Dmic2 */ - if (gain_index == 0) { - int gain = 0; - gain = 31 - gain_value; - - initial_val = HW_REG_READ(AD2_DIGITAL_GAIN_REG); - error = HW_REG_WRITE(AD2_DIGITAL_GAIN_REG, - ((initial_val - & (~DIGITAL_GAIN_MASK)) | (gain & DIGITAL_GAIN_MASK))); - if (0 != error) { - dev_err(dev, - "Set Gain DMic2 gain index = %d %d", - gain_index, error); - return error; - } - } - } - return error; -} - -int ste_audio_io_switch_to_burst_mode_headset(int burst_fifo_switch_frame, - struct device *dev) -{ - int error = 0; - - error = HW_ACODEC_MODIFY_WRITE(BURST_FIFO_INT_CONTROL_REG, - WAKEUP_SIGNAL_SAMPLE_COUNT, 0); - if (0 != error) - return error; - - error = HW_ACODEC_MODIFY_WRITE(BURST_FIFO_LENGTH_REG, - BURST_FIFO_TRANSFER_LENGTH, 0); - if (0 != error) - return error; - - error = HW_ACODEC_MODIFY_WRITE(BURST_FIFO_CONTROL_REG, - (BURST_FIFO_INF_RUNNING | BURST_FIFO_INF_IN_MASTER_MODE - |PRE_BIT_CLK0_COUNT), 0); - if (0 != error) - return error; - - error = HW_ACODEC_MODIFY_WRITE(BURST_FIFO_WAKE_UP_DELAY_REG, - BURST_FIFO_WAKUP_DEALAY, 0); - if (0 != error) - return error; - - error = HW_REG_WRITE(BURST_FIFO_SWITCH_FRAME_REG, - burst_fifo_switch_frame); - if (0 != error) - return error; - - error = HW_ACODEC_MODIFY_WRITE(TDM_IF_BYPASS_B_FIFO_REG, - IF0_BFifoEn, 0); - if (0 != error) - return error; - - return error; -} -int ste_audio_io_switch_to_normal_mode_headset( - struct device *dev) -{ - int error = 0; - - error = HW_ACODEC_MODIFY_WRITE(TDM_IF_BYPASS_B_FIFO_REG, 0, - IF0_BFifoEn); - if (0 != error) - return error; - - error = HW_ACODEC_MODIFY_WRITE(BURST_FIFO_INT_CONTROL_REG, - 0, WAKEUP_SIGNAL_SAMPLE_COUNT); - if (0 != error) - return error; - - error = HW_ACODEC_MODIFY_WRITE(BURST_FIFO_LENGTH_REG, - 0, BURST_FIFO_TRANSFER_LENGTH); - if (0 != error) - return error; - - error = HW_ACODEC_MODIFY_WRITE(BURST_FIFO_CONTROL_REG, 0, - (BURST_FIFO_INF_RUNNING | BURST_FIFO_INF_IN_MASTER_MODE - |PRE_BIT_CLK0_COUNT)); - if (0 != error) - return error; - - error = HW_ACODEC_MODIFY_WRITE(BURST_FIFO_WAKE_UP_DELAY_REG, - 0, BURST_FIFO_WAKUP_DEALAY); - if (0 != error) - return error; - - return error; -} - - -int ste_audio_io_mute_vibl(enum AUDIOIO_CH_INDEX channel_index, - struct device *dev) -{ - return 0; -} - -int ste_audio_io_unmute_vibl(enum AUDIOIO_CH_INDEX channel_index, int *gain, - struct device *dev) -{ - return 0; -} - -int ste_audio_io_mute_vibr(enum AUDIOIO_CH_INDEX channel_index, - struct device *dev) -{ - return 0; -} -int ste_audio_io_unmute_vibr(enum AUDIOIO_CH_INDEX channel_index, int *gain, - struct device *dev) -{ - return 0; -} - -int ste_audio_io_mute_dmic12(enum AUDIOIO_CH_INDEX channel_index, - struct device *dev) -{ - int error = 0; - if ((channel_index & (e_CHANNEL_1 | e_CHANNEL_2))) { - error = ste_audio_io_set_dmic12_gain(channel_index, 0, -32, - 0, dev); - if (0 != error) { - dev_err(dev, "Mute dmic12 %d", error); - return error; - } - } - - return error; - -} - -int ste_audio_io_unmute_dmic12(enum AUDIOIO_CH_INDEX channel_index, int *gain, - struct device *dev) -{ - int error = 0; - if ((channel_index & (e_CHANNEL_1 | e_CHANNEL_2))) { - error = ste_audio_io_set_dmic12_gain(channel_index, - 0, gain[0], 0, dev); - if (0 != error) { - dev_err(dev, "UnMute dmic12 %d", error); - return error; - } - } - return error; -} -int ste_audio_io_enable_fade_dmic12(struct device *dev) -{ - return 0; -} - -int ste_audio_io_disable_fade_dmic12(struct device *dev) -{ - return 0; -} - -/** - * @brief enable hardware loop of dmic12 - * @chnl_index Channel-index of dmic12 - * @hw_loop type of hardware loop - * @loop_gain gain value to be used in hardware loop - * @return 0 on success otherwise negative error code - */ -int ste_audio_io_enable_loop_dmic12(enum AUDIOIO_CH_INDEX chnl_index, - enum AUDIOIO_HAL_HW_LOOPS hw_loop, - int loop_gain, struct device *dev, - void *cookie) -{ - int error = 0; - struct transducer_context_t *trnsdr; - trnsdr = (struct transducer_context_t *)cookie; - - switch (hw_loop) { - /* Check if HSL is active */ - case AUDIOIO_SIDETONE_LOOP: - if (!trnsdr[HS_CH].is_power_up[e_CHANNEL_1] - && !trnsdr[EAR_CH].is_power_up[e_CHANNEL_1]) { - error = -EFAULT; - dev_err(dev, - "Sidetone enable needs HS or Earpiece powered up, err = %d", - error); - return error; - } - - if (chnl_index & e_CHANNEL_1) { - /* For ch1, Power On STFIR1, data comes from AD1*/ - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_MUXES_REG2, - 0, FIR1_FROMAD1); - if (error) { - dev_err(dev, "FIR1 data comes from AD_OUT1 %d", - error); - return error; - } - - error = HW_REG_WRITE(SIDETONE_FIR1_GAIN_REG, loop_gain); - if (error) { - dev_err(dev, - "Set FIR1 Gain index = %d", error); - return error; - } - } - - if (chnl_index & e_CHANNEL_2) { - /* For ch2, Power On STFIR1, data comes from AD2*/ - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_MUXES_REG2, - 0, FIR1_FROMAD2); - if (error) { - dev_err(dev, "FIR1 data comes from AD_OUT2 %d", - error); - return error; - } - error = HW_REG_WRITE(SIDETONE_FIR2_GAIN_REG, loop_gain); - if (error) { - dev_err(dev, - "Set FIR2 Gain error = %d", error); - return error; - } - } - break; - default: - error = -EINVAL; - dev_err(dev, "loop not supported %d", error); - } - dump_acodec_registers(__func__, dev); - return error; -} - -/** - * @brief disable hardware loop of dmic12 - * @chnl_index Channel-index of dmic12 - * @hw_loop type of hardware loop - * @return 0 on success otherwise negative error code - */ -int ste_audio_io_disable_loop_dmic12(enum AUDIOIO_CH_INDEX chnl_index, - enum AUDIOIO_HAL_HW_LOOPS hw_loop, - struct device *dev, void *cookie) -{ - int error = -EINVAL; - struct transducer_context_t *trnsdr; - trnsdr = (struct transducer_context_t *)cookie; - - switch (hw_loop) { - /* Check if HSL is active */ - case AUDIOIO_SIDETONE_LOOP: - if (!trnsdr[HS_CH].is_power_up[e_CHANNEL_1] - && !trnsdr[EAR_CH].is_power_up[e_CHANNEL_1]) { - error = -EFAULT; - dev_err(dev, - "Sidetone disable needs HS or Earpiece powered up, err = %d", - error); - return error; - } - - if (chnl_index & e_CHANNEL_1) { - /* For ch1, Power On STFIR1, data comes from AD1*/ - error = - HW_ACODEC_MODIFY_WRITE(DIGITAL_MUXES_REG2, - 0, FIR1_FROMAD1); - if (error) - dev_err(dev, "FIR1 data comes from AD_OUT1 %d", - error); - } - - if (chnl_index & e_CHANNEL_2) { - /* For ch2, Power On STFIR1, data comes from AD2*/ - error = - HW_ACODEC_MODIFY_WRITE(DIGITAL_MUXES_REG2, - 0, FIR1_FROMAD2); - if (error) - dev_err(dev, "FIR1 data comes from AD_OUT2 %d", - error); - } - error = HW_ACODEC_MODIFY_WRITE(FILTERS_CONTROL_REG, - 0, FIR_FILTERCONTROL); - if (error) { - dev_err(dev, - "ST FIR Filters disable failed %d", error); - return error; - } - break; - default: - dev_err(dev, "loop not supported %d", error); - } - dump_acodec_registers(__func__, dev); - return error; -} - -int ste_audio_io_power_up_dmic34(enum AUDIOIO_CH_INDEX channel_index, - struct device *dev) -{ - int error = 0; - unsigned char initialVal_AD = 0; - - /* Check if DMic34 request is mono or Stereo */ - if (!(channel_index & (e_CHANNEL_1 | e_CHANNEL_2))) { - dev_err(dev, "DMic34 does not support more than 2 channels"); - return -EINVAL; - } - - /* Setting Direction for GPIO pins on AB8500 */ - error = HW_REG_WRITE(AB8500_GPIO_DIR4_REG, GPIO29_DIR_OUTPUT); - if (0 != error) { - dev_err(dev, "Setting Direction for GPIO pins on AB8500 %d", - error); - return error; - } - - if (channel_index & e_CHANNEL_1) { - /* Check if DMIC3 is already powered up or used by Mic1A - or Mic1B */ - initialVal_AD = HW_REG_READ(DIGITAL_AD_CHANNELS_ENABLE_REG); - - if (initialVal_AD & (EN_AD3)) - return 0; - - - error = HW_ACODEC_MODIFY_WRITE(AD_ALLOCATION_TO_SLOT2_3_REG, - DATA_FROM_AD_OUT3, 0); - if (0 != error) { - dev_err(dev, "Slot 02 outputs data from AD_OUT3 %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_AD_CHANNELS_ENABLE_REG, EN_AD3, - 0); - if (0 != error) { - dev_err(dev, "Enable AD3 for DMIC3 %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_MUXES_REG1, - SEL_DMIC3_FOR_AD_OUT3, - 0); - if (0 != error) { - dev_err(dev, "Select DMIC3 for AD_OUT3 %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DMIC_ENABLE_REG, EN_DMIC3, 0); - if (0 != error) { - dev_err(dev, "Enable DMIC3 %d", error); - return error; - } -} - - /* Enable AD4 for Dmic4 */ - if (channel_index & e_CHANNEL_2) { - /* Check if DMIC4 is already powered up */ - if (initialVal_AD & (EN_AD4)) - return 0; - - - error = HW_ACODEC_MODIFY_WRITE(AD_ALLOCATION_TO_SLOT2_3_REG, - (DATA_FROM_AD_OUT4<<4), 0); - if (0 != error) { - dev_err(dev, "Slot 03 outputs data from AD_OUT4 %d", - error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_AD_CHANNELS_ENABLE_REG, - EN_AD4, 0); - if (0 != error) { - dev_err(dev, "Enable AD4 for DMIC4 %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DMIC_ENABLE_REG, EN_DMIC4, 0); - if (0 != error) { - dev_err(dev, "Enable DMIC4 %d", error); - return error; - } - } - return error; -} - -int ste_audio_io_power_down_dmic34(enum AUDIOIO_CH_INDEX channel_index, - struct device *dev) -{ - int error = 0; - unsigned char initialVal_AD = 0; - - - if (!(channel_index & (e_CHANNEL_1 | e_CHANNEL_2))) { - dev_err(dev, "DMic34 does not support more than 2 channels"); - return -EINVAL; - } - - /* Setting Direction for GPIO pins on AB8500 */ - error = HW_ACODEC_MODIFY_WRITE(AB8500_GPIO_DIR4_REG, 0, - GPIO29_DIR_OUTPUT); - if (0 != error) { - dev_err(dev, "Clearing Direction for GPIO pins on AB8500 %d", - error); - return error; - } - - /* Enable AD1 for Dmic1 */ - if (channel_index & e_CHANNEL_1) { - /* Check if DMIC3 is already powered Down or used by Mic1A - or Mic1B */ - initialVal_AD = HW_REG_READ(DIGITAL_AD_CHANNELS_ENABLE_REG); - if (!(initialVal_AD & EN_AD3)) - return 0; - - error = HW_ACODEC_MODIFY_WRITE(DMIC_ENABLE_REG, 0, EN_DMIC3); - if (0 != error) { - dev_err(dev, "Enable DMIC3 %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_AD_CHANNELS_ENABLE_REG, - 0, - EN_AD3); - if (0 != error) { - dev_err(dev, "Disable AD3 for DMIC3 %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(AD_ALLOCATION_TO_SLOT2_3_REG, 0, - DATA_FROM_AD_OUT3); - if (0 != error) { - dev_err(dev, - "Slot 02 outputs data cleared from AD_OUT3 %d", - error); - return error; - } - } - - /* Enable AD4 for Dmic4 */ - if (channel_index & e_CHANNEL_2) { - /* Check if DMIC4 is already powered down */ - initialVal_AD = HW_REG_READ(DIGITAL_AD_CHANNELS_ENABLE_REG); - if (!(initialVal_AD & EN_AD4)) - return 0; - - error = HW_ACODEC_MODIFY_WRITE(DMIC_ENABLE_REG, 0, EN_DMIC4); - if (0 != error) { - dev_err(dev, "Enable DMIC4 %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(DIGITAL_AD_CHANNELS_ENABLE_REG, - 0, EN_AD4); - if (0 != error) { - dev_err(dev, "Disable AD4 for DMIC4 %d", error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(AD_ALLOCATION_TO_SLOT2_3_REG, 0, - (DATA_FROM_AD_OUT4<<4)); - if (0 != error) { - dev_err(dev, - "Slot 03 outputs data cleared from AD_OUT4 %d", - error); - return error; - } - } - return error; -} -int ste_audio_io_set_dmic34_gain(enum AUDIOIO_CH_INDEX channel_index, - u16 gain_index, int gain_value, u32 linear, - struct device *dev) -{ - int error = 0; - unsigned char initial_val = 0; - - if (channel_index & e_CHANNEL_1) { - /* Set Gain Dmic3 */ - if (gain_index == 0) { - int gain = 0; - gain = 31 - gain_value; - - initial_val = HW_REG_READ(AD3_DIGITAL_GAIN_REG); - error = HW_REG_WRITE(AD3_DIGITAL_GAIN_REG, - ((initial_val - & (~DIGITAL_GAIN_MASK)) | (gain & DIGITAL_GAIN_MASK))); - if (0 != error) { - dev_err(dev, - "Set Gain DMic3 gain index = %d %d", - gain_index, error); - return error; - } - } - } - - if (channel_index & e_CHANNEL_2) { - /* Set Gain Dmic4 */ - if (gain_index == 0) { - int gain = 0; - gain = 31 - gain_value; - - initial_val = HW_REG_READ(AD4_DIGITAL_GAIN_REG); - error = HW_REG_WRITE(AD4_DIGITAL_GAIN_REG, - ((initial_val - & (~DIGITAL_GAIN_MASK)) | (gain & DIGITAL_GAIN_MASK))); - - if (0 != error) { - dev_err(dev, - "Set Gain DMic4 gain index = %d %d", - gain_index, error); - return error; - } - } - } - - return error; -} -int ste_audio_io_mute_dmic34(enum AUDIOIO_CH_INDEX channel_index, - struct device *dev) -{ - int error = 0; - if ((channel_index & (e_CHANNEL_1 | e_CHANNEL_2))) { - error = ste_audio_io_set_dmic34_gain(channel_index, 0, -32, - 0, dev); - if (0 != error) { - dev_err(dev, "Mute dmic34 %d", error); - return error; - } - } - return error; -} -int ste_audio_io_unmute_dmic34(enum AUDIOIO_CH_INDEX channel_index, int *gain, - struct device *dev) -{ - int error = 0; - if ((channel_index & (e_CHANNEL_1 | e_CHANNEL_2))) { - error = ste_audio_io_set_dmic34_gain(channel_index, - 0, gain[0], 0, dev); - if (0 != error) { - dev_err(dev, "UnMute dmic34 %d", error); - return error; - } - } - return error; -} -int ste_audio_io_enable_fade_dmic34(struct device *dev) -{ - return 0; -} - -int ste_audio_io_disable_fade_dmic34(struct device *dev) -{ - return 0; -} - -int ste_audio_io_power_up_dmic56(enum AUDIOIO_CH_INDEX channel_index, - struct device *dev) -{ - return 0; -} -int ste_audio_io_power_down_dmic56(enum AUDIOIO_CH_INDEX channel_index, - struct device *dev) -{ - return 0; -} -int ste_audio_io_set_dmic56_gain(enum AUDIOIO_CH_INDEX channel_index, - u16 gain_index, int gain_value, u32 linear, - struct device *dev) -{ - return 0; -} -int ste_audio_io_mute_dmic56(enum AUDIOIO_CH_INDEX channel_index, - struct device *dev) -{ - return 0; -} -int ste_audio_io_unmute_dmic56(enum AUDIOIO_CH_INDEX channel_index, int *gain, - struct device *dev) -{ - return 0; -} -int ste_audio_io_enable_fade_dmic56(struct device *dev) -{ - return 0; -} - -int ste_audio_io_disable_fade_dmic56(struct device *dev) -{ - return 0; -} - -int ste_audio_io_configure_if1(struct device *dev) -{ - int error = 0; - - error = HW_REG_WRITE(IF1_CONF_REG, IF_DELAYED | - I2S_LEFT_ALIGNED_FORMAT | WORD_LENGTH_16); - if (error != 0) { - dev_err(dev, - "Configure IF1: I2S Format 16 Bits word length error = %d", - error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(TDM_IF_BYPASS_B_FIFO_REG, IF1_MASTER, 0); - if (error != 0) { - dev_err(dev, - "Configure IF1: IF1 master error = %d", - error); - return error; - } - - error = HW_ACODEC_MODIFY_WRITE(IF0_IF1_MASTER_CONF_REG, - EN_FSYNC_BITCLK1, 0); - if (error != 0) { - dev_err(dev, - "ConfigIF1 bitclk is 32x48KHz, enable Fsync1 and Bitclk1 error = %d", - error); - return error; - } - return error; -} - -int ste_audio_io_power_up_fmrx(enum AUDIOIO_CH_INDEX channel_index, - struct device *dev) -{ - int error = 0; - unsigned char initialVal = 0; - if (!(channel_index & (e_CHANNEL_1 | e_CHANNEL_2))) { - dev_err(dev, "FMRX should have mono or stereo channels"); - return -EINVAL; - } - - ste_audio_io_configure_if1(dev); - - if (channel_index & e_CHANNEL_1) { - error = HW_ACODEC_MODIFY_WRITE(SLOT_SELECTION_TO_DA7_REG, - SLOT24_FOR_DA_PATH, 0); - if (0 != error) { - dev_err(dev, "Data sent to DA_IN7 from Slot 24 %d", - error); - return error; - } - /* DA_IN7 to AD_OUT8 path */ - error = HW_ACODEC_MODIFY_WRITE(SLOT_SELECTION_TO_DA5_REG, - SEL_AD_OUT8_FROM_DAIN7, 0); - if (0 != error) { - dev_err(dev, "Data sent to AD_OUT5 from DA_IN7 %d", - error); - return error; - } - - initialVal = HW_REG_READ(AD_ALLOCATION_TO_SLOT6_7_REG); - error = HW_REG_WRITE(AD_ALLOCATION_TO_SLOT6_7_REG, - ((initialVal & MASK_QUARTET1)|SEL_IF6_FROM_AD_OUT5)); - if (0 != error) { - dev_err(dev, "Data sent to IF slot 6 from AD_OUT5 %d", - error); - return error; - } - } - - if (channel_index & e_CHANNEL_2) { - error = HW_ACODEC_MODIFY_WRITE(SLOT_SELECTION_TO_DA8_REG, - SLOT25_FOR_DA_PATH, 0); - if (0 != error) { - dev_err(dev, "Data sent to DA_IN8 from Slot 25 %d", - error); - return error; - } - - /* DA_IN7 to AD_OUT8 path */ - error = HW_ACODEC_MODIFY_WRITE(SLOT_SELECTION_TO_DA6_REG, - SEL_AD_OUT6_FROM_DAIN8, 0); - if (0 != error) { - dev_err(dev, "Data sent to AD_OUT6 from DA_IN8 %d", - error); - return error; - } - - initialVal = HW_REG_READ(AD_ALLOCATION_TO_SLOT6_7_REG); - - error = HW_REG_WRITE(AD_ALLOCATION_TO_SLOT6_7_REG, - (initialVal & MASK_QUARTET0)|SEL_IF7_FROM_AD_OUT6); - /* 5x is written */ - if (0 != error) { - dev_err(dev, "Data sent to IF7 from AD_OUT6 %d", - error); - return error; - } - } - return error; -} -int ste_audio_io_power_down_fmrx(enum AUDIOIO_CH_INDEX channel_index, - struct device *dev) -{ - int error = 0; - - if (!(channel_index & (e_CHANNEL_1 | e_CHANNEL_2))) { - dev_err(dev, "FMRX should have mono or stereo channels"); - return -EINVAL; - } - if (channel_index & e_CHANNEL_1) { - /* data sent to DA7 input of DA filter form IF1 */ - error = HW_ACODEC_MODIFY_WRITE(SLOT_SELECTION_TO_DA7_REG, 0, - SLOT24_FOR_DA_PATH); - if (0 != error) { - dev_err(dev, "Clearing Data sent to DA_IN7 from Slot 24 %d", - error); - return error; - } - /* DA_IN7 to AD_OUT8 path */ - error = HW_ACODEC_MODIFY_WRITE(SLOT_SELECTION_TO_DA5_REG, 0, - SEL_AD_OUT8_FROM_DAIN7); - if (0 != error) { - dev_err(dev, "Clearing Data sent to AD_OUT5 from DA_IN7 %d", - error); - return error; - } - error = HW_ACODEC_MODIFY_WRITE(AD_ALLOCATION_TO_SLOT6_7_REG, 0, - SEL_IF6_FROM_AD_OUT5); - if (0 != error) { - dev_err(dev, - "Clearing Data sent to IF slot 6 from AD_OUT5 %d", - error); - return error; - } -} - - if (channel_index & e_CHANNEL_2) { - error = HW_ACODEC_MODIFY_WRITE(SLOT_SELECTION_TO_DA8_REG, 0, - SLOT25_FOR_DA_PATH); - if (0 != error) { - dev_err(dev, - "Clearing Data sent to DA_IN8 from Slot 25 %d", - error); - return error; - } - - /* DA_IN7 to AD_OUT8 path */ - error = HW_ACODEC_MODIFY_WRITE(SLOT_SELECTION_TO_DA6_REG, 0, - SEL_AD_OUT6_FROM_DAIN8); - if (0 != error) { - dev_err(dev, - "Clearing Data sent to AD_OUT6 from DA_IN8 %d", - error); - return error; - } - error = HW_ACODEC_MODIFY_WRITE(AD_ALLOCATION_TO_SLOT6_7_REG, 0, - SEL_IF7_FROM_AD_OUT6); - if (0 != error) { - dev_err(dev, - "Clearing Data sent to IF7 from AD_OUT6 %d", - error); - return error; - } - } - return error; -} - -int ste_audio_io_power_up_fmtx(enum AUDIOIO_CH_INDEX channel_index, - struct device *dev) -{ - int error = 0; - unsigned char initialVal = 0; - - if (!(channel_index & (e_CHANNEL_1 | e_CHANNEL_2))) { - dev_err(dev, "FMTX should have mono or stereo channels"); - return -EINVAL; - } - - ste_audio_io_configure_if1(dev); - - if (channel_index & e_CHANNEL_1) { - /* data sent to DA7 input of DA filter form IF1 14 slot */ - error = HW_ACODEC_MODIFY_WRITE(SLOT_SELECTION_TO_DA7_REG, - SLOT14_FOR_DA_PATH, 0); - if (0 != error) { - dev_err(dev, - "Data sent to DA_IN7 from Slot 14 %d", error); - return error; - } - /* DA_IN7 to AD_OUT5 path */ - error = HW_ACODEC_MODIFY_WRITE(SLOT_SELECTION_TO_DA5_REG, - SEL_AD_OUT5_FROM_DAIN7, 0); - if (0 != error) { - dev_err(dev, "Data sent to AD_OUT5 from DA_IN7 %d", - error); - return error; - } - - initialVal = HW_REG_READ(AD_ALLOCATION_TO_SLOT16_17_REG); - error = HW_REG_WRITE(AD_ALLOCATION_TO_SLOT16_17_REG, - (initialVal & MASK_QUARTET1)|SEL_IF6_FROM_AD_OUT5); - if (0 != error) { - dev_err(dev, "Data sent to IF16 from AD_OUT5 %d", - error); - return error; - } - } - - if (channel_index & e_CHANNEL_2) { - /* data sent to DA8 input of DA filter */ - error = HW_ACODEC_MODIFY_WRITE(SLOT_SELECTION_TO_DA8_REG, - SLOT15_FOR_DA_PATH, 0); - if (0 != error) { - dev_err(dev, "Data sent to DA_IN8 from Slot 15 %d", - error); - return error; - } - - /* DA_IN8 to AD_OUT6 path */ - error = HW_ACODEC_MODIFY_WRITE(SLOT_SELECTION_TO_DA6_REG, - SEL_AD_OUT6_FROM_DAIN8, 0); - if (0 != error) { - dev_err(dev, "Data sent to AD_OUT6 from DA_IN8 %d", - error); - return error; - } - - initialVal = HW_REG_READ(AD_ALLOCATION_TO_SLOT16_17_REG); - error = HW_REG_WRITE(AD_ALLOCATION_TO_SLOT16_17_REG, - (initialVal & MASK_QUARTET0)|SEL_IF17_FROM_AD_OUT6); - if (0 != error) { - dev_err(dev, "Data sent to IF17 from AD_OUT6 %d", - error); - return error; - } - } - return error; -} - -int ste_audio_io_power_down_fmtx(enum AUDIOIO_CH_INDEX channel_index, - struct device *dev) -{ - int error = 0; - unsigned char initialVal_AD = 0; - - if (!(channel_index & (e_CHANNEL_1 | e_CHANNEL_2))) { - dev_err(dev, "FMTX should have mono or stereo channels"); - return -EINVAL; - } - - if (channel_index & e_CHANNEL_1) { - error = HW_ACODEC_MODIFY_WRITE(SLOT_SELECTION_TO_DA7_REG, 0, - SLOT14_FOR_DA_PATH); - if (0 != error) { - dev_err(dev, - "Clearing Data sent to DA_IN7 from Slot 14 %d", - error); - return error; - } - /* DA_IN7 to AD_OUT8 path */ - error = HW_ACODEC_MODIFY_WRITE(SLOT_SELECTION_TO_DA5_REG, 0, - SEL_AD_OUT5_FROM_DAIN7); - if (0 != error) { - dev_err(dev, - "Clearing Data sent to AD_OUT5 from DA_IN7 %d", - error); - return error; - } - error = HW_REG_WRITE(AD_ALLOCATION_TO_SLOT16_17_REG, - SEL_IF6_FROM_AD_OUT5); - if (0 != error) { - dev_err(dev, - "Clearing Data sent to IF16 from AD_OUT8 %d", - error); - return error; - } - } - - if (channel_index & e_CHANNEL_2) { - /* data sent to DA8 input of DA filter */ - initialVal_AD = HW_REG_READ(SLOT_SELECTION_TO_DA8_REG); - - error = HW_ACODEC_MODIFY_WRITE(SLOT_SELECTION_TO_DA8_REG, 0, - SLOT15_FOR_DA_PATH); - if (0 != error) { - dev_err(dev, - "Clearing Data sent to DA_IN8 from Slot 15 %d", - error); - return error; - } - - /* DA_IN7 to AD_OUT8 path */ - error = HW_ACODEC_MODIFY_WRITE(SLOT_SELECTION_TO_DA6_REG, 0, - SEL_AD_OUT6_FROM_DAIN8); - if (0 != error) { - dev_err(dev, - "Clearing Data sent to AD_OUT6 from DA_IN8 %d", - error); - return error; - } - error = HW_REG_WRITE(AD_ALLOCATION_TO_SLOT16_17_REG, - SEL_IF17_FROM_AD_OUT6); - if (0 != error) { - dev_err(dev, - "Clearing Data sent to IF17 from AD_OUT6 %d", - error); - return error; - } - } - return error; -} -int ste_audio_io_power_up_bluetooth(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev) -{ - int error = 0; - struct ab8500 *ab8500 = dev_get_drvdata(dev->parent); - struct ab8500_platform_data *pdata = dev_get_platdata(ab8500->dev); - if (bluetooth_power_up_count++) - return error; - - if (pdata) { - if (pdata->audio) { - error = pdata->audio->ste_gpio_altf_init(); - if (error == 0) { - clk_ptr_msp0 = clk_get_sys("msp0", NULL); - if (!IS_ERR(clk_ptr_msp0)) { - error = clk_enable(clk_ptr_msp0); - return error; - } else - return -EFAULT; - } - } - } - return error; -} - -int ste_audio_io_power_down_bluetooth(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev) -{ - int error = 0; - struct ab8500 *ab8500 = dev_get_drvdata(dev->parent); - struct ab8500_platform_data *pdata = dev_get_platdata(ab8500->dev); - - if (--bluetooth_power_up_count) - return error; - - if (pdata) { - if (pdata->audio) { - error = pdata->audio->ste_gpio_altf_exit(); - if (error == 0) { - clk_disable(clk_ptr_msp0); - clk_put(clk_ptr_msp0); - } - } - } - return error; -} - -int dump_acodec_registers(const char *str, struct device *dev) -{ - int reg_count = REVISION_REG & 0xff; - if (1 == acodec_reg_dump) { - u8 i = 0; - dev_info(dev, "\n func : %s\n", str); - for (i = 0; i <= reg_count; i++) - dev_info(dev, - "block = 0x0D, adr = %x = %x\n", - i, HW_REG_READ((AB8500_AUDIO << 8) | i)); - } - str = str; /* keep compiler happy */ - return 0; -} - -int debug_audioio(int x) -{ - - if (1 == x) - acodec_reg_dump = 1; - else - acodec_reg_dump = 0; - return 0; -} - - - - - diff --git a/drivers/misc/audio_io_dev/ste_audio_io_func.h b/drivers/misc/audio_io_dev/ste_audio_io_func.h deleted file mode 100644 index 65b777f5436..00000000000 --- a/drivers/misc/audio_io_dev/ste_audio_io_func.h +++ /dev/null @@ -1,358 +0,0 @@ -/* - * Copyright (C) ST-Ericsson SA 2010 - * Author: Deepak KARDA/ deepak.karda@stericsson.com for ST-Ericsson - * License terms: GNU General Public License (GPL) version 2. - */ - -#ifndef _AUDIOIO_FUNC_H_ -#define _AUDIOIO_FUNC_H_ - -#include <linux/string.h> -#include <linux/platform_device.h> -#include <mach/ste_audio_io_ioctl.h> -#include <linux/mfd/ab8500.h> -#include <linux/mfd/abx500.h> - -#define AB8500_REV_10 0x10 -#define AB8500_REV_11 0x11 -#define AB8500_REV_20 0x20 - -#define AB8500_CTRL3_REG 0x00000200 -#define AB8500_GPIO_DIR4_REG 0x00001013 -#define AB8500_GPIO_DIR5_REG 0x00001014 -#define AB8500_GPIO_OUT5_REG 0x00001024 - -extern struct platform_device *ste_audio_io_device; -extern struct regulator *regulator_avsource; - -int dump_acodec_registers(const char *, struct device *dev); -int debug_audioio(int x); - -#define AB8500_BLOCK_ADDR(address) ((address >> 8) & 0xff) -#define AB8500_OFFSET_ADDR(address) (address & 0xff) - -static inline unsigned char HW_REG_READ(unsigned short reg) -{ - unsigned char ret; - int err; - - err = abx500_get_register_interruptible(&ste_audio_io_device->dev, - AB8500_BLOCK_ADDR(reg), - AB8500_OFFSET_ADDR(reg), - &ret); - if (err < 0) - return err; - else - return ret; -} - -static inline int HW_REG_WRITE(unsigned short reg, unsigned char data) -{ - return abx500_set_register_interruptible(&ste_audio_io_device->dev, - AB8500_BLOCK_ADDR(reg), - AB8500_OFFSET_ADDR(reg), - data); -} - -unsigned int ab8500_acodec_modify_write(unsigned int reg, u8 mask_set, - u8 mask_clear); - -#define HW_ACODEC_MODIFY_WRITE(reg, mask_set, mask_clear)\ - ab8500_acodec_modify_write(reg, mask_set, mask_clear) - -unsigned int ab8500_modify_write(unsigned int reg, u8 mask_set, u8 mask_clear); - -int ste_audio_io_power_up_headset(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_power_down_headset(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_power_state_headset_query(struct device *dev); -int ste_audio_io_set_headset_gain(enum AUDIOIO_CH_INDEX chnl_index, - u16 gain_index, int gain_value, u32 linear, - struct device *dev); -int ste_audio_io_get_headset_gain(int *, int *, u16, - struct device *dev); -int ste_audio_io_mute_headset(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_unmute_headset(enum AUDIOIO_CH_INDEX chnl_index, int *gain, - struct device *dev); -int ste_audio_io_mute_headset_state(struct device *dev); -int ste_audio_io_enable_fade_headset(struct device *dev); -int ste_audio_io_disable_fade_headset(struct device *dev); -int ste_audio_io_switch_to_burst_mode_headset(int burst_fifo_switch_frame, - struct device *dev); -int ste_audio_io_switch_to_normal_mode_headset( - struct device *dev); - -int ste_audio_io_power_up_earpiece(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_power_down_earpiece(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_power_state_earpiece_query(struct device *dev); -int ste_audio_io_set_earpiece_gain(enum AUDIOIO_CH_INDEX chnl_index, - u16 gain_index, int gain_value, u32 linear, - struct device *dev); -int ste_audio_io_get_earpiece_gain(int*, int*, u16, - struct device *dev); -int ste_audio_io_mute_earpiece(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_unmute_earpiece(enum AUDIOIO_CH_INDEX chnl_index, int *gain, - struct device *dev); -int ste_audio_io_mute_earpiece_state(struct device *dev); -int ste_audio_io_enable_fade_earpiece(struct device *dev); -int ste_audio_io_disable_fade_earpiece(struct device *dev); - -int ste_audio_io_power_up_ihf(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_power_down_ihf(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_power_state_ihf_query(struct device *dev); -int ste_audio_io_set_ihf_gain(enum AUDIOIO_CH_INDEX chnl_index, u16 gain_index, - int gain_value, u32 linear, - struct device *dev); -int ste_audio_io_get_ihf_gain(int*, int*, u16, - struct device *dev); -int ste_audio_io_mute_ihf(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_unmute_ihf(enum AUDIOIO_CH_INDEX chnl_index, int *gain, - struct device *dev); -int ste_audio_io_mute_ihf_state(struct device *dev); -int ste_audio_io_enable_fade_ihf(struct device *dev); -int ste_audio_io_disable_fade_ihf(struct device *dev); - -int ste_audio_io_power_up_vibl(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_power_down_vibl(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_power_state_vibl_query(struct device *dev); -int ste_audio_io_set_vibl_gain(enum AUDIOIO_CH_INDEX chnl_index, u16 gain_index, - int gain_value, u32 linear, - struct device *dev); -int ste_audio_io_get_vibl_gain(int*, int*, u16, - struct device *dev); -int ste_audio_io_mute_vibl(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_unmute_vibl(enum AUDIOIO_CH_INDEX chnl_index, int *gain, - struct device *dev); -int ste_audio_io_mute_vibl_state(struct device *dev); -int ste_audio_io_enable_fade_vibl(struct device *dev); -int ste_audio_io_disable_fade_vibl(struct device *dev); - -int ste_audio_io_power_up_vibr(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_power_down_vibr(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_power_state_vibr_query(struct device *dev); -int ste_audio_io_set_vibr_gain(enum AUDIOIO_CH_INDEX chnl_index, u16 gain_index, - int gain_value, u32 linear, - struct device *dev); -int ste_audio_io_get_vibr_gain(int*, int*, u16, - struct device *dev); -int ste_audio_io_mute_vibr(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_unmute_vibr(enum AUDIOIO_CH_INDEX chnl_index, int *gain, - struct device *dev); -int ste_audio_io_mute_vibr_state(struct device *dev); -int ste_audio_io_enable_fade_vibr(struct device *dev); -int ste_audio_io_disable_fade_vibr(struct device *dev); - -int ste_audio_io_power_up_mic1a(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_power_down_mic1a(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_power_state_mic1a_query(struct device *dev); -int ste_audio_io_set_mic1a_gain(enum AUDIOIO_CH_INDEX chnl_index, - u16 gain_index, int gain_value, u32 linear, struct device *dev); -int ste_audio_io_get_mic1a_gain(int*, int*, u16, - struct device *dev); -int ste_audio_io_mute_mic1a(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_unmute_mic1a(enum AUDIOIO_CH_INDEX chnl_index, int *gain, - struct device *dev); -int ste_audio_io_mute_mic1a_state(struct device *dev); -int ste_audio_io_enable_fade_mic1a(struct device *dev); -int ste_audio_io_disable_fade_mic1a(struct device *dev); - -/* - *** Mic1b *** - */ -int ste_audio_io_power_up_mic1b(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_power_down_mic1b(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_power_state_mic1b_query(struct device *dev); -int ste_audio_io_set_mic1b_gain(enum AUDIOIO_CH_INDEX chnl_index, - u16 gain_index, int gain_value, u32 linear, struct device *dev); -int ste_audio_io_get_mic1b_gain(int*, int*, u16, - struct device *dev); -int ste_audio_io_mute_mic1b(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_unmute_mic1b(enum AUDIOIO_CH_INDEX chnl_index, int *gain, - struct device *dev); -int ste_audio_io_mute_mic1b_state(struct device *dev); -int ste_audio_io_enable_fade_mic1b(struct device *dev); -int ste_audio_io_disable_fade_mic1b(struct device *dev); -int ste_audio_io_enable_loop_mic1b(enum AUDIOIO_CH_INDEX chnl_index, - enum AUDIOIO_HAL_HW_LOOPS, - int loop_gain, struct device *dev, - void *cookie); -int ste_audio_io_disable_loop_mic1b(enum AUDIOIO_CH_INDEX chnl_index, - enum AUDIOIO_HAL_HW_LOOPS hw_loop, - struct device *dev, void *cookie); -/* - *** Mic2 *** - */ -int ste_audio_io_power_up_mic2(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_power_down_mic2(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_power_state_mic2_query(struct device *dev); -int ste_audio_io_set_mic2_gain(enum AUDIOIO_CH_INDEX chnl_index, u16 gain_index, - int gain_value, u32 linear, - struct device *dev); -int ste_audio_io_get_mic2_gain(int*, int*, u16, - struct device *dev); -int ste_audio_io_mute_mic2(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_unmute_mic2(enum AUDIOIO_CH_INDEX chnl_index, int *gain, - struct device *dev); -int ste_audio_io_mute_mic2_state(struct device *dev); -int ste_audio_io_enable_fade_mic2(struct device *dev); -int ste_audio_io_disable_fade_mic2(struct device *dev); - -int ste_audio_io_power_up_lin(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_power_down_lin(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_power_state_lin_query(struct device *dev); -int ste_audio_io_set_lin_gain(enum AUDIOIO_CH_INDEX chnl_index, u16 gain_index, - int gain_value, u32 linear, - struct device *dev); -int ste_audio_io_get_lin_gain(int*, int*, u16, - struct device *dev); -int ste_audio_io_mute_lin(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_unmute_lin(enum AUDIOIO_CH_INDEX chnl_index, int *gain, - struct device *dev); -int ste_audio_io_mute_lin_state(struct device *dev); -int ste_audio_io_enable_fade_lin(struct device *dev); -int ste_audio_io_disable_fade_lin(struct device *dev); - -int ste_audio_io_power_up_dmic12(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_power_down_dmic12(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_power_state_dmic12_query(struct device *dev); -int ste_audio_io_set_dmic12_gain(enum AUDIOIO_CH_INDEX chnl_index, - u16 gain_index, int gain_value, u32 linear, - struct device *dev); -int ste_audio_io_get_dmic12_gain(int*, int*, u16, - struct device *dev); -int ste_audio_io_mute_dmic12(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_unmute_dmic12(enum AUDIOIO_CH_INDEX chnl_index, int *gain, - struct device *dev); -int ste_audio_io_mute_dmic12_state(struct device *dev); -int ste_audio_io_enable_fade_dmic12(struct device *dev); -int ste_audio_io_disable_fade_dmic12(struct device *dev); -int ste_audio_io_enable_loop_dmic12(enum AUDIOIO_CH_INDEX chnl_index, - enum AUDIOIO_HAL_HW_LOOPS, - int loop_gain, struct device *dev, - void *cookie); -int ste_audio_io_disable_loop_dmic12(enum AUDIOIO_CH_INDEX chnl_index, - enum AUDIOIO_HAL_HW_LOOPS hw_loop, - struct device *dev, void *cookie); - -int ste_audio_io_power_up_dmic34(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_power_down_dmic34(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_power_state_dmic34_query(struct device *dev); -int ste_audio_io_set_dmic34_gain(enum AUDIOIO_CH_INDEX chnl_index, - u16 gain_index, int gain_value, u32 linear, - struct device *dev); -int ste_audio_io_get_dmic34_gain(int*, int*, u16, - struct device *dev); -int ste_audio_io_mute_dmic34(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_unmute_dmic34(enum AUDIOIO_CH_INDEX chnl_index, int *gain, - struct device *dev); -int ste_audio_io_mute_dmic34_state(struct device *dev); -int ste_audio_io_enable_fade_dmic34(struct device *dev); -int ste_audio_io_disable_fade_dmic34(struct device *dev); - -int ste_audio_io_power_up_dmic56(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_power_down_dmic56(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_power_state_dmic56_query(struct device *dev); -int ste_audio_io_set_dmic56_gain(enum AUDIOIO_CH_INDEX chnl_index, - u16 gain_index, int gain_value, u32 linear, - struct device *dev); -int ste_audio_io_get_dmic56_gain(int*, int*, u16, - struct device *dev); -int ste_audio_io_mute_dmic56(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_unmute_dmic56(enum AUDIOIO_CH_INDEX chnl_index, int *gain, - struct device *dev); -int ste_audio_io_mute_dmic56_state(struct device *dev); -int ste_audio_io_enable_fade_dmic56(struct device *dev); -int ste_audio_io_disable_fade_dmic56(struct device *dev); - -int ste_audio_io_power_up_fmrx(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_power_down_fmrx(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_power_state_fmrx_query(struct device *dev); -int ste_audio_io_set_fmrx_gain(enum AUDIOIO_CH_INDEX chnl_index, u16 gain_index, - int gain_value, u32 linear, - struct device *dev); -int ste_audio_io_get_fmrx_gain(int*, int*, u16, - struct device *dev); -int ste_audio_io_mute_fmrx(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_unmute_fmrx(enum AUDIOIO_CH_INDEX chnl_index, int *gain, - struct device *dev); -int ste_audio_io_mute_fmrx_state(struct device *dev); -int ste_audio_io_enable_fade_fmrx(struct device *dev); -int ste_audio_io_disable_fade_fmrx(struct device *dev); - -int ste_audio_io_power_up_fmtx(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_power_down_fmtx(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_power_state_fmtx_query(struct device *dev); -int ste_audio_io_set_fmtx_gain(enum AUDIOIO_CH_INDEX chnl_index, u16 gain_index, - int gain_value, u32 linear, - struct device *dev); -int ste_audio_io_get_fmtx_gain(int*, int*, u16, - struct device *dev); -int ste_audio_io_mute_fmtx(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_unmute_fmtx(enum AUDIOIO_CH_INDEX chnl_index, int *gain, - struct device *dev); -int ste_audio_io_mute_fmtx_state(struct device *dev); -int ste_audio_io_enable_fade_fmtx(struct device *dev); -int ste_audio_io_disable_fade_fmtx(struct device *dev); - -int ste_audio_io_power_up_bluetooth(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_power_down_bluetooth(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_power_state_bluetooth_query(struct device *dev); -int ste_audio_io_set_bluetooth_gain(enum AUDIOIO_CH_INDEX chnl_index, - u16 gain_index, int gain_value, u32 linear, - struct device *dev); -int ste_audio_io_get_bluetooth_gain(int*, int*, u16, - struct device *dev); -int ste_audio_io_mute_bluetooth(enum AUDIOIO_CH_INDEX chnl_index, - struct device *dev); -int ste_audio_io_unmute_bluetooth(enum AUDIOIO_CH_INDEX chnl_index, int *gain, - struct device *dev); -int ste_audio_io_mute_bluetooth_state(struct device *dev); -int ste_audio_io_enable_fade_bluetooth(struct device *dev); -int ste_audio_io_disable_fade_bluetooth(struct device *dev); - - -#endif - diff --git a/drivers/misc/audio_io_dev/ste_audio_io_hwctrl_common.c b/drivers/misc/audio_io_dev/ste_audio_io_hwctrl_common.c deleted file mode 100644 index c2409f849ae..00000000000 --- a/drivers/misc/audio_io_dev/ste_audio_io_hwctrl_common.c +++ /dev/null @@ -1,189 +0,0 @@ -/* - * Copyright (C) ST-Ericsson SA 2010 - * Author: Deepak KARDA/ deepak.karda@stericsson.com for ST-Ericsson - * License terms: GNU General Public License (GPL) version 2. - */ - - -#include <linux/types.h> -#include "ste_audio_io_hwctrl_common.h" - -/* Number of channels for each transducer */ -const uint transducer_no_of_channels[MAX_NO_TRANSDUCERS] = { - 1, /* Earpiece */ - 2, /* HS */ - 2, /* IHF */ - 1, /* VibL */ - 1, /* VibR */ - 1, /* Mic1A */ - 1, /* Mic1B */ - 1, /* Mic2 */ - 2, /* LinIn */ - 2, /* DMIC12 */ - 2, /* DMIC34 */ - 2, /* /DMIC56 */ - 4 /* MultiMic */ - }; - -/* Maximum number of gains in each transducer path - (all channels of a specific transducer have same max no of gains) */ -const uint transducer_no_of_gains[MAX_NO_TRANSDUCERS] = { - 2, /* Ear g3 and g4 */ - 3, /* HS g3 and g4 and analog */ - 1, /* IHF g3 */ - 1, /* VibL g3 */ - 1, /* VibR g3 */ - 2, /* Mic1A g1 and analog */ - 2, /* Mic1A g1 and analog */ - 2, /* Mic2 g1 and analog */ - 2, /* LinIn g1 and analog */ - 1, /* DMIC12 g1 */ - 1, /* DMIC34 g1 */ - 1, /* DMIC56 g1 */ - 1 /* MultiMic g1 */ - }; - -const uint transducer_no_Of_supported_loop_indexes[MAX_NO_TRANSDUCERS] = { - 0x09,/* Ear0x01|0x08*/ - 0x38770,/*{0x01|0x10|0x20|0x40|0x100*/ - /*|0x200|0x400|0x8000|0x10000|0x20000}, HS*/ - 0x86,/*IHF*/ - 0x0,/*VibL*/ - 0x0,/*VibR*/ - 0x0,/*Mic1A*/ - 0x01,/*Mic1B Sidetone is controlled*/ - 0x0,/*Mic2*/ - 0x0,/*LinIn*/ - 0x0,/*DMIC12*/ - 0x0,/*DMIC34*/ - 0x0,/*DMIC56*/ - 0x01,/*MultiMic Sidetone is controlled*/ - 0x0,/*FMRx*/ - 0x0/*FMTx*/ - }; - -const uint transducer_max_no_Of_supported_loops[MAX_NO_TRANSDUCERS] = { - 0,/*Ear Sidetone*/ - 2,/*HS SideTone LININ_HS LININR_HSR LININ_HSL*/ - 1,/*IHF TO BE DEFINED*/ - 0,/*VibL TO BE DEFINED*/ - 0,/*VibR TO BE DEFINED*/ - 1,/*Mic1A TO BE DEFINED*/ - 1,/*Mic1B SIDETONE TO BE DEFINED*/ - 1,/*Mic2 TO BE DEFINED*/ - 0, /* LinIn */ - 1,/*DMIC12-ANC*/ - 0,/*DMIC34-ANC*/ - 0, /* DMIC56 */ - 1,/*MultiMic-SIDETONE ANC*/ - 0,/*FMRx*/ - 0/*FMTx*/ - }; - -const uint max_no_of_loop_gains[MAX_NO_TRANSDUCERS] = { - 0,/*Earpiece*/ - 2,/*HS*/ - 0, - 0, - 0, - 0, - 2,/*Mic1B-Sidetone 2 gains*/ - 0, - 0, - 2,/*DMIC12*/ - 0, - 0, - 2,/*Multimic, Sidetone max no gains = 2*/ - 0, - 0 - }; - - -struct gain_descriptor_t gain_descriptor[MAX_NO_TRANSDUCERS]\ - [MAX_NO_CHANNELS][MAX_NO_GAINS] = { - /* gainIndex=0 1 2 - EDestinationEar */ - {{{-63, 0, 1}, {-1, 8, 1}, {0, 0, 0} } ,/* channelIndex=0 */ - {{0, 0, 0}, {0, 0, 0}, {0, 0, 0} } ,/* channelIndex=1 */ - {{0, 0, 0}, {0, 0, 0}, {0, 0, 0} } ,/* channelIndex=2 */ - {{0, 0, 0}, {0, 0, 0}, {0, 0, 0} } } ,/* channelIndex=3 */ - - /* EDestinationHS */ - {{{-63, 0, 1}, {-1, 8, 1}, {-32, 4, 2} } , /* channelIndex=0 */ - {{-63, 0, 1}, {-1, 8, 1}, {-32, 4, 2} } , /* channelIndex=1 */ - {{0, 0, 0}, {0, 0, 0}, {0, 0, 0} } , /* channelIndex=2 */ - {{0, 0, 0}, {0, 0, 0}, {0, 0, 0} } } , /* channelIndex=3 */ - - /* EDestinationIHF */ - {{{-63, 0, 1}, {0, 0, 0}, {0, 0, 0} } ,/* channelIndex=0 */ - {{-63, 0, 1}, {0, 0, 0}, {0, 0, 0} } ,/* channelIndex=1 */ - {{0, 0, 0}, {0, 0, 0}, {0, 0, 0} } ,/* channelIndex=2 */ - {{0, 0, 0}, {0, 0, 0}, {0, 0, 0} } } ,/* channelIndex=3 */ - - /* EDestinationVibL */ - {{{-63, 0, 1}, {0, 0, 0}, {0, 0, 0} } ,/* channelIndex=0 */ - {{0, 0, 0}, {0, 0, 0}, {0, 0, 0} } ,/* channelIndex=1 */ - {{0, 0, 0}, {0, 0, 0}, {0, 0, 0} } ,/* channelIndex=2 */ - {{0, 0, 0}, {0, 0, 0}, {0, 0, 0} } } ,/* channelIndex=3 */ - - /* EDestinationVibR */ - {{{-63, 0, 1}, {0, 0, 0}, {0, 0, 0} } ,/* channelIndex=0 */ - {{0, 0, 0}, {0, 0, 0}, {0, 0, 0} } ,/* channelIndex=1 */ - {{0, 0, 0}, {0, 0, 0}, {0, 0, 0} } ,/* channelIndex=2 */ - {{0, 0, 0}, {0, 0, 0}, {0, 0, 0} } } ,/* channelIndex=3 */ - - /* ESourceMic1A */ - {{{-32, 31, 1}, {0, 31, 1}, {0, 0, 0} } ,/* channelIndex=0 */ - {{0, 0, 0}, {0, 0, 0}, {0, 0, 0} } ,/* channelIndex=1 */ - {{0, 0, 0}, {0, 0, 0}, {0, 0, 0} } ,/* channelIndex=2 */ - {{0, 0, 0}, {0, 0, 0}, {0, 0, 0} } } ,/* channelIndex=3 */ - - /* ESourceMic1B */ - {{{-32, 31, 1}, {0, 31, 1}, {0, 0, 0} } ,/* channelIndex=0 */ - {{0, 0, 0}, {0, 0, 0}, {0, 0, 0} } ,/* channelIndex=1 */ - {{0, 0, 0}, {0, 0, 0}, {0, 0, 0} } ,/* channelIndex=2 */ - {{0, 0, 0}, {0, 0, 0}, {0, 0, 0} } } ,/* channelIndex=3 */ - - /* ESourceMic2 */ - {{{-32, 31, 1}, {0, 31, 1}, {0, 0, 0} } ,/* channelIndex=0 */ - {{0, 0, 0}, {0, 0, 0}, {0, 0, 0} } ,/* channelIndex=1 */ - {{0, 0, 0}, {0, 0, 0}, {0, 0, 0} } ,/* channelIndex=2 */ - {{0, 0, 0}, {0, 0, 0}, {0, 0, 0} } } ,/* channelIndex=3 */ - - /* ESourceLin */ - {{{-32, 31, 1}, {-10, 20, 2}, {0, 0, 0} } ,/* channelIndex=0 */ - {{-32, 31, 1}, {-10, 20, 2}, {0, 0, 0} } ,/* channelIndex=1 */ - {{0, 0, 0}, {0, 0, 0}, {0, 0, 0} } ,/* channelIndex=2 */ - {{0, 0, 0}, {0, 0, 0}, {0, 0, 0} } } ,/* channelIndex=3 */ - - /* ESourceDMic12 */ - {{{-32, 31, 1}, {0, 0, 0}, {0, 0, 0} } ,/* channelIndex=0 */ - {{-32, 31, 1}, {0, 0, 0}, {0, 0, 0} } ,/* channelIndex=1 */ - {{0, 0, 0}, {0, 0, 0}, {0, 0, 0} } ,/* channelIndex=2 */ - {{0, 0, 0}, {0, 0, 0}, {0, 0, 0} } } ,/* channelIndex=3 */ - - /* ESourceDMic34 */ - {{{-32, 31, 1}, {0, 0, 0}, {0, 0, 0} } ,/* channelIndex=0 */ - {{-32, 31, 1}, {0, 0, 0}, {0, 0, 0} } ,/* channelIndex=1 */ - {{0, 0, 0}, {0, 0, 0}, {0, 0, 0} } ,/* channelIndex=2 */ - {{0, 0, 0}, {0, 0, 0}, {0, 0, 0} } } ,/* channelIndex=3 */ - - /* ESourceDMic56 */ - {{{-32, 31, 1}, {0, 0, 0}, {0, 0, 0} } ,/* channelIndex=0 */ - {{-32, 31, 1}, {0, 0, 0}, {0, 0, 0} } ,/* channelIndex=1 */ - {{0, 0, 0}, {0, 0, 0}, {0, 0, 0} } ,/* channelIndex=2 */ - {{0, 0, 0}, {0, 0, 0}, {0, 0, 0} } } ,/* channelIndex=3 */ - - /* ESourceMultiMic */ - {{{-32, 31, 1}, {0, 0, 0}, {0, 0, 0} } ,/* channelIndex=0 */ - {{-32, 31, 1}, {0, 0, 0}, {0, 0, 0} } ,/* channelIndex=1 */ - {{-32, 31, 1}, {0, 0, 0}, {0, 0, 0} },/* channelIndex=2 */ - {{-32, 31, 1}, {0, 0, 0}, {0, 0, 0} } } /* channelIndex=3 */ -}; - - -const int hs_analog_gain_table[16] = {4, 2, 0, -2, -4, -6, -8, -10, - -12, -14, -16, -18, -20, -24, -28, -32}; - - - diff --git a/drivers/misc/audio_io_dev/ste_audio_io_hwctrl_common.h b/drivers/misc/audio_io_dev/ste_audio_io_hwctrl_common.h deleted file mode 100644 index cc2bfe21d81..00000000000 --- a/drivers/misc/audio_io_dev/ste_audio_io_hwctrl_common.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (C) ST-Ericsson SA 2010 - * Author: Deepak KARDA/ deepak.karda@stericsson.com for ST-Ericsson - * License terms: GNU General Public License (GPL) version 2. - */ - -#ifndef __AUDIOIO_HWCTRL_COMMON_H__ -#define __AUDIOIO_HWCTRL_COMMON_H__ - -#include <linux/types.h> -#include <mach/ste_audio_io_ioctl.h> -/* - * Defines - */ - -#define MAX_GAIN 100 -#define MIN_GAIN 0 -#define MAX_NO_CHANNELS 4 -#define MAX_NO_GAINS 3 -#define MAX_NO_LOOPS 1 -#define MAX_NO_LOOP_GAINS 1 - -struct gain_descriptor_t { - int min_gain; - int max_gain; - uint gain_step; -}; - - -/* Number of channels for each transducer */ -extern const uint transducer_no_of_channels[MAX_NO_TRANSDUCERS]; - -/* - * Maximum number of gains in each transducer path - * all channels of a specific transducer have same max no of gains - */ -extern const uint transducer_no_of_gains[MAX_NO_TRANSDUCERS]; - -/* Maximum number of supported loops for each transducer */ -extern const uint transducer_no_Of_supported_loop_indexes[MAX_NO_TRANSDUCERS]; -extern const uint transducer_max_no_Of_supported_loops[MAX_NO_TRANSDUCERS]; -extern const uint max_no_of_loop_gains[MAX_NO_TRANSDUCERS]; -extern const int hs_analog_gain_table[16] ; - -extern struct gain_descriptor_t gain_descriptor[MAX_NO_TRANSDUCERS]\ - [MAX_NO_CHANNELS][MAX_NO_GAINS]; - -#endif - -/* End of audio_io_hwctrl_common.h */ diff --git a/sound/Kconfig b/sound/Kconfig index 1740aa5d6d3..261a03c8a20 100644 --- a/sound/Kconfig +++ b/sound/Kconfig @@ -23,66 +23,6 @@ menuconfig SOUND and read <file:Documentation/sound/oss/README.modules>; the module will be called soundcore. -# added for U8500 audio codec device -config U8500_ACODEC - tristate "U8500 audio codec generic module (used both by SAA and ALSA)" - depends on STM_MSP_I2S - default Y - help - Say Y here if you have a U8500 based device - and want to use its audio codec chip. - - To compile this driver as a module, choose M here: the module - will be called u8500mod_acodec. - -choice - prompt "Audio codec type" - depends on U8500_ACODEC - default U8500_AB8500_ED - - config U8500_AB8500_ED - bool "U8500 ab8500 v0 audio codec" - - config U8500_AB8500_CUT10 - bool "U8500 ab8500 v1.x audio codec" - -endchoice - -menu "Debug level for ux500 audio drivers" -config STM_ACODEC_DEBUG - int "STM ACODEC Debug Level" - depends on U8500_ACODEC - default 0 - help - Sets the ACODEC debug ON/OFF for U8500 SoC - * 0 OFF - * 1 ON - -config STM_ALSA_DEBUG - int "STM ALSA Debug Level" - depends on SND_U8500_ALSA || SND_U8500_ALSA_AB8500 - default 0 - help - Sets the ALSA debug ON/OFF for U8500 SoC - * 0 OFF - * 1 ON -endmenu - -choice - prompt "Driver mode" - depends on U8500_ACODEC - default U8500_ACODEC_DMA - - config U8500_ACODEC_DMA - bool "DMA mode" - - config U8500_ACODEC_POLL - bool "Polling mode" - - config U8500_ACODEC_INTR - bool "Interrupt mode" -endchoice - if SOUND config SOUND_OSS_CORE diff --git a/sound/Makefile b/sound/Makefile index b5963c8b70d..ce9132b1c39 100644 --- a/sound/Makefile +++ b/sound/Makefile @@ -16,11 +16,4 @@ ifeq ($(CONFIG_SND),y) obj-y += last.o endif -obj-$(CONFIG_U8500_ACODEC) += u8500mod_acodec.o -ifeq ($(CONFIG_U8500_AB8500_CUT10),y) - u8500mod_acodec-objs := u8500_acodec_ab8500.o ab8500_codec_v1_0.o -else - u8500mod_acodec-objs := u8500_acodec_ab8500.o ab8500_codec.o -endif - soundcore-objs := sound_core.o diff --git a/sound/ab8500_codec.c b/sound/ab8500_codec.c deleted file mode 100644 index fd4975bbdce..00000000000 --- a/sound/ab8500_codec.c +++ /dev/null @@ -1,6697 +0,0 @@ -/* - * Copyright (C) ST-Ericsson SA 2010 - * - * Author: ST-Ericsson - * - * License terms: - * - * 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. - */ - - /*---------------------------------------------------------------------------- - * Includes - *---------------------------------------------------------------------------*/ -#include <mach/ab8500_codec.h> -#include <mach/ab8500_codec_p.h> - -/*--------------------------------------------------------------------------* - * debug stuff * - *--------------------------------------------------------------------------*/ -#ifdef __DEBUG -#define MY_DEBUG_LEVEL_VAR_NAME myDebugLevel_AB8500_CODEC -#define MY_DEBUG_ID myDebugID_AB8500_CODEC -PRIVATE t_dbg_level MY_DEBUG_LEVEL_VAR_NAME = DEBUG_LEVEL0; -PRIVATE t_dbg_id MY_DEBUG_ID = AB8500_CODEC_HCL_DBG_ID; -#endif - -/*--------------------------------------------------------------------------* - * Global data for interrupt mode management * - *--------------------------------------------------------------------------*/ -PRIVATE t_ab8500_codec_system_context g_ab8500_codec_system_context; - -/*--------------------------------------------------------------------------* - * Default Values * - *--------------------------------------------------------------------------*/ -#define AB8500_CODEC_DEFAULT_SLAVE_ADDRESS_OF_CODEC 0xD -#define AB8500_CODEC_DEFAULT_DIRECTION AB8500_CODEC_DIRECTION_OUT - -#define AB8500_CODEC_DEFAULT_MODE_IN AB8500_CODEC_MODE_VOICE -#define AB8500_CODEC_DEFAULT_MODE_OUT AB8500_CODEC_MODE_VOICE - -#define AB8500_CODEC_DEFAULT_INPUT_SRC AB8500_CODEC_SRC_MICROPHONE_1A -#define AB8500_CODEC_DEFAULT_OUTPUT_DEST AB8500_CODEC_DEST_HEADSET - -#define AB8500_CODEC_DEFAULT_VOLUME_LEFT_IN 75 -#define AB8500_CODEC_DEFAULT_VOLUME_RIGHT_IN 75 -#define AB8500_CODEC_DEFAULT_VOLUME_LEFT_OUT 75 -#define AB8500_CODEC_DEFAULT_VOLUME_RIGHT_OUT 75 - -/*--------------------------------------------------------------------- - * PRIVATE APIs - *--------------------------------------------------------------------*/ -PRIVATE t_ab8500_codec_error ab8500_codec_ADSlotAllocationSwitch1(IN - t_ab8500_codec_slot - ad_slot, - IN - t_ab8500_codec_cr31_to_cr46_ad_data_allocation - value); -PRIVATE t_ab8500_codec_error ab8500_codec_ADSlotAllocationSwitch2(IN - t_ab8500_codec_slot - ad_slot, - IN - t_ab8500_codec_cr31_to_cr46_ad_data_allocation - value); -PRIVATE t_ab8500_codec_error ab8500_codec_ADSlotAllocationSwitch3(IN - t_ab8500_codec_slot - ad_slot, - IN - t_ab8500_codec_cr31_to_cr46_ad_data_allocation - value); -PRIVATE t_ab8500_codec_error ab8500_codec_ADSlotAllocationSwitch4(IN - t_ab8500_codec_slot - ad_slot, - IN - t_ab8500_codec_cr31_to_cr46_ad_data_allocation - value); -PRIVATE t_ab8500_codec_error ab8500_codec_SrcPowerControlSwitch1(IN - t_ab8500_codec_src - src_device, - t_ab8500_codec_src_state - state); -PRIVATE t_ab8500_codec_error ab8500_codec_SrcPowerControlSwitch2(IN - t_ab8500_codec_src - src_device, - t_ab8500_codec_src_state - state); -PRIVATE t_ab8500_codec_error ab8500_codec_SetModeAndDirectionUpdateCR(void); -PRIVATE t_ab8500_codec_error ab8500_codec_SetSrcVolumeUpdateCR(void); -PRIVATE t_ab8500_codec_error ab8500_codec_SetDestVolumeUpdateCR(void); -PRIVATE t_ab8500_codec_error ab8500_codec_ProgramDirectionIN(void); -PRIVATE t_ab8500_codec_error ab8500_codec_ProgramDirectionOUT(void); -PRIVATE t_ab8500_codec_error ab8500_codec_DestPowerControlUpdateCR(void); - -/********************************************************************************************/ -/* Name: ab8500_codec_SingleWrite */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_SingleWrite(t_uint8 register_offset, - t_uint8 data) -{ - return (t_ab8500_codec_error) (AB8500_CODEC_Write - (register_offset, 0x01, &data)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_SingleRead */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_SingleRead(t_uint8 register_offset, - t_uint8 data) -{ - t_uint8 dummy_data = 0xAA; - - return (t_ab8500_codec_error) (AB8500_CODEC_Read - (register_offset, 0x01, &dummy_data, - &data)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR0 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR0(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr0_powerup, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR0_POWERUP); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr0_enaana, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR0_ENAANA); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR0, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR1 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR1(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr1_swreset, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR1_SWRESET); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR1, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR2 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR2(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr2_enad1, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR2_ENAD1); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr2_enad2, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR2_ENAD2); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr2_enad3, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR2_ENAD3); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr2_enad4, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR2_ENAD4); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr2_enad5, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR2_ENAD5); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr2_enad6, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR2_ENAD6); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR2, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR3 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR3(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr3_enda1, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR3_ENDA1); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr3_enda2, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR3_ENDA2); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr3_enda3, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR3_ENDA3); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr3_enda4, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR3_ENDA4); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr3_enda5, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR3_ENDA5); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr3_enda6, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR3_ENDA6); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR3, value)); -} - -#if 0 - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR4 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR4(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr4_lowpowhs, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR4_LOWPOWHS); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr4_lowpowdachs, - AB8500_CODEC_MASK_TWO_BITS, AB8500_CODEC_CR4_LOWPOWDACHS); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr4_lowpowear, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR4_LOWPOWEAR); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr4_ear_sel_cm, - AB8500_CODEC_MASK_TWO_BITS, AB8500_CODEC_CR4_EAR_SEL_CM); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr4_hs_hp_dis, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR4_HS_HP_DIS); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr4_ear_hp_dis, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR4_EAR_HP_DIS); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR4, value)); -} -#endif - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR5 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR5(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr5_enmic1, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR5_ENMIC1); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr5_enmic2, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR5_ENMIC2); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr5_enlinl, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR5_ENLINL); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr5_enlinr, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR5_ENLINR); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr5_mutmic1, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR5_MUTMIC1); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr5_mutmic2, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR5_MUTMIC2); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr5_mutlinl, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR5_MUTELINL); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr5_mutlinr, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR5_MUTELINR); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR5, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR6 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR6(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr6_endmic1, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR6_ENDMIC1); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr6_endmic2, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR6_ENDMIC2); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr6_endmic3, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR6_ENDMIC3); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr6_endmic4, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR6_ENDMIC4); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr6_endmic5, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR6_ENDMIC5); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr6_endmic6, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR6_ENDMIC6); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR6, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR7 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR7(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr7_mic1sel, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR7_MIC1SEL); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr7_linrsel, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR7_LINRSEL); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr7_endrvhsl, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR7_ENDRVHSL); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr7_endrvhsr, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR7_ENDRVHSR); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr7_enadcmic, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR7_ENADCMIC); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr7_enadclinl, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR7_ENADCLINL); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr7_enadclinr, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR7_ENADCLINR); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR7, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR8 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR8(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr8_cp_dis_pldwn, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR8_CP_DIS_PLDWN); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr8_enear, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR8_ENEAR); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr8_enhsl, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR8_ENHSL); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr8_enhsr, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR8_ENHSR); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr8_enhfl, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR8_ENHFL); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr8_enhfr, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR8_ENHFR); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr8_envibl, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR8_ENVIBL); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr8_envibr, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR8_ENVIBR); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR8, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR9 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR9(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr9_endacear, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR9_ENADACEAR); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr9_endachsl, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR9_ENADACHSL); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr9_endachsr, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR9_ENADACHSR); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr9_endachfl, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR9_ENADACHFL); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr9_endachfr, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR9_ENADACHFR); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr9_endacvibl, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR9_ENADACVIBL); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr9_endacvibr, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR9_ENADACVIBR); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR9, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR10 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR10(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr10_muteear, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR10_MUTEEAR); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr10_mutehsl, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR10_MUTEHSL); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr10_mutehsr, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR10_MUTEHSR); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr10_mutehfl, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR10_MUTEHFL); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr10_mutehfr, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR10_MUTEHFR); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr10_mutevibl, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR10_MUTEVIBL); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr10_mutevibr, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR10_MUTEVIBR); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR10, value)); -} - -#if 0 - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR11 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR11(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr11_earshortpwd, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR11_ENSHORTPWD); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr11_earshortdis, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR11_EARSHORTDIS); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr11_hslshortdis, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR11_HSLSHORTDIS); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr11_hsrshortdis, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR11_HSRSHORTDIS); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr11_hflshortdis, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR11_HFLSHORTDIS); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr11_hfrshortdis, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR11_HFRSHORTDIS); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr11_viblshortdis, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR11_VIBLSHORTDIS); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr11_vibrshortdis, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR11_VIBRSHORTDIS); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR11, value)); -} - -#endif - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR12 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR12(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr12_encphs, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR12_ENCPHS); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr12_hsautotime, - AB8500_CODEC_MASK_THREE_BITS, AB8500_CODEC_CR12_HSAUTOTIME); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr12_hsautoensel, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR12_HSAUTOENSEL); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr12_hsautoen, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR12_HSAUTOEN); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR12, value)); -} - -#if 0 - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR13 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR13(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr13_envdet_hthresh, - AB8500_CODEC_MASK_FOUR_BITS, AB8500_CODEC_CR13_ENVDET_HTHRESH); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr13_envdet_lthresh, - AB8500_CODEC_MASK_FOUR_BITS, AB8500_CODEC_CR13_ENVDET_LTHRESH); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR13, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR14 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR14(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr14_smpslven, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR14_SMPSLVEN); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr14_envdetsmpsen, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR14_ENVDETSMPSEN); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr14_cplven, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR14_CPLVEN); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr14_envdetcpen, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR14_ENVDETCPEN); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr14_envet_time, - AB8500_CODEC_MASK_FOUR_BITS, AB8500_CODEC_CR14_ENVDET_TIME); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR14, value)); -} -#endif - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR15 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR15(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr15_pwmtovibl, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR15_PWMTOVIBL); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr15_pwmtovibr, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR15_PWMTOVIBR); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr15_pwmlctrl, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR15_PWMLCTRL); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr15_pwmrctrl, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR15_PWMRCTRL); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr15_pwmnlctrl, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR15_PWMNLCTRL); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr15_pwmplctrl, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR15_PWMPLCTRL); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr15_pwmnrctrl, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR15_PWMNRCTRL); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr15_pwmprctrl, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR15_PWMPRCTRL); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR15, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR16 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR16(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr16_pwmnlpol, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR16_PWMNLPOL); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr16_pwmnldutycycle, - AB8500_CODEC_MASK_SEVEN_BITS, AB8500_CODEC_CR16_PWMNLDUTYCYCLE); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR16, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR17 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR17(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr17_pwmplpol, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR17_PWMPLPOL); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr17_pwmpldutycycle, - AB8500_CODEC_MASK_SEVEN_BITS, AB8500_CODEC_CR17_PWMLPDUTYCYCLE); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR17, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR18 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR18(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr18_pwmnrpol, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR18_PWMNRPOL); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr18_pwmnrdutycycle, - AB8500_CODEC_MASK_SEVEN_BITS, AB8500_CODEC_CR18_PWMNRDUTYCYCLE); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR18, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR19 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR19(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr19_pwmprpol, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR19_PWMPRPOL); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr19_pwmprdutycycle, - AB8500_CODEC_MASK_SEVEN_BITS, AB8500_CODEC_CR19_PWMRPDUTYCYCLE); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR19, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR20 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR20(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr20_en_se_mic1, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR20_EN_SE_MIC1); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr20_mic1_gain, - AB8500_CODEC_MASK_FIVE_BITS, AB8500_CODEC_CR20_MIC1_GAIN); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR20, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR21 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR21(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr21_en_se_mic2, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR21_EN_SE_MIC2); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr21_mic2_gain, - AB8500_CODEC_MASK_FIVE_BITS, AB8500_CODEC_CR21_MIC2_GAIN); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR21, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR22 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR22(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr22_hsl_gain, - AB8500_CODEC_MASK_THREE_BITS, AB8500_CODEC_CR22_HSL_GAIN); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr22_linl_gain, - AB8500_CODEC_MASK_FIVE_BITS, AB8500_CODEC_CR22_LINL_GAIN); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR22, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR23 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR23(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr23_hsr_gain, - AB8500_CODEC_MASK_THREE_BITS, AB8500_CODEC_CR23_HSR_GAIN); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr23_linr_gain, - AB8500_CODEC_MASK_FIVE_BITS, AB8500_CODEC_CR23_LINR_GAIN); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR23, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR24 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR24(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr24_lintohsl_gain, - AB8500_CODEC_MASK_FIVE_BITS, AB8500_CODEC_CR24_LINTOHSL_GAIN); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR24, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR25 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR25(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr25_lintohsr_gain, - AB8500_CODEC_MASK_FIVE_BITS, AB8500_CODEC_CR25_LINTOHSR_GAIN); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR25, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR26 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR26(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr26_ad1nh, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR26_AD1NH); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr26_ad2nh, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR26_AD2NH); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr26_ad3nh, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR26_AD3NH); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr26_ad4nh, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR26_AD4NH); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr26_ad1_voice, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR26_AD1_VOICE); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr26_ad2_voice, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR26_AD2_VOICE); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr26_ad3_voice, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR26_AD3_VOICE); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr26_ad4_voice, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR26_AD4_VOICE); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR26, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR27 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR27(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr27_en_mastgen, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR27_EN_MASTGEN); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr27_if1_bitclk_osr, - AB8500_CODEC_MASK_TWO_BITS, AB8500_CODEC_CR27_IF1_BITCLK_OSR); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr27_enfs_bitclk1, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR27_ENFS_BITCLK1); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr27_if0_bitclk_osr, - AB8500_CODEC_MASK_TWO_BITS, AB8500_CODEC_CR27_IF0_BITCLK_OSR); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr27_enfs_bitclk0, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR27_ENFS_BITCLK0); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR27, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR28 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR28(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr28_fsync0p, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR28_FSYNC0P); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr28_bitclk0p, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR28_BITCLK0P); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr28_if0del, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR28_IF0DEL); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr28_if0format, - AB8500_CODEC_MASK_TWO_BITS, AB8500_CODEC_CR28_IF0FORMAT); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr28_if0wl, - AB8500_CODEC_MASK_TWO_BITS, AB8500_CODEC_CR28_IF0WL); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR28, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR29 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR29(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr29_if0datoif1ad, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR29_IF0DATOIF1AD); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr29_if0cktoif1ck, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR29_IF0CKTOIF1CK); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr29_if1master, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR29_IF1MASTER); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr29_if1datoif0ad, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR29_IF1DATOIF0AD); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr29_if1cktoif0ck, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR29_IF1CKTOIF0CK); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr29_if0master, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR29_IF0MASTER); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr29_if0bfifoen, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR29_IF0BFIFOEN); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR29, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR30 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR30(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr30_fsync1p, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR30_FSYNC1P); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr30_bitclk1p, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR30_BITCLK1P); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr30_if1del, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR30_IF1DEL); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr30_if1format, - AB8500_CODEC_MASK_TWO_BITS, AB8500_CODEC_CR30_IF1FORMAT); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr30_if1wl, - AB8500_CODEC_MASK_TWO_BITS, AB8500_CODEC_CR30_IF1WL); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR30, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR31 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR31(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr31_adotoslot1, - AB8500_CODEC_MASK_FOUR_BITS, AB8500_CODEC_CR31_ADOTOSLOT1); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr31_adotoslot0, - AB8500_CODEC_MASK_FOUR_BITS, AB8500_CODEC_CR31_ADOTOSLOT0); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR31, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR32 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR32(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr32_adotoslot3, - AB8500_CODEC_MASK_FOUR_BITS, AB8500_CODEC_CR32_ADOTOSLOT3); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr32_adotoslot2, - AB8500_CODEC_MASK_FOUR_BITS, AB8500_CODEC_CR32_ADOTOSLOT2); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR32, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR33 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR33(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr33_adotoslot5, - AB8500_CODEC_MASK_FOUR_BITS, AB8500_CODEC_CR33_ADOTOSLOT5); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr33_adotoslot4, - AB8500_CODEC_MASK_FOUR_BITS, AB8500_CODEC_CR33_ADOTOSLOT4); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR33, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR34 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR34(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr34_adotoslot7, - AB8500_CODEC_MASK_FOUR_BITS, AB8500_CODEC_CR34_ADOTOSLOT7); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr34_adotoslot6, - AB8500_CODEC_MASK_FOUR_BITS, AB8500_CODEC_CR34_ADOTOSLOT6); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR34, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR35 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR35(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr35_adotoslot9, - AB8500_CODEC_MASK_FOUR_BITS, AB8500_CODEC_CR35_ADOTOSLOT9); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr35_adotoslot8, - AB8500_CODEC_MASK_FOUR_BITS, AB8500_CODEC_CR35_ADOTOSLOT8); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR35, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR36 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR36(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr36_adotoslot11, - AB8500_CODEC_MASK_FOUR_BITS, AB8500_CODEC_CR36_ADOTOSLOT11); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr36_adotoslot10, - AB8500_CODEC_MASK_FOUR_BITS, AB8500_CODEC_CR36_ADOTOSLOT10); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR36, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR37 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR37(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr37_adotoslot13, - AB8500_CODEC_MASK_FOUR_BITS, AB8500_CODEC_CR37_ADOTOSLOT13); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr37_adotoslot12, - AB8500_CODEC_MASK_FOUR_BITS, AB8500_CODEC_CR37_ADOTOSLOT12); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR37, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR38 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR38(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr38_adotoslot15, - AB8500_CODEC_MASK_FOUR_BITS, AB8500_CODEC_CR38_ADOTOSLOT15); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr38_adotoslot14, - AB8500_CODEC_MASK_FOUR_BITS, AB8500_CODEC_CR38_ADOTOSLOT14); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR38, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR39 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR39(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr39_adotoslot17, - AB8500_CODEC_MASK_FOUR_BITS, AB8500_CODEC_CR39_ADOTOSLOT17); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr39_adotoslot16, - AB8500_CODEC_MASK_FOUR_BITS, AB8500_CODEC_CR39_ADOTOSLOT16); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR39, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR40 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR40(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr40_adotoslot19, - AB8500_CODEC_MASK_FOUR_BITS, AB8500_CODEC_CR40_ADOTOSLOT19); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr40_adotoslot18, - AB8500_CODEC_MASK_FOUR_BITS, AB8500_CODEC_CR40_ADOTOSLOT18); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR40, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR41 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR41(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr41_adotoslot21, - AB8500_CODEC_MASK_FOUR_BITS, AB8500_CODEC_CR41_ADOTOSLOT21); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr41_adotoslot20, - AB8500_CODEC_MASK_FOUR_BITS, AB8500_CODEC_CR41_ADOTOSLOT20); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR41, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR42 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR42(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr42_adotoslot23, - AB8500_CODEC_MASK_FOUR_BITS, AB8500_CODEC_CR42_ADOTOSLOT23); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr42_adotoslot22, - AB8500_CODEC_MASK_FOUR_BITS, AB8500_CODEC_CR42_ADOTOSLOT22); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR42, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR43 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR43(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr43_adotoslot25, - AB8500_CODEC_MASK_FOUR_BITS, AB8500_CODEC_CR43_ADOTOSLOT25); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr43_adotoslot24, - AB8500_CODEC_MASK_FOUR_BITS, AB8500_CODEC_CR43_ADOTOSLOT24); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR43, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR44 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR44(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr44_adotoslot27, - AB8500_CODEC_MASK_FOUR_BITS, AB8500_CODEC_CR44_ADOTOSLOT27); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr44_adotoslot26, - AB8500_CODEC_MASK_FOUR_BITS, AB8500_CODEC_CR44_ADOTOSLOT26); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR44, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR45 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR45(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr45_adotoslot29, - AB8500_CODEC_MASK_FOUR_BITS, AB8500_CODEC_CR45_ADOTOSLOT29); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr45_adotoslot28, - AB8500_CODEC_MASK_FOUR_BITS, AB8500_CODEC_CR45_ADOTOSLOT28); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR45, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR46 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR46(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr46_adotoslot31, - AB8500_CODEC_MASK_FOUR_BITS, AB8500_CODEC_CR46_ADOTOSLOT31); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr46_adotoslot30, - AB8500_CODEC_MASK_FOUR_BITS, AB8500_CODEC_CR46_ADOTOSLOT30); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR46, value)); -} - -#if 0 - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR47 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR47(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr47_hiz_sl7, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR47_HIZ_SL7); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr47_hiz_sl6, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR47_HIZ_SL6); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr47_hiz_sl5, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR47_HIZ_SL5); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr47_hiz_sl4, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR47_HIZ_SL4); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr47_hiz_sl3, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR47_HIZ_SL3); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr47_hiz_sl2, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR47_HIZ_SL2); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr47_hiz_sl1, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR47_HIZ_SL1); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr47_hiz_sl0, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR47_HIZ_SL0); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR47, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR48 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR48(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr48_hiz_sl15, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR48_HIZ_SL15); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr48_hiz_sl14, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR48_HIZ_SL14); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr48_hiz_sl13, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR48_HIZ_SL13); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr48_hiz_sl12, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR48_HIZ_SL12); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr48_hiz_sl11, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR48_HIZ_SL11); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr48_hiz_sl10, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR48_HIZ_SL10); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr48_hiz_sl9, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR48_HIZ_SL9); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr48_hiz_sl8, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR48_HIZ_SL8); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR48, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR49 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR49(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr49_hiz_sl23, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR49_HIZ_SL23); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr49_hiz_sl22, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR49_HIZ_SL22); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr49_hiz_sl21, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR49_HIZ_SL21); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr49_hiz_sl20, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR49_HIZ_SL20); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr49_hiz_sl19, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR49_HIZ_SL19); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr49_hiz_sl18, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR49_HIZ_SL18); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr49_hiz_sl17, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR49_HIZ_SL17); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr49_hiz_sl16, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR49_HIZ_SL16); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR49, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR50 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR50(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr50_hiz_sl31, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR50_HIZ_SL31); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr50_hiz_sl30, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR50_HIZ_SL30); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr50_hiz_sl29, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR50_HIZ_SL29); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr50_hiz_sl28, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR50_HIZ_SL28); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr50_hiz_sl27, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR50_HIZ_SL27); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr50_hiz_sl26, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR50_HIZ_SL26); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr50_hiz_sl25, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR50_HIZ_SL25); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr50_hiz_sl24, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR50_HIZ_SL24); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR50, value)); -} - -#endif - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR51 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR51(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr51_da12_voice, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR51_DA12_VOICE); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr51_sldai1toslado1, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR51_SLDAI1TOSLADO1); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr51_sltoda1, - AB8500_CODEC_MASK_FIVE_BITS, AB8500_CODEC_CR51_SLTODA1); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR51, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR52 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR52(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr52_sldai2toslado2, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR52_SLDAI1TOSLADO2); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr52_sltoda2, - AB8500_CODEC_MASK_FIVE_BITS, AB8500_CODEC_CR52_SLTODA2); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR52, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR53 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR53(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr53_da34_voice, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR53_DA34_VOICE); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr53_sldai3toslado3, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR53_SLDAI1TOSLADO3); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr53_sltoda3, - AB8500_CODEC_MASK_FIVE_BITS, AB8500_CODEC_CR53_SLTODA3); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR53, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR54 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR54(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr54_sldai4toslado4, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR54_SLDAI1TOSLADO4); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr54_sltoda4, - AB8500_CODEC_MASK_FIVE_BITS, AB8500_CODEC_CR54_SLTODA4); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR54, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR55 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR55(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr55_da56_voice, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR55_DA56_VOICE); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr55_sldai5toslado5, - AB8500_CODEC_MASK_TWO_BITS, AB8500_CODEC_CR55_SLDAI1TOSLADO5); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr55_sltoda5, - AB8500_CODEC_MASK_FIVE_BITS, AB8500_CODEC_CR55_SLTODA5); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR55, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR56 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR56(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr56_sldai6toslado7, - AB8500_CODEC_MASK_TWO_BITS, AB8500_CODEC_CR56_SLDAI1TOSLADO6); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr56_sltoda6, - AB8500_CODEC_MASK_FIVE_BITS, AB8500_CODEC_CR56_SLTODA6); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR56, value)); -} - -#if 0 - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR57 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR57(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr57_bfifull_msk, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR57_BFIFULL_MSK); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr57_bfiempt_msk, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR57_BFIEMPT_MSK); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr57_dachan_msk, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR57_DACHAN_MSK); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr57_gain_msk, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR57_GAIN_MSK); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr57_dspad_msk, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR57_DSPAD_MSK); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr57_dspda_msk, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR57_DSPDA_MSK); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr57_stfir_msk, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR57_STFIR_MSK); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR57, value)); -} - -/* CR58 is Read Only */ -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR59 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR59(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr59_vssready_msk, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR59_VSSREADY_MSK); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr59_shrtvibl_msk, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR59_SHRTVIBL_MSK); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr59_shrtvibr_msk, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR59_SHRTVIBR_MSK); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr59_shrthfl_msk, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR59_SHRTHFL_MSK); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr59_shrthfr_msk, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR59_SHRTHFR_MSK); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr59_shrthsl_msk, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR59_SHRTHSL_MSK); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr59_shrthsr_msk, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR59_SHRTHSR_MSK); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr59_shrtear_msk, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR59_SHRTEAR_MSK); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR59, value)); -} - -/* CR60 is Read Only */ -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR61 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR61(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - /* 5 bits are Read Only */ - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr61_fade_speed, - AB8500_CODEC_MASK_TWO_BITS, AB8500_CODEC_CR61_FADE_SPEED); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR61, value)); -} -#endif -/* CR62 is Read Only */ -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR63 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR63(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr63_datohslen, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR63_DATOHSLEN); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr63_datohsren, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR63_DATOHSREN); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr63_ad1sel, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR63_AD1SEL); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr63_ad2sel, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR63_AD2SEL); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr63_ad3sel, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR63_AD3SEL); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr63_ad5sel, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR63_AD5SEL); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr63_ad6sel, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR63_AD6SEL); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr63_ancsel, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR63_ANCSEL); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR63, value)); -} - -#if 0 -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR64 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR64(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr64_datohfren, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR64_DATOHFREN); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr64_datohflen, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR64_DATOHFLEN); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr64_hfrsel, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR64_HFRSEL); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr64_hflsel, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR64_HFLSEL); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr64_stfir1sel, - AB8500_CODEC_MASK_TWO_BITS, AB8500_CODEC_CR64_STFIR1SEL); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr64_stfir2sel, - AB8500_CODEC_MASK_TWO_BITS, AB8500_CODEC_CR64_STFIR2SEL); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR64, value)); -} - -#endif - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR65 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR65(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr65_fadedis_ad1, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR65_FADEDIS_AD1); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr65_ad1gain, - AB8500_CODEC_MASK_SIX_BITS, AB8500_CODEC_CR65_AD1GAIN); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR65, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR66 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR66(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr66_fadedis_ad2, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR66_FADEDIS_AD2); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr66_ad2gain, - AB8500_CODEC_MASK_SIX_BITS, AB8500_CODEC_CR66_AD2GAIN); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR66, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR67 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR67(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr67_fadedis_ad3, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR67_FADEDIS_AD3); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr67_ad3gain, - AB8500_CODEC_MASK_SIX_BITS, AB8500_CODEC_CR67_AD3GAIN); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR67, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR68 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR68(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr68_fadedis_ad4, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR68_FADEDIS_AD4); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr68_ad4gain, - AB8500_CODEC_MASK_SIX_BITS, AB8500_CODEC_CR68_AD4GAIN); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR68, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR69 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR69(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr69_fadedis_ad5, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR69_FADEDIS_AD5); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr69_ad5gain, - AB8500_CODEC_MASK_SIX_BITS, AB8500_CODEC_CR69_AD5GAIN); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR69, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR70 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR70(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr70_fadedis_ad6, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR70_FADEDIS_AD6); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr70_ad6gain, - AB8500_CODEC_MASK_SIX_BITS, AB8500_CODEC_CR70_AD6GAIN); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR70, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR71 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR71(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr71_fadedis_da1, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR71_FADEDIS_DA1); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr71_da1gain, - AB8500_CODEC_MASK_SIX_BITS, AB8500_CODEC_CR71_DA1GAIN); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR71, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR72 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR72(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr72_fadedis_da2, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR72_FADEDIS_DA2); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr72_da2gain, - AB8500_CODEC_MASK_SIX_BITS, AB8500_CODEC_CR72_DA2GAIN); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR72, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR73 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR73(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr73_fadedis_da3, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR73_FADEDIS_DA3); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr73_da3gain, - AB8500_CODEC_MASK_SIX_BITS, AB8500_CODEC_CR73_DA3GAIN); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR73, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR74 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR74(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr74_fadedis_da4, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR74_FADEDIS_DA4); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr74_da4gain, - AB8500_CODEC_MASK_SIX_BITS, AB8500_CODEC_CR74_DA4GAIN); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR74, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR75 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR75(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr75_fadedis_da5, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR75_FADEDIS_DA5); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr75_da5gain, - AB8500_CODEC_MASK_SIX_BITS, AB8500_CODEC_CR75_DA5GAIN); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR75, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR76 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR76(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr76_fadedis_da6, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR76_FADEDIS_DA6); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr76_da6gain, - AB8500_CODEC_MASK_SIX_BITS, AB8500_CODEC_CR76_DA6GAIN); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR76, value)); -} - -#if 0 - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR77 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR77(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr77_fadedis_ad1l, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR77_FADEDIS_AD1L); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr77_ad1lbgain_to_hfl, - AB8500_CODEC_MASK_SIX_BITS, AB8500_CODEC_CR77_AD1LBGAIN); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR77, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR78 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR78(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr78_fadedis_ad2l, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR78_FADEDIS_AD2L); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr78_ad2lbgain_to_hfr, - AB8500_CODEC_MASK_SIX_BITS, AB8500_CODEC_CR78_AD2LBGAIN); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR78, value)); -} -#endif - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR79 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR79(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr79_hssinc1, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR79_HSSINC1); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr79_fadedis_hsl, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR79_FADEDIS_HSL); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr79_hsldgain, - AB8500_CODEC_MASK_FOUR_BITS, AB8500_CODEC_CR79_HSLDGAIN); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR79, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR80 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR80(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr80_fadedis_hsr, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR80_FADEDIS_HSR); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr80_hsrdgain, - AB8500_CODEC_MASK_FOUR_BITS, AB8500_CODEC_CR80_HSRDGAIN); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR80, value)); -} - -#if 0 - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR81 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR81(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr81_stfir1gain, - AB8500_CODEC_MASK_FIVE_BITS, AB8500_CODEC_CR81_STFIR1GAIN); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR81, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR82 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR82(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr82_stfir2gain, - AB8500_CODEC_MASK_FIVE_BITS, AB8500_CODEC_CR82_STFIR2GAIN); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR82, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR83 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR83(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr83_enanc, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR83_ENANC); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr83_anciirinit, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR83_ANCIIRINIT); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr83_ancfirupdate, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR83_ANCFIRUPDATE); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR83, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR84 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR84(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr84_ancinshift, - AB8500_CODEC_MASK_FIVE_BITS, AB8500_CODEC_CR84_ANCINSHIFT); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR84, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR85 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR85(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr85_ancfiroutshift, - AB8500_CODEC_MASK_FIVE_BITS, AB8500_CODEC_CR85_ANCFIROUTSHIFT); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR85, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR86 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR86(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr86_ancshiftout, - AB8500_CODEC_MASK_FIVE_BITS, AB8500_CODEC_CR86_ANCSHIFTOUT); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR86, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR87 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR87(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr87_ancfircoeff_msb, - AB8500_CODEC_MASK_EIGHT_BITS, AB8500_CODEC_CR87_ANCFIRCOEFF_MSB); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR87, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR88 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR88(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr88_ancfircoeff_lsb, - AB8500_CODEC_MASK_EIGHT_BITS, AB8500_CODEC_CR88_ANCFIRCOEFF_LSB); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR88, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR89 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR89(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr89_anciircoeff_msb, - AB8500_CODEC_MASK_EIGHT_BITS, AB8500_CODEC_CR89_ANCIIRCOEFF_MSB); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR89, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR90 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR90(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr90_anciircoeff_lsb, - AB8500_CODEC_MASK_EIGHT_BITS, AB8500_CODEC_CR90_ANCIIRCOEFF_LSB); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR90, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR91 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR91(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr91_ancwarpdel_msb, - AB8500_CODEC_MASK_EIGHT_BITS, AB8500_CODEC_CR91_ANCWARPDEL_MSB); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR91, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR92 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR92(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr92_ancwarpdel_lsb, - AB8500_CODEC_MASK_EIGHT_BITS, AB8500_CODEC_CR92_ANCWARPDEL_LSB); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR92, value)); -} - -/* CR93 is Read Only */ -/* CR94 is Read Only */ -/* CR95 is Read Only */ -/* CR96 is Read Only */ -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR97 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR97(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr97_stfir_set, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR97_STFIR_SET); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr97_stfir_addr, - AB8500_CODEC_MASK_SEVEN_BITS, AB8500_CODEC_CR97_STFIR_ADDR); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR97, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR98 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR98(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr98_stfir_coeff_msb, - AB8500_CODEC_MASK_EIGHT_BITS, AB8500_CODEC_CR98_STFIR_COEFF_MSB); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR98, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR99 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR99(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr99_stfir_coeff_lsb, - AB8500_CODEC_MASK_EIGHT_BITS, AB8500_CODEC_CR99_STFIR_COEFF_LSB); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR99, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR100 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR100(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr100_enstfirs, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR100_ENSTFIRS); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr100_stfirstoif1, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR100_STFIRSTOIF1); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr100_stfir_busy, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR100_STFIR_BUSY); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR100, value)); -} - -#endif -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR101 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR101(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr101_parlhf, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR101_PARLHF); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr101_parlvib, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR101_PARLVIB); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr101_classd_viblswapen, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR101_CLASSDVIBLSWAPEN); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr101_classd_vibrswapen, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR101_CLASSDVIBRSWAPEN); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr101_classd_hflswapen, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR101_CLASSDHFLSWAPEN); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr101_classd_hfrswapen, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR101_CLASSDHFRSWAPEN); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR101, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR102 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR102(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr102_classd_firbyp, - AB8500_CODEC_MASK_FOUR_BITS, AB8500_CODEC_CR102_CLASSD_FIRBYP); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr102_classd_highvolen, - AB8500_CODEC_MASK_FOUR_BITS, AB8500_CODEC_CR102_CLASSD_HIGHVOLEN); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR102, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR103 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR103(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr103_classd_ditherhpgain, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR103_CLASSD_DITHERHPGAIN); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr103_classd_ditherwgain, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR103_CLASSD_DITHERWGAIN); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR103, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR104 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR104(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr104_bfifoint, - AB8500_CODEC_MASK_SIX_BITS, AB8500_CODEC_CR104_BFIFOINT); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR104, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR105 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR105(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr105_bfifotx, - AB8500_CODEC_MASK_EIGHT_BITS, AB8500_CODEC_CR105_BFIFOTX); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR105, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR106 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR106(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr106_bfifofsext, - AB8500_CODEC_MASK_THREE_BITS, AB8500_CODEC_CR106_BFIFOFSEXT); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr106_bfifomsk, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR106_BFIFOMSK); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr106_bfifomstr, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR106_BFIFOMSTR); - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr106_bfifostrt, - AB8500_CODEC_MASK_ONE_BIT, AB8500_CODEC_CR106_BFIFOSTRT); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR106, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR107 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR107(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr107_bfifosampnr, - AB8500_CODEC_MASK_EIGHT_BITS, AB8500_CODEC_CR107_BFIFOSAMPNR); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR107, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR108 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR108(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr108_bfifowakeup, - AB8500_CODEC_MASK_EIGHT_BITS, AB8500_CODEC_CR108_BFIFOWAKEUP); - - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR108, value)); -} - -/* CR109 is Read Only */ -/********************************************************************************************/ -/* Name: ab8500_codec_Reset() */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_Reset(void) -{ - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - p_ab8500_codec_configuration->cr1_swreset = - AB8500_CODEC_CR1_SWRESET_ENABLED; - - ab8500_codec_error = ab8500_codec_UpdateCR1(); - if (AB8500_CODEC_OK != ab8500_codec_error) { - return (ab8500_codec_error); - } - - return (ab8500_codec_error); -} - -PRIVATE t_ab8500_codec_error ab8500_codec_ProgramDirection(IN - t_ab8500_codec_direction - ab8500_codec_direction) -{ /*only IN or OUT must be passed (not INOUT) */ - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - - if (AB8500_CODEC_DIRECTION_IN == ab8500_codec_direction) { - ab8500_codec_error = ab8500_codec_ProgramDirectionIN(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - } - - if (AB8500_CODEC_DIRECTION_OUT == ab8500_codec_direction) { - ab8500_codec_error = ab8500_codec_ProgramDirectionOUT(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - } - - return (ab8500_codec_error); -} - -PRIVATE t_ab8500_codec_error ab8500_codec_SetDirection(IN - t_ab8500_codec_direction - ab8500_codec_direction) -{ - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - switch (ab8500_codec_direction) { - case AB8500_CODEC_DIRECTION_IN: - ab8500_codec_error = - ab8500_codec_ProgramDirection(AB8500_CODEC_DIRECTION_IN); - break; - - case AB8500_CODEC_DIRECTION_OUT: - ab8500_codec_error = - ab8500_codec_ProgramDirection(AB8500_CODEC_DIRECTION_OUT); - break; - - case AB8500_CODEC_DIRECTION_INOUT: - ab8500_codec_error = - ab8500_codec_ProgramDirection(AB8500_CODEC_DIRECTION_IN); - if (AB8500_CODEC_OK == ab8500_codec_error) { - ab8500_codec_error = - ab8500_codec_ProgramDirection - (AB8500_CODEC_DIRECTION_OUT); - } - break; - } - - if (ab8500_codec_error != AB8500_CODEC_OK) { - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR5(); - if (AB8500_CODEC_OK != ab8500_codec_error) { - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR6(); - if (AB8500_CODEC_OK != ab8500_codec_error) { - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR7(); - if (AB8500_CODEC_OK != ab8500_codec_error) { - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR8(); - if (AB8500_CODEC_OK != ab8500_codec_error) { - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR9(); - if (AB8500_CODEC_OK != ab8500_codec_error) { - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR10(); - if (AB8500_CODEC_OK != ab8500_codec_error) { - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR12(); - if (AB8500_CODEC_OK != ab8500_codec_error) { - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR15(); - if (AB8500_CODEC_OK != ab8500_codec_error) { - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR63(); - if (AB8500_CODEC_OK != ab8500_codec_error) { - return (ab8500_codec_error); - } - - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_Init */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Initialize the global variables & stores the slave address of codec. */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* slave_address_of_ab8500_codec: Audio codec slave address */ -/* OUT: */ -/* None */ -/* */ -/* RETURN: */ -/* Returns AB8500_CODEC_OK */ -/* COMMENTS: */ -/* 1) Saves the supplied slave_address_of_codec in global variable */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_Init(IN t_uint8 - slave_address_of_ab8500_codec) -{ - DBGENTER1(" (%lx)", slave_address_of_ab8500_codec); - - g_ab8500_codec_system_context.slave_address_of_ab8500_codec = - slave_address_of_ab8500_codec; - - DBGEXIT(AB8500_CODEC_OK); - return (AB8500_CODEC_OK); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_Reset */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Reset the global variables and clear audiocodec settings to default. */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* None */ -/* OUT: */ -/* None */ -/* */ -/* RETURN: */ -/* AB8500_CODEC_TRANSACTION_FAILED: If transaction fails. */ -/* AB8500_CODEC_OK: if successful. */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_Reset(void) -{ - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - - DBGENTER(); - - g_ab8500_codec_system_context.ab8500_codec_direction = - AB8500_CODEC_DEFAULT_DIRECTION; - g_ab8500_codec_system_context.ab8500_codec_mode_in = - AB8500_CODEC_DEFAULT_MODE_IN; - g_ab8500_codec_system_context.ab8500_codec_mode_out = - AB8500_CODEC_DEFAULT_MODE_OUT; - - g_ab8500_codec_system_context.ab8500_codec_src = - AB8500_CODEC_DEFAULT_INPUT_SRC; - g_ab8500_codec_system_context.ab8500_codec_dest = - AB8500_CODEC_DEFAULT_OUTPUT_DEST; - - g_ab8500_codec_system_context.in_left_volume = - AB8500_CODEC_DEFAULT_VOLUME_LEFT_IN; - g_ab8500_codec_system_context.in_right_volume = - AB8500_CODEC_DEFAULT_VOLUME_RIGHT_IN; - g_ab8500_codec_system_context.out_left_volume = - AB8500_CODEC_DEFAULT_VOLUME_LEFT_OUT; - g_ab8500_codec_system_context.out_right_volume = - AB8500_CODEC_DEFAULT_VOLUME_RIGHT_OUT; - - ab8500_codec_error = ab8500_codec_Reset(); - - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_SetModeAndDirection */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Configures the whole audio codec to work in audio mode */ -/* (using I2S protocol). */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* direction: select the direction (IN, OUT or INOUT) */ -/* in_mode: codec mode for recording. If direction is OUT only, */ -/* this parameter is ignored. */ -/* out_mode: codec mode for playing. If direction is IN only, */ -/* this parameter is ignored. */ -/* p_tdm_config: TDM configuration required to be configured by user */ -/* OUT: */ -/* None */ -/* */ -/* RETURN: */ -/* AB8500_CODEC_UNSUPPORTED_FEATURE: The API may not allow setting */ -/* 2 different modes, in which case it should return this value. */ -/* AB8500_CODEC_TRANSACTION_FAILED: If transaction fails. */ -/* AB8500_CODEC_OK: if successful. */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_SetModeAndDirection - (IN t_ab8500_codec_direction ab8500_codec_direction, - IN t_ab8500_codec_mode ab8500_codec_mode_in, - IN t_ab8500_codec_mode ab8500_codec_mode_out, - IN t_ab8500_codec_tdm_config const *const p_tdm_config) { - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - DBGENTER3(" (%lx %lx %lx)", ab8500_codec_direction, - ab8500_codec_mode_in, ab8500_codec_mode_out); - - if (AB8500_CODEC_AUDIO_INTERFACE_1 == - g_ab8500_codec_system_context.audio_interface) { - if (AB8500_CODEC_DIRECTION_OUT == ab8500_codec_direction - || AB8500_CODEC_DIRECTION_INOUT == ab8500_codec_direction) { - p_ab8500_codec_configuration->cr3_enda1 = - AB8500_CODEC_CR3_ENDA1_ENABLED; - p_ab8500_codec_configuration->cr3_enda2 = - AB8500_CODEC_CR3_ENDA2_ENABLED; - p_ab8500_codec_configuration->cr3_enda3 = - AB8500_CODEC_CR3_ENDA3_ENABLED; - p_ab8500_codec_configuration->cr3_enda4 = - AB8500_CODEC_CR3_ENDA4_ENABLED; - p_ab8500_codec_configuration->cr3_enda5 = - AB8500_CODEC_CR3_ENDA5_ENABLED; - p_ab8500_codec_configuration->cr3_enda6 = - AB8500_CODEC_CR3_ENDA6_ENABLED; - - p_ab8500_codec_configuration->cr27_if1_bitclk_osr = - p_tdm_config->cr27_if1_bitclk_osr; - - if (AB8500_CODEC_MODE_HIFI == ab8500_codec_mode_out) { - p_ab8500_codec_configuration->cr30_fsync1p = - AB8500_CODEC_CR30_FSYNC1P_FALLING_EDGE; - p_ab8500_codec_configuration->cr30_bitclk1p = - AB8500_CODEC_CR30_BITCLK1P_FALLING_EDGE; - p_ab8500_codec_configuration->cr30_if1del = - AB8500_CODEC_CR30_IF1DEL_DELAYED; - p_ab8500_codec_configuration->cr30_if1format = - AB8500_CODEC_CR30_IF1FORMAT_I2S_LEFTALIGNED; - p_ab8500_codec_configuration->cr30_if1wl = - p_tdm_config->cr30_if1wl; - } else { - p_ab8500_codec_configuration->cr30_fsync1p = - AB8500_CODEC_CR30_FSYNC1P_FALLING_EDGE; - p_ab8500_codec_configuration->cr30_bitclk1p = - AB8500_CODEC_CR30_BITCLK1P_FALLING_EDGE; - p_ab8500_codec_configuration->cr30_if1del = - AB8500_CODEC_CR30_IF1DEL_DELAYED; - p_ab8500_codec_configuration->cr30_if1format = - AB8500_CODEC_CR30_IF1FORMAT_TDM; - p_ab8500_codec_configuration->cr30_if1wl = - p_tdm_config->cr30_if1wl; - } - } - - if (AB8500_CODEC_DIRECTION_IN == ab8500_codec_direction - || AB8500_CODEC_DIRECTION_INOUT == ab8500_codec_direction) { - p_ab8500_codec_configuration->cr2_enad1 = - AB8500_CODEC_CR2_ENAD1_ENABLED; - p_ab8500_codec_configuration->cr2_enad2 = - AB8500_CODEC_CR2_ENAD2_ENABLED; - p_ab8500_codec_configuration->cr2_enad3 = - AB8500_CODEC_CR2_ENAD3_ENABLED; - p_ab8500_codec_configuration->cr2_enad4 = - AB8500_CODEC_CR2_ENAD4_ENABLED; - p_ab8500_codec_configuration->cr2_enad5 = - AB8500_CODEC_CR2_ENAD5_ENABLED; - p_ab8500_codec_configuration->cr2_enad6 = - AB8500_CODEC_CR2_ENAD6_ENABLED; - - p_ab8500_codec_configuration->cr27_if1_bitclk_osr = - p_tdm_config->cr27_if1_bitclk_osr; - - if (AB8500_CODEC_MODE_HIFI == ab8500_codec_mode_in) { - p_ab8500_codec_configuration->cr30_fsync1p = - AB8500_CODEC_CR30_FSYNC1P_FALLING_EDGE; - p_ab8500_codec_configuration->cr30_bitclk1p = - AB8500_CODEC_CR30_BITCLK1P_FALLING_EDGE; - p_ab8500_codec_configuration->cr30_if1del = - AB8500_CODEC_CR30_IF1DEL_DELAYED; - p_ab8500_codec_configuration->cr30_if1format = - AB8500_CODEC_CR30_IF1FORMAT_I2S_LEFTALIGNED; - p_ab8500_codec_configuration->cr30_if1wl = - p_tdm_config->cr30_if1wl; - } else { - p_ab8500_codec_configuration->cr30_fsync1p = - AB8500_CODEC_CR30_FSYNC1P_RISING_EDGE; - p_ab8500_codec_configuration->cr30_bitclk1p = - AB8500_CODEC_CR30_BITCLK1P_FALLING_EDGE; - p_ab8500_codec_configuration->cr30_if1del = - AB8500_CODEC_CR30_IF1DEL_NOT_DELAYED; - p_ab8500_codec_configuration->cr30_if1format = - AB8500_CODEC_CR30_IF1FORMAT_TDM; - p_ab8500_codec_configuration->cr30_if1wl = - p_tdm_config->cr30_if1wl; - } - } - } else { - if (AB8500_CODEC_DIRECTION_OUT == ab8500_codec_direction - || AB8500_CODEC_DIRECTION_INOUT == ab8500_codec_direction) { - p_ab8500_codec_configuration->cr3_enda1 = - AB8500_CODEC_CR3_ENDA1_ENABLED; - p_ab8500_codec_configuration->cr3_enda2 = - AB8500_CODEC_CR3_ENDA2_ENABLED; - p_ab8500_codec_configuration->cr3_enda3 = - AB8500_CODEC_CR3_ENDA3_ENABLED; - p_ab8500_codec_configuration->cr3_enda4 = - AB8500_CODEC_CR3_ENDA4_ENABLED; - p_ab8500_codec_configuration->cr3_enda5 = - AB8500_CODEC_CR3_ENDA5_ENABLED; - p_ab8500_codec_configuration->cr3_enda6 = - AB8500_CODEC_CR3_ENDA6_ENABLED; - - p_ab8500_codec_configuration->cr27_if0_bitclk_osr = - p_tdm_config->cr27_if0_bitclk_osr; - - p_ab8500_codec_configuration->cr63_datohslen = - AB8500_CODEC_CR63_DATOHSLEN_ENABLED; - p_ab8500_codec_configuration->cr63_datohsren = - AB8500_CODEC_CR63_DATOHSREN_ENABLED; - - if (AB8500_CODEC_MODE_HIFI == ab8500_codec_mode_out) { - p_ab8500_codec_configuration->cr28_fsync0p = - AB8500_CODEC_CR28_FSYNC0P_FALLING_EDGE; - p_ab8500_codec_configuration->cr28_bitclk0p = p_tdm_config->cr28_bitclk0p; /*AB8500_CODEC_CR28_BITCLK0P_FALLING_EDGE; */ - p_ab8500_codec_configuration->cr28_if0del = p_tdm_config->cr28_if0del; /*AB8500_CODEC_CR28_IF0DEL_DELAYED; */ - p_ab8500_codec_configuration->cr28_if0format = - AB8500_CODEC_CR28_IF0FORMAT_I2S_LEFTALIGNED; - p_ab8500_codec_configuration->cr28_if0wl = - p_tdm_config->cr28_if0wl; - } else { - p_ab8500_codec_configuration->cr28_fsync0p = - AB8500_CODEC_CR28_FSYNC0P_FALLING_EDGE; - p_ab8500_codec_configuration->cr28_bitclk0p = p_tdm_config->cr28_bitclk0p; /*AB8500_CODEC_CR28_BITCLK0P_FALLING_EDGE; */ - p_ab8500_codec_configuration->cr28_if0del = p_tdm_config->cr28_if0del; /*AB8500_CODEC_CR28_IF0DEL_DELAYED; */ - p_ab8500_codec_configuration->cr28_if0format = - AB8500_CODEC_CR28_IF0FORMAT_TDM; - p_ab8500_codec_configuration->cr28_if0wl = - p_tdm_config->cr28_if0wl; - } - } - - if (AB8500_CODEC_DIRECTION_IN == ab8500_codec_direction - || AB8500_CODEC_DIRECTION_INOUT == ab8500_codec_direction) { - p_ab8500_codec_configuration->cr2_enad1 = - AB8500_CODEC_CR2_ENAD1_ENABLED; - p_ab8500_codec_configuration->cr2_enad2 = - AB8500_CODEC_CR2_ENAD2_ENABLED; - p_ab8500_codec_configuration->cr2_enad3 = - AB8500_CODEC_CR2_ENAD3_ENABLED; - p_ab8500_codec_configuration->cr2_enad4 = - AB8500_CODEC_CR2_ENAD4_ENABLED; - p_ab8500_codec_configuration->cr2_enad5 = - AB8500_CODEC_CR2_ENAD5_ENABLED; - p_ab8500_codec_configuration->cr2_enad6 = - AB8500_CODEC_CR2_ENAD6_ENABLED; - - p_ab8500_codec_configuration->cr26_ad1_voice = - AB8500_CODEC_CR26_AD1_VOICE_LOWLATENCYFILTER; - p_ab8500_codec_configuration->cr26_ad2_voice = - AB8500_CODEC_CR26_AD2_VOICE_LOWLATENCYFILTER; - p_ab8500_codec_configuration->cr26_ad3_voice = - AB8500_CODEC_CR26_AD3_VOICE_LOWLATENCYFILTER; - p_ab8500_codec_configuration->cr26_ad4_voice = - AB8500_CODEC_CR26_AD4_VOICE_LOWLATENCYFILTER; - - p_ab8500_codec_configuration->cr27_if0_bitclk_osr = - p_tdm_config->cr27_if0_bitclk_osr; - - if (AB8500_CODEC_MODE_HIFI == ab8500_codec_mode_in) { - p_ab8500_codec_configuration->cr28_fsync0p = - AB8500_CODEC_CR28_FSYNC0P_RISING_EDGE; - p_ab8500_codec_configuration->cr28_bitclk0p = p_tdm_config->cr28_bitclk0p; /*AB8500_CODEC_CR28_BITCLK0P_RISING_EDGE; */ - p_ab8500_codec_configuration->cr28_if0del = p_tdm_config->cr28_if0del; /*AB8500_CODEC_CR28_IF0DEL_NOT_DELAYED; */ - p_ab8500_codec_configuration->cr28_if0format = - AB8500_CODEC_CR28_IF0FORMAT_I2S_LEFTALIGNED; - p_ab8500_codec_configuration->cr28_if0wl = - p_tdm_config->cr28_if0wl; - } else { - p_ab8500_codec_configuration->cr28_fsync0p = - AB8500_CODEC_CR28_FSYNC0P_RISING_EDGE; - p_ab8500_codec_configuration->cr28_bitclk0p = p_tdm_config->cr28_bitclk0p; /*AB8500_CODEC_CR28_BITCLK0P_FALLING_EDGE; */ - p_ab8500_codec_configuration->cr28_if0del = p_tdm_config->cr28_if0del; /*AB8500_CODEC_CR28_IF0DEL_NOT_DELAYED; */ - p_ab8500_codec_configuration->cr28_if0format = - AB8500_CODEC_CR28_IF0FORMAT_TDM; - p_ab8500_codec_configuration->cr28_if0wl = - p_tdm_config->cr28_if0wl; - } - } - } - - ab8500_codec_error = ab8500_codec_SetModeAndDirectionUpdateCR(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - g_ab8500_codec_system_context.ab8500_codec_direction = - ab8500_codec_direction; - g_ab8500_codec_system_context.ab8500_codec_mode_in = - ab8500_codec_mode_in; - g_ab8500_codec_system_context.ab8500_codec_mode_out = - ab8500_codec_mode_out; - - ab8500_codec_error = ab8500_codec_SetDirection(ab8500_codec_direction); - - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_SetSrcVolume */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Sets the record volumes. */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* t_ab8500_codec_src: select source device for recording. */ -/* in_left_volume: record volume for left channel. */ -/* in_right_volume: record volume for right channel. */ -/* OUT: */ -/* None */ -/* */ -/* RETURN: */ -/* AB8500_CODEC_TRANSACTION_FAILED: If transaction fails. */ -/* AB8500_CODEC_OK: if successful. */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_SetSrcVolume - (IN t_ab8500_codec_src src_device, - IN t_uint8 in_left_volume, IN t_uint8 in_right_volume) { - t_ab8500_codec_error ab8500_codec_error; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - DBGENTER3(" (%lx %lx %lx)", src_device, in_left_volume, - in_right_volume); - - if (in_left_volume > AB8500_CODEC_MAX_VOLUME) { - in_left_volume = AB8500_CODEC_MAX_VOLUME; - } - - if (in_right_volume > AB8500_CODEC_MAX_VOLUME) { - in_right_volume = AB8500_CODEC_MAX_VOLUME; - } - - g_ab8500_codec_system_context.in_left_volume = in_left_volume; - g_ab8500_codec_system_context.in_right_volume = in_right_volume; - - p_ab8500_codec_configuration->cr65_ad1gain = - AB8500_CODEC_AD_D_VOLUME_MIN + - (in_left_volume * - (AB8500_CODEC_AD_D_VOLUME_MAX - - AB8500_CODEC_AD_D_VOLUME_MIN)) / 100; - p_ab8500_codec_configuration->cr66_ad2gain = - AB8500_CODEC_AD_D_VOLUME_MIN + - (in_left_volume * - (AB8500_CODEC_AD_D_VOLUME_MAX - - AB8500_CODEC_AD_D_VOLUME_MIN)) / 100; - p_ab8500_codec_configuration->cr67_ad3gain = - AB8500_CODEC_AD_D_VOLUME_MIN + - (in_left_volume * - (AB8500_CODEC_AD_D_VOLUME_MAX - - AB8500_CODEC_AD_D_VOLUME_MIN)) / 100; - p_ab8500_codec_configuration->cr68_ad4gain = - AB8500_CODEC_AD_D_VOLUME_MIN + - (in_left_volume * - (AB8500_CODEC_AD_D_VOLUME_MAX - - AB8500_CODEC_AD_D_VOLUME_MIN)) / 100; - p_ab8500_codec_configuration->cr69_ad5gain = - AB8500_CODEC_AD_D_VOLUME_MIN + - (in_left_volume * - (AB8500_CODEC_AD_D_VOLUME_MAX - - AB8500_CODEC_AD_D_VOLUME_MIN)) / 100; - p_ab8500_codec_configuration->cr70_ad6gain = - AB8500_CODEC_AD_D_VOLUME_MIN + - (in_left_volume * - (AB8500_CODEC_AD_D_VOLUME_MAX - - AB8500_CODEC_AD_D_VOLUME_MIN)) / 100; - - /* Set mininimum volume if volume is zero */ - switch (src_device) { - case AB8500_CODEC_SRC_LINEIN: - p_ab8500_codec_configuration->cr22_linl_gain = - AB8500_CODEC_LINEIN_VOLUME_MIN + - (in_left_volume * - (AB8500_CODEC_LINEIN_VOLUME_MAX - - AB8500_CODEC_LINEIN_VOLUME_MIN)) / 100; - p_ab8500_codec_configuration->cr23_linr_gain = - AB8500_CODEC_LINEIN_VOLUME_MIN + - (in_right_volume * - (AB8500_CODEC_LINEIN_VOLUME_MAX - - AB8500_CODEC_LINEIN_VOLUME_MIN)) / 100; - break; - - case AB8500_CODEC_SRC_MICROPHONE_1A: - case AB8500_CODEC_SRC_MICROPHONE_1B: - p_ab8500_codec_configuration->cr20_mic1_gain = - AB8500_CODEC_MIC_VOLUME_MIN + - (in_left_volume * - (AB8500_CODEC_MIC_VOLUME_MAX - - AB8500_CODEC_MIC_VOLUME_MIN)) / 100; - break; - - case AB8500_CODEC_SRC_MICROPHONE_2: - p_ab8500_codec_configuration->cr21_mic2_gain = - AB8500_CODEC_MIC_VOLUME_MIN + - (in_left_volume * - (AB8500_CODEC_MIC_VOLUME_MAX - - AB8500_CODEC_MIC_VOLUME_MIN)) / 100; - break; - - case AB8500_CODEC_SRC_D_MICROPHONE_1: - break; - - case AB8500_CODEC_SRC_D_MICROPHONE_2: - break; - - case AB8500_CODEC_SRC_D_MICROPHONE_3: - break; - - case AB8500_CODEC_SRC_D_MICROPHONE_4: - break; - - case AB8500_CODEC_SRC_D_MICROPHONE_5: - break; - - case AB8500_CODEC_SRC_D_MICROPHONE_6: - break; - - case AB8500_CODEC_SRC_ALL: - p_ab8500_codec_configuration->cr22_linl_gain = - AB8500_CODEC_LINEIN_VOLUME_MIN + - (in_left_volume * - (AB8500_CODEC_LINEIN_VOLUME_MAX - - AB8500_CODEC_LINEIN_VOLUME_MIN)) / 100; - p_ab8500_codec_configuration->cr23_linr_gain = - AB8500_CODEC_LINEIN_VOLUME_MIN + - (in_right_volume * - (AB8500_CODEC_LINEIN_VOLUME_MAX - - AB8500_CODEC_LINEIN_VOLUME_MIN)) / 100; - - p_ab8500_codec_configuration->cr20_mic1_gain = - AB8500_CODEC_MIC_VOLUME_MIN + - (in_left_volume * - (AB8500_CODEC_MIC_VOLUME_MAX - - AB8500_CODEC_MIC_VOLUME_MIN)) / 100; - - p_ab8500_codec_configuration->cr21_mic2_gain = - AB8500_CODEC_MIC_VOLUME_MIN + - (in_left_volume * - (AB8500_CODEC_MIC_VOLUME_MAX - - AB8500_CODEC_MIC_VOLUME_MIN)) / 100; - break; - - default: - ab8500_codec_error = AB8500_CODEC_INVALID_PARAMETER; - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_SetSrcVolumeUpdateCR(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_SetDestVolume */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Sets the play volumes. */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* out_left_volume: play volume for left channel. */ -/* out_right_volume: play volume for right channel. */ -/* OUT: */ -/* None */ -/* */ -/* RETURN: */ -/* AB8500_CODEC_TRANSACTION_FAILED: If transaction fails. */ -/* AB8500_CODEC_OK: if successful. */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_SetDestVolume - (IN t_ab8500_codec_dest dest_device, - IN t_uint8 out_left_volume, IN t_uint8 out_right_volume) { - t_ab8500_codec_error ab8500_codec_error; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - DBGENTER3(" (%lx %lx %lx)", dest_device, out_left_volume, - out_right_volume); - - if (out_left_volume > AB8500_CODEC_MAX_VOLUME) { - out_left_volume = AB8500_CODEC_MAX_VOLUME; - } - - if (out_right_volume > AB8500_CODEC_MAX_VOLUME) { - out_right_volume = AB8500_CODEC_MAX_VOLUME; - } - - g_ab8500_codec_system_context.out_left_volume = out_left_volume; - g_ab8500_codec_system_context.out_right_volume = out_right_volume; - - p_ab8500_codec_configuration->cr71_da1gain = - AB8500_CODEC_DA_D_VOLUME_MIN + - (out_left_volume * - (AB8500_CODEC_DA_D_VOLUME_MAX - - AB8500_CODEC_DA_D_VOLUME_MIN)) / 100; - p_ab8500_codec_configuration->cr72_da2gain = - AB8500_CODEC_DA_D_VOLUME_MIN + - (out_left_volume * - (AB8500_CODEC_DA_D_VOLUME_MAX - - AB8500_CODEC_DA_D_VOLUME_MIN)) / 100; - p_ab8500_codec_configuration->cr73_da3gain = - AB8500_CODEC_DA_D_VOLUME_MIN + - (out_left_volume * - (AB8500_CODEC_DA_D_VOLUME_MAX - - AB8500_CODEC_DA_D_VOLUME_MIN)) / 100; - p_ab8500_codec_configuration->cr74_da4gain = - AB8500_CODEC_DA_D_VOLUME_MIN + - (out_left_volume * - (AB8500_CODEC_DA_D_VOLUME_MAX - - AB8500_CODEC_DA_D_VOLUME_MIN)) / 100; - p_ab8500_codec_configuration->cr75_da5gain = - AB8500_CODEC_DA_D_VOLUME_MIN + - (out_left_volume * - (AB8500_CODEC_DA_D_VOLUME_MAX - - AB8500_CODEC_DA_D_VOLUME_MIN)) / 100; - p_ab8500_codec_configuration->cr76_da6gain = - AB8500_CODEC_DA_D_VOLUME_MIN + - (out_left_volume * - (AB8500_CODEC_DA_D_VOLUME_MAX - - AB8500_CODEC_DA_D_VOLUME_MIN)) / 100; - - /* Set mininimum volume if volume is zero */ - switch (dest_device) { - case AB8500_CODEC_DEST_HEADSET: - p_ab8500_codec_configuration->cr22_hsl_gain = - AB8500_CODEC_HEADSET_VOLUME_MIN + - (out_left_volume * - (AB8500_CODEC_HEADSET_VOLUME_MAX - - AB8500_CODEC_HEADSET_VOLUME_MIN)) / 100; - p_ab8500_codec_configuration->cr23_hsr_gain = - AB8500_CODEC_HEADSET_VOLUME_MIN + - (out_right_volume * - (AB8500_CODEC_HEADSET_VOLUME_MAX - - AB8500_CODEC_HEADSET_VOLUME_MIN)) / 100; - - p_ab8500_codec_configuration->cr79_hsldgain = - AB8500_CODEC_HEADSET_D_VOLUME_0DB; - p_ab8500_codec_configuration->cr80_hsrdgain = - AB8500_CODEC_HEADSET_D_VOLUME_0DB; - break; - - case AB8500_CODEC_DEST_EARPIECE: - p_ab8500_codec_configuration->cr79_hsldgain = - AB8500_CODEC_HEADSET_D_VOLUME_0DB; - break; - - case AB8500_CODEC_DEST_HANDSFREE: - - p_ab8500_codec_configuration->cr101_parlhf = - AB8500_CODEC_CR101_PARLHF_INDEPENDENT; - p_ab8500_codec_configuration->cr101_parlvib = - AB8500_CODEC_CR101_PARLVIB_INDEPENDENT; - p_ab8500_codec_configuration->cr101_classd_viblswapen = - AB8500_CODEC_CR101_CLASSD_VIBLSWAPEN_DISABLED; - p_ab8500_codec_configuration->cr101_classd_vibrswapen = - AB8500_CODEC_CR101_CLASSD_VIBRSWAPEN_DISABLED; - p_ab8500_codec_configuration->cr101_classd_hflswapen = - AB8500_CODEC_CR101_CLASSD_HFLSWAPEN_DISABLED; - p_ab8500_codec_configuration->cr101_classd_hfrswapen = - AB8500_CODEC_CR101_CLASSD_HFRSWAPEN_DISABLED; - - p_ab8500_codec_configuration->cr102_classd_firbyp = - AB8500_CODEC_CR102_CLASSD_FIRBYP_ALL_ENABLED; - p_ab8500_codec_configuration->cr102_classd_highvolen = - AB8500_CODEC_CR102_CLASSD_HIGHVOLEN_DISABLED; - - p_ab8500_codec_configuration->cr103_classd_ditherhpgain = 0x8; - p_ab8500_codec_configuration->cr103_classd_ditherwgain = 0x4; - - break; - - case AB8500_CODEC_DEST_VIBRATOR_L: - p_ab8500_codec_configuration->cr16_pwmnldutycycle = - AB8500_CODEC_VIBRATOR_VOLUME_MIN; - p_ab8500_codec_configuration->cr17_pwmpldutycycle = - AB8500_CODEC_VIBRATOR_VOLUME_MIN + - (out_right_volume * - (AB8500_CODEC_VIBRATOR_VOLUME_MAX - - AB8500_CODEC_VIBRATOR_VOLUME_MIN)) / 100; - break; - - case AB8500_CODEC_DEST_VIBRATOR_R: - p_ab8500_codec_configuration->cr18_pwmnrdutycycle = - AB8500_CODEC_VIBRATOR_VOLUME_MIN; - p_ab8500_codec_configuration->cr19_pwmprdutycycle = - AB8500_CODEC_VIBRATOR_VOLUME_MIN + - (out_right_volume * - (AB8500_CODEC_VIBRATOR_VOLUME_MAX - - AB8500_CODEC_VIBRATOR_VOLUME_MIN)) / 100; - break; - - case AB8500_CODEC_DEST_ALL: - p_ab8500_codec_configuration->cr22_hsl_gain = - AB8500_CODEC_HEADSET_VOLUME_MIN + - (out_left_volume * - (AB8500_CODEC_HEADSET_VOLUME_MAX - - AB8500_CODEC_HEADSET_VOLUME_MIN)) / 100; - p_ab8500_codec_configuration->cr23_hsr_gain = - AB8500_CODEC_HEADSET_VOLUME_MIN + - (out_right_volume * - (AB8500_CODEC_HEADSET_VOLUME_MAX - - AB8500_CODEC_HEADSET_VOLUME_MIN)) / 100; - - p_ab8500_codec_configuration->cr79_hsldgain = - AB8500_CODEC_HEADSET_D_VOLUME_0DB; - break; - - default: - ab8500_codec_error = AB8500_CODEC_INVALID_PARAMETER; - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_SetDestVolumeUpdateCR(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_SetMasterMode */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Set the Audio Codec in Master mode. */ -/* */ -/* ARGUMENTS */ -/* IN: t_codec_master_mode: Enable/disable master mode */ -/* OUT: */ -/* None */ -/* RETURN: */ -/* AB8500_CODEC_TRANSACTION_FAILED: If transaction fails. */ -/* AB8500_CODEC_OK: if successful. */ -/* REMARK: Call this API after calling AB8500_CODEC_SetModeAndDirection() API*/ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_SetMasterMode(IN - t_ab8500_codec_master_mode - mode) -{ - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - DBGENTER0(); - - if (AB8500_CODEC_AUDIO_INTERFACE_1 == - g_ab8500_codec_system_context.audio_interface) { - - p_ab8500_codec_configuration->cr27_en_mastgen = - AB8500_CODEC_CR27_EN_MASTGEN_ENABLED; - p_ab8500_codec_configuration->cr27_enfs_bitclk1 = - AB8500_CODEC_CR27_ENFS_BITCLK1_ENABLED; - - if (AB8500_CODEC_MASTER_MODE_ENABLE == mode) { - p_ab8500_codec_configuration->cr29_if1master = - AB8500_CODEC_CR29_IF1MASTER_FS1CK1_OUTPUT; - } else { - p_ab8500_codec_configuration->cr29_if1master = - AB8500_CODEC_CR29_IF1MASTER_FS1CK1_INPUT; - } - - } else { - - p_ab8500_codec_configuration->cr27_en_mastgen = - AB8500_CODEC_CR27_EN_MASTGEN_ENABLED; - p_ab8500_codec_configuration->cr27_enfs_bitclk0 = - AB8500_CODEC_CR27_ENFS_BITCLK0_ENABLED; - - if (AB8500_CODEC_MASTER_MODE_ENABLE == mode) { - p_ab8500_codec_configuration->cr29_if0master = - AB8500_CODEC_CR29_IF0MASTER_FS0CK0_OUTPUT; - } else { - p_ab8500_codec_configuration->cr29_if0master = - AB8500_CODEC_CR29_IF0MASTER_FS0CK0_INPUT; - } - - } - - ab8500_codec_error = ab8500_codec_UpdateCR27(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR29(); - - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_SelectInput */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Select input source for recording. */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* input_src: select input source for recording when several sources */ -/* are supported in codec. */ -/* OUT: */ -/* None */ -/* */ -/* RETURN: */ -/* AB8500_CODEC_INVALID_PARAMETER: If input_src provided is invalid */ -/* by the codec hardware in use. */ -/* AB8500_CODEC_TRANSACTION_FAILED: If transaction fails. */ -/* AB8500_CODEC_OK: if successful. */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_SelectInput(IN t_ab8500_codec_src - ab8500_codec_src) -{ - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - DBGENTER1(" (%lx)", ab8500_codec_src); - - g_ab8500_codec_system_context.ab8500_codec_src = ab8500_codec_src; - - ab8500_codec_error = - ab8500_codec_SetDirection(AB8500_CODEC_DIRECTION_IN); - - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_SelectOutput */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Select output desination for playing. */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* output_dest: select output destination for playing when several are */ -/* supported by codec hardware. */ -/* OUT: */ -/* None */ -/* */ -/* RETURN: */ -/* AB8500_CODEC_INVALID_PARAMETER: If output_src provided is invalid */ -/* AB8500_CODEC_TRANSACTION_FAILED: If transaction fails. */ -/* AB8500_CODEC_OK: if successful. */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_SelectOutput(IN t_ab8500_codec_dest - ab8500_codec_dest) -{ - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - g_ab8500_codec_system_context.ab8500_codec_dest = ab8500_codec_dest; - DBGENTER1(" (%lx)", ab8500_codec_dest); - - ab8500_codec_error = - ab8500_codec_SetDirection(AB8500_CODEC_DIRECTION_OUT); - - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_PowerDown */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Shuts the audio codec down completely. */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* OUT: */ -/* */ -/* RETURN: */ -/* AB8500_CODEC_TRANSACTION_FAILED: If transaction fails. */ -/* AB8500_CODEC_OK: if successful. */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_PowerDown(void) -{ - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - - g_ab8500_codec_system_context.ab8500_codec_configuration.cr0_powerup = - AB8500_CODEC_CR0_POWERUP_OFF; - - ab8500_codec_error = ab8500_codec_UpdateCR0(); - - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_PowerUp */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Switch on the audio codec. */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* None */ -/* OUT: */ -/* None */ -/* RETURN: */ -/* AB8500_CODEC_TRANSACTION_FAILED: If transaction fails. */ -/* CODEC_OK: if successful. */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_PowerUp(void) -{ - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - - DBGENTER(); - - /*g_ab8500_codec_system_context.ab8500_codec_configuration.cr1_swreset = AB8500_CODEC_CR1_SWRESET_ENABLED; Removed by kardad - ab8500_codec_error = ab8500_codec_UpdateCR1(); - if (AB8500_CODEC_OK != ab8500_codec_error) - { - return(ab8500_codec_error); - } */ - - g_ab8500_codec_system_context.ab8500_codec_configuration.cr0_powerup = - AB8500_CODEC_CR0_POWERUP_ON; - g_ab8500_codec_system_context.ab8500_codec_configuration.cr0_enaana = - AB8500_CODEC_CR0_ENAANA_ON; - - ab8500_codec_error = ab8500_codec_UpdateCR0(); - - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_SelectInterface */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Select the Audio Interface 0 or 1. */ -/* */ -/* ARGUMENTS */ -/* IN: t_ab8500_codec_audio_interface: The selected interface */ -/* */ -/* OUT: */ -/* None */ -/* RETURN: */ -/* AB8500_CODEC_OK: Always. */ -/* REMARK: Call this API before using a function of the low level drivers */ -/* to select the interface that you want to configure */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_SelectInterface(IN - t_ab8500_codec_audio_interface - audio_interface) -{ - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - DBGENTER0(); - - g_ab8500_codec_system_context.audio_interface = audio_interface; - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_GetInterface */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Get the Audio Interface 0 or 1. */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* None */ -/* OUT: p_audio_interface: Store the selected interface */ -/* RETURN: */ -/* AB8500_CODEC_OK: Always */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Re-Entrant */ -/* REENTRANCY ISSUES: No Issues */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_GetInterface(OUT - t_ab8500_codec_audio_interface - * p_audio_interface) -{ - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - DBGENTER0(); - - *p_audio_interface = g_ab8500_codec_system_context.audio_interface; - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_SetAnalogLoopback */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Sets Line-In to HeadSet loopback with the required gain. */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* out_left_volume: play volume for left channel. */ -/* out_right_volume: play volume for right channel. */ -/* OUT: */ -/* None */ -/* */ -/* RETURN: */ -/* AB8500_CODEC_TRANSACTION_FAILED: If transaction fails. */ -/* AB8500_CODEC_OK: if successful. */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_SetAnalogLoopback(IN t_uint8 - out_left_volume, - IN t_uint8 - out_right_volume) -{ - t_ab8500_codec_error ab8500_codec_error; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - DBGENTER2(" (%lx %lx)", out_left_volume, out_right_volume); - - if (out_left_volume > AB8500_CODEC_MAX_VOLUME) { - out_left_volume = AB8500_CODEC_MAX_VOLUME; - } - - if (out_right_volume > AB8500_CODEC_MAX_VOLUME) { - out_right_volume = AB8500_CODEC_MAX_VOLUME; - } - - g_ab8500_codec_system_context.out_left_volume = out_left_volume; - g_ab8500_codec_system_context.out_right_volume = out_right_volume; - - p_ab8500_codec_configuration->cr24_lintohsl_gain = - AB8500_CODEC_LINEIN_TO_HS_L_R_VOLUME_MIN + - (out_left_volume * - (AB8500_CODEC_LINEIN_TO_HS_L_R_VOLUME_MAX - - AB8500_CODEC_LINEIN_TO_HS_L_R_VOLUME_MIN)) / 100; - p_ab8500_codec_configuration->cr25_lintohsr_gain = - AB8500_CODEC_LINEIN_TO_HS_L_R_VOLUME_MIN + - (out_right_volume * - (AB8500_CODEC_LINEIN_TO_HS_L_R_VOLUME_MAX - - AB8500_CODEC_LINEIN_TO_HS_L_R_VOLUME_MIN)) / 100; - - ab8500_codec_error = ab8500_codec_UpdateCR24(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR25(); - - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_RemoveAnalogLoopback */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Remove Line-In to HeadSet loopback. */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* None */ -/* OUT: */ -/* None */ -/* */ -/* RETURN: */ -/* AB8500_CODEC_TRANSACTION_FAILED: If transaction fails. */ -/* AB8500_CODEC_OK: if successful. */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_RemoveAnalogLoopback(void) -{ - t_ab8500_codec_error ab8500_codec_error; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - DBGENTER0(); - - p_ab8500_codec_configuration->cr24_lintohsl_gain = - AB8500_CODEC_LINEIN_TO_HS_L_R_LOOP_OPEN; - p_ab8500_codec_configuration->cr25_lintohsr_gain = - AB8500_CODEC_LINEIN_TO_HS_L_R_LOOP_OPEN; - - ab8500_codec_error = ab8500_codec_UpdateCR24(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR25(); - - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_EnableBypassMode */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Enables IF0 to IF1 path or vice versa */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* None */ -/* OUT: */ -/* None */ -/* */ -/* RETURN: */ -/* AB8500_CODEC_TRANSACTION_FAILED: If transaction fails. */ -/* AB8500_CODEC_OK: if successful. */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_EnableBypassMode(void) -{ - t_ab8500_codec_error ab8500_codec_error; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - DBGENTER0(); - - if (AB8500_CODEC_AUDIO_INTERFACE_1 == - g_ab8500_codec_system_context.audio_interface) { - p_ab8500_codec_configuration->cr29_if1datoif0ad = - AB8500_CODEC_CR29_IF1DATOIF0AD_SENT; - p_ab8500_codec_configuration->cr29_if1cktoif0ck = - AB8500_CODEC_CR29_IF1CKTOIF0CK_SENT; - } else { - p_ab8500_codec_configuration->cr29_if0datoif1ad = - AB8500_CODEC_CR29_IF0DATOIF1AD_SENT; - p_ab8500_codec_configuration->cr29_if0cktoif1ck = - AB8500_CODEC_CR29_IF0CKTOIF1CK_SENT; - } - - ab8500_codec_error = ab8500_codec_UpdateCR29(); - - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_DisableBypassMode */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Disables IF0 to IF1 path or vice versa */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* None */ -/* OUT: */ -/* None */ -/* */ -/* RETURN: */ -/* AB8500_CODEC_TRANSACTION_FAILED: If transaction fails. */ -/* AB8500_CODEC_OK: if successful. */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_DisableBypassMode(void) -{ - t_ab8500_codec_error ab8500_codec_error; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - DBGENTER0(); - - if (AB8500_CODEC_AUDIO_INTERFACE_1 == - g_ab8500_codec_system_context.audio_interface) { - p_ab8500_codec_configuration->cr29_if1datoif0ad = - AB8500_CODEC_CR29_IF1DATOIF0AD_NOTSENT; - p_ab8500_codec_configuration->cr29_if1cktoif0ck = - AB8500_CODEC_CR29_IF1CKTOIF0CK_NOTSENT; - } else { - p_ab8500_codec_configuration->cr29_if0datoif1ad = - AB8500_CODEC_CR29_IF0DATOIF1AD_NOTSENT; - p_ab8500_codec_configuration->cr29_if0cktoif1ck = - AB8500_CODEC_CR29_IF0CKTOIF1CK_NOTSENT; - } - - ab8500_codec_error = ab8500_codec_UpdateCR29(); - - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_SrcPowerControl */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Enables/Disables & UnMute/Mute the desired source */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* t_ab8500_codec_src: select source device for enabling/disabling. */ -/* t_ab8500_codec_src_state: Enable/Disable */ -/* OUT: */ -/* None */ -/* */ -/* RETURN: */ -/* AB8500_CODEC_TRANSACTION_FAILED: If transaction fails. */ -/* AB8500_CODEC_OK: if successful. */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_SrcPowerControl(IN t_ab8500_codec_src - src_device, - t_ab8500_codec_src_state - state) -{ - t_ab8500_codec_error ab8500_codec_error; - - DBGENTER2(" (%lx %lx)", src_device, state); - - if (src_device <= AB8500_CODEC_SRC_D_MICROPHONE_2) { - ab8500_codec_error = - ab8500_codec_SrcPowerControlSwitch1(src_device, state); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - } else if (src_device <= AB8500_CODEC_SRC_ALL) { - ab8500_codec_error = - ab8500_codec_SrcPowerControlSwitch2(src_device, state); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - } else { - ab8500_codec_error = AB8500_CODEC_INVALID_PARAMETER; - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR5(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR6(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR7(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR63(); - - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_DestPowerControl */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Enables/Disables & UnMute/Mute the desired destination */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* t_ab8500_codec_dest: select destination device for enabling/disabling. */ -/* t_ab8500_codec_dest_state: Enable/Disable */ -/* OUT: */ -/* None */ -/* */ -/* RETURN: */ -/* AB8500_CODEC_TRANSACTION_FAILED: If transaction fails. */ -/* AB8500_CODEC_OK: if successful. */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_DestPowerControl(IN t_ab8500_codec_dest - dest_device, - t_ab8500_codec_dest_state - state) -{ - t_ab8500_codec_error ab8500_codec_error; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - DBGENTER2(" (%lx %lx)", dest_device, state); - - switch (dest_device) { - case AB8500_CODEC_DEST_HEADSET: - - if (AB8500_CODEC_DEST_STATE_ENABLE == state) { - p_ab8500_codec_configuration->cr8_enhsl = - AB8500_CODEC_CR8_ENHSL_ENABLED; - p_ab8500_codec_configuration->cr8_enhsr = - AB8500_CODEC_CR8_ENHSR_ENABLED; - p_ab8500_codec_configuration->cr10_mutehsl = - AB8500_CODEC_CR10_MUTEHSL_DISABLED; - p_ab8500_codec_configuration->cr10_mutehsr = - AB8500_CODEC_CR10_MUTEHSR_DISABLED; - } else { - p_ab8500_codec_configuration->cr8_enhsl = - AB8500_CODEC_CR8_ENHSL_DISABLED; - p_ab8500_codec_configuration->cr8_enhsr = - AB8500_CODEC_CR8_ENHSR_DISABLED; - p_ab8500_codec_configuration->cr10_mutehsl = - AB8500_CODEC_CR10_MUTEHSL_ENABLED; - p_ab8500_codec_configuration->cr10_mutehsr = - AB8500_CODEC_CR10_MUTEHSR_ENABLED; - } - break; - - case AB8500_CODEC_DEST_EARPIECE: - - if (AB8500_CODEC_DEST_STATE_ENABLE == state) { - p_ab8500_codec_configuration->cr8_enear = - AB8500_CODEC_CR8_ENEAR_ENABLED; - p_ab8500_codec_configuration->cr9_endacear = - AB8500_CODEC_CR9_ENDACEAR_ENABLED; - p_ab8500_codec_configuration->cr10_muteear = - AB8500_CODEC_CR10_MUTEEAR_DISABLED; - } else { - p_ab8500_codec_configuration->cr8_enear = - AB8500_CODEC_CR8_ENEAR_DISABLED; - p_ab8500_codec_configuration->cr9_endacear = - AB8500_CODEC_CR9_ENDACEAR_DISABLED; - p_ab8500_codec_configuration->cr10_muteear = - AB8500_CODEC_CR10_MUTEEAR_ENABLED; - } - break; - - case AB8500_CODEC_DEST_HANDSFREE: - - if (AB8500_CODEC_DEST_STATE_ENABLE == state) { - p_ab8500_codec_configuration->cr8_enhfl = - AB8500_CODEC_CR8_ENHFL_ENABLED; - p_ab8500_codec_configuration->cr8_enhfr = - AB8500_CODEC_CR8_ENHFR_ENABLED; - p_ab8500_codec_configuration->cr9_endachfl = - AB8500_CODEC_CR9_ENDACHFL_ENABLED; - p_ab8500_codec_configuration->cr9_endachfr = - AB8500_CODEC_CR9_ENDACHFR_ENABLED; - p_ab8500_codec_configuration->cr10_mutehfl = - AB8500_CODEC_CR10_MUTEHFL_DISABLED; - p_ab8500_codec_configuration->cr10_mutehfr = - AB8500_CODEC_CR10_MUTEHFR_DISABLED; - } else { - p_ab8500_codec_configuration->cr8_enhfl = - AB8500_CODEC_CR8_ENHFL_DISABLED; - p_ab8500_codec_configuration->cr8_enhfr = - AB8500_CODEC_CR8_ENHFR_DISABLED; - p_ab8500_codec_configuration->cr9_endachfl = - AB8500_CODEC_CR9_ENDACHFL_DISABLED; - p_ab8500_codec_configuration->cr9_endachfr = - AB8500_CODEC_CR9_ENDACHFR_DISABLED; - p_ab8500_codec_configuration->cr10_mutehfl = - AB8500_CODEC_CR10_MUTEHFL_ENABLED; - p_ab8500_codec_configuration->cr10_mutehfr = - AB8500_CODEC_CR10_MUTEHFR_ENABLED; - } - break; - - case AB8500_CODEC_DEST_VIBRATOR_L: - - if (AB8500_CODEC_DEST_STATE_ENABLE == state) { - p_ab8500_codec_configuration->cr8_envibl = - AB8500_CODEC_CR8_ENVIBL_ENABLED; - p_ab8500_codec_configuration->cr9_endacvibl = - AB8500_CODEC_CR9_ENDACVIBL_ENABLED; - p_ab8500_codec_configuration->cr10_mutevibl = - AB8500_CODEC_CR10_MUTEVIBL_DISABLED; - p_ab8500_codec_configuration->cr15_pwmtovibl = - AB8500_CODEC_CR15_PWMTOVIBL_PWM; - p_ab8500_codec_configuration->cr15_pwmlctrl = - AB8500_CODEC_CR15_PWMLCTRL_PWMNPLDUTYCYCLE; - p_ab8500_codec_configuration->cr15_pwmnlctrl = - AB8500_CODEC_CR15_PWMNLCTRL_PWMNLDUTYCYCLE; - p_ab8500_codec_configuration->cr15_pwmplctrl = - AB8500_CODEC_CR15_PWMPLCTRL_PWMPLDUTYCYCLE; - } else { - p_ab8500_codec_configuration->cr8_envibl = - AB8500_CODEC_CR8_ENVIBL_DISABLED; - p_ab8500_codec_configuration->cr9_endacvibl = - AB8500_CODEC_CR9_ENDACVIBL_DISABLED; - p_ab8500_codec_configuration->cr10_mutevibl = - AB8500_CODEC_CR10_MUTEVIBL_ENABLED; - p_ab8500_codec_configuration->cr15_pwmtovibl = - AB8500_CODEC_CR15_PWMTOVIBL_DA_PATH; - p_ab8500_codec_configuration->cr15_pwmlctrl = - AB8500_CODEC_CR15_PWMLCTRL_PWMNPLGPOL; - p_ab8500_codec_configuration->cr15_pwmnlctrl = - AB8500_CODEC_CR15_PWMNLCTRL_PWMNLGPOL; - p_ab8500_codec_configuration->cr15_pwmplctrl = - AB8500_CODEC_CR15_PWMPLCTRL_PWMPLGPOL; - } - break; - - case AB8500_CODEC_DEST_VIBRATOR_R: - - if (AB8500_CODEC_DEST_STATE_ENABLE == state) { - p_ab8500_codec_configuration->cr8_envibr = - AB8500_CODEC_CR8_ENVIBR_ENABLED; - p_ab8500_codec_configuration->cr9_endacvibr = - AB8500_CODEC_CR9_ENDACVIBR_ENABLED; - p_ab8500_codec_configuration->cr10_mutevibr = - AB8500_CODEC_CR10_MUTEVIBR_DISABLED; - p_ab8500_codec_configuration->cr15_pwmtovibr = - AB8500_CODEC_CR15_PWMTOVIBR_PWM; - p_ab8500_codec_configuration->cr15_pwmrctrl = - AB8500_CODEC_CR15_PWMRCTRL_PWMNPRDUTYCYCLE; - p_ab8500_codec_configuration->cr15_pwmnrctrl = - AB8500_CODEC_CR15_PWMNRCTRL_PWMNRDUTYCYCLE; - p_ab8500_codec_configuration->cr15_pwmprctrl = - AB8500_CODEC_CR15_PWMPRCTRL_PWMPRDUTYCYCLE; - } else { - p_ab8500_codec_configuration->cr8_envibr = - AB8500_CODEC_CR8_ENVIBR_DISABLED; - p_ab8500_codec_configuration->cr9_endacvibr = - AB8500_CODEC_CR9_ENDACVIBR_DISABLED; - p_ab8500_codec_configuration->cr10_mutevibr = - AB8500_CODEC_CR10_MUTEVIBR_ENABLED; - p_ab8500_codec_configuration->cr15_pwmtovibr = - AB8500_CODEC_CR15_PWMTOVIBR_DA_PATH; - p_ab8500_codec_configuration->cr15_pwmrctrl = - AB8500_CODEC_CR15_PWMRCTRL_PWMNPRGPOL; - p_ab8500_codec_configuration->cr15_pwmnrctrl = - AB8500_CODEC_CR15_PWMNRCTRL_PWMNRGPOL; - p_ab8500_codec_configuration->cr15_pwmprctrl = - AB8500_CODEC_CR15_PWMPRCTRL_PWMPRGPOL; - } - break; - - case AB8500_CODEC_DEST_ALL: - - if (AB8500_CODEC_DEST_STATE_ENABLE == state) { - p_ab8500_codec_configuration->cr8_enhsl = - AB8500_CODEC_CR8_ENHSL_ENABLED; - p_ab8500_codec_configuration->cr8_enhsr = - AB8500_CODEC_CR8_ENHSR_ENABLED; - p_ab8500_codec_configuration->cr8_enear = - AB8500_CODEC_CR8_ENEAR_ENABLED; - p_ab8500_codec_configuration->cr8_enhfl = - AB8500_CODEC_CR8_ENHFL_ENABLED; - p_ab8500_codec_configuration->cr8_enhfr = - AB8500_CODEC_CR8_ENHFR_ENABLED; - p_ab8500_codec_configuration->cr8_envibl = - AB8500_CODEC_CR8_ENVIBL_ENABLED; - p_ab8500_codec_configuration->cr8_envibr = - AB8500_CODEC_CR8_ENVIBR_ENABLED; - - p_ab8500_codec_configuration->cr9_endacear = - AB8500_CODEC_CR9_ENDACEAR_ENABLED; - p_ab8500_codec_configuration->cr9_endachfl = - AB8500_CODEC_CR9_ENDACHFL_ENABLED; - p_ab8500_codec_configuration->cr9_endachfr = - AB8500_CODEC_CR9_ENDACHFR_ENABLED; - p_ab8500_codec_configuration->cr9_endacvibl = - AB8500_CODEC_CR9_ENDACVIBL_ENABLED; - p_ab8500_codec_configuration->cr9_endacvibr = - AB8500_CODEC_CR9_ENDACVIBR_ENABLED; - - p_ab8500_codec_configuration->cr10_mutehsl = - AB8500_CODEC_CR10_MUTEHSL_DISABLED; - p_ab8500_codec_configuration->cr10_mutehsr = - AB8500_CODEC_CR10_MUTEHSR_DISABLED; - p_ab8500_codec_configuration->cr10_muteear = - AB8500_CODEC_CR10_MUTEEAR_DISABLED; - p_ab8500_codec_configuration->cr10_mutehfl = - AB8500_CODEC_CR10_MUTEHFL_DISABLED; - p_ab8500_codec_configuration->cr10_mutehfr = - AB8500_CODEC_CR10_MUTEHFR_DISABLED; - p_ab8500_codec_configuration->cr10_mutevibl = - AB8500_CODEC_CR10_MUTEVIBL_DISABLED; - p_ab8500_codec_configuration->cr10_mutevibr = - AB8500_CODEC_CR10_MUTEVIBR_DISABLED; - - p_ab8500_codec_configuration->cr15_pwmtovibl = - AB8500_CODEC_CR15_PWMTOVIBL_PWM; - p_ab8500_codec_configuration->cr15_pwmlctrl = - AB8500_CODEC_CR15_PWMLCTRL_PWMNPLDUTYCYCLE; - p_ab8500_codec_configuration->cr15_pwmnlctrl = - AB8500_CODEC_CR15_PWMNLCTRL_PWMNLDUTYCYCLE; - p_ab8500_codec_configuration->cr15_pwmplctrl = - AB8500_CODEC_CR15_PWMPLCTRL_PWMPLDUTYCYCLE; - p_ab8500_codec_configuration->cr15_pwmtovibr = - AB8500_CODEC_CR15_PWMTOVIBR_PWM; - p_ab8500_codec_configuration->cr15_pwmrctrl = - AB8500_CODEC_CR15_PWMRCTRL_PWMNPRDUTYCYCLE; - p_ab8500_codec_configuration->cr15_pwmnrctrl = - AB8500_CODEC_CR15_PWMNRCTRL_PWMNRDUTYCYCLE; - p_ab8500_codec_configuration->cr15_pwmprctrl = - AB8500_CODEC_CR15_PWMPRCTRL_PWMPRDUTYCYCLE; - } else { - p_ab8500_codec_configuration->cr8_enhsl = - AB8500_CODEC_CR8_ENHSL_DISABLED; - p_ab8500_codec_configuration->cr8_enhsr = - AB8500_CODEC_CR8_ENHSR_DISABLED; - p_ab8500_codec_configuration->cr8_enear = - AB8500_CODEC_CR8_ENEAR_DISABLED; - p_ab8500_codec_configuration->cr8_enhfl = - AB8500_CODEC_CR8_ENHFL_DISABLED; - p_ab8500_codec_configuration->cr8_enhfr = - AB8500_CODEC_CR8_ENHFR_DISABLED; - p_ab8500_codec_configuration->cr8_envibl = - AB8500_CODEC_CR8_ENVIBL_DISABLED; - p_ab8500_codec_configuration->cr8_envibr = - AB8500_CODEC_CR8_ENVIBR_DISABLED; - - p_ab8500_codec_configuration->cr9_endacear = - AB8500_CODEC_CR9_ENDACEAR_DISABLED; - p_ab8500_codec_configuration->cr9_endachfl = - AB8500_CODEC_CR9_ENDACHFL_DISABLED; - p_ab8500_codec_configuration->cr9_endachfr = - AB8500_CODEC_CR9_ENDACHFR_DISABLED; - p_ab8500_codec_configuration->cr9_endacvibl = - AB8500_CODEC_CR9_ENDACVIBL_DISABLED; - p_ab8500_codec_configuration->cr9_endacvibr = - AB8500_CODEC_CR9_ENDACVIBR_DISABLED; - - p_ab8500_codec_configuration->cr10_mutehsl = - AB8500_CODEC_CR10_MUTEHSL_ENABLED; - p_ab8500_codec_configuration->cr10_mutehsr = - AB8500_CODEC_CR10_MUTEHSR_ENABLED; - p_ab8500_codec_configuration->cr10_muteear = - AB8500_CODEC_CR10_MUTEEAR_ENABLED; - p_ab8500_codec_configuration->cr10_mutehfl = - AB8500_CODEC_CR10_MUTEHFL_ENABLED; - p_ab8500_codec_configuration->cr10_mutehfr = - AB8500_CODEC_CR10_MUTEHFR_ENABLED; - p_ab8500_codec_configuration->cr10_mutevibl = - AB8500_CODEC_CR10_MUTEVIBL_ENABLED; - p_ab8500_codec_configuration->cr10_mutevibr = - AB8500_CODEC_CR10_MUTEVIBR_ENABLED; - - p_ab8500_codec_configuration->cr15_pwmtovibl = - AB8500_CODEC_CR15_PWMTOVIBL_DA_PATH; - p_ab8500_codec_configuration->cr15_pwmlctrl = - AB8500_CODEC_CR15_PWMLCTRL_PWMNPLGPOL; - p_ab8500_codec_configuration->cr15_pwmnlctrl = - AB8500_CODEC_CR15_PWMNLCTRL_PWMNLGPOL; - p_ab8500_codec_configuration->cr15_pwmplctrl = - AB8500_CODEC_CR15_PWMPLCTRL_PWMPLGPOL; - p_ab8500_codec_configuration->cr15_pwmtovibr = - AB8500_CODEC_CR15_PWMTOVIBR_DA_PATH; - p_ab8500_codec_configuration->cr15_pwmrctrl = - AB8500_CODEC_CR15_PWMRCTRL_PWMNPRGPOL; - p_ab8500_codec_configuration->cr15_pwmnrctrl = - AB8500_CODEC_CR15_PWMNRCTRL_PWMNRGPOL; - p_ab8500_codec_configuration->cr15_pwmprctrl = - AB8500_CODEC_CR15_PWMPRCTRL_PWMPRGPOL; - - } - break; - - default: - ab8500_codec_error = AB8500_CODEC_INVALID_PARAMETER; - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_DestPowerControlUpdateCR(); - - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_GetVersion */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* This routine populates the pVersion structure with */ -/* the current version of HCL. */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* None */ -/* OUT: */ -/* p_version: this parameter is used to return current HCL version. */ -/* */ -/* RETURN: */ -/* AB8500_CODEC_ERROR: if p_version is NULL. */ -/* AB8500_CODEC_OK: if successful */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Re-Entrant */ -/* REENTRANCY ISSUES: No Issues */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_GetVersion(OUT t_version * p_version) -{ - DBGENTER1(" (%lx)", p_version); - if (p_version != NULL) { - p_version->minor = AB8500_CODEC_HCL_MINOR_ID; - p_version->major = AB8500_CODEC_HCL_MAJOR_ID; - p_version->version = AB8500_CODEC_HCL_VERSION_ID; - DBGEXIT0(AB8500_CODEC_OK); - return (AB8500_CODEC_OK); - } else { - DBGEXIT0(AB8500_CODEC_INVALID_PARAMETER); - return (AB8500_CODEC_INVALID_PARAMETER); - } -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_SetDbgLevel */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Set the debug level used by the debug module (mask-like value). */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* debug_level: debug level to be set */ -/* OUT: */ -/* None */ -/* */ -/* RETURN: */ -/* AB8500_CODEC_OK: always */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Re-Entrant */ -/* REENTRANCY ISSUES: No Issues */ - -/****************************************************************************/ -/* -PUBLIC t_ab8500_codec_error AB8500_CODEC_SetDbgLevel(IN t_dbg_level dbg_level) -{ - DBGENTER1(" (%d)", dbg_level); - dbg_level = dbg_level; -#ifdef __DEBUG - MY_DEBUG_LEVEL_VAR_NAME = dbg_level; -#endif - DBGEXIT(AB8500_CODEC_OK); - return(AB8500_CODEC_OK); -}*/ - -/****************************************************************************/ -/* NAME: AB8500_CODEC_GetDbgLevel */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Set the debug level used by the debug module (mask-like value). */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* None */ -/* OUT: */ -/* p_dbg_level: this parameter is used to return debug level. */ -/* */ -/* RETURN: */ -/* AB8500_CODEC_ERROR: if p_version is NULL. */ -/* AB8500_CODEC_OK: if successful */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Re-Entrant */ -/* REENTRANCY ISSUES: No Issues */ - -/****************************************************************************/ -/* -PUBLIC t_ab8500_codec_error AB8500_CODEC_GetDbgLevel(OUT t_dbg_level *p_dbg_level) -{ - if (NULL == p_dbg_level) - { - DBGEXIT(AB8500_CODEC_INVALID_PARAMETER); - return(AB8500_CODEC_INVALID_PARAMETER); - } - -#ifdef __DEBUG - * p_dbg_level = MY_DEBUG_LEVEL_VAR_NAME; -#endif - DBGEXIT(AB8500_CODEC_OK); - return(AB8500_CODEC_OK); -} -*/ -/****************************************************************************/ -/* NAME: AB8500_CODEC_ADSlotAllocation */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* AD Data Allocation in slots. */ -/* */ -/* ARGUMENTS */ -/* IN: t_ab8500_codec_slot: The slot to be allocated. */ -/* IN: t_ab8500_codec_cr31_to_cr46_ad_data_allocation: The value */ -/* to be allocated. */ -/* OUT: */ -/* None */ -/* RETURN: */ -/* AB8500_CODEC_INVALID_PARAMETER: If invalid slot number */ -/* AB8500_CODEC_OK: if successful. */ -/* REMARK: */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_ADSlotAllocation - (IN t_ab8500_codec_slot ad_slot, - IN t_ab8500_codec_cr31_to_cr46_ad_data_allocation value) { - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - - DBGENTER2(" (%lx %lx)", ad_slot, value); - - if (ad_slot <= AB8500_CODEC_SLOT7) { - ab8500_codec_error = - ab8500_codec_ADSlotAllocationSwitch1(ad_slot, value); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - } else if (ad_slot <= AB8500_CODEC_SLOT15) { - ab8500_codec_error = - ab8500_codec_ADSlotAllocationSwitch2(ad_slot, value); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - } else if (ad_slot <= AB8500_CODEC_SLOT23) { - ab8500_codec_error = - ab8500_codec_ADSlotAllocationSwitch3(ad_slot, value); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - } else if (ad_slot <= AB8500_CODEC_SLOT31) { - ab8500_codec_error = - ab8500_codec_ADSlotAllocationSwitch4(ad_slot, value); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - } else { - ab8500_codec_error = AB8500_CODEC_INVALID_PARAMETER; - } - - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_DASlotAllocation */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Allocate the Audio Interface slot for DA paths. */ -/* */ -/* ARGUMENTS */ -/* IN: t_ab8500_codec_da_channel_number: Channel number 1/2/3/4/5/6 */ -/* IN: t_ab8500_codec_cr51_to_cr56_sltoda: Slot number */ -/* */ -/* OUT: */ -/* None */ -/* RETURN: */ -/* AB8500_CODEC_INVALID_PARAMETER: If invalid channel number */ -/* AB8500_CODEC_OK: if successful. */ -/* REMARK: */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_DASlotAllocation - (IN t_ab8500_codec_da_channel_number channel_number, - IN t_ab8500_codec_cr51_to_cr56_sltoda slot) { - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - t_ab8500_codec_cr0_powerup ab8500_codec_cr0_powerup; - - DBGENTER2(" (%lx %lx)", channel_number, slot); - - p_ab8500_codec_configuration->cr51_da12_voice = - AB8500_CODEC_CR51_DA12_VOICE_LOWLATENCYFILTER; - - switch (channel_number) { - case AB8500_CODEC_DA_CHANNEL_NUMBER_1: - p_ab8500_codec_configuration->cr51_sltoda1 = slot; - break; - - case AB8500_CODEC_DA_CHANNEL_NUMBER_2: - p_ab8500_codec_configuration->cr52_sltoda2 = slot; - break; - - case AB8500_CODEC_DA_CHANNEL_NUMBER_3: - p_ab8500_codec_configuration->cr53_sltoda3 = slot; - break; - - case AB8500_CODEC_DA_CHANNEL_NUMBER_4: - p_ab8500_codec_configuration->cr54_sltoda4 = slot; - break; - - case AB8500_CODEC_DA_CHANNEL_NUMBER_5: - p_ab8500_codec_configuration->cr55_sltoda5 = slot; - break; - - case AB8500_CODEC_DA_CHANNEL_NUMBER_6: - p_ab8500_codec_configuration->cr56_sltoda6 = slot; - break; - - default: - ab8500_codec_error = AB8500_CODEC_INVALID_PARAMETER; - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_cr0_powerup = p_ab8500_codec_configuration->cr0_powerup; - - p_ab8500_codec_configuration->cr0_powerup = - AB8500_CODEC_CR0_POWERUP_OFF; - - ab8500_codec_error = ab8500_codec_UpdateCR0(); - if (AB8500_CODEC_OK != ab8500_codec_error) { - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR51(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR52(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR53(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR54(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR55(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR56(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - p_ab8500_codec_configuration->cr0_powerup = ab8500_codec_cr0_powerup; - - ab8500_codec_error = ab8500_codec_UpdateCR0(); - - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_ConfigureBurstFifo */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Configuration for Burst FIFO control */ -/* */ -/* ARGUMENTS */ -/* IN: t_ab8500_codec_burst_fifo_config: structure for configuration of */ -/* burst FIFO */ -/* OUT: */ -/* None */ -/* RETURN: */ -/* AB8500_CODEC_INVALID_PARAMETER: If invalid parameter */ -/* AB8500_CODEC_UNSUPPORTED_FEATURE: If interface 1 selected */ -/* AB8500_CODEC_OK: if successful. */ -/* REMARK: */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -t_ab8500_codec_error AB8500_CODEC_ConfigureBurstFifo(IN - t_ab8500_codec_burst_fifo_config - const *const - p_burst_fifo_config) -{ - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - DBGENTER1(" (%lx)", p_burst_fifo_config); - - if (AB8500_CODEC_AUDIO_INTERFACE_0 == - g_ab8500_codec_system_context.audio_interface) { - if (AB8500_CODEC_CR27_EN_MASTGEN_ENABLED == - p_ab8500_codec_configuration->cr27_en_mastgen) { - p_ab8500_codec_configuration->cr104_bfifoint = - p_burst_fifo_config->cr104_bfifoint; - - p_ab8500_codec_configuration->cr105_bfifotx = - p_burst_fifo_config->cr105_bfifotx; - - p_ab8500_codec_configuration->cr106_bfifofsext = - p_burst_fifo_config->cr106_bfifofsext; - p_ab8500_codec_configuration->cr106_bfifomsk = - p_burst_fifo_config->cr106_bfifomsk; - p_ab8500_codec_configuration->cr106_bfifomstr = - p_burst_fifo_config->cr106_bfifomstr; - p_ab8500_codec_configuration->cr106_bfifostrt = - p_burst_fifo_config->cr106_bfifostrt; - - p_ab8500_codec_configuration->cr107_bfifosampnr = - p_burst_fifo_config->cr107_bfifosampnr; - - p_ab8500_codec_configuration->cr108_bfifowakeup = - p_burst_fifo_config->cr108_bfifowakeup; - - ab8500_codec_error = ab8500_codec_UpdateCR104(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR105(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR106(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR107(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR108(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - } else { - ab8500_codec_error = AB8500_CODEC_INVALID_PARAMETER; - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - } else { - ab8500_codec_error = AB8500_CODEC_UNSUPPORTED_FEATURE; - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_EnableBurstFifo */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Enable the Burst FIFO for Interface 0 */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* None */ -/* OUT: */ -/* None */ -/* RETURN: */ -/* AB8500_CODEC_UNSUPPORTED_FEATURE: If Interface 1 is selected */ -/* AB8500_CODEC_OK: if successful. */ -/* REMARK: */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_EnableBurstFifo(void) -{ - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - DBGENTER0(); - - if (AB8500_CODEC_AUDIO_INTERFACE_0 == - g_ab8500_codec_system_context.audio_interface) { - p_ab8500_codec_configuration->cr29_if0bfifoen = - AB8500_CODEC_CR29_IF0BFIFOEN_BURST_MODE; - - ab8500_codec_error = ab8500_codec_UpdateCR29(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - } else { - ab8500_codec_error = AB8500_CODEC_UNSUPPORTED_FEATURE; - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_DisableBurstFifo */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Disable the Burst FIFO for Interface 0 */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* None */ -/* OUT: */ -/* None */ -/* RETURN: */ -/* AB8500_CODEC_UNSUPPORTED_FEATURE: If Interface 1 is selected */ -/* AB8500_CODEC_OK: if successful. */ -/* REMARK: */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_DisableBurstFifo(void) -{ - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - DBGENTER0(); - - if (AB8500_CODEC_AUDIO_INTERFACE_0 == - g_ab8500_codec_system_context.audio_interface) { - p_ab8500_codec_configuration->cr29_if0bfifoen = - AB8500_CODEC_CR29_IF0BFIFOEN_NORMAL_MODE; - - ab8500_codec_error = ab8500_codec_UpdateCR29(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - } else { - ab8500_codec_error = AB8500_CODEC_UNSUPPORTED_FEATURE; - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -PRIVATE t_ab8500_codec_error ab8500_codec_ADSlotAllocationSwitch1 - (IN t_ab8500_codec_slot ad_slot, - IN t_ab8500_codec_cr31_to_cr46_ad_data_allocation value) { - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - switch (ad_slot) { - case AB8500_CODEC_SLOT0: - p_ab8500_codec_configuration->cr31_adotoslot0 = value; - - ab8500_codec_error = ab8500_codec_UpdateCR31(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - - case AB8500_CODEC_SLOT1: - p_ab8500_codec_configuration->cr31_adotoslot1 = value; - - ab8500_codec_error = ab8500_codec_UpdateCR31(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - - case AB8500_CODEC_SLOT2: - p_ab8500_codec_configuration->cr32_adotoslot2 = value; - - ab8500_codec_error = ab8500_codec_UpdateCR32(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - - case AB8500_CODEC_SLOT3: - p_ab8500_codec_configuration->cr32_adotoslot3 = value; - - ab8500_codec_error = ab8500_codec_UpdateCR32(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - - case AB8500_CODEC_SLOT4: - p_ab8500_codec_configuration->cr33_adotoslot4 = value; - - ab8500_codec_error = ab8500_codec_UpdateCR33(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - - case AB8500_CODEC_SLOT5: - p_ab8500_codec_configuration->cr33_adotoslot5 = value; - - ab8500_codec_error = ab8500_codec_UpdateCR33(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - - case AB8500_CODEC_SLOT6: - p_ab8500_codec_configuration->cr34_adotoslot6 = value; - - ab8500_codec_error = ab8500_codec_UpdateCR34(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - - case AB8500_CODEC_SLOT7: - p_ab8500_codec_configuration->cr34_adotoslot7 = value; - - ab8500_codec_error = ab8500_codec_UpdateCR34(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - - default: - ab8500_codec_error = AB8500_CODEC_INVALID_PARAMETER; - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -PRIVATE t_ab8500_codec_error ab8500_codec_ADSlotAllocationSwitch2 - (IN t_ab8500_codec_slot ad_slot, - IN t_ab8500_codec_cr31_to_cr46_ad_data_allocation value) { - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - switch (ad_slot) { - case AB8500_CODEC_SLOT8: - p_ab8500_codec_configuration->cr35_adotoslot8 = value; - - ab8500_codec_error = ab8500_codec_UpdateCR35(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - - case AB8500_CODEC_SLOT9: - p_ab8500_codec_configuration->cr35_adotoslot9 = value; - - ab8500_codec_error = ab8500_codec_UpdateCR35(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - - case AB8500_CODEC_SLOT10: - p_ab8500_codec_configuration->cr36_adotoslot10 = value; - - ab8500_codec_error = ab8500_codec_UpdateCR36(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - - case AB8500_CODEC_SLOT11: - p_ab8500_codec_configuration->cr36_adotoslot11 = value; - - ab8500_codec_error = ab8500_codec_UpdateCR36(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - - case AB8500_CODEC_SLOT12: - p_ab8500_codec_configuration->cr37_adotoslot12 = value; - - ab8500_codec_error = ab8500_codec_UpdateCR37(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - - case AB8500_CODEC_SLOT13: - p_ab8500_codec_configuration->cr37_adotoslot13 = value; - - ab8500_codec_error = ab8500_codec_UpdateCR37(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - - case AB8500_CODEC_SLOT14: - p_ab8500_codec_configuration->cr38_adotoslot14 = value; - - ab8500_codec_error = ab8500_codec_UpdateCR38(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - - case AB8500_CODEC_SLOT15: - p_ab8500_codec_configuration->cr38_adotoslot15 = value; - - ab8500_codec_error = ab8500_codec_UpdateCR38(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - - default: - ab8500_codec_error = AB8500_CODEC_INVALID_PARAMETER; - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -PRIVATE t_ab8500_codec_error ab8500_codec_ADSlotAllocationSwitch3 - (IN t_ab8500_codec_slot ad_slot, - IN t_ab8500_codec_cr31_to_cr46_ad_data_allocation value) { - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - switch (ad_slot) { - case AB8500_CODEC_SLOT16: - p_ab8500_codec_configuration->cr39_adotoslot16 = value; - - ab8500_codec_error = ab8500_codec_UpdateCR39(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - - case AB8500_CODEC_SLOT17: - p_ab8500_codec_configuration->cr39_adotoslot17 = value; - - ab8500_codec_error = ab8500_codec_UpdateCR39(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - - case AB8500_CODEC_SLOT18: - p_ab8500_codec_configuration->cr40_adotoslot18 = value; - - ab8500_codec_error = ab8500_codec_UpdateCR40(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - - case AB8500_CODEC_SLOT19: - p_ab8500_codec_configuration->cr40_adotoslot19 = value; - - ab8500_codec_error = ab8500_codec_UpdateCR40(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - - case AB8500_CODEC_SLOT20: - p_ab8500_codec_configuration->cr41_adotoslot20 = value; - - ab8500_codec_error = ab8500_codec_UpdateCR41(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - - case AB8500_CODEC_SLOT21: - p_ab8500_codec_configuration->cr41_adotoslot21 = value; - - ab8500_codec_error = ab8500_codec_UpdateCR41(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - - case AB8500_CODEC_SLOT22: - p_ab8500_codec_configuration->cr42_adotoslot22 = value; - - ab8500_codec_error = ab8500_codec_UpdateCR42(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - - case AB8500_CODEC_SLOT23: - p_ab8500_codec_configuration->cr42_adotoslot23 = value; - - ab8500_codec_error = ab8500_codec_UpdateCR42(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - - default: - ab8500_codec_error = AB8500_CODEC_INVALID_PARAMETER; - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -PRIVATE t_ab8500_codec_error ab8500_codec_ADSlotAllocationSwitch4 - (IN t_ab8500_codec_slot ad_slot, - IN t_ab8500_codec_cr31_to_cr46_ad_data_allocation value) { - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - switch (ad_slot) { - case AB8500_CODEC_SLOT24: - p_ab8500_codec_configuration->cr43_adotoslot24 = value; - - ab8500_codec_error = ab8500_codec_UpdateCR43(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - - case AB8500_CODEC_SLOT25: - p_ab8500_codec_configuration->cr43_adotoslot25 = value; - - ab8500_codec_error = ab8500_codec_UpdateCR43(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - - case AB8500_CODEC_SLOT26: - p_ab8500_codec_configuration->cr44_adotoslot26 = value; - - ab8500_codec_error = ab8500_codec_UpdateCR44(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - - case AB8500_CODEC_SLOT27: - p_ab8500_codec_configuration->cr44_adotoslot27 = value; - - ab8500_codec_error = ab8500_codec_UpdateCR44(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - - case AB8500_CODEC_SLOT28: - p_ab8500_codec_configuration->cr45_adotoslot28 = value; - - ab8500_codec_error = ab8500_codec_UpdateCR45(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - - case AB8500_CODEC_SLOT29: - p_ab8500_codec_configuration->cr45_adotoslot29 = value; - - ab8500_codec_error = ab8500_codec_UpdateCR45(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - - case AB8500_CODEC_SLOT30: - p_ab8500_codec_configuration->cr46_adotoslot30 = value; - - ab8500_codec_error = ab8500_codec_UpdateCR46(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - - case AB8500_CODEC_SLOT31: - p_ab8500_codec_configuration->cr46_adotoslot31 = value; - - ab8500_codec_error = ab8500_codec_UpdateCR46(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - - default: - ab8500_codec_error = AB8500_CODEC_INVALID_PARAMETER; - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -PRIVATE t_ab8500_codec_error ab8500_codec_SrcPowerControlSwitch1(IN - t_ab8500_codec_src - src_device, - t_ab8500_codec_src_state - state) -{ - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - switch (src_device) { - case AB8500_CODEC_SRC_LINEIN: - - if (AB8500_CODEC_SRC_STATE_ENABLE == state) { - p_ab8500_codec_configuration->cr5_enlinl = - AB8500_CODEC_CR5_ENLINL_ENABLED; - p_ab8500_codec_configuration->cr5_enlinr = - AB8500_CODEC_CR5_ENLINR_ENABLED; - p_ab8500_codec_configuration->cr5_mutlinl = - AB8500_CODEC_CR5_MUTLINL_DISABLED; - p_ab8500_codec_configuration->cr5_mutlinr = - AB8500_CODEC_CR5_MUTLINR_DISABLED; - - p_ab8500_codec_configuration->cr7_linrsel = - AB8500_CODEC_CR7_LINRSEL_LINR; - p_ab8500_codec_configuration->cr7_enadclinl = - AB8500_CODEC_CR7_ENADCLINL_ENABLED; - p_ab8500_codec_configuration->cr7_enadclinr = - AB8500_CODEC_CR7_ENADCLINR_ENABLED; - } else { - p_ab8500_codec_configuration->cr5_enlinl = - AB8500_CODEC_CR5_ENLINL_DISABLED; - p_ab8500_codec_configuration->cr5_enlinr = - AB8500_CODEC_CR5_ENLINR_DISABLED; - p_ab8500_codec_configuration->cr5_mutlinl = - AB8500_CODEC_CR5_MUTLINL_ENABLED; - p_ab8500_codec_configuration->cr5_mutlinr = - AB8500_CODEC_CR5_MUTLINR_ENABLED; - - p_ab8500_codec_configuration->cr7_linrsel = - AB8500_CODEC_CR7_LINRSEL_MIC2; - p_ab8500_codec_configuration->cr7_enadclinl = - AB8500_CODEC_CR7_ENADCLINL_DISABLED; - p_ab8500_codec_configuration->cr7_enadclinr = - AB8500_CODEC_CR7_ENADCLINR_DISABLED; - } - break; - - case AB8500_CODEC_SRC_MICROPHONE_1A: - - if (AB8500_CODEC_SRC_STATE_ENABLE == state) { - p_ab8500_codec_configuration->cr5_enmic1 = - AB8500_CODEC_CR5_ENMIC1_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic1 = - AB8500_CODEC_CR5_MUTMIC1_DISABLED; - - p_ab8500_codec_configuration->cr7_mic1sel = - AB8500_CODEC_CR7_MIC1SEL_MIC1A; - p_ab8500_codec_configuration->cr7_enadcmic = - AB8500_CODEC_CR7_ENADCMIC_ENABLED; - } else { - p_ab8500_codec_configuration->cr5_enmic1 = - AB8500_CODEC_CR5_ENMIC1_DISABLED; - p_ab8500_codec_configuration->cr5_mutmic1 = - AB8500_CODEC_CR5_MUTMIC1_ENABLED; - - p_ab8500_codec_configuration->cr7_enadcmic = - AB8500_CODEC_CR7_ENADCMIC_DISABLED; - } - break; - - case AB8500_CODEC_SRC_MICROPHONE_1B: - - if (AB8500_CODEC_SRC_STATE_ENABLE == state) { - p_ab8500_codec_configuration->cr5_enmic1 = - AB8500_CODEC_CR5_ENMIC1_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic1 = - AB8500_CODEC_CR5_MUTMIC1_DISABLED; - - p_ab8500_codec_configuration->cr7_mic1sel = - AB8500_CODEC_CR7_MIC1SEL_MIC1B; - p_ab8500_codec_configuration->cr7_enadcmic = - AB8500_CODEC_CR7_ENADCMIC_ENABLED; - } else { - p_ab8500_codec_configuration->cr5_enmic1 = - AB8500_CODEC_CR5_ENMIC1_DISABLED; - p_ab8500_codec_configuration->cr5_mutmic1 = - AB8500_CODEC_CR5_MUTMIC1_ENABLED; - - p_ab8500_codec_configuration->cr7_enadcmic = - AB8500_CODEC_CR7_ENADCMIC_DISABLED; - } - break; - - case AB8500_CODEC_SRC_MICROPHONE_2: - - if (AB8500_CODEC_SRC_STATE_ENABLE == state) { - p_ab8500_codec_configuration->cr5_enmic2 = - AB8500_CODEC_CR5_ENMIC2_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic2 = - AB8500_CODEC_CR5_MUTMIC2_DISABLED; - - p_ab8500_codec_configuration->cr7_linrsel = - AB8500_CODEC_CR7_LINRSEL_MIC2; - } else { - p_ab8500_codec_configuration->cr5_enmic2 = - AB8500_CODEC_CR5_ENMIC2_DISABLED; - p_ab8500_codec_configuration->cr5_mutmic2 = - AB8500_CODEC_CR5_MUTMIC2_ENABLED; - - p_ab8500_codec_configuration->cr7_linrsel = - AB8500_CODEC_CR7_LINRSEL_LINR; - } - break; - - case AB8500_CODEC_SRC_D_MICROPHONE_1: - - if (AB8500_CODEC_SRC_STATE_ENABLE == state) { - p_ab8500_codec_configuration->cr6_endmic1 = - AB8500_CODEC_CR6_ENDMIC1_ENABLED; - - p_ab8500_codec_configuration->cr63_ad1sel = - AB8500_CODEC_CR63_AD1SEL_DMIC1_SELECTED; - } else { - p_ab8500_codec_configuration->cr6_endmic1 = - AB8500_CODEC_CR6_ENDMIC1_DISABLED; - - p_ab8500_codec_configuration->cr63_ad1sel = - AB8500_CODEC_CR63_AD1SEL_LINLADL_SELECTED; - } - break; - - case AB8500_CODEC_SRC_D_MICROPHONE_2: - - if (AB8500_CODEC_SRC_STATE_ENABLE == state) { - p_ab8500_codec_configuration->cr6_endmic2 = - AB8500_CODEC_CR6_ENDMIC2_ENABLED; - - p_ab8500_codec_configuration->cr63_ad2sel = - AB8500_CODEC_CR63_AD2SEL_DMIC2_SELECTED; - } else { - p_ab8500_codec_configuration->cr6_endmic2 = - AB8500_CODEC_CR6_ENDMIC2_DISABLED; - - p_ab8500_codec_configuration->cr63_ad2sel = - AB8500_CODEC_CR63_AD2SEL_LINRADR_SELECTED; - } - break; - - default: - ab8500_codec_error = AB8500_CODEC_INVALID_PARAMETER; - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -PRIVATE t_ab8500_codec_error ab8500_codec_SrcPowerControlSwitch2(IN - t_ab8500_codec_src - src_device, - t_ab8500_codec_src_state - state) -{ - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - switch (src_device) { - case AB8500_CODEC_SRC_D_MICROPHONE_3: - - if (AB8500_CODEC_SRC_STATE_ENABLE == state) { - p_ab8500_codec_configuration->cr6_endmic3 = - AB8500_CODEC_CR6_ENDMIC3_ENABLED; - - p_ab8500_codec_configuration->cr63_ad3sel = - AB8500_CODEC_CR63_AD3SEL_DMIC3_SELECTED; - } else { - p_ab8500_codec_configuration->cr6_endmic3 = - AB8500_CODEC_CR6_ENDMIC3_DISABLED; - - p_ab8500_codec_configuration->cr63_ad3sel = - AB8500_CODEC_CR63_AD3SEL_ADMO_SELECTED; - } - break; - - case AB8500_CODEC_SRC_D_MICROPHONE_4: - - if (AB8500_CODEC_SRC_STATE_ENABLE == state) { - p_ab8500_codec_configuration->cr6_endmic4 = - AB8500_CODEC_CR6_ENDMIC4_ENABLED; - } else { - p_ab8500_codec_configuration->cr6_endmic4 = - AB8500_CODEC_CR6_ENDMIC4_DISABLED; - } - break; - - case AB8500_CODEC_SRC_D_MICROPHONE_5: - - if (AB8500_CODEC_SRC_STATE_ENABLE == state) { - p_ab8500_codec_configuration->cr6_endmic5 = - AB8500_CODEC_CR6_ENDMIC5_ENABLED; - - p_ab8500_codec_configuration->cr63_ad5sel = - AB8500_CODEC_CR63_AD5SEL_DMIC5_SELECTED; - } else { - p_ab8500_codec_configuration->cr6_endmic5 = - AB8500_CODEC_CR6_ENDMIC5_DISABLED; - - p_ab8500_codec_configuration->cr63_ad5sel = - AB8500_CODEC_CR63_AD5SEL_AMADR_SELECTED; - } - break; - - case AB8500_CODEC_SRC_D_MICROPHONE_6: - - if (AB8500_CODEC_SRC_STATE_ENABLE == state) { - p_ab8500_codec_configuration->cr6_endmic6 = - AB8500_CODEC_CR6_ENDMIC6_ENABLED; - - p_ab8500_codec_configuration->cr63_ad6sel = - AB8500_CODEC_CR63_AD6SEL_DMIC6_SELECTED; - } else { - p_ab8500_codec_configuration->cr6_endmic6 = - AB8500_CODEC_CR6_ENDMIC6_DISABLED; - - p_ab8500_codec_configuration->cr63_ad6sel = - AB8500_CODEC_CR63_AD6SEL_ADMO_SELECTED; - } - break; - - case AB8500_CODEC_SRC_ALL: - - if (AB8500_CODEC_SRC_STATE_ENABLE == state) { - p_ab8500_codec_configuration->cr5_enlinl = - AB8500_CODEC_CR5_ENLINL_ENABLED; - p_ab8500_codec_configuration->cr5_enlinr = - AB8500_CODEC_CR5_ENLINR_ENABLED; - p_ab8500_codec_configuration->cr5_enmic1 = - AB8500_CODEC_CR5_ENMIC1_ENABLED; - p_ab8500_codec_configuration->cr5_enmic2 = - AB8500_CODEC_CR5_ENMIC2_ENABLED; - p_ab8500_codec_configuration->cr6_endmic1 = - AB8500_CODEC_CR6_ENDMIC1_ENABLED; - p_ab8500_codec_configuration->cr6_endmic2 = - AB8500_CODEC_CR6_ENDMIC2_ENABLED; - p_ab8500_codec_configuration->cr6_endmic3 = - AB8500_CODEC_CR6_ENDMIC3_ENABLED; - p_ab8500_codec_configuration->cr6_endmic4 = - AB8500_CODEC_CR6_ENDMIC4_ENABLED; - p_ab8500_codec_configuration->cr6_endmic5 = - AB8500_CODEC_CR6_ENDMIC5_ENABLED; - p_ab8500_codec_configuration->cr6_endmic6 = - AB8500_CODEC_CR6_ENDMIC6_ENABLED; - p_ab8500_codec_configuration->cr7_enadcmic = - AB8500_CODEC_CR7_ENADCMIC_ENABLED; - - p_ab8500_codec_configuration->cr5_mutlinl = - AB8500_CODEC_CR5_MUTLINL_DISABLED; - p_ab8500_codec_configuration->cr5_mutlinr = - AB8500_CODEC_CR5_MUTLINR_DISABLED; - p_ab8500_codec_configuration->cr5_mutmic1 = - AB8500_CODEC_CR5_MUTMIC1_DISABLED; - p_ab8500_codec_configuration->cr5_mutmic2 = - AB8500_CODEC_CR5_MUTMIC2_DISABLED; - } else { - p_ab8500_codec_configuration->cr5_enlinl = - AB8500_CODEC_CR5_ENLINL_DISABLED; - p_ab8500_codec_configuration->cr5_enlinr = - AB8500_CODEC_CR5_ENLINR_DISABLED; - p_ab8500_codec_configuration->cr5_enmic1 = - AB8500_CODEC_CR5_ENMIC1_DISABLED; - p_ab8500_codec_configuration->cr5_enmic2 = - AB8500_CODEC_CR5_ENMIC2_DISABLED; - p_ab8500_codec_configuration->cr6_endmic1 = - AB8500_CODEC_CR6_ENDMIC1_DISABLED; - p_ab8500_codec_configuration->cr6_endmic2 = - AB8500_CODEC_CR6_ENDMIC2_DISABLED; - p_ab8500_codec_configuration->cr6_endmic3 = - AB8500_CODEC_CR6_ENDMIC3_DISABLED; - p_ab8500_codec_configuration->cr6_endmic4 = - AB8500_CODEC_CR6_ENDMIC4_DISABLED; - p_ab8500_codec_configuration->cr6_endmic5 = - AB8500_CODEC_CR6_ENDMIC5_DISABLED; - p_ab8500_codec_configuration->cr6_endmic6 = - AB8500_CODEC_CR6_ENDMIC6_DISABLED; - p_ab8500_codec_configuration->cr7_enadcmic = - AB8500_CODEC_CR7_ENADCMIC_DISABLED; - - p_ab8500_codec_configuration->cr5_mutlinl = - AB8500_CODEC_CR5_MUTLINL_ENABLED; - p_ab8500_codec_configuration->cr5_mutlinr = - AB8500_CODEC_CR5_MUTLINR_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic1 = - AB8500_CODEC_CR5_MUTMIC1_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic2 = - AB8500_CODEC_CR5_MUTMIC2_ENABLED; - } - break; - case AB8500_CODEC_SRC_FM_RX: - break; - - default: - ab8500_codec_error = AB8500_CODEC_INVALID_PARAMETER; - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -PRIVATE t_ab8500_codec_error ab8500_codec_SetModeAndDirectionUpdateCR(void) -{ - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - t_ab8500_codec_cr0_powerup ab8500_codec_cr0_powerup; - - ab8500_codec_cr0_powerup = p_ab8500_codec_configuration->cr0_powerup; - - p_ab8500_codec_configuration->cr0_powerup = - AB8500_CODEC_CR0_POWERUP_OFF; - - ab8500_codec_error = ab8500_codec_UpdateCR0(); - if (AB8500_CODEC_OK != ab8500_codec_error) { - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR2(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR3(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR26(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR28(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR30(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR63(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - p_ab8500_codec_configuration->cr0_powerup = ab8500_codec_cr0_powerup; - - ab8500_codec_error = ab8500_codec_UpdateCR0(); - - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -PRIVATE t_ab8500_codec_error ab8500_codec_SetSrcVolumeUpdateCR(void) -{ - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - - ab8500_codec_error = ab8500_codec_UpdateCR20(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR21(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR22(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR23(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR65(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR66(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR67(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR68(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR69(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR70(); - - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -PRIVATE t_ab8500_codec_error ab8500_codec_SetDestVolumeUpdateCR(void) -{ - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - - ab8500_codec_error = ab8500_codec_UpdateCR16(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR17(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR18(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR19(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR22(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR23(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR71(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR72(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR73(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR74(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR75(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR76(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR79(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR80(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR101(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR102(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR103(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - return (ab8500_codec_error); -} - -PRIVATE t_ab8500_codec_error ab8500_codec_ProgramDirectionIN(void) -{ - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - switch (g_ab8500_codec_system_context.ab8500_codec_src) { - case AB8500_CODEC_SRC_LINEIN: - p_ab8500_codec_configuration->cr5_enlinl = - AB8500_CODEC_CR5_ENLINL_ENABLED; - p_ab8500_codec_configuration->cr5_enlinr = - AB8500_CODEC_CR5_ENLINR_ENABLED; - p_ab8500_codec_configuration->cr6_endmic1 = - AB8500_CODEC_CR6_ENDMIC1_DISABLED; - p_ab8500_codec_configuration->cr6_endmic2 = - AB8500_CODEC_CR6_ENDMIC2_DISABLED; - p_ab8500_codec_configuration->cr6_endmic3 = - AB8500_CODEC_CR6_ENDMIC3_DISABLED; - p_ab8500_codec_configuration->cr6_endmic4 = - AB8500_CODEC_CR6_ENDMIC4_DISABLED; - p_ab8500_codec_configuration->cr6_endmic5 = - AB8500_CODEC_CR6_ENDMIC5_DISABLED; - p_ab8500_codec_configuration->cr6_endmic6 = - AB8500_CODEC_CR6_ENDMIC6_DISABLED; - p_ab8500_codec_configuration->cr5_enmic1 = - AB8500_CODEC_CR5_ENMIC1_DISABLED; - p_ab8500_codec_configuration->cr5_enmic2 = - AB8500_CODEC_CR5_ENMIC2_DISABLED; - - p_ab8500_codec_configuration->cr7_linrsel = - AB8500_CODEC_CR7_LINRSEL_LINR; - p_ab8500_codec_configuration->cr7_enadclinl = - AB8500_CODEC_CR7_ENADCLINL_ENABLED; - p_ab8500_codec_configuration->cr7_enadclinr = - AB8500_CODEC_CR7_ENADCLINR_ENABLED; - - p_ab8500_codec_configuration->cr5_mutlinl = - AB8500_CODEC_CR5_MUTLINL_DISABLED; - p_ab8500_codec_configuration->cr5_mutlinr = - AB8500_CODEC_CR5_MUTLINR_DISABLED; - p_ab8500_codec_configuration->cr5_mutmic1 = - AB8500_CODEC_CR5_MUTMIC1_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic2 = - AB8500_CODEC_CR5_MUTMIC2_ENABLED; - - break; - - case AB8500_CODEC_SRC_MICROPHONE_1A: - p_ab8500_codec_configuration->cr5_enlinl = - AB8500_CODEC_CR5_ENLINL_DISABLED; - p_ab8500_codec_configuration->cr5_enlinr = - AB8500_CODEC_CR5_ENLINR_DISABLED; - p_ab8500_codec_configuration->cr6_endmic1 = - AB8500_CODEC_CR6_ENDMIC1_DISABLED; - p_ab8500_codec_configuration->cr6_endmic2 = - AB8500_CODEC_CR6_ENDMIC2_DISABLED; - p_ab8500_codec_configuration->cr6_endmic3 = - AB8500_CODEC_CR6_ENDMIC3_DISABLED; - p_ab8500_codec_configuration->cr6_endmic4 = - AB8500_CODEC_CR6_ENDMIC4_DISABLED; - p_ab8500_codec_configuration->cr6_endmic5 = - AB8500_CODEC_CR6_ENDMIC5_DISABLED; - p_ab8500_codec_configuration->cr6_endmic6 = - AB8500_CODEC_CR6_ENDMIC6_DISABLED; - - p_ab8500_codec_configuration->cr5_enmic1 = - AB8500_CODEC_CR5_ENMIC1_ENABLED; - p_ab8500_codec_configuration->cr5_enmic2 = - AB8500_CODEC_CR5_ENMIC2_DISABLED; - - p_ab8500_codec_configuration->cr7_mic1sel = - AB8500_CODEC_CR7_MIC1SEL_MIC1A; - p_ab8500_codec_configuration->cr7_enadcmic = - AB8500_CODEC_CR7_ENADCMIC_ENABLED; - p_ab8500_codec_configuration->cr7_enadclinl = - AB8500_CODEC_CR7_ENADCLINL_DISABLED; - p_ab8500_codec_configuration->cr7_enadclinr = - AB8500_CODEC_CR7_ENADCLINR_DISABLED; - - p_ab8500_codec_configuration->cr5_mutlinl = - AB8500_CODEC_CR5_MUTLINL_ENABLED; - p_ab8500_codec_configuration->cr5_mutlinr = - AB8500_CODEC_CR5_MUTLINR_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic1 = - AB8500_CODEC_CR5_MUTMIC1_DISABLED; - p_ab8500_codec_configuration->cr5_mutmic2 = - AB8500_CODEC_CR5_MUTMIC2_ENABLED; - - break; - - case AB8500_CODEC_SRC_MICROPHONE_1B: - p_ab8500_codec_configuration->cr5_enlinl = - AB8500_CODEC_CR5_ENLINL_DISABLED; - p_ab8500_codec_configuration->cr5_enlinr = - AB8500_CODEC_CR5_ENLINR_DISABLED; - p_ab8500_codec_configuration->cr6_endmic1 = - AB8500_CODEC_CR6_ENDMIC1_DISABLED; - p_ab8500_codec_configuration->cr6_endmic2 = - AB8500_CODEC_CR6_ENDMIC2_DISABLED; - p_ab8500_codec_configuration->cr6_endmic3 = - AB8500_CODEC_CR6_ENDMIC3_DISABLED; - p_ab8500_codec_configuration->cr6_endmic4 = - AB8500_CODEC_CR6_ENDMIC4_DISABLED; - p_ab8500_codec_configuration->cr6_endmic5 = - AB8500_CODEC_CR6_ENDMIC5_DISABLED; - p_ab8500_codec_configuration->cr6_endmic6 = - AB8500_CODEC_CR6_ENDMIC6_DISABLED; - - p_ab8500_codec_configuration->cr5_enmic1 = - AB8500_CODEC_CR5_ENMIC1_ENABLED; - p_ab8500_codec_configuration->cr5_enmic2 = - AB8500_CODEC_CR5_ENMIC2_DISABLED; - - p_ab8500_codec_configuration->cr7_mic1sel = - AB8500_CODEC_CR7_MIC1SEL_MIC1B; - p_ab8500_codec_configuration->cr7_enadcmic = - AB8500_CODEC_CR7_ENADCMIC_ENABLED; - p_ab8500_codec_configuration->cr7_enadclinl = - AB8500_CODEC_CR7_ENADCLINL_DISABLED; - p_ab8500_codec_configuration->cr7_enadclinr = - AB8500_CODEC_CR7_ENADCLINR_DISABLED; - - p_ab8500_codec_configuration->cr5_mutlinl = - AB8500_CODEC_CR5_MUTLINL_ENABLED; - p_ab8500_codec_configuration->cr5_mutlinr = - AB8500_CODEC_CR5_MUTLINR_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic1 = - AB8500_CODEC_CR5_MUTMIC1_DISABLED; - p_ab8500_codec_configuration->cr5_mutmic2 = - AB8500_CODEC_CR5_MUTMIC2_ENABLED; - - break; - - case AB8500_CODEC_SRC_MICROPHONE_2: - p_ab8500_codec_configuration->cr5_enlinl = - AB8500_CODEC_CR5_ENLINL_DISABLED; - p_ab8500_codec_configuration->cr5_enlinr = - AB8500_CODEC_CR5_ENLINR_DISABLED; - p_ab8500_codec_configuration->cr6_endmic1 = - AB8500_CODEC_CR6_ENDMIC1_DISABLED; - p_ab8500_codec_configuration->cr6_endmic2 = - AB8500_CODEC_CR6_ENDMIC2_DISABLED; - p_ab8500_codec_configuration->cr6_endmic3 = - AB8500_CODEC_CR6_ENDMIC3_DISABLED; - p_ab8500_codec_configuration->cr6_endmic4 = - AB8500_CODEC_CR6_ENDMIC4_DISABLED; - p_ab8500_codec_configuration->cr6_endmic5 = - AB8500_CODEC_CR6_ENDMIC5_DISABLED; - p_ab8500_codec_configuration->cr6_endmic6 = - AB8500_CODEC_CR6_ENDMIC6_DISABLED; - p_ab8500_codec_configuration->cr5_enmic1 = - AB8500_CODEC_CR5_ENMIC1_DISABLED; - p_ab8500_codec_configuration->cr5_enmic2 = - AB8500_CODEC_CR5_ENMIC2_ENABLED; - - p_ab8500_codec_configuration->cr7_enadcmic = - AB8500_CODEC_CR7_ENADCMIC_ENABLED; - p_ab8500_codec_configuration->cr7_linrsel = - AB8500_CODEC_CR7_LINRSEL_MIC2; - p_ab8500_codec_configuration->cr7_enadclinl = - AB8500_CODEC_CR7_ENADCLINL_DISABLED; - p_ab8500_codec_configuration->cr7_enadclinr = - AB8500_CODEC_CR7_ENADCLINR_DISABLED; - - p_ab8500_codec_configuration->cr5_mutlinl = - AB8500_CODEC_CR5_MUTLINL_ENABLED; - p_ab8500_codec_configuration->cr5_mutlinr = - AB8500_CODEC_CR5_MUTLINR_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic1 = - AB8500_CODEC_CR5_MUTMIC1_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic2 = - AB8500_CODEC_CR5_MUTMIC2_DISABLED; - - break; - - case AB8500_CODEC_SRC_D_MICROPHONE_1: - p_ab8500_codec_configuration->cr5_enlinl = - AB8500_CODEC_CR5_ENLINL_DISABLED; - p_ab8500_codec_configuration->cr5_enlinr = - AB8500_CODEC_CR5_ENLINR_DISABLED; - p_ab8500_codec_configuration->cr6_endmic1 = - AB8500_CODEC_CR6_ENDMIC1_ENABLED; - p_ab8500_codec_configuration->cr6_endmic2 = - AB8500_CODEC_CR6_ENDMIC2_DISABLED; - p_ab8500_codec_configuration->cr6_endmic3 = - AB8500_CODEC_CR6_ENDMIC3_DISABLED; - p_ab8500_codec_configuration->cr6_endmic4 = - AB8500_CODEC_CR6_ENDMIC4_DISABLED; - p_ab8500_codec_configuration->cr6_endmic5 = - AB8500_CODEC_CR6_ENDMIC5_DISABLED; - p_ab8500_codec_configuration->cr6_endmic6 = - AB8500_CODEC_CR6_ENDMIC6_DISABLED; - p_ab8500_codec_configuration->cr5_enmic1 = - AB8500_CODEC_CR5_ENMIC1_DISABLED; - p_ab8500_codec_configuration->cr5_enmic2 = - AB8500_CODEC_CR5_ENMIC2_DISABLED; - - p_ab8500_codec_configuration->cr7_enadclinl = - AB8500_CODEC_CR7_ENADCLINL_DISABLED; - p_ab8500_codec_configuration->cr7_enadclinr = - AB8500_CODEC_CR7_ENADCLINR_DISABLED; - - p_ab8500_codec_configuration->cr63_ad1sel = - AB8500_CODEC_CR63_AD1SEL_DMIC1_SELECTED; - - p_ab8500_codec_configuration->cr5_mutlinl = - AB8500_CODEC_CR5_MUTLINL_ENABLED; - p_ab8500_codec_configuration->cr5_mutlinr = - AB8500_CODEC_CR5_MUTLINR_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic1 = - AB8500_CODEC_CR5_MUTMIC1_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic2 = - AB8500_CODEC_CR5_MUTMIC2_ENABLED; - - break; - - case AB8500_CODEC_SRC_D_MICROPHONE_2: - p_ab8500_codec_configuration->cr5_enlinl = - AB8500_CODEC_CR5_ENLINL_DISABLED; - p_ab8500_codec_configuration->cr5_enlinr = - AB8500_CODEC_CR5_ENLINR_DISABLED; - p_ab8500_codec_configuration->cr6_endmic1 = - AB8500_CODEC_CR6_ENDMIC1_DISABLED; - p_ab8500_codec_configuration->cr6_endmic2 = - AB8500_CODEC_CR6_ENDMIC2_ENABLED; - p_ab8500_codec_configuration->cr6_endmic3 = - AB8500_CODEC_CR6_ENDMIC3_DISABLED; - p_ab8500_codec_configuration->cr6_endmic4 = - AB8500_CODEC_CR6_ENDMIC4_DISABLED; - p_ab8500_codec_configuration->cr6_endmic5 = - AB8500_CODEC_CR6_ENDMIC5_DISABLED; - p_ab8500_codec_configuration->cr6_endmic6 = - AB8500_CODEC_CR6_ENDMIC6_DISABLED; - p_ab8500_codec_configuration->cr5_enmic1 = - AB8500_CODEC_CR5_ENMIC1_DISABLED; - p_ab8500_codec_configuration->cr5_enmic2 = - AB8500_CODEC_CR5_ENMIC2_DISABLED; - - p_ab8500_codec_configuration->cr7_enadclinl = - AB8500_CODEC_CR7_ENADCLINL_DISABLED; - p_ab8500_codec_configuration->cr7_enadclinr = - AB8500_CODEC_CR7_ENADCLINR_DISABLED; - - p_ab8500_codec_configuration->cr63_ad2sel = - AB8500_CODEC_CR63_AD2SEL_DMIC2_SELECTED; - - p_ab8500_codec_configuration->cr5_mutlinl = - AB8500_CODEC_CR5_MUTLINL_ENABLED; - p_ab8500_codec_configuration->cr5_mutlinr = - AB8500_CODEC_CR5_MUTLINR_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic1 = - AB8500_CODEC_CR5_MUTMIC1_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic2 = - AB8500_CODEC_CR5_MUTMIC2_ENABLED; - - break; - - case AB8500_CODEC_SRC_D_MICROPHONE_3: - p_ab8500_codec_configuration->cr5_enlinl = - AB8500_CODEC_CR5_ENLINL_DISABLED; - p_ab8500_codec_configuration->cr5_enlinr = - AB8500_CODEC_CR5_ENLINR_DISABLED; - p_ab8500_codec_configuration->cr6_endmic1 = - AB8500_CODEC_CR6_ENDMIC1_DISABLED; - p_ab8500_codec_configuration->cr6_endmic2 = - AB8500_CODEC_CR6_ENDMIC2_DISABLED; - p_ab8500_codec_configuration->cr6_endmic3 = - AB8500_CODEC_CR6_ENDMIC3_ENABLED; - p_ab8500_codec_configuration->cr6_endmic4 = - AB8500_CODEC_CR6_ENDMIC4_DISABLED; - p_ab8500_codec_configuration->cr6_endmic5 = - AB8500_CODEC_CR6_ENDMIC5_DISABLED; - p_ab8500_codec_configuration->cr6_endmic6 = - AB8500_CODEC_CR6_ENDMIC6_DISABLED; - p_ab8500_codec_configuration->cr5_enmic1 = - AB8500_CODEC_CR5_ENMIC1_DISABLED; - p_ab8500_codec_configuration->cr5_enmic2 = - AB8500_CODEC_CR5_ENMIC2_DISABLED; - - p_ab8500_codec_configuration->cr7_enadclinl = - AB8500_CODEC_CR7_ENADCLINL_DISABLED; - p_ab8500_codec_configuration->cr7_enadclinr = - AB8500_CODEC_CR7_ENADCLINR_DISABLED; - - p_ab8500_codec_configuration->cr63_ad3sel = - AB8500_CODEC_CR63_AD3SEL_DMIC3_SELECTED; - - p_ab8500_codec_configuration->cr5_mutlinl = - AB8500_CODEC_CR5_MUTLINL_ENABLED; - p_ab8500_codec_configuration->cr5_mutlinr = - AB8500_CODEC_CR5_MUTLINR_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic1 = - AB8500_CODEC_CR5_MUTMIC1_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic2 = - AB8500_CODEC_CR5_MUTMIC2_ENABLED; - - break; - - case AB8500_CODEC_SRC_D_MICROPHONE_4: - p_ab8500_codec_configuration->cr5_enlinl = - AB8500_CODEC_CR5_ENLINL_DISABLED; - p_ab8500_codec_configuration->cr5_enlinr = - AB8500_CODEC_CR5_ENLINR_DISABLED; - p_ab8500_codec_configuration->cr6_endmic1 = - AB8500_CODEC_CR6_ENDMIC1_DISABLED; - p_ab8500_codec_configuration->cr6_endmic2 = - AB8500_CODEC_CR6_ENDMIC2_DISABLED; - p_ab8500_codec_configuration->cr6_endmic3 = - AB8500_CODEC_CR6_ENDMIC3_DISABLED; - p_ab8500_codec_configuration->cr6_endmic4 = - AB8500_CODEC_CR6_ENDMIC4_ENABLED; - p_ab8500_codec_configuration->cr6_endmic5 = - AB8500_CODEC_CR6_ENDMIC5_DISABLED; - p_ab8500_codec_configuration->cr6_endmic6 = - AB8500_CODEC_CR6_ENDMIC6_DISABLED; - p_ab8500_codec_configuration->cr5_enmic1 = - AB8500_CODEC_CR5_ENMIC1_DISABLED; - p_ab8500_codec_configuration->cr5_enmic2 = - AB8500_CODEC_CR5_ENMIC2_DISABLED; - - p_ab8500_codec_configuration->cr7_enadclinl = - AB8500_CODEC_CR7_ENADCLINL_DISABLED; - p_ab8500_codec_configuration->cr7_enadclinr = - AB8500_CODEC_CR7_ENADCLINR_DISABLED; - - p_ab8500_codec_configuration->cr5_mutlinl = - AB8500_CODEC_CR5_MUTLINL_ENABLED; - p_ab8500_codec_configuration->cr5_mutlinr = - AB8500_CODEC_CR5_MUTLINR_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic1 = - AB8500_CODEC_CR5_MUTMIC1_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic2 = - AB8500_CODEC_CR5_MUTMIC2_ENABLED; - - break; - - case AB8500_CODEC_SRC_D_MICROPHONE_5: - p_ab8500_codec_configuration->cr5_enlinl = - AB8500_CODEC_CR5_ENLINL_DISABLED; - p_ab8500_codec_configuration->cr5_enlinr = - AB8500_CODEC_CR5_ENLINR_DISABLED; - p_ab8500_codec_configuration->cr6_endmic1 = - AB8500_CODEC_CR6_ENDMIC1_DISABLED; - p_ab8500_codec_configuration->cr6_endmic2 = - AB8500_CODEC_CR6_ENDMIC2_DISABLED; - p_ab8500_codec_configuration->cr6_endmic3 = - AB8500_CODEC_CR6_ENDMIC3_DISABLED; - p_ab8500_codec_configuration->cr6_endmic4 = - AB8500_CODEC_CR6_ENDMIC4_DISABLED; - p_ab8500_codec_configuration->cr6_endmic5 = - AB8500_CODEC_CR6_ENDMIC5_ENABLED; - p_ab8500_codec_configuration->cr6_endmic6 = - AB8500_CODEC_CR6_ENDMIC6_DISABLED; - p_ab8500_codec_configuration->cr5_enmic1 = - AB8500_CODEC_CR5_ENMIC1_DISABLED; - p_ab8500_codec_configuration->cr5_enmic2 = - AB8500_CODEC_CR5_ENMIC2_DISABLED; - - p_ab8500_codec_configuration->cr7_enadclinl = - AB8500_CODEC_CR7_ENADCLINL_DISABLED; - p_ab8500_codec_configuration->cr7_enadclinr = - AB8500_CODEC_CR7_ENADCLINR_DISABLED; - - p_ab8500_codec_configuration->cr63_ad5sel = - AB8500_CODEC_CR63_AD5SEL_DMIC5_SELECTED; - - p_ab8500_codec_configuration->cr5_mutlinl = - AB8500_CODEC_CR5_MUTLINL_ENABLED; - p_ab8500_codec_configuration->cr5_mutlinr = - AB8500_CODEC_CR5_MUTLINR_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic1 = - AB8500_CODEC_CR5_MUTMIC1_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic2 = - AB8500_CODEC_CR5_MUTMIC2_ENABLED; - - break; - - case AB8500_CODEC_SRC_D_MICROPHONE_6: - p_ab8500_codec_configuration->cr5_enlinl = - AB8500_CODEC_CR5_ENLINL_DISABLED; - p_ab8500_codec_configuration->cr5_enlinr = - AB8500_CODEC_CR5_ENLINR_DISABLED; - p_ab8500_codec_configuration->cr6_endmic1 = - AB8500_CODEC_CR6_ENDMIC1_DISABLED; - p_ab8500_codec_configuration->cr6_endmic2 = - AB8500_CODEC_CR6_ENDMIC2_DISABLED; - p_ab8500_codec_configuration->cr6_endmic3 = - AB8500_CODEC_CR6_ENDMIC3_DISABLED; - p_ab8500_codec_configuration->cr6_endmic4 = - AB8500_CODEC_CR6_ENDMIC4_DISABLED; - p_ab8500_codec_configuration->cr6_endmic5 = - AB8500_CODEC_CR6_ENDMIC5_DISABLED; - p_ab8500_codec_configuration->cr6_endmic6 = - AB8500_CODEC_CR6_ENDMIC6_ENABLED; - p_ab8500_codec_configuration->cr5_enmic1 = - AB8500_CODEC_CR5_ENMIC1_DISABLED; - p_ab8500_codec_configuration->cr5_enmic2 = - AB8500_CODEC_CR5_ENMIC2_DISABLED; - - p_ab8500_codec_configuration->cr7_enadclinl = - AB8500_CODEC_CR7_ENADCLINL_DISABLED; - p_ab8500_codec_configuration->cr7_enadclinr = - AB8500_CODEC_CR7_ENADCLINR_DISABLED; - - p_ab8500_codec_configuration->cr63_ad6sel = - AB8500_CODEC_CR63_AD6SEL_DMIC6_SELECTED; - - p_ab8500_codec_configuration->cr5_mutlinl = - AB8500_CODEC_CR5_MUTLINL_ENABLED; - p_ab8500_codec_configuration->cr5_mutlinr = - AB8500_CODEC_CR5_MUTLINR_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic1 = - AB8500_CODEC_CR5_MUTMIC1_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic2 = - AB8500_CODEC_CR5_MUTMIC2_ENABLED; - - break; - - case AB8500_CODEC_SRC_ALL: - p_ab8500_codec_configuration->cr5_enlinl = - AB8500_CODEC_CR5_ENLINL_ENABLED; - p_ab8500_codec_configuration->cr5_enlinr = - AB8500_CODEC_CR5_ENLINR_ENABLED; - p_ab8500_codec_configuration->cr5_enmic1 = - AB8500_CODEC_CR5_ENMIC1_ENABLED; - p_ab8500_codec_configuration->cr5_enmic2 = - AB8500_CODEC_CR5_ENMIC2_ENABLED; - p_ab8500_codec_configuration->cr6_endmic1 = - AB8500_CODEC_CR6_ENDMIC1_ENABLED; - p_ab8500_codec_configuration->cr6_endmic2 = - AB8500_CODEC_CR6_ENDMIC2_ENABLED; - p_ab8500_codec_configuration->cr6_endmic3 = - AB8500_CODEC_CR6_ENDMIC3_ENABLED; - p_ab8500_codec_configuration->cr6_endmic4 = - AB8500_CODEC_CR6_ENDMIC4_ENABLED; - p_ab8500_codec_configuration->cr6_endmic5 = - AB8500_CODEC_CR6_ENDMIC5_ENABLED; - p_ab8500_codec_configuration->cr6_endmic6 = - AB8500_CODEC_CR6_ENDMIC6_ENABLED; - p_ab8500_codec_configuration->cr7_enadcmic = - AB8500_CODEC_CR7_ENADCMIC_ENABLED; - p_ab8500_codec_configuration->cr7_enadclinl = - AB8500_CODEC_CR7_ENADCLINL_ENABLED; - p_ab8500_codec_configuration->cr7_enadclinr = - AB8500_CODEC_CR7_ENADCLINR_ENABLED; - - p_ab8500_codec_configuration->cr5_mutlinl = - AB8500_CODEC_CR5_MUTLINL_DISABLED; - p_ab8500_codec_configuration->cr5_mutlinr = - AB8500_CODEC_CR5_MUTLINR_DISABLED; - p_ab8500_codec_configuration->cr5_mutmic1 = - AB8500_CODEC_CR5_MUTMIC1_DISABLED; - p_ab8500_codec_configuration->cr5_mutmic2 = - AB8500_CODEC_CR5_MUTMIC2_DISABLED; - - break; - - default: - ab8500_codec_error = AB8500_CODEC_INVALID_PARAMETER; - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -PRIVATE t_ab8500_codec_error ab8500_codec_ProgramDirectionOUT(void) -{ - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - t_ab8500_codec_configuration *p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - - switch (g_ab8500_codec_system_context.ab8500_codec_dest) { - case AB8500_CODEC_DEST_HEADSET: - p_ab8500_codec_configuration->cr7_endrvhsl = - AB8500_CODEC_CR7_ENDRVHSL_ENABLED; - p_ab8500_codec_configuration->cr7_endrvhsr = - AB8500_CODEC_CR7_ENDRVHSR_ENABLED; - - p_ab8500_codec_configuration->cr8_enear = - AB8500_CODEC_CR8_ENEAR_DISABLED; - p_ab8500_codec_configuration->cr8_enhsl = - AB8500_CODEC_CR8_ENHSL_ENABLED; - p_ab8500_codec_configuration->cr8_enhsr = - AB8500_CODEC_CR8_ENHSR_ENABLED; - p_ab8500_codec_configuration->cr8_enhfl = - AB8500_CODEC_CR8_ENHFL_DISABLED; - p_ab8500_codec_configuration->cr8_enhfr = - AB8500_CODEC_CR8_ENHFR_DISABLED; - p_ab8500_codec_configuration->cr8_envibl = - AB8500_CODEC_CR8_ENVIBL_DISABLED; - p_ab8500_codec_configuration->cr8_envibr = - AB8500_CODEC_CR8_ENVIBR_DISABLED; - - p_ab8500_codec_configuration->cr9_endachsl = - AB8500_CODEC_CR9_ENDACHSL_ENABLED; - p_ab8500_codec_configuration->cr9_endachsr = - AB8500_CODEC_CR9_ENDACHSR_ENABLED; - - p_ab8500_codec_configuration->cr10_muteear = - AB8500_CODEC_CR10_MUTEEAR_ENABLED; - p_ab8500_codec_configuration->cr10_mutehsl = - AB8500_CODEC_CR10_MUTEHSL_DISABLED; - p_ab8500_codec_configuration->cr10_mutehsr = - AB8500_CODEC_CR10_MUTEHSR_DISABLED; - p_ab8500_codec_configuration->cr10_mutehfl = - AB8500_CODEC_CR10_MUTEHFL_ENABLED; - p_ab8500_codec_configuration->cr10_mutehfr = - AB8500_CODEC_CR10_MUTEHFR_ENABLED; - p_ab8500_codec_configuration->cr10_mutevibl = - AB8500_CODEC_CR10_MUTEVIBL_ENABLED; - p_ab8500_codec_configuration->cr10_mutevibr = - AB8500_CODEC_CR10_MUTEVIBR_ENABLED; - - p_ab8500_codec_configuration->cr12_encphs = - AB8500_CODEC_CR12_ENCPHS_ENABLED; - - break; - - case AB8500_CODEC_DEST_EARPIECE: - p_ab8500_codec_configuration->cr8_enear = - AB8500_CODEC_CR8_ENEAR_ENABLED; - p_ab8500_codec_configuration->cr8_enhsl = - AB8500_CODEC_CR8_ENHSL_DISABLED; - p_ab8500_codec_configuration->cr8_enhsr = - AB8500_CODEC_CR8_ENHSR_DISABLED; - p_ab8500_codec_configuration->cr8_enhfl = - AB8500_CODEC_CR8_ENHFL_DISABLED; - p_ab8500_codec_configuration->cr8_enhfr = - AB8500_CODEC_CR8_ENHFR_DISABLED; - p_ab8500_codec_configuration->cr8_envibl = - AB8500_CODEC_CR8_ENVIBL_DISABLED; - p_ab8500_codec_configuration->cr8_envibr = - AB8500_CODEC_CR8_ENVIBR_DISABLED; - - p_ab8500_codec_configuration->cr9_endacear = - AB8500_CODEC_CR9_ENDACEAR_ENABLED; - - p_ab8500_codec_configuration->cr10_muteear = - AB8500_CODEC_CR10_MUTEEAR_DISABLED; - p_ab8500_codec_configuration->cr10_mutehsl = - AB8500_CODEC_CR10_MUTEHSL_ENABLED; - p_ab8500_codec_configuration->cr10_mutehsr = - AB8500_CODEC_CR10_MUTEHSR_ENABLED; - p_ab8500_codec_configuration->cr10_mutehfl = - AB8500_CODEC_CR10_MUTEHFL_ENABLED; - p_ab8500_codec_configuration->cr10_mutehfr = - AB8500_CODEC_CR10_MUTEHFR_ENABLED; - p_ab8500_codec_configuration->cr10_mutevibl = - AB8500_CODEC_CR10_MUTEVIBL_ENABLED; - p_ab8500_codec_configuration->cr10_mutevibr = - AB8500_CODEC_CR10_MUTEVIBR_ENABLED; - - break; - - case AB8500_CODEC_DEST_HANDSFREE: - p_ab8500_codec_configuration->cr8_enear = - AB8500_CODEC_CR8_ENEAR_DISABLED; - p_ab8500_codec_configuration->cr8_enhsl = - AB8500_CODEC_CR8_ENHSL_DISABLED; - p_ab8500_codec_configuration->cr8_enhsr = - AB8500_CODEC_CR8_ENHSR_DISABLED; - p_ab8500_codec_configuration->cr8_enhfl = - AB8500_CODEC_CR8_ENHFL_ENABLED; - p_ab8500_codec_configuration->cr8_enhfr = - AB8500_CODEC_CR8_ENHFR_ENABLED; - p_ab8500_codec_configuration->cr8_envibl = - AB8500_CODEC_CR8_ENVIBL_DISABLED; - p_ab8500_codec_configuration->cr8_envibr = - AB8500_CODEC_CR8_ENVIBR_DISABLED; - - p_ab8500_codec_configuration->cr9_endachfl = - AB8500_CODEC_CR9_ENDACHFL_ENABLED; - p_ab8500_codec_configuration->cr9_endachfr = - AB8500_CODEC_CR9_ENDACHFR_ENABLED; - - p_ab8500_codec_configuration->cr10_muteear = - AB8500_CODEC_CR10_MUTEEAR_ENABLED; - p_ab8500_codec_configuration->cr10_mutehsl = - AB8500_CODEC_CR10_MUTEHSL_ENABLED; - p_ab8500_codec_configuration->cr10_mutehsr = - AB8500_CODEC_CR10_MUTEHSR_ENABLED; - p_ab8500_codec_configuration->cr10_mutehfl = - AB8500_CODEC_CR10_MUTEHFL_DISABLED; - p_ab8500_codec_configuration->cr10_mutehfr = - AB8500_CODEC_CR10_MUTEHFR_DISABLED; - p_ab8500_codec_configuration->cr10_mutevibl = - AB8500_CODEC_CR10_MUTEVIBL_ENABLED; - p_ab8500_codec_configuration->cr10_mutevibr = - AB8500_CODEC_CR10_MUTEVIBR_ENABLED; - - break; - - case AB8500_CODEC_DEST_VIBRATOR_L: - p_ab8500_codec_configuration->cr8_enear = - AB8500_CODEC_CR8_ENEAR_DISABLED; - p_ab8500_codec_configuration->cr8_enhsl = - AB8500_CODEC_CR8_ENHSL_DISABLED; - p_ab8500_codec_configuration->cr8_enhsr = - AB8500_CODEC_CR8_ENHSR_DISABLED; - p_ab8500_codec_configuration->cr8_enhfl = - AB8500_CODEC_CR8_ENHFL_DISABLED; - p_ab8500_codec_configuration->cr8_enhfr = - AB8500_CODEC_CR8_ENHFR_DISABLED; - p_ab8500_codec_configuration->cr8_envibl = - AB8500_CODEC_CR8_ENVIBL_ENABLED; - p_ab8500_codec_configuration->cr8_envibr = - AB8500_CODEC_CR8_ENVIBR_DISABLED; - - p_ab8500_codec_configuration->cr9_endacvibl = - AB8500_CODEC_CR9_ENDACVIBL_ENABLED; - - p_ab8500_codec_configuration->cr10_muteear = - AB8500_CODEC_CR10_MUTEEAR_ENABLED; - p_ab8500_codec_configuration->cr10_mutehsl = - AB8500_CODEC_CR10_MUTEHSL_ENABLED; - p_ab8500_codec_configuration->cr10_mutehsr = - AB8500_CODEC_CR10_MUTEHSR_ENABLED; - p_ab8500_codec_configuration->cr10_mutehfl = - AB8500_CODEC_CR10_MUTEHFL_ENABLED; - p_ab8500_codec_configuration->cr10_mutehfr = - AB8500_CODEC_CR10_MUTEHFR_ENABLED; - p_ab8500_codec_configuration->cr10_mutevibl = - AB8500_CODEC_CR10_MUTEVIBL_DISABLED; - p_ab8500_codec_configuration->cr10_mutevibr = - AB8500_CODEC_CR10_MUTEVIBR_ENABLED; - - p_ab8500_codec_configuration->cr15_pwmtovibl = - AB8500_CODEC_CR15_PWMTOVIBL_PWM; - p_ab8500_codec_configuration->cr15_pwmlctrl = - AB8500_CODEC_CR15_PWMLCTRL_PWMNPLDUTYCYCLE; - p_ab8500_codec_configuration->cr15_pwmnlctrl = - AB8500_CODEC_CR15_PWMNLCTRL_PWMNLDUTYCYCLE; - p_ab8500_codec_configuration->cr15_pwmplctrl = - AB8500_CODEC_CR15_PWMPLCTRL_PWMPLDUTYCYCLE; - - break; - - case AB8500_CODEC_DEST_VIBRATOR_R: - p_ab8500_codec_configuration->cr8_enear = - AB8500_CODEC_CR8_ENEAR_DISABLED; - p_ab8500_codec_configuration->cr8_enhsl = - AB8500_CODEC_CR8_ENHSL_DISABLED; - p_ab8500_codec_configuration->cr8_enhsr = - AB8500_CODEC_CR8_ENHSR_DISABLED; - p_ab8500_codec_configuration->cr8_enhfl = - AB8500_CODEC_CR8_ENHFL_DISABLED; - p_ab8500_codec_configuration->cr8_enhfr = - AB8500_CODEC_CR8_ENHFR_DISABLED; - p_ab8500_codec_configuration->cr8_envibl = - AB8500_CODEC_CR8_ENVIBL_DISABLED; - p_ab8500_codec_configuration->cr8_envibr = - AB8500_CODEC_CR8_ENVIBR_ENABLED; - - p_ab8500_codec_configuration->cr9_endacvibr = - AB8500_CODEC_CR9_ENDACVIBR_ENABLED; - - p_ab8500_codec_configuration->cr10_muteear = - AB8500_CODEC_CR10_MUTEEAR_ENABLED; - p_ab8500_codec_configuration->cr10_mutehsl = - AB8500_CODEC_CR10_MUTEHSL_ENABLED; - p_ab8500_codec_configuration->cr10_mutehsr = - AB8500_CODEC_CR10_MUTEHSR_ENABLED; - p_ab8500_codec_configuration->cr10_mutehfl = - AB8500_CODEC_CR10_MUTEHFL_ENABLED; - p_ab8500_codec_configuration->cr10_mutehfr = - AB8500_CODEC_CR10_MUTEHFR_ENABLED; - p_ab8500_codec_configuration->cr10_mutevibl = - AB8500_CODEC_CR10_MUTEVIBL_ENABLED; - p_ab8500_codec_configuration->cr10_mutevibr = - AB8500_CODEC_CR10_MUTEVIBR_DISABLED; - - p_ab8500_codec_configuration->cr15_pwmtovibr = - AB8500_CODEC_CR15_PWMTOVIBR_PWM; - p_ab8500_codec_configuration->cr15_pwmrctrl = - AB8500_CODEC_CR15_PWMRCTRL_PWMNPRDUTYCYCLE; - p_ab8500_codec_configuration->cr15_pwmnrctrl = - AB8500_CODEC_CR15_PWMNRCTRL_PWMNRDUTYCYCLE; - p_ab8500_codec_configuration->cr15_pwmprctrl = - AB8500_CODEC_CR15_PWMPRCTRL_PWMPRDUTYCYCLE; - - break; - - case AB8500_CODEC_DEST_ALL: - p_ab8500_codec_configuration->cr8_enhsl = - AB8500_CODEC_CR8_ENHSL_ENABLED; - p_ab8500_codec_configuration->cr8_enhsr = - AB8500_CODEC_CR8_ENHSR_ENABLED; - p_ab8500_codec_configuration->cr8_enear = - AB8500_CODEC_CR8_ENEAR_ENABLED; - p_ab8500_codec_configuration->cr8_enhfl = - AB8500_CODEC_CR8_ENHFL_ENABLED; - p_ab8500_codec_configuration->cr8_enhfr = - AB8500_CODEC_CR8_ENHFR_ENABLED; - p_ab8500_codec_configuration->cr8_envibl = - AB8500_CODEC_CR8_ENVIBL_ENABLED; - p_ab8500_codec_configuration->cr8_envibr = - AB8500_CODEC_CR8_ENVIBR_ENABLED; - - p_ab8500_codec_configuration->cr9_endacear = - AB8500_CODEC_CR9_ENDACEAR_ENABLED; - p_ab8500_codec_configuration->cr9_endachfl = - AB8500_CODEC_CR9_ENDACHFL_ENABLED; - p_ab8500_codec_configuration->cr9_endachfr = - AB8500_CODEC_CR9_ENDACHFR_ENABLED; - p_ab8500_codec_configuration->cr9_endacvibl = - AB8500_CODEC_CR9_ENDACVIBL_ENABLED; - p_ab8500_codec_configuration->cr9_endacvibr = - AB8500_CODEC_CR9_ENDACVIBR_ENABLED; - - p_ab8500_codec_configuration->cr10_mutehsl = - AB8500_CODEC_CR10_MUTEHSL_DISABLED; - p_ab8500_codec_configuration->cr10_mutehsr = - AB8500_CODEC_CR10_MUTEHSR_DISABLED; - p_ab8500_codec_configuration->cr10_muteear = - AB8500_CODEC_CR10_MUTEEAR_DISABLED; - p_ab8500_codec_configuration->cr10_mutehfl = - AB8500_CODEC_CR10_MUTEHFL_DISABLED; - p_ab8500_codec_configuration->cr10_mutehfr = - AB8500_CODEC_CR10_MUTEHFR_DISABLED; - p_ab8500_codec_configuration->cr10_mutevibl = - AB8500_CODEC_CR10_MUTEVIBL_DISABLED; - p_ab8500_codec_configuration->cr10_mutevibr = - AB8500_CODEC_CR10_MUTEVIBR_DISABLED; - - p_ab8500_codec_configuration->cr15_pwmtovibl = - AB8500_CODEC_CR15_PWMTOVIBL_PWM; - p_ab8500_codec_configuration->cr15_pwmlctrl = - AB8500_CODEC_CR15_PWMLCTRL_PWMNPLDUTYCYCLE; - p_ab8500_codec_configuration->cr15_pwmnlctrl = - AB8500_CODEC_CR15_PWMNLCTRL_PWMNLDUTYCYCLE; - p_ab8500_codec_configuration->cr15_pwmplctrl = - AB8500_CODEC_CR15_PWMPLCTRL_PWMPLDUTYCYCLE; - p_ab8500_codec_configuration->cr15_pwmtovibr = - AB8500_CODEC_CR15_PWMTOVIBR_PWM; - p_ab8500_codec_configuration->cr15_pwmrctrl = - AB8500_CODEC_CR15_PWMRCTRL_PWMNPRDUTYCYCLE; - p_ab8500_codec_configuration->cr15_pwmnrctrl = - AB8500_CODEC_CR15_PWMNRCTRL_PWMNRDUTYCYCLE; - p_ab8500_codec_configuration->cr15_pwmprctrl = - AB8500_CODEC_CR15_PWMPRCTRL_PWMPRDUTYCYCLE; - - break; - - default: - ab8500_codec_error = AB8500_CODEC_INVALID_PARAMETER; - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -PRIVATE t_ab8500_codec_error ab8500_codec_DestPowerControlUpdateCR(void) -{ - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - - ab8500_codec_error = ab8500_codec_UpdateCR8(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR9(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR10(); - if (ab8500_codec_error != AB8500_CODEC_OK) { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - - ab8500_codec_error = ab8500_codec_UpdateCR15(); - - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} diff --git a/sound/ab8500_codec_v1_0.c b/sound/ab8500_codec_v1_0.c deleted file mode 100644 index 5df1ca3eae4..00000000000 --- a/sound/ab8500_codec_v1_0.c +++ /dev/null @@ -1,6405 +0,0 @@ -/*****************************************************************************/ - -/** -* © ST-Ericsson, 2009 - All rights reserved -* Reproduction and Communication of this document is strictly prohibited -* unless specifically authorized in writing by ST-Ericsson -* -* \brief This module provides some support routines for the AB8500 CODEC -* \author ST-Ericsson -*/ -/*****************************************************************************/ - -/*---------------------------------------------------------------------------- - * Includes - *---------------------------------------------------------------------------*/ - -#ifdef CONFIG_U8500_AB8500_CUT10 -#include <mach/ab8500_codec_v1_0.h> -#include <mach/ab8500_codec_p_v1_0.h> -#else /* */ -#include <mach/ab8500_codec.h> -#include <mach/ab8500_codec_p.h> -#endif /* */ - -/*--------------------------------------------------------------------------* - * debug stuff * - *--------------------------------------------------------------------------*/ -#ifdef __DEBUG -#define MY_DEBUG_LEVEL_VAR_NAME myDebugLevel_AB8500_CODEC -#define MY_DEBUG_ID myDebugID_AB8500_CODEC -PRIVATE t_dbg_level MY_DEBUG_LEVEL_VAR_NAME = DEBUG_LEVEL0; -PRIVATE t_dbg_id MY_DEBUG_ID = AB8500_CODEC_HCL_DBG_ID; - -#endif /* */ - -/*--------------------------------------------------------------------------* - * Global data for interrupt mode management * - *--------------------------------------------------------------------------*/ -PRIVATE t_ab8500_codec_system_context g_ab8500_codec_system_context; - -/*--------------------------------------------------------------------------* - * Default Values * - *--------------------------------------------------------------------------*/ -#define AB8500_CODEC_DEFAULT_SLAVE_ADDRESS_OF_CODEC 0xD -#define AB8500_CODEC_DEFAULT_DIRECTION AB8500_CODEC_DIRECTION_OUT - -#define AB8500_CODEC_DEFAULT_MODE_IN AB8500_CODEC_MODE_VOICE -#define AB8500_CODEC_DEFAULT_MODE_OUT AB8500_CODEC_MODE_VOICE - -#define AB8500_CODEC_DEFAULT_INPUT_SRC AB8500_CODEC_SRC_MICROPHONE_1A -#define AB8500_CODEC_DEFAULT_OUTPUT_DEST AB8500_CODEC_DEST_HEADSET - -#define AB8500_CODEC_DEFAULT_VOLUME_LEFT_IN 75 -#define AB8500_CODEC_DEFAULT_VOLUME_RIGHT_IN 75 -#define AB8500_CODEC_DEFAULT_VOLUME_LEFT_OUT 75 -#define AB8500_CODEC_DEFAULT_VOLUME_RIGHT_OUT 75 - -/*--------------------------------------------------------------------- - * PRIVATE APIs - *--------------------------------------------------------------------*/ -PRIVATE t_ab8500_codec_error ab8500_codec_ADSlotAllocationSwitch1(IN - t_ab8500_codec_slot - ad_slot, - IN - t_ab8500_codec_cr31_to_cr46_ad_data_allocation - value); -PRIVATE t_ab8500_codec_error ab8500_codec_ADSlotAllocationSwitch2(IN - t_ab8500_codec_slot - ad_slot, - IN - t_ab8500_codec_cr31_to_cr46_ad_data_allocation - value); -PRIVATE t_ab8500_codec_error ab8500_codec_ADSlotAllocationSwitch3(IN - t_ab8500_codec_slot - ad_slot, - IN - t_ab8500_codec_cr31_to_cr46_ad_data_allocation - value); -PRIVATE t_ab8500_codec_error ab8500_codec_ADSlotAllocationSwitch4(IN - t_ab8500_codec_slot - ad_slot, - IN - t_ab8500_codec_cr31_to_cr46_ad_data_allocation - value); -PRIVATE t_ab8500_codec_error ab8500_codec_SrcPowerControlSwitch1(IN - t_ab8500_codec_src - src_device, - t_ab8500_codec_src_state - state); -PRIVATE t_ab8500_codec_error ab8500_codec_SrcPowerControlSwitch2(IN - t_ab8500_codec_src - src_device, - t_ab8500_codec_src_state - state); -PRIVATE t_ab8500_codec_error ab8500_codec_SetModeAndDirectionUpdateCR(void); -PRIVATE t_ab8500_codec_error ab8500_codec_SetSrcVolumeUpdateCR(void); -PRIVATE t_ab8500_codec_error ab8500_codec_SetDestVolumeUpdateCR(void); -PRIVATE t_ab8500_codec_error ab8500_codec_ProgramDirectionIN(void); -PRIVATE t_ab8500_codec_error ab8500_codec_ProgramDirectionOUT(void); -PRIVATE t_ab8500_codec_error ab8500_codec_DestPowerControlUpdateCR(void); - -/********************************************************************************************/ -/* Name: ab8500_codec_SingleWrite */ -/********************************************************************************************/ - PRIVATE t_ab8500_codec_error ab8500_codec_SingleWrite(t_uint8 - register_offset, - t_uint8 data) -{ - return (t_ab8500_codec_error) (AB8500_CODEC_Write - (register_offset, 0x01, &data)); -} - -#if 0 - -/********************************************************************************************/ -/* Name: ab8500_codec_SingleRead */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_SingleRead(t_uint8 - register_offset, - t_uint8 data) -{ - t_uint8 dummy_data = 0xAA; - return (t_ab8500_codec_error) (AB8500_CODEC_Read - (register_offset, 0x01, &dummy_data, - &data)); -} - -#endif /* */ - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR0 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR0(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr0_powerup, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR0_POWERUP ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr0_enaana, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR0_ENAANA ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR0, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR1 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR1(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr1_swreset, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR1_SWRESET ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR1, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR2 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR2(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr2_enad1, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR2_ENAD1 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr2_enad2, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR2_ENAD2 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr2_enad3, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR2_ENAD3 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr2_enad4, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR2_ENAD4 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr2_enad5, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR2_ENAD5 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr2_enad6, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR2_ENAD6 ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR2, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR3 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR3(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr3_enda1, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR3_ENDA1 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr3_enda2, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR3_ENDA2 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr3_enda3, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR3_ENDA3 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr3_enda4, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR3_ENDA4 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr3_enda5, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR3_ENDA5 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr3_enda6, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR3_ENDA6 ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR3, value)); -} - -#if 0 - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR4 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR4(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr4_lowpowhs, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR4_LOWPOWHS ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr4_lowpowdachs, - AB8500_CODEC_MASK_TWO_BITS, - AB8500_CODEC_CR4_LOWPOWDACHS ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr4_lowpowear, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR4_LOWPOWEAR ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr4_ear_sel_cm, AB8500_CODEC_MASK_TWO_BITS, - AB8500_CODEC_CR4_EAR_SEL_CM ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr4_hs_hp_en, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR4_HS_HP_EN ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR4, value)); -} - -#endif /* */ - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR5 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR5(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr5_enmic1, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR5_ENMIC1 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr5_enmic2, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR5_ENMIC2 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr5_enlinl, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR5_ENLINL ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr5_enlinr, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR5_ENLINR ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr5_mutmic1, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR5_MUTMIC1 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr5_mutmic2, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR5_MUTMIC2 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr5_mutlinl, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR5_MUTELINL ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr5_mutlinr, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR5_MUTELINR ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR5, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR6 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR6(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr6_endmic1, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR6_ENDMIC1 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr6_endmic2, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR6_ENDMIC2 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr6_endmic3, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR6_ENDMIC3 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr6_endmic4, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR6_ENDMIC4 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr6_endmic5, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR6_ENDMIC5 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr6_endmic6, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR6_ENDMIC6 ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR6, value)); -} - - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR7 */ -/********************************************************************************************/ - PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR7(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr7_mic1sel, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR7_MIC1SEL ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr7_linrsel, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR7_LINRSEL ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr7_endrvhsl, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR7_ENDRVHSL ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr7_endrvhsr, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR7_ENDRVHSR ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr7_enadcmic, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR7_ENADCMIC ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr7_enadclinl, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR7_ENADCLINL ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr7_enadclinr, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR7_ENADCLINR ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR7, value)); -} - - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR8 */ -/********************************************************************************************/ - PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR8(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr8_cp_dis_pldwn, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR8_CP_DIS_PLDWN ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr8_enear, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR8_ENEAR ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr8_enhsl, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR8_ENHSL ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr8_enhsr, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR8_ENHSR ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr8_enhfl, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR8_ENHFL ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr8_enhfr, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR8_ENHFR ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr8_envibl, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR8_ENVIBL ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr8_envibr, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR8_ENVIBR ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR8, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR9 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR9(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr9_endacear, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR9_ENADACEAR ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr9_endachsl, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR9_ENADACHSL ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr9_endachsr, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR9_ENADACHSR ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr9_endachfl, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR9_ENADACHFL ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr9_endachfr, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR9_ENADACHFR ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr9_endacvibl, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR9_ENADACVIBL ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr9_endacvibr, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR9_ENADACVIBR ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR9, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR10 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR10(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr10_muteear, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR10_MUTEEAR ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr10_mutehsl, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR10_MUTEHSL ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr10_mutehsr, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR10_MUTEHSR ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR10, value)); -} - -#if 0 - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR11 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR11(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr11_earshortpwd, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR11_ENSHORTPWD ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr11_earshortdis, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR11_EARSHORTDIS ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr11_hsshortdis, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR11_HSSHORTDIS ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr11_hspullden, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR11_HSPULLDEN ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr11_hsoscen, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR11_HSOSCEN ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr11_hsfaden, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR11_HSFADEN ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr11_hszcddis, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR11_HSZCDDIS ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR11, value)); -} - -#endif /* */ - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR12 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR12(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr12_encphs, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR12_ENCPHS ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr12_hsautoen, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR12_HSAUTOEN ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR12, value)); -} - -#if 0 - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR13 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR13(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr13_envdet_hthresh, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR13_ENVDET_HTHRESH ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr13_envdet_lthresh, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR13_ENVDET_LTHRESH ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR13, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR14 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR14(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr14_smpslven, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR14_SMPSLVEN ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr14_envdetsmpsen, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR14_ENVDETSMPSEN ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr14_cplven, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR14_CPLVEN ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr14_envdetcpen, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR14_ENVDETCPEN ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr14_envet_time, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR14_ENVDET_TIME ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR14, value)); -} - -#endif /* */ - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR15 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR15(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr15_pwmtovibl, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR15_PWMTOVIBL ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr15_pwmtovibr, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR15_PWMTOVIBR ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr15_pwmlctrl, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR15_PWMLCTRL ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr15_pwmrctrl, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR15_PWMRCTRL ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr15_pwmnlctrl, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR15_PWMNLCTRL ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr15_pwmplctrl, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR15_PWMPLCTRL ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr15_pwmnrctrl, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR15_PWMNRCTRL ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr15_pwmprctrl, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR15_PWMPRCTRL ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR15, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR16 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR16(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr16_pwmnlpol, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR16_PWMNLPOL ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr16_pwmnldutycycle, - AB8500_CODEC_MASK_SEVEN_BITS, - AB8500_CODEC_CR16_PWMNLDUTYCYCLE ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR16, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR17 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR17(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr17_pwmplpol, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR17_PWMPLPOL ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr17_pwmpldutycycle, - AB8500_CODEC_MASK_SEVEN_BITS, - AB8500_CODEC_CR17_PWMLPDUTYCYCLE ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR17, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR18 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR18(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr18_pwmnrpol, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR18_PWMNRPOL ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr18_pwmnrdutycycle, - AB8500_CODEC_MASK_SEVEN_BITS, - AB8500_CODEC_CR18_PWMNRDUTYCYCLE ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR18, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR19 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR19(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr19_pwmprpol, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR19_PWMPRPOL ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr19_pwmprdutycycle, - AB8500_CODEC_MASK_SEVEN_BITS, - AB8500_CODEC_CR19_PWMRPDUTYCYCLE ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR19, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR20 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR20(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr20_en_se_mic1, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR20_EN_SE_MIC1 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr20_low_pow_mic1, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR20_LOW_POW_MIC1 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr20_mic1_gain, - AB8500_CODEC_MASK_FIVE_BITS, - AB8500_CODEC_CR20_MIC1_GAIN ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR20, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR21 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR21(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr21_en_se_mic2, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR21_EN_SE_MIC2 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr21_low_pow_mic2, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR21_LOW_POW_MIC2 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr21_mic2_gain, - AB8500_CODEC_MASK_FIVE_BITS, - AB8500_CODEC_CR21_MIC2_GAIN ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR21, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR22 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR22(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr22_hsl_gain, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR22_HSL_GAIN ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr22_hsr_gain, AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR22_HSR_GAIN ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR22, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR23 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR23(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr23_linl_gain, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR23_LINL_GAIN ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr23_linr_gain, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR23_LINR_GAIN ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR23, value)); -} - - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR24 */ -/********************************************************************************************/ - PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR24(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr24_lintohsl_gain, - AB8500_CODEC_MASK_FIVE_BITS, - AB8500_CODEC_CR24_LINTOHSL_GAIN ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR24, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR25 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR25(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr25_lintohsr_gain, - AB8500_CODEC_MASK_FIVE_BITS, - AB8500_CODEC_CR25_LINTOHSR_GAIN ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR25, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR26 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR26(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr26_ad1nh, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR26_AD1NH ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr26_ad2nh, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR26_AD2NH ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr26_ad3nh, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR26_AD3NH ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr26_ad4nh, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR26_AD4NH ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr26_ad1_voice, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR26_AD1_VOICE ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr26_ad2_voice, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR26_AD2_VOICE ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr26_ad3_voice, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR26_AD3_VOICE ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr26_ad4_voice, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR26_AD4_VOICE ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR26, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR27 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR27(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr27_en_mastgen, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR27_EN_MASTGEN ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr27_if1_bitclk_osr, - AB8500_CODEC_MASK_TWO_BITS, - AB8500_CODEC_CR27_IF1_BITCLK_OSR ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr27_enfs_bitclk1, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR27_ENFS_BITCLK1 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr27_if0_bitclk_osr, - AB8500_CODEC_MASK_TWO_BITS, - AB8500_CODEC_CR27_IF0_BITCLK_OSR ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr27_enfs_bitclk0, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR27_ENFS_BITCLK0 ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR27, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR28 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR28(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr28_fsync0p, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR28_FSYNC0P ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr28_bitclk0p, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR28_BITCLK0P ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr28_if0del, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR28_IF0DEL ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr28_if0format, AB8500_CODEC_MASK_TWO_BITS, - AB8500_CODEC_CR28_IF0FORMAT ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr28_if0wl, AB8500_CODEC_MASK_TWO_BITS, - AB8500_CODEC_CR28_IF0WL ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR28, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR29 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR29(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr29_if0datoif1ad, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR29_IF0DATOIF1AD ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr29_if0cktoif1ck, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR29_IF0CKTOIF1CK ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr29_if1master, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR29_IF1MASTER ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr29_if1datoif0ad, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR29_IF1DATOIF0AD ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr29_if1cktoif0ck, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR29_IF1CKTOIF0CK ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr29_if0master, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR29_IF0MASTER ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr29_if0bfifoen, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR29_IF0BFIFOEN ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR29, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR30 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR30(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr30_fsync1p, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR30_FSYNC1P ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr30_bitclk1p, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR30_BITCLK1P ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr30_if1del, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR30_IF1DEL ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr30_if1format, AB8500_CODEC_MASK_TWO_BITS, - AB8500_CODEC_CR30_IF1FORMAT ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr30_if1wl, AB8500_CODEC_MASK_TWO_BITS, - AB8500_CODEC_CR30_IF1WL ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR30, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR31 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR31(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr31_adotoslot1, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR31_ADOTOSLOT1 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr31_adotoslot0, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR31_ADOTOSLOT0 ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR31, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR32 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR32(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr32_adotoslot3, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR32_ADOTOSLOT3 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr32_adotoslot2, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR32_ADOTOSLOT2 ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR32, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR33 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR33(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr33_adotoslot5, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR33_ADOTOSLOT5 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr33_adotoslot4, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR33_ADOTOSLOT4 ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR33, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR34 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR34(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr34_adotoslot7, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR34_ADOTOSLOT7 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr34_adotoslot6, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR34_ADOTOSLOT6 ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR34, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR35 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR35(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr35_adotoslot9, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR35_ADOTOSLOT9 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr35_adotoslot8, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR35_ADOTOSLOT8 ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR35, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR36 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR36(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr36_adotoslot11, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR36_ADOTOSLOT11 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr36_adotoslot10, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR36_ADOTOSLOT10 ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR36, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR37 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR37(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr37_adotoslot13, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR37_ADOTOSLOT13 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr37_adotoslot12, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR37_ADOTOSLOT12 ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR37, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR38 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR38(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr38_adotoslot15, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR38_ADOTOSLOT15 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr38_adotoslot14, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR38_ADOTOSLOT14 ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR38, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR39 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR39(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr39_adotoslot17, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR39_ADOTOSLOT17 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr39_adotoslot16, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR39_ADOTOSLOT16 ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR39, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR40 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR40(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr40_adotoslot19, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR40_ADOTOSLOT19 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr40_adotoslot18, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR40_ADOTOSLOT18 ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR40, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR41 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR41(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr41_adotoslot21, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR41_ADOTOSLOT21 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr41_adotoslot20, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR41_ADOTOSLOT20 ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR41, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR42 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR42(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr42_adotoslot23, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR42_ADOTOSLOT23 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr42_adotoslot22, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR42_ADOTOSLOT22 ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR42, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR43 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR43(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr43_adotoslot25, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR43_ADOTOSLOT25 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr43_adotoslot24, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR43_ADOTOSLOT24 ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR43, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR44 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR44(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr44_adotoslot27, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR44_ADOTOSLOT27 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr44_adotoslot26, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR44_ADOTOSLOT26 ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR44, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR45 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR45(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr45_adotoslot29, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR45_ADOTOSLOT29 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr45_adotoslot28, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR45_ADOTOSLOT28 ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR45, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR46 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR46(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr46_adotoslot31, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR46_ADOTOSLOT31 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr46_adotoslot30, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR46_ADOTOSLOT30 ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR46, value)); -} - -#if 0 - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR47 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR47(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr47_hiz_sl7, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR47_HIZ_SL7 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr47_hiz_sl6, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR47_HIZ_SL6 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr47_hiz_sl5, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR47_HIZ_SL5 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr47_hiz_sl4, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR47_HIZ_SL4 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr47_hiz_sl3, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR47_HIZ_SL3 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr47_hiz_sl2, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR47_HIZ_SL2 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr47_hiz_sl1, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR47_HIZ_SL1 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr47_hiz_sl0, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR47_HIZ_SL0 ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR47, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR48 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR48(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr48_hiz_sl15, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR48_HIZ_SL15 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr48_hiz_sl14, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR48_HIZ_SL14 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr48_hiz_sl13, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR48_HIZ_SL13 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr48_hiz_sl12, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR48_HIZ_SL12 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr48_hiz_sl11, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR48_HIZ_SL11 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr48_hiz_sl10, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR48_HIZ_SL10 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr48_hiz_sl9, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR48_HIZ_SL9 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr48_hiz_sl8, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR48_HIZ_SL8 ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR48, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR49 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR49(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr49_hiz_sl23, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR49_HIZ_SL23 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr49_hiz_sl22, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR49_HIZ_SL22 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr49_hiz_sl21, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR49_HIZ_SL21 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr49_hiz_sl20, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR49_HIZ_SL20 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr49_hiz_sl19, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR49_HIZ_SL19 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr49_hiz_sl18, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR49_HIZ_SL18 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr49_hiz_sl17, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR49_HIZ_SL17 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr49_hiz_sl16, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR49_HIZ_SL16 ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR49, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR50 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR50(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr50_hiz_sl31, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR50_HIZ_SL31 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr50_hiz_sl30, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR50_HIZ_SL30 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr50_hiz_sl29, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR50_HIZ_SL29 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr50_hiz_sl28, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR50_HIZ_SL28 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr50_hiz_sl27, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR50_HIZ_SL27 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr50_hiz_sl26, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR50_HIZ_SL26 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr50_hiz_sl25, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR50_HIZ_SL25 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr50_hiz_sl24, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR50_HIZ_SL24 ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR50, value)); -} - -#endif /* */ - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR51 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR51(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr51_da12_voice, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR51_DA12_VOICE ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr51_swapda12_34, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR51_SWAP_DA12_34 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr51_sldai7toslado1, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR51_SLDAI7TOSLADO1 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr51_sltoda1, AB8500_CODEC_MASK_FIVE_BITS, - AB8500_CODEC_CR51_SLTODA1 ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR51, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR52 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR52(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr52_sldai8toslado2, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR52_SLDAI8TOSLADO2 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr52_sltoda2, AB8500_CODEC_MASK_FIVE_BITS, - AB8500_CODEC_CR52_SLTODA2 ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR52, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR53 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR53(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr53_da34_voice, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR53_DA34_VOICE ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr53_sldai7toslado3, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR53_SLDAI7TOSLADO3 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr53_sltoda3, AB8500_CODEC_MASK_FIVE_BITS, - AB8500_CODEC_CR53_SLTODA3 ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR53, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR54 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR54(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr54_sldai8toslado4, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR54_SLDAI8TOSLADO4 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr54_sltoda4, AB8500_CODEC_MASK_FIVE_BITS, - AB8500_CODEC_CR54_SLTODA4 ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR54, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR55 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR55(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr55_da56_voice, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR55_DA56_VOICE ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr55_sldai7toslado5, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR55_SLDAI7TOSLADO5 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr55_sltoda5, AB8500_CODEC_MASK_FIVE_BITS, - AB8500_CODEC_CR55_SLTODA5 ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR55, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR56 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR56(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr56_sldai8toslado6, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR56_SLDAI8TOSLADO6 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr56_sltoda6, AB8500_CODEC_MASK_FIVE_BITS, - AB8500_CODEC_CR56_SLTODA6 ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR56, value)); -} - - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR57 */ -/********************************************************************************************/ - PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR57(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr57_sldai8toslado7, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR57_SLDAI8TOSLADO7 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr57_sltoda7, AB8500_CODEC_MASK_FIVE_BITS, - AB8500_CODEC_CR57_SLTODA7 ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR57, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR58 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR58(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr58_sldai7toslado8, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR58_SLDAI7TOSLADO8 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr58_sltoda8, AB8500_CODEC_MASK_FIVE_BITS, - AB8500_CODEC_CR58_SLTODA8 ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR58, value)); -} - -#if 0 - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR59 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR59(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr59_parlhf, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR59_PARLHF ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr59_parlvib, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR59_PARLVIB ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr59_classdvib1_swapen, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR59_CLASSDVIB1SWAPEN ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr59_classdvib2_swapen, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR59_CLASSDVIB2SWAPEN ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr59_classdhfl_swapen, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR59_CLASSDHFLSWAPEN ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr59_classdhfr_swapen, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR59_CLASSDHFRSWAPEN ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR59, value)); -} - - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR60 */ -/********************************************************************************************/ - PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR60(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr60_classd_firbyp, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR60_CLASSD_FIR_BYP ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr60_classd_highvolen, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR60_CLASSD_HIGHVOL_EN ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR60, value)); -} - - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR61 */ -/********************************************************************************************/ - PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR61(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - - /* 5 bits are Read Only */ - AB8500_CODEC_WRITE_BITS - (value, - (t_uint8) p_ab8500_codec_configuration->cr61_classddith_hpgain, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR61_CLASSD_DITH_HPGAIN ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr61_classddith_wgain, - AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR61_CLASSD_DITH_WGAIN ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR61, value)); -} - -#endif /* */ - -/* CR62 is Read Only */ -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR63 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR63(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr63_datohslen, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR63_DATOHSLEN ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr63_datohsren, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR63_DATOHSREN ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr63_ad1sel, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR63_AD1SEL ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr63_ad2sel, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR63_AD2SEL ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr63_ad3sel, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR63_AD3SEL ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr63_ad5sel, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR63_AD5SEL ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr63_ad6sel, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR63_AD6SEL ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr63_ancsel, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR63_ANCSEL ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR63, value)); -} - -#if 0 -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR64 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR64(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr64_datohfren, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR64_DATOHFREN ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr64_datohflen, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR64_DATOHFLEN ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr64_hfrsel, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR64_HFRSEL ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr64_hflsel, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR64_HFLSEL ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr64_stfir1sel, AB8500_CODEC_MASK_TWO_BITS, - AB8500_CODEC_CR64_STFIR1SEL ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr64_stfir2sel, AB8500_CODEC_MASK_TWO_BITS, - AB8500_CODEC_CR64_STFIR2SEL ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR64, value)); -} - -#endif /* */ - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR65 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR65(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr65_fadedis_ad1, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR65_FADEDIS_AD1 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr65_ad1gain, AB8500_CODEC_MASK_SIX_BITS, - AB8500_CODEC_CR65_AD1GAIN ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR65, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR66 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR66(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr66_fadedis_ad2, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR66_FADEDIS_AD2 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr66_ad2gain, AB8500_CODEC_MASK_SIX_BITS, - AB8500_CODEC_CR66_AD2GAIN ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR66, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR67 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR67(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr67_fadedis_ad3, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR67_FADEDIS_AD3 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr67_ad3gain, AB8500_CODEC_MASK_SIX_BITS, - AB8500_CODEC_CR67_AD3GAIN ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR67, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR68 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR68(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr68_fadedis_ad4, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR68_FADEDIS_AD4 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr68_ad4gain, AB8500_CODEC_MASK_SIX_BITS, - AB8500_CODEC_CR68_AD4GAIN ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR68, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR69 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR69(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr69_fadedis_ad5, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR69_FADEDIS_AD5 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr69_ad5gain, AB8500_CODEC_MASK_SIX_BITS, - AB8500_CODEC_CR69_AD5GAIN ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR69, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR70 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR70(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr70_fadedis_ad6, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR70_FADEDIS_AD6 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr70_ad6gain, AB8500_CODEC_MASK_SIX_BITS, - AB8500_CODEC_CR70_AD6GAIN ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR70, value)); -} - - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR71 */ -/********************************************************************************************/ - PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR71(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr71_fadedis_da1, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR71_FADEDIS_DA1 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr71_da1gain, AB8500_CODEC_MASK_SIX_BITS, - AB8500_CODEC_CR71_DA1GAIN ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR71, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR72 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR72(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr72_fadedis_da2, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR72_FADEDIS_DA2 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr72_da2gain, AB8500_CODEC_MASK_SIX_BITS, - AB8500_CODEC_CR72_DA2GAIN ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR72, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR73 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR73(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr73_fadedis_da3, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR73_FADEDIS_DA3 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr73_da3gain, AB8500_CODEC_MASK_SIX_BITS, - AB8500_CODEC_CR73_DA3GAIN ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR73, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR74 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR74(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr74_fadedis_da4, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR74_FADEDIS_DA4 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr74_da4gain, AB8500_CODEC_MASK_SIX_BITS, - AB8500_CODEC_CR74_DA4GAIN ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR74, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR75 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR75(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr75_fadedis_da5, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR75_FADEDIS_DA5 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr75_da5gain, AB8500_CODEC_MASK_SIX_BITS, - AB8500_CODEC_CR75_DA5GAIN ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR75, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR76 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR76(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr76_fadedis_da6, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR76_FADEDIS_DA6 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr76_da6gain, AB8500_CODEC_MASK_SIX_BITS, - AB8500_CODEC_CR76_DA6GAIN ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR76, value)); -} - -#if 0 - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR77 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR77(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr77_fadedis_ad1l, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR77_FADEDIS_AD1L ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr77_ad1lbgain_to_hfl, - AB8500_CODEC_MASK_SIX_BITS, - AB8500_CODEC_CR77_AD1LBGAIN ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR77, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR78 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR78(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr78_fadedis_ad2l, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR78_FADEDIS_AD2L ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr78_ad2lbgain_to_hfr, - AB8500_CODEC_MASK_SIX_BITS, - AB8500_CODEC_CR78_AD2LBGAIN ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR78, value)); -} - -#endif /* */ - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR79 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR79(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr79_hssinc1, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR79_HSSINC1 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr79_fadedis_hsl, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR79_FADEDIS_HSL ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr79_hsldgain, AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR79_HSLDGAIN ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR79, value)); -} - - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR80 */ -/********************************************************************************************/ - PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR80(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr80_fade_speed, - AB8500_CODEC_MASK_TWO_BITS, - AB8500_CODEC_CR80_FADE_SPEED ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr80_fadedis_hsr, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR80_FADEDIS_HSR ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr80_hsrdgain, AB8500_CODEC_MASK_FOUR_BITS, - AB8500_CODEC_CR80_HSRDGAIN ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR80, value)); -} - -#if 0 - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR81 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR81(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr81_stfir1gain, - AB8500_CODEC_MASK_FIVE_BITS, - AB8500_CODEC_CR81_STFIR1GAIN ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR81, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR82 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR82(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr82_stfir2gain, - AB8500_CODEC_MASK_FIVE_BITS, - AB8500_CODEC_CR82_STFIR2GAIN ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR82, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR83 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR83(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr83_enanc, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR83_ENANC ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr83_anciirinit, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR83_ANCIIRINIT ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr83_ancfirupdate, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR83_ANCFIRUPDATE ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR83, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR84 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR84(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr84_ancinshift, - AB8500_CODEC_MASK_FIVE_BITS, - AB8500_CODEC_CR84_ANCINSHIFT ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR84, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR85 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR85(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr85_ancfiroutshift, - AB8500_CODEC_MASK_FIVE_BITS, - AB8500_CODEC_CR85_ANCFIROUTSHIFT ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR85, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR86 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR86(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr86_ancshiftout, - AB8500_CODEC_MASK_FIVE_BITS, - AB8500_CODEC_CR86_ANCSHIFTOUT ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR86, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR87 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR87(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr87_ancfircoeff_msb, - AB8500_CODEC_MASK_EIGHT_BITS, - AB8500_CODEC_CR87_ANCFIRCOEFF_MSB ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR87, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR88 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR88(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr88_ancfircoeff_lsb, - AB8500_CODEC_MASK_EIGHT_BITS, - AB8500_CODEC_CR88_ANCFIRCOEFF_LSB ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR88, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR89 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR89(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr89_anciircoeff_msb, - AB8500_CODEC_MASK_EIGHT_BITS, - AB8500_CODEC_CR89_ANCIIRCOEFF_MSB ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR89, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR90 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR90(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr90_anciircoeff_lsb, - AB8500_CODEC_MASK_EIGHT_BITS, - AB8500_CODEC_CR90_ANCIIRCOEFF_LSB ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR90, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR91 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR91(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr91_ancwarpdel_msb, - AB8500_CODEC_MASK_EIGHT_BITS, - AB8500_CODEC_CR91_ANCWARPDEL_MSB ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR91, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR92 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR92(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr92_ancwarpdel_lsb, - AB8500_CODEC_MASK_EIGHT_BITS, - AB8500_CODEC_CR92_ANCWARPDEL_LSB ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR92, value)); -} - -/* CR93 is Read Only */ -/* CR94 is Read Only */ -/* CR95 is Read Only */ -/* CR96 is Read Only */ -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR97 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR97(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr97_stfir_set, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR97_STFIR_SET ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr97_stfir_addr, - AB8500_CODEC_MASK_SEVEN_BITS, - AB8500_CODEC_CR97_STFIR_ADDR ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR97, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR98 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR98(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr98_stfir_coeff_msb, - AB8500_CODEC_MASK_EIGHT_BITS, - AB8500_CODEC_CR98_STFIR_COEFF_MSB ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR98, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR99 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR99(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr99_stfir_coeff_lsb, - AB8500_CODEC_MASK_EIGHT_BITS, - AB8500_CODEC_CR99_STFIR_COEFF_LSB ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR99, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR100 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR100(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr100_enstfirs, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR100_ENSTFIRS ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr100_stfirstoif1, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR100_STFIRSTOIF1 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr100_stfir_busy, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR100_STFIR_BUSY ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR100, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR101 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR101(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr101_hsoffst_mask, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR101_HSOFFSTMASK ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr101_fifofull_mask, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR101_FIFOFULLMASK ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr101_fifoempty_mask, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR101_FIFOEMPTYMASK ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr101_dasat_mask, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR101_DASATMASK ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr101_adsat_mask, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR101_ADSATMASK ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr101_addsp_mask, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR101_ADDSPMASK ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr101_dadsp_mask, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR101_DADSPMASK ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr101_firsid_mask, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR101_FIRSIDMASK ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR101, value)); -} - -/* CR102 is Read Only */ - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR103 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR103(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr103_vssready_mask, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR103_VSSREADYMASK ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr103_shorthsl_mask, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR103_SHORTHSLMASK ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr103_shorthsr_mask, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR103_SHORTHSRMASK ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr103_shortear_mask, - AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR103_SHORTEARMASK ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR103, value)); -} - -#endif /* */ - -/* CR104 is Read Only */ - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR105 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR105(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr105_bfifomsk, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR105_BFIFOMASK ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr105_bfifoint, AB8500_CODEC_MASK_SIX_BITS, - AB8500_CODEC_CR105_BFIFOINT ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR105, value)); -} - - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR106 */ -/********************************************************************************************/ - PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR106(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr106_bfifotx, - AB8500_CODEC_MASK_EIGHT_BITS, - AB8500_CODEC_CR106_BFIFOTX ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR106, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR107 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR107(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr107_bfifoexsl, - AB8500_CODEC_MASK_THREE_BITS, - AB8500_CODEC_CR107_BFIFOEXSL ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr107_prebitclk0, - AB8500_CODEC_MASK_THREE_BITS, - AB8500_CODEC_CR107_PREBITCLK0 ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr107_bfifomast, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR107_BFIFOMAST ); - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr107_bfiforun, AB8500_CODEC_MASK_ONE_BIT, - AB8500_CODEC_CR107_BFIFORUN ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR107, value)); -} - - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR108 */ -/********************************************************************************************/ - PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR108(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr108_bfifoframsw, - AB8500_CODEC_MASK_EIGHT_BITS, - AB8500_CODEC_CR108_BFIFOFRAMESW ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR108, value)); -} - -/********************************************************************************************/ -/* Name: ab8500_codec_UpdateCR109 */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_UpdateCR109(void) -{ - t_uint8 value = 0x00; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - AB8500_CODEC_WRITE_BITS (value, - (t_uint8) p_ab8500_codec_configuration-> - cr109_bfifowakeup, - AB8500_CODEC_MASK_EIGHT_BITS, - AB8500_CODEC_CR109_BFIFOWAKEUP ); - return (ab8500_codec_SingleWrite(AB8500_CODEC_CR109, value)); -} - -/* CR110 is Read Only */ - -/* CR111 is Read Only */ - -/********************************************************************************************/ -/* Name: ab8500_codec_Reset() */ - -/********************************************************************************************/ -PRIVATE t_ab8500_codec_error ab8500_codec_Reset(void) -{ - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - p_ab8500_codec_configuration->cr1_swreset = - AB8500_CODEC_CR1_SWRESET_ENABLED; - ab8500_codec_error = ab8500_codec_UpdateCR1(); - if (AB8500_CODEC_OK != ab8500_codec_error) - { - return (ab8500_codec_error); - } - return (ab8500_codec_error); -} - -PRIVATE t_ab8500_codec_error ab8500_codec_ProgramDirection(IN - t_ab8500_codec_direction - ab8500_codec_direction) - /*only IN or OUT must be passed (not INOUT) */ -{ - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - if (AB8500_CODEC_DIRECTION_IN == ab8500_codec_direction) - { - ab8500_codec_error = ab8500_codec_ProgramDirectionIN(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - } - if (AB8500_CODEC_DIRECTION_OUT == ab8500_codec_direction) - { - ab8500_codec_error = ab8500_codec_ProgramDirectionOUT(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - } - return (ab8500_codec_error); -} - -PRIVATE t_ab8500_codec_error ab8500_codec_SetDirection(IN - t_ab8500_codec_direction - ab8500_codec_direction) -{ - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - switch (ab8500_codec_direction) - { - case AB8500_CODEC_DIRECTION_IN: - ab8500_codec_error = - ab8500_codec_ProgramDirection(AB8500_CODEC_DIRECTION_IN); - break; - case AB8500_CODEC_DIRECTION_OUT: - ab8500_codec_error = - ab8500_codec_ProgramDirection(AB8500_CODEC_DIRECTION_OUT); - break; - case AB8500_CODEC_DIRECTION_INOUT: - ab8500_codec_error = - ab8500_codec_ProgramDirection(AB8500_CODEC_DIRECTION_IN); - if (AB8500_CODEC_OK == ab8500_codec_error) - { - ab8500_codec_error = - ab8500_codec_ProgramDirection - (AB8500_CODEC_DIRECTION_OUT); - } - break; - } - if (ab8500_codec_error != AB8500_CODEC_OK) - { - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR5(); - if (AB8500_CODEC_OK != ab8500_codec_error) - { - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR6(); - if (AB8500_CODEC_OK != ab8500_codec_error) - { - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR7(); - if (AB8500_CODEC_OK != ab8500_codec_error) - { - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR8(); - if (AB8500_CODEC_OK != ab8500_codec_error) - { - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR9(); - if (AB8500_CODEC_OK != ab8500_codec_error) - { - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR10(); - if (AB8500_CODEC_OK != ab8500_codec_error) - { - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR12(); - if (AB8500_CODEC_OK != ab8500_codec_error) - { - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR15(); - if (AB8500_CODEC_OK != ab8500_codec_error) - { - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR63(); - if (AB8500_CODEC_OK != ab8500_codec_error) - { - return (ab8500_codec_error); - } - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_Init */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Initialize the global variables & stores the slave address of codec. */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* slave_address_of_ab8500_codec: Audio codec slave address */ -/* OUT: */ -/* None */ -/* */ -/* RETURN: */ -/* Returns AB8500_CODEC_OK */ -/* COMMENTS: */ -/* 1) Saves the supplied slave_address_of_codec in global variable */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_Init(IN t_uint8 - slave_address_of_ab8500_codec) -{ - DBGENTER1(" (%lx)", slave_address_of_ab8500_codec); - g_ab8500_codec_system_context.slave_address_of_ab8500_codec = - slave_address_of_ab8500_codec; - DBGEXIT(AB8500_CODEC_OK); - return (AB8500_CODEC_OK); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_Reset */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Reset the global variables and clear audiocodec settings to default. */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* None */ -/* OUT: */ -/* None */ -/* */ -/* RETURN: */ -/* AB8500_CODEC_TRANSACTION_FAILED: If transaction fails. */ -/* AB8500_CODEC_OK: if successful. */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_Reset(void) -{ - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - DBGENTER(); - g_ab8500_codec_system_context.ab8500_codec_direction = - AB8500_CODEC_DEFAULT_DIRECTION; - g_ab8500_codec_system_context.ab8500_codec_mode_in = - AB8500_CODEC_DEFAULT_MODE_IN; - g_ab8500_codec_system_context.ab8500_codec_mode_out = - AB8500_CODEC_DEFAULT_MODE_OUT; - g_ab8500_codec_system_context.ab8500_codec_src = - AB8500_CODEC_DEFAULT_INPUT_SRC; - g_ab8500_codec_system_context.ab8500_codec_dest = - AB8500_CODEC_DEFAULT_OUTPUT_DEST; - g_ab8500_codec_system_context.in_left_volume = - AB8500_CODEC_DEFAULT_VOLUME_LEFT_IN; - g_ab8500_codec_system_context.in_right_volume = - AB8500_CODEC_DEFAULT_VOLUME_RIGHT_IN; - g_ab8500_codec_system_context.out_left_volume = - AB8500_CODEC_DEFAULT_VOLUME_LEFT_OUT; - g_ab8500_codec_system_context.out_right_volume = - AB8500_CODEC_DEFAULT_VOLUME_RIGHT_OUT; - ab8500_codec_error = ab8500_codec_Reset(); - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_SetModeAndDirection */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Configures the whole audio codec to work in audio mode */ -/* (using I2S protocol). */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* direction: select the direction (IN, OUT or INOUT) */ -/* in_mode: codec mode for recording. If direction is OUT only, */ -/* this parameter is ignored. */ -/* out_mode: codec mode for playing. If direction is IN only, */ -/* this parameter is ignored. */ -/* p_tdm_config: TDM configuration required to be configured by user */ -/* OUT: */ -/* None */ -/* */ -/* RETURN: */ -/* AB8500_CODEC_UNSUPPORTED_FEATURE: The API may not allow setting */ -/* 2 different modes, in which case it should return this value. */ -/* AB8500_CODEC_TRANSACTION_FAILED: If transaction fails. */ -/* AB8500_CODEC_OK: if successful. */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_SetModeAndDirection - (IN t_ab8500_codec_direction ab8500_codec_direction, - IN t_ab8500_codec_mode ab8500_codec_mode_in, - IN t_ab8500_codec_mode ab8500_codec_mode_out, - IN t_ab8500_codec_tdm_config const *const p_tdm_config ) { - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - DBGENTER3(" (%lx %lx %lx)", ab8500_codec_direction, - ab8500_codec_mode_in, ab8500_codec_mode_out); - if (AB8500_CODEC_AUDIO_INTERFACE_1 == - g_ab8500_codec_system_context.audio_interface) - { - if (AB8500_CODEC_DIRECTION_OUT == ab8500_codec_direction - || AB8500_CODEC_DIRECTION_INOUT == - ab8500_codec_direction ) - { - p_ab8500_codec_configuration->cr3_enda1 = - AB8500_CODEC_CR3_ENDA1_ENABLED; - p_ab8500_codec_configuration->cr3_enda2 = - AB8500_CODEC_CR3_ENDA2_ENABLED; - p_ab8500_codec_configuration->cr3_enda3 = - AB8500_CODEC_CR3_ENDA3_ENABLED; - p_ab8500_codec_configuration->cr3_enda4 = - AB8500_CODEC_CR3_ENDA4_ENABLED; - p_ab8500_codec_configuration->cr3_enda5 = - AB8500_CODEC_CR3_ENDA5_ENABLED; - p_ab8500_codec_configuration->cr3_enda6 = - AB8500_CODEC_CR3_ENDA6_ENABLED; - p_ab8500_codec_configuration->cr27_if1_bitclk_osr = - p_tdm_config->cr27_if1_bitclk_osr; - if (AB8500_CODEC_MODE_HIFI == ab8500_codec_mode_out) - { - p_ab8500_codec_configuration->cr30_fsync1p = - AB8500_CODEC_CR30_FSYNC1P_FALLING_EDGE; - p_ab8500_codec_configuration->cr30_bitclk1p = - AB8500_CODEC_CR30_BITCLK1P_FALLING_EDGE; - p_ab8500_codec_configuration->cr30_if1del = - AB8500_CODEC_CR30_IF1DEL_DELAYED; - p_ab8500_codec_configuration->cr30_if1format = - AB8500_CODEC_CR30_IF1FORMAT_I2S_LEFTALIGNED; - p_ab8500_codec_configuration->cr30_if1wl = - p_tdm_config->cr30_if1wl; - } - - else - { - p_ab8500_codec_configuration->cr30_fsync1p = - AB8500_CODEC_CR30_FSYNC1P_FALLING_EDGE; - p_ab8500_codec_configuration->cr30_bitclk1p = - AB8500_CODEC_CR30_BITCLK1P_FALLING_EDGE; - p_ab8500_codec_configuration->cr30_if1del = - AB8500_CODEC_CR30_IF1DEL_DELAYED; - p_ab8500_codec_configuration->cr30_if1format = - AB8500_CODEC_CR30_IF1FORMAT_TDM; - p_ab8500_codec_configuration->cr30_if1wl = - p_tdm_config->cr30_if1wl; - } - } - if (AB8500_CODEC_DIRECTION_IN == ab8500_codec_direction - || AB8500_CODEC_DIRECTION_INOUT == - ab8500_codec_direction ) - { - p_ab8500_codec_configuration->cr2_enad1 = - AB8500_CODEC_CR2_ENAD1_ENABLED; - p_ab8500_codec_configuration->cr2_enad2 = - AB8500_CODEC_CR2_ENAD2_ENABLED; - p_ab8500_codec_configuration->cr2_enad3 = - AB8500_CODEC_CR2_ENAD3_ENABLED; - p_ab8500_codec_configuration->cr2_enad4 = - AB8500_CODEC_CR2_ENAD4_ENABLED; - p_ab8500_codec_configuration->cr2_enad5 = - AB8500_CODEC_CR2_ENAD5_ENABLED; - p_ab8500_codec_configuration->cr2_enad6 = - AB8500_CODEC_CR2_ENAD6_ENABLED; - p_ab8500_codec_configuration->cr27_if1_bitclk_osr = - p_tdm_config->cr27_if1_bitclk_osr; - if (AB8500_CODEC_MODE_HIFI == ab8500_codec_mode_in) - { - p_ab8500_codec_configuration->cr30_fsync1p = - AB8500_CODEC_CR30_FSYNC1P_FALLING_EDGE; - p_ab8500_codec_configuration->cr30_bitclk1p = - AB8500_CODEC_CR30_BITCLK1P_FALLING_EDGE; - p_ab8500_codec_configuration->cr30_if1del = - AB8500_CODEC_CR30_IF1DEL_DELAYED; - p_ab8500_codec_configuration->cr30_if1format = - AB8500_CODEC_CR30_IF1FORMAT_I2S_LEFTALIGNED; - p_ab8500_codec_configuration->cr30_if1wl = - p_tdm_config->cr30_if1wl; - } - - else - { - p_ab8500_codec_configuration->cr30_fsync1p = - AB8500_CODEC_CR30_FSYNC1P_RISING_EDGE; - p_ab8500_codec_configuration->cr30_bitclk1p = - AB8500_CODEC_CR30_BITCLK1P_FALLING_EDGE; - p_ab8500_codec_configuration->cr30_if1del = - AB8500_CODEC_CR30_IF1DEL_NOT_DELAYED; - p_ab8500_codec_configuration->cr30_if1format = - AB8500_CODEC_CR30_IF1FORMAT_TDM; - p_ab8500_codec_configuration->cr30_if1wl = - p_tdm_config->cr30_if1wl; - } - } - } - - else - { - if (AB8500_CODEC_DIRECTION_OUT == ab8500_codec_direction - || AB8500_CODEC_DIRECTION_INOUT == - ab8500_codec_direction ) - { - p_ab8500_codec_configuration->cr3_enda1 = - AB8500_CODEC_CR3_ENDA1_ENABLED; - p_ab8500_codec_configuration->cr3_enda2 = - AB8500_CODEC_CR3_ENDA2_ENABLED; - p_ab8500_codec_configuration->cr3_enda3 = - AB8500_CODEC_CR3_ENDA3_ENABLED; - p_ab8500_codec_configuration->cr3_enda4 = - AB8500_CODEC_CR3_ENDA4_ENABLED; - p_ab8500_codec_configuration->cr3_enda5 = - AB8500_CODEC_CR3_ENDA5_ENABLED; - p_ab8500_codec_configuration->cr3_enda6 = - AB8500_CODEC_CR3_ENDA6_ENABLED; - p_ab8500_codec_configuration->cr27_if0_bitclk_osr = - p_tdm_config->cr27_if0_bitclk_osr; - p_ab8500_codec_configuration->cr63_datohslen = - AB8500_CODEC_CR63_DATOHSLEN_ENABLED; - p_ab8500_codec_configuration->cr63_datohsren = - AB8500_CODEC_CR63_DATOHSREN_ENABLED; - if (AB8500_CODEC_MODE_HIFI == ab8500_codec_mode_out) - { - p_ab8500_codec_configuration->cr28_fsync0p = - AB8500_CODEC_CR28_FSYNC0P_FALLING_EDGE; - p_ab8500_codec_configuration->cr28_bitclk0p = p_tdm_config->cr28_bitclk0p; /*AB8500_CODEC_CR28_BITCLK0P_FALLING_EDGE; */ - p_ab8500_codec_configuration->cr28_if0del = p_tdm_config->cr28_if0del; /*AB8500_CODEC_CR28_IF0DEL_DELAYED; */ - p_ab8500_codec_configuration->cr28_if0format = - AB8500_CODEC_CR28_IF0FORMAT_I2S_LEFTALIGNED; - p_ab8500_codec_configuration->cr28_if0wl = - p_tdm_config->cr28_if0wl; - } - - else - { - p_ab8500_codec_configuration->cr28_fsync0p = - AB8500_CODEC_CR28_FSYNC0P_FALLING_EDGE; - p_ab8500_codec_configuration->cr28_bitclk0p = p_tdm_config->cr28_bitclk0p; /*AB8500_CODEC_CR28_BITCLK0P_FALLING_EDGE; */ - p_ab8500_codec_configuration->cr28_if0del = p_tdm_config->cr28_if0del; /*AB8500_CODEC_CR28_IF0DEL_DELAYED; */ - p_ab8500_codec_configuration->cr28_if0format = - AB8500_CODEC_CR28_IF0FORMAT_TDM; - p_ab8500_codec_configuration->cr28_if0wl = - p_tdm_config->cr28_if0wl; - } - } - if (AB8500_CODEC_DIRECTION_IN == ab8500_codec_direction - || AB8500_CODEC_DIRECTION_INOUT == - ab8500_codec_direction ) - { - p_ab8500_codec_configuration->cr2_enad1 = - AB8500_CODEC_CR2_ENAD1_ENABLED; - p_ab8500_codec_configuration->cr2_enad2 = - AB8500_CODEC_CR2_ENAD2_ENABLED; - p_ab8500_codec_configuration->cr2_enad3 = - AB8500_CODEC_CR2_ENAD3_ENABLED; - p_ab8500_codec_configuration->cr2_enad4 = - AB8500_CODEC_CR2_ENAD4_ENABLED; - p_ab8500_codec_configuration->cr2_enad5 = - AB8500_CODEC_CR2_ENAD5_ENABLED; - p_ab8500_codec_configuration->cr2_enad6 = - AB8500_CODEC_CR2_ENAD6_ENABLED; - p_ab8500_codec_configuration->cr26_ad1_voice = - AB8500_CODEC_CR26_AD1_VOICE_LOWLATENCYFILTER; - p_ab8500_codec_configuration->cr26_ad2_voice = - AB8500_CODEC_CR26_AD2_VOICE_LOWLATENCYFILTER; - p_ab8500_codec_configuration->cr26_ad3_voice = - AB8500_CODEC_CR26_AD3_VOICE_LOWLATENCYFILTER; - p_ab8500_codec_configuration->cr26_ad4_voice = - AB8500_CODEC_CR26_AD4_VOICE_LOWLATENCYFILTER; - p_ab8500_codec_configuration->cr27_if0_bitclk_osr = - p_tdm_config->cr27_if0_bitclk_osr; - if (AB8500_CODEC_MODE_HIFI == ab8500_codec_mode_in) - { - p_ab8500_codec_configuration->cr28_fsync0p = - AB8500_CODEC_CR28_FSYNC0P_RISING_EDGE; - p_ab8500_codec_configuration->cr28_bitclk0p = p_tdm_config->cr28_bitclk0p; /*AB8500_CODEC_CR28_BITCLK0P_RISING_EDGE; */ - p_ab8500_codec_configuration->cr28_if0del = p_tdm_config->cr28_if0del; /*AB8500_CODEC_CR28_IF0DEL_NOT_DELAYED; */ - p_ab8500_codec_configuration->cr28_if0format = - AB8500_CODEC_CR28_IF0FORMAT_I2S_LEFTALIGNED; - p_ab8500_codec_configuration->cr28_if0wl = - p_tdm_config->cr28_if0wl; - } - - else - { - p_ab8500_codec_configuration->cr28_fsync0p = - AB8500_CODEC_CR28_FSYNC0P_RISING_EDGE; - p_ab8500_codec_configuration->cr28_bitclk0p = p_tdm_config->cr28_bitclk0p; /*AB8500_CODEC_CR28_BITCLK0P_FALLING_EDGE; */ - p_ab8500_codec_configuration->cr28_if0del = p_tdm_config->cr28_if0del; /*AB8500_CODEC_CR28_IF0DEL_NOT_DELAYED; */ - p_ab8500_codec_configuration->cr28_if0format = - AB8500_CODEC_CR28_IF0FORMAT_TDM; - p_ab8500_codec_configuration->cr28_if0wl = - p_tdm_config->cr28_if0wl; - } - } - } - ab8500_codec_error = ab8500_codec_SetModeAndDirectionUpdateCR(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - g_ab8500_codec_system_context.ab8500_codec_direction = - ab8500_codec_direction; - g_ab8500_codec_system_context.ab8500_codec_mode_in = - ab8500_codec_mode_in; - g_ab8500_codec_system_context.ab8500_codec_mode_out = - ab8500_codec_mode_out; - ab8500_codec_error = - ab8500_codec_SetDirection(ab8500_codec_direction); - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_SetSrcVolume */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Sets the record volumes. */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* t_ab8500_codec_src: select source device for recording. */ -/* in_left_volume: record volume for left channel. */ -/* in_right_volume: record volume for right channel. */ -/* OUT: */ -/* None */ -/* */ -/* RETURN: */ -/* AB8500_CODEC_TRANSACTION_FAILED: If transaction fails. */ -/* AB8500_CODEC_OK: if successful. */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_SetSrcVolume - (IN t_ab8500_codec_src src_device, IN t_uint8 in_left_volume, - IN t_uint8 in_right_volume ) { - t_ab8500_codec_error ab8500_codec_error; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - DBGENTER3(" (%lx %lx %lx)", src_device, in_left_volume, - in_right_volume); - if (in_left_volume > AB8500_CODEC_MAX_VOLUME) - { - in_left_volume = AB8500_CODEC_MAX_VOLUME; - } - if (in_right_volume > AB8500_CODEC_MAX_VOLUME) - { - in_right_volume = AB8500_CODEC_MAX_VOLUME; - } - g_ab8500_codec_system_context.in_left_volume = in_left_volume; - g_ab8500_codec_system_context.in_right_volume = in_right_volume; - p_ab8500_codec_configuration->cr65_ad1gain = - AB8500_CODEC_AD_D_VOLUME_MIN + - (in_left_volume * - (AB8500_CODEC_AD_D_VOLUME_MAX - - AB8500_CODEC_AD_D_VOLUME_MIN)) / 100; - p_ab8500_codec_configuration->cr66_ad2gain = - AB8500_CODEC_AD_D_VOLUME_MIN + - (in_left_volume * - (AB8500_CODEC_AD_D_VOLUME_MAX - - AB8500_CODEC_AD_D_VOLUME_MIN)) / 100; - p_ab8500_codec_configuration->cr67_ad3gain = - AB8500_CODEC_AD_D_VOLUME_MIN + - (in_left_volume * - (AB8500_CODEC_AD_D_VOLUME_MAX - - AB8500_CODEC_AD_D_VOLUME_MIN)) / 100; - p_ab8500_codec_configuration->cr68_ad4gain = - AB8500_CODEC_AD_D_VOLUME_MIN + - (in_left_volume * - (AB8500_CODEC_AD_D_VOLUME_MAX - - AB8500_CODEC_AD_D_VOLUME_MIN)) / 100; - p_ab8500_codec_configuration->cr69_ad5gain = - AB8500_CODEC_AD_D_VOLUME_MIN + - (in_left_volume * - (AB8500_CODEC_AD_D_VOLUME_MAX - - AB8500_CODEC_AD_D_VOLUME_MIN)) / 100; - p_ab8500_codec_configuration->cr70_ad6gain = - AB8500_CODEC_AD_D_VOLUME_MIN + - (in_left_volume * - (AB8500_CODEC_AD_D_VOLUME_MAX - - AB8500_CODEC_AD_D_VOLUME_MIN)) / 100; - - /* Set mininimum volume if volume is zero */ - switch (src_device) - { - case AB8500_CODEC_SRC_LINEIN: - p_ab8500_codec_configuration->cr23_linl_gain = - AB8500_CODEC_LINEIN_VOLUME_MIN + - (in_left_volume * - (AB8500_CODEC_LINEIN_VOLUME_MAX - - AB8500_CODEC_LINEIN_VOLUME_MIN)) / 100; - p_ab8500_codec_configuration->cr23_linr_gain = - AB8500_CODEC_LINEIN_VOLUME_MIN + - (in_right_volume * - (AB8500_CODEC_LINEIN_VOLUME_MAX - - AB8500_CODEC_LINEIN_VOLUME_MIN)) / 100; - break; - case AB8500_CODEC_SRC_MICROPHONE_1A: - case AB8500_CODEC_SRC_MICROPHONE_1B: - p_ab8500_codec_configuration->cr20_mic1_gain = - AB8500_CODEC_MIC_VOLUME_MIN + - (in_left_volume * - (AB8500_CODEC_MIC_VOLUME_MAX - - AB8500_CODEC_MIC_VOLUME_MIN)) / 100; - break; - case AB8500_CODEC_SRC_MICROPHONE_2: - p_ab8500_codec_configuration->cr21_mic2_gain = - AB8500_CODEC_MIC_VOLUME_MIN + - (in_left_volume * - (AB8500_CODEC_MIC_VOLUME_MAX - - AB8500_CODEC_MIC_VOLUME_MIN)) / 100; - break; - case AB8500_CODEC_SRC_D_MICROPHONE_1: - break; - case AB8500_CODEC_SRC_D_MICROPHONE_2: - break; - case AB8500_CODEC_SRC_D_MICROPHONE_3: - break; - case AB8500_CODEC_SRC_D_MICROPHONE_4: - break; - case AB8500_CODEC_SRC_D_MICROPHONE_5: - break; - case AB8500_CODEC_SRC_D_MICROPHONE_6: - break; - case AB8500_CODEC_SRC_ALL: - p_ab8500_codec_configuration->cr23_linl_gain = - AB8500_CODEC_LINEIN_VOLUME_MIN + - (in_left_volume * - (AB8500_CODEC_LINEIN_VOLUME_MAX - - AB8500_CODEC_LINEIN_VOLUME_MIN)) / 100; - p_ab8500_codec_configuration->cr23_linr_gain = - AB8500_CODEC_LINEIN_VOLUME_MIN + - (in_right_volume * - (AB8500_CODEC_LINEIN_VOLUME_MAX - - AB8500_CODEC_LINEIN_VOLUME_MIN)) / 100; - p_ab8500_codec_configuration->cr20_mic1_gain = - AB8500_CODEC_MIC_VOLUME_MIN + - (in_left_volume * - (AB8500_CODEC_MIC_VOLUME_MAX - - AB8500_CODEC_MIC_VOLUME_MIN)) / 100; - p_ab8500_codec_configuration->cr21_mic2_gain = - AB8500_CODEC_MIC_VOLUME_MIN + - (in_left_volume * - (AB8500_CODEC_MIC_VOLUME_MAX - - AB8500_CODEC_MIC_VOLUME_MIN)) / 100; - break; - default: - ab8500_codec_error = AB8500_CODEC_INVALID_PARAMETER; - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_SetSrcVolumeUpdateCR(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_SetDestVolume */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Sets the play volumes. */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* out_left_volume: play volume for left channel. */ -/* out_right_volume: play volume for right channel. */ -/* OUT: */ -/* None */ -/* */ -/* RETURN: */ -/* AB8500_CODEC_TRANSACTION_FAILED: If transaction fails. */ -/* AB8500_CODEC_OK: if successful. */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_SetDestVolume - (IN t_ab8500_codec_dest dest_device, IN t_uint8 out_left_volume, - IN t_uint8 out_right_volume ) { - t_ab8500_codec_error ab8500_codec_error; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - DBGENTER3(" (%lx %lx %lx)", dest_device, out_left_volume, - out_right_volume); - if (out_left_volume > AB8500_CODEC_MAX_VOLUME) - { - out_left_volume = AB8500_CODEC_MAX_VOLUME; - } - if (out_right_volume > AB8500_CODEC_MAX_VOLUME) - { - out_right_volume = AB8500_CODEC_MAX_VOLUME; - } - g_ab8500_codec_system_context.out_left_volume = out_left_volume; - g_ab8500_codec_system_context.out_right_volume = out_right_volume; - p_ab8500_codec_configuration->cr71_da1gain = - AB8500_CODEC_DA_D_VOLUME_MIN + - (out_left_volume * - (AB8500_CODEC_DA_D_VOLUME_MAX - - AB8500_CODEC_DA_D_VOLUME_MIN)) / 100; - p_ab8500_codec_configuration->cr72_da2gain = - AB8500_CODEC_DA_D_VOLUME_MIN + - (out_left_volume * - (AB8500_CODEC_DA_D_VOLUME_MAX - - AB8500_CODEC_DA_D_VOLUME_MIN)) / 100; - p_ab8500_codec_configuration->cr73_da3gain = - AB8500_CODEC_DA_D_VOLUME_MIN + - (out_left_volume * - (AB8500_CODEC_DA_D_VOLUME_MAX - - AB8500_CODEC_DA_D_VOLUME_MIN)) / 100; - p_ab8500_codec_configuration->cr74_da4gain = - AB8500_CODEC_DA_D_VOLUME_MIN + - (out_left_volume * - (AB8500_CODEC_DA_D_VOLUME_MAX - - AB8500_CODEC_DA_D_VOLUME_MIN)) / 100; - p_ab8500_codec_configuration->cr75_da5gain = - AB8500_CODEC_DA_D_VOLUME_MIN + - (out_left_volume * - (AB8500_CODEC_DA_D_VOLUME_MAX - - AB8500_CODEC_DA_D_VOLUME_MIN)) / 100; - p_ab8500_codec_configuration->cr76_da6gain = - AB8500_CODEC_DA_D_VOLUME_MIN + - (out_left_volume * - (AB8500_CODEC_DA_D_VOLUME_MAX - - AB8500_CODEC_DA_D_VOLUME_MIN)) / 100; - - /* Set mininimum volume if volume is zero */ - switch (dest_device) - { - case AB8500_CODEC_DEST_HEADSET: - p_ab8500_codec_configuration->cr22_hsl_gain = - AB8500_CODEC_HEADSET_VOLUME_MIN + - (out_left_volume * - (AB8500_CODEC_HEADSET_VOLUME_MAX - - AB8500_CODEC_HEADSET_VOLUME_MIN)) / 100; - p_ab8500_codec_configuration->cr22_hsr_gain = - AB8500_CODEC_HEADSET_VOLUME_MIN + - (out_right_volume * - (AB8500_CODEC_HEADSET_VOLUME_MAX - - AB8500_CODEC_HEADSET_VOLUME_MIN)) / 100; - p_ab8500_codec_configuration->cr79_hsldgain = - AB8500_CODEC_HEADSET_D_VOLUME_0DB; - p_ab8500_codec_configuration->cr80_hsrdgain = - AB8500_CODEC_HEADSET_D_VOLUME_0DB; - break; - case AB8500_CODEC_DEST_EARPIECE: - p_ab8500_codec_configuration->cr79_hsldgain = - AB8500_CODEC_HEADSET_D_VOLUME_0DB; - break; - case AB8500_CODEC_DEST_HANDSFREE: - break; - case AB8500_CODEC_DEST_VIBRATOR_L: - p_ab8500_codec_configuration->cr16_pwmnldutycycle = - AB8500_CODEC_VIBRATOR_VOLUME_MIN; - p_ab8500_codec_configuration->cr17_pwmpldutycycle = - AB8500_CODEC_VIBRATOR_VOLUME_MIN + - (out_right_volume * - (AB8500_CODEC_VIBRATOR_VOLUME_MAX - - AB8500_CODEC_VIBRATOR_VOLUME_MIN)) / 100; - break; - case AB8500_CODEC_DEST_VIBRATOR_R: - p_ab8500_codec_configuration->cr18_pwmnrdutycycle = - AB8500_CODEC_VIBRATOR_VOLUME_MIN; - p_ab8500_codec_configuration->cr19_pwmprdutycycle = - AB8500_CODEC_VIBRATOR_VOLUME_MIN + - (out_right_volume * - (AB8500_CODEC_VIBRATOR_VOLUME_MAX - - AB8500_CODEC_VIBRATOR_VOLUME_MIN)) / 100; - break; - case AB8500_CODEC_DEST_ALL: - p_ab8500_codec_configuration->cr22_hsl_gain = - AB8500_CODEC_HEADSET_VOLUME_MIN + - (out_left_volume * - (AB8500_CODEC_HEADSET_VOLUME_MAX - - AB8500_CODEC_HEADSET_VOLUME_MIN)) / 100; - p_ab8500_codec_configuration->cr22_hsr_gain = - AB8500_CODEC_HEADSET_VOLUME_MIN + - (out_right_volume * - (AB8500_CODEC_HEADSET_VOLUME_MAX - - AB8500_CODEC_HEADSET_VOLUME_MIN)) / 100; - p_ab8500_codec_configuration->cr79_hsldgain = - AB8500_CODEC_HEADSET_D_VOLUME_0DB; - break; - default: - ab8500_codec_error = AB8500_CODEC_INVALID_PARAMETER; - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_SetDestVolumeUpdateCR(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_SetMasterMode */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Set the Audio Codec in Master mode. */ -/* */ -/* ARGUMENTS */ -/* IN: t_codec_master_mode: Enable/disable master mode */ -/* OUT: */ -/* None */ -/* RETURN: */ -/* AB8500_CODEC_TRANSACTION_FAILED: If transaction fails. */ -/* AB8500_CODEC_OK: if successful. */ -/* REMARK: Call this API after calling AB8500_CODEC_SetModeAndDirection() API*/ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_SetMasterMode(IN - t_ab8500_codec_master_mode - mode) -{ - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - DBGENTER0(); - if (AB8500_CODEC_AUDIO_INTERFACE_1 == - g_ab8500_codec_system_context.audio_interface) - { - p_ab8500_codec_configuration->cr27_en_mastgen = - AB8500_CODEC_CR27_EN_MASTGEN_ENABLED; - p_ab8500_codec_configuration->cr27_enfs_bitclk1 = - AB8500_CODEC_CR27_ENFS_BITCLK1_ENABLED; - if (AB8500_CODEC_MASTER_MODE_ENABLE == mode) - { - p_ab8500_codec_configuration->cr29_if1master = - AB8500_CODEC_CR29_IF1MASTER_FS1CK1_OUTPUT; - } - - else - { - p_ab8500_codec_configuration->cr29_if1master = - AB8500_CODEC_CR29_IF1MASTER_FS1CK1_INPUT; - } - } - - else - { - p_ab8500_codec_configuration->cr27_en_mastgen = - AB8500_CODEC_CR27_EN_MASTGEN_ENABLED; - p_ab8500_codec_configuration->cr27_enfs_bitclk0 = - AB8500_CODEC_CR27_ENFS_BITCLK0_ENABLED; - if (AB8500_CODEC_MASTER_MODE_ENABLE == mode) - { - p_ab8500_codec_configuration->cr29_if0master = - AB8500_CODEC_CR29_IF0MASTER_FS0CK0_OUTPUT; - } - - else - { - p_ab8500_codec_configuration->cr29_if0master = - AB8500_CODEC_CR29_IF0MASTER_FS0CK0_INPUT; - } - } - ab8500_codec_error = ab8500_codec_UpdateCR27(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR29(); - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_SelectInput */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Select input source for recording. */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* input_src: select input source for recording when several sources */ -/* are supported in codec. */ -/* OUT: */ -/* None */ -/* */ -/* RETURN: */ -/* AB8500_CODEC_INVALID_PARAMETER: If input_src provided is invalid */ -/* by the codec hardware in use. */ -/* AB8500_CODEC_TRANSACTION_FAILED: If transaction fails. */ -/* AB8500_CODEC_OK: if successful. */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_SelectInput(IN t_ab8500_codec_src - ab8500_codec_src) -{ - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - DBGENTER1(" (%lx)", ab8500_codec_src); - g_ab8500_codec_system_context.ab8500_codec_src = ab8500_codec_src; - ab8500_codec_error = - ab8500_codec_SetDirection(AB8500_CODEC_DIRECTION_IN); - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_SelectOutput */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Select output desination for playing. */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* output_dest: select output destination for playing when several are */ -/* supported by codec hardware. */ -/* OUT: */ -/* None */ -/* */ -/* RETURN: */ -/* AB8500_CODEC_INVALID_PARAMETER: If output_src provided is invalid */ -/* AB8500_CODEC_TRANSACTION_FAILED: If transaction fails. */ -/* AB8500_CODEC_OK: if successful. */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_SelectOutput(IN t_ab8500_codec_dest - ab8500_codec_dest) -{ - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - g_ab8500_codec_system_context.ab8500_codec_dest = ab8500_codec_dest; - DBGENTER1(" (%lx)", ab8500_codec_dest); - ab8500_codec_error = - ab8500_codec_SetDirection(AB8500_CODEC_DIRECTION_OUT); - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_PowerDown */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Shuts the audio codec down completely. */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* OUT: */ -/* */ -/* RETURN: */ -/* AB8500_CODEC_TRANSACTION_FAILED: If transaction fails. */ -/* AB8500_CODEC_OK: if successful. */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_PowerDown(void) -{ - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - g_ab8500_codec_system_context.ab8500_codec_configuration.cr0_powerup = - AB8500_CODEC_CR0_POWERUP_OFF; - ab8500_codec_error = ab8500_codec_UpdateCR0(); - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_PowerUp */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Switch on the audio codec. */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* None */ -/* OUT: */ -/* None */ -/* RETURN: */ -/* AB8500_CODEC_TRANSACTION_FAILED: If transaction fails. */ -/* CODEC_OK: if successful. */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_PowerUp(void) -{ - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - DBGENTER(); - g_ab8500_codec_system_context.ab8500_codec_configuration.cr0_powerup = - AB8500_CODEC_CR0_POWERUP_ON; - g_ab8500_codec_system_context.ab8500_codec_configuration.cr0_enaana = - AB8500_CODEC_CR0_ENAANA_ON; - ab8500_codec_error = ab8500_codec_UpdateCR0(); - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_SelectInterface */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Select the Audio Interface 0 or 1. */ -/* */ -/* ARGUMENTS */ -/* IN: t_ab8500_codec_audio_interface: The selected interface */ -/* */ -/* OUT: */ -/* None */ -/* RETURN: */ -/* AB8500_CODEC_OK: Always. */ -/* REMARK: Call this API before using a function of the low level drivers */ -/* to select the interface that you want to configure */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_SelectInterface(IN - t_ab8500_codec_audio_interface - audio_interface) -{ - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - DBGENTER0(); - g_ab8500_codec_system_context.audio_interface = audio_interface; - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_GetInterface */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Get the Audio Interface 0 or 1. */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* None */ -/* OUT: p_audio_interface: Store the selected interface */ -/* RETURN: */ -/* AB8500_CODEC_OK: Always */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Re-Entrant */ -/* REENTRANCY ISSUES: No Issues */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_GetInterface(OUT - t_ab8500_codec_audio_interface - * p_audio_interface) -{ - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - DBGENTER0(); - *p_audio_interface = g_ab8500_codec_system_context.audio_interface; - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_SetAnalogLoopback */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Sets Line-In to HeadSet loopback with the required gain. */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* out_left_volume: play volume for left channel. */ -/* out_right_volume: play volume for right channel. */ -/* OUT: */ -/* None */ -/* */ -/* RETURN: */ -/* AB8500_CODEC_TRANSACTION_FAILED: If transaction fails. */ -/* AB8500_CODEC_OK: if successful. */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_SetAnalogLoopback(IN t_uint8 - out_left_volume, - IN t_uint8 - out_right_volume) -{ - t_ab8500_codec_error ab8500_codec_error; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - DBGENTER2(" (%lx %lx)", out_left_volume, out_right_volume); - if (out_left_volume > AB8500_CODEC_MAX_VOLUME) - { - out_left_volume = AB8500_CODEC_MAX_VOLUME; - } - if (out_right_volume > AB8500_CODEC_MAX_VOLUME) - { - out_right_volume = AB8500_CODEC_MAX_VOLUME; - } - g_ab8500_codec_system_context.out_left_volume = out_left_volume; - g_ab8500_codec_system_context.out_right_volume = out_right_volume; - p_ab8500_codec_configuration->cr24_lintohsl_gain = - AB8500_CODEC_LINEIN_TO_HS_L_R_VOLUME_MIN + - (out_left_volume * - (AB8500_CODEC_LINEIN_TO_HS_L_R_VOLUME_MAX - - AB8500_CODEC_LINEIN_TO_HS_L_R_VOLUME_MIN)) / 100; - p_ab8500_codec_configuration->cr25_lintohsr_gain = - AB8500_CODEC_LINEIN_TO_HS_L_R_VOLUME_MIN + - (out_right_volume * - (AB8500_CODEC_LINEIN_TO_HS_L_R_VOLUME_MAX - - AB8500_CODEC_LINEIN_TO_HS_L_R_VOLUME_MIN)) / 100; - ab8500_codec_error = ab8500_codec_UpdateCR24(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR25(); - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_RemoveAnalogLoopback */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Remove Line-In to HeadSet loopback. */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* None */ -/* OUT: */ -/* None */ -/* */ -/* RETURN: */ -/* AB8500_CODEC_TRANSACTION_FAILED: If transaction fails. */ -/* AB8500_CODEC_OK: if successful. */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_RemoveAnalogLoopback(void) -{ - t_ab8500_codec_error ab8500_codec_error; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - DBGENTER0(); - p_ab8500_codec_configuration->cr24_lintohsl_gain = - AB8500_CODEC_LINEIN_TO_HS_L_R_LOOP_OPEN; - p_ab8500_codec_configuration->cr25_lintohsr_gain = - AB8500_CODEC_LINEIN_TO_HS_L_R_LOOP_OPEN; - ab8500_codec_error = ab8500_codec_UpdateCR24(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR25(); - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_EnableBypassMode */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Enables IF0 to IF1 path or vice versa */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* None */ -/* OUT: */ -/* None */ -/* */ -/* RETURN: */ -/* AB8500_CODEC_TRANSACTION_FAILED: If transaction fails. */ -/* AB8500_CODEC_OK: if successful. */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_EnableBypassMode(void) -{ - t_ab8500_codec_error ab8500_codec_error; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - DBGENTER0(); - if (AB8500_CODEC_AUDIO_INTERFACE_1 == - g_ab8500_codec_system_context.audio_interface) - { - p_ab8500_codec_configuration->cr29_if1datoif0ad = - AB8500_CODEC_CR29_IF1DATOIF0AD_SENT; - p_ab8500_codec_configuration->cr29_if1cktoif0ck = - AB8500_CODEC_CR29_IF1CKTOIF0CK_SENT; - } - - else - { - p_ab8500_codec_configuration->cr29_if0datoif1ad = - AB8500_CODEC_CR29_IF0DATOIF1AD_SENT; - p_ab8500_codec_configuration->cr29_if0cktoif1ck = - AB8500_CODEC_CR29_IF0CKTOIF1CK_SENT; - } - ab8500_codec_error = ab8500_codec_UpdateCR29(); - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_DisableBypassMode */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Disables IF0 to IF1 path or vice versa */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* None */ -/* OUT: */ -/* None */ -/* */ -/* RETURN: */ -/* AB8500_CODEC_TRANSACTION_FAILED: If transaction fails. */ -/* AB8500_CODEC_OK: if successful. */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_DisableBypassMode(void) -{ - t_ab8500_codec_error ab8500_codec_error; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - DBGENTER0(); - if (AB8500_CODEC_AUDIO_INTERFACE_1 == - g_ab8500_codec_system_context.audio_interface) - { - p_ab8500_codec_configuration->cr29_if1datoif0ad = - AB8500_CODEC_CR29_IF1DATOIF0AD_NOTSENT; - p_ab8500_codec_configuration->cr29_if1cktoif0ck = - AB8500_CODEC_CR29_IF1CKTOIF0CK_NOTSENT; - } - - else - { - p_ab8500_codec_configuration->cr29_if0datoif1ad = - AB8500_CODEC_CR29_IF0DATOIF1AD_NOTSENT; - p_ab8500_codec_configuration->cr29_if0cktoif1ck = - AB8500_CODEC_CR29_IF0CKTOIF1CK_NOTSENT; - } - ab8500_codec_error = ab8500_codec_UpdateCR29(); - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_SrcPowerControl */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Enables/Disables & UnMute/Mute the desired source */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* t_ab8500_codec_src: select source device for enabling/disabling. */ -/* t_ab8500_codec_src_state: Enable/Disable */ -/* OUT: */ -/* None */ -/* */ -/* RETURN: */ -/* AB8500_CODEC_TRANSACTION_FAILED: If transaction fails. */ -/* AB8500_CODEC_OK: if successful. */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_SrcPowerControl(IN - t_ab8500_codec_src - src_device, - t_ab8500_codec_src_state - state) -{ - t_ab8500_codec_error ab8500_codec_error; - DBGENTER2(" (%lx %lx)", src_device, state); - if (src_device <= AB8500_CODEC_SRC_D_MICROPHONE_2) - { - ab8500_codec_error = - ab8500_codec_SrcPowerControlSwitch1(src_device, state); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - } - - else if (src_device <= AB8500_CODEC_SRC_ALL) - { - ab8500_codec_error = - ab8500_codec_SrcPowerControlSwitch2(src_device, state); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - } - - else - { - ab8500_codec_error = AB8500_CODEC_INVALID_PARAMETER; - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR5(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR6(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR7(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR63(); - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_DestPowerControl */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Enables/Disables & UnMute/Mute the desired destination */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* t_ab8500_codec_dest: select destination device for enabling/disabling. */ -/* t_ab8500_codec_dest_state: Enable/Disable */ -/* OUT: */ -/* None */ -/* */ -/* RETURN: */ -/* AB8500_CODEC_TRANSACTION_FAILED: If transaction fails. */ -/* AB8500_CODEC_OK: if successful. */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_DestPowerControl(IN - t_ab8500_codec_dest - dest_device, - t_ab8500_codec_dest_state - state) -{ - t_ab8500_codec_error ab8500_codec_error; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context.ab8500_codec_configuration; - DBGENTER2(" (%lx %lx)", dest_device, state); - switch (dest_device) - { - case AB8500_CODEC_DEST_HEADSET: - if (AB8500_CODEC_DEST_STATE_ENABLE == state) - { - p_ab8500_codec_configuration->cr8_enhsl = - AB8500_CODEC_CR8_ENHSL_ENABLED; - p_ab8500_codec_configuration->cr8_enhsr = - AB8500_CODEC_CR8_ENHSR_ENABLED; - p_ab8500_codec_configuration->cr10_mutehsl = - AB8500_CODEC_CR10_MUTEHSL_DISABLED; - p_ab8500_codec_configuration->cr10_mutehsr = - AB8500_CODEC_CR10_MUTEHSR_DISABLED; - p_ab8500_codec_configuration->cr9_endachsl = - AB8500_CODEC_CR9_ENDACHSL_ENABLED; - p_ab8500_codec_configuration->cr9_endachsr = - AB8500_CODEC_CR9_ENDACHSR_ENABLED; - } - - else - { - p_ab8500_codec_configuration->cr8_enhsl = - AB8500_CODEC_CR8_ENHSL_DISABLED; - p_ab8500_codec_configuration->cr8_enhsr = - AB8500_CODEC_CR8_ENHSR_DISABLED; - p_ab8500_codec_configuration->cr10_mutehsl = - AB8500_CODEC_CR10_MUTEHSL_ENABLED; - p_ab8500_codec_configuration->cr10_mutehsr = - AB8500_CODEC_CR10_MUTEHSR_ENABLED; - p_ab8500_codec_configuration->cr9_endachsl = - AB8500_CODEC_CR9_ENDACHSL_DISABLED; - p_ab8500_codec_configuration->cr9_endachsr = - AB8500_CODEC_CR9_ENDACHSR_DISABLED; - } - break; - case AB8500_CODEC_DEST_EARPIECE: - if (AB8500_CODEC_DEST_STATE_ENABLE == state) - { - p_ab8500_codec_configuration->cr8_enear = - AB8500_CODEC_CR8_ENEAR_ENABLED; - p_ab8500_codec_configuration->cr9_endacear = - AB8500_CODEC_CR9_ENDACEAR_ENABLED; - p_ab8500_codec_configuration->cr10_muteear = - AB8500_CODEC_CR10_MUTEEAR_DISABLED; - } - - else - { - p_ab8500_codec_configuration->cr8_enear = - AB8500_CODEC_CR8_ENEAR_DISABLED; - p_ab8500_codec_configuration->cr9_endacear = - AB8500_CODEC_CR9_ENDACEAR_DISABLED; - p_ab8500_codec_configuration->cr10_muteear = - AB8500_CODEC_CR10_MUTEEAR_ENABLED; - } - break; - case AB8500_CODEC_DEST_HANDSFREE: - if (AB8500_CODEC_DEST_STATE_ENABLE == state) - { - p_ab8500_codec_configuration->cr8_enhfl = - AB8500_CODEC_CR8_ENHFL_ENABLED; - p_ab8500_codec_configuration->cr8_enhfr = - AB8500_CODEC_CR8_ENHFR_ENABLED; - p_ab8500_codec_configuration->cr9_endachfl = - AB8500_CODEC_CR9_ENDACHFL_ENABLED; - p_ab8500_codec_configuration->cr9_endachfr = - AB8500_CODEC_CR9_ENDACHFR_ENABLED; - } - - else - { - p_ab8500_codec_configuration->cr8_enhfl = - AB8500_CODEC_CR8_ENHFL_DISABLED; - p_ab8500_codec_configuration->cr8_enhfr = - AB8500_CODEC_CR8_ENHFR_DISABLED; - p_ab8500_codec_configuration->cr9_endachfl = - AB8500_CODEC_CR9_ENDACHFL_DISABLED; - p_ab8500_codec_configuration->cr9_endachfr = - AB8500_CODEC_CR9_ENDACHFR_DISABLED; - } - break; - case AB8500_CODEC_DEST_VIBRATOR_L: - if (AB8500_CODEC_DEST_STATE_ENABLE == state) - { - p_ab8500_codec_configuration->cr8_envibl = - AB8500_CODEC_CR8_ENVIBL_ENABLED; - p_ab8500_codec_configuration->cr9_endacvibl = - AB8500_CODEC_CR9_ENDACVIBL_ENABLED; - p_ab8500_codec_configuration->cr15_pwmtovibl = - AB8500_CODEC_CR15_PWMTOVIBL_PWM; - p_ab8500_codec_configuration->cr15_pwmlctrl = - AB8500_CODEC_CR15_PWMLCTRL_PWMNPLDUTYCYCLE; - p_ab8500_codec_configuration->cr15_pwmnlctrl = - AB8500_CODEC_CR15_PWMNLCTRL_PWMNLDUTYCYCLE; - p_ab8500_codec_configuration->cr15_pwmplctrl = - AB8500_CODEC_CR15_PWMPLCTRL_PWMPLDUTYCYCLE; - } - - else - { - p_ab8500_codec_configuration->cr8_envibl = - AB8500_CODEC_CR8_ENVIBL_DISABLED; - p_ab8500_codec_configuration->cr9_endacvibl = - AB8500_CODEC_CR9_ENDACVIBL_DISABLED; - p_ab8500_codec_configuration->cr15_pwmtovibl = - AB8500_CODEC_CR15_PWMTOVIBL_DA_PATH; - p_ab8500_codec_configuration->cr15_pwmlctrl = - AB8500_CODEC_CR15_PWMLCTRL_PWMNPLGPOL; - p_ab8500_codec_configuration->cr15_pwmnlctrl = - AB8500_CODEC_CR15_PWMNLCTRL_PWMNLGPOL; - p_ab8500_codec_configuration->cr15_pwmplctrl = - AB8500_CODEC_CR15_PWMPLCTRL_PWMPLGPOL; - } - break; - case AB8500_CODEC_DEST_VIBRATOR_R: - if (AB8500_CODEC_DEST_STATE_ENABLE == state) - { - p_ab8500_codec_configuration->cr8_envibr = - AB8500_CODEC_CR8_ENVIBR_ENABLED; - p_ab8500_codec_configuration->cr9_endacvibr = - AB8500_CODEC_CR9_ENDACVIBR_ENABLED; - p_ab8500_codec_configuration->cr15_pwmtovibr = - AB8500_CODEC_CR15_PWMTOVIBR_PWM; - p_ab8500_codec_configuration->cr15_pwmrctrl = - AB8500_CODEC_CR15_PWMRCTRL_PWMNPRDUTYCYCLE; - p_ab8500_codec_configuration->cr15_pwmnrctrl = - AB8500_CODEC_CR15_PWMNRCTRL_PWMNRDUTYCYCLE; - p_ab8500_codec_configuration->cr15_pwmprctrl = - AB8500_CODEC_CR15_PWMPRCTRL_PWMPRDUTYCYCLE; - } - - else - { - p_ab8500_codec_configuration->cr8_envibr = - AB8500_CODEC_CR8_ENVIBR_DISABLED; - p_ab8500_codec_configuration->cr9_endacvibr = - AB8500_CODEC_CR9_ENDACVIBR_DISABLED; - p_ab8500_codec_configuration->cr15_pwmtovibr = - AB8500_CODEC_CR15_PWMTOVIBR_DA_PATH; - p_ab8500_codec_configuration->cr15_pwmrctrl = - AB8500_CODEC_CR15_PWMRCTRL_PWMNPRGPOL; - p_ab8500_codec_configuration->cr15_pwmnrctrl = - AB8500_CODEC_CR15_PWMNRCTRL_PWMNRGPOL; - p_ab8500_codec_configuration->cr15_pwmprctrl = - AB8500_CODEC_CR15_PWMPRCTRL_PWMPRGPOL; - } - break; - case AB8500_CODEC_DEST_ALL: - if (AB8500_CODEC_DEST_STATE_ENABLE == state) - { - p_ab8500_codec_configuration->cr8_enhsl = - AB8500_CODEC_CR8_ENHSL_ENABLED; - p_ab8500_codec_configuration->cr8_enhsr = - AB8500_CODEC_CR8_ENHSR_ENABLED; - p_ab8500_codec_configuration->cr8_enear = - AB8500_CODEC_CR8_ENEAR_ENABLED; - p_ab8500_codec_configuration->cr8_enhfl = - AB8500_CODEC_CR8_ENHFL_ENABLED; - p_ab8500_codec_configuration->cr8_enhfr = - AB8500_CODEC_CR8_ENHFR_ENABLED; - p_ab8500_codec_configuration->cr8_envibl = - AB8500_CODEC_CR8_ENVIBL_ENABLED; - p_ab8500_codec_configuration->cr8_envibr = - AB8500_CODEC_CR8_ENVIBR_ENABLED; - p_ab8500_codec_configuration->cr9_endacear = - AB8500_CODEC_CR9_ENDACEAR_ENABLED; - p_ab8500_codec_configuration->cr9_endachfl = - AB8500_CODEC_CR9_ENDACHFL_ENABLED; - p_ab8500_codec_configuration->cr9_endachfr = - AB8500_CODEC_CR9_ENDACHFR_ENABLED; - p_ab8500_codec_configuration->cr9_endacvibl = - AB8500_CODEC_CR9_ENDACVIBL_ENABLED; - p_ab8500_codec_configuration->cr9_endacvibr = - AB8500_CODEC_CR9_ENDACVIBR_ENABLED; - p_ab8500_codec_configuration->cr10_mutehsl = - AB8500_CODEC_CR10_MUTEHSL_DISABLED; - p_ab8500_codec_configuration->cr10_mutehsr = - AB8500_CODEC_CR10_MUTEHSR_DISABLED; - p_ab8500_codec_configuration->cr10_muteear = - AB8500_CODEC_CR10_MUTEEAR_DISABLED; - p_ab8500_codec_configuration->cr15_pwmtovibl = - AB8500_CODEC_CR15_PWMTOVIBL_PWM; - p_ab8500_codec_configuration->cr15_pwmlctrl = - AB8500_CODEC_CR15_PWMLCTRL_PWMNPLDUTYCYCLE; - p_ab8500_codec_configuration->cr15_pwmnlctrl = - AB8500_CODEC_CR15_PWMNLCTRL_PWMNLDUTYCYCLE; - p_ab8500_codec_configuration->cr15_pwmplctrl = - AB8500_CODEC_CR15_PWMPLCTRL_PWMPLDUTYCYCLE; - p_ab8500_codec_configuration->cr15_pwmtovibr = - AB8500_CODEC_CR15_PWMTOVIBR_PWM; - p_ab8500_codec_configuration->cr15_pwmrctrl = - AB8500_CODEC_CR15_PWMRCTRL_PWMNPRDUTYCYCLE; - p_ab8500_codec_configuration->cr15_pwmnrctrl = - AB8500_CODEC_CR15_PWMNRCTRL_PWMNRDUTYCYCLE; - p_ab8500_codec_configuration->cr15_pwmprctrl = - AB8500_CODEC_CR15_PWMPRCTRL_PWMPRDUTYCYCLE; - } - - else - { - p_ab8500_codec_configuration->cr8_enhsl = - AB8500_CODEC_CR8_ENHSL_DISABLED; - p_ab8500_codec_configuration->cr8_enhsr = - AB8500_CODEC_CR8_ENHSR_DISABLED; - p_ab8500_codec_configuration->cr8_enear = - AB8500_CODEC_CR8_ENEAR_DISABLED; - p_ab8500_codec_configuration->cr8_enhfl = - AB8500_CODEC_CR8_ENHFL_DISABLED; - p_ab8500_codec_configuration->cr8_enhfr = - AB8500_CODEC_CR8_ENHFR_DISABLED; - p_ab8500_codec_configuration->cr8_envibl = - AB8500_CODEC_CR8_ENVIBL_DISABLED; - p_ab8500_codec_configuration->cr8_envibr = - AB8500_CODEC_CR8_ENVIBR_DISABLED; - p_ab8500_codec_configuration->cr9_endacear = - AB8500_CODEC_CR9_ENDACEAR_DISABLED; - p_ab8500_codec_configuration->cr9_endachfl = - AB8500_CODEC_CR9_ENDACHFL_DISABLED; - p_ab8500_codec_configuration->cr9_endachfr = - AB8500_CODEC_CR9_ENDACHFR_DISABLED; - p_ab8500_codec_configuration->cr9_endacvibl = - AB8500_CODEC_CR9_ENDACVIBL_DISABLED; - p_ab8500_codec_configuration->cr9_endacvibr = - AB8500_CODEC_CR9_ENDACVIBR_DISABLED; - p_ab8500_codec_configuration->cr10_mutehsl = - AB8500_CODEC_CR10_MUTEHSL_ENABLED; - p_ab8500_codec_configuration->cr10_mutehsr = - AB8500_CODEC_CR10_MUTEHSR_ENABLED; - p_ab8500_codec_configuration->cr10_muteear = - AB8500_CODEC_CR10_MUTEEAR_ENABLED; - p_ab8500_codec_configuration->cr15_pwmtovibl = - AB8500_CODEC_CR15_PWMTOVIBL_DA_PATH; - p_ab8500_codec_configuration->cr15_pwmlctrl = - AB8500_CODEC_CR15_PWMLCTRL_PWMNPLGPOL; - p_ab8500_codec_configuration->cr15_pwmnlctrl = - AB8500_CODEC_CR15_PWMNLCTRL_PWMNLGPOL; - p_ab8500_codec_configuration->cr15_pwmplctrl = - AB8500_CODEC_CR15_PWMPLCTRL_PWMPLGPOL; - p_ab8500_codec_configuration->cr15_pwmtovibr = - AB8500_CODEC_CR15_PWMTOVIBR_DA_PATH; - p_ab8500_codec_configuration->cr15_pwmrctrl = - AB8500_CODEC_CR15_PWMRCTRL_PWMNPRGPOL; - p_ab8500_codec_configuration->cr15_pwmnrctrl = - AB8500_CODEC_CR15_PWMNRCTRL_PWMNRGPOL; - p_ab8500_codec_configuration->cr15_pwmprctrl = - AB8500_CODEC_CR15_PWMPRCTRL_PWMPRGPOL; - } - break; - default: - ab8500_codec_error = AB8500_CODEC_INVALID_PARAMETER; - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_DestPowerControlUpdateCR(); - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_GetVersion */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* This routine populates the pVersion structure with */ -/* the current version of HCL. */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* None */ -/* OUT: */ -/* p_version: this parameter is used to return current HCL version. */ -/* */ -/* RETURN: */ -/* AB8500_CODEC_ERROR: if p_version is NULL. */ -/* AB8500_CODEC_OK: if successful */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Re-Entrant */ -/* REENTRANCY ISSUES: No Issues */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_GetVersion(OUT t_version * p_version) -{ - DBGENTER1(" (%lx)", p_version); - if (p_version != NULL) - { - p_version->minor = AB8500_CODEC_HCL_MINOR_ID; - p_version->major = AB8500_CODEC_HCL_MAJOR_ID; - p_version->version = AB8500_CODEC_HCL_VERSION_ID; - DBGEXIT0(AB8500_CODEC_OK); - return (AB8500_CODEC_OK); - } - - else - { - DBGEXIT0(AB8500_CODEC_INVALID_PARAMETER); - return (AB8500_CODEC_INVALID_PARAMETER); - } -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_SetDbgLevel */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Set the debug level used by the debug module (mask-like value). */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* debug_level: debug level to be set */ -/* OUT: */ -/* None */ -/* */ -/* RETURN: */ -/* AB8500_CODEC_OK: always */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Re-Entrant */ -/* REENTRANCY ISSUES: No Issues */ - -/****************************************************************************/ -/* -PUBLIC t_ab8500_codec_error AB8500_CODEC_SetDbgLevel(IN t_dbg_level dbg_level) -{ - DBGENTER1(" (%d)", dbg_level); - dbg_level = dbg_level; -#ifdef __DEBUG - MY_DEBUG_LEVEL_VAR_NAME = dbg_level; -#endif - DBGEXIT(AB8500_CODEC_OK); - return(AB8500_CODEC_OK); -} - */ - -/****************************************************************************/ -/* NAME: AB8500_CODEC_GetDbgLevel */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Set the debug level used by the debug module (mask-like value). */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* None */ -/* OUT: */ -/* p_dbg_level: this parameter is used to return debug level. */ -/* */ -/* RETURN: */ -/* AB8500_CODEC_ERROR: if p_version is NULL. */ -/* AB8500_CODEC_OK: if successful */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Re-Entrant */ -/* REENTRANCY ISSUES: No Issues */ - -/****************************************************************************/ -/* -PUBLIC t_ab8500_codec_error AB8500_CODEC_GetDbgLevel(OUT t_dbg_level *p_dbg_level) -{ - if (NULL == p_dbg_level) - { - DBGEXIT(AB8500_CODEC_INVALID_PARAMETER); - return(AB8500_CODEC_INVALID_PARAMETER); - } - -#ifdef __DEBUG - * p_dbg_level = MY_DEBUG_LEVEL_VAR_NAME; -#endif - DBGEXIT(AB8500_CODEC_OK); - return(AB8500_CODEC_OK); -} -*/ -/****************************************************************************/ -/* NAME: AB8500_CODEC_ADSlotAllocation */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* AD Data Allocation in slots. */ -/* */ -/* ARGUMENTS */ -/* IN: t_ab8500_codec_slot: The slot to be allocated. */ -/* IN: t_ab8500_codec_cr31_to_cr46_ad_data_allocation: The value */ -/* to be allocated. */ -/* OUT: */ -/* None */ -/* RETURN: */ -/* AB8500_CODEC_INVALID_PARAMETER: If invalid slot number */ -/* AB8500_CODEC_OK: if successful. */ -/* REMARK: */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_ADSlotAllocation - (IN t_ab8500_codec_slot ad_slot, - IN t_ab8500_codec_cr31_to_cr46_ad_data_allocation value ) { - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - DBGENTER2(" (%lx %lx)", ad_slot, value); - if (ad_slot <= AB8500_CODEC_SLOT7) - { - ab8500_codec_error = - ab8500_codec_ADSlotAllocationSwitch1(ad_slot, value); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - } - - else if (ad_slot <= AB8500_CODEC_SLOT15) - { - ab8500_codec_error = - ab8500_codec_ADSlotAllocationSwitch2(ad_slot, value); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - } - - else if (ad_slot <= AB8500_CODEC_SLOT23) - { - ab8500_codec_error = - ab8500_codec_ADSlotAllocationSwitch3(ad_slot, value); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - } - - else if (ad_slot <= AB8500_CODEC_SLOT31) - { - ab8500_codec_error = - ab8500_codec_ADSlotAllocationSwitch4(ad_slot, value); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - } - - else - { - ab8500_codec_error = AB8500_CODEC_INVALID_PARAMETER; - } - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_DASlotAllocation */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Allocate the Audio Interface slot for DA paths. */ -/* */ -/* ARGUMENTS */ -/* IN: t_ab8500_codec_da_channel_number: Channel number 1/2/3/4/5/6 */ -/* IN: t_ab8500_codec_cr51_to_cr56_sltoda: Slot number */ -/* */ -/* OUT: */ -/* None */ -/* RETURN: */ -/* AB8500_CODEC_INVALID_PARAMETER: If invalid channel number */ -/* AB8500_CODEC_OK: if successful. */ -/* REMARK: */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_DASlotAllocation - (IN t_ab8500_codec_da_channel_number channel_number, - IN t_ab8500_codec_cr51_to_cr58_sltoda slot ) { - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - t_ab8500_codec_cr0_powerup ab8500_codec_cr0_powerup; - DBGENTER2(" (%lx %lx)", channel_number, slot); - p_ab8500_codec_configuration->cr51_da12_voice = - AB8500_CODEC_CR51_DA12_VOICE_LOWLATENCYFILTER; - switch (channel_number) - { - case AB8500_CODEC_DA_CHANNEL_NUMBER_1: - p_ab8500_codec_configuration->cr51_sltoda1 = slot; - break; - case AB8500_CODEC_DA_CHANNEL_NUMBER_2: - p_ab8500_codec_configuration->cr52_sltoda2 = slot; - break; - case AB8500_CODEC_DA_CHANNEL_NUMBER_3: - p_ab8500_codec_configuration->cr53_sltoda3 = slot; - break; - case AB8500_CODEC_DA_CHANNEL_NUMBER_4: - p_ab8500_codec_configuration->cr54_sltoda4 = slot; - break; - case AB8500_CODEC_DA_CHANNEL_NUMBER_5: - p_ab8500_codec_configuration->cr55_sltoda5 = slot; - break; - case AB8500_CODEC_DA_CHANNEL_NUMBER_6: - p_ab8500_codec_configuration->cr56_sltoda6 = slot; - break; - case AB8500_CODEC_DA_CHANNEL_NUMBER_7: - p_ab8500_codec_configuration->cr57_sltoda7 = slot; - break; - case AB8500_CODEC_DA_CHANNEL_NUMBER_8: - p_ab8500_codec_configuration->cr58_sltoda8 = slot; - break; - default: - ab8500_codec_error = AB8500_CODEC_INVALID_PARAMETER; - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_cr0_powerup = p_ab8500_codec_configuration->cr0_powerup; - p_ab8500_codec_configuration->cr0_powerup = - AB8500_CODEC_CR0_POWERUP_OFF; - ab8500_codec_error = ab8500_codec_UpdateCR0(); - if (AB8500_CODEC_OK != ab8500_codec_error) - { - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR51(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR52(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR53(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR54(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR55(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR56(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR57(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR58(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - p_ab8500_codec_configuration->cr0_powerup = ab8500_codec_cr0_powerup; - ab8500_codec_error = ab8500_codec_UpdateCR0(); - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_ConfigureBurstFifo */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Configuration for Burst FIFO control */ -/* */ -/* ARGUMENTS */ -/* IN: t_ab8500_codec_burst_fifo_config: structure for configuration of */ -/* burst FIFO */ -/* OUT: */ -/* None */ -/* RETURN: */ -/* AB8500_CODEC_INVALID_PARAMETER: If invalid parameter */ -/* AB8500_CODEC_UNSUPPORTED_FEATURE: If interface 1 selected */ -/* AB8500_CODEC_OK: if successful. */ -/* REMARK: */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -t_ab8500_codec_error AB8500_CODEC_ConfigureBurstFifo(IN - t_ab8500_codec_burst_fifo_config - const *const - p_burst_fifo_config) -{ - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - DBGENTER1(" (%lx)", p_burst_fifo_config); - if (AB8500_CODEC_AUDIO_INTERFACE_0 == - g_ab8500_codec_system_context.audio_interface) - { - if (AB8500_CODEC_CR27_EN_MASTGEN_ENABLED == - p_ab8500_codec_configuration->cr27_en_mastgen) - { - p_ab8500_codec_configuration->cr105_bfifomsk = - p_burst_fifo_config->cr105_bfifomsk; - p_ab8500_codec_configuration->cr105_bfifoint = - p_burst_fifo_config->cr105_bfifoint; - p_ab8500_codec_configuration->cr106_bfifotx = - p_burst_fifo_config->cr106_bfifotx; - p_ab8500_codec_configuration->cr107_bfifoexsl = - p_burst_fifo_config->cr107_bfifoexsl; - p_ab8500_codec_configuration->cr107_bfifomast = - p_burst_fifo_config->cr107_bfifomast; - p_ab8500_codec_configuration->cr107_bfiforun = - p_burst_fifo_config->cr107_bfiforun; - p_ab8500_codec_configuration->cr108_bfifoframsw = - p_burst_fifo_config->cr108_bfifoframsw; - p_ab8500_codec_configuration->cr109_bfifowakeup = - p_burst_fifo_config->cr109_bfifowakeup; - ab8500_codec_error = ab8500_codec_UpdateCR105(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR106(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR107(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR108(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR109(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - } - - else - { - ab8500_codec_error = AB8500_CODEC_INVALID_PARAMETER; - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - } - - else - { - ab8500_codec_error = AB8500_CODEC_UNSUPPORTED_FEATURE; - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_EnableBurstFifo */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Enable the Burst FIFO for Interface 0 */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* None */ -/* OUT: */ -/* None */ -/* RETURN: */ -/* AB8500_CODEC_UNSUPPORTED_FEATURE: If Interface 1 is selected */ -/* AB8500_CODEC_OK: if successful. */ -/* REMARK: */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_EnableBurstFifo(void) -{ - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - DBGENTER0(); - if (AB8500_CODEC_AUDIO_INTERFACE_0 == - g_ab8500_codec_system_context.audio_interface) - { - p_ab8500_codec_configuration->cr29_if0bfifoen = - AB8500_CODEC_CR29_IF0BFIFOEN_BURST_MODE; - ab8500_codec_error = ab8500_codec_UpdateCR29(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - } - - else - { - ab8500_codec_error = AB8500_CODEC_UNSUPPORTED_FEATURE; - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -/****************************************************************************/ -/* NAME: AB8500_CODEC_DisableBurstFifo */ -/*--------------------------------------------------------------------------*/ -/* DESCRIPTION: */ -/* Disable the Burst FIFO for Interface 0 */ -/* */ -/* ARGUMENTS */ -/* IN: */ -/* None */ -/* OUT: */ -/* None */ -/* RETURN: */ -/* AB8500_CODEC_UNSUPPORTED_FEATURE: If Interface 1 is selected */ -/* AB8500_CODEC_OK: if successful. */ -/* REMARK: */ -/*--------------------------------------------------------------------------*/ -/* REENTRANCY: Non Re-Entrant */ - -/****************************************************************************/ -PUBLIC t_ab8500_codec_error AB8500_CODEC_DisableBurstFifo(void) -{ - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - DBGENTER0(); - if (AB8500_CODEC_AUDIO_INTERFACE_0 == - g_ab8500_codec_system_context.audio_interface) - { - p_ab8500_codec_configuration->cr29_if0bfifoen = - AB8500_CODEC_CR29_IF0BFIFOEN_NORMAL_MODE; - ab8500_codec_error = ab8500_codec_UpdateCR29(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - } - - else - { - ab8500_codec_error = AB8500_CODEC_UNSUPPORTED_FEATURE; - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -PRIVATE t_ab8500_codec_error ab8500_codec_ADSlotAllocationSwitch1 - (IN t_ab8500_codec_slot ad_slot, - IN t_ab8500_codec_cr31_to_cr46_ad_data_allocation value ) { - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - switch (ad_slot) - { - case AB8500_CODEC_SLOT0: - p_ab8500_codec_configuration->cr31_adotoslot0 = value; - ab8500_codec_error = ab8500_codec_UpdateCR31(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - case AB8500_CODEC_SLOT1: - p_ab8500_codec_configuration->cr31_adotoslot1 = value; - ab8500_codec_error = ab8500_codec_UpdateCR31(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - case AB8500_CODEC_SLOT2: - p_ab8500_codec_configuration->cr32_adotoslot2 = value; - ab8500_codec_error = ab8500_codec_UpdateCR32(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - case AB8500_CODEC_SLOT3: - p_ab8500_codec_configuration->cr32_adotoslot3 = value; - ab8500_codec_error = ab8500_codec_UpdateCR32(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - case AB8500_CODEC_SLOT4: - p_ab8500_codec_configuration->cr33_adotoslot4 = value; - ab8500_codec_error = ab8500_codec_UpdateCR33(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - case AB8500_CODEC_SLOT5: - p_ab8500_codec_configuration->cr33_adotoslot5 = value; - ab8500_codec_error = ab8500_codec_UpdateCR33(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - case AB8500_CODEC_SLOT6: - p_ab8500_codec_configuration->cr34_adotoslot6 = value; - ab8500_codec_error = ab8500_codec_UpdateCR34(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - case AB8500_CODEC_SLOT7: - p_ab8500_codec_configuration->cr34_adotoslot7 = value; - ab8500_codec_error = ab8500_codec_UpdateCR34(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - default: - ab8500_codec_error = AB8500_CODEC_INVALID_PARAMETER; - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -PRIVATE t_ab8500_codec_error ab8500_codec_ADSlotAllocationSwitch2 - (IN t_ab8500_codec_slot ad_slot, - IN t_ab8500_codec_cr31_to_cr46_ad_data_allocation value ) { - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - switch (ad_slot) - { - case AB8500_CODEC_SLOT8: - p_ab8500_codec_configuration->cr35_adotoslot8 = value; - ab8500_codec_error = ab8500_codec_UpdateCR35(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - case AB8500_CODEC_SLOT9: - p_ab8500_codec_configuration->cr35_adotoslot9 = value; - ab8500_codec_error = ab8500_codec_UpdateCR35(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - case AB8500_CODEC_SLOT10: - p_ab8500_codec_configuration->cr36_adotoslot10 = value; - ab8500_codec_error = ab8500_codec_UpdateCR36(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - case AB8500_CODEC_SLOT11: - p_ab8500_codec_configuration->cr36_adotoslot11 = value; - ab8500_codec_error = ab8500_codec_UpdateCR36(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - case AB8500_CODEC_SLOT12: - p_ab8500_codec_configuration->cr37_adotoslot12 = value; - ab8500_codec_error = ab8500_codec_UpdateCR37(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - case AB8500_CODEC_SLOT13: - p_ab8500_codec_configuration->cr37_adotoslot13 = value; - ab8500_codec_error = ab8500_codec_UpdateCR37(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - case AB8500_CODEC_SLOT14: - p_ab8500_codec_configuration->cr38_adotoslot14 = value; - ab8500_codec_error = ab8500_codec_UpdateCR38(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - case AB8500_CODEC_SLOT15: - p_ab8500_codec_configuration->cr38_adotoslot15 = value; - ab8500_codec_error = ab8500_codec_UpdateCR38(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - default: - ab8500_codec_error = AB8500_CODEC_INVALID_PARAMETER; - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -PRIVATE t_ab8500_codec_error ab8500_codec_ADSlotAllocationSwitch3 - (IN t_ab8500_codec_slot ad_slot, - IN t_ab8500_codec_cr31_to_cr46_ad_data_allocation value ) { - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - switch (ad_slot) - { - case AB8500_CODEC_SLOT16: - p_ab8500_codec_configuration->cr39_adotoslot16 = value; - ab8500_codec_error = ab8500_codec_UpdateCR39(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - case AB8500_CODEC_SLOT17: - p_ab8500_codec_configuration->cr39_adotoslot17 = value; - ab8500_codec_error = ab8500_codec_UpdateCR39(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - case AB8500_CODEC_SLOT18: - p_ab8500_codec_configuration->cr40_adotoslot18 = value; - ab8500_codec_error = ab8500_codec_UpdateCR40(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - case AB8500_CODEC_SLOT19: - p_ab8500_codec_configuration->cr40_adotoslot19 = value; - ab8500_codec_error = ab8500_codec_UpdateCR40(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - case AB8500_CODEC_SLOT20: - p_ab8500_codec_configuration->cr41_adotoslot20 = value; - ab8500_codec_error = ab8500_codec_UpdateCR41(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - case AB8500_CODEC_SLOT21: - p_ab8500_codec_configuration->cr41_adotoslot21 = value; - ab8500_codec_error = ab8500_codec_UpdateCR41(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - case AB8500_CODEC_SLOT22: - p_ab8500_codec_configuration->cr42_adotoslot22 = value; - ab8500_codec_error = ab8500_codec_UpdateCR42(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - case AB8500_CODEC_SLOT23: - p_ab8500_codec_configuration->cr42_adotoslot23 = value; - ab8500_codec_error = ab8500_codec_UpdateCR42(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - default: - ab8500_codec_error = AB8500_CODEC_INVALID_PARAMETER; - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -PRIVATE t_ab8500_codec_error ab8500_codec_ADSlotAllocationSwitch4 - (IN t_ab8500_codec_slot ad_slot, - IN t_ab8500_codec_cr31_to_cr46_ad_data_allocation value ) { - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - switch (ad_slot) - { - case AB8500_CODEC_SLOT24: - p_ab8500_codec_configuration->cr43_adotoslot24 = value; - ab8500_codec_error = ab8500_codec_UpdateCR43(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - case AB8500_CODEC_SLOT25: - p_ab8500_codec_configuration->cr43_adotoslot25 = value; - ab8500_codec_error = ab8500_codec_UpdateCR43(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - case AB8500_CODEC_SLOT26: - p_ab8500_codec_configuration->cr44_adotoslot26 = value; - ab8500_codec_error = ab8500_codec_UpdateCR44(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - case AB8500_CODEC_SLOT27: - p_ab8500_codec_configuration->cr44_adotoslot27 = value; - ab8500_codec_error = ab8500_codec_UpdateCR44(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - case AB8500_CODEC_SLOT28: - p_ab8500_codec_configuration->cr45_adotoslot28 = value; - ab8500_codec_error = ab8500_codec_UpdateCR45(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - case AB8500_CODEC_SLOT29: - p_ab8500_codec_configuration->cr45_adotoslot29 = value; - ab8500_codec_error = ab8500_codec_UpdateCR45(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - case AB8500_CODEC_SLOT30: - p_ab8500_codec_configuration->cr46_adotoslot30 = value; - ab8500_codec_error = ab8500_codec_UpdateCR46(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - case AB8500_CODEC_SLOT31: - p_ab8500_codec_configuration->cr46_adotoslot31 = value; - ab8500_codec_error = ab8500_codec_UpdateCR46(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - break; - default: - ab8500_codec_error = AB8500_CODEC_INVALID_PARAMETER; - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -PRIVATE t_ab8500_codec_error ab8500_codec_SrcPowerControlSwitch1(IN - t_ab8500_codec_src - src_device, - t_ab8500_codec_src_state - state) -{ - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - switch (src_device) - { - case AB8500_CODEC_SRC_LINEIN: - if (AB8500_CODEC_SRC_STATE_ENABLE == state) - { - p_ab8500_codec_configuration->cr5_enlinl = - AB8500_CODEC_CR5_ENLINL_ENABLED; - p_ab8500_codec_configuration->cr5_enlinr = - AB8500_CODEC_CR5_ENLINR_ENABLED; - p_ab8500_codec_configuration->cr5_mutlinl = - AB8500_CODEC_CR5_MUTLINL_DISABLED; - p_ab8500_codec_configuration->cr5_mutlinr = - AB8500_CODEC_CR5_MUTLINR_DISABLED; - p_ab8500_codec_configuration->cr7_linrsel = - AB8500_CODEC_CR7_LINRSEL_LINR; - p_ab8500_codec_configuration->cr7_enadclinl = - AB8500_CODEC_CR7_ENADCLINL_ENABLED; - p_ab8500_codec_configuration->cr7_enadclinr = - AB8500_CODEC_CR7_ENADCLINR_ENABLED; - } - - else - { - p_ab8500_codec_configuration->cr5_enlinl = - AB8500_CODEC_CR5_ENLINL_DISABLED; - p_ab8500_codec_configuration->cr5_enlinr = - AB8500_CODEC_CR5_ENLINR_DISABLED; - p_ab8500_codec_configuration->cr5_mutlinl = - AB8500_CODEC_CR5_MUTLINL_ENABLED; - p_ab8500_codec_configuration->cr5_mutlinr = - AB8500_CODEC_CR5_MUTLINR_ENABLED; - p_ab8500_codec_configuration->cr7_linrsel = - AB8500_CODEC_CR7_LINRSEL_MIC2; - p_ab8500_codec_configuration->cr7_enadclinl = - AB8500_CODEC_CR7_ENADCLINL_DISABLED; - p_ab8500_codec_configuration->cr7_enadclinr = - AB8500_CODEC_CR7_ENADCLINR_DISABLED; - } - break; - case AB8500_CODEC_SRC_MICROPHONE_1A: - if (AB8500_CODEC_SRC_STATE_ENABLE == state) - { - p_ab8500_codec_configuration->cr5_enmic1 = - AB8500_CODEC_CR5_ENMIC1_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic1 = - AB8500_CODEC_CR5_MUTMIC1_DISABLED; - p_ab8500_codec_configuration->cr7_mic1sel = - AB8500_CODEC_CR7_MIC1SEL_MIC1A; - p_ab8500_codec_configuration->cr7_enadcmic = - AB8500_CODEC_CR7_ENADCMIC_ENABLED; - } - - else - { - p_ab8500_codec_configuration->cr5_enmic1 = - AB8500_CODEC_CR5_ENMIC1_DISABLED; - p_ab8500_codec_configuration->cr5_mutmic1 = - AB8500_CODEC_CR5_MUTMIC1_ENABLED; - p_ab8500_codec_configuration->cr7_enadcmic = - AB8500_CODEC_CR7_ENADCMIC_DISABLED; - } - break; - case AB8500_CODEC_SRC_MICROPHONE_1B: - if (AB8500_CODEC_SRC_STATE_ENABLE == state) - { - p_ab8500_codec_configuration->cr5_enmic1 = - AB8500_CODEC_CR5_ENMIC1_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic1 = - AB8500_CODEC_CR5_MUTMIC1_DISABLED; - p_ab8500_codec_configuration->cr7_mic1sel = - AB8500_CODEC_CR7_MIC1SEL_MIC1B; - p_ab8500_codec_configuration->cr7_enadcmic = - AB8500_CODEC_CR7_ENADCMIC_ENABLED; - } - - else - { - p_ab8500_codec_configuration->cr5_enmic1 = - AB8500_CODEC_CR5_ENMIC1_DISABLED; - p_ab8500_codec_configuration->cr5_mutmic1 = - AB8500_CODEC_CR5_MUTMIC1_ENABLED; - p_ab8500_codec_configuration->cr7_enadcmic = - AB8500_CODEC_CR7_ENADCMIC_DISABLED; - } - break; - case AB8500_CODEC_SRC_MICROPHONE_2: - if (AB8500_CODEC_SRC_STATE_ENABLE == state) - { - p_ab8500_codec_configuration->cr5_enmic2 = - AB8500_CODEC_CR5_ENMIC2_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic2 = - AB8500_CODEC_CR5_MUTMIC2_DISABLED; - p_ab8500_codec_configuration->cr7_linrsel = - AB8500_CODEC_CR7_LINRSEL_MIC2; - p_ab8500_codec_configuration->cr7_enadclinr = - AB8500_CODEC_CR7_ENADCLINR_ENABLED; - } - - else - { - p_ab8500_codec_configuration->cr5_enmic2 = - AB8500_CODEC_CR5_ENMIC2_DISABLED; - p_ab8500_codec_configuration->cr5_mutmic2 = - AB8500_CODEC_CR5_MUTMIC2_ENABLED; - p_ab8500_codec_configuration->cr7_linrsel = - AB8500_CODEC_CR7_LINRSEL_LINR; - p_ab8500_codec_configuration->cr7_enadclinr = - AB8500_CODEC_CR7_ENADCLINR_DISABLED; - } - break; - case AB8500_CODEC_SRC_D_MICROPHONE_1: - if (AB8500_CODEC_SRC_STATE_ENABLE == state) - { - p_ab8500_codec_configuration->cr6_endmic1 = - AB8500_CODEC_CR6_ENDMIC1_ENABLED; - p_ab8500_codec_configuration->cr63_ad1sel = - AB8500_CODEC_CR63_AD1SEL_DMIC1_SELECTED; - } - - else - { - p_ab8500_codec_configuration->cr6_endmic1 = - AB8500_CODEC_CR6_ENDMIC1_DISABLED; - p_ab8500_codec_configuration->cr63_ad1sel = - AB8500_CODEC_CR63_AD1SEL_LINLADL_SELECTED; - } - break; - case AB8500_CODEC_SRC_D_MICROPHONE_2: - if (AB8500_CODEC_SRC_STATE_ENABLE == state) - { - p_ab8500_codec_configuration->cr6_endmic2 = - AB8500_CODEC_CR6_ENDMIC2_ENABLED; - p_ab8500_codec_configuration->cr63_ad2sel = - AB8500_CODEC_CR63_AD2SEL_DMIC2_SELECTED; - } - - else - { - p_ab8500_codec_configuration->cr6_endmic2 = - AB8500_CODEC_CR6_ENDMIC2_DISABLED; - p_ab8500_codec_configuration->cr63_ad2sel = - AB8500_CODEC_CR63_AD2SEL_LINRADR_SELECTED; - } - break; - default: - ab8500_codec_error = AB8500_CODEC_INVALID_PARAMETER; - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -PRIVATE t_ab8500_codec_error ab8500_codec_SrcPowerControlSwitch2(IN - t_ab8500_codec_src - src_device, - t_ab8500_codec_src_state - state) -{ - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - switch (src_device) - { - case AB8500_CODEC_SRC_D_MICROPHONE_3: - if (AB8500_CODEC_SRC_STATE_ENABLE == state) - { - p_ab8500_codec_configuration->cr6_endmic3 = - AB8500_CODEC_CR6_ENDMIC3_ENABLED; - p_ab8500_codec_configuration->cr63_ad3sel = - AB8500_CODEC_CR63_AD3SEL_DMIC3_SELECTED; - } - - else - { - p_ab8500_codec_configuration->cr6_endmic3 = - AB8500_CODEC_CR6_ENDMIC3_DISABLED; - p_ab8500_codec_configuration->cr63_ad3sel = - AB8500_CODEC_CR63_AD3SEL_ADMO_SELECTED; - } - break; - case AB8500_CODEC_SRC_D_MICROPHONE_4: - if (AB8500_CODEC_SRC_STATE_ENABLE == state) - { - p_ab8500_codec_configuration->cr6_endmic4 = - AB8500_CODEC_CR6_ENDMIC4_ENABLED; - } - - else - { - p_ab8500_codec_configuration->cr6_endmic4 = - AB8500_CODEC_CR6_ENDMIC4_DISABLED; - } - break; - case AB8500_CODEC_SRC_D_MICROPHONE_5: - if (AB8500_CODEC_SRC_STATE_ENABLE == state) - { - p_ab8500_codec_configuration->cr6_endmic5 = - AB8500_CODEC_CR6_ENDMIC5_ENABLED; - p_ab8500_codec_configuration->cr63_ad5sel = - AB8500_CODEC_CR63_AD5SEL_DMIC5_SELECTED; - } - - else - { - p_ab8500_codec_configuration->cr6_endmic5 = - AB8500_CODEC_CR6_ENDMIC5_DISABLED; - p_ab8500_codec_configuration->cr63_ad5sel = - AB8500_CODEC_CR63_AD5SEL_AMADR_SELECTED; - } - break; - case AB8500_CODEC_SRC_D_MICROPHONE_6: - if (AB8500_CODEC_SRC_STATE_ENABLE == state) - { - p_ab8500_codec_configuration->cr6_endmic6 = - AB8500_CODEC_CR6_ENDMIC6_ENABLED; - p_ab8500_codec_configuration->cr63_ad6sel = - AB8500_CODEC_CR63_AD6SEL_DMIC6_SELECTED; - } - - else - { - p_ab8500_codec_configuration->cr6_endmic6 = - AB8500_CODEC_CR6_ENDMIC6_DISABLED; - p_ab8500_codec_configuration->cr63_ad6sel = - AB8500_CODEC_CR63_AD6SEL_ADMO_SELECTED; - } - break; - case AB8500_CODEC_SRC_ALL: - if (AB8500_CODEC_SRC_STATE_ENABLE == state) - { - p_ab8500_codec_configuration->cr5_enlinl = - AB8500_CODEC_CR5_ENLINL_ENABLED; - p_ab8500_codec_configuration->cr5_enlinr = - AB8500_CODEC_CR5_ENLINR_ENABLED; - p_ab8500_codec_configuration->cr5_enmic1 = - AB8500_CODEC_CR5_ENMIC1_ENABLED; - p_ab8500_codec_configuration->cr5_enmic2 = - AB8500_CODEC_CR5_ENMIC2_ENABLED; - p_ab8500_codec_configuration->cr6_endmic1 = - AB8500_CODEC_CR6_ENDMIC1_ENABLED; - p_ab8500_codec_configuration->cr6_endmic2 = - AB8500_CODEC_CR6_ENDMIC2_ENABLED; - p_ab8500_codec_configuration->cr6_endmic3 = - AB8500_CODEC_CR6_ENDMIC3_ENABLED; - p_ab8500_codec_configuration->cr6_endmic4 = - AB8500_CODEC_CR6_ENDMIC4_ENABLED; - p_ab8500_codec_configuration->cr6_endmic5 = - AB8500_CODEC_CR6_ENDMIC5_ENABLED; - p_ab8500_codec_configuration->cr6_endmic6 = - AB8500_CODEC_CR6_ENDMIC6_ENABLED; - p_ab8500_codec_configuration->cr7_enadcmic = - AB8500_CODEC_CR7_ENADCMIC_ENABLED; - p_ab8500_codec_configuration->cr5_mutlinl = - AB8500_CODEC_CR5_MUTLINL_DISABLED; - p_ab8500_codec_configuration->cr5_mutlinr = - AB8500_CODEC_CR5_MUTLINR_DISABLED; - p_ab8500_codec_configuration->cr5_mutmic1 = - AB8500_CODEC_CR5_MUTMIC1_DISABLED; - p_ab8500_codec_configuration->cr5_mutmic2 = - AB8500_CODEC_CR5_MUTMIC2_DISABLED; - } - - else - { - p_ab8500_codec_configuration->cr5_enlinl = - AB8500_CODEC_CR5_ENLINL_DISABLED; - p_ab8500_codec_configuration->cr5_enlinr = - AB8500_CODEC_CR5_ENLINR_DISABLED; - p_ab8500_codec_configuration->cr5_enmic1 = - AB8500_CODEC_CR5_ENMIC1_DISABLED; - p_ab8500_codec_configuration->cr5_enmic2 = - AB8500_CODEC_CR5_ENMIC2_DISABLED; - p_ab8500_codec_configuration->cr6_endmic1 = - AB8500_CODEC_CR6_ENDMIC1_DISABLED; - p_ab8500_codec_configuration->cr6_endmic2 = - AB8500_CODEC_CR6_ENDMIC2_DISABLED; - p_ab8500_codec_configuration->cr6_endmic3 = - AB8500_CODEC_CR6_ENDMIC3_DISABLED; - p_ab8500_codec_configuration->cr6_endmic4 = - AB8500_CODEC_CR6_ENDMIC4_DISABLED; - p_ab8500_codec_configuration->cr6_endmic5 = - AB8500_CODEC_CR6_ENDMIC5_DISABLED; - p_ab8500_codec_configuration->cr6_endmic6 = - AB8500_CODEC_CR6_ENDMIC6_DISABLED; - p_ab8500_codec_configuration->cr7_enadcmic = - AB8500_CODEC_CR7_ENADCMIC_DISABLED; - p_ab8500_codec_configuration->cr5_mutlinl = - AB8500_CODEC_CR5_MUTLINL_ENABLED; - p_ab8500_codec_configuration->cr5_mutlinr = - AB8500_CODEC_CR5_MUTLINR_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic1 = - AB8500_CODEC_CR5_MUTMIC1_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic2 = - AB8500_CODEC_CR5_MUTMIC2_ENABLED; - } - break; - case AB8500_CODEC_SRC_FM_RX: - break; - default: - ab8500_codec_error = AB8500_CODEC_INVALID_PARAMETER; - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -PRIVATE t_ab8500_codec_error ab8500_codec_SetModeAndDirectionUpdateCR(void) -{ - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - t_ab8500_codec_cr0_powerup ab8500_codec_cr0_powerup; - ab8500_codec_cr0_powerup = p_ab8500_codec_configuration->cr0_powerup; - p_ab8500_codec_configuration->cr0_powerup = - AB8500_CODEC_CR0_POWERUP_OFF; - ab8500_codec_error = ab8500_codec_UpdateCR0(); - if (AB8500_CODEC_OK != ab8500_codec_error) - { - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR2(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR3(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR26(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR27(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR28(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR30(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR63(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - p_ab8500_codec_configuration->cr0_powerup = ab8500_codec_cr0_powerup; - ab8500_codec_error = ab8500_codec_UpdateCR0(); - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -PRIVATE t_ab8500_codec_error ab8500_codec_SetSrcVolumeUpdateCR(void) -{ - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - ab8500_codec_error = ab8500_codec_UpdateCR20(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR21(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR23(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR65(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR66(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR67(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR68(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR69(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR70(); - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -PRIVATE t_ab8500_codec_error ab8500_codec_SetDestVolumeUpdateCR(void) -{ - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - ab8500_codec_error = ab8500_codec_UpdateCR16(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR17(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR18(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR19(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR22(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR71(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR72(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR73(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR74(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR75(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR76(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR79(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR80(); - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -PRIVATE t_ab8500_codec_error ab8500_codec_ProgramDirectionIN(void) -{ - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - switch (g_ab8500_codec_system_context.ab8500_codec_src) - { - case AB8500_CODEC_SRC_LINEIN: - p_ab8500_codec_configuration->cr5_enlinl = - AB8500_CODEC_CR5_ENLINL_ENABLED; - p_ab8500_codec_configuration->cr5_enlinr = - AB8500_CODEC_CR5_ENLINR_ENABLED; - p_ab8500_codec_configuration->cr6_endmic1 = - AB8500_CODEC_CR6_ENDMIC1_DISABLED; - p_ab8500_codec_configuration->cr6_endmic2 = - AB8500_CODEC_CR6_ENDMIC2_DISABLED; - p_ab8500_codec_configuration->cr6_endmic3 = - AB8500_CODEC_CR6_ENDMIC3_DISABLED; - p_ab8500_codec_configuration->cr6_endmic4 = - AB8500_CODEC_CR6_ENDMIC4_DISABLED; - p_ab8500_codec_configuration->cr6_endmic5 = - AB8500_CODEC_CR6_ENDMIC5_DISABLED; - p_ab8500_codec_configuration->cr6_endmic6 = - AB8500_CODEC_CR6_ENDMIC6_DISABLED; - p_ab8500_codec_configuration->cr5_enmic1 = - AB8500_CODEC_CR5_ENMIC1_DISABLED; - p_ab8500_codec_configuration->cr5_enmic2 = - AB8500_CODEC_CR5_ENMIC2_DISABLED; - p_ab8500_codec_configuration->cr7_linrsel = - AB8500_CODEC_CR7_LINRSEL_LINR; - p_ab8500_codec_configuration->cr7_enadclinl = - AB8500_CODEC_CR7_ENADCLINL_ENABLED; - p_ab8500_codec_configuration->cr7_enadclinr = - AB8500_CODEC_CR7_ENADCLINR_ENABLED; - p_ab8500_codec_configuration->cr5_mutlinl = - AB8500_CODEC_CR5_MUTLINL_DISABLED; - p_ab8500_codec_configuration->cr5_mutlinr = - AB8500_CODEC_CR5_MUTLINR_DISABLED; - p_ab8500_codec_configuration->cr5_mutmic1 = - AB8500_CODEC_CR5_MUTMIC1_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic2 = - AB8500_CODEC_CR5_MUTMIC2_ENABLED; - break; - case AB8500_CODEC_SRC_MICROPHONE_1A: - p_ab8500_codec_configuration->cr5_enlinl = - AB8500_CODEC_CR5_ENLINL_DISABLED; - p_ab8500_codec_configuration->cr5_enlinr = - AB8500_CODEC_CR5_ENLINR_DISABLED; - p_ab8500_codec_configuration->cr6_endmic1 = - AB8500_CODEC_CR6_ENDMIC1_DISABLED; - p_ab8500_codec_configuration->cr6_endmic2 = - AB8500_CODEC_CR6_ENDMIC2_DISABLED; - p_ab8500_codec_configuration->cr6_endmic3 = - AB8500_CODEC_CR6_ENDMIC3_DISABLED; - p_ab8500_codec_configuration->cr6_endmic4 = - AB8500_CODEC_CR6_ENDMIC4_DISABLED; - p_ab8500_codec_configuration->cr6_endmic5 = - AB8500_CODEC_CR6_ENDMIC5_DISABLED; - p_ab8500_codec_configuration->cr6_endmic6 = - AB8500_CODEC_CR6_ENDMIC6_DISABLED; - p_ab8500_codec_configuration->cr5_enmic1 = - AB8500_CODEC_CR5_ENMIC1_ENABLED; - p_ab8500_codec_configuration->cr5_enmic2 = - AB8500_CODEC_CR5_ENMIC2_DISABLED; - p_ab8500_codec_configuration->cr7_mic1sel = - AB8500_CODEC_CR7_MIC1SEL_MIC1A; - p_ab8500_codec_configuration->cr7_enadcmic = - AB8500_CODEC_CR7_ENADCMIC_ENABLED; - p_ab8500_codec_configuration->cr7_enadclinl = - AB8500_CODEC_CR7_ENADCLINL_DISABLED; - p_ab8500_codec_configuration->cr7_enadclinr = - AB8500_CODEC_CR7_ENADCLINR_DISABLED; - p_ab8500_codec_configuration->cr5_mutlinl = - AB8500_CODEC_CR5_MUTLINL_ENABLED; - p_ab8500_codec_configuration->cr5_mutlinr = - AB8500_CODEC_CR5_MUTLINR_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic1 = - AB8500_CODEC_CR5_MUTMIC1_DISABLED; - p_ab8500_codec_configuration->cr5_mutmic2 = - AB8500_CODEC_CR5_MUTMIC2_ENABLED; - break; - case AB8500_CODEC_SRC_MICROPHONE_1B: - p_ab8500_codec_configuration->cr5_enlinl = - AB8500_CODEC_CR5_ENLINL_DISABLED; - p_ab8500_codec_configuration->cr5_enlinr = - AB8500_CODEC_CR5_ENLINR_DISABLED; - p_ab8500_codec_configuration->cr6_endmic1 = - AB8500_CODEC_CR6_ENDMIC1_DISABLED; - p_ab8500_codec_configuration->cr6_endmic2 = - AB8500_CODEC_CR6_ENDMIC2_DISABLED; - p_ab8500_codec_configuration->cr6_endmic3 = - AB8500_CODEC_CR6_ENDMIC3_DISABLED; - p_ab8500_codec_configuration->cr6_endmic4 = - AB8500_CODEC_CR6_ENDMIC4_DISABLED; - p_ab8500_codec_configuration->cr6_endmic5 = - AB8500_CODEC_CR6_ENDMIC5_DISABLED; - p_ab8500_codec_configuration->cr6_endmic6 = - AB8500_CODEC_CR6_ENDMIC6_DISABLED; - p_ab8500_codec_configuration->cr5_enmic1 = - AB8500_CODEC_CR5_ENMIC1_ENABLED; - p_ab8500_codec_configuration->cr5_enmic2 = - AB8500_CODEC_CR5_ENMIC2_DISABLED; - p_ab8500_codec_configuration->cr7_mic1sel = - AB8500_CODEC_CR7_MIC1SEL_MIC1B; - p_ab8500_codec_configuration->cr7_enadcmic = - AB8500_CODEC_CR7_ENADCMIC_ENABLED; - p_ab8500_codec_configuration->cr7_enadclinl = - AB8500_CODEC_CR7_ENADCLINL_DISABLED; - p_ab8500_codec_configuration->cr7_enadclinr = - AB8500_CODEC_CR7_ENADCLINR_DISABLED; - p_ab8500_codec_configuration->cr5_mutlinl = - AB8500_CODEC_CR5_MUTLINL_ENABLED; - p_ab8500_codec_configuration->cr5_mutlinr = - AB8500_CODEC_CR5_MUTLINR_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic1 = - AB8500_CODEC_CR5_MUTMIC1_DISABLED; - p_ab8500_codec_configuration->cr5_mutmic2 = - AB8500_CODEC_CR5_MUTMIC2_ENABLED; - break; - case AB8500_CODEC_SRC_MICROPHONE_2: - p_ab8500_codec_configuration->cr5_enlinl = - AB8500_CODEC_CR5_ENLINL_DISABLED; - p_ab8500_codec_configuration->cr5_enlinr = - AB8500_CODEC_CR5_ENLINR_DISABLED; - p_ab8500_codec_configuration->cr6_endmic1 = - AB8500_CODEC_CR6_ENDMIC1_DISABLED; - p_ab8500_codec_configuration->cr6_endmic2 = - AB8500_CODEC_CR6_ENDMIC2_DISABLED; - p_ab8500_codec_configuration->cr6_endmic3 = - AB8500_CODEC_CR6_ENDMIC3_DISABLED; - p_ab8500_codec_configuration->cr6_endmic4 = - AB8500_CODEC_CR6_ENDMIC4_DISABLED; - p_ab8500_codec_configuration->cr6_endmic5 = - AB8500_CODEC_CR6_ENDMIC5_DISABLED; - p_ab8500_codec_configuration->cr6_endmic6 = - AB8500_CODEC_CR6_ENDMIC6_DISABLED; - p_ab8500_codec_configuration->cr5_enmic1 = - AB8500_CODEC_CR5_ENMIC1_DISABLED; - p_ab8500_codec_configuration->cr5_enmic2 = - AB8500_CODEC_CR5_ENMIC2_ENABLED; - p_ab8500_codec_configuration->cr7_enadcmic = - AB8500_CODEC_CR7_ENADCMIC_ENABLED; - p_ab8500_codec_configuration->cr7_linrsel = - AB8500_CODEC_CR7_LINRSEL_MIC2; - p_ab8500_codec_configuration->cr7_enadclinl = - AB8500_CODEC_CR7_ENADCLINL_DISABLED; - p_ab8500_codec_configuration->cr7_enadclinr = - AB8500_CODEC_CR7_ENADCLINR_ENABLED; - p_ab8500_codec_configuration->cr5_mutlinl = - AB8500_CODEC_CR5_MUTLINL_ENABLED; - p_ab8500_codec_configuration->cr5_mutlinr = - AB8500_CODEC_CR5_MUTLINR_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic1 = - AB8500_CODEC_CR5_MUTMIC1_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic2 = - AB8500_CODEC_CR5_MUTMIC2_DISABLED; - break; - case AB8500_CODEC_SRC_D_MICROPHONE_1: - p_ab8500_codec_configuration->cr5_enlinl = - AB8500_CODEC_CR5_ENLINL_DISABLED; - p_ab8500_codec_configuration->cr5_enlinr = - AB8500_CODEC_CR5_ENLINR_DISABLED; - p_ab8500_codec_configuration->cr6_endmic1 = - AB8500_CODEC_CR6_ENDMIC1_ENABLED; - p_ab8500_codec_configuration->cr6_endmic2 = - AB8500_CODEC_CR6_ENDMIC2_DISABLED; - p_ab8500_codec_configuration->cr6_endmic3 = - AB8500_CODEC_CR6_ENDMIC3_DISABLED; - p_ab8500_codec_configuration->cr6_endmic4 = - AB8500_CODEC_CR6_ENDMIC4_DISABLED; - p_ab8500_codec_configuration->cr6_endmic5 = - AB8500_CODEC_CR6_ENDMIC5_DISABLED; - p_ab8500_codec_configuration->cr6_endmic6 = - AB8500_CODEC_CR6_ENDMIC6_DISABLED; - p_ab8500_codec_configuration->cr5_enmic1 = - AB8500_CODEC_CR5_ENMIC1_DISABLED; - p_ab8500_codec_configuration->cr5_enmic2 = - AB8500_CODEC_CR5_ENMIC2_DISABLED; - p_ab8500_codec_configuration->cr7_enadclinl = - AB8500_CODEC_CR7_ENADCLINL_DISABLED; - p_ab8500_codec_configuration->cr7_enadclinr = - AB8500_CODEC_CR7_ENADCLINR_DISABLED; - p_ab8500_codec_configuration->cr63_ad1sel = - AB8500_CODEC_CR63_AD1SEL_DMIC1_SELECTED; - p_ab8500_codec_configuration->cr5_mutlinl = - AB8500_CODEC_CR5_MUTLINL_ENABLED; - p_ab8500_codec_configuration->cr5_mutlinr = - AB8500_CODEC_CR5_MUTLINR_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic1 = - AB8500_CODEC_CR5_MUTMIC1_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic2 = - AB8500_CODEC_CR5_MUTMIC2_ENABLED; - break; - case AB8500_CODEC_SRC_D_MICROPHONE_2: - p_ab8500_codec_configuration->cr5_enlinl = - AB8500_CODEC_CR5_ENLINL_DISABLED; - p_ab8500_codec_configuration->cr5_enlinr = - AB8500_CODEC_CR5_ENLINR_DISABLED; - p_ab8500_codec_configuration->cr6_endmic1 = - AB8500_CODEC_CR6_ENDMIC1_DISABLED; - p_ab8500_codec_configuration->cr6_endmic2 = - AB8500_CODEC_CR6_ENDMIC2_ENABLED; - p_ab8500_codec_configuration->cr6_endmic3 = - AB8500_CODEC_CR6_ENDMIC3_DISABLED; - p_ab8500_codec_configuration->cr6_endmic4 = - AB8500_CODEC_CR6_ENDMIC4_DISABLED; - p_ab8500_codec_configuration->cr6_endmic5 = - AB8500_CODEC_CR6_ENDMIC5_DISABLED; - p_ab8500_codec_configuration->cr6_endmic6 = - AB8500_CODEC_CR6_ENDMIC6_DISABLED; - p_ab8500_codec_configuration->cr5_enmic1 = - AB8500_CODEC_CR5_ENMIC1_DISABLED; - p_ab8500_codec_configuration->cr5_enmic2 = - AB8500_CODEC_CR5_ENMIC2_DISABLED; - p_ab8500_codec_configuration->cr7_enadclinl = - AB8500_CODEC_CR7_ENADCLINL_DISABLED; - p_ab8500_codec_configuration->cr7_enadclinr = - AB8500_CODEC_CR7_ENADCLINR_DISABLED; - p_ab8500_codec_configuration->cr63_ad2sel = - AB8500_CODEC_CR63_AD2SEL_DMIC2_SELECTED; - p_ab8500_codec_configuration->cr5_mutlinl = - AB8500_CODEC_CR5_MUTLINL_ENABLED; - p_ab8500_codec_configuration->cr5_mutlinr = - AB8500_CODEC_CR5_MUTLINR_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic1 = - AB8500_CODEC_CR5_MUTMIC1_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic2 = - AB8500_CODEC_CR5_MUTMIC2_ENABLED; - break; - case AB8500_CODEC_SRC_D_MICROPHONE_3: - p_ab8500_codec_configuration->cr5_enlinl = - AB8500_CODEC_CR5_ENLINL_DISABLED; - p_ab8500_codec_configuration->cr5_enlinr = - AB8500_CODEC_CR5_ENLINR_DISABLED; - p_ab8500_codec_configuration->cr6_endmic1 = - AB8500_CODEC_CR6_ENDMIC1_DISABLED; - p_ab8500_codec_configuration->cr6_endmic2 = - AB8500_CODEC_CR6_ENDMIC2_DISABLED; - p_ab8500_codec_configuration->cr6_endmic3 = - AB8500_CODEC_CR6_ENDMIC3_ENABLED; - p_ab8500_codec_configuration->cr6_endmic4 = - AB8500_CODEC_CR6_ENDMIC4_DISABLED; - p_ab8500_codec_configuration->cr6_endmic5 = - AB8500_CODEC_CR6_ENDMIC5_DISABLED; - p_ab8500_codec_configuration->cr6_endmic6 = - AB8500_CODEC_CR6_ENDMIC6_DISABLED; - p_ab8500_codec_configuration->cr5_enmic1 = - AB8500_CODEC_CR5_ENMIC1_DISABLED; - p_ab8500_codec_configuration->cr5_enmic2 = - AB8500_CODEC_CR5_ENMIC2_DISABLED; - p_ab8500_codec_configuration->cr7_enadclinl = - AB8500_CODEC_CR7_ENADCLINL_DISABLED; - p_ab8500_codec_configuration->cr7_enadclinr = - AB8500_CODEC_CR7_ENADCLINR_DISABLED; - p_ab8500_codec_configuration->cr63_ad3sel = - AB8500_CODEC_CR63_AD3SEL_DMIC3_SELECTED; - p_ab8500_codec_configuration->cr5_mutlinl = - AB8500_CODEC_CR5_MUTLINL_ENABLED; - p_ab8500_codec_configuration->cr5_mutlinr = - AB8500_CODEC_CR5_MUTLINR_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic1 = - AB8500_CODEC_CR5_MUTMIC1_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic2 = - AB8500_CODEC_CR5_MUTMIC2_ENABLED; - break; - case AB8500_CODEC_SRC_D_MICROPHONE_4: - p_ab8500_codec_configuration->cr5_enlinl = - AB8500_CODEC_CR5_ENLINL_DISABLED; - p_ab8500_codec_configuration->cr5_enlinr = - AB8500_CODEC_CR5_ENLINR_DISABLED; - p_ab8500_codec_configuration->cr6_endmic1 = - AB8500_CODEC_CR6_ENDMIC1_DISABLED; - p_ab8500_codec_configuration->cr6_endmic2 = - AB8500_CODEC_CR6_ENDMIC2_DISABLED; - p_ab8500_codec_configuration->cr6_endmic3 = - AB8500_CODEC_CR6_ENDMIC3_DISABLED; - p_ab8500_codec_configuration->cr6_endmic4 = - AB8500_CODEC_CR6_ENDMIC4_ENABLED; - p_ab8500_codec_configuration->cr6_endmic5 = - AB8500_CODEC_CR6_ENDMIC5_DISABLED; - p_ab8500_codec_configuration->cr6_endmic6 = - AB8500_CODEC_CR6_ENDMIC6_DISABLED; - p_ab8500_codec_configuration->cr5_enmic1 = - AB8500_CODEC_CR5_ENMIC1_DISABLED; - p_ab8500_codec_configuration->cr5_enmic2 = - AB8500_CODEC_CR5_ENMIC2_DISABLED; - p_ab8500_codec_configuration->cr7_enadclinl = - AB8500_CODEC_CR7_ENADCLINL_DISABLED; - p_ab8500_codec_configuration->cr7_enadclinr = - AB8500_CODEC_CR7_ENADCLINR_DISABLED; - p_ab8500_codec_configuration->cr5_mutlinl = - AB8500_CODEC_CR5_MUTLINL_ENABLED; - p_ab8500_codec_configuration->cr5_mutlinr = - AB8500_CODEC_CR5_MUTLINR_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic1 = - AB8500_CODEC_CR5_MUTMIC1_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic2 = - AB8500_CODEC_CR5_MUTMIC2_ENABLED; - break; - case AB8500_CODEC_SRC_D_MICROPHONE_5: - p_ab8500_codec_configuration->cr5_enlinl = - AB8500_CODEC_CR5_ENLINL_DISABLED; - p_ab8500_codec_configuration->cr5_enlinr = - AB8500_CODEC_CR5_ENLINR_DISABLED; - p_ab8500_codec_configuration->cr6_endmic1 = - AB8500_CODEC_CR6_ENDMIC1_DISABLED; - p_ab8500_codec_configuration->cr6_endmic2 = - AB8500_CODEC_CR6_ENDMIC2_DISABLED; - p_ab8500_codec_configuration->cr6_endmic3 = - AB8500_CODEC_CR6_ENDMIC3_DISABLED; - p_ab8500_codec_configuration->cr6_endmic4 = - AB8500_CODEC_CR6_ENDMIC4_DISABLED; - p_ab8500_codec_configuration->cr6_endmic5 = - AB8500_CODEC_CR6_ENDMIC5_ENABLED; - p_ab8500_codec_configuration->cr6_endmic6 = - AB8500_CODEC_CR6_ENDMIC6_DISABLED; - p_ab8500_codec_configuration->cr5_enmic1 = - AB8500_CODEC_CR5_ENMIC1_DISABLED; - p_ab8500_codec_configuration->cr5_enmic2 = - AB8500_CODEC_CR5_ENMIC2_DISABLED; - p_ab8500_codec_configuration->cr7_enadclinl = - AB8500_CODEC_CR7_ENADCLINL_DISABLED; - p_ab8500_codec_configuration->cr7_enadclinr = - AB8500_CODEC_CR7_ENADCLINR_DISABLED; - p_ab8500_codec_configuration->cr63_ad5sel = - AB8500_CODEC_CR63_AD5SEL_DMIC5_SELECTED; - p_ab8500_codec_configuration->cr5_mutlinl = - AB8500_CODEC_CR5_MUTLINL_ENABLED; - p_ab8500_codec_configuration->cr5_mutlinr = - AB8500_CODEC_CR5_MUTLINR_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic1 = - AB8500_CODEC_CR5_MUTMIC1_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic2 = - AB8500_CODEC_CR5_MUTMIC2_ENABLED; - break; - case AB8500_CODEC_SRC_D_MICROPHONE_6: - p_ab8500_codec_configuration->cr5_enlinl = - AB8500_CODEC_CR5_ENLINL_DISABLED; - p_ab8500_codec_configuration->cr5_enlinr = - AB8500_CODEC_CR5_ENLINR_DISABLED; - p_ab8500_codec_configuration->cr6_endmic1 = - AB8500_CODEC_CR6_ENDMIC1_DISABLED; - p_ab8500_codec_configuration->cr6_endmic2 = - AB8500_CODEC_CR6_ENDMIC2_DISABLED; - p_ab8500_codec_configuration->cr6_endmic3 = - AB8500_CODEC_CR6_ENDMIC3_DISABLED; - p_ab8500_codec_configuration->cr6_endmic4 = - AB8500_CODEC_CR6_ENDMIC4_DISABLED; - p_ab8500_codec_configuration->cr6_endmic5 = - AB8500_CODEC_CR6_ENDMIC5_DISABLED; - p_ab8500_codec_configuration->cr6_endmic6 = - AB8500_CODEC_CR6_ENDMIC6_ENABLED; - p_ab8500_codec_configuration->cr5_enmic1 = - AB8500_CODEC_CR5_ENMIC1_DISABLED; - p_ab8500_codec_configuration->cr5_enmic2 = - AB8500_CODEC_CR5_ENMIC2_DISABLED; - p_ab8500_codec_configuration->cr7_enadclinl = - AB8500_CODEC_CR7_ENADCLINL_DISABLED; - p_ab8500_codec_configuration->cr7_enadclinr = - AB8500_CODEC_CR7_ENADCLINR_DISABLED; - p_ab8500_codec_configuration->cr63_ad6sel = - AB8500_CODEC_CR63_AD6SEL_DMIC6_SELECTED; - p_ab8500_codec_configuration->cr5_mutlinl = - AB8500_CODEC_CR5_MUTLINL_ENABLED; - p_ab8500_codec_configuration->cr5_mutlinr = - AB8500_CODEC_CR5_MUTLINR_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic1 = - AB8500_CODEC_CR5_MUTMIC1_ENABLED; - p_ab8500_codec_configuration->cr5_mutmic2 = - AB8500_CODEC_CR5_MUTMIC2_ENABLED; - break; - case AB8500_CODEC_SRC_ALL: - p_ab8500_codec_configuration->cr5_enlinl = - AB8500_CODEC_CR5_ENLINL_ENABLED; - p_ab8500_codec_configuration->cr5_enlinr = - AB8500_CODEC_CR5_ENLINR_ENABLED; - p_ab8500_codec_configuration->cr5_enmic1 = - AB8500_CODEC_CR5_ENMIC1_ENABLED; - p_ab8500_codec_configuration->cr5_enmic2 = - AB8500_CODEC_CR5_ENMIC2_ENABLED; - p_ab8500_codec_configuration->cr6_endmic1 = - AB8500_CODEC_CR6_ENDMIC1_ENABLED; - p_ab8500_codec_configuration->cr6_endmic2 = - AB8500_CODEC_CR6_ENDMIC2_ENABLED; - p_ab8500_codec_configuration->cr6_endmic3 = - AB8500_CODEC_CR6_ENDMIC3_ENABLED; - p_ab8500_codec_configuration->cr6_endmic4 = - AB8500_CODEC_CR6_ENDMIC4_ENABLED; - p_ab8500_codec_configuration->cr6_endmic5 = - AB8500_CODEC_CR6_ENDMIC5_ENABLED; - p_ab8500_codec_configuration->cr6_endmic6 = - AB8500_CODEC_CR6_ENDMIC6_ENABLED; - p_ab8500_codec_configuration->cr7_enadcmic = - AB8500_CODEC_CR7_ENADCMIC_ENABLED; - p_ab8500_codec_configuration->cr7_enadclinl = - AB8500_CODEC_CR7_ENADCLINL_ENABLED; - p_ab8500_codec_configuration->cr7_enadclinr = - AB8500_CODEC_CR7_ENADCLINR_ENABLED; - p_ab8500_codec_configuration->cr5_mutlinl = - AB8500_CODEC_CR5_MUTLINL_DISABLED; - p_ab8500_codec_configuration->cr5_mutlinr = - AB8500_CODEC_CR5_MUTLINR_DISABLED; - p_ab8500_codec_configuration->cr5_mutmic1 = - AB8500_CODEC_CR5_MUTMIC1_DISABLED; - p_ab8500_codec_configuration->cr5_mutmic2 = - AB8500_CODEC_CR5_MUTMIC2_DISABLED; - break; - case AB8500_CODEC_SRC_D_MICROPHONE_12: - case AB8500_CODEC_SRC_D_MICROPHONE_34: - case AB8500_CODEC_SRC_D_MICROPHONE_56: - break; - default: - ab8500_codec_error = AB8500_CODEC_INVALID_PARAMETER; - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -PRIVATE t_ab8500_codec_error ab8500_codec_ProgramDirectionOUT(void) -{ - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - t_ab8500_codec_configuration * p_ab8500_codec_configuration = - &g_ab8500_codec_system_context. ab8500_codec_configuration; - switch (g_ab8500_codec_system_context.ab8500_codec_dest) - { - case AB8500_CODEC_DEST_HEADSET: - p_ab8500_codec_configuration->cr7_endrvhsl = - AB8500_CODEC_CR7_ENDRVHSL_ENABLED; - p_ab8500_codec_configuration->cr7_endrvhsr = - AB8500_CODEC_CR7_ENDRVHSR_ENABLED; - p_ab8500_codec_configuration->cr8_enear = - AB8500_CODEC_CR8_ENEAR_DISABLED; - p_ab8500_codec_configuration->cr8_enhsl = - AB8500_CODEC_CR8_ENHSL_ENABLED; - p_ab8500_codec_configuration->cr8_enhsr = - AB8500_CODEC_CR8_ENHSR_ENABLED; - p_ab8500_codec_configuration->cr8_enhfl = - AB8500_CODEC_CR8_ENHFL_DISABLED; - p_ab8500_codec_configuration->cr8_enhfr = - AB8500_CODEC_CR8_ENHFR_DISABLED; - p_ab8500_codec_configuration->cr8_envibl = - AB8500_CODEC_CR8_ENVIBL_DISABLED; - p_ab8500_codec_configuration->cr8_envibr = - AB8500_CODEC_CR8_ENVIBR_DISABLED; - p_ab8500_codec_configuration->cr9_endachsl = - AB8500_CODEC_CR9_ENDACHSL_ENABLED; - p_ab8500_codec_configuration->cr9_endachsr = - AB8500_CODEC_CR9_ENDACHSR_ENABLED; - p_ab8500_codec_configuration->cr10_muteear = - AB8500_CODEC_CR10_MUTEEAR_ENABLED; - p_ab8500_codec_configuration->cr10_mutehsl = - AB8500_CODEC_CR10_MUTEHSL_DISABLED; - p_ab8500_codec_configuration->cr10_mutehsr = - AB8500_CODEC_CR10_MUTEHSR_DISABLED; - p_ab8500_codec_configuration->cr12_encphs = - AB8500_CODEC_CR12_ENCPHS_ENABLED; - break; - case AB8500_CODEC_DEST_EARPIECE: - p_ab8500_codec_configuration->cr8_enear = - AB8500_CODEC_CR8_ENEAR_ENABLED; - p_ab8500_codec_configuration->cr8_enhsl = - AB8500_CODEC_CR8_ENHSL_DISABLED; - p_ab8500_codec_configuration->cr8_enhsr = - AB8500_CODEC_CR8_ENHSR_DISABLED; - p_ab8500_codec_configuration->cr8_enhfl = - AB8500_CODEC_CR8_ENHFL_DISABLED; - p_ab8500_codec_configuration->cr8_enhfr = - AB8500_CODEC_CR8_ENHFR_DISABLED; - p_ab8500_codec_configuration->cr8_envibl = - AB8500_CODEC_CR8_ENVIBL_DISABLED; - p_ab8500_codec_configuration->cr8_envibr = - AB8500_CODEC_CR8_ENVIBR_DISABLED; - p_ab8500_codec_configuration->cr9_endacear = - AB8500_CODEC_CR9_ENDACEAR_ENABLED; - p_ab8500_codec_configuration->cr10_muteear = - AB8500_CODEC_CR10_MUTEEAR_DISABLED; - p_ab8500_codec_configuration->cr10_mutehsl = - AB8500_CODEC_CR10_MUTEHSL_ENABLED; - p_ab8500_codec_configuration->cr10_mutehsr = - AB8500_CODEC_CR10_MUTEHSR_ENABLED; - break; - case AB8500_CODEC_DEST_HANDSFREE: - p_ab8500_codec_configuration->cr8_enear = - AB8500_CODEC_CR8_ENEAR_DISABLED; - p_ab8500_codec_configuration->cr8_enhsl = - AB8500_CODEC_CR8_ENHSL_DISABLED; - p_ab8500_codec_configuration->cr8_enhsr = - AB8500_CODEC_CR8_ENHSR_DISABLED; - p_ab8500_codec_configuration->cr8_enhfl = - AB8500_CODEC_CR8_ENHFL_ENABLED; - p_ab8500_codec_configuration->cr8_enhfr = - AB8500_CODEC_CR8_ENHFR_ENABLED; - p_ab8500_codec_configuration->cr8_envibl = - AB8500_CODEC_CR8_ENVIBL_DISABLED; - p_ab8500_codec_configuration->cr8_envibr = - AB8500_CODEC_CR8_ENVIBR_DISABLED; - p_ab8500_codec_configuration->cr9_endachfl = - AB8500_CODEC_CR9_ENDACHFL_ENABLED; - p_ab8500_codec_configuration->cr9_endachfr = - AB8500_CODEC_CR9_ENDACHFR_ENABLED; - p_ab8500_codec_configuration->cr10_muteear = - AB8500_CODEC_CR10_MUTEEAR_ENABLED; - p_ab8500_codec_configuration->cr10_mutehsl = - AB8500_CODEC_CR10_MUTEHSL_ENABLED; - p_ab8500_codec_configuration->cr10_mutehsr = - AB8500_CODEC_CR10_MUTEHSR_ENABLED; - break; - case AB8500_CODEC_DEST_VIBRATOR_L: - p_ab8500_codec_configuration->cr8_enear = - AB8500_CODEC_CR8_ENEAR_DISABLED; - p_ab8500_codec_configuration->cr8_enhsl = - AB8500_CODEC_CR8_ENHSL_DISABLED; - p_ab8500_codec_configuration->cr8_enhsr = - AB8500_CODEC_CR8_ENHSR_DISABLED; - p_ab8500_codec_configuration->cr8_enhfl = - AB8500_CODEC_CR8_ENHFL_DISABLED; - p_ab8500_codec_configuration->cr8_enhfr = - AB8500_CODEC_CR8_ENHFR_DISABLED; - p_ab8500_codec_configuration->cr8_envibl = - AB8500_CODEC_CR8_ENVIBL_ENABLED; - p_ab8500_codec_configuration->cr8_envibr = - AB8500_CODEC_CR8_ENVIBR_DISABLED; - p_ab8500_codec_configuration->cr9_endacvibl = - AB8500_CODEC_CR9_ENDACVIBL_ENABLED; - p_ab8500_codec_configuration->cr10_muteear = - AB8500_CODEC_CR10_MUTEEAR_ENABLED; - p_ab8500_codec_configuration->cr10_mutehsl = - AB8500_CODEC_CR10_MUTEHSL_ENABLED; - p_ab8500_codec_configuration->cr10_mutehsr = - AB8500_CODEC_CR10_MUTEHSR_ENABLED; - p_ab8500_codec_configuration->cr15_pwmtovibl = - AB8500_CODEC_CR15_PWMTOVIBL_PWM; - p_ab8500_codec_configuration->cr15_pwmlctrl = - AB8500_CODEC_CR15_PWMLCTRL_PWMNPLDUTYCYCLE; - p_ab8500_codec_configuration->cr15_pwmnlctrl = - AB8500_CODEC_CR15_PWMNLCTRL_PWMNLDUTYCYCLE; - p_ab8500_codec_configuration->cr15_pwmplctrl = - AB8500_CODEC_CR15_PWMPLCTRL_PWMPLDUTYCYCLE; - break; - case AB8500_CODEC_DEST_VIBRATOR_R: - p_ab8500_codec_configuration->cr8_enear = - AB8500_CODEC_CR8_ENEAR_DISABLED; - p_ab8500_codec_configuration->cr8_enhsl = - AB8500_CODEC_CR8_ENHSL_DISABLED; - p_ab8500_codec_configuration->cr8_enhsr = - AB8500_CODEC_CR8_ENHSR_DISABLED; - p_ab8500_codec_configuration->cr8_enhfl = - AB8500_CODEC_CR8_ENHFL_DISABLED; - p_ab8500_codec_configuration->cr8_enhfr = - AB8500_CODEC_CR8_ENHFR_DISABLED; - p_ab8500_codec_configuration->cr8_envibl = - AB8500_CODEC_CR8_ENVIBL_DISABLED; - p_ab8500_codec_configuration->cr8_envibr = - AB8500_CODEC_CR8_ENVIBR_ENABLED; - p_ab8500_codec_configuration->cr9_endacvibr = - AB8500_CODEC_CR9_ENDACVIBR_ENABLED; - p_ab8500_codec_configuration->cr10_muteear = - AB8500_CODEC_CR10_MUTEEAR_ENABLED; - p_ab8500_codec_configuration->cr10_mutehsl = - AB8500_CODEC_CR10_MUTEHSL_ENABLED; - p_ab8500_codec_configuration->cr10_mutehsr = - AB8500_CODEC_CR10_MUTEHSR_ENABLED; - p_ab8500_codec_configuration->cr15_pwmtovibr = - AB8500_CODEC_CR15_PWMTOVIBR_PWM; - p_ab8500_codec_configuration->cr15_pwmrctrl = - AB8500_CODEC_CR15_PWMRCTRL_PWMNPRDUTYCYCLE; - p_ab8500_codec_configuration->cr15_pwmnrctrl = - AB8500_CODEC_CR15_PWMNRCTRL_PWMNRDUTYCYCLE; - p_ab8500_codec_configuration->cr15_pwmprctrl = - AB8500_CODEC_CR15_PWMPRCTRL_PWMPRDUTYCYCLE; - break; - case AB8500_CODEC_DEST_ALL: - p_ab8500_codec_configuration->cr8_enhsl = - AB8500_CODEC_CR8_ENHSL_ENABLED; - p_ab8500_codec_configuration->cr8_enhsr = - AB8500_CODEC_CR8_ENHSR_ENABLED; - p_ab8500_codec_configuration->cr8_enear = - AB8500_CODEC_CR8_ENEAR_ENABLED; - p_ab8500_codec_configuration->cr8_enhfl = - AB8500_CODEC_CR8_ENHFL_ENABLED; - p_ab8500_codec_configuration->cr8_enhfr = - AB8500_CODEC_CR8_ENHFR_ENABLED; - p_ab8500_codec_configuration->cr8_envibl = - AB8500_CODEC_CR8_ENVIBL_ENABLED; - p_ab8500_codec_configuration->cr8_envibr = - AB8500_CODEC_CR8_ENVIBR_ENABLED; - p_ab8500_codec_configuration->cr9_endacear = - AB8500_CODEC_CR9_ENDACEAR_ENABLED; - p_ab8500_codec_configuration->cr9_endachfl = - AB8500_CODEC_CR9_ENDACHFL_ENABLED; - p_ab8500_codec_configuration->cr9_endachfr = - AB8500_CODEC_CR9_ENDACHFR_ENABLED; - p_ab8500_codec_configuration->cr9_endacvibl = - AB8500_CODEC_CR9_ENDACVIBL_ENABLED; - p_ab8500_codec_configuration->cr9_endacvibr = - AB8500_CODEC_CR9_ENDACVIBR_ENABLED; - p_ab8500_codec_configuration->cr10_mutehsl = - AB8500_CODEC_CR10_MUTEHSL_DISABLED; - p_ab8500_codec_configuration->cr10_mutehsr = - AB8500_CODEC_CR10_MUTEHSR_DISABLED; - p_ab8500_codec_configuration->cr10_muteear = - AB8500_CODEC_CR10_MUTEEAR_DISABLED; - p_ab8500_codec_configuration->cr15_pwmtovibl = - AB8500_CODEC_CR15_PWMTOVIBL_PWM; - p_ab8500_codec_configuration->cr15_pwmlctrl = - AB8500_CODEC_CR15_PWMLCTRL_PWMNPLDUTYCYCLE; - p_ab8500_codec_configuration->cr15_pwmnlctrl = - AB8500_CODEC_CR15_PWMNLCTRL_PWMNLDUTYCYCLE; - p_ab8500_codec_configuration->cr15_pwmplctrl = - AB8500_CODEC_CR15_PWMPLCTRL_PWMPLDUTYCYCLE; - p_ab8500_codec_configuration->cr15_pwmtovibr = - AB8500_CODEC_CR15_PWMTOVIBR_PWM; - p_ab8500_codec_configuration->cr15_pwmrctrl = - AB8500_CODEC_CR15_PWMRCTRL_PWMNPRDUTYCYCLE; - p_ab8500_codec_configuration->cr15_pwmnrctrl = - AB8500_CODEC_CR15_PWMNRCTRL_PWMNRDUTYCYCLE; - p_ab8500_codec_configuration->cr15_pwmprctrl = - AB8500_CODEC_CR15_PWMPRCTRL_PWMPRDUTYCYCLE; - break; - default: - ab8500_codec_error = AB8500_CODEC_INVALID_PARAMETER; - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} - -PRIVATE t_ab8500_codec_error ab8500_codec_DestPowerControlUpdateCR(void) -{ - t_ab8500_codec_error ab8500_codec_error = AB8500_CODEC_OK; - ab8500_codec_error = ab8500_codec_UpdateCR8(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR9(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR10(); - if (ab8500_codec_error != AB8500_CODEC_OK) - { - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); - } - ab8500_codec_error = ab8500_codec_UpdateCR15(); - DBGEXIT(ab8500_codec_error); - return (ab8500_codec_error); -} diff --git a/sound/u8500_acodec_ab8500.c b/sound/u8500_acodec_ab8500.c deleted file mode 100644 index c75da368832..00000000000 --- a/sound/u8500_acodec_ab8500.c +++ /dev/null @@ -1,2523 +0,0 @@ -/* - * Copyright (C) ST-Ericsson SA 2010 - * - * Author: Deepak Karda - * for ST-Ericsson. - * - * License terms: - * - * 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. - */ - -/*----------------------------------------------------------------------------- -* Common Includes -*---------------------------------------------------------------------------*/ - -#include <linux/module.h> -#include <linux/types.h> -#include <linux/kernel.h> -#include <linux/init.h> -#include <linux/slab.h> -#include <asm/uaccess.h> -#include <asm/io.h> -#include <linux/interrupt.h> -#include <linux/errno.h> -#include <linux/interrupt.h> -#include <linux/spinlock.h> -#include <linux/soundcard.h> -#include <linux/sound.h> -#include <linux/delay.h> -#include <linux/dma-mapping.h> -#include <linux/i2s/i2s.h> -#include <mach/msp.h> -#include <linux/gpio.h> -/*#include <mach/i2c.h>*/ -#include <mach/debug.h> -#include <mach/u8500_acodec_ab8500.h> -#include <mach/ab8500.h> - -#ifdef CONFIG_U8500_AB8500_CUT10 -#include <mach/ab8500_codec_v1_0.h> -#endif -#ifdef CONFIG_U8500_AB8500_ED -#include <mach/ab8500_codec.h> -#endif - -#define ELEMENT_SIZE 0 -#define FRAME_SIZE -1 -#define MSP_NUM 0 - -/* Debugging stuff */ - -#define ACODEC_NAME "DRIVER ACODEC" -#define DRIVER_DEBUG CONFIG_STM_ACODEC_DEBUG /* enables/disables debug msgs */ -#define DRIVER_DEBUG_PFX ACODEC_NAME /* msg header represents this module */ -#define DRIVER_DBG KERN_ERR /* message level */ -#define NMDK_DEBUG CONFIG_STM_ACODEC_DEBUG -extern struct driver_debug_st DBG_ST; - -#if NMDK_DEBUG > 0 -t_ab8500_codec_error dump_acodec_registers(void); -t_ab8500_codec_error dump_msp_registers(void); -#endif - -#ifdef CONFIG_U8500_ACODEC_DMA -static void u8500_digital_lpbk_tx_dma_start(void); -static void u8500_digital_lpbk_rx_dma_start(void); -#endif - -int second_config; -/*---------------------------------------------------------------------------- -* global declarations -*---------------------------------------------------------------------------*/ -t_u8500_codec_system_context g_codec_system_context; - -int u8500_acodec_rates[MAX_NO_OF_RATES] = { 48000 }; - -char *codec_dest_texts[NUMBER_OUTPUT_DEVICE] = { - "CODEC_DEST_HEADSET", "CODEC_DEST_EARPIECE", "CODEC_DEST_HANDSFREE", - "CODEC_DEST_VIBRATOR1", "CODEC_DEST_VIBRATOR2" -}; - -char *codec_in_texts[NUMBER_INPUT_DEVICE] = { - "CODEC_SRC_LINEIN", "CODEC_SRC_MICROPHONE_1A", - "CODEC_SRC_MICROPHONE_1B", - "CODEC_SRC_MICROPHONE_2", "CODEC_SRC_D_MICROPHONE_1", - "CODEC_SRC_D_MICROPHONE_2", - "CODEC_SRC_D_MICROPHONE_3", "CODEC_SRC_D_MICROPHONE_4", - "CODEC_SRC_D_MICROPHONE_5", - "CODEC_SRC_D_MICROPHONE_6", "CODEC_SRC_D_MICROPHONE_12", - "CODEC_SRC_D_MICROPHONE_34", - "CODEC_SRC_D_MICROPHONE_56" -}; - -char *lpbk_state_in_texts[NUMBER_LOOPBACK_STATE] = { "DISABLE", "ENABLE" }; -char *switch_state_in_texts[NUMBER_SWITCH_STATE] = { "DISABLE", "ENABLE" }; -char *power_state_in_texts[NUMBER_POWER_STATE] = { "DISABLE", "ENABLE" }; -char *tdm_mode_state_in_texts[NUMBER_POWER_STATE] = { "DISABLE", "ENABLE" }; -char *direct_rendering_state_in_texts[NUMBER_DIRECT_RENDERING_STATE] = - { "DISABLE", "ENABLE" }; -char *pcm_rendering_state_in_texts[NUMBER_PCM_RENDERING_STATE] = - { "DISABLE", "ENABLE", "PENDING" }; - -EXPORT_SYMBOL(codec_dest_texts); -EXPORT_SYMBOL(codec_in_texts); - -static void ab8500_codec_power_init(void); -static int check_device_id(); -t_ab8500_codec_error perform_src_routing(t_ab8500_codec_src input_device); -t_ab8500_codec_error - u8500_acodec_allocate_all_mono_slots - (t_ab8500_codec_cr31_to_cr46_ad_data_allocation ad_data_line1); -t_ab8500_codec_error - u8500_acodec_allocate_all_stereo_slots - (t_ab8500_codec_cr31_to_cr46_ad_data_allocation ad_data_line1, - t_ab8500_codec_cr31_to_cr46_ad_data_allocation ad_data_line2); - -#if 0 //from Arnaud -/* For Codec in Master mode for recording*/ -struct msp_protocol_desc protocol_desc_tdm_mode = { - MSP_DATA_TRANSFER_WIDTH_HALFWORD, /*rx_data_transfer_width */ - MSP_DATA_TRANSFER_WIDTH_HALFWORD, /*tx_data_transfer_width */ - MSP_SINGLE_PHASE, /*rx_phase_mode */ - MSP_SINGLE_PHASE, /*tx_phase_mode */ - MSP_PHASE2_START_MODE_IMEDIATE, /*rx_phase2_start_mode */ - MSP_PHASE2_START_MODE_IMEDIATE, /*tx_phase2_start_mode */ - MSP_BTF_MS_BIT_FIRST, /*rx_endianess */ - MSP_BTF_MS_BIT_FIRST, /*tx_endianess */ - MSP_FRAME_LENGTH_2, /*rx_frame_length_1 */ - MSP_FRAME_LENGTH_2, /*rx_frame_length_2 */ - MSP_FRAME_LENGTH_2, /*tx_frame_length_1 */ - MSP_FRAME_LENGTH_2, /*tx_frame_length_2 */ - MSP_ELEM_LENGTH_16, /*rx_element_length_1 */ - MSP_ELEM_LENGTH_16, /*rx_element_length_2 */ - MSP_ELEM_LENGTH_16, /*tx_element_length_1 */ - MSP_ELEM_LENGTH_16, /*tx_element_length_2 */ - MSP_DELAY_0, /*rx_data_delay */ - MSP_DELAY_0, /*tx_data_delay */ - MSP_FALLING_EDGE, /*rx_clock_pol */ - MSP_RISING_EDGE, /*tx_clock_pol */ - MSP_FRAME_SYNC_POL_ACTIVE_HIGH, /*rx_msp_frame_pol */ - MSP_FRAME_SYNC_POL_ACTIVE_HIGH, /*tx_msp_frame_pol */ - MSP_HWS_NO_SWAP, /*rx_half_word_swap */ - MSP_HWS_NO_SWAP, /*tx_half_word_swap */ - MSP_COMPRESS_MODE_LINEAR, /*compression_mode */ - MSP_EXPAND_MODE_LINEAR, /*expansion_mode */ - MSP_SPI_CLOCK_MODE_NON_SPI, /*spi_clk_mode */ - MSP_SPI_BURST_MODE_DISABLE, /*spi_burst_mode */ - 63, /*frame_period */ - 31, /*frame_width */ - 64, /*total_clocks_for_one_frame */ -}; -#endif - -#if 0 //from HCL -/* For Codec in Master mode for recording*/ -struct msp_protocol_desc protocol_desc_tdm_mode = { - MSP_DATA_TRANSFER_WIDTH_WORD, /*rx_data_transfer_width */ - MSP_DATA_TRANSFER_WIDTH_WORD, /*tx_data_transfer_width */ - MSP_DUAL_PHASE, /*rx_phase_mode */ - MSP_DUAL_PHASE, /*tx_phase_mode */ - MSP_PHASE2_START_MODE_FRAME_SYNC, /*rx_phase2_start_mode */ - MSP_PHASE2_START_MODE_FRAME_SYNC, /*tx_phase2_start_mode */ - MSP_BTF_MS_BIT_FIRST, /*rx_endianess */ - MSP_BTF_MS_BIT_FIRST, /*tx_endianess */ - MSP_FRAME_LENGTH_1, /*rx_frame_length_1 */ - MSP_FRAME_LENGTH_1, /*rx_frame_length_2 */ - MSP_FRAME_LENGTH_1, /*tx_frame_length_1 */ - MSP_FRAME_LENGTH_1, /*tx_frame_length_2 */ - MSP_ELEM_LENGTH_16, /*rx_element_length_1 */ - MSP_ELEM_LENGTH_16, /*rx_element_length_2 */ - MSP_ELEM_LENGTH_16, /*tx_element_length_1 */ - MSP_ELEM_LENGTH_16, /*tx_element_length_2 */ - MSP_DELAY_0, /*rx_data_delay */ - MSP_DELAY_0, /*tx_data_delay */ - MSP_RISING_EDGE, /*rx_clock_pol */ - MSP_RISING_EDGE, /*tx_clock_pol */ - MSP_FRAME_SYNC_POL_ACTIVE_HIGH, /*rx_msp_frame_pol */ - MSP_FRAME_SYNC_POL_ACTIVE_HIGH, /*tx_msp_frame_pol */ - MSP_HWS_NO_SWAP, /*rx_half_word_swap */ - MSP_HWS_NO_SWAP, /*tx_half_word_swap */ - MSP_COMPRESS_MODE_LINEAR, /*compression_mode */ - MSP_EXPAND_MODE_LINEAR, /*expansion_mode */ - MSP_SPI_CLOCK_MODE_NON_SPI, /*spi_clk_mode */ - MSP_SPI_BURST_MODE_DISABLE, /*spi_burst_mode */ - 255, /*frame_period */ - 0, /*frame_width */ - 256, /*total_clocks_for_one_frame */ -}; - -#endif - -#if 0 //from STS -struct msp_protocol_desc protocol_desc_tdm_mode = { - MSP_DATA_TRANSFER_WIDTH_HALFWORD, /*rx_data_transfer_width */ - MSP_DATA_TRANSFER_WIDTH_HALFWORD, /*tx_data_transfer_width */ - MSP_SINGLE_PHASE, /*rx_phase_mode */ - MSP_SINGLE_PHASE, /*tx_phase_mode */ - MSP_PHASE2_START_MODE_IMEDIATE, /*rx_phase2_start_mode */ - MSP_PHASE2_START_MODE_IMEDIATE, /*tx_phase2_start_mode */ - MSP_BTF_MS_BIT_FIRST, /*rx_endianess */ - MSP_BTF_MS_BIT_FIRST, /*tx_endianess */ - MSP_FRAME_LENGTH_2, /*rx_frame_length_1 */ - MSP_FRAME_LENGTH_1, /*rx_frame_length_2 */ - MSP_FRAME_LENGTH_2, /*tx_frame_length_1 */ - MSP_FRAME_LENGTH_1, /*tx_frame_length_2 */ - MSP_ELEM_LENGTH_16, /*rx_element_length_1 */ - MSP_ELEM_LENGTH_16, /*rx_element_length_2 */ - MSP_ELEM_LENGTH_16, /*tx_element_length_1 */ - MSP_ELEM_LENGTH_16, /*tx_element_length_2 */ - MSP_DELAY_0, /*rx_data_delay */ - MSP_DELAY_0, /*tx_data_delay */ - MSP_FALLING_EDGE, /*rx_clock_pol */ - MSP_RISING_EDGE, /*tx_clock_pol */ - MSP_FRAME_SYNC_POL_ACTIVE_HIGH, /*rx_msp_frame_pol */ - MSP_FRAME_SYNC_POL_ACTIVE_HIGH, /*tx_msp_frame_pol */ - MSP_HWS_NO_SWAP, /*rx_half_word_swap */ - MSP_HWS_NO_SWAP, /*tx_half_word_swap */ - MSP_COMPRESS_MODE_LINEAR, /*compression_mode */ - MSP_EXPAND_MODE_LINEAR, /*expansion_mode */ - MSP_SPI_CLOCK_MODE_NON_SPI, /*spi_clk_mode */ - MSP_SPI_BURST_MODE_DISABLE, /*spi_burst_mode */ - 25, /*frame_period */ - 32, /*frame_width */ - 32, /*total_clocks_for_one_frame */ -}; -#endif - -#define DIGITAL_LPBK_MAX_BIFFERS 3 - -#ifdef CONFIG_U8500_AB8500_CUT10 -#define NB_OF_CHANNEL_USED 8 -#else -#define NB_OF_CHANNEL_USED 6 -#endif - -#define MONO_SRC 1 -#define STEREO_SRC 2 - -typedef struct { - unsigned char *area; /* virtual pointer */ - dma_addr_t addr; /* physical address */ -} t_dma_buffer; - -typedef struct { - struct completion tx_dma_com; - struct completion rx_dma_com; - volatile int rx_active; - volatile int tx_active; - t_dma_buffer buffer; - int data_size; - int rx_index; - int tx_index; -} t_digital_lpbk_cnxt; - -const int play_flag = 1; -const int capture_flag = 2; - -t_digital_lpbk_cnxt digital_lpbk_cnxt; - -void u8500_set_defaults() -{ - int i; - - for (i = 0; i < NUMBER_INPUT_DEVICE; i++) { - g_codec_system_context.input_config[i].left_volume = 0; - g_codec_system_context.input_config[i].right_volume = 0; - g_codec_system_context.input_config[i].mute_state = DISABLE; - g_codec_system_context.input_config[i].power_state = DISABLE; - } - - for (i = 0; i < NUMBER_OUTPUT_DEVICE; i++) { - g_codec_system_context.output_config[i].left_volume = 0; - g_codec_system_context.output_config[i].right_volume = 0; - g_codec_system_context.output_config[i].mute_state = DISABLE; - g_codec_system_context.output_config[i].power_state = DISABLE; - } - -} //END OF FUNCTION - -struct i2sdrv_data *i2sdrv[MAX_I2S_CLIENTS]; - -t_ab8500_codec_error u8500_acodec_open(int client_id, int stream_id) -{ - struct i2sdrv_data *p_i2sdrv_data = NULL; - struct i2s_device *i2s; - - p_i2sdrv_data = i2sdrv[client_id]; - - if (!p_i2sdrv_data) - return (-1); - - i2s = p_i2sdrv_data->i2s; - - if (stream_id == 0) //PLAYBACK - { - if (p_i2sdrv_data->tx_status) - return -1; - else { - p_i2sdrv_data->tx_status = 1; - } - } else if (stream_id == 1) //CAPTURE - { - if (p_i2sdrv_data->rx_status) - return -1; - else { - p_i2sdrv_data->rx_status = 1; - } - } - - p_i2sdrv_data->flag = 0; - - return 0; -} - -t_ab8500_codec_error u8500_acodec_send_data(int client_id, void *data, - size_t bytes, int dma_flag) -{ - struct i2sdrv_data *p_i2sdrv_data = NULL; - struct i2s_device *i2s_dev = NULL; - int bytes_transmit; - struct i2s_message message; - - p_i2sdrv_data = i2sdrv[client_id]; - - if (!p_i2sdrv_data) - return (-1); - - i2s_dev = p_i2sdrv_data->i2s; - - if (p_i2sdrv_data->flag) { - stm_dbg(DBG_ST.acodec, " I2S controller not available\n"); - return -1; - } - - message.i2s_transfer_mode = I2S_TRANSFER_MODE_SINGLE_DMA; - message.i2s_direction = I2S_DIRECTION_TX; - message.txbytes = bytes; - message.txdata = data; - message.dma_flag = dma_flag; - - bytes_transmit = i2s_transfer(i2s_dev->controller, &message); - - if (bytes_transmit < 0) { - printk("error in transfer\n"); - return -1; - } - return bytes_transmit; - -} - -t_ab8500_codec_error u8500_acodec_loopback_configure(int client_id, void *data, - size_t bytes, int dma_flag) -{ - struct i2sdrv_data *p_i2sdrv_data = NULL; - struct i2s_device *i2s_dev = NULL; - int bytes_receive; - struct i2s_message message; - - p_i2sdrv_data = i2sdrv[client_id]; - - if (!p_i2sdrv_data) - return (-1); - - i2s_dev = p_i2sdrv_data->i2s; - - if (p_i2sdrv_data->flag) { - stm_dbg(DBG_ST.acodec, " I2S controller not available\n"); - return -1; - } - - message.i2s_transfer_mode = I2S_TRANSFER_MODE_INF_LOOPBACK; - message.rxbytes = bytes; - message.rxdata = data; - message.txbytes = bytes; - message.txdata = data; - message.dma_flag = dma_flag; - - bytes_receive = i2s_transfer(i2s_dev->controller, &message); - - if (bytes_receive < 0) { - printk(" not get\n"); - return -1; - } - return bytes_receive; - -} - -t_ab8500_codec_error u8500_acodec_receive_data(int client_id, void *data, - size_t bytes, int dma_flag) -{ - struct i2sdrv_data *p_i2sdrv_data = NULL; - struct i2s_device *i2s_dev = NULL; - int bytes_receive; - struct i2s_message message; - - p_i2sdrv_data = i2sdrv[client_id]; - - if (!p_i2sdrv_data) - return (-1); - - i2s_dev = p_i2sdrv_data->i2s; - - if (p_i2sdrv_data->flag) { - stm_dbg(DBG_ST.acodec, " I2S controller not available\n"); - return -1; - } - - message.i2s_transfer_mode = I2S_TRANSFER_MODE_SINGLE_DMA; - message.i2s_direction = I2S_DIRECTION_RX; - message.rxbytes = bytes; - message.rxdata = data; - message.dma_flag = dma_flag; - - bytes_receive = i2s_transfer(i2s_dev->controller, &message); - - if (bytes_receive < 0) { - printk(" not get\n"); - return -1; - } - return bytes_receive; - -} - -t_ab8500_codec_error u8500_acodec_close(int client_id, t_acodec_disable flag) -{ - struct i2sdrv_data *p_i2sdrv_data = NULL; - struct i2s_device *i2s_dev = NULL; - int status = 0; - - p_i2sdrv_data = i2sdrv[client_id]; - - if (!p_i2sdrv_data) - return (-1); - - i2s_dev = p_i2sdrv_data->i2s; - - if (p_i2sdrv_data->flag) { - stm_dbg(DBG_ST.acodec, " I2S controller not available\n"); - return -1; - } - - if (flag == DISABLE_ALL) { - p_i2sdrv_data->flag = -1; - p_i2sdrv_data->tx_status = 0; - p_i2sdrv_data->rx_status = 0; - } else if (flag == DISABLE_TRANSMIT) { - p_i2sdrv_data->tx_status = 0; - } else if (flag == DISABLE_RECEIVE) { - p_i2sdrv_data->rx_status = 0; - } - status = i2s_cleanup(i2s_dev->controller, flag); - if (status) { - return -1; - } - - return 0; -} - -/** -* u8500_acodec_enable_audio_mode -* -* @direction - direction of data flow (from/to) audiocode -* @mspClockSel - clock for MSP -* @mspInClockFreq - input clock for MSP -* @channels - number of channel, 1 for mono and 2 for stereo -* -* It configures the audiocodec in audio mode. In this case,the I2S -* protocol is used for data exchanges. -*/ - -t_ab8500_codec_error u8500_acodec_enable_audio_mode(struct acodec_configuration - * acodec_config) -{ - struct i2s_device *i2s_dev = NULL; - t_ab8500_codec_error error_status = AB8500_CODEC_OK; - struct msp_config msp_config; - t_ab8500_codec_error codec_error; - t_ab8500_codec_mode codec_in_mode = AB8500_CODEC_MODE_MANUAL_SETTING; - t_ab8500_codec_mode codec_out_mode = AB8500_CODEC_MODE_MANUAL_SETTING; - t_ab8500_codec_direction codec_direction; -/*#ifdef CONFIG_U8500_AB8500_CUT10*/ -#if 1 - t_ab8500_codec_tdm_config tdm_config; -#endif - - memset(&msp_config, 0, sizeof(msp_config)); - - FUNC_ENTER(); - stm_dbg(DBG_ST.acodec, - " Entering in u8500_acodec_enable_audio_mode()\n"); - - if (i2sdrv[I2S_CLIENT_MSP1]->flag) { - stm_dbg(DBG_ST.acodec, " I2S controller not available\n"); - return -1; - } - - i2s_dev = i2sdrv[I2S_CLIENT_MSP1]->i2s; - - if (g_codec_system_context.cur_user == NO_USER) { - stm_error("Audiocodec not yet configured by any user\n"); - return (AB8500_CODEC_ERROR); - } else if (g_codec_system_context.cur_user != acodec_config->user) { - stm_error - (" Trying to acces audiocodec already in use by user %d\n", - g_codec_system_context.cur_user); - return (AB8500_CODEC_ERROR); - } - - switch (acodec_config->direction) { - case AB8500_CODEC_DIRECTION_INOUT: - codec_direction = AB8500_CODEC_DIRECTION_INOUT; - codec_in_mode = AB8500_CODEC_MODE_VOICE; //HIFI - codec_out_mode = AB8500_CODEC_MODE_VOICE; //VOICE - break; - case AB8500_CODEC_DIRECTION_IN: - codec_direction = AB8500_CODEC_DIRECTION_IN; - codec_in_mode = AB8500_CODEC_MODE_VOICE; //HIFI - break; - case AB8500_CODEC_DIRECTION_OUT: - codec_direction = AB8500_CODEC_DIRECTION_OUT; - codec_out_mode = AB8500_CODEC_MODE_VOICE; //HIFI - break; - default: - stm_error("Invalid direction\n"); - return AB8500_CODEC_ERROR; - } - - /* MSP configuration */ - - msp_config.tx_clock_sel = 0; //TX_CLK_SEL_SRG; - msp_config.rx_clock_sel = 0; //RX_CLK_SEL_SRG; - - msp_config.tx_frame_sync_sel = 0; //0x00000400; Frame synchronization signal is provided by an external source. MSPTFS is an input pin - msp_config.rx_frame_sync_sel = 0; //0: Rx Frame synchronization signal is provided by an external source. MSPRFS is an input pin - - msp_config.input_clock_freq = MSP_INPUT_FREQ_48MHZ; - - msp_config.srg_clock_sel = 0; //0x000C0000 - - //msp_config.rx_endianess = MSP_BIG_ENDIAN; - //msp_config.tx_endianess = MSP_BIG_ENDIAN; - - msp_config.rx_frame_sync_pol = RX_FIFO_SYNC_HI; - msp_config.tx_frame_sync_pol = TX_FIFO_SYNC_HI; - - //msp_config.rx_unexpect_frame_sync = MSP_UNEXPECTED_FS_IGNORE; - //msp_config.tx_unexpect_frame_sync = MSP_UNEXPECTED_FS_IGNORE; - - msp_config.rx_fifo_config = RX_FIFO_ENABLE; - msp_config.tx_fifo_config = TX_FIFO_ENABLE; - - msp_config.spi_clk_mode = SPI_CLK_MODE_NORMAL; - msp_config.spi_burst_mode = 0; - - msp_config.handler = acodec_config->handler; - msp_config.tx_callback_data = acodec_config->tx_callback_data; - msp_config.tx_data_enable = 0; - msp_config.rx_callback_data = acodec_config->rx_callback_data; - - msp_config.loopback_enable = 0; - msp_config.multichannel_configured = 0; - - msp_config.def_elem_len = 0; - //msp_config.loopback_enable = g_codec_system_context.msp_loopback; - - stm_dbg(DBG_ST.acodec, " msp_config.loopback_enable = 0x%x \n", - msp_config.loopback_enable); - -#if 0 - msp_config.default_protocol_desc = 1; -#else - msp_config.default_protocol_desc = 0; - msp_config.protocol_desc.rx_phase_mode = MSP_SINGLE_PHASE; - msp_config.protocol_desc.tx_phase_mode = MSP_SINGLE_PHASE; - msp_config.protocol_desc.rx_phase2_start_mode = - MSP_PHASE2_START_MODE_IMEDIATE; - msp_config.protocol_desc.tx_phase2_start_mode = - MSP_PHASE2_START_MODE_IMEDIATE; - msp_config.protocol_desc.rx_bit_transfer_format = MSP_BTF_MS_BIT_FIRST; - msp_config.protocol_desc.tx_bit_transfer_format = MSP_BTF_MS_BIT_FIRST; - msp_config.protocol_desc.rx_frame_length_1 = MSP_FRAME_LENGTH_1; - msp_config.protocol_desc.rx_frame_length_2 = MSP_FRAME_LENGTH_1; - msp_config.protocol_desc.tx_frame_length_1 = MSP_FRAME_LENGTH_1; - msp_config.protocol_desc.tx_frame_length_2 = MSP_FRAME_LENGTH_1; - msp_config.protocol_desc.rx_element_length_1 = MSP_ELEM_LENGTH_32; - msp_config.protocol_desc.rx_element_length_2 = MSP_ELEM_LENGTH_32; - msp_config.protocol_desc.tx_element_length_1 = MSP_ELEM_LENGTH_32; - msp_config.protocol_desc.tx_element_length_2 = MSP_ELEM_LENGTH_32; - msp_config.protocol_desc.rx_data_delay = MSP_DELAY_0; - msp_config.protocol_desc.tx_data_delay = MSP_DELAY_0; - msp_config.protocol_desc.rx_clock_pol = MSP_RISING_EDGE; - msp_config.protocol_desc.tx_clock_pol = MSP_FALLING_EDGE; - msp_config.protocol_desc.rx_frame_sync_pol = - MSP_FRAME_SYNC_POL_ACTIVE_HIGH; - msp_config.protocol_desc.tx_frame_sync_pol = - MSP_FRAME_SYNC_POL_ACTIVE_HIGH; - msp_config.protocol_desc.rx_half_word_swap = MSP_HWS_NO_SWAP; - msp_config.protocol_desc.tx_half_word_swap = MSP_HWS_NO_SWAP; - msp_config.protocol_desc.compression_mode = MSP_COMPRESS_MODE_LINEAR; - msp_config.protocol_desc.expansion_mode = MSP_EXPAND_MODE_LINEAR; - msp_config.protocol_desc.spi_clk_mode = MSP_SPI_CLOCK_MODE_NON_SPI; - msp_config.protocol_desc.spi_burst_mode = MSP_SPI_BURST_MODE_DISABLE; - msp_config.protocol_desc.frame_sync_ignore = MSP_FRAME_SYNC_IGNORE; - msp_config.protocol_desc.frame_period = 63; - msp_config.protocol_desc.frame_width = 31; - msp_config.protocol_desc.total_clocks_for_one_frame = 64; - -#endif - - msp_config.direction = MSP_BOTH_T_R_MODE; - msp_config.protocol = MSP_PCM_PROTOCOL; //MSP_I2S_PROTOCOL - msp_config.frame_size = ELEMENT_SIZE; - // msp_config.frame_freq = freq; $kardad$ - msp_config.frame_freq = CODEC_SAMPLING_FREQ_48KHZ; - - /* enable msp for both tr and rx mode with dma data transfer. THIS IS NOW DONE SEPARATELY from SAA. */ - - if (acodec_config->channels == 1) - msp_config.data_size = MSP_DATA_SIZE_16BIT; - else - msp_config.data_size = MSP_DATA_SIZE_32BIT; - -#ifdef CONFIG_U8500_ACODEC_DMA - msp_config.work_mode = MSP_DMA_MODE; -#elif defined(CONFIG_U8500_ACODEC_POLL) - msp_config.work_mode = MSP_POLLING_MODE; -#else - msp_config.work_mode = MSP_INTERRUPT_MODE; -#endif - - if (DISABLE == acodec_config->direct_rendering_mode) { - msp_config.multichannel_configured = 1; - msp_config.multichannel_config.tx_multichannel_enable = 1; - if (acodec_config->channels == 1) { - msp_config.multichannel_config.tx_channel_0_enable = - 0x0000001; - } else { - msp_config.multichannel_config.tx_channel_0_enable = - 0x0000003; - } - msp_config.multichannel_config.tx_channel_1_enable = 0x0000000; - msp_config.multichannel_config.tx_channel_2_enable = 0x0000000; - msp_config.multichannel_config.tx_channel_3_enable = 0x0000000; - - msp_config.multichannel_config.rx_multichannel_enable = 1; - - if (acodec_config->channels == 1) { - msp_config.multichannel_config.rx_channel_0_enable = - 0x0000001; - } else { - msp_config.multichannel_config.rx_channel_0_enable = - 0x0000003; - } - msp_config.multichannel_config.rx_channel_1_enable = 0x0000000; - msp_config.multichannel_config.rx_channel_2_enable = 0x0000000; - msp_config.multichannel_config.rx_channel_3_enable = 0x0000000; - - if (acodec_config->tdm8_ch_mode == ENABLE) { - msp_config.def_elem_len = 1; - - msp_config.protocol_desc.tx_element_length_1 = - MSP_ELEM_LENGTH_20; - msp_config.protocol_desc.tx_frame_length_1 = - MSP_FRAME_LENGTH_8; - msp_config.protocol_desc.tx_data_delay = MSP_DELAY_1; - - msp_config.protocol_desc.tx_element_length_2 = - MSP_ELEM_LENGTH_8; - msp_config.protocol_desc.tx_frame_length_2 = - MSP_FRAME_LENGTH_1; - - msp_config.protocol_desc.rx_element_length_1 = - MSP_ELEM_LENGTH_20; - msp_config.protocol_desc.rx_frame_length_1 = - MSP_FRAME_LENGTH_8; - msp_config.protocol_desc.rx_data_delay = MSP_DELAY_1; - - msp_config.protocol_desc.rx_element_length_2 = - MSP_ELEM_LENGTH_8; - msp_config.protocol_desc.rx_frame_length_2 = - MSP_FRAME_LENGTH_1; - - msp_config.protocol_desc.frame_sync_ignore = - MSP_FRAME_SYNC_UNIGNORE; - msp_config.protocol_desc.rx_clock_pol = MSP_RISING_EDGE; - - //if(acodec_config->digital_loopback == ENABLE) { - if (1) { - msp_config.multichannel_config. - tx_channel_0_enable = - (1 << NB_OF_CHANNEL_USED) - 1; - msp_config.multichannel_config. - rx_channel_0_enable = - (1 << NB_OF_CHANNEL_USED) - 1; - } else { - msp_config.multichannel_config. - tx_channel_0_enable = 0x3; - msp_config.multichannel_config. - rx_channel_0_enable = 0x3; - } - } - - if (acodec_config->tdm8_ch_mode == ENABLE) { - /* TFSDLY = 2 delay units */ - msp_config.iodelay = 0x20; - } - - error_status = i2s_setup(i2s_dev->controller, &msp_config); - if (error_status < 0) { - stm_error("error in msp enable, error_status is %d\n", - error_status); - return error_status; - } - } else if (ENABLE == acodec_config->direct_rendering_mode) { - writel(0x00, ((char *)(IO_ADDRESS(U8500_MSP1_BASE) + 0x04))); //MSP_GCR - } - - if (ACODEC_CONFIG_REQUIRED == acodec_config->acodec_config_need) { - AB8500_CODEC_SelectInterface(AB8500_CODEC_AUDIO_INTERFACE_0); - - codec_error = AB8500_CODEC_PowerUp(); - if (AB8500_CODEC_OK != codec_error) { - stm_error("AB8500_CODEC_PowerUp failed\n"); - return AB8500_CODEC_ERROR; - } - -/*#ifdef CONFIG_U8500_AB8500_CUT10*/ -#if 1 - tdm_config.cr27_if1_bitclk_osr = - AB8500_CODEC_CR27_IF1_BITCLK_OSR_32; - tdm_config.cr27_if0_bitclk_osr = - AB8500_CODEC_CR27_IF0_BITCLK_OSR_32; - tdm_config.cr28_if0wl = AB8500_CODEC_CR28_IF0WL_16BITS; - tdm_config.cr30_if1wl = AB8500_CODEC_CR30_IF1WL_16BITS; - - switch (acodec_config->direction) { - case AB8500_CODEC_DIRECTION_INOUT: - tdm_config.cr28_bitclk0p = - AB8500_CODEC_CR28_BITCLK0P_FALLING_EDGE; - tdm_config.cr28_if0del = - AB8500_CODEC_CR28_IF0DEL_DELAYED; - break; - case AB8500_CODEC_DIRECTION_IN: - tdm_config.cr28_bitclk0p = - AB8500_CODEC_CR28_BITCLK0P_RISING_EDGE; - tdm_config.cr28_if0del = - AB8500_CODEC_CR28_IF0DEL_NOT_DELAYED; - break; - case AB8500_CODEC_DIRECTION_OUT: - tdm_config.cr28_bitclk0p = - AB8500_CODEC_CR28_BITCLK0P_FALLING_EDGE; - tdm_config.cr28_if0del = - AB8500_CODEC_CR28_IF0DEL_DELAYED; - break; - default: - stm_error("Invalid direction\n"); - return AB8500_CODEC_ERROR; - } - - if (acodec_config->tdm8_ch_mode == ENABLE) { - tdm_config.cr27_if0_bitclk_osr = - AB8500_CODEC_CR27_IF0_BITCLK_OSR_256; - tdm_config.cr28_if0wl = AB8500_CODEC_CR28_IF0WL_20BITS; - tdm_config.cr28_bitclk0p = - AB8500_CODEC_CR28_BITCLK0P_RISING_EDGE; - tdm_config.cr28_if0del = - AB8500_CODEC_CR28_IF0DEL_DELAYED; - codec_in_mode = AB8500_CODEC_MODE_VOICE; - codec_out_mode = AB8500_CODEC_MODE_VOICE; - acodec_config->direction = AB8500_CODEC_DIRECTION_INOUT; - } - - codec_error = - AB8500_CODEC_SetModeAndDirection(acodec_config->direction, - codec_in_mode, - codec_out_mode, - &tdm_config); -#else - codec_error = - AB8500_CODEC_SetModeAndDirection(acodec_config->direction, - codec_in_mode, - codec_out_mode); -#endif - if (AB8500_CODEC_OK != codec_error) { - stm_error("set mode and direction failed\n"); - return AB8500_CODEC_ERROR; - } - - codec_error = - AB8500_CODEC_SetMasterMode(AB8500_CODEC_MASTER_MODE_ENABLE); - - if (AB8500_CODEC_OK != codec_error) { - stm_error("set mode and direction failed\n"); - return AB8500_CODEC_ERROR; - } - - /*codec_error = trg_codec_set_sample_frequency(0); */ - - /*u8500_acodec_set_volume(g_codec_system_context.in_left_volume, - g_codec_system_context.in_right_volume, - g_codec_system_context.out_left_volume, - g_codec_system_context.out_right_volume, - user); */ -#if 0 - if (AB8500_CODEC_DIRECTION_IN == acodec_config->direction - || AB8500_CODEC_DIRECTION_INOUT == - acodec_config->direction) { - - u8500_acodec_allocate_ad_slot - (AB8500_CODEC_SRC_D_MICROPHONE_1, TDM_8_CH_MODE); - u8500_acodec_allocate_ad_slot - (AB8500_CODEC_SRC_D_MICROPHONE_2, TDM_8_CH_MODE); - - /*codec_error = AB8500_CODEC_ADSlotAllocation (AB8500_CODEC_SLOT0, - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_OUT3); - if (AB8500_CODEC_OK != codec_error) { - stm_error("ab8500_codec_adslot_allocation failed\n"); - return AB8500_CODEC_ERROR; - } - codec_error = AB8500_CODEC_ADSlotAllocation (AB8500_CODEC_SLOT1, - AB8500_CODEC_CR31_TO_CR46_SLOT_IS_TRISTATE); - if (AB8500_CODEC_OK != codec_error) { - stm_error("ab8500_codec_adslot_allocation failed\n"); - return AB8500_CODEC_ERROR; - } */ - - } - - if (AB8500_CODEC_DIRECTION_OUT == acodec_config->direction - || AB8500_CODEC_DIRECTION_INOUT == - acodec_config->direction) { - u8500_acodec_allocate_da_slot(AB8500_CODEC_DEST_HEADSET, - TDM_8_CH_MODE); - /*codec_error = AB8500_CODEC_DASlotAllocation (AB8500_CODEC_DA_CHANNEL_NUMBER_1, - AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT08); - if (AB8500_CODEC_OK != codec_error) { - stm_error - ("ab8500_codec_daslot_allocation failed\n"); - return AB8500_CODEC_ERROR; - } - codec_error = AB8500_CODEC_DASlotAllocation (AB8500_CODEC_DA_CHANNEL_NUMBER_2, - AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT09); - if (AB8500_CODEC_OK != codec_error) { - stm_error - ("ab8500_codec_daslot_allocation failed\n"); - return AB8500_CODEC_ERROR; - } */ - - } -#endif - - } //END of if acodec_config_need - -/*#if DRIVER_DEBUG > 0 - { - dump_msp_registers(); - dump_acodec_registers(); - } -#endif*/ - - stm_dbg(DBG_ST.acodec, - "leaving in u8500_acodec_enable_audio_mode() \n"); - - FUNC_EXIT(); - return AB8500_CODEC_OK; -} - -/** -* u8500_acodec_set_output_volume - configures the volume level for both speakers -* @in_left_volume - volume for left channel of mic -* @in_right_volume - volume for right channel of mic -* @out_left_volume - volume for left speaker -* @out_right_volume - volume for right speaker -*/ -t_ab8500_codec_error u8500_acodec_set_output_volume(t_ab8500_codec_dest - dest_device, - int left_volume, - int right_volume, - t_acodec_user user) -{ - t_ab8500_codec_error codec_error = AB8500_CODEC_OK; - - stm_dbg(DBG_ST.acodec, - " Entering in u8500_acodec_set_output_volume()\n"); - - FUNC_ENTER(); - - user = user; //keep compiler happy - - g_codec_system_context.output_config[dest_device].left_volume = - left_volume; - g_codec_system_context.output_config[dest_device].right_volume = - right_volume; - - AB8500_CODEC_SetDestVolume(dest_device, left_volume, right_volume); - - FUNC_EXIT(); - return codec_error; -} - -/*u8500_acodec_get_output_volume*/ - -t_ab8500_codec_error u8500_acodec_get_output_volume(t_ab8500_codec_dest - dest_device, - int *p_left_volume, - int *p_right_volume, - t_acodec_user user) -{ - t_ab8500_codec_error codec_error = AB8500_CODEC_OK; - - stm_dbg(DBG_ST.acodec, - " Entering in u8500_acodec_set_output_volume()\n"); - - user = user; //keep compiler happy - - *p_left_volume = - g_codec_system_context.output_config[dest_device].left_volume; - *p_right_volume = - g_codec_system_context.output_config[dest_device].right_volume; - - return codec_error; -} - -/** -* u8500_acodec_set_input_volume - configures the volume level for both speakers -* @in_left_volume - volume for left channel of mic -* @in_right_volume - volume for right channel of mic -* @out_left_volume - volume for left speaker -* @out_right_volume - volume for right speaker -*/ -t_ab8500_codec_error u8500_acodec_set_input_volume(t_ab8500_codec_src - src_device, int left_volume, - int right_volume, - t_acodec_user user) -{ - t_ab8500_codec_error codec_error = AB8500_CODEC_OK; - - stm_dbg(DBG_ST.acodec, - " Entering in u8500_acodec_set_input_volume()\n"); - - user = user; //keep compiler happy - - g_codec_system_context.input_config[src_device].left_volume = - left_volume; - g_codec_system_context.input_config[src_device].right_volume = - right_volume; - - AB8500_CODEC_SetSrcVolume(src_device, left_volume, right_volume); - - return codec_error; -} - -/** -* u8500_acodec_get_input_volume - configures the volume level for both speakers -* @in_left_volume - volume for left channel of mic -* @in_right_volume - volume for right channel of mic -* @out_left_volume - volume for left speaker -* @out_right_volume - volume for right speaker -*/ -t_ab8500_codec_error u8500_acodec_get_input_volume(t_ab8500_codec_src - src_device, - int *p_left_volume, - int *p_right_volume, - t_acodec_user user) -{ - t_ab8500_codec_error codec_error = AB8500_CODEC_OK; - - stm_dbg(DBG_ST.acodec, - " Entering in u8500_acodec_get_input_volume()\n"); - - user = user; //keep compiler happy - - *p_left_volume = - g_codec_system_context.input_config[src_device].left_volume; - *p_right_volume = - g_codec_system_context.input_config[src_device].right_volume; - - return codec_error; -} - -/** -* u8500_acodec_toggle_playback_mute_control - configures the mute for both speakers -* @in_left_volume - volume for left channel of mic -* @in_right_volume - volume for right channel of mic -* @out_left_volume - volume for left speaker -* @out_right_volume - volume for right speaker -*/ -t_ab8500_codec_error -u8500_acodec_toggle_playback_mute_control(t_ab8500_codec_dest dest_device, - t_u8500_bool_state mute_state, - t_acodec_user user) -{ - t_ab8500_codec_error codec_error = AB8500_CODEC_OK; - - stm_dbg(DBG_ST.acodec, - " Entering in u8500_acodec_toggle_playback_mute_control \n"); - - user = user; //keep compiler happy - - g_codec_system_context.output_config[dest_device].mute_state = - mute_state; - - if (ENABLE == mute_state) { - AB8500_CODEC_DestPowerControl(dest_device, - AB8500_CODEC_SRC_STATE_ENABLE); - } else { - AB8500_CODEC_DestPowerControl(dest_device, - AB8500_CODEC_SRC_STATE_DISABLE); - } - - return codec_error; -} - -/** -* u8500_acodec_toggle_capture_mute_control - configures the mute for both speakers -* @in_left_volume - volume for left channel of mic -* @in_right_volume - volume for right channel of mic -* @out_left_volume - volume for left speaker -* @out_right_volume - volume for right speaker -*/ -t_ab8500_codec_error u8500_acodec_toggle_capture_mute_control(t_ab8500_codec_src - src_device, - t_u8500_bool_state - mute_state, - t_acodec_user - user) -{ - t_ab8500_codec_error codec_error = AB8500_CODEC_OK; - - stm_dbg(DBG_ST.acodec, - " Entering in u8500_acodec_toggle_capture_mute_control \n"); - - user = user; //keep compiler happy - - g_codec_system_context.input_config[src_device].mute_state = mute_state; - - if (ENABLE == mute_state) { - AB8500_CODEC_SrcPowerControl(src_device, - AB8500_CODEC_SRC_STATE_ENABLE); - } else { - AB8500_CODEC_SrcPowerControl(src_device, - AB8500_CODEC_SRC_STATE_DISABLE); - } - - return codec_error; -} - -/** -* u8500_acodec_select_input -* @input_device: MIC or linein. -* -* This routine selects the input device mic or linein. -*/ - -t_ab8500_codec_error u8500_acodec_select_input(t_ab8500_codec_src - input_device, - t_acodec_user user, - t_u8500_mode mode) -{ - - t_ab8500_codec_error codec_error = AB8500_CODEC_OK; - - stm_dbg(DBG_ST.acodec, " Entering u8500_acodec_select_input\n"); - - if (TDM_8_CH_MODE == mode) - u8500_acodec_allocate_ad_slot(input_device, TDM_8_CH_MODE); - else - u8500_acodec_allocate_ad_slot(input_device, CLASSICAL_MODE); - - codec_error = AB8500_CODEC_SelectInput(input_device); - - stm_dbg(DBG_ST.acodec, " leaving u8500_acodec_select_input\n"); - return codec_error; -} - -/** -* u8500_acodec_select_output -* @output_device: output device HP/LSP -* -* This routine selects the output device Headphone or loud speaker -*/ - -t_ab8500_codec_error u8500_acodec_select_output(t_ab8500_codec_dest - output_device, - t_acodec_user user, - t_u8500_mode mode) -{ - - t_ab8500_codec_error codec_error = AB8500_CODEC_OK; - - FUNC_ENTER(); - stm_dbg(DBG_ST.acodec, " Entering u8500_acodec_select_output()\n"); - - if (TDM_8_CH_MODE == mode) - u8500_acodec_allocate_da_slot(output_device, TDM_8_CH_MODE); - else - u8500_acodec_allocate_da_slot(output_device, CLASSICAL_MODE); - - codec_error = AB8500_CODEC_SelectOutput(output_device); - - stm_dbg(DBG_ST.acodec, " leaving u8500_acodec_select_output()\n"); - FUNC_EXIT(); - return codec_error; -} - -t_ab8500_codec_error u8500_acodec_allocate_ad_slot(t_ab8500_codec_src - input_device, - t_u8500_mode mode) -{ - t_ab8500_codec_cr31_to_cr46_ad_data_allocation ad_data_line1, - ad_data_line2; - t_ab8500_codec_slot slot1, slot2; - t_ab8500_codec_error codec_error = AB8500_CODEC_OK; - - slot1 = AB8500_CODEC_SLOT_UNDEFINED; - slot2 = AB8500_CODEC_SLOT_UNDEFINED; - - ad_data_line1 = - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_UNDEFINED; - ad_data_line2 = - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_UNDEFINED; - - switch (input_device) { - case AB8500_CODEC_SRC_D_MICROPHONE_1: - { - slot1 = AB8500_CODEC_SLOT0; - ad_data_line1 = - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_OUT1; - } - break; - case AB8500_CODEC_SRC_MICROPHONE_2: - case AB8500_CODEC_SRC_D_MICROPHONE_2: - { - slot1 = AB8500_CODEC_SLOT1; - ad_data_line1 = - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_OUT2; - } - break; - case AB8500_CODEC_SRC_D_MICROPHONE_3: - case AB8500_CODEC_SRC_MICROPHONE_1A: - case AB8500_CODEC_SRC_MICROPHONE_1B: - { - slot1 = AB8500_CODEC_SLOT2; - ad_data_line1 = - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_OUT3; - } - break; - case AB8500_CODEC_SRC_D_MICROPHONE_4: - { - slot1 = AB8500_CODEC_SLOT3; - ad_data_line1 = - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_OUT4; - } - break; - case AB8500_CODEC_SRC_D_MICROPHONE_5: - { - slot1 = AB8500_CODEC_SLOT4; - ad_data_line1 = - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_OUT5; - } - break; - case AB8500_CODEC_SRC_D_MICROPHONE_6: - { - slot1 = AB8500_CODEC_SLOT5; - ad_data_line1 = - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_OUT6; - } - break; - case AB8500_CODEC_SRC_LINEIN: - { - slot1 = AB8500_CODEC_SLOT0; - ad_data_line1 = - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_OUT1; - - slot2 = AB8500_CODEC_SLOT1; - ad_data_line2 = - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_OUT2; - } - case AB8500_CODEC_SRC_FM_RX: - { - slot1 = AB8500_CODEC_SLOT6; - ad_data_line1 = - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_OUT7; - - slot2 = AB8500_CODEC_SLOT7; - ad_data_line2 = - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_OUT8; - } - break; - case AB8500_CODEC_SRC_ALL: - break; - } - - if ((AB8500_CODEC_SLOT_UNDEFINED != slot1) - && (AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_UNDEFINED != - ad_data_line1)) { - if (CLASSICAL_MODE == mode) { - slot1 = AB8500_CODEC_SLOT0; - } - codec_error = - AB8500_CODEC_ADSlotAllocation(slot1, ad_data_line1); - if (AB8500_CODEC_OK != codec_error) { - stm_error("ab8500_codec_adslot_allocation failed\n"); - return AB8500_CODEC_ERROR; - } - } - - if ((AB8500_CODEC_SLOT_UNDEFINED != slot2) - && (AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_UNDEFINED != - ad_data_line2)) { - if (CLASSICAL_MODE == mode) { - slot2 = AB8500_CODEC_SLOT1; - } - codec_error = - AB8500_CODEC_ADSlotAllocation(slot2, ad_data_line2); - if (AB8500_CODEC_OK != codec_error) { - stm_error("ab8500_codec_adslot_allocation failed\n"); - return AB8500_CODEC_ERROR; - } - } - - return AB8500_CODEC_OK; -} - -t_ab8500_codec_error u8500_acodec_unallocate_ad_slot(t_ab8500_codec_src - input_device, - t_u8500_mode mode) -{ - t_ab8500_codec_slot slot1, slot2; - t_ab8500_codec_error codec_error = AB8500_CODEC_OK; - - slot1 = AB8500_CODEC_SLOT_UNDEFINED; - slot2 = AB8500_CODEC_SLOT_UNDEFINED; - - switch (input_device) { - case AB8500_CODEC_SRC_D_MICROPHONE_1: - { - slot1 = AB8500_CODEC_SLOT0; - } - break; - case AB8500_CODEC_SRC_MICROPHONE_2: - case AB8500_CODEC_SRC_D_MICROPHONE_2: - { - slot1 = AB8500_CODEC_SLOT1; - } - break; - case AB8500_CODEC_SRC_D_MICROPHONE_3: - case AB8500_CODEC_SRC_MICROPHONE_1A: - case AB8500_CODEC_SRC_MICROPHONE_1B: - { - slot1 = AB8500_CODEC_SLOT2; - } - break; - case AB8500_CODEC_SRC_D_MICROPHONE_4: - { - slot1 = AB8500_CODEC_SLOT3; - } - break; - case AB8500_CODEC_SRC_D_MICROPHONE_5: - { - slot1 = AB8500_CODEC_SLOT4; - } - break; - case AB8500_CODEC_SRC_D_MICROPHONE_6: - { - slot1 = AB8500_CODEC_SLOT5; - } - break; - case AB8500_CODEC_SRC_LINEIN: - { - slot1 = AB8500_CODEC_SLOT0; - slot2 = AB8500_CODEC_SLOT1; - } - break; - case AB8500_CODEC_SRC_ALL: - break; - } - - if (AB8500_CODEC_SLOT_UNDEFINED != slot1) { - if (CLASSICAL_MODE == mode) { - slot1 = AB8500_CODEC_SLOT0; - } - codec_error = - AB8500_CODEC_ADSlotAllocation(slot1, - AB8500_CODEC_CR31_TO_CR46_SLOT_IS_TRISTATE); - if (AB8500_CODEC_OK != codec_error) { - stm_error("ab8500_codec_adslot_allocation failed\n"); - return AB8500_CODEC_ERROR; - } - } - - if (AB8500_CODEC_SLOT_UNDEFINED != slot2) { - if (CLASSICAL_MODE == mode) { - slot2 = AB8500_CODEC_SLOT1; - } - codec_error = - AB8500_CODEC_ADSlotAllocation(slot2, - AB8500_CODEC_CR31_TO_CR46_SLOT_IS_TRISTATE); - if (AB8500_CODEC_OK != codec_error) { - stm_error("ab8500_codec_adslot_allocation failed\n"); - return AB8500_CODEC_ERROR; - } - } - - return AB8500_CODEC_OK; -} - -#ifdef CONFIG_U8500_AB8500_CUT10 -t_ab8500_codec_error u8500_acodec_allocate_da_slot(t_ab8500_codec_dest - output_device, - t_u8500_mode mode) -{ - t_ab8500_codec_da_channel_number da_ch_no1, da_ch_no2; - t_ab8500_codec_cr51_to_cr58_sltoda da_slot1, da_slot2; - t_ab8500_codec_error codec_error = AB8500_CODEC_OK; - - da_ch_no1 = AB8500_CODEC_DA_CHANNEL_NUMBER_UNDEFINED; - da_ch_no2 = AB8500_CODEC_DA_CHANNEL_NUMBER_UNDEFINED; - - da_slot1 = AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT_UNDEFINED; - da_slot2 = AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT_UNDEFINED; - - switch (output_device) { - case AB8500_CODEC_DEST_HEADSET: - { - da_ch_no1 = AB8500_CODEC_DA_CHANNEL_NUMBER_1; - da_slot1 = AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT08; - - da_ch_no2 = AB8500_CODEC_DA_CHANNEL_NUMBER_2; - da_slot2 = AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT09; - } - break; - case AB8500_CODEC_DEST_EARPIECE: - { - da_ch_no1 = AB8500_CODEC_DA_CHANNEL_NUMBER_1; - da_slot1 = AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT08; - } - break; - case AB8500_CODEC_DEST_HANDSFREE: - { - da_ch_no1 = AB8500_CODEC_DA_CHANNEL_NUMBER_3; - da_slot1 = AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT10; - - da_ch_no2 = AB8500_CODEC_DA_CHANNEL_NUMBER_4; - da_slot2 = AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT11; - } - break; - case AB8500_CODEC_DEST_VIBRATOR_L: - { - da_ch_no1 = AB8500_CODEC_DA_CHANNEL_NUMBER_5; - da_slot1 = AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT12; - } - break; - case AB8500_CODEC_DEST_VIBRATOR_R: - { - da_ch_no1 = AB8500_CODEC_DA_CHANNEL_NUMBER_6; - da_slot1 = AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT13; - } - break; - - case AB8500_CODEC_DEST_FM_TX: - { - da_ch_no1 = AB8500_CODEC_DA_CHANNEL_NUMBER_7; - da_slot1 = AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT14; - - da_ch_no2 = AB8500_CODEC_DA_CHANNEL_NUMBER_8; - da_slot2 = AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT15; - } - - case AB8500_CODEC_DEST_ALL: - break; - } - - if ((AB8500_CODEC_DA_CHANNEL_NUMBER_UNDEFINED != da_ch_no1) - && (AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT_UNDEFINED != da_slot1)) { - if (CLASSICAL_MODE == mode) { - da_slot1 = AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT08; - } - codec_error = - AB8500_CODEC_DASlotAllocation(da_ch_no1, da_slot1); - if (AB8500_CODEC_OK != codec_error) { - stm_error("ab8500_codec_daslot_allocation failed\n"); - return AB8500_CODEC_ERROR; - } - } - - if ((AB8500_CODEC_DA_CHANNEL_NUMBER_UNDEFINED != da_ch_no2) - && (AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT_UNDEFINED != da_slot2)) { - if (CLASSICAL_MODE == mode) { - da_slot1 = AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT09; - } - codec_error = - AB8500_CODEC_DASlotAllocation(da_ch_no2, da_slot2); - if (AB8500_CODEC_OK != codec_error) { - stm_error("ab8500_codec_daslot_allocation failed\n"); - return AB8500_CODEC_ERROR; - } - } - - return AB8500_CODEC_OK; -} - -#else -t_ab8500_codec_error u8500_acodec_allocate_da_slot(t_ab8500_codec_dest - output_device, - t_u8500_mode mode) -{ - t_ab8500_codec_da_channel_number da_ch_no1, da_ch_no2; - t_ab8500_codec_cr51_to_cr56_sltoda da_slot1, da_slot2; - t_ab8500_codec_error codec_error = AB8500_CODEC_OK; - - da_ch_no1 = AB8500_CODEC_DA_CHANNEL_NUMBER_UNDEFINED; - da_ch_no2 = AB8500_CODEC_DA_CHANNEL_NUMBER_UNDEFINED; - - da_slot1 = AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT_UNDEFINED; - da_slot2 = AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT_UNDEFINED; - - switch (output_device) { - case AB8500_CODEC_DEST_HEADSET: - { - da_ch_no1 = AB8500_CODEC_DA_CHANNEL_NUMBER_1; - da_slot1 = AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT08; - - da_ch_no2 = AB8500_CODEC_DA_CHANNEL_NUMBER_2; - da_slot2 = AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT09; - } - break; - case AB8500_CODEC_DEST_EARPIECE: - { - da_ch_no1 = AB8500_CODEC_DA_CHANNEL_NUMBER_1; - da_slot1 = AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT08; - } - break; - case AB8500_CODEC_DEST_HANDSFREE: - { - da_ch_no1 = AB8500_CODEC_DA_CHANNEL_NUMBER_3; - da_slot1 = AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT10; - - da_ch_no2 = AB8500_CODEC_DA_CHANNEL_NUMBER_4; - da_slot2 = AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT11; - } - break; - case AB8500_CODEC_DEST_VIBRATOR_L: - { - da_ch_no1 = AB8500_CODEC_DA_CHANNEL_NUMBER_5; - da_slot1 = AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT12; - } - break; - case AB8500_CODEC_DEST_VIBRATOR_R: - { - da_ch_no1 = AB8500_CODEC_DA_CHANNEL_NUMBER_6; - da_slot1 = AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT13; - } - break; - - case AB8500_CODEC_DEST_ALL: - break; - } - - if ((AB8500_CODEC_DA_CHANNEL_NUMBER_UNDEFINED != da_ch_no1) - && (AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT_UNDEFINED != da_slot1)) { - if (CLASSICAL_MODE == mode) { - da_slot1 = AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT08; - } - codec_error = - AB8500_CODEC_DASlotAllocation(da_ch_no1, da_slot1); - if (AB8500_CODEC_OK != codec_error) { - stm_error("ab8500_codec_daslot_allocation failed\n"); - return AB8500_CODEC_ERROR; - } - } - - if ((AB8500_CODEC_DA_CHANNEL_NUMBER_UNDEFINED != da_ch_no2) - && (AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT_UNDEFINED != da_slot2)) { - if (CLASSICAL_MODE == mode) { - da_slot1 = AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT09; - } - codec_error = - AB8500_CODEC_DASlotAllocation(da_ch_no2, da_slot2); - if (AB8500_CODEC_OK != codec_error) { - stm_error("ab8500_codec_daslot_allocation failed\n"); - return AB8500_CODEC_ERROR; - } - } - - return AB8500_CODEC_OK; -} -#endif - -t_ab8500_codec_error u8500_acodec_unallocate_da_slot(t_ab8500_codec_dest - output_device, - t_u8500_mode mode) -{ - return AB8500_CODEC_OK; -} - -t_ab8500_codec_error u8500_acodec_set_src_power_cntrl(t_ab8500_codec_src - input_device, - t_u8500_bool_state - pwr_state) -{ - t_ab8500_codec_error codec_error = AB8500_CODEC_OK; - - if (ENABLE == pwr_state) { - u8500_acodec_allocate_ad_slot(input_device, TDM_8_CH_MODE); - codec_error = - AB8500_CODEC_SrcPowerControl(input_device, - AB8500_CODEC_SRC_STATE_ENABLE); - if (AB8500_CODEC_OK != codec_error) { - stm_error("AB8500_CODEC_SrcPowerControl failed\n"); - return AB8500_CODEC_ERROR; - } - g_codec_system_context.input_config[input_device].power_state = - ENABLE; - } else { - u8500_acodec_unallocate_ad_slot(input_device, TDM_8_CH_MODE); - codec_error = - AB8500_CODEC_SrcPowerControl(input_device, - AB8500_CODEC_SRC_STATE_DISABLE); - if (AB8500_CODEC_OK != codec_error) { - stm_error("AB8500_CODEC_SrcPowerControl failed\n"); - return AB8500_CODEC_ERROR; - } - g_codec_system_context.input_config[input_device].power_state = - DISABLE; - } - - return AB8500_CODEC_OK; -} - -t_u8500_bool_state u8500_acodec_get_src_power_state(t_ab8500_codec_src - input_device) -{ - return (g_codec_system_context.input_config[input_device].power_state); -} - -t_ab8500_codec_error u8500_acodec_set_dest_power_cntrl(t_ab8500_codec_dest - output_device, - t_u8500_bool_state - pwr_state) -{ - t_ab8500_codec_error codec_error = AB8500_CODEC_OK; - - if (ENABLE == pwr_state) { - AB8500_CODEC_SelectInterface(AB8500_CODEC_AUDIO_INTERFACE_0); - - codec_error = AB8500_CODEC_PowerUp(); - if (AB8500_CODEC_OK != codec_error) { - stm_error("AB8500_CODEC_PowerUp failed\n"); - return AB8500_CODEC_ERROR; - } - - u8500_acodec_allocate_da_slot(output_device, TDM_8_CH_MODE); - - codec_error = - AB8500_CODEC_DestPowerControl(output_device, - AB8500_CODEC_DEST_STATE_ENABLE); - if (AB8500_CODEC_OK != codec_error) { - stm_error("AB8500_CODEC_DestPowerControl failed\n"); - return AB8500_CODEC_ERROR; - } - g_codec_system_context.output_config[output_device]. - power_state = ENABLE; - } else { - u8500_acodec_unallocate_da_slot(output_device, TDM_8_CH_MODE); - codec_error = - AB8500_CODEC_DestPowerControl(output_device, - AB8500_CODEC_DEST_STATE_DISABLE); - if (AB8500_CODEC_OK != codec_error) { - stm_error("AB8500_CODEC_DestPowerControl failed\n"); - return AB8500_CODEC_ERROR; - } - g_codec_system_context.output_config[output_device]. - power_state = DISABLE; - } - - return AB8500_CODEC_OK; -} - -t_u8500_bool_state u8500_acodec_get_dest_power_state(t_ab8500_codec_dest - output_device) -{ - return (g_codec_system_context.output_config[output_device]. - power_state); -} - -/** -* u8500_acodec_toggle_analog_lpbk -* @output_device: output device HP/LSP -* -* This routine selects the output device Headphone or loud speaker -*/ -t_ab8500_codec_error u8500_acodec_toggle_analog_lpbk(t_u8500_bool_state - lpbk_state, - t_acodec_user user) -{ - t_ab8500_codec_error codec_error = AB8500_CODEC_OK; - - stm_dbg(DBG_ST.acodec, - " Entering inu8500_acodec_toggle_analog_lpbk() \n"); - - user = user; //keep compiler happy - - if (ENABLE == lpbk_state) { - /* Reset CODEC */ - codec_error = AB8500_CODEC_Reset(); - - AB8500_CODEC_SelectInterface(AB8500_CODEC_AUDIO_INTERFACE_0); - - codec_error = AB8500_CODEC_PowerUp(); - if (AB8500_CODEC_OK != codec_error) { - stm_error("AB8500_CODEC_PowerUp failed\n"); - return AB8500_CODEC_ERROR; - } - - codec_error = AB8500_CODEC_SelectInput(AB8500_CODEC_SRC_LINEIN); - - codec_error = - AB8500_CODEC_SrcPowerControl(AB8500_CODEC_SRC_LINEIN, - AB8500_CODEC_SRC_STATE_ENABLE); - - //codec_error = AB8500_CODEC_SetSrcVolume(AB8500_CODEC_SRC_LINEIN,VOL_MAX,VOL_MAX); - - codec_error = - AB8500_CODEC_SelectOutput(AB8500_CODEC_DEST_HEADSET); - - codec_error = - AB8500_CODEC_DestPowerControl(AB8500_CODEC_DEST_HEADSET, - AB8500_CODEC_DEST_STATE_ENABLE); - - //codec_error = AB8500_CODEC_SetDestVolume(AB8500_CODEC_DEST_HEADSET,0,0); - - codec_error = AB8500_CODEC_SetAnalogLoopback(VOL_MAX, VOL_MAX); - - ab8500_write(AB8500_AUDIO, 0xd05, 0x30); - ab8500_write(AB8500_AUDIO, 0xd07, 0xf3); - ab8500_write(AB8500_AUDIO, 0xd16, 0xdd); - ab8500_write(AB8500_AUDIO, 0xd17, 0x55); - ab8500_write(AB8500_AUDIO, 0xd3f, 0xc0); - - } else { - codec_error = AB8500_CODEC_RemoveAnalogLoopback(); - } - -#if DRIVER_DEBUG > 0 - { - dump_acodec_registers(); - } -#endif - - return codec_error; -} - -#ifdef CONFIG_U8500_ACODEC_POLL - -static int digital_lpbk_msp_rx_tx_thread(void *data) -{ - t_digital_lpbk_cnxt *p_cnxt = (t_digital_lpbk_cnxt *) data; - unsigned int sample[8], count = 32; - - daemonize("digital_lpbk_msp_rx_tx_thread"); - allow_signal(SIGKILL); - - printk("\n Rx-Tx : digital_lpbk_msp_rx_tx_thread started \n"); - - while ((!signal_pending(current)) && (p_cnxt->rx_active)) { - -// ret_val = u8500_msp_receive_data(alsa_msp_adev,p_cnxt->buffer[p_cnxt->rx_index],p_cnxt->data_size); - - //u8500_msp_transceive_data(alsa_msp_adev,p_cnxt->buffer[0], p_cnxt->data_size,p_cnxt->buffer[1], p_cnxt->data_size); - - //u8500_msp_transceive_data(alsa_msp_adev,p_cnxt->buffer[1], p_cnxt->data_size,p_cnxt->buffer[0], p_cnxt->data_size); - -#if DRIVER_DEBUG > 1 - stm_dbg(DBG_ST.alsa, " Receiving \n"); -#endif - u8500_acodec_receive_data(I2S_CLIENT_MSP1, (void *)sample, - count, 0); - -#if DRIVER_DEBUG > 1 - stm_dbg(DBG_ST.alsa, " Transmitting \n"); -#endif - u8500_acodec_send_data(I2S_CLIENT_MSP1, (void *)sample, count, - 0); - - } - printk("\n Rx-Tx : digital_lpbk_msp_rx_tx_thread ended \n"); - return 0; -} - -#endif - -#ifdef CONFIG_U8500_ACODEC_DMA - -static void u8500_digital_lpbk_dma_start() -{ - u8500_acodec_loopback_configure(I2S_CLIENT_MSP1, - (void *)digital_lpbk_cnxt.buffer.addr, - digital_lpbk_cnxt.data_size, 1); - - stm_dbg(DBG_ST.alsa, " Rx DMA Transfer started\n"); - stm_dbg(DBG_ST.alsa, " Rx : add = %x size=%d\n", - (int)(digital_lpbk_cnxt.buffer.addr), - digital_lpbk_cnxt.data_size); - -} -#endif - -/** -* u8500_acodec_toggle_digital_lpbk -* @output_device: output device HP/LSP -* -* This routine selects the output device Headphone or loud speaker -*/ - -t_ab8500_codec_error u8500_acodec_toggle_digital_lpbk(t_u8500_bool_state - lpbk_state, - t_ab8500_codec_dest - dest_device, - t_ab8500_codec_src - src_device, - t_acodec_user user, - t_u8500_bool_state - tdm8_ch_mode) -{ - t_ab8500_codec_error codec_error = AB8500_CODEC_OK; - struct acodec_configuration acodec_config; - int status = 0; - - stm_dbg(DBG_ST.acodec, - " Entering u8500_acodec_toggle_digital_lpbk() \n"); - - user = user; //keep compiler happy - - if (ENABLE == lpbk_state) { - //data_size = 1024*100; - - //data[0] = (unsigned char *)kmalloc(data_size, GFP_KERNEL); - - codec_error = AB8500_CODEC_Reset(); - - //AB8500_CODEC_SelectInterface(AB8500_CODEC_AUDIO_INTERFACE_0); - - //codec_error = AB8500_CODEC_PowerUp(); - if (AB8500_CODEC_OK != codec_error) { - stm_error("AB8500_CODEC_PowerUp failed\n"); - return AB8500_CODEC_ERROR; - } - - status = u8500_acodec_open(I2S_CLIENT_MSP1, 0); - if (status) { - printk("failed in getting acodec playback open\n"); - return -1; - } - status = u8500_acodec_open(I2S_CLIENT_MSP1, 1); - if (status) { - printk("failed in getting acdoec capture open\n"); - return -1; - } - - u8500_acodec_setuser(USER_ALSA); - - if (ENABLE == tdm8_ch_mode) { - printk("\n 20 bit 8 ch Digital Loopback"); - printk("\n DMIC1 -> HS-L"); - printk("\n DMIC2 -> HS-R"); - printk("\n DMIC3 -> IHF-L"); - printk("\n DMIC5 -> Vibra-L\n"); - printk("\n DMIC6 -> Vibra-R\n"); - printk("\n FM -> FM Tx\n"); - } else { - printk("\n 16 bit 2 ch Digital Loopback"); - printk("\n DMIC1 -> HS-L"); - printk("\n DMIC2 -> HS-R"); - } - - stm_dbg(DBG_ST.alsa, "enabling audiocodec audio mode\n"); - acodec_config.direction = AB8500_CODEC_DIRECTION_INOUT; - acodec_config.input_frequency = T_CODEC_SAMPLING_FREQ_48KHZ; - acodec_config.output_frequency = T_CODEC_SAMPLING_FREQ_48KHZ; - acodec_config.mspClockSel = CODEC_MSP_APB_CLOCK; - acodec_config.mspInClockFreq = CODEC_MSP_INPUT_FREQ_48MHZ; - acodec_config.channels = 2; - acodec_config.user = 2; - acodec_config.acodec_config_need = ACODEC_CONFIG_REQUIRED; - acodec_config.direct_rendering_mode = DISABLE; - acodec_config.tdm8_ch_mode = tdm8_ch_mode; - acodec_config.digital_loopback = ENABLE; -#ifdef CONFIG_U8500_ACODEC_POLL - acodec_config.handler = NULL; - acodec_config.tx_callback_data = NULL; - acodec_config.rx_callback_data = NULL; -#endif - u8500_acodec_enable_audio_mode(&acodec_config); - - /*turn on src devices */ - - perform_src_routing(src_device); - -/* u8500_acodec_set_src_power_cntrl(src_device,ENABLE); - u8500_acodec_set_input_volume(src_device,50,50,USER_ALSA); - - u8500_acodec_set_src_power_cntrl(AB8500_CODEC_SRC_D_MICROPHONE_2,ENABLE); - u8500_acodec_set_input_volume(AB8500_CODEC_SRC_D_MICROPHONE_2,50,50,USER_ALSA); - - u8500_acodec_set_src_power_cntrl(AB8500_CODEC_SRC_D_MICROPHONE_3,ENABLE); - u8500_acodec_set_input_volume(AB8500_CODEC_SRC_D_MICROPHONE_3,50,50,USER_ALSA); - - u8500_acodec_set_src_power_cntrl(AB8500_CODEC_SRC_D_MICROPHONE_4,ENABLE); - u8500_acodec_set_input_volume(AB8500_CODEC_SRC_D_MICROPHONE_4,50,50,USER_ALSA); - - u8500_acodec_set_src_power_cntrl(AB8500_CODEC_SRC_D_MICROPHONE_5,ENABLE); - u8500_acodec_set_input_volume(AB8500_CODEC_SRC_D_MICROPHONE_5,50,50,USER_ALSA); - - u8500_acodec_set_src_power_cntrl(AB8500_CODEC_SRC_D_MICROPHONE_6,ENABLE); - u8500_acodec_set_input_volume(AB8500_CODEC_SRC_D_MICROPHONE_6,50,50,USER_ALSA); - - u8500_acodec_set_src_power_cntrl(AB8500_CODEC_SRC_D_MICROPHONE_6,ENABLE); - u8500_acodec_set_input_volume(AB8500_CODEC_SRC_D_MICROPHONE_6,50,50,USER_ALSA); - - u8500_acodec_set_src_power_cntrl(AB8500_CODEC_SRC_FM_RX,ENABLE); */ - - /*turn on dest devices */ - - //u8500_acodec_set_dest_power_cntrl(dest_device,ENABLE); - u8500_acodec_allocate_da_slot(dest_device, TDM_8_CH_MODE); - codec_error = AB8500_CODEC_SelectOutput(dest_device); - u8500_acodec_set_output_volume(dest_device, 100, 100, - USER_ALSA); - - /*u8500_acodec_set_dest_power_cntrl(AB8500_CODEC_DEST_HEADSET,ENABLE); - u8500_acodec_set_output_volume(AB8500_CODEC_DEST_HEADSET,100,100,USER_ALSA); */ - - /*u8500_acodec_set_dest_power_cntrl(AB8500_CODEC_DEST_HANDSFREE,ENABLE); - u8500_acodec_set_output_volume(AB8500_CODEC_DEST_HANDSFREE,100,100,USER_ALSA); */ - -#ifdef CONFIG_U8500_AB8500_CUT10 - codec_error = - AB8500_CODEC_DASlotAllocation - (AB8500_CODEC_DA_CHANNEL_NUMBER_5, - AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT12); - if (AB8500_CODEC_OK != codec_error) { - stm_error("ab8500_codec_daslot_allocation failed\n"); - return AB8500_CODEC_ERROR; - } - - codec_error = - AB8500_CODEC_DASlotAllocation - (AB8500_CODEC_DA_CHANNEL_NUMBER_6, - AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT13); - if (AB8500_CODEC_OK != codec_error) { - stm_error("ab8500_codec_daslot_allocation failed\n"); - return AB8500_CODEC_ERROR; - } - - codec_error = - AB8500_CODEC_DASlotAllocation - (AB8500_CODEC_DA_CHANNEL_NUMBER_7, - AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT14); - if (AB8500_CODEC_OK != codec_error) { - stm_error("ab8500_codec_daslot_allocation failed\n"); - return AB8500_CODEC_ERROR; - } - - codec_error = - AB8500_CODEC_DASlotAllocation - (AB8500_CODEC_DA_CHANNEL_NUMBER_8, - AB8500_CODEC_CR51_TO_CR58_SLTODA_SLOT15); - if (AB8500_CODEC_OK != codec_error) { - stm_error("ab8500_codec_daslot_allocation failed\n"); - return AB8500_CODEC_ERROR; - } -#else - codec_error = - AB8500_CODEC_DASlotAllocation - (AB8500_CODEC_DA_CHANNEL_NUMBER_5, - AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT12); - if (AB8500_CODEC_OK != codec_error) { - stm_error("ab8500_codec_daslot_allocation failed\n"); - return AB8500_CODEC_ERROR; - } - - codec_error = - AB8500_CODEC_DASlotAllocation - (AB8500_CODEC_DA_CHANNEL_NUMBER_6, - AB8500_CODEC_CR51_TO_CR56_SLTODA_SLOT13); - if (AB8500_CODEC_OK != codec_error) { - stm_error("ab8500_codec_daslot_allocation failed\n"); - return AB8500_CODEC_ERROR; - } -#endif - - digital_lpbk_cnxt.data_size = 2048; - - digital_lpbk_cnxt.rx_active = 1; - digital_lpbk_cnxt.tx_active = 1; - - digital_lpbk_cnxt.rx_index = 0; - digital_lpbk_cnxt.tx_index = 2; - - digital_lpbk_cnxt.buffer.area = - dma_alloc_coherent(NULL, digital_lpbk_cnxt.data_size, - &digital_lpbk_cnxt.buffer.addr, - GFP_KERNEL); - if (NULL == digital_lpbk_cnxt.buffer.area) { - printk("\n dma_alloc_coherent failed \n"); - } -#if DRIVER_DEBUG > 0 - { - dump_msp_registers(); - dump_acodec_registers(); - } -#endif - -#ifdef CONFIG_U8500_ACODEC_POLL - { - pid_t pid_rx_tx; - pid_rx_tx = - kernel_thread(digital_lpbk_msp_rx_tx_thread, - &digital_lpbk_cnxt, - CLONE_FS | CLONE_SIGHAND); - } -#elif defined(CONFIG_U8500_ACODEC_DMA) - { - u8500_digital_lpbk_dma_start(); - } -#endif - } else //lpbk is disable - { - - digital_lpbk_cnxt.rx_active = 0; - digital_lpbk_cnxt.tx_active = 0; - - dma_free_coherent(NULL, digital_lpbk_cnxt.data_size, - digital_lpbk_cnxt.buffer.area, - digital_lpbk_cnxt.buffer.addr); - - u8500_acodec_set_src_power_cntrl - (AB8500_CODEC_SRC_D_MICROPHONE_1, DISABLE); - u8500_acodec_set_src_power_cntrl - (AB8500_CODEC_SRC_D_MICROPHONE_2, DISABLE); - u8500_acodec_set_src_power_cntrl - (AB8500_CODEC_SRC_D_MICROPHONE_3, DISABLE); - u8500_acodec_set_src_power_cntrl - (AB8500_CODEC_SRC_D_MICROPHONE_4, DISABLE); - - u8500_acodec_set_dest_power_cntrl(AB8500_CODEC_DEST_HEADSET, - DISABLE); - u8500_acodec_set_dest_power_cntrl(AB8500_CODEC_DEST_HANDSFREE, - DISABLE); - - u8500_acodec_unsetuser(USER_ALSA); - u8500_acodec_close(I2S_CLIENT_MSP1, ACODEC_DISABLE_ALL); - } - return codec_error; -} - -t_ab8500_codec_error perform_src_routing(t_ab8500_codec_src input_device) -{ - int src_type = 0; - t_ab8500_codec_cr31_to_cr46_ad_data_allocation ad_data_line1; - t_ab8500_codec_cr31_to_cr46_ad_data_allocation ad_data_line2; - t_ab8500_codec_src input_device1; - t_ab8500_codec_src input_device2; - t_ab8500_codec_error codec_error = AB8500_CODEC_OK; - - switch (input_device) { - case AB8500_CODEC_SRC_D_MICROPHONE_1: - { - src_type = MONO_SRC; - ad_data_line1 = - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_OUT1; - } - break; - case AB8500_CODEC_SRC_MICROPHONE_2: - case AB8500_CODEC_SRC_D_MICROPHONE_2: - { - src_type = MONO_SRC; - ad_data_line1 = - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_OUT2; - } - break; - case AB8500_CODEC_SRC_D_MICROPHONE_3: - case AB8500_CODEC_SRC_MICROPHONE_1A: - case AB8500_CODEC_SRC_MICROPHONE_1B: - { - src_type = MONO_SRC; - ad_data_line1 = - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_OUT3; - } - break; - case AB8500_CODEC_SRC_D_MICROPHONE_4: - { - src_type = MONO_SRC; - ad_data_line1 = - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_OUT4; - } - break; - case AB8500_CODEC_SRC_D_MICROPHONE_5: - { - src_type = MONO_SRC; - ad_data_line1 = - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_OUT5; - } - break; - case AB8500_CODEC_SRC_D_MICROPHONE_6: - { - src_type = MONO_SRC; - ad_data_line1 = - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_OUT6; - } - break; - case AB8500_CODEC_SRC_LINEIN: - { - src_type = STEREO_SRC; - ad_data_line1 = - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_OUT1; - ad_data_line2 = - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_OUT2; - input_device1 = AB8500_CODEC_SRC_LINEIN; - input_device2 = AB8500_CODEC_SRC_LINEIN; - } - break; -#ifdef CONFIG_U8500_AB8500_CUT10 - case AB8500_CODEC_SRC_D_MICROPHONE_12: - { - src_type = STEREO_SRC; - ad_data_line1 = - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_OUT1; - ad_data_line2 = - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_OUT2; - input_device1 = AB8500_CODEC_SRC_D_MICROPHONE_1; - input_device2 = AB8500_CODEC_SRC_D_MICROPHONE_2; - } - break; - case AB8500_CODEC_SRC_D_MICROPHONE_34: - { - src_type = STEREO_SRC; - ad_data_line1 = - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_OUT3; - ad_data_line2 = - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_OUT4; - input_device1 = AB8500_CODEC_SRC_D_MICROPHONE_3; - input_device2 = AB8500_CODEC_SRC_D_MICROPHONE_4; - } - break; - case AB8500_CODEC_SRC_D_MICROPHONE_56: - { - src_type = STEREO_SRC; - ad_data_line1 = - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_OUT5; - ad_data_line2 = - AB8500_CODEC_CR31_TO_CR46_SLOT_OUTPUTS_DATA_FROM_AD_OUT6; - input_device1 = AB8500_CODEC_SRC_D_MICROPHONE_5; - input_device2 = AB8500_CODEC_SRC_D_MICROPHONE_6; - } - break; -#endif /* #ifdef CONFIG_U8500_AB8500_CUT10 */ - } - if (STEREO_SRC == src_type) { - u8500_acodec_allocate_all_stereo_slots(ad_data_line1, - ad_data_line2); - codec_error = - AB8500_CODEC_SrcPowerControl(input_device1, - AB8500_CODEC_SRC_STATE_ENABLE); - if (AB8500_CODEC_OK != codec_error) { - stm_error("AB8500_CODEC_SrcPowerControl failed\n"); - return AB8500_CODEC_ERROR; - } - g_codec_system_context.input_config[input_device1].power_state = - ENABLE; - - u8500_acodec_set_input_volume(input_device1, 50, 50, USER_ALSA); - - codec_error = - AB8500_CODEC_SrcPowerControl(input_device2, - AB8500_CODEC_SRC_STATE_ENABLE); - if (AB8500_CODEC_OK != codec_error) { - stm_error("AB8500_CODEC_SrcPowerControl failed\n"); - return AB8500_CODEC_ERROR; - } - g_codec_system_context.input_config[input_device2].power_state = - ENABLE; - - u8500_acodec_set_input_volume(input_device2, 50, 50, USER_ALSA); - } else { - u8500_acodec_allocate_all_mono_slots(ad_data_line1); - codec_error = - AB8500_CODEC_SrcPowerControl(input_device, - AB8500_CODEC_SRC_STATE_ENABLE); - if (AB8500_CODEC_OK != codec_error) { - stm_error("AB8500_CODEC_SrcPowerControl failed\n"); - return AB8500_CODEC_ERROR; - } - g_codec_system_context.input_config[input_device].power_state = - ENABLE; - - u8500_acodec_set_input_volume(input_device, 50, 50, USER_ALSA); - } - return AB8500_CODEC_OK; -} - -t_ab8500_codec_error - u8500_acodec_allocate_all_mono_slots - (t_ab8500_codec_cr31_to_cr46_ad_data_allocation ad_data_line1) { - t_ab8500_codec_error codec_error = AB8500_CODEC_OK; - int i; - - for (i = AB8500_CODEC_SLOT0; i <= AB8500_CODEC_SLOT7; i++) { - codec_error = AB8500_CODEC_ADSlotAllocation(i, ad_data_line1); - if (AB8500_CODEC_OK != codec_error) { - stm_error("ab8500_codec_adslot_allocation failed\n"); - return AB8500_CODEC_ERROR; - } - } - return AB8500_CODEC_OK; -} - -t_ab8500_codec_error - u8500_acodec_allocate_all_stereo_slots - (t_ab8500_codec_cr31_to_cr46_ad_data_allocation ad_data_line1, - t_ab8500_codec_cr31_to_cr46_ad_data_allocation ad_data_line2) { - t_ab8500_codec_error codec_error = AB8500_CODEC_OK; - int i; - - for (i = AB8500_CODEC_SLOT0; i <= AB8500_CODEC_SLOT7; i += 2) { - codec_error = AB8500_CODEC_ADSlotAllocation(i, ad_data_line1); - if (AB8500_CODEC_OK != codec_error) { - stm_error("ab8500_codec_adslot_allocation failed\n"); - return AB8500_CODEC_ERROR; - } - codec_error = - AB8500_CODEC_ADSlotAllocation(i + 1, ad_data_line2); - if (AB8500_CODEC_OK != codec_error) { - stm_error("ab8500_codec_adslot_allocation failed\n"); - return AB8500_CODEC_ERROR; - } - } - return AB8500_CODEC_OK; -} - -#ifdef CONFIG_U8500_AB8500_CUT10 -t_ab8500_codec_error -u8500_acodec_set_burst_mode_fifo(t_u8500_pmc_rendering_state fifo_state) -{ - -} -#else -t_ab8500_codec_error -u8500_acodec_set_burst_mode_fifo(t_u8500_pmc_rendering_state fifo_state) -{ - t_ab8500_codec_error ab8500_codec_error; - t_ab8500_codec_burst_fifo_config burst_fifo_config; - - if (RENDERING_ENABLE == fifo_state) { - burst_fifo_config.cr104_bfifoint = 0x1; - burst_fifo_config.cr105_bfifotx = 0xC0; - burst_fifo_config.cr106_bfifofsext = - AB8500_CODEC_CR106_BFIFOFSEXT_6SLOT_EXTRA_CLK; - burst_fifo_config.cr106_bfifomsk = - AB8500_CODEC_CR106_BFIFOMSK_AD_DATA0_UNMASKED; - burst_fifo_config.cr106_bfifomstr = - AB8500_CODEC_CR106_BFIFOMSTR_MASTER_MODE; - burst_fifo_config.cr106_bfifostrt = - AB8500_CODEC_CR106_BFIFOSTRT_RUNNING; - burst_fifo_config.cr107_bfifosampnr = 0x100; - burst_fifo_config.cr108_bfifowakeup = 0x1; - - ab8500_codec_error = - AB8500_CODEC_ConfigureBurstFifo(&burst_fifo_config); - if (AB8500_CODEC_OK != ab8500_codec_error) { - return ab8500_codec_error; - } - - ab8500_codec_error = AB8500_CODEC_EnableBurstFifo(); - if (AB8500_CODEC_OK != ab8500_codec_error) { - return ab8500_codec_error; - } - - printk("\n Burst mode activated\n"); - } else if (RENDERING_DISABLE == fifo_state) { - ab8500_codec_error = AB8500_CODEC_DisableBurstFifo(); - if (AB8500_CODEC_OK != ab8500_codec_error) { - return ab8500_codec_error; - } - printk("\n Burst mode deactivated\n"); - } - return AB8500_CODEC_OK; -} -#endif -/** -* u8500_acodec_set_user -* -* Set the current user for acodec. -*/ - -t_ab8500_codec_error u8500_acodec_setuser(t_acodec_user user) -{ - t_ab8500_codec_error codec_error = AB8500_CODEC_OK; - - FUNC_ENTER(); - - if ((g_codec_system_context.cur_user == NO_USER) - || (g_codec_system_context.cur_user == user)) - g_codec_system_context.cur_user = user; - else { - stm_error - (" Trying to acces audiocodec already in use by user %d\n", - g_codec_system_context.cur_user); - return AB8500_CODEC_ERROR; - } - FUNC_EXIT(); - return (codec_error); -} - -/** -* u8500_acodec_unset_user -* -* Unset the current user for acodec. -*/ - -t_ab8500_codec_error u8500_acodec_unsetuser(t_acodec_user user) -{ - t_ab8500_codec_error codec_error = AB8500_CODEC_OK; - - if (g_codec_system_context.cur_user != user) { - stm_error - (" Trying to free audiocodec already in use by other user %d\n", - g_codec_system_context.cur_user); - return AB8500_CODEC_ERROR; - } else - g_codec_system_context.cur_user = NO_USER; - - return (codec_error); -} - -#if DRIVER_DEBUG > 0 -t_ab8500_codec_error dump_acodec_registers() -{ - u8 i; - - for (i = 0; i <= 0x6D; i++) - stm_dbg(DBG_ST.acodec, "block=0x0D, adr=%x = %x\n", i, - ab8500_read(AB8500_AUDIO, i)); - - /*for (i = 0; i < 0x5e; i++) - stm_dbg(DBG_ST.acodec,"\n block 1,reg =%d val %x", i, ab8500_read(AB8500_AUDIO, i)); - */ - return 0; -} - -t_ab8500_codec_error dump_msp_registers() -{ - int i; - - stm_dbg(DBG_ST.acodec, "\nMSP_1 base add = 0x%x\n", - (unsigned int)U8500_MSP1_BASE); - - for (i = 0; i < 0x40; i += 4) - stm_dbg(DBG_ST.acodec, "msp[0x%x]=0x%x\n", i, - readl((char *)(IO_ADDRESS(U8500_MSP1_BASE) + i))); - - return 0; -} - -EXPORT_SYMBOL(dump_msp_registers); -EXPORT_SYMBOL(dump_acodec_registers); -#endif - -/** -* u8500_acodec_powerdown -* -* This function power off the audio codec. -*/ -void u8500_acodec_powerdown() -{ - AB8500_CODEC_PowerDown(); -} - -/** -* u8500_acodec_init -* -* This is the init function for STW5098 audiocodec driver. -*/ - -static int i2sdrv_probe(struct i2s_device *i2s) -{ - - /* Allocate driver data */ - try_module_get(i2s->controller->dev.parent->driver->owner); - - /* Allocate memory to i2sdrv structure */ - i2sdrv[i2s->chip_select] = - kzalloc(sizeof(*i2sdrv[i2s->chip_select]), GFP_KERNEL); - if (!i2sdrv[i2s->chip_select]) - return -ENOMEM; - - /* Initialize the driver data */ - i2sdrv[i2s->chip_select]->i2s = i2s; - i2sdrv[i2s->chip_select]->flag = -1; - i2sdrv[i2s->chip_select]->tx_status = 0; - i2sdrv[i2s->chip_select]->rx_status = 0; - spin_lock_init(&i2sdrv[i2s->chip_select]->i2s_lock); - - i2s_set_drvdata(i2s, (void *)i2sdrv[i2s->chip_select]); - return 0; -} - -static int i2sdrv_remove(struct i2s_device *i2s) -{ - struct i2sdrv_data *i2sdrv = i2s_get_drvdata(i2s); - - spin_lock_irq(&i2sdrv->i2s_lock); - i2sdrv->i2s = NULL; - i2s_set_drvdata(i2s, NULL); - spin_unlock_irq(&i2sdrv->i2s_lock); - - stm_dbg(DBG_ST.acodec, "Entering AUDIOTRG_CODEC_DeIni\n"); - stm_dbg(DBG_ST.acodec, "leaving AUDIOTRG_CODEC_DeIni\n"); - module_put(i2s->controller->dev.parent->driver->owner); - printk("Remove of I2S gets called\n"); - return 0; -} -static const struct i2s_device_id acodec_id_table[] = { - {"i2s_device.2", 0, 0}, - {"i2s_device.1", 0, 0}, - {}, -}; - -MODULE_DEVICE_TABLE(i2s, acodec_id_table); - -static struct i2s_driver i2sdrv_i2s = { - .driver = { - .name = "u8500_acodec", - .owner = THIS_MODULE, - }, - .probe = i2sdrv_probe, - .remove = __devexit_p(i2sdrv_remove), - .id_table = acodec_id_table, - -}; - -static void ab8500_codec_power_init(void) -{ - __u8 data, old_data; - - old_data = - ab8500_read(AB8500_SYS_CTRL2_BLOCK, (AB8500_CTRL3_REG & 0xFF)); - - data = 0xFE & old_data; - ab8500_write(AB8500_SYS_CTRL2_BLOCK, (AB8500_CTRL3_REG & 0xFF), data); //0x0200 - - data = 0x02 | old_data; - ab8500_write(AB8500_SYS_CTRL2_BLOCK, (AB8500_CTRL3_REG & 0xFF), data); //0x0200 - - old_data = - ab8500_read(AB8500_SYS_CTRL2_BLOCK, - (AB8500_SYSULPCLK_CTRL1_REG & 0xFF)); -#ifdef CONFIG_U8500_AB8500_CUT10 - data = 0x18 | old_data; -#else - data = 0x10 | old_data; -#endif - ab8500_write(AB8500_SYS_CTRL2_BLOCK, (AB8500_SYSULPCLK_CTRL1_REG & 0xFF), data); //0x020B - - old_data = - ab8500_read(AB8500_REGU_CTRL1, (AB8500_REGU_MISC1_REG & 0xFF)); - data = 0x04 | old_data; - ab8500_write(AB8500_REGU_CTRL1, (AB8500_REGU_MISC1_REG & 0xFF), data); //0x380 - - old_data = - ab8500_read(AB8500_REGU_CTRL1, - (AB8500_REGU_VAUDIO_SUPPLY_REG & 0xFF)); - data = 0x5E | old_data; - ab8500_write(AB8500_REGU_CTRL1, (AB8500_REGU_VAUDIO_SUPPLY_REG & 0xFF), data); //0x0383 - -#ifdef CONFIG_U8500_AB8500_CUT10 - old_data = ab8500_read(AB8500_MISC, (AB8500_GPIO_DIR4_REG & 0xFF)); - data = 0x54 | old_data; - ab8500_write(AB8500_MISC, (AB8500_GPIO_DIR4_REG & 0xFF), data); //0x1013 -#endif -} - -/** -* u8500_acodec_deinit -* -* exit function for STW5098 audiocodec driver. -*/ -static int check_device_id() -{ - __u8 data; - - data = ab8500_read(AB8500_MISC, (0x80 & 0xFF)); - if (((data & 0xF0) == 0x10) || ((data & 0xF0) == 0x11)) { - /* V1 version */ -#ifndef CONFIG_U8500_AB8500_CUT10 - printk("ERROR: AB8500 hardware detected is CUT1x\n"); - return -ENODEV; -#endif - } else { -#ifndef CONFIG_U8500_AB8500_ED - /* ED version */ - printk("ERROR: AB8500 hardware detected is EarlyDrop\n"); - return -ENODEV; -#endif - } - return 0; -} - -static int __init u8500_acodec_init(void) -{ - int status, ret_val; - t_ab8500_codec_error error; - - ret_val = check_device_id(); - if (0 != ret_val) - return ret_val; - - status = i2s_register_driver(&i2sdrv_i2s); - if (status < 0) { - printk("Unable to register i2s driver\n"); - return status; - } - - /*Initialize Audiocodec */ - - ab8500_codec_power_init(); - - AB8500_CODEC_Init(TRG_CODEC_ADDRESS_ON_SPI_BUS); - - /* Reset CODEC */ - error = AB8500_CODEC_Reset(); - if (AB8500_CODEC_OK != error) { - stm_error("Error in AB8500_CODEC_Reset\n"); - return -1; - } - - stm_dbg(DBG_ST.acodec, " leaving u8500_acodec_init() \n"); - return 0; -} - -static void __exit u8500_acodec_deinit(void) -{ - stm_dbg(DBG_ST.acodec, "Entering AUDIOTRG_CODEC_DeIni\n"); - stm_dbg(DBG_ST.acodec, "leaving AUDIOTRG_CODEC_DeIni\n"); - i2s_unregister_driver(&i2sdrv_i2s); -} - -module_init(u8500_acodec_init); -module_exit(u8500_acodec_deinit); - -MODULE_LICENSE("GPL"); -MODULE_DESCRIPTION("AB8500 stw5098 audiocodec driver"); - -/* exported function by audiocodec to be used by SAA driver and ALSA driver */ - -EXPORT_SYMBOL(u8500_acodec_open); -EXPORT_SYMBOL(u8500_acodec_close); -EXPORT_SYMBOL(u8500_acodec_send_data); -EXPORT_SYMBOL(u8500_acodec_receive_data); -EXPORT_SYMBOL(u8500_acodec_rates); -EXPORT_SYMBOL(u8500_acodec_powerdown); -EXPORT_SYMBOL(u8500_acodec_setuser); -EXPORT_SYMBOL(u8500_acodec_unsetuser); -EXPORT_SYMBOL(u8500_acodec_enable_audio_mode); -//EXPORT_SYMBOL(u8500_acodec_enable_voice_mode); -EXPORT_SYMBOL(u8500_acodec_get_output_volume); -EXPORT_SYMBOL(u8500_acodec_get_input_volume); -EXPORT_SYMBOL(u8500_acodec_set_output_volume); -EXPORT_SYMBOL(u8500_acodec_set_input_volume); -EXPORT_SYMBOL(u8500_acodec_select_input); -EXPORT_SYMBOL(u8500_acodec_select_output); - -t_ab8500_codec_error AB8500_CODEC_Write(IN t_uint8 register_offset, - IN t_uint8 count, IN t_uint8 * ptr_data) -{ - int i; - u32 address; - - for (i = 0; i < count; i++) { - address = (AB8500_AUDIO << 8) | (register_offset + i); - ab8500_write(AB8500_AUDIO, address, ptr_data[i]); - } - return AB8500_CODEC_OK; -} - -t_ab8500_codec_error AB8500_CODEC_Read(IN t_uint8 register_offset, - IN t_uint8 count, - IN t_uint8 * dummy_data, - IN t_uint8 * ptr_data) -{ - int i; - u32 address; - - dummy_data = dummy_data; /*keep compiler happy */ - - for (i = 0; i < count; i++) { - address = (AB8500_AUDIO << 8) | (register_offset + i); - ptr_data[i] = ab8500_read(AB8500_AUDIO, address); - } - - return AB8500_CODEC_OK; -} - -EXPORT_SYMBOL(u8500_acodec_set_src_power_cntrl); -EXPORT_SYMBOL(u8500_acodec_set_burst_mode_fifo); -EXPORT_SYMBOL(u8500_acodec_get_dest_power_state); -EXPORT_SYMBOL(lpbk_state_in_texts); -EXPORT_SYMBOL(u8500_acodec_toggle_playback_mute_control); -EXPORT_SYMBOL(u8500_acodec_set_dest_power_cntrl); -EXPORT_SYMBOL(power_state_in_texts); -EXPORT_SYMBOL(u8500_acodec_toggle_capture_mute_control); -EXPORT_SYMBOL(u8500_acodec_toggle_analog_lpbk); -EXPORT_SYMBOL(u8500_acodec_toggle_digital_lpbk); -EXPORT_SYMBOL(tdm_mode_state_in_texts); -EXPORT_SYMBOL(switch_state_in_texts); -EXPORT_SYMBOL(pcm_rendering_state_in_texts); -EXPORT_SYMBOL(direct_rendering_state_in_texts); -EXPORT_SYMBOL(u8500_acodec_get_src_power_state); -EXPORT_SYMBOL(i2sdrv); -EXPORT_SYMBOL(second_config); |