155b13a04SStanislaw Gruszka /*
255b13a04SStanislaw Gruszka  * Copyright (C) 2014 Felix Fietkau <nbd@openwrt.org>
355b13a04SStanislaw Gruszka  * Copyright (C) 2015 Jakub Kicinski <kubakici@wp.pl>
455b13a04SStanislaw Gruszka  *
555b13a04SStanislaw Gruszka  * This program is free software; you can redistribute it and/or modify
655b13a04SStanislaw Gruszka  * it under the terms of the GNU General Public License version 2
755b13a04SStanislaw Gruszka  * as published by the Free Software Foundation
855b13a04SStanislaw Gruszka  *
955b13a04SStanislaw Gruszka  * This program is distributed in the hope that it will be useful,
1055b13a04SStanislaw Gruszka  * but WITHOUT ANY WARRANTY; without even the implied warranty of
1155b13a04SStanislaw Gruszka  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1255b13a04SStanislaw Gruszka  * GNU General Public License for more details.
1355b13a04SStanislaw Gruszka  */
1455b13a04SStanislaw Gruszka 
1555b13a04SStanislaw Gruszka #ifndef __MT76X0U_MCU_H
1655b13a04SStanislaw Gruszka #define __MT76X0U_MCU_H
1755b13a04SStanislaw Gruszka 
18dce9dc8dSLorenzo Bianconi #include "../mt76x02_mcu.h"
1955b13a04SStanislaw Gruszka 
20b2d871c0SLorenzo Bianconi struct mt76x02_dev;
2155b13a04SStanislaw Gruszka 
2255b13a04SStanislaw Gruszka #define MT_MCU_IVB_SIZE			0x40
2355b13a04SStanislaw Gruszka #define MT_MCU_DLM_OFFSET		0x80000
2455b13a04SStanislaw Gruszka 
2555b13a04SStanislaw Gruszka /* We use same space for BBP as for MAC regs
2655b13a04SStanislaw Gruszka  * #define MT_MCU_MEMMAP_BBP		0x40000000
2755b13a04SStanislaw Gruszka  */
2855b13a04SStanislaw Gruszka #define MT_MCU_MEMMAP_RF		0x80000000
2955b13a04SStanislaw Gruszka 
3055b13a04SStanislaw Gruszka enum mcu_calibrate {
3155b13a04SStanislaw Gruszka 	MCU_CAL_R = 1,
3255b13a04SStanislaw Gruszka 	MCU_CAL_RXDCOC,
3355b13a04SStanislaw Gruszka 	MCU_CAL_LC,
3455b13a04SStanislaw Gruszka 	MCU_CAL_LOFT,
3555b13a04SStanislaw Gruszka 	MCU_CAL_TXIQ,
3655b13a04SStanislaw Gruszka 	MCU_CAL_BW,
3755b13a04SStanislaw Gruszka 	MCU_CAL_DPD,
3855b13a04SStanislaw Gruszka 	MCU_CAL_RXIQ,
3955b13a04SStanislaw Gruszka 	MCU_CAL_TXDCOC,
4055b13a04SStanislaw Gruszka 	MCU_CAL_RX_GROUP_DELAY,
4155b13a04SStanislaw Gruszka 	MCU_CAL_TX_GROUP_DELAY,
4255b13a04SStanislaw Gruszka };
4355b13a04SStanislaw Gruszka 
44b2d871c0SLorenzo Bianconi int mt76x0e_mcu_init(struct mt76x02_dev *dev);
45b2d871c0SLorenzo Bianconi int mt76x0u_mcu_init(struct mt76x02_dev *dev);
46b2d871c0SLorenzo Bianconi static inline int mt76x0_firmware_running(struct mt76x02_dev *dev)
47db2803bbSLorenzo Bianconi {
48db2803bbSLorenzo Bianconi 	return mt76_rr(dev, MT_MCU_COM_REG0) == 1;
49db2803bbSLorenzo Bianconi }
50db2803bbSLorenzo Bianconi 
5155b13a04SStanislaw Gruszka #endif
52