cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

core.c (1245B)


      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
      9int 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
     28bool 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
     50bool 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}