Promotion of fm.lnx.2.1-00024.
CRs Change ID Subject
--------------------------------------------------------------------------------------------------------------
1082673 I8317c6e82fe4844970e84e929e2c6328284c6ca9 Reset slimbus port on AUDIOFOCUS LOSS
1082673 I4b69ae76a33fcdeb497239aae9c35362272bcbfc FM: Add check for soc type
Change-Id: I9cc3ee634058234c82e5d9204abbcaa7fd26c67d
CRs-Fixed: 1082673
diff --git a/fmapp2/src/com/caf/fmradio/FMRadioService.java b/fmapp2/src/com/caf/fmradio/FMRadioService.java
index 5744d96..7f6775b 100644
--- a/fmapp2/src/com/caf/fmradio/FMRadioService.java
+++ b/fmapp2/src/com/caf/fmradio/FMRadioService.java
@@ -219,6 +219,7 @@
private static final int FM_OFF_FROM_APPLICATION = 1;
private static final int FM_OFF_FROM_ANTENNA = 2;
private static final int RADIO_TIMEOUT = 1500;
+ private static final int RESET_SLIMBUS_DATA_PORT = 1;
private static Object mNotchFilterLock = new Object();
@@ -1596,6 +1597,7 @@
switch (msg.arg1) {
case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
Log.v(LOGTAG, "AudioFocus: received AUDIOFOCUS_LOSS_TRANSIENT");
+ mReceiver.EnableSlimbus(RESET_SLIMBUS_DATA_PORT);
if (true == isFmRecordingOn())
stopRecording();
case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:
@@ -1608,6 +1610,8 @@
case AudioManager.AUDIOFOCUS_LOSS:
Log.v(LOGTAG, "AudioFocus: received AUDIOFOCUS_LOSS");
//intentional fall through.
+ mReceiver.EnableSlimbus(RESET_SLIMBUS_DATA_PORT);
+
if (mSpeakerPhoneOn) {
mSpeakerDisableHandler.removeCallbacks(mSpeakerDisableTask);
mSpeakerDisableHandler.postDelayed(mSpeakerDisableTask, 0);
diff --git a/helium/radio-helium-commands.h b/helium/radio-helium-commands.h
index c5dfba9..46ed651 100644
--- a/helium/radio-helium-commands.h
+++ b/helium/radio-helium-commands.h
@@ -115,5 +115,8 @@
HCI_FM_HELIUM_AUDIO_MODE,
HCI_FM_HELIUM_RMSSI,
HCI_FM_HELIUM_AUDIO_MUTE,
+
+ /*FM VSC command to enable/disable slimbus data port*/
+ HCI_FM_HELIUM_AUDIO = 0x00980940,
};
#endif /* __RADIO_CHEROKEE_COMMANDS_H */
diff --git a/helium/radio-helium.h b/helium/radio-helium.h
index 070dafa..200e006 100644
--- a/helium/radio-helium.h
+++ b/helium/radio-helium.h
@@ -245,6 +245,7 @@
#define HCI_OCF_FM_RDS_RT_REQ 0x0008
#define HCI_OCF_FM_RDS_PS_REQ 0x0009
+#define HCI_OCF_FM_ENABLE_SLIMBUS (0x000E)
/* HCI common control commands opcode */
#define HCI_OCF_FM_TUNE_STATION_REQ 0x0001
@@ -1231,6 +1232,7 @@
int hci_fm_default_data_write_req(struct hci_fm_def_data_wr_req * data_wrt);
int hci_fm_get_station_dbg_param_req();
int hci_fm_get_station_cmd_param_req();
+int hci_fm_enable_slimbus(uint8_t enable);
struct fm_hal_t {
struct radio_helium_device *radio;
diff --git a/helium/radio_helium_hal.c b/helium/radio_helium_hal.c
index 742f051..8672513 100644
--- a/helium/radio_helium_hal.c
+++ b/helium/radio_helium_hal.c
@@ -1604,6 +1604,10 @@
ALOGI("%s: command sent sucessfully", __func__, val);
}
break;
+ case HCI_FM_HELIUM_AUDIO:
+ ALOGE("%s slimbus port", val ? "enable" : "disable");
+ ret = hci_fm_enable_slimbus(val);
+ break;
default:
ALOGE("%s:%s: Not a valid FM CMD!!", LOG_TAG, __func__);
ret = 0;
diff --git a/helium/radio_helium_hal_cmds.c b/helium/radio_helium_hal_cmds.c
index 520ec12..b783c53 100644
--- a/helium/radio_helium_hal_cmds.c
+++ b/helium/radio_helium_hal_cmds.c
@@ -461,3 +461,13 @@
HCI_OCF_FM_LOW_PASS_FILTER_CTRL);
return send_fm_cmd_pkt(opcode, sizeof(enable_lpf), &enable_lpf);
}
+int hci_fm_enable_slimbus(uint8_t val) {
+ ALOGE("%s", __func__);
+ uint16_t opcode = 0;
+
+ opcode = hci_opcode_pack(HCI_OGF_FM_DIAGNOSTIC_CMD_REQ,
+ HCI_OCF_FM_ENABLE_SLIMBUS);
+
+ ALOGE("%s:val = %d, uint8 val = %d", __func__, val, (uint8_t)val);
+ return send_fm_cmd_pkt(opcode , sizeof(val), &val);
+}
diff --git a/jni/FmConst.h b/jni/FmConst.h
index 26eb616..e37160f 100644
--- a/jni/FmConst.h
+++ b/jni/FmConst.h
@@ -153,6 +153,8 @@
V4L2_CID_PRV_IRIS_LOWER_BAND,
V4L2_CID_PRV_IRIS_AUDIO_MODE,
V4L2_CID_PRV_IRIS_RMSSI,
+
+ V4L2_CID_PRV_ENABLE_SLIMBUS = 0x00980940,
};
#endif
diff --git a/jni/android_hardware_fm.cpp b/jni/android_hardware_fm.cpp
index b5b0a5e..a780cbe 100644
--- a/jni/android_hardware_fm.cpp
+++ b/jni/android_hardware_fm.cpp
@@ -1498,6 +1498,17 @@
return FM_JNI_SUCCESS;
}
+static jint android_hardware_fmradio_FmReceiverJNI_enableSlimbusNative
+ (JNIEnv * env, jobject thiz, jint fd, jint val)
+{
+ ALOGD("%s: val = %d\n", __func__, val);
+ int err = JNI_ERR;
+#ifdef FM_SOC_TYPE_CHEROKEE
+ err = vendor_interface->set_fm_ctrl(V4L2_CID_PRV_ENABLE_SLIMBUS, val);
+#endif
+ return err;
+}
+
static void classInitNative(JNIEnv* env, jclass clazz) {
ALOGI("ClassInit native called \n");
@@ -1644,6 +1655,8 @@
(void*)android_hardware_fmradio_FmReceiverJNI_setSpurDataNative},
{ "configurePerformanceParams", "(I)V",
(void*)android_hardware_fmradio_FmReceiverJNI_configurePerformanceParams},
+ { "enableSlimbus", "(II)I",
+ (void*)android_hardware_fmradio_FmReceiverJNI_enableSlimbusNative},
};
int register_android_hardware_fm_fmradio(JNIEnv* env)
diff --git a/qcom/fmradio/FmReceiver.java b/qcom/fmradio/FmReceiver.java
index af7191a..b15d512 100644
--- a/qcom/fmradio/FmReceiver.java
+++ b/qcom/fmradio/FmReceiver.java
@@ -2974,7 +2974,7 @@
case TelephonyManager.NETWORK_TYPE_UMTS:
if ((mEnableLpfUmts & RatConf) == mEnableLpfUmts ) {
Log.v (TAG, "set LPF for net_type: " + Integer.toString(net_type));
- Log.v (TAG, "enable:" + enable);
+ Log.v (TAG, "enable:" + enable);
mControl.enableLPF(sFd, enable);
}
break;
@@ -3079,4 +3079,8 @@
break;
}
}
+ public void EnableSlimbus(int enable) {
+ Log.d(TAG, "EnableSlimbus :enable =" + enable);
+ mControl.enableSlimbus(sFd, enable);
+ }
}
diff --git a/qcom/fmradio/FmReceiverJNI.java b/qcom/fmradio/FmReceiverJNI.java
index c5835ff..d9fa79a 100644
--- a/qcom/fmradio/FmReceiverJNI.java
+++ b/qcom/fmradio/FmReceiverJNI.java
@@ -547,4 +547,5 @@
*/
static native int setSpurDataNative(int fd, short buff[], int len);
static native void configurePerformanceParams(int fd);
+ static native int enableSlimbus(int fd, int val);
}
diff --git a/qcom/fmradio/FmRxControls.java b/qcom/fmradio/FmRxControls.java
index 7b9fb7c..a3eba2a 100644
--- a/qcom/fmradio/FmRxControls.java
+++ b/qcom/fmradio/FmRxControls.java
@@ -786,4 +786,13 @@
return true;
}
}
+ public boolean enableSlimbus(int fd, int enable) {
+ int ret;
+ Log.d(TAG, "enableSlimbus : enable = " + enable);
+ ret = FmReceiverJNI.enableSlimbus(fd, enable);
+ if (ret == 0)
+ return true;
+ else
+ return false;
+ }
}