FM: Fix the issue with patchdownloader

- Avoid patchdownloader for Silabs based targets.
- Make changes to treat only negative return values as errors.
- Change the calibration data path.

Change-Id: I611d5f6d64734e2a3a41456bb18b1e612862e0ed
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 @@
     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 @@
     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 @@
     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 @@
        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 @@
 
     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 @@
     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 @@
 
     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 @@
     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 @@
 
     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 @@
 
     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 @@
 
     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 @@
         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 @@
 
     ret = ioctl(fd, VIDIOC_S_EXT_CTRLS, v4l2_ctls);
 
-    if(ret != IOCTL_SUCC) {
+    if(ret < IOCTL_SUCC) {
        return FM_FAILURE;
     }else {
        return FM_SUCCESS;