|
@@ -164,7 +164,6 @@ MODULE_PARM_DESC(seek_timeout, "Seek timeout: *5000*");
|
|
|
static int si470x_set_chan(struct si470x_device *radio, unsigned short chan)
|
|
|
{
|
|
|
int retval;
|
|
|
- unsigned long timeout;
|
|
|
bool timed_out = 0;
|
|
|
|
|
|
/* start tuning */
|
|
@@ -174,26 +173,12 @@ static int si470x_set_chan(struct si470x_device *radio, unsigned short chan)
|
|
|
if (retval < 0)
|
|
|
goto done;
|
|
|
|
|
|
- /* currently I2C driver only uses interrupt way to tune */
|
|
|
- if (radio->stci_enabled) {
|
|
|
- INIT_COMPLETION(radio->completion);
|
|
|
-
|
|
|
- /* wait till tune operation has completed */
|
|
|
- retval = wait_for_completion_timeout(&radio->completion,
|
|
|
- msecs_to_jiffies(tune_timeout));
|
|
|
- if (!retval)
|
|
|
- timed_out = true;
|
|
|
- } else {
|
|
|
- /* wait till tune operation has completed */
|
|
|
- timeout = jiffies + msecs_to_jiffies(tune_timeout);
|
|
|
- do {
|
|
|
- retval = si470x_get_register(radio, STATUSRSSI);
|
|
|
- if (retval < 0)
|
|
|
- goto stop;
|
|
|
- timed_out = time_after(jiffies, timeout);
|
|
|
- } while (((radio->registers[STATUSRSSI] & STATUSRSSI_STC) == 0)
|
|
|
- && (!timed_out));
|
|
|
- }
|
|
|
+ /* wait till tune operation has completed */
|
|
|
+ INIT_COMPLETION(radio->completion);
|
|
|
+ retval = wait_for_completion_timeout(&radio->completion,
|
|
|
+ msecs_to_jiffies(tune_timeout));
|
|
|
+ if (!retval)
|
|
|
+ timed_out = true;
|
|
|
|
|
|
if ((radio->registers[STATUSRSSI] & STATUSRSSI_STC) == 0)
|
|
|
dev_warn(&radio->videodev.dev, "tune does not complete\n");
|
|
@@ -201,7 +186,6 @@ static int si470x_set_chan(struct si470x_device *radio, unsigned short chan)
|
|
|
dev_warn(&radio->videodev.dev,
|
|
|
"tune timed out after %u ms\n", tune_timeout);
|
|
|
|
|
|
-stop:
|
|
|
/* stop tuning */
|
|
|
radio->registers[CHANNEL] &= ~CHANNEL_TUNE;
|
|
|
retval = si470x_set_register(radio, CHANNEL);
|
|
@@ -312,7 +296,6 @@ static int si470x_set_seek(struct si470x_device *radio,
|
|
|
unsigned int wrap_around, unsigned int seek_upward)
|
|
|
{
|
|
|
int retval = 0;
|
|
|
- unsigned long timeout;
|
|
|
bool timed_out = 0;
|
|
|
|
|
|
/* start seeking */
|
|
@@ -329,26 +312,12 @@ static int si470x_set_seek(struct si470x_device *radio,
|
|
|
if (retval < 0)
|
|
|
return retval;
|
|
|
|
|
|
- /* currently I2C driver only uses interrupt way to seek */
|
|
|
- if (radio->stci_enabled) {
|
|
|
- INIT_COMPLETION(radio->completion);
|
|
|
-
|
|
|
- /* wait till seek operation has completed */
|
|
|
- retval = wait_for_completion_timeout(&radio->completion,
|
|
|
- msecs_to_jiffies(seek_timeout));
|
|
|
- if (!retval)
|
|
|
- timed_out = true;
|
|
|
- } else {
|
|
|
- /* wait till seek operation has completed */
|
|
|
- timeout = jiffies + msecs_to_jiffies(seek_timeout);
|
|
|
- do {
|
|
|
- retval = si470x_get_register(radio, STATUSRSSI);
|
|
|
- if (retval < 0)
|
|
|
- goto stop;
|
|
|
- timed_out = time_after(jiffies, timeout);
|
|
|
- } while (((radio->registers[STATUSRSSI] & STATUSRSSI_STC) == 0)
|
|
|
- && (!timed_out));
|
|
|
- }
|
|
|
+ /* wait till tune operation has completed */
|
|
|
+ INIT_COMPLETION(radio->completion);
|
|
|
+ retval = wait_for_completion_timeout(&radio->completion,
|
|
|
+ msecs_to_jiffies(seek_timeout));
|
|
|
+ if (!retval)
|
|
|
+ timed_out = true;
|
|
|
|
|
|
if ((radio->registers[STATUSRSSI] & STATUSRSSI_STC) == 0)
|
|
|
dev_warn(&radio->videodev.dev, "seek does not complete\n");
|
|
@@ -356,7 +325,6 @@ static int si470x_set_seek(struct si470x_device *radio,
|
|
|
dev_warn(&radio->videodev.dev,
|
|
|
"seek failed / band limit reached\n");
|
|
|
|
|
|
-stop:
|
|
|
/* stop seeking */
|
|
|
radio->registers[POWERCFG] &= ~POWERCFG_SEEK;
|
|
|
retval = si470x_set_register(radio, POWERCFG);
|