audio-hal: 64 bit hal porting changes

-Use long for mixer control with integer type to match with
 kernel snd_ctl_elem_value definition.
-Use packed structure for mixer controls with byte type

Change-Id: I9fbb1d10c5ee212348b58fc4b27a3d74403d8bda
diff --git a/hal/audio_extn/audio_defs.h b/hal/audio_extn/audio_defs.h
index 7abc89b..2a81ba1 100644
--- a/hal/audio_extn/audio_defs.h
+++ b/hal/audio_extn/audio_defs.h
@@ -122,13 +122,13 @@
     uint16_t  doa_speech;
     uint16_t  doa_noise[3];
     uint8_t   polar_activity[360];
-};
+} __attribute__((packed));
 
 struct sound_focus_param {
     uint16_t  start_angle[MAX_SECTORS];
     uint8_t   enable[MAX_SECTORS];
     uint16_t  gain_step;
-};
+} __attribute__((packed));
 
 struct aptx_dec_bt_addr {
     uint32_t nap;
@@ -162,7 +162,7 @@
      * timer in microseconds.
      */
     uint32_t        ref_timer_abs_ts_msw;
-};
+} __attribute__((packed));
 
 /*use these for setting infine window.i.e free run mode */
 #define AUDIO_MAX_RENDER_START_WINDOW 0x8000000000000000
diff --git a/hal/audio_extn/audio_extn.c b/hal/audio_extn/audio_extn.c
index c1c4460..c598990 100644
--- a/hal/audio_extn/audio_extn.c
+++ b/hal/audio_extn/audio_extn.c
@@ -611,7 +611,7 @@
 {
     struct mixer_ctl *ctl;
     const char *mixer_ctl_name = "Playback Device Channel Map";
-    int set_values[8] = {0};
+    long set_values[8] = {0};
     int ret;
     ALOGV("%s channel_count:%d",__func__, channel_count);
 
@@ -650,7 +650,7 @@
               __func__, mixer_ctl_name);
         return -EINVAL;
     }
