16c92544dSBjoern A. Zeeb /* SPDX-License-Identifier: ISC */
26c92544dSBjoern A. Zeeb /*
36c92544dSBjoern A. Zeeb  * Copyright (C) 2018 Lorenzo Bianconi <lorenzo.bianconi83@gmail.com>
46c92544dSBjoern A. Zeeb  */
56c92544dSBjoern A. Zeeb 
66c92544dSBjoern A. Zeeb #ifndef __MT76x2U_H
76c92544dSBjoern A. Zeeb #define __MT76x2U_H
86c92544dSBjoern A. Zeeb 
96c92544dSBjoern A. Zeeb #include <linux/device.h>
106c92544dSBjoern A. Zeeb 
116c92544dSBjoern A. Zeeb #include "mt76x2.h"
126c92544dSBjoern A. Zeeb #include "mcu.h"
136c92544dSBjoern A. Zeeb 
146c92544dSBjoern A. Zeeb #define MT7612U_EEPROM_SIZE		512
156c92544dSBjoern A. Zeeb 
166c92544dSBjoern A. Zeeb #define MT_USB_AGGR_SIZE_LIMIT		21 /* 1024B unit */
176c92544dSBjoern A. Zeeb #define MT_USB_AGGR_TIMEOUT		0x80 /* 33ns unit */
186c92544dSBjoern A. Zeeb 
196c92544dSBjoern A. Zeeb extern const struct ieee80211_ops mt76x2u_ops;
206c92544dSBjoern A. Zeeb 
216c92544dSBjoern A. Zeeb int mt76x2u_register_device(struct mt76x02_dev *dev);
226c92544dSBjoern A. Zeeb int mt76x2u_init_hardware(struct mt76x02_dev *dev);
236c92544dSBjoern A. Zeeb void mt76x2u_cleanup(struct mt76x02_dev *dev);
246c92544dSBjoern A. Zeeb void mt76x2u_stop_hw(struct mt76x02_dev *dev);
256c92544dSBjoern A. Zeeb 
266c92544dSBjoern A. Zeeb int mt76x2u_mac_reset(struct mt76x02_dev *dev);
276c92544dSBjoern A. Zeeb int mt76x2u_mac_stop(struct mt76x02_dev *dev);
286c92544dSBjoern A. Zeeb 
296c92544dSBjoern A. Zeeb int mt76x2u_phy_set_channel(struct mt76x02_dev *dev,
306c92544dSBjoern A. Zeeb 			    struct cfg80211_chan_def *chandef);
316c92544dSBjoern A. Zeeb void mt76x2u_phy_calibrate(struct work_struct *work);
326c92544dSBjoern A. Zeeb 
336c92544dSBjoern A. Zeeb void mt76x2u_mcu_complete_urb(struct urb *urb);
346c92544dSBjoern A. Zeeb int mt76x2u_mcu_init(struct mt76x02_dev *dev);
356c92544dSBjoern A. Zeeb int mt76x2u_mcu_fw_init(struct mt76x02_dev *dev);
366c92544dSBjoern A. Zeeb 
376c92544dSBjoern A. Zeeb int mt76x2u_alloc_queues(struct mt76x02_dev *dev);
386c92544dSBjoern A. Zeeb void mt76x2u_queues_deinit(struct mt76x02_dev *dev);
396c92544dSBjoern A. Zeeb void mt76x2u_stop_queues(struct mt76x02_dev *dev);
406c92544dSBjoern A. Zeeb int mt76x2u_skb_dma_info(struct sk_buff *skb, enum dma_msg_port port,
416c92544dSBjoern A. Zeeb 			 u32 flags);
426c92544dSBjoern A. Zeeb 
436c92544dSBjoern A. Zeeb #endif /* __MT76x2U_H */
44