[RAMEN9610-13804][COMMON] media: radio: Fix 'Missing autoscan 87.5Mhz'
authorYunsu Kim <iamyunsu.kim@samsung.com>
Tue, 19 Mar 2019 10:05:16 +0000 (19:05 +0900)
committerhskang <hs1218.kang@samsung.com>
Mon, 25 Mar 2019 23:01:39 +0000 (08:01 +0900)
Change-Id: Ia2f1ed7b30a4c5a45bb622c817d44a7206cc2976
Signed-off-by: Yunsu Kim <iamyunsu.kim@samsung.com>
drivers/media/radio/s610/radio-s610.c

index 8689eaa98b6814085e414c77bc1e507ebf7eb334..1a2737fec596956283b83a05b4d9eae071bb38b8 100755 (executable)
@@ -748,6 +748,7 @@ int fm_rx_seek(struct s610_radio *radio, u32 seek_upward,
        unsigned long timeleft;
        int ret;
        int     bl_1st, bl_2nd, bl_3nd;
+       static u32 pre_freq = 0;
 
        FUNC_ENTRY(radio);
 
@@ -786,7 +787,20 @@ int fm_rx_seek(struct s610_radio *radio, u32 seek_upward,
 
        save_freq = freq_low;
        radio->seek_freq = save_freq;
-       tune_mode = FM_TUNER_AUTONOMOUS_SEARCH_MODE_NEXT;
+
+       if ((((save_freq == region_configs[radio_region].bot_freq)
+               && (upward == FM_SEARCH_DIRECTION_UP)) ||
+               ((save_freq == region_configs[radio_region].top_freq)
+               && (upward == FM_SEARCH_DIRECTION_DOWN))) &&
+               (pre_freq != save_freq) &&
+               !wrap_around ){
+               FDEBUG(radio, "YSTEST LINE : %d\n", __LINE__);
+               tune_mode = FM_TUNER_AUTONOMOUS_SEARCH_MODE;
+       }
+       else {
+               tune_mode = FM_TUNER_AUTONOMOUS_SEARCH_MODE_NEXT;
+       }
+       pre_freq = save_freq;
 
        if (radio->low->fm_state.rssi_limit_search == 0)
                low_set_search_lvl(radio, (u16)FM_DEFAULT_RSSI_THRESHOLD);
@@ -806,12 +820,16 @@ int fm_rx_seek(struct s610_radio *radio, u32 seek_upward,
 again:
        curr_frq = freq_low;
        if ((freq_low == region_configs[radio_region].bot_freq)
-               && (upward == FM_SEARCH_DIRECTION_DOWN))
+               && (upward == FM_SEARCH_DIRECTION_DOWN)) {
                curr_frq = region_configs[radio_region].top_freq;
+               tune_mode = FM_TUNER_AUTONOMOUS_SEARCH_MODE;
+       }
 
        if ((freq_low == region_configs[radio_region].top_freq)
-               && (upward == FM_SEARCH_DIRECTION_UP))
+               && (upward == FM_SEARCH_DIRECTION_UP)) {
                curr_frq = region_configs[radio_region].bot_freq;
+               tune_mode = FM_TUNER_AUTONOMOUS_SEARCH_MODE;
+       }
 
        payload = curr_frq;
        low_set_freq(radio, payload);
@@ -1496,12 +1514,17 @@ void  fm_prepare(struct s610_radio *radio)
 #ifdef USE_FM_LNA_ENABLE
 static int set_eLNA_gpio(struct s610_radio *radio, int stat)
 {
+       if (radio->without_elna)
+               return -EPERM;
+
        if (!gpio_is_valid(radio->elna_gpio)) {
                return -EINVAL;
        } else {
                dev_info(radio->v4l2dev.dev, "%s(%d)\n", __func__, stat);
                gpio_set_value(radio->elna_gpio, stat);
        }
+       dev_info(radio->v4l2dev.dev, "Get elna_gpio(%d)\n",
+                       gpio_get_value(radio->elna_gpio));
 
        return 0;
 }