From: Yunsu Kim Date: Tue, 19 Mar 2019 10:05:16 +0000 (+0900) Subject: [RAMEN9610-13804][COMMON] media: radio: Fix 'Missing autoscan 87.5Mhz' X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=2cafc28f870e62a168e7c7cca98115ff907974ce;p=GitHub%2FLineageOS%2Fandroid_kernel_motorola_exynos9610.git [RAMEN9610-13804][COMMON] media: radio: Fix 'Missing autoscan 87.5Mhz' Change-Id: Ia2f1ed7b30a4c5a45bb622c817d44a7206cc2976 Signed-off-by: Yunsu Kim --- diff --git a/drivers/media/radio/s610/radio-s610.c b/drivers/media/radio/s610/radio-s610.c index 8689eaa98b68..1a2737fec596 100755 --- a/drivers/media/radio/s610/radio-s610.c +++ b/drivers/media/radio/s610/radio-s610.c @@ -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; }