summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2015-07-29 05:11:21 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2015-07-29 05:11:21 -0700
commit0fc5180af87be616fb22e32f59c4d04d5c0a08de (patch)
tree0c1371cd182574cf301b7ab3411f66ce45d002c6
parent48e7607360b0249740dabd58a112e1b27f99df27 (diff)
parentc09c3d85445d84ff612a4d1cbed49f5168ff3889 (diff)
downloadandroid_hardware_qcom_fm-0fc5180af87be616fb22e32f59c4d04d5c0a08de.tar.gz
android_hardware_qcom_fm-0fc5180af87be616fb22e32f59c4d04d5c0a08de.tar.bz2
android_hardware_qcom_fm-0fc5180af87be616fb22e32f59c4d04d5c0a08de.zip
Merge "FM: Fix the issue with patchdownloader"
-rw-r--r--jni/FmConst.h4
-rw-r--r--libfm_jni/FM_Const.h2
-rw-r--r--libfm_jni/FmIoctlsInterface.cpp28
-rw-r--r--libfm_jni/FmRadioController.cpp24
4 files changed, 34 insertions, 24 deletions
diff --git a/jni/FmConst.h b/jni/FmConst.h
index c4cd33b..00e6f82 100644
--- a/jni/FmConst.h
+++ b/jni/FmConst.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2014, 2015, The Linux Foundation. All rights reserved.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -44,7 +44,7 @@ const UINT CAL_DATA_SIZE = 23;
#define STD_BUF_SIZE 256
const char *const FM_PERFORMANCE_PARAMS = "/etc/fm/fm_srch_af_th.conf";
-const char *const CALIB_DATA_NAME = "/data/app/Riva_fm_cal";
+const char *const CALIB_DATA_NAME = "/data/misc/fm/Riva_fm_cal";
#define V4L2_CTRL_CLASS_USER 0x00980000
#define V4L2_CID_BASE (V4L2_CTRL_CLASS_USER | 0x900)
diff --git a/libfm_jni/FM_Const.h b/libfm_jni/FM_Const.h
index a93fe77..b0cc684 100644
--- a/libfm_jni/FM_Const.h
+++ b/libfm_jni/FM_Const.h
@@ -121,7 +121,7 @@ const char *const FM_INIT_PROP = "hw.fm.init";
const char *const SCRIPT_START_PROP = "ctl.start";
const char *const FM_SOC_DL_SCRIPT = "fm_dl";
const char *const SCRIPT_STOP_PROP = "ctl.stOP";
-const char *const CALIB_DATA_NAME = "/data/app/Riva_fm_cal";
+const char *const CALIB_DATA_NAME = "/data/misc/fm/Riva_fm_cal";
const char *const SOC_PATCH_DL_SCRPT = "fm_dl";
const char *const FM_DEVICE_PATH = "/dev/radio0";
const char *const FM_PERFORMANCE_PARAMS = "/etc/fm/fm_srch_af_th.conf";
diff --git a/libfm_jni/FmIoctlsInterface.cpp b/libfm_jni/FmIoctlsInterface.cpp
index bd3440b..fbe035c 100644
--- a/libfm_jni/FmIoctlsInterface.cpp
+++ b/libfm_jni/FmIoctlsInterface.cpp
@@ -119,7 +119,7 @@ int FmIoctlsInterface :: get_cur_freq
channel.type = V4L2_TUNER_RADIO;
ret = ioctl(fd, VIDIOC_G_FREQUENCY, &channel);
- if(ret != IOCTL_SUCC) {
+ if(ret < IOCTL_SUCC) {
return FM_FAILURE;
}else {
freq = (channel.frequency / TUNE_MULT);
@@ -139,7 +139,7 @@ int FmIoctlsInterface :: set_freq
channel.frequency = (freq * TUNE_MULT);
ret = ioctl(fd, VIDIOC_S_FREQUENCY, &channel);
- if(ret != IOCTL_SUCC) {
+ if(ret < IOCTL_SUCC) {
return FM_FAILURE;
}else {
return FM_SUCCESS;
@@ -158,7 +158,7 @@ int FmIoctlsInterface :: set_control
control.id = id;
ret = ioctl(fd, VIDIOC_S_CTRL, &control);
- if(ret != IOCTL_SUCC) {
+ if(ret < IOCTL_SUCC) {
return FM_FAILURE;
}else {
return FM_SUCCESS;
@@ -190,7 +190,7 @@ int FmIoctlsInterface :: set_calibration
v4l2_ctls.count = 1;
v4l2_ctls.controls = &ext_ctl;
ret = ioctl(fd, VIDIOC_S_EXT_CTRLS, &v4l2_ctls);
- if(ret != IOCTL_SUCC) {
+ if(ret < IOCTL_SUCC) {
return FM_FAILURE;
}else {
return FM_SUCCESS;
@@ -210,7 +210,7 @@ int FmIoctlsInterface :: get_control
control.id = id;
ret = ioctl(fd, VIDIOC_G_CTRL, &control);
- if(ret != IOCTL_SUCC) {
+ if(ret < IOCTL_SUCC) {
return FM_FAILURE;
}else {
val = control.value;
@@ -230,7 +230,7 @@ int FmIoctlsInterface :: start_search
hw_seek.type = V4L2_TUNER_RADIO;
ret = ioctl(fd, VIDIOC_S_HW_FREQ_SEEK, &hw_seek);
- if(ret != IOCTL_SUCC) {
+ if(ret < IOCTL_SUCC) {
return FM_FAILURE;
}else {
return FM_SUCCESS;
@@ -252,7 +252,7 @@ int FmIoctlsInterface :: set_band
ret = ioctl(fd, VIDIOC_S_TUNER, &tuner);
ret = set_control(fd, V4L2_CID_PRV_REGION, 0);
- if(ret != IOCTL_SUCC) {
+ if(ret < IOCTL_SUCC) {
return FM_FAILURE;
}else {
return FM_SUCCESS;
@@ -270,8 +270,8 @@ int FmIoctlsInterface :: get_rmssi
tuner.index = 0;
tuner.signal = 0;
ret = ioctl(fd, VIDIOC_G_TUNER, &tuner);
- if(ret != IOCTL_SUCC) {
- ret = FM_SUCCESS;
+ if(ret < IOCTL_SUCC) {
+ ret = FM_FAILURE;
}else {
rmssi = tuner.signal;
ret = FM_SUCCESS;
@@ -289,7 +289,7 @@ int FmIoctlsInterface :: get_upperband_limit
tuner.index = 0;
ret = ioctl(fd, VIDIOC_G_TUNER, &tuner);
- if(ret != IOCTL_SUCC) {
+ if(ret < IOCTL_SUCC) {
return FM_FAILURE;
}else {
freq = (tuner.rangehigh / TUNE_MULT);
@@ -308,7 +308,7 @@ int FmIoctlsInterface :: get_lowerband_limit
tuner.index = 0;
ret = ioctl(fd, VIDIOC_G_TUNER, &tuner);
- if(ret != IOCTL_SUCC) {
+ if(ret < IOCTL_SUCC) {
return FM_FAILURE;
}else {
freq = (tuner.rangelow / TUNE_MULT);
@@ -327,7 +327,7 @@ int FmIoctlsInterface :: set_audio_mode
tuner.index = 0;
ret = ioctl(fd, VIDIOC_G_TUNER, &tuner);
- if(ret != IOCTL_SUCC) {
+ if(ret < IOCTL_SUCC) {
return FM_FAILURE;
}else {
tuner.audmode = mode;
@@ -357,7 +357,7 @@ int FmIoctlsInterface :: get_buffer
v4l2_buf.length = STD_BUF_SIZE;
v4l2_buf.m.userptr = (ULINT)buff;
ret = ioctl(fd, VIDIOC_DQBUF, &v4l2_buf);
- if(ret != IOCTL_SUCC) {
+ if(ret < IOCTL_SUCC) {
return FM_FAILURE;
}else {
return v4l2_buf.bytesused;
@@ -375,7 +375,7 @@ int FmIoctlsInterface :: set_ext_control
ret = ioctl(fd, VIDIOC_S_EXT_CTRLS, v4l2_ctls);
- if(ret != IOCTL_SUCC) {
+ if(ret < IOCTL_SUCC) {
return FM_FAILURE;
}else {
return FM_SUCCESS;
diff --git a/libfm_jni/FmRadioController.cpp b/libfm_jni/FmRadioController.cpp
index 55bcef4..613a062 100644
--- a/libfm_jni/FmRadioController.cpp
+++ b/libfm_jni/FmRadioController.cpp
@@ -159,8 +159,11 @@ int FmRadioController ::Pwr_Up(int freq)
int ret = FM_SUCCESS;
struct timespec ts;
ConfigFmThs thsObj;
+ char value[PROPERTY_VALUE_MAX] = {'\0'};
ALOGI("%s,[freq=%d]\n", __func__, freq);
+ property_get("qcom.bluetooth.soc", value, NULL);
+ ALOGD("BT soc is %s\n", value);
if (fd_driver < 0) {
ret = open_dev();
if (ret != FM_SUCCESS) {
@@ -171,12 +174,14 @@ int FmRadioController ::Pwr_Up(int freq)
if (cur_fm_state == FM_OFF) {
ALOGE("cur_fm_state = %d\n",cur_fm_state);
- ret = FmIoctlsInterface::start_fm_patch_dl(fd_driver);
- if (ret != FM_SUCCESS) {
- ALOGE("FM patch downloader failed: %d\n", ret);
- close_dev();
- set_fm_state(FM_OFF);
- return FM_FAILURE;
+ if (strcmp(value, "rome") != 0) {
+ ret = FmIoctlsInterface::start_fm_patch_dl(fd_driver);
+ if (ret != FM_SUCCESS) {
+ ALOGE("FM patch downloader failed: %d\n", ret);
+ close_dev();
+ set_fm_state(FM_OFF);
+ return FM_FAILURE;
+ }
}
if (event_listener_thread == 0) {
ret = pthread_create(&event_listener_thread, NULL,
@@ -1095,10 +1100,15 @@ void FmRadioController :: handle_enabled_event
void
)
{
+ char value[PROPERTY_VALUE_MAX] = {'\0'};
+
ALOGI("FM handle ready Event\n");
FmIoctlsInterface::set_control(fd_driver,
V4L2_CID_PRV_AUDIO_PATH, AUDIO_DIGITAL_PATH);
- FmIoctlsInterface::set_calibration(fd_driver);
+ property_get("qcom.bluetooth.soc", value, NULL);
+ if (strcmp(value, "rome") != 0) {
+ FmIoctlsInterface::set_calibration(fd_driver);
+ }
pthread_mutex_lock(&mutex_turn_on_cond);
set_fm_state(FM_ON);
pthread_cond_broadcast(&turn_on_cond);