diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2015-07-29 05:11:21 -0700 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2015-07-29 05:11:21 -0700 |
commit | 0fc5180af87be616fb22e32f59c4d04d5c0a08de (patch) | |
tree | 0c1371cd182574cf301b7ab3411f66ce45d002c6 | |
parent | 48e7607360b0249740dabd58a112e1b27f99df27 (diff) | |
parent | c09c3d85445d84ff612a4d1cbed49f5168ff3889 (diff) | |
download | android_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.h | 4 | ||||
-rw-r--r-- | libfm_jni/FM_Const.h | 2 | ||||
-rw-r--r-- | libfm_jni/FmIoctlsInterface.cpp | 28 | ||||
-rw-r--r-- | libfm_jni/FmRadioController.cpp | 24 |
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); |