-    ALOGV("AFE: set mapping(%d %d %d %d %d %d %d %d) for channel:%d",
+    ALOGV("AFE: set mapping(%ld %ld %ld %ld %ld %ld %ld %ld) for channel:%d",
         set_values[0], set_values[1], set_values[2], set_values[3], set_values[4],
         set_values[5], set_values[6], set_values[7], channel_count);
     ret = mixer_ctl_set_array(ctl, set_values, channel_count);
diff --git a/hal/audio_extn/dolby.c b/hal/audio_extn/dolby.c
index fda9a1a..ffd256f 100644
--- a/hal/audio_extn/dolby.c
+++ b/hal/audio_extn/dolby.c
@@ -196,7 +196,7 @@
                                  bool set_cache __unused)
 {
     int idx, i;
-    int ddp_endp_params_data[2*DDP_ENDP_NUM_PARAMS + 1];
+    long ddp_endp_params_data[2*DDP_ENDP_NUM_PARAMS + 1];
     int length = 0;
     for(idx=0; idx<DDP_ENDP_NUM_DEVICES; idx++) {
         if(ddp_endp_params[idx].device & device) {
diff --git a/hal/audio_extn/hfp.c b/hal/audio_extn/hfp.c
index 748562a..db51122 100644
--- a/hal/audio_extn/hfp.c
+++ b/hal/audio_extn/hfp.c
@@ -312,7 +312,7 @@
 {
     struct mixer_ctl *ctl;
     const char *mixer_ctl_name = "HFP TX Mute";
-    uint32_t set_values[ ] = {0};
+    long set_values[ ] = {0};
 
     ALOGI("%s: enter, state=%d", __func__, state);
 
diff --git a/hal/audio_extn/keep_alive.c b/hal/audio_extn/keep_alive.c
index 3e9a91c..0f46744 100644
--- a/hal/audio_extn/keep_alive.c
+++ b/hal/audio_extn/keep_alive.c
@@ -194,7 +194,8 @@
 {
     struct audio_device * adev = (struct audio_device *)ka.userdata;
     char mixer_ctl_name[MAX_LENGTH_MIXER_CONTROL_IN_INT];
-    int app_type_cfg[MAX_LENGTH_MIXER_CONTROL_IN_INT], len = 0, rc;
+    long app_type_cfg[MAX_LENGTH_MIXER_CONTROL_IN_INT];
+    int len = 0, rc;
     struct mixer_ctl *ctl;
     int acdb_dev_id, snd_device;
     struct listnode *node;
diff --git a/hal/audio_extn/utils.c b/hal/audio_extn/utils.c
index 9f99a94..3f0fc9d 100644
--- a/hal/audio_extn/utils.c
+++ b/hal/audio_extn/utils.c
@@ -188,13 +188,18 @@
 /* payload structure avt_device drift query */
 struct audio_avt_device_drift_stats {
     uint32_t       minor_version;
+
     /* Indicates the device interface direction as either
      * source (Tx) or sink (Rx).
     */
     uint16_t        device_direction;
-    /*params exposed to client */
+
+    /* Reference timer for drift accumulation and time stamp information.
+     * currently it only support AFE_REF_TIMER_TYPE_AVTIMER
+     */
+    uint16_t        reference_timer;
     struct audio_avt_device_drift_param drift_param;
-};
+} __attribute__((packed));
 
 static char bTable[BASE_TABLE_SIZE] = {
             'A','B','C','D','E','F','G','H','I','J','K','L',
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 3ba3f77..bbbc1d6 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -4037,7 +4037,7 @@
                           float right)
 {
     struct stream_out *out = (struct stream_out *)stream;
-    int volume[2];
+    long volume[2];
     char mixer_ctl_name[128];
     struct audio_device *adev = out->dev;
     struct mixer_ctl *ctl;
@@ -4068,7 +4068,7 @@
     char mixer_ctl_name[] = "App Type Gain";
     struct audio_device *adev = out->dev;
     struct mixer_ctl *ctl;
-    uint32_t set_values[4];
+    long set_values[4];
 
     ctl = mixer_get_ctl_by_name(adev->mixer, mixer_ctl_name);
     if (!ctl) {
@@ -4079,8 +4079,8 @@
 
     set_values[0] = 0; //0: Rx Session 1:Tx Session
     set_values[1] = out->app_type_cfg.app_type;
-    set_values[2] = (int)(left * VOIP_PLAYBACK_VOLUME_MAX);
-    set_values[3] = (int)(right * VOIP_PLAYBACK_VOLUME_MAX);
+    set_values[2] = (long)(left * VOIP_PLAYBACK_VOLUME_MAX);
+    set_values[3] = (long)(right * VOIP_PLAYBACK_VOLUME_MAX);
 
     mixer_ctl_set_array(ctl, set_values, ARRAY_SIZE(set_values));
     return 0;
@@ -4115,8 +4115,8 @@
                       __func__, mixer_ctl_name);
                 return -EINVAL;
             }
-            volume[0] = (int)(AmpToDb(left));
-            volume[1] = (int)(AmpToDb(right));
+            volume[0] = (long)(AmpToDb(left));
+            volume[1] = (long)(AmpToDb(right));
             mixer_ctl_set_array(ctl, volume, sizeof(volume)/sizeof(volume[0]));
             return 0;
         } else {
diff --git a/hal/msm8916/platform.c b/hal/msm8916/platform.c
index 45b02e3..9f68c3c 100644
--- a/hal/msm8916/platform.c
+++ b/hal/msm8916/platform.c
@@ -3520,9 +3520,9 @@
     struct mixer_ctl *ctl;
     const char *mixer_ctl_name = "Voice Rx Gain";
     int vol_index = 0, ret = 0;
-    uint32_t set_values[ ] = {0,
-                              ALL_SESSION_VSID,
-                              DEFAULT_VOLUME_RAMP_DURATION_MS};
+    long set_values[ ] = {0,
+                          ALL_SESSION_VSID,
+                          DEFAULT_VOLUME_RAMP_DURATION_MS};
 
     // Voice volume levels are mapped to adsp volume levels as follows.
     // 100 -> 5, 80 -> 4, 60 -> 3, 40 -> 2, 20 -> 1  0 -> 0
@@ -3536,7 +3536,7 @@
               __func__, mixer_ctl_name);
         ret = -EINVAL;
     } else {
-        ALOGV("%s Setting voice volume index: %d",__func__, set_values[0]);
+        ALOGV("%s Setting voice volume index: %ld",__func__, set_values[0]);
         mixer_ctl_set_array(ctl, set_values, ARRAY_SIZE(set_values));
     }
 
@@ -3557,9 +3557,9 @@
     struct mixer_ctl *ctl;
     const char *mixer_ctl_name = "Voice Tx Mute";
     int ret = 0;
-    uint32_t set_values[ ] = {0,
-                              ALL_SESSION_VSID,
-                              DEFAULT_MUTE_RAMP_DURATION_MS};
+    long set_values[ ] = {0,
+                          ALL_SESSION_VSID,
+                          DEFAULT_MUTE_RAMP_DURATION_MS};
 
     set_values[0] = state;
     ctl = mixer_get_ctl_by_name(adev->mixer, mixer_ctl_name);
@@ -3589,9 +3589,9 @@
     struct mixer_ctl *ctl;
     char *mixer_ctl_name = NULL;
     int ret = 0;
-    uint32_t set_values[ ] = {0,
-                              ALL_SESSION_VSID,
-                              0};
+    long set_values[ ] = {0,
+                          ALL_SESSION_VSID,
+                          0};
     if(dir == NULL) {
         ALOGE("%s: Invalid direction:%s", __func__, dir);
         return -EINVAL;
@@ -4639,8 +4639,8 @@
     struct audio_device *adev = my_data->adev;
     struct mixer_ctl *ctl;
     const char *mixer_ctl_name = "Slowtalk Enable";
-    uint32_t set_values[ ] = {0,
-                              ALL_SESSION_VSID};
+    long set_values[ ] = {0,
+                          ALL_SESSION_VSID};
 
     set_values[0] = state;
     ctl = mixer_get_ctl_by_name(adev->mixer, mixer_ctl_name);
@@ -4670,8 +4670,8 @@
     struct mixer_ctl *ctl;
     const char *mixer_ctl_name = "HD Voice Enable";
     int ret = 0;
-    uint32_t set_values[ ] = {0,
-                              ALL_SESSION_VSID};
+    long set_values[ ] = {0,
+                          ALL_SESSION_VSID};
 
     set_values[0] = state;
     ctl = mixer_get_ctl_by_name(adev->mixer, mixer_ctl_name);
@@ -6829,7 +6829,7 @@
     char mixer_ctl_name[44] = {0}; // max length of name is 44 as defined
     int ret;
     unsigned int i;
-    int set_values[FCC_8] = {0};
+    long set_values[FCC_8] = {0};
     struct platform_data *my_data = (struct platform_data *)platform;
     struct audio_device *adev = my_data->adev;
     ALOGV("%s channel_count:%d",__func__, ch_count);
@@ -6860,7 +6860,7 @@
         set_values[i] = ch_map[i];
     }
 
-    ALOGD("%s: set mapping(%d %d %d %d %d %d %d %d) for channel:%d", __func__,
+    ALOGD("%s: set mapping(%ld %ld %ld %ld %ld %ld %ld %d) for channel:%d", __func__,
         set_values[0], set_values[1], set_values[2], set_values[3], set_values[4],
         set_values[5], set_values[6], set_values[7], ch_count);
 
@@ -7131,7 +7131,7 @@
     struct mixer_ctl *ctl;
     char *mixer_ctl_name = "Device PP Params";
     int ret = 0;
-    uint32_t set_values[] = {0,0};
+    long set_values[] = {0,0};
 
     set_values[0] = param;
     set_values[1] = value;
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 64dde86..a9ae7e3 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -3278,9 +3278,9 @@
     struct mixer_ctl *ctl;
     const char *mixer_ctl_name = "Voice Rx Gain";
     int vol_index = 0, ret = 0;
-    uint32_t set_values[ ] = {0,
-                              ALL_SESSION_VSID,
-                              DEFAULT_VOLUME_RAMP_DURATION_MS};
+    long set_values[ ] = {0,
+                          ALL_SESSION_VSID,
+                          DEFAULT_VOLUME_RAMP_DURATION_MS};
 
     // Voice volume levels are mapped to adsp volume levels as follows.
     // 100 -> 5, 80 -> 4, 60 -> 3, 40 -> 2, 20 -> 1  0 -> 0
@@ -3294,7 +3294,7 @@
               __func__, mixer_ctl_name);
         ret = -EINVAL;
     } else {
-        ALOGV("%s: Setting voice volume index: %d", __func__, set_values[0]);
+        ALOGV("%s: Setting voice volume index: %ld", __func__, set_values[0]);
         mixer_ctl_set_array(ctl, set_values, ARRAY_SIZE(set_values));
     }
 
@@ -3315,9 +3315,9 @@
     struct mixer_ctl *ctl;
     const char *mixer_ctl_name = "Voice Tx Mute";
     int ret = 0;
-    uint32_t set_values[ ] = {0,
-                              ALL_SESSION_VSID,
-                              DEFAULT_MUTE_RAMP_DURATION_MS};
+    long set_values[ ] = {0,
+                          ALL_SESSION_VSID,
+                          DEFAULT_MUTE_RAMP_DURATION_MS};
 
     set_values[0] = state;
     ctl = mixer_get_ctl_by_name(adev->mixer, mixer_ctl_name);
@@ -3347,9 +3347,9 @@
     struct mixer_ctl *ctl;
     char *mixer_ctl_name = NULL;
     int ret = 0;
-    uint32_t set_values[ ] = {0,
-                              ALL_SESSION_VSID,
-                              0};
+    long set_values[ ] = {0,
+                          ALL_SESSION_VSID,
+                          0};
     if(dir == NULL) {
         ALOGE("%s: Invalid direction:%s", __func__, dir);
         return -EINVAL;
@@ -4390,8 +4390,8 @@
     struct audio_device *adev = my_data->adev;
     struct mixer_ctl *ctl;
     const char *mixer_ctl_name = "Slowtalk Enable";
-    uint32_t set_values[ ] = {0,
-                              ALL_SESSION_VSID};
+    long set_values[ ] = {0,
+                          ALL_SESSION_VSID};
 
     set_values[0] = state;
     ctl = mixer_get_ctl_by_name(adev->mixer, mixer_ctl_name);
@@ -4421,8 +4421,8 @@
     struct mixer_ctl *ctl;
     char *mixer_ctl_name = "HD Voice Enable";
     int ret = 0;
-    uint32_t set_values[ ] = {0,
-                              ALL_SESSION_VSID};
+    long set_values[ ] = {0,
+                          ALL_SESSION_VSID};
 
     set_values[0] = state;
     ctl = mixer_get_ctl_by_name(adev->mixer, mixer_ctl_name);
@@ -6624,7 +6624,7 @@
     char mixer_ctl_name[44] = {0}; // max length of name is 44 as defined
     int ret;
     unsigned int i;
-    int set_values[FCC_8] = {0};
+    long set_values[FCC_8] = {0};
     struct platform_data *my_data = (struct platform_data *)platform;
     struct audio_device *adev = my_data->adev;
     ALOGV("%s channel_count:%d",__func__, ch_count);
@@ -6655,7 +6655,7 @@
         set_values[i] = ch_map[i];
     }
 
-    ALOGD("%s: set mapping(%d %d %d %d %d %d %d %d) for channel:%d", __func__,
+    ALOGD("%s: set mapping(%ld %ld %ld %ld %ld %ld %ld %ld) for channel:%d", __func__,
         set_values[0], set_values[1], set_values[2], set_values[3], set_values[4],
         set_values[5], set_values[6], set_values[7], ch_count);
 
@@ -6967,7 +6967,7 @@
     struct mixer_ctl *ctl;
     char *mixer_ctl_name = "Device PP Params";
     int ret = 0;
-    uint32_t set_values[] = {0,0};
+    long set_values[] = {0,0};
 
     set_values[0] = param;
     set_values[1] = value;
diff --git a/hal/voice_extn/compress_voip.c b/hal/voice_extn/compress_voip.c
index 1ec5fbc..2736d68 100644
--- a/hal/voice_extn/compress_voip.c
+++ b/hal/voice_extn/compress_voip.c
@@ -134,8 +134,8 @@
     struct mixer_ctl *ctl;
     const char *mixer_ctl_name = "Voip Rx Gain";
     int vol_index = 0;
-    uint32_t set_values[ ] = {0,
-                              DEFAULT_VOLUME_RAMP_DURATION_MS};
+    long set_values[ ] = {0,
+                          DEFAULT_VOLUME_RAMP_DURATION_MS};
 
     ALOGV("%s: enter", __func__);
 
@@ -152,7 +152,7 @@
               __func__, mixer_ctl_name);
         return -EINVAL;
     }
