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