11802d0beSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
255b13a04SStanislaw Gruszka /*
355b13a04SStanislaw Gruszka  * Copyright (C) 2014 Felix Fietkau <nbd@openwrt.org>
455b13a04SStanislaw Gruszka  * Copyright (C) 2015 Jakub Kicinski <kubakici@wp.pl>
555b13a04SStanislaw Gruszka  */
655b13a04SStanislaw Gruszka 
755b13a04SStanislaw Gruszka #ifndef __MT76X0U_MCU_H
855b13a04SStanislaw Gruszka #define __MT76X0U_MCU_H
955b13a04SStanislaw Gruszka 
10dce9dc8dSLorenzo Bianconi #include "../mt76x02_mcu.h"
1155b13a04SStanislaw Gruszka 
12b2d871c0SLorenzo Bianconi struct mt76x02_dev;
1355b13a04SStanislaw Gruszka 
1455b13a04SStanislaw Gruszka #define MT_MCU_IVB_SIZE			0x40
1555b13a04SStanislaw Gruszka #define MT_MCU_DLM_OFFSET		0x80000
1655b13a04SStanislaw Gruszka 
1755b13a04SStanislaw Gruszka /* We use same space for BBP as for MAC regs
1855b13a04SStanislaw Gruszka  * #define MT_MCU_MEMMAP_BBP		0x40000000
1955b13a04SStanislaw Gruszka  */
2055b13a04SStanislaw Gruszka #define MT_MCU_MEMMAP_RF		0x80000000
2155b13a04SStanislaw Gruszka 
2255b13a04SStanislaw Gruszka enum mcu_calibrate {
2355b13a04SStanislaw Gruszka 	MCU_CAL_R = 1,
2455b13a04SStanislaw Gruszka 	MCU_CAL_RXDCOC,
2555b13a04SStanislaw Gruszka 	MCU_CAL_LC,
2655b13a04SStanislaw Gruszka 	MCU_CAL_LOFT,
2755b13a04SStanislaw Gruszka 	MCU_CAL_TXIQ,
2855b13a04SStanislaw Gruszka 	MCU_CAL_BW,
2955b13a04SStanislaw Gruszka 	MCU_CAL_DPD,
3055b13a04SStanislaw Gruszka 	MCU_CAL_RXIQ,
3155b13a04SStanislaw Gruszka 	MCU_CAL_TXDCOC,
3255b13a04SStanislaw Gruszka 	MCU_CAL_RX_GROUP_DELAY,
3355b13a04SStanislaw Gruszka 	MCU_CAL_TX_GROUP_DELAY,
349aec146dSLorenzo Bianconi 	MCU_CAL_VCO,
359aec146dSLorenzo Bianconi 	MCU_CAL_NO_SIGNAL = 0xfe,
369aec146dSLorenzo Bianconi 	MCU_CAL_FULL = 0xff,
3755b13a04SStanislaw Gruszka };
3855b13a04SStanislaw Gruszka 
39b2d871c0SLorenzo Bianconi int mt76x0e_mcu_init(struct mt76x02_dev *dev);
40b2d871c0SLorenzo Bianconi int mt76x0u_mcu_init(struct mt76x02_dev *dev);
mt76x0_firmware_running(struct mt76x02_dev * dev)41b2d871c0SLorenzo Bianconi static inline int mt76x0_firmware_running(struct mt76x02_dev *dev)
42db2803bbSLorenzo Bianconi {
43db2803bbSLorenzo Bianconi 	return mt76_rr(dev, MT_MCU_COM_REG0) == 1;
44db2803bbSLorenzo Bianconi }
45db2803bbSLorenzo Bianconi 
4655b13a04SStanislaw Gruszka #endif
47