18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Copyright (C) 2014 Felix Fietkau <nbd@openwrt.org> 48c2ecf20Sopenharmony_ci * Copyright (C) 2015 Jakub Kicinski <kubakici@wp.pl> 58c2ecf20Sopenharmony_ci * Copyright (C) 2018 Stanislaw Gruszka <stf_xl@wp.pl> 68c2ecf20Sopenharmony_ci */ 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ci#ifndef MT76X0U_H 98c2ecf20Sopenharmony_ci#define MT76X0U_H 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ci#include <linux/bitfield.h> 128c2ecf20Sopenharmony_ci#include <linux/kernel.h> 138c2ecf20Sopenharmony_ci#include <linux/device.h> 148c2ecf20Sopenharmony_ci#include <linux/mutex.h> 158c2ecf20Sopenharmony_ci#include <linux/usb.h> 168c2ecf20Sopenharmony_ci#include <linux/completion.h> 178c2ecf20Sopenharmony_ci#include <net/mac80211.h> 188c2ecf20Sopenharmony_ci#include <linux/debugfs.h> 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_ci#include "../mt76x02.h" 218c2ecf20Sopenharmony_ci#include "eeprom.h" 228c2ecf20Sopenharmony_ci 238c2ecf20Sopenharmony_ci#define MT7610E_FIRMWARE "mediatek/mt7610e.bin" 248c2ecf20Sopenharmony_ci#define MT7650E_FIRMWARE "mediatek/mt7650e.bin" 258c2ecf20Sopenharmony_ci 268c2ecf20Sopenharmony_ci#define MT7610U_FIRMWARE "mediatek/mt7610u.bin" 278c2ecf20Sopenharmony_ci 288c2ecf20Sopenharmony_ci#define MT_USB_AGGR_SIZE_LIMIT 21 /* * 1024B */ 298c2ecf20Sopenharmony_ci#define MT_USB_AGGR_TIMEOUT 0x80 /* * 33ns */ 308c2ecf20Sopenharmony_ci 318c2ecf20Sopenharmony_cistatic inline bool is_mt7610e(struct mt76x02_dev *dev) 328c2ecf20Sopenharmony_ci{ 338c2ecf20Sopenharmony_ci if (!mt76_is_mmio(&dev->mt76)) 348c2ecf20Sopenharmony_ci return false; 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_ci return mt76_chip(&dev->mt76) == 0x7610; 378c2ecf20Sopenharmony_ci} 388c2ecf20Sopenharmony_ci 398c2ecf20Sopenharmony_cistatic inline bool is_mt7630(struct mt76x02_dev *dev) 408c2ecf20Sopenharmony_ci{ 418c2ecf20Sopenharmony_ci return mt76_chip(&dev->mt76) == 0x7630; 428c2ecf20Sopenharmony_ci} 438c2ecf20Sopenharmony_ci 448c2ecf20Sopenharmony_ci/* Init */ 458c2ecf20Sopenharmony_ciint mt76x0_init_hardware(struct mt76x02_dev *dev); 468c2ecf20Sopenharmony_ciint mt76x0_register_device(struct mt76x02_dev *dev); 478c2ecf20Sopenharmony_civoid mt76x0_chip_onoff(struct mt76x02_dev *dev, bool enable, bool reset); 488c2ecf20Sopenharmony_ci 498c2ecf20Sopenharmony_civoid mt76x0_mac_stop(struct mt76x02_dev *dev); 508c2ecf20Sopenharmony_ci 518c2ecf20Sopenharmony_ciint mt76x0_config(struct ieee80211_hw *hw, u32 changed); 528c2ecf20Sopenharmony_ci 538c2ecf20Sopenharmony_ci/* PHY */ 548c2ecf20Sopenharmony_civoid mt76x0_phy_init(struct mt76x02_dev *dev); 558c2ecf20Sopenharmony_ciint mt76x0_phy_wait_bbp_ready(struct mt76x02_dev *dev); 568c2ecf20Sopenharmony_civoid mt76x0_phy_set_channel(struct mt76x02_dev *dev, 578c2ecf20Sopenharmony_ci struct cfg80211_chan_def *chandef); 588c2ecf20Sopenharmony_civoid mt76x0_phy_set_txpower(struct mt76x02_dev *dev); 598c2ecf20Sopenharmony_civoid mt76x0_phy_calibrate(struct mt76x02_dev *dev, bool power_on); 608c2ecf20Sopenharmony_ci#endif 61