From 10da44e93018b837b9388cf54f5bdb6583a2741e Mon Sep 17 00:00:00 2001
From: Satish kumar sugasi <ssugas@codeaurora.org>
Date: Mon, 14 Mar 2016 17:52:50 -0700
Subject: [PATCH] FM: Add config option for cherokee specific code

This ensures FM application works across all chipsets

Change-Id: Ia9711fd18c79146678a72992b32a577e73c57693
---
 Android.mk                      |   7 +-
 jni/Android.mk                  |   3 +
 jni/android_hardware_fm.cpp     | 131 +++++++++++++++++++-------------
 qcom/fmradio/FmReceiver.java    | 104 ++++++++++++++++---------
 qcom/fmradio/FmReceiverJNI.java |  54 ++++++-------
 qcom/fmradio/FmTransceiver.java |  11 ++-
 6 files changed, 187 insertions(+), 123 deletions(-)

diff --git a/Android.mk b/Android.mk
index fc3a54e..0c77a12 100644
--- a/Android.mk
+++ b/Android.mk
@@ -16,6 +16,9 @@ LOCAL_MODULE:= qcom.fmradio
 
 include $(BUILD_JAVA_LIBRARY)
 
+ifeq ($(BOARD_HAS_QCA_FM_SOC), "cherokee")
+LOCAL_CFLAGS += -DFM_SOC_TYPE_CHEROKEE
+endif
 include $(LOCAL_PATH)/jni/Android.mk
 LOCAL_PATH := $(LOCAL_DIR_PATH)
 include $(LOCAL_PATH)/fmapp2/Android.mk
@@ -29,8 +32,8 @@ include $(LOCAL_PATH)/fm_hci/Android.mk
 LOCAL_PATH := $(LOCAL_DIR_PATH)
 include $(LOCAL_PATH)/helium/Android.mk
 
-LOCAL_PATH := $(LOCAL_DIR_PATH)
-include $(LOCAL_PATH)/libfm_jni/Android.mk
 #endif # is-vendor-board-platform
 #endif # BOARD_HAVE_QCOM_FM
 #endif # Not (TARGET_USES_AOSP)
+LOCAL_PATH := $(LOCAL_DIR_PATH)
+include $(LOCAL_PATH)/libfm_jni/Android.mk
diff --git a/jni/Android.mk b/jni/Android.mk
index b554b40..06a313f 100644
--- a/jni/Android.mk
+++ b/jni/Android.mk
@@ -10,6 +10,9 @@ ConfigFmThs.cpp \
 FmIoctlsInterface.cpp \
 FmPerformanceParams.cpp
 
+ifeq ($(BOARD_HAS_QCA_FM_SOC), "cherokee")
+LOCAL_CFLAGS += -DFM_SOC_TYPE_CHEROKEE
+endif
 LOCAL_LDLIBS += -ldl
 LOCAL_SHARED_LIBRARIES := \
         libandroid_runtime \
diff --git a/jni/android_hardware_fm.cpp b/jni/android_hardware_fm.cpp
index 7503ced..53e757a 100644
--- a/jni/android_hardware_fm.cpp
+++ b/jni/android_hardware_fm.cpp
@@ -47,15 +47,6 @@
 #define RADIO "/dev/radio0"
 #define FM_JNI_SUCCESS 0L
 #define FM_JNI_FAILURE -1L
