static void mt76x02_set_beacon_offsets(struct mt76x02_dev *dev) { u16 val, base = MT_BEACON_BASE; u32 regs[4] = {}; int i; for (i = 0; i < 16; i++) { val = mt76x02_beacon_offsets[i] - base; regs[i / 4] |= (val / 64) << (8 * (i % 4)); } for (i = 0; i < 4; i++) mt76_wr(dev, MT_BCN_OFFSET(i), regs[i]); }
static void mt76_init_beacon_offsets(struct mt76_dev *dev) { u16 base = MT_BEACON_BASE; u32 regs[4] = {}; int i; for (i = 0; i < 16; i++) { u16 addr = dev->beacon_offsets[i]; regs[i / 4] |= ((addr - base) / 64) << (8 * (i % 4)); } for (i = 0; i < 4; i++) mt76_wr(dev, MT_BCN_OFFSET(i), regs[i]); }