|
@@ -186,7 +186,7 @@ static int be_mcc_notify_wait(struct be_adapter *adapter)
|
|
|
|
|
|
static int be_mbox_db_ready_wait(struct be_adapter *adapter, void __iomem *db)
|
|
static int be_mbox_db_ready_wait(struct be_adapter *adapter, void __iomem *db)
|
|
{
|
|
{
|
|
- int cnt = 0, wait = 5;
|
|
|
|
|
|
+ int msecs = 0;
|
|
u32 ready;
|
|
u32 ready;
|
|
|
|
|
|
do {
|
|
do {
|
|
@@ -201,15 +201,14 @@ static int be_mbox_db_ready_wait(struct be_adapter *adapter, void __iomem *db)
|
|
if (ready)
|
|
if (ready)
|
|
break;
|
|
break;
|
|
|
|
|
|
- if (cnt > 4000000) {
|
|
|
|
|
|
+ if (msecs > 4000) {
|
|
dev_err(&adapter->pdev->dev, "mbox poll timed out\n");
|
|
dev_err(&adapter->pdev->dev, "mbox poll timed out\n");
|
|
return -1;
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
|
|
- if (cnt > 50)
|
|
|
|
- wait = 200;
|
|
|
|
- cnt += wait;
|
|
|
|
- udelay(wait);
|
|
|
|
|
|
+ set_current_state(TASK_INTERRUPTIBLE);
|
|
|
|
+ schedule_timeout(msecs_to_jiffies(1));
|
|
|
|
+ msecs++;
|
|
} while (true);
|
|
} while (true);
|
|
|
|
|
|
return 0;
|
|
return 0;
|