-
-static JNIEnv *g_jEnv = NULL;
-static JavaVM *g_jVM = NULL;
-
-namespace android {
-char *FM_LIBRARY_NAME = "fm_helium.so";
-char *FM_LIBRARY_SYMBOL_NAME = "FM_HELIUM_LIB_INTERFACE";
-void *lib_handle;
-
 #define SEARCH_DOWN 0
 #define SEARCH_UP 1
 #define HIGH_BAND 2
@@ -86,6 +77,19 @@ enum search_dir_t {
     SCAN_UP,
     SCAN_DN
 };
+
+
+static JNIEnv *g_jEnv = NULL;
+static JavaVM *g_jVM = NULL;
+
+namespace android {
+
+#ifdef FM_SOC_TYPE_CHEROKEE
+char *FM_LIBRARY_NAME = "fm_helium.so";
+char *FM_LIBRARY_SYMBOL_NAME = "FM_HELIUM_LIB_INTERFACE";
+void *lib_handle;
+
+
 typedef void (*enb_result_cb)();
 typedef void (*tune_rsp_cb)(int Freq);
 typedef void (*seek_rsp_cb)(int Freq);
@@ -405,7 +409,7 @@ static   fm_vendor_callbacks_t fm_callbacks = {
     fm_ch_det_th_rsp_cb,
     fm_thread_evt_cb
 };
-
+#endif
 /* native interface */
 static jint android_hardware_fmradio_FmReceiverJNI_acquireFdNative
         (JNIEnv* env, jobject thiz, jstring path)
@@ -505,9 +509,10 @@ static jint android_hardware_fmradio_FmReceiverJNI_getFreqNative
 {
     int err;
     long freq;
-
+#ifdef FM_SOC_TYPE_CHEROKEE
     err = vendor_interface->get_fm_ctrl(V4L2_CID_PRV_IRIS_FREQ, freq);
-/*    if (fd >= 0) {
+#else
+    if (fd >= 0) {
         err = FmIoctlsInterface :: get_cur_freq(fd, freq);
         if(err < 0) {
            err = FM_JNI_FAILURE;
@@ -519,7 +524,8 @@ static jint android_hardware_fmradio_FmReceiverJNI_getFreqNative
         ALOGE("%s: get freq failed because fd is negative, fd: %d\n",
               LOG_TAG, fd);
         err = FM_JNI_FAILURE;
-    } */
+    }
+#endif
     return err;
 }
 
@@ -528,9 +534,10 @@ static jint android_hardware_fmradio_FmReceiverJNI_setFreqNative
     (JNIEnv * env, jobject thiz, jint fd, jint freq)
 {
     int err;
-
+#ifdef FM_SOC_TYPE_CHEROKEE
     err = vendor_interface->set_fm_ctrl(V4L2_CID_PRV_IRIS_FREQ, freq);
-/*    if ((fd >= 0) && (freq > 0)) {
+#else
+    if ((fd >= 0) && (freq > 0)) {
         err = FmIoctlsInterface :: set_freq(fd, freq);
         if (err < 0) {
             ALOGE("%s: set freq failed, freq: %d\n", LOG_TAG, freq);
@@ -540,9 +547,10 @@ static jint android_hardware_fmradio_FmReceiverJNI_setFreqNative
         }
     } else {
         ALOGE("%s: set freq failed because either fd/freq is negative,\
-              fd: %d, freq: %d\n", LOG_TAG, fd, freq);
+               fd: %d, freq: %d\n", LOG_TAG, fd, freq);
         err = FM_JNI_FAILURE;
-    } */
+    }
+#endif
     return err;
 }
 
@@ -552,8 +560,10 @@ static jint android_hardware_fmradio_FmReceiverJNI_setControlNative
 {
     int err;
     ALOGE("id(%x) value: %x\n", id, value);
-
-/*    if ((fd >= 0) && (id >= 0)) {
+#ifdef FM_SOC_TYPE_CHEROKEE
+	err = vendor_interface->set_fm_ctrl(id, value);
+#else
+    if ((fd >= 0) && (id >= 0)) {
         err = FmIoctlsInterface :: set_control(fd, id, value);
         if (err < 0) {
             ALOGE("%s: set control failed, id: %d\n", LOG_TAG, id);
@@ -565,9 +575,8 @@ static jint android_hardware_fmradio_FmReceiverJNI_setControlNative
         ALOGE("%s: set control failed because either fd/id is negavtive,\
                fd: %d, id: %d\n", LOG_TAG, fd, id);
         err = FM_JNI_FAILURE;
-    } */
-    err = vendor_interface->set_fm_ctrl(id, value);
-
+    }
+#endif
     return err;
 }
 
@@ -590,7 +599,6 @@ static jint android_hardware_fmradio_FmReceiverJNI_SetCalibrationNative
               LOG_TAG, fd);
        err = FM_JNI_FAILURE;
    }
-
    return err;
 }
 /* native interface */
