root/drivers/net/wireless/mediatek/mt7601u/core.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. mt7601u_wait_asic_ready
  2. mt76_poll
  3. mt76_poll_msec

   1 // SPDX-License-Identifier: GPL-2.0-only
   2 /*
   3  * Copyright (C) 2014 Felix Fietkau <nbd@openwrt.org>
   4  * Copyright (C) 2015 Jakub Kicinski <kubakici@wp.pl>
   5  */
   6 
   7 #include "mt7601u.h"
   8 
   9 int mt7601u_wait_asic_ready(struct mt7601u_dev *dev)
  10 {
  11         int i = 100;
  12         u32 val;
  13 
  14         do {
  15                 if (test_bit(MT7601U_STATE_REMOVED, &dev->state))
  16                         return -EIO;
  17 
  18                 val = mt7601u_rr(dev, MT_MAC_CSR0);
  19                 if (val && ~val)
  20                         return 0;
  21 
  22                 udelay(10);
  23         } while (i--);
  24 
  25         return -EIO;
  26 }
  27 
  28 bool mt76_poll(struct mt7601u_dev *dev, u32 offset, u32 mask, u32 val,
  29                int timeout)
  30 {
  31         u32 cur;
  32 
  33         timeout /= 10;
  34         do {
  35                 if (test_bit(MT7601U_STATE_REMOVED, &dev->state))
  36                         return false;
  37 
  38                 cur = mt7601u_rr(dev, offset) & mask;
  39                 if (cur == val)
  40                         return true;
  41 
  42                 udelay(10);
  43         } while (timeout-- > 0);
  44 
  45         dev_err(dev->dev, "Error: Time out with reg %08x\n", offset);
  46 
  47         return false;
  48 }
  49 
  50 bool mt76_poll_msec(struct mt7601u_dev *dev, u32 offset, u32 mask, u32 val,
  51                     int timeout)
  52 {
  53         u32 cur;
  54 
  55         timeout /= 10;
  56         do {
  57                 if (test_bit(MT7601U_STATE_REMOVED, &dev->state))
  58                         return false;
  59 
  60                 cur = mt7601u_rr(dev, offset) & mask;
  61                 if (cur == val)
  62                         return true;
  63 
  64                 msleep(10);
  65         } while (timeout-- > 0);
  66 
  67         dev_err(dev->dev, "Error: Time out with reg %08x\n", offset);
  68 
  69         return false;
  70 }

/* [<][>][^][v][top][bottom][index][help] */