Changeset 30847


Ignore:
Timestamp:
2012-03-07T17:32:45+01:00 (6 years ago)
Author:
juhosg
Message:

generic: ar8216: improve ar8216_wait_bit function

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/generic/files/drivers/net/phy/ar8216.c

    r30846 r30847  
    469469{ 
    470470        int timeout = 20; 
    471  
    472         while ((priv->read(priv, reg) & mask) != val) { 
    473                 if (timeout-- <= 0) { 
    474                         printk(KERN_ERR "ar8216: timeout waiting for operation to complete\n"); 
    475                         return 1; 
    476                 } 
    477         } 
    478         return 0; 
     471        u32 t = 0; 
     472 
     473        while (1) { 
     474                t = priv->read(priv, reg); 
     475                if ((t & mask) == val) 
     476                        return 0; 
     477 
     478                if (timeout-- <= 0) 
     479                        break; 
     480 
     481                udelay(10); 
     482        } 
     483 
     484        pr_err("ar8216: timeout on reg %08x: %08x & %08x != %08x\n", 
     485               (unsigned int) reg, t, mask, val); 
     486        return -ETIMEDOUT; 
    479487} 
    480488 
     
    959967        mutex_lock(&priv->reg_mutex); 
    960968        ret = ar8216_wait_bit(priv, AR8216_REG_ATU, AR8216_ATU_ACTIVE, 0); 
    961  
    962969        if (!ret) 
    963970                priv->write(priv, AR8216_REG_ATU, AR8216_ATU_OP_FLUSH); 
    964         else 
    965                 ret = -ETIMEDOUT; 
    966971        mutex_unlock(&priv->reg_mutex); 
    967972 
Note: See TracChangeset for help on using the changeset viewer.