@@ -598,10 +606,10 @@ static jint android_hardware_fmradio_FmReceiverJNI_getControlNative
     (JNIEnv * env, jobject thiz, jint fd, jint id)
 {
     int err;
-    int val;
+    long val;
 
     ALOGE("id(%x)\n", id);
-
+#ifdef FM_SOC_TYPE_CHEROKEE
     err = vendor_interface->get_fm_ctrl(id, val);
     if (err < 0) {
         ALOGE("%s: get control failed, id: %d\n", LOG_TAG, id);
@@ -609,7 +617,8 @@ static jint android_hardware_fmradio_FmReceiverJNI_getControlNative
     } else {
         err = val;
     }
-/*    if ((fd >= 0) && (id >= 0)) {
+#else
+    if ((fd >= 0) && (id >= 0)) {
         err = FmIoctlsInterface :: get_control(fd, id, val);
         if (err < 0) {
             ALOGE("%s: get control failed, id: %d\n", LOG_TAG, id);
@@ -621,7 +630,8 @@ static jint android_hardware_fmradio_FmReceiverJNI_getControlNative
         ALOGE("%s: get control failed because either fd/id is negavtive,\
                fd: %d, id: %d\n", LOG_TAG, fd, id);
         err = FM_JNI_FAILURE;
-    } */
+    }
+#endif
 
     return err;
 }
@@ -631,7 +641,7 @@ static jint android_hardware_fmradio_FmReceiverJNI_startSearchNative
     (JNIEnv * env, jobject thiz, jint fd, jint dir)
 {
     int err;
-
+#ifdef FM_SOC_TYPE_CHEROKEE
     err = vendor_interface->set_fm_ctrl(V4L2_CID_PRV_IRIS_SEEK, dir);
     if (err < 0) {
         ALOGE("%s: search failed, dir: %d\n", LOG_TAG, dir);
@@ -639,7 +649,8 @@ static jint android_hardware_fmradio_FmReceiverJNI_startSearchNative
     } else {
         err = FM_JNI_SUCCESS;
     }
-/*    if ((fd >= 0) && (dir >= 0)) {
+#else
+    if ((fd >= 0) && (dir >= 0)) {
         ALOGD("startSearchNative: Issuing the VIDIOC_S_HW_FREQ_SEEK");
         err = FmIoctlsInterface :: start_search(fd, dir);
         if (err < 0) {
@@ -652,8 +663,8 @@ static jint android_hardware_fmradio_FmReceiverJNI_startSearchNative
         ALOGE("%s: search failed because either fd/dir is negative,\
                fd: %d, dir: %d\n", LOG_TAG, fd, dir);
         err = FM_JNI_FAILURE;
-    } */
-
+    }
+#endif
     return err;
 }
 
@@ -663,6 +674,7 @@ static jint android_hardware_fmradio_FmReceiverJNI_cancelSearchNative
 {
     int err;
 
+#ifdef FM_SOC_TYPE_CHEROKEE
     err = vendor_interface->set_fm_ctrl(V4L2_CID_PRV_SRCHON, 0);
     if (err < 0) {
         ALOGE("%s: cancel search failed\n", LOG_TAG);
@@ -670,7 +682,8 @@ static jint android_hardware_fmradio_FmReceiverJNI_cancelSearchNative
     } else {
         err = FM_JNI_SUCCESS;
     }
-/*    if (fd >= 0) {
+#else
+    if (fd >= 0) {
         err = FmIoctlsInterface :: set_control(fd, V4L2_CID_PRV_SRCHON, 0);
         if (err < 0) {
             ALOGE("%s: cancel search failed\n", LOG_TAG);
@@ -682,8 +695,8 @@ static jint android_hardware_fmradio_FmReceiverJNI_cancelSearchNative
         ALOGE("%s: cancel search failed because fd is negative, fd: %d\n",
                LOG_TAG, fd);
         err = FM_JNI_FAILURE;
-    } */
-
+    }
+#endif
     return err;
 }
 
@@ -716,7 +729,7 @@ static jint android_hardware_fmradio_FmReceiverJNI_setBandNative
     (JNIEnv * env, jobject thiz, jint fd, jint low, jint high)
 {
     int err;
-
+#ifdef FM_SOC_TYPE_CHEROKEE
     err = vendor_interface->set_fm_ctrl(V4L2_CID_PRV_IRIS_UPPER_BAND, high);
     if (err < 0) {
         ALOGE("%s: set band failed, high: %d\n", LOG_TAG, high);
@@ -730,7 +743,8 @@ static jint android_hardware_fmradio_FmReceiverJNI_setBandNative
     } else {
         err = FM_JNI_SUCCESS;
     }
-/*    if ((fd >= 0) && (low >= 0) && (high >= 0)) {
+#else
+    if ((fd >= 0) && (low >= 0) && (high >= 0)) {
         err = FmIoctlsInterface :: set_band(fd, low, high);
         if (err < 0) {
             ALOGE("%s: set band failed, low: %d, high: %d\n",
@@ -743,8 +757,8 @@ static jint android_hardware_fmradio_FmReceiverJNI_setBandNative
         ALOGE("%s: set band failed because either fd/band is negative,\
                fd: %d, low: %d, high: %d\n", LOG_TAG, fd, low, high);
         err = FM_JNI_FAILURE;
-    } */
-
+    }
+#endif
     return err;
 }
 
