[PATCH] telephony/ixj: use msleep() instead of schedule_timeout()
Replace schedule_timeout() with msleep() to guarantee the task delays as expected. Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com> Signed-off-by: Domen Puncer <domen@coderock.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
3a11ec5e50
commit
f4c9925ccc
1 changed files with 10 additions and 52 deletions
|
@ -774,10 +774,7 @@ static int ixj_wink(IXJ *j)
|
||||||
j->pots_winkstart = jiffies;
|
j->pots_winkstart = jiffies;
|
||||||
SLIC_SetState(PLD_SLIC_STATE_OC, j);
|
SLIC_SetState(PLD_SLIC_STATE_OC, j);
|
||||||
|
|
||||||
while (time_before(jiffies, j->pots_winkstart + j->winktime)) {
|
msleep(jiffies_to_msecs(j->winktime));
|
||||||
set_current_state(TASK_INTERRUPTIBLE);
|
|
||||||
schedule_timeout(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
SLIC_SetState(slicnow, j);
|
SLIC_SetState(slicnow, j);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -1912,7 +1909,6 @@ static int ixj_pcmcia_cable_check(IXJ *j)
|
||||||
|
|
||||||
static int ixj_hookstate(IXJ *j)
|
static int ixj_hookstate(IXJ *j)
|
||||||
{
|
{
|
||||||
unsigned long det;
|
|
||||||
int fOffHook = 0;
|
int fOffHook = 0;
|
||||||
|
|
||||||
switch (j->cardtype) {
|
switch (j->cardtype) {
|
||||||
|
@ -1943,11 +1939,7 @@ static int ixj_hookstate(IXJ *j)
|
||||||
j->pld_slicr.bits.state == PLD_SLIC_STATE_STANDBY) {
|
j->pld_slicr.bits.state == PLD_SLIC_STATE_STANDBY) {
|
||||||
if (j->flags.ringing || j->flags.cringing) {
|
if (j->flags.ringing || j->flags.cringing) {
|
||||||
if (!in_interrupt()) {
|
if (!in_interrupt()) {
|
||||||
det = jiffies + (hertz / 50);
|
msleep(20);
|
||||||
while (time_before(jiffies, det)) {
|
|
||||||
set_current_state(TASK_INTERRUPTIBLE);
|
|
||||||
schedule_timeout(1);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
SLIC_GetState(j);
|
SLIC_GetState(j);
|
||||||
if (j->pld_slicr.bits.state == PLD_SLIC_STATE_RINGING) {
|
if (j->pld_slicr.bits.state == PLD_SLIC_STATE_RINGING) {
|
||||||
|
@ -2062,7 +2054,7 @@ static void ixj_ring_start(IXJ *j)
|
||||||
static int ixj_ring(IXJ *j)
|
static int ixj_ring(IXJ *j)
|
||||||
{
|
{
|
||||||
char cntr;
|
char cntr;
|
||||||
unsigned long jif, det;
|
unsigned long jif;
|
||||||
|
|
||||||
j->flags.ringing = 1;
|
j->flags.ringing = 1;
|
||||||
if (ixj_hookstate(j) & 1) {
|
if (ixj_hookstate(j) & 1) {
|
||||||
|
@ -2070,7 +2062,6 @@ static int ixj_ring(IXJ *j)
|
||||||
j->flags.ringing = 0;
|
j->flags.ringing = 0;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
det = 0;
|
|
||||||
for (cntr = 0; cntr < j->maxrings; cntr++) {
|
for (cntr = 0; cntr < j->maxrings; cntr++) {
|
||||||
jif = jiffies + (1 * hertz);
|
jif = jiffies + (1 * hertz);
|
||||||
ixj_ring_on(j);
|
ixj_ring_on(j);
|
||||||
|
@ -2089,13 +2080,7 @@ static int ixj_ring(IXJ *j)
|
||||||
ixj_ring_off(j);
|
ixj_ring_off(j);
|
||||||
while (time_before(jiffies, jif)) {
|
while (time_before(jiffies, jif)) {
|
||||||
if (ixj_hookstate(j) & 1) {
|
if (ixj_hookstate(j) & 1) {
|
||||||
det = jiffies + (hertz / 100);
|
msleep(10);
|
||||||
while (time_before(jiffies, det)) {
|
|
||||||
set_current_state(TASK_INTERRUPTIBLE);
|
|
||||||
schedule_timeout(1);
|
|
||||||
if (signal_pending(current))
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (ixj_hookstate(j) & 1) {
|
if (ixj_hookstate(j) & 1) {
|
||||||
j->flags.ringing = 0;
|
j->flags.ringing = 0;
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -6694,8 +6679,6 @@ static struct file_operations ixj_fops =
|
||||||
|
|
||||||
static int ixj_linetest(IXJ *j)
|
static int ixj_linetest(IXJ *j)
|
||||||
{
|
{
|
||||||
unsigned long jifwait;
|
|
||||||
|
|
||||||
j->flags.pstncheck = 1; /* Testing */
|
j->flags.pstncheck = 1; /* Testing */
|
||||||
j->flags.pstn_present = 0; /* Assume the line is not there */
|
j->flags.pstn_present = 0; /* Assume the line is not there */
|
||||||
|
|
||||||
|
@ -6726,11 +6709,7 @@ static int ixj_linetest(IXJ *j)
|
||||||
|
|
||||||
outb_p(j->pld_scrw.byte, j->XILINXbase);
|
outb_p(j->pld_scrw.byte, j->XILINXbase);
|
||||||
daa_set_mode(j, SOP_PU_CONVERSATION);
|
daa_set_mode(j, SOP_PU_CONVERSATION);
|
||||||
jifwait = jiffies + hertz;
|
msleep(1000);
|
||||||
while (time_before(jiffies, jifwait)) {
|
|
||||||
set_current_state(TASK_INTERRUPTIBLE);
|
|
||||||
schedule_timeout(1);
|
|
||||||
}
|
|
||||||
daa_int_read(j);
|
daa_int_read(j);
|
||||||
daa_set_mode(j, SOP_PU_RESET);
|
daa_set_mode(j, SOP_PU_RESET);
|
||||||
if (j->m_DAAShadowRegs.XOP_REGS.XOP.xr0.bitreg.VDD_OK) {
|
if (j->m_DAAShadowRegs.XOP_REGS.XOP.xr0.bitreg.VDD_OK) {
|
||||||
|
@ -6750,11 +6729,7 @@ static int ixj_linetest(IXJ *j)
|
||||||
j->pld_slicw.bits.rly3 = 0;
|
j->pld_slicw.bits.rly3 = 0;
|
||||||
outb_p(j->pld_slicw.byte, j->XILINXbase + 0x01);
|
outb_p(j->pld_slicw.byte, j->XILINXbase + 0x01);
|
||||||
daa_set_mode(j, SOP_PU_CONVERSATION);
|
daa_set_mode(j, SOP_PU_CONVERSATION);
|
||||||
jifwait = jiffies + hertz;
|
msleep(1000);
|
||||||
while (time_before(jiffies, jifwait)) {
|
|
||||||
set_current_state(TASK_INTERRUPTIBLE);
|
|
||||||
schedule_timeout(1);
|
|
||||||
}
|
|
||||||
daa_int_read(j);
|
daa_int_read(j);
|
||||||
daa_set_mode(j, SOP_PU_RESET);
|
daa_set_mode(j, SOP_PU_RESET);
|
||||||
if (j->m_DAAShadowRegs.XOP_REGS.XOP.xr0.bitreg.VDD_OK) {
|
if (j->m_DAAShadowRegs.XOP_REGS.XOP.xr0.bitreg.VDD_OK) {
|
||||||
|
@ -6783,7 +6758,6 @@ static int ixj_linetest(IXJ *j)
|
||||||
static int ixj_selfprobe(IXJ *j)
|
static int ixj_selfprobe(IXJ *j)
|
||||||
{
|
{
|
||||||
unsigned short cmd;
|
unsigned short cmd;
|
||||||
unsigned long jif;
|
|
||||||
int cnt;
|
int cnt;
|
||||||
BYTES bytes;
|
BYTES bytes;
|
||||||
|
|
||||||
|
@ -6933,29 +6907,13 @@ static int ixj_selfprobe(IXJ *j)
|
||||||
} else {
|
} else {
|
||||||
if (j->cardtype == QTI_LINEJACK) {
|
if (j->cardtype == QTI_LINEJACK) {
|
||||||
LED_SetState(0x1, j);
|
LED_SetState(0x1, j);
|
||||||
jif = jiffies + (hertz / 10);
|
msleep(100);
|
||||||
while (time_before(jiffies, jif)) {
|
|
||||||
set_current_state(TASK_INTERRUPTIBLE);
|
|
||||||
schedule_timeout(1);
|
|
||||||
}
|
|
||||||
LED_SetState(0x2, j);
|
LED_SetState(0x2, j);
|
||||||
jif = jiffies + (hertz / 10);
|
msleep(100);
|
||||||
while (time_before(jiffies, jif)) {
|
|
||||||
set_current_state(TASK_INTERRUPTIBLE);
|
|
||||||
schedule_timeout(1);
|
|
||||||
}
|
|
||||||
LED_SetState(0x4, j);
|
LED_SetState(0x4, j);
|
||||||
jif = jiffies + (hertz / 10);
|
msleep(100);
|
||||||
while (time_before(jiffies, jif)) {
|
|
||||||
set_current_state(TASK_INTERRUPTIBLE);
|
|
||||||
schedule_timeout(1);
|
|
||||||
}
|
|
||||||
LED_SetState(0x8, j);
|
LED_SetState(0x8, j);
|
||||||
jif = jiffies + (hertz / 10);
|
msleep(100);
|
||||||
while (time_before(jiffies, jif)) {
|
|
||||||
set_current_state(TASK_INTERRUPTIBLE);
|
|
||||||
schedule_timeout(1);
|
|
||||||
}
|
|
||||||
LED_SetState(0x0, j);
|
LED_SetState(0x0, j);
|
||||||
daa_get_version(j);
|
daa_get_version(j);
|
||||||
if (ixjdebug & 0x0002)
|
if (ixjdebug & 0x0002)
|
||||||
|
|
Loading…
Reference in a new issue