summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorG, Manjunath Kondaiah <manjugk@ti.com>2010-12-19 09:55:46 +0530
committerG, Manjunath Kondaiah <manjugk@ti.com>2010-12-19 09:55:46 +0530
commitf08e66d15a03bc7f728b68e3b114fc131fcfe747 (patch)
treed48b57e68e203f406c1e87fdc5c365a80dc2f8e2
parent775a5129281078d91885ec86c53fe13aea7edfdf (diff)
parentedd21ecd4415c6cb6f7e57b951844200f8d033f6 (diff)
Merge branch 'btfm_next-l24.11-p5' of git://dev.omapzoom.org/pub/scm/manju/L24x-btfm into L24.11
-rw-r--r--drivers/staging/ti-st/fmdrv_common.c5
-rw-r--r--drivers/staging/ti-st/fmdrv_rx.c11
2 files changed, 12 insertions, 4 deletions
diff --git a/drivers/staging/ti-st/fmdrv_common.c b/drivers/staging/ti-st/fmdrv_common.c
index 0dcb5773781f..ae3641a04da9 100644
--- a/drivers/staging/ti-st/fmdrv_common.c
+++ b/drivers/staging/ti-st/fmdrv_common.c
@@ -194,14 +194,14 @@ static struct fm_reg_table fm_reg_info[] = {
static struct region_info region_configs[] = {
/* Europe/US */
{
- .channel_spacing = FM_CHANNEL_SPACING_50KHZ * FM_FREQ_MUL,
+ .channel_spacing = FM_CHANNEL_SPACING_200KHZ * FM_FREQ_MUL,
.bottom_frequency = 87500, /* 87.5 MHz */
.top_frequency = 108000, /* 108 MHz */
.region_index = 0,
},
/* Japan */
{
- .channel_spacing = FM_CHANNEL_SPACING_50KHZ * FM_FREQ_MUL,
+ .channel_spacing = FM_CHANNEL_SPACING_200KHZ * FM_FREQ_MUL,
.bottom_frequency = 76000, /* 76 MHz */
.top_frequency = 90000, /* 90 MHz */
.region_index = 1,
@@ -1017,7 +1017,6 @@ static void fm_irq_handle_rds_finish(void *arg)
static void fm_irq_handle_tune_op_ended(void *arg)
{
struct fmdrv_ops *fmdev;
-
fmdev = arg;
if (fmdev->irq_info.flag & (FM_FR_EVENT | FM_BL_EVENT) & fmdev->
irq_info.mask) {
diff --git a/drivers/staging/ti-st/fmdrv_rx.c b/drivers/staging/ti-st/fmdrv_rx.c
index fa509f718d44..5fb182f06a35 100644
--- a/drivers/staging/ti-st/fmdrv_rx.c
+++ b/drivers/staging/ti-st/fmdrv_rx.c
@@ -163,7 +163,7 @@ int fm_rx_seek(struct fmdrv_ops *fmdev, unsigned int seek_upward,
unsigned short payload, int_reason;
char offset, spacing;
unsigned long timeleft;
- int ret;
+ int ret, band_lmt_reach = 0;
if (fmdev->curr_fmmode != FM_MODE_RX) {
ret = -EPERM;
@@ -239,6 +239,9 @@ int fm_rx_seek(struct fmdrv_ops *fmdev, unsigned int seek_upward,
}
int_reason = fmdev->irq_info.flag & 0x3;
+ if (fmdev->irq_info.flag & FM_BL_EVENT)
+ band_lmt_reach = 1;
+
/* Re-enable default FM interrupts */
fmdev->irq_info.mask &= ~(FM_FR_EVENT | FM_BL_EVENT);
FM_STORE_LE16_TO_BE16(payload, fmdev->irq_info.mask);
@@ -246,6 +249,11 @@ int fm_rx_seek(struct fmdrv_ops *fmdev, unsigned int seek_upward,
&fmdev->maintask_completion, NULL, NULL);
FM_CHECK_SEND_CMD_STATUS(ret);
+ if (band_lmt_reach == 1)
+ fmdev->rx.curr_freq = seek_upward ?
+ fmdev->rx.region.top_frequency :
+ fmdev->rx.region.bottom_frequency;
+ else {
/* Read freq to know where operation tune operation stopped */
ret = fmc_send_cmd(fmdev, FREQ_GET, NULL, 2,
&fmdev->maintask_completion, &curr_frq, &resp_len);
@@ -255,6 +263,7 @@ int fm_rx_seek(struct fmdrv_ops *fmdev, unsigned int seek_upward,
fmdev->rx.curr_freq = (fmdev->rx.region.bottom_frequency +
((unsigned int)curr_frq * FM_FREQ_MUL));
+ }
/* Reset RDS cache and current station pointers */
fm_rx_reset_rds_cache(fmdev);
fm_rx_reset_curr_station_info(fmdev);