media: dvb: earth-pt1: replace schedule_timeout with usleep_range
As described in Document/timers/timers-howto.txt, hrtimer-based delay should be used for small sleeps. Signed-off-by: Akihiro Tsukada <tskd08@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
This commit is contained in:
parent
41cb54e205
commit
20a63349b1
|
@ -18,7 +18,10 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/sched.h>
|
||||||
#include <linux/sched/signal.h>
|
#include <linux/sched/signal.h>
|
||||||
|
#include <linux/hrtimer.h>
|
||||||
|
#include <linux/delay.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/vmalloc.h>
|
#include <linux/vmalloc.h>
|
||||||
|
@ -321,7 +324,7 @@ static int pt1_unlock(struct pt1 *pt1)
|
||||||
for (i = 0; i < 3; i++) {
|
for (i = 0; i < 3; i++) {
|
||||||
if (pt1_read_reg(pt1, 0) & 0x80000000)
|
if (pt1_read_reg(pt1, 0) & 0x80000000)
|
||||||
return 0;
|
return 0;
|
||||||
schedule_timeout_uninterruptible((HZ + 999) / 1000);
|
usleep_range(1000, 2000);
|
||||||
}
|
}
|
||||||
dev_err(&pt1->pdev->dev, "could not unlock\n");
|
dev_err(&pt1->pdev->dev, "could not unlock\n");
|
||||||
return -EIO;
|
return -EIO;
|
||||||
|
@ -335,7 +338,7 @@ static int pt1_reset_pci(struct pt1 *pt1)
|
||||||
for (i = 0; i < 10; i++) {
|
for (i = 0; i < 10; i++) {
|
||||||
if (pt1_read_reg(pt1, 0) & 0x00000001)
|
if (pt1_read_reg(pt1, 0) & 0x00000001)
|
||||||
return 0;
|
return 0;
|
||||||
schedule_timeout_uninterruptible((HZ + 999) / 1000);
|
usleep_range(1000, 2000);
|
||||||
}
|
}
|
||||||
dev_err(&pt1->pdev->dev, "could not reset PCI\n");
|
dev_err(&pt1->pdev->dev, "could not reset PCI\n");
|
||||||
return -EIO;
|
return -EIO;
|
||||||
|
@ -349,7 +352,7 @@ static int pt1_reset_ram(struct pt1 *pt1)
|
||||||
for (i = 0; i < 10; i++) {
|
for (i = 0; i < 10; i++) {
|
||||||
if (pt1_read_reg(pt1, 0) & 0x00000002)
|
if (pt1_read_reg(pt1, 0) & 0x00000002)
|
||||||
return 0;
|
return 0;
|
||||||
schedule_timeout_uninterruptible((HZ + 999) / 1000);
|
usleep_range(1000, 2000);
|
||||||
}
|
}
|
||||||
dev_err(&pt1->pdev->dev, "could not reset RAM\n");
|
dev_err(&pt1->pdev->dev, "could not reset RAM\n");
|
||||||
return -EIO;
|
return -EIO;
|
||||||
|
@ -366,7 +369,7 @@ static int pt1_do_enable_ram(struct pt1 *pt1)
|
||||||
if ((pt1_read_reg(pt1, 0) & 0x00000004) != status)
|
if ((pt1_read_reg(pt1, 0) & 0x00000004) != status)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
schedule_timeout_uninterruptible((HZ + 999) / 1000);
|
usleep_range(1000, 2000);
|
||||||
}
|
}
|
||||||
dev_err(&pt1->pdev->dev, "could not enable RAM\n");
|
dev_err(&pt1->pdev->dev, "could not enable RAM\n");
|
||||||
return -EIO;
|
return -EIO;
|
||||||
|
@ -376,7 +379,7 @@ static int pt1_enable_ram(struct pt1 *pt1)
|
||||||
{
|
{
|
||||||
int i, ret;
|
int i, ret;
|
||||||
int phase;
|
int phase;
|
||||||
schedule_timeout_uninterruptible((HZ + 999) / 1000);
|
usleep_range(1000, 2000);
|
||||||
phase = pt1->pdev->device == 0x211a ? 128 : 166;
|
phase = pt1->pdev->device == 0x211a ? 128 : 166;
|
||||||
for (i = 0; i < phase; i++) {
|
for (i = 0; i < phase; i++) {
|
||||||
ret = pt1_do_enable_ram(pt1);
|
ret = pt1_do_enable_ram(pt1);
|
||||||
|
@ -463,6 +466,9 @@ static int pt1_thread(void *data)
|
||||||
struct pt1_buffer_page *page;
|
struct pt1_buffer_page *page;
|
||||||
bool was_frozen;
|
bool was_frozen;
|
||||||
|
|
||||||
|
#define PT1_FETCH_DELAY 10
|
||||||
|
#define PT1_FETCH_DELAY_DELTA 2
|
||||||
|
|
||||||
pt1 = data;
|
pt1 = data;
|
||||||
set_freezable();
|
set_freezable();
|
||||||
|
|
||||||
|
@ -476,7 +482,13 @@ static int pt1_thread(void *data)
|
||||||
|
|
||||||
page = pt1->tables[pt1->table_index].bufs[pt1->buf_index].page;
|
page = pt1->tables[pt1->table_index].bufs[pt1->buf_index].page;
|
||||||
if (!pt1_filter(pt1, page)) {
|
if (!pt1_filter(pt1, page)) {
|
||||||
schedule_timeout_interruptible((HZ + 999) / 1000);
|
ktime_t delay;
|
||||||
|
|
||||||
|
delay = PT1_FETCH_DELAY * NSEC_PER_MSEC;
|
||||||
|
set_current_state(TASK_INTERRUPTIBLE);
|
||||||
|
schedule_hrtimeout_range(&delay,
|
||||||
|
PT1_FETCH_DELAY_DELTA * NSEC_PER_MSEC,
|
||||||
|
HRTIMER_MODE_REL);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -712,7 +724,7 @@ pt1_update_power(struct pt1 *pt1)
|
||||||
adap = pt1->adaps[i];
|
adap = pt1->adaps[i];
|
||||||
switch (adap->voltage) {
|
switch (adap->voltage) {
|
||||||
case SEC_VOLTAGE_13: /* actually 11V */
|
case SEC_VOLTAGE_13: /* actually 11V */
|
||||||
bits |= 1 << 1;
|
bits |= 1 << 2;
|
||||||
break;
|
break;
|
||||||
case SEC_VOLTAGE_18: /* actually 15V */
|
case SEC_VOLTAGE_18: /* actually 15V */
|
||||||
bits |= 1 << 1 | 1 << 2;
|
bits |= 1 << 1 | 1 << 2;
|
||||||
|
@ -766,7 +778,7 @@ static int pt1_wakeup(struct dvb_frontend *fe)
|
||||||
adap = container_of(fe->dvb, struct pt1_adapter, adap);
|
adap = container_of(fe->dvb, struct pt1_adapter, adap);
|
||||||
adap->sleep = 0;
|
adap->sleep = 0;
|
||||||
pt1_update_power(adap->pt1);
|
pt1_update_power(adap->pt1);
|
||||||
schedule_timeout_uninterruptible((HZ + 999) / 1000);
|
usleep_range(1000, 2000);
|
||||||
|
|
||||||
ret = config_demod(adap->demod_i2c_client, adap->pt1->fe_clk);
|
ret = config_demod(adap->demod_i2c_client, adap->pt1->fe_clk);
|
||||||
if (ret == 0 && adap->orig_init)
|
if (ret == 0 && adap->orig_init)
|
||||||
|
@ -1073,7 +1085,7 @@ static int pt1_i2c_end(struct pt1 *pt1, int addr)
|
||||||
do {
|
do {
|
||||||
if (signal_pending(current))
|
if (signal_pending(current))
|
||||||
return -EINTR;
|
return -EINTR;
|
||||||
schedule_timeout_interruptible((HZ + 999) / 1000);
|
usleep_range(1000, 2000);
|
||||||
} while (pt1_read_reg(pt1, 0) & 0x00000080);
|
} while (pt1_read_reg(pt1, 0) & 0x00000080);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1376,11 +1388,11 @@ static int pt1_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||||
|
|
||||||
pt1->power = 1;
|
pt1->power = 1;
|
||||||
pt1_update_power(pt1);
|
pt1_update_power(pt1);
|
||||||
schedule_timeout_uninterruptible((HZ + 49) / 50);
|
msleep(20);
|
||||||
|
|
||||||
pt1->reset = 0;
|
pt1->reset = 0;
|
||||||
pt1_update_power(pt1);
|
pt1_update_power(pt1);
|
||||||
schedule_timeout_uninterruptible((HZ + 999) / 1000);
|
usleep_range(1000, 2000);
|
||||||
|
|
||||||
ret = pt1_init_frontends(pt1);
|
ret = pt1_init_frontends(pt1);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
|
|
Loading…
Reference in New Issue