summaryrefslogtreecommitdiff
path: root/sound/ab8500_codec.c
diff options
context:
space:
mode:
authorMian Yousaf Kaukab <mian.yousaf.kaukab@stericsson.com>2010-10-19 20:17:35 +0200
committerRobert Marklund <robert.marklund@stericsson.com>2011-10-05 11:13:38 +0200
commitb4d24d053c51ae86379a857cbaa197fa28571c17 (patch)
tree9d09ad41be6a4f726fff16e106828ed5ce3a553e /sound/ab8500_codec.c
parentab57c229a5194ab0e16a56e7510b85e490d6fb33 (diff)
sound: add ab8500 audio codec
This patch is based on the following work: Add a power management scheme for AB3550 and fix bugs that hinder simultaneous playback/capture. ST-Ericsson ID: WP 259100 Author: Xie Xiaolei <xie.xiaolei@stericsson.com> msp: add configuration param for MSP_IODLY ST-Ericsson ID: CR261462 Author: Rabin Vincent <rabin.vincent@stericsson.com> ab8500-acodec: remove unused dma variables ST-Ericsson ID: AP259210 Author: Rabin Vincent <rabin.vincent@stericsson.com> Signed-off-by: Mian Yousaf Kaukab <mian.yousaf.kaukab@stericsson.com>
Diffstat (limited to 'sound/ab8500_codec.c')
-rw-r--r--sound/ab8500_codec.c6697
1 files changed, 6697 insertions, 0 deletions
diff --git a/sound/ab8500_codec.c b/sound/ab8500_codec.c
new file mode 100644
index 00000000000..fd4975bbdce
--- /dev/null
+++ b/sound/ab8500_codec.c
@@ -0,0 +1,6697 @@
+/*
+ * 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);
+}