Adds support for ddr_timeout during device init.

Signed-off-by: Derek Chickles <derek.chick...@caviumnetworks.com>
Signed-off-by: Satanand Burla <satananda.bu...@caviumnetworks.com>
Signed-off-by: Felix Manlunas <felix.manlu...@caviumnetworks.com>
Signed-off-by: Raghu Vatsavayi <raghu.vatsav...@caviumnetworks.com>
Signed-off-by: Raghu Vatsavayi <rvatsav...@caviumnetworks.com>
---
 drivers/net/ethernet/cavium/liquidio/lio_main.c      | 13 +++++++++----
 drivers/net/ethernet/cavium/liquidio/octeon_device.c |  3 ---
 2 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/drivers/net/ethernet/cavium/liquidio/lio_main.c 
b/drivers/net/ethernet/cavium/liquidio/lio_main.c
index a8328f2..1a584eb 100644
--- a/drivers/net/ethernet/cavium/liquidio/lio_main.c
+++ b/drivers/net/ethernet/cavium/liquidio/lio_main.c
@@ -3805,14 +3805,19 @@ static int octeon_device_init(struct octeon_device 
*octeon_dev)
 
        dev_dbg(&octeon_dev->pci_dev->dev, "Waiting for DDR 
initialization...\n");
 
-       if (ddr_timeout == 0) {
-               dev_info(&octeon_dev->pci_dev->dev,
-                        "WAITING. Set ddr_timeout to non-zero value to proceed 
with initialization.\n");
-       }
+       if (ddr_timeout == 0)
+               dev_info(&octeon_dev->pci_dev->dev, "WAITING. Set ddr_timeout 
to non-zero value to proceed with initialization.\n");
 
        schedule_timeout_uninterruptible(HZ * LIO_RESET_SECS);
 
        /* Wait for the octeon to initialize DDR after the soft-reset. */
+       while (ddr_timeout == 0) {
+               set_current_state(TASK_INTERRUPTIBLE);
+               if (schedule_timeout(HZ / 10)) {
+                       /* user probably pressed Control-C */
+                       return 1;
+               }
+       }
        ret = octeon_wait_for_ddr_init(octeon_dev, &ddr_timeout);
        if (ret) {
                dev_err(&octeon_dev->pci_dev->dev,
diff --git a/drivers/net/ethernet/cavium/liquidio/octeon_device.c 
b/drivers/net/ethernet/cavium/liquidio/octeon_device.c
index bc4d6af..3372207 100644
--- a/drivers/net/ethernet/cavium/liquidio/octeon_device.c
+++ b/drivers/net/ethernet/cavium/liquidio/octeon_device.c
@@ -1284,9 +1284,6 @@ int octeon_wait_for_ddr_init(struct octeon_device *oct, 
u32 *timeout)
        if (!timeout)
                return ret;
 
-       while (*timeout == 0)
-               schedule_timeout_uninterruptible(HZ / 10);
-
        for (ms = 0; (ret != 0) && ((*timeout == 0) || (ms <= *timeout));
             ms += HZ / 10) {
                ret = octeon_mem_access_ok(oct);
-- 
1.8.3.1

Reply via email to