root/drivers/net/wireless/broadcom/b43/radio_2059.h
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef B43_RADIO_2059_H_
#define B43_RADIO_2059_H_

#include <linux/types.h>

#include "phy_ht.h"

#define R2059_C1                        0x000
#define R2059_C2                        0x400
#define R2059_C3                        0x800
#define R2059_ALL                       0xC00

#define R2059_RCAL_CONFIG                       0x004
#define R2059_RFPLL_MASTER                      0x011
#define R2059_RFPLL_MISC_EN                     0x02b
#define R2059_RFPLL_MISC_CAL_RESETN             0x02e
#define R2059_XTAL_CONFIG2                      0x0c0
#define R2059_RCCAL_START_R1_Q1_P1              0x13c
#define R2059_RCCAL_X1                          0x13d
#define R2059_RCCAL_TRC0                        0x13e
#define R2059_RCCAL_DONE_OSCCAP                 0x140
#define R2059_RCAL_STATUS                       0x145
#define R2059_RCCAL_MASTER                      0x17f

/* Values for various registers uploaded on channel switching */
struct b43_phy_ht_channeltab_e_radio2059 {
        /* The channel frequency in MHz */
        u16 freq;
        /* Values for radio registers */
        u8 radio_syn16;
        u8 radio_syn17;
        u8 radio_syn22;
        u8 radio_syn25;
        u8 radio_syn27;
        u8 radio_syn28;
        u8 radio_syn29;
        u8 radio_syn2c;
        u8 radio_syn2d;
        u8 radio_syn37;
        u8 radio_syn41;
        u8 radio_syn43;
        u8 radio_syn47;
        u8 radio_rxtx4a;
        u8 radio_rxtx58;
        u8 radio_rxtx5a;
        u8 radio_rxtx6a;
        u8 radio_rxtx6d;
        u8 radio_rxtx6e;
        u8 radio_rxtx92;
        u8 radio_rxtx98;
        /* Values for PHY registers */
        struct b43_phy_ht_channeltab_e_phy phy_regs;
};

void r2059_upload_inittabs(struct b43_wldev *dev);

const struct b43_phy_ht_channeltab_e_radio2059
*b43_phy_ht_get_channeltab_e_r2059(struct b43_wldev *dev, u16 freq);

#endif /* B43_RADIO_2059_H_ */