-    ALOGV("%s: Setting voip volume index: %d", __func__, set_values[0]);
+    ALOGV("%s: Setting voip volume index: %ld", __func__, set_values[0]);
     mixer_ctl_set_array(ctl, set_values, ARRAY_SIZE(set_values));
 
     ALOGV("%s: exit", __func__);
@@ -163,8 +163,8 @@
 {
     struct mixer_ctl *ctl;
     const char *mixer_ctl_name = "Voip Tx Mute";
-    uint32_t set_values[ ] = {0,
-                              DEFAULT_VOLUME_RAMP_DURATION_MS};
+    long set_values[ ] = {0,
+                          DEFAULT_VOLUME_RAMP_DURATION_MS};
 
     ALOGV("%s: enter, state=%d", __func__, state);
 
@@ -187,7 +187,7 @@
 {
     struct mixer_ctl *ctl;
     const char *mixer_ctl_name = "Voip Mode Config";
-    uint32_t set_values[ ] = {0};
+    long set_values[ ] = {0};
     int mode;
 
     ALOGD("%s: enter, format=%d", __func__, format);
@@ -212,7 +212,7 @@
 {
     struct mixer_ctl *ctl;
     const char *mixer_ctl_name = "Voip Rate Config";
-    uint32_t set_values[ ] = {0};
+    long set_values[ ] = {0};
 
     ALOGD("%s: enter, rate=%d", __func__, rate);
 
@@ -233,7 +233,7 @@
 {
     struct mixer_ctl *ctl;
     const char *mixer_ctl_name = "Voip Dtx Mode";
-    uint32_t set_values[ ] = {0};
+    long set_values[ ] = {0};
 
     ALOGD("%s: enter, enable=%d", __func__, enable);
 
diff --git a/post_proc/asphere.c b/post_proc/asphere.c
index 885e85b..3ec2818 100644
--- a/post_proc/asphere.c
+++ b/post_proc/asphere.c
@@ -101,7 +101,8 @@
 
 static int asphere_get_values_from_mixer(void)
 {
-    int ret = 0, val[2] = {-1, -1};
+    int ret = 0;
+    long val[2] = {-1, -1};
     struct mixer_ctl *ctl = NULL;
     struct mixer *mixer = mixer_open(MIXER_CARD);
     if (mixer)
@@ -124,7 +125,8 @@
 
 static int asphere_set_values_to_mixer(void)
 {
-    int ret = 0, val[2] = {-1, -1};
+    int ret = 0;
+    long val[2] = {-1, -1};
     struct mixer_ctl *ctl = NULL;
     struct mixer *mixer = mixer_open(MIXER_CARD);
     if (mixer)
diff --git a/post_proc/effect_api.c b/post_proc/effect_api.c
index ab8576f..b01acc5 100644
--- a/post_proc/effect_api.c
+++ b/post_proc/effect_api.c
@@ -177,8 +177,8 @@
                                   struct bass_boost_params *bassboost,
                                  unsigned param_send_flags)
 {
-    int param_values[128] = {0};
-    int *p_param_values = param_values;
+    long param_values[128] = {0};
+    long *p_param_values = param_values;
 
     ALOGV("%s: flags 0x%x", __func__, param_send_flags);
     *p_param_values++ = BASS_BOOST_MODULE;
@@ -260,8 +260,9 @@
                             struct pbe_params *pbe,
                             unsigned param_send_flags)
 {
-    int param_values[128] = {0};
-    int i, *p_param_values = param_values, *cfg = NULL;
+    long  param_values[128] = {0};
+    long *p_param_values = param_values;
+    int i, *cfg = NULL;
 
     ALOGV("%s: enabled=%d", __func__, pbe->enable_flag);
     *p_param_values++ = PBE_MODULE;
@@ -366,8 +367,8 @@
                                     struct virtualizer_params *virtualizer,
                                    unsigned param_send_flags)
 {
-    int param_values[128] = {0};
-    int *p_param_values = param_values;
+    long param_values[128] = {0};
+    long *p_param_values = param_values;
 
     ALOGV("%s: flags 0x%x", __func__, param_send_flags);
     *p_param_values++ = VIRTUALIZER_MODULE;
@@ -486,8 +487,8 @@
 static int eq_send_params(eff_mode_t mode, void *ctl, struct eq_params *eq,
                           unsigned param_send_flags)
 {
-    int param_values[128] = {0};
-    int *p_param_values = param_values;
+    long param_values[128] = {0};
+    long *p_param_values = param_values;
     uint32_t i;
 
     ALOGV("%s: flags 0x%x", __func__, param_send_flags);
@@ -675,8 +676,8 @@
                                struct reverb_params *reverb,
                               unsigned param_send_flags)
 {
-    int param_values[128] = {0};
-    int *p_param_values = param_values;
+    long param_values[128] = {0};
+    long *p_param_values = param_values;
 
     ALOGV("%s: flags 0x%x", __func__, param_send_flags);
     *p_param_values++ = REVERB_MODULE;
@@ -855,8 +856,8 @@
                                     struct soft_volume_params vol,
                                     unsigned param_send_flags)
 {
-    int param_values[128] = {0};
-    int *p_param_values = param_values;
+    long param_values[128] = {0};
+    long *p_param_values = param_values;
     uint32_t i;
 
     ALOGV("%s", __func__);
@@ -921,8 +922,8 @@
                                                struct soft_volume_params vol,
                                                unsigned param_send_flags)
 {
-    int param_values[128] = {0};
-    int *p_param_values = param_values;
+    long param_values[128] = {0};
+    long *p_param_values = param_values;
     uint32_t i;
 
     ALOGV("%s", __func__);
@@ -964,8 +965,8 @@
 static int hpx_send_params(eff_mode_t mode, void *ctl,
                            unsigned param_send_flags)
 {
-    int param_values[128] = {0};
-    int *p_param_values = param_values;
+    long param_values[128] = {0};
+    long *p_param_values = param_values;
     uint32_t i;
 
     ALOGV("%s", __func__);
diff --git a/qahw_api/inc/qahw_defs.h b/qahw_api/inc/qahw_defs.h
index a301bf9..a33caf6 100644
--- a/qahw_api/inc/qahw_defs.h
+++ b/qahw_api/inc/qahw_defs.h
@@ -251,13 +251,13 @@
     uint16_t  doa_speech;
     uint16_t  doa_noise[3];
     uint8_t   polar_activity[360];
-};
+} __attribute__((packed));
 
 struct qahw_sound_focus_param {
     uint16_t  start_angle[MAX_SECTORS];
     uint8_t   enable[MAX_SECTORS];
     uint16_t  gain_step;
-};
+} __attribute__((packed));
 
 struct aptx_dec_bt_addr {
     uint32_t nap;