@@ -754,7 +768,7 @@ static jint android_hardware_fmradio_FmReceiverJNI_getLowerBandNative
 {
     int err;
     ULINT freq;
-
+#ifdef FM_SOC_TYPE_CHEROKEE
     err = vendor_interface->get_fm_ctrl(V4L2_CID_PRV_IRIS_LOWER_BAND, freq);
     if (err < 0) {
         ALOGE("%s: get lower band failed\n", LOG_TAG);
@@ -762,7 +776,9 @@ static jint android_hardware_fmradio_FmReceiverJNI_getLowerBandNative
     } else {
         err = freq;
     }
-/*    if (fd >= 0) {
+	return err;
+#endif
+    if (fd >= 0) {
         err = FmIoctlsInterface :: get_lowerband_limit(fd, freq);
         if (err < 0) {
             ALOGE("%s: get lower band failed\n", LOG_TAG);
@@ -774,7 +790,7 @@ static jint android_hardware_fmradio_FmReceiverJNI_getLowerBandNative
         ALOGE("%s: get lower band failed because fd is negative,\
                fd: %d\n", LOG_TAG, fd);
         err = FM_JNI_FAILURE;
-    } */
+    }
 
     return err;
 }
@@ -785,6 +801,7 @@ static jint android_hardware_fmradio_FmReceiverJNI_getUpperBandNative
 {
     int err;
     ULINT freq;
+#ifdef FM_SOC_TYPE_CHEROKEE
 
     err = vendor_interface->get_fm_ctrl(V4L2_CID_PRV_IRIS_UPPER_BAND, freq);
     if (err < 0) {
@@ -793,7 +810,9 @@ static jint android_hardware_fmradio_FmReceiverJNI_getUpperBandNative
     } else {
         err = freq;
     }
-/*    if (fd >= 0) {
+	return err;
+#endif
+    if (fd >= 0) {
         err = FmIoctlsInterface :: get_upperband_limit(fd, freq);
         if (err < 0) {
             ALOGE("%s: get lower band failed\n", LOG_TAG);
@@ -805,8 +824,7 @@ static jint android_hardware_fmradio_FmReceiverJNI_getUpperBandNative
         ALOGE("%s: get lower band failed because fd is negative,\
                fd: %d\n", LOG_TAG, fd);
         err = FM_JNI_FAILURE;
-    } */
-
+    }
     return err;
 }
 
@@ -815,7 +833,7 @@ static jint android_hardware_fmradio_FmReceiverJNI_setMonoStereoNative
 {
 
     int err;
-
+#ifdef FM_SOC_TYPE_CHEROKEE
     err = vendor_interface->get_fm_ctrl(V4L2_CID_PRV_IRIS_AUDIO_MODE, val);
     if (err < 0) {
         ALOGE("%s: set audio mode failed\n", LOG_TAG);
@@ -823,7 +841,9 @@ static jint android_hardware_fmradio_FmReceiverJNI_setMonoStereoNative
     } else {
         err = FM_JNI_SUCCESS;
     }
-/*    if (fd >= 0) {
+	return err;
+#endif
+    if (fd >= 0) {
         err = FmIoctlsInterface :: set_audio_mode(fd, (enum AUDIO_MODE)val);
         if (err < 0) {
             err = FM_JNI_FAILURE;
@@ -832,8 +852,7 @@ static jint android_hardware_fmradio_FmReceiverJNI_setMonoStereoNative
         }
     } else {
         err = FM_JNI_FAILURE;
-    } */
-
+    }
     return err;
 }
 
@@ -1315,7 +1334,9 @@ static jint android_hardware_fmradio_FmReceiverJNI_setSpurDataNative
 
 static void classInitNative(JNIEnv* env, jclass clazz) {
 
-    ALOGE("ClassInit native called \n");
+    ALOGI("ClassInit native called \n");
+#ifdef FM_SOC_TYPE_CHEROKEE
+
     jclass dataClass = env->FindClass("qcom/fmradio/FmReceiverJNI");
     javaClassRef = (jclass) env->NewGlobalRef(dataClass);
     lib_handle = dlopen(FM_LIBRARY_NAME, RTLD_NOW);
@@ -1353,15 +1374,17 @@ error:
     if (lib_handle)
         dlclose(lib_handle);
     lib_handle = NULL;
+#endif
 }
 
 static void initNative(JNIEnv *env, jobject object) {
 
+#ifdef FM_SOC_TYPE_CHEROKEE
     int status;
-    ALOGE("Init native called \n");
+    ALOGI("Init native called \n");
 
     if (vendor_interface) {
-        ALOGE("Initializing the FM HAL module & registering the JNI callback functions...");
+        ALOGI("Initializing the FM HAL module & registering the JNI callback functions...");
         status = vendor_interface->hal_init(&fm_callbacks);
         if (status) {
             ALOGE("%s unable to initialize vendor library: %d", __func__, status);
@@ -1371,16 +1394,16 @@ static void initNative(JNIEnv *env, jobject object) {
     }
     ALOGE("object =%p, env = %p\n",object,env);
     mCallbacksObj = env->NewGlobalRef(object);
-    ALOGE("mCallbackobject =%p, \n",mCallbacksObj);
-
-
+#endif
 }
 static void cleanupNative(JNIEnv *env, jobject object) {
 
+#ifdef FM_SOC_TYPE_CHEROKEE
     if (mCallbacksObj != NULL) {
         env->DeleteGlobalRef(mCallbacksObj);
         mCallbacksObj = NULL;
     }
+#endif
 }
 /*
  * JNI registration.
diff --git a/qcom/fmradio/FmReceiver.java b/qcom/fmradio/FmReceiver.java
index 042956a..95a8c5e 100644
--- a/qcom/fmradio/FmReceiver.java
+++ b/qcom/fmradio/FmReceiver.java
@@ -306,6 +306,31 @@ public class FmReceiver extends FmTransceiver
    private static final int SEARCH_MPXDCC = 0;
    private static final int SEARCH_SINR_INT = 1;
 
+
+   public boolean isSmdTransportLayer() {
+       String transportLayer = SystemProperties.get("ro.qualcomm.bt.hci_transport");
+       if (transportLayer.equals("smd"))
+           return true;
+       else
+           return false;
+   }
+
+   public static boolean isRomeChip() {
+       String chip = SystemProperties.get("qcom.bluetooth.soc");
+       if (chip.equals("rome"))
+           return true;
+       else
+           return false;
+   }
+
+   public static boolean isCherokeeChip() {
+       String chip = SystemProperties.get("qcom.bluetooth.soc");
+       if (chip.equals("cherokee"))
+           return true;
+       else
+           return false;
+   }
+
    /**
     * Constructor for the receiver Object
     */
@@ -332,9 +357,9 @@ public class FmReceiver extends FmTransceiver
       Log.e(TAG, "FmReceiver constructor");
       //registerClient(callback);
       mCallback = callback;
-     if (mCallback == null)
-         Log.e(TAG, "mCallback is NULL");
-      mFmReceiverJNI = new FmReceiverJNI(mCallback);
+      if (isCherokeeChip()) {
+          mFmReceiverJNI = new FmReceiverJNI(mCallback);
+      }
    }
 
 
@@ -462,10 +487,12 @@ public class FmReceiver extends FmTransceiver
       Log.v(TAG, "enable: CURRENT-STATE : FMOff ---> NEW-STATE : FMRxStarting");
       status = super.enable(configSettings, FmTransceiver.FM_RX);
 
-      if( status == true ) {
-         /* Do Receiver Specific Enable Stuff here.*/
-        // status = registerClient(mCallback);
-         mRdsData = new FmRxRdsData(sFd);
+      if (status == true ) {
+          if (!isCherokeeChip()) {
+              /* Do Receiver Specific Enable Stuff here.*/
+              status = registerClient(mCallback);
+          }
+          mRdsData = new FmRxRdsData(sFd);
       }
       else {
          status = false;
@@ -1408,8 +1435,11 @@ public class FmReceiver extends FmTransceiver
       int piLower = 0;
       int piHigher = 0;
 
-     // FmReceiverJNI.getBufferNative(sFd, buff, 3);
-      buff = FmReceiverJNI.getPsBuffer(buff);
+      if(isCherokeeChip()) {
+          buff = FmReceiverJNI.getPsBuffer(buff);
+      }
+      else
+          FmReceiverJNI.getBufferNative(sFd, buff, 3);
 
       /* byte is signed ;(
       *  knock down signed bits
@@ -1462,8 +1492,12 @@ public class FmReceiver extends FmTransceiver
       int piLower = 0;
       int piHigher = 0;
 
-     // FmReceiverJNI.getBufferNative(sFd, buff, 2);
-      buff = FmReceiverJNI.getPsBuffer(buff);
+      if (isCherokeeChip()) {
+          buff = FmReceiverJNI.getPsBuffer(buff);
+      }
+      else {
+          FmReceiverJNI.getBufferNative(sFd, buff, 2);
+      }
       String rdsStr = new String(buff);
       /* byte is signed ;(
       *  knock down signed bit
@@ -1492,9 +1526,13 @@ public class FmReceiver extends FmTransceiver
       int rt_len;
       int i, j = 2;
       byte tag_code, tag_len, tag_start_pos;
-
-//      bytes_read = FmReceiverJNI.getBufferNative(sFd, rt_plus, BUF_RTPLUS);
-      rt_plus = FmReceiverJNI.getPsBuffer(rt_plus);
+      if (isCherokeeChip()) {
+          rt_plus = FmReceiverJNI.getPsBuffer(rt_plus);
+      }
+      else
+      {
+          bytes_read = FmReceiverJNI.getBufferNative(sFd, rt_plus, BUF_RTPLUS);
+      }
       bytes_read = rt_plus[0];
       if (bytes_read > 0) {
           if (rt_plus[RT_OR_ERT_IND] == 0)
@@ -1531,8 +1569,14 @@ public class FmReceiver extends FmTransceiver
       String encoding_type = "UCS-2";
       int bytes_read;
 
-  //    bytes_read = FmReceiverJNI.getBufferNative(sFd, raw_ert, BUF_ERT);
-     raw_ert = FmReceiverJNI.getPsBuffer(raw_ert);
+      if(isCherokeeChip())
+      {
+         raw_ert = FmReceiverJNI.getPsBuffer(raw_ert);
+      }
+      else
+      {
+         bytes_read = FmReceiverJNI.getBufferNative(sFd, raw_ert, BUF_ERT);
+      }
       bytes_read = raw_ert[0];
       if (bytes_read > 0) {
           ert_text = new byte[raw_ert[LEN_IND]];
@@ -1556,21 +1600,6 @@ public class FmReceiver extends FmTransceiver
       return mRdsData;
    }
 
-   public boolean IsSmdTransportLayer() {
-       String transportLayer = SystemProperties.get("ro.qualcomm.bt.hci_transport");
-       if (transportLayer.equals("smd"))
-           return true;
-       else
-           return false;
-   }
-
-   public boolean IsRomeChip() {
-       String chip = SystemProperties.get("qcom.bluetooth.soc");
-       if (chip.equals("rome"))
-           return true;
-       else
-           return false;
-   }
    /*==============================================================
    FUNCTION:  getAFInfo
    ==============================================================*/
@@ -1599,11 +1628,14 @@ public class FmReceiver extends FmTransceiver
       int  [] AfList = new int [50];
       int lowerBand, i;
       int tunedFreq, PI, size_AFLIST;
-
-    // FmReceiverJNI.getBufferNative(sFd, buff, TAVARUA_BUF_AF_LIST);
-      buff = FmReceiverJNI.getPsBuffer(buff);
-
-      if (IsSmdTransportLayer() || IsRomeChip()) {
+      if (isCherokeeChip()) {
+          buff = FmReceiverJNI.getPsBuffer(buff);
+      }
+      else
+      {
+          FmReceiverJNI.getBufferNative(sFd, buff, TAVARUA_BUF_AF_LIST);
+      }
+      if (isSmdTransportLayer() || isRomeChip() || isCherokeeChip()) {
           Log.d(TAG, "SMD transport layer or Rome chip");
 
           tunedFreq = (buff[0] & 0xFF) |
diff --git a/qcom/fmradio/FmReceiverJNI.java b/qcom/fmradio/FmReceiverJNI.java
index d8743e8..1cafe37 100644
--- a/qcom/fmradio/FmReceiverJNI.java
+++ b/qcom/fmradio/FmReceiverJNI.java
@@ -48,10 +48,10 @@ class FmReceiverJNI {
      * @return The file descriptor of the device
      *
      */
-      private static final String TAG = "FmReceiverJNI";
+    private static final String TAG = "FmReceiverJNI";
 
     static {
-        Log.e(TAG, "classinit native called");
+        Log.d(TAG, "classinit native called");
         classInitNative();
     }
     static native void classInitNative();
@@ -63,9 +63,9 @@ class FmReceiverJNI {
     static private byte[] mRdsBuffer = new byte[STD_BUF_SIZE];
 
     public static  byte[]  getPsBuffer(byte[] buff) {
-        Log.e(TAG, "getPsBuffer enter");
+        Log.d(TAG, "getPsBuffer enter");
         buff = Arrays.copyOf(mRdsBuffer, mRdsBuffer.length);
-        Log.e(TAG, "getPsBuffer exit");
+        Log.d(TAG, "getPsBuffer exit");
         return buff;
     }
 
@@ -81,40 +81,40 @@ class FmReceiverJNI {
     }
 
     public void RtPlusCallback(byte[] rtplus) {
-        Log.e(TAG, "RtPlusCallback enter " );
+        Log.d(TAG, "RtPlusCallback enter " );
         if (rtplus == null) {
             Log.e(TAG, "psInfo null return  ");
             return;
         }
         mRdsBuffer = Arrays.copyOf(rtplus, rtplus.length);
         FmReceiver.mCallback.FmRxEvRTPlus();
-        Log.e(TAG, "RtPlusCallback exit " );
+        Log.d(TAG, "RtPlusCallback exit " );
     }
 
     public void RtCallback(byte[] rt) {
-        Log.e(TAG, "RtCallback enter " );
+        Log.d(TAG, "RtCallback enter " );
         if (rt == null) {
             Log.e(TAG, "psInfo null return  ");
             return;
         }
         mRdsBuffer = Arrays.copyOf(rt, rt.length);
         FmReceiver.mCallback.FmRxEvRdsRtInfo();
-        Log.e(TAG, "RtCallback exit " );
+        Log.d(TAG, "RtCallback exit " );
     }
 
     public void ErtCallback(byte[] ert) {
-        Log.e(TAG, "ErtCallback enter " );
+        Log.d(TAG, "ErtCallback enter " );
         if (ert == null) {
             Log.e(TAG, "ERT null return  ");
             return;
         }
         mRdsBuffer = Arrays.copyOf(ert, ert.length);
         FmReceiver.mCallback.FmRxEvERTInfo();
-        Log.e(TAG, "RtCallback exit " );
+        Log.d(TAG, "RtCallback exit " );
     }
 
     public void PsInfoCallback(byte[] psInfo) {
-        Log.e(TAG, "PsInfoCallback enter " );
+        Log.d(TAG, "PsInfoCallback enter " );
         if (psInfo == null) {
             Log.e(TAG, "psInfo null return  ");
             return;
@@ -122,21 +122,21 @@ class FmReceiverJNI {
         Log.e(TAG, "length =  " +psInfo.length);
         mRdsBuffer = Arrays.copyOf(psInfo, psInfo.length);
         FmReceiver.mCallback.FmRxEvRdsPsInfo();
-        Log.e(TAG, "PsInfoCallback exit");
+        Log.d(TAG, "PsInfoCallback exit");
     }
 
     public void enableCallback() {
-        Log.e(TAG, "enableCallback enter");
+        Log.d(TAG, "enableCallback enter");
         FmTransceiver.setFMPowerState(FmTransceiver.FMState_Rx_Turned_On);
         Log.v(TAG, "RxEvtList: CURRENT-STATE : FMRxStarting ---> NEW-STATE : FMRxOn");
         FmReceiver.mCallback.FmRxEvEnableReceiver();
-        Log.e(TAG, "enableCallback exit");
+        Log.d(TAG, "enableCallback exit");
     }
 
     public void tuneCallback(int freq) {
         int state;
 
-        Log.e(TAG, "tuneCallback enter");
+        Log.d(TAG, "tuneCallback enter");
         state = FmReceiver.getSearchState();
         switch(state) {
         case FmTransceiver.subSrchLevel_SrchAbort:
@@ -156,13 +156,13 @@ class FmReceiverJNI {
                 Log.e(TAG, "get frequency command failed");
             break;
         }
-        Log.e(TAG, "tuneCallback exit");
+        Log.d(TAG, "tuneCallback exit");
     }
 
     public void seekCmplCallback(int freq) {
         int state;
 
-        Log.e(TAG, "seekCmplCallback enter");
+        Log.d(TAG, "seekCmplCallback enter");
         state = FmReceiver.getSearchState();
         switch(state) {
         case FmTransceiver.subSrchLevel_ScanInProg:
@@ -179,29 +179,29 @@ class FmReceiverJNI {
             FmReceiver.mCallback.FmRxEvSearchComplete(freq);
             break;
         }
-        Log.e(TAG, "seekCmplCallback exit");
+        Log.d(TAG, "seekCmplCallback exit");
     }
 
     public void scanNxtCallback() {
-        Log.e(TAG, "scanNxtCallback enter");
+        Log.d(TAG, "scanNxtCallback enter");
         FmReceiver.mCallback.FmRxEvSearchInProgress();
-        Log.e(TAG, "scanNxtCallback exit");
+        Log.d(TAG, "scanNxtCallback exit");
     }
 
     public void stereostsCallback(boolean stereo) {
-        Log.e(TAG, "stereostsCallback enter");
+        Log.d(TAG, "stereostsCallback enter");
         FmReceiver.mCallback.FmRxEvStereoStatus (stereo);
-        Log.e(TAG, "stereostsCallback exit");
+        Log.d(TAG, "stereostsCallback exit");
     }
 
     public void rdsAvlStsCallback(boolean rdsAvl) {
-        Log.e(TAG, "rdsAvlStsCallback enter");
+        Log.d(TAG, "rdsAvlStsCallback enter");
         FmReceiver.mCallback.FmRxEvRdsLockStatus(rdsAvl);
-        Log.e(TAG, "rdsAvlStsCallback exit");
+        Log.d(TAG, "rdsAvlStsCallback exit");
     }
 
     public void disableCallback() {
-        Log.e(TAG, "disableCallback enter");
+        Log.d(TAG, "disableCallback enter");
         if (FmTransceiver.getFMPowerState() == FmTransceiver.subPwrLevel_FMTurning_Off) {
                  /*Set the state as FMOff */
             FmTransceiver.setFMPowerState(FmTransceiver.FMState_Turned_Off);
@@ -212,7 +212,7 @@ class FmReceiverJNI {
             Log.d(TAG, "Unexpected RADIO_DISABLED recvd");
             Log.v(TAG, "RxEvtList: CURRENT-STATE : FMRxOn ---> NEW-STATE : FMOff");
             FmReceiver.mCallback.FmRxEvRadioReset();
-            Log.e(TAG, "disableCallback exit");
+            Log.d(TAG, "disableCallback exit");
         }
     }
 
@@ -220,7 +220,7 @@ class FmReceiverJNI {
         mCallback = callback;
         if (mCallback == null)
             Log.e(TAG, "mCallback is null in JNI");
-        Log.e(TAG, "satish init native called");
+        Log.d(TAG, "init native called");
         initNative();
     }
 
diff --git a/qcom/fmradio/FmTransceiver.java b/qcom/fmradio/FmTransceiver.java
index a567152..b90f033 100644
--- a/qcom/fmradio/FmTransceiver.java
+++ b/qcom/fmradio/FmTransceiver.java
@@ -404,10 +404,13 @@ public class FmTransceiver
 
       boolean status;
       int ret;
-      //Acquire the deviceon Enable
-//      if( !acquire("/dev/radio0")){
-//         return false;
-//      }
+
+      if (!FmReceiver.isCherokeeChip()) {
+          //Acquire the deviceon Enable
+          if (!acquire("/dev/radio0")) {
+              return false;
+          }
+      }
       if (new File("/etc/fm/SpurTableFile.txt").isFile()) {
           Log.d(TAG, "Send Spur roation table");
           FmConfig.fmSpurConfig(sFd);
-- 
GitLab