1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef B43_RADIO_2059_H_
3#define B43_RADIO_2059_H_
4
5#include <linux/types.h>
6
7#include "phy_ht.h"
8
9#define R2059_C1			0x000
10#define R2059_C2			0x400
11#define R2059_C3			0x800
12#define R2059_ALL			0xC00
13
14#define R2059_RCAL_CONFIG			0x004
15#define R2059_RFPLL_MASTER			0x011
16#define R2059_RFPLL_MISC_EN			0x02b
17#define R2059_RFPLL_MISC_CAL_RESETN		0x02e
18#define R2059_XTAL_CONFIG2			0x0c0
19#define R2059_RCCAL_START_R1_Q1_P1		0x13c
20#define R2059_RCCAL_X1				0x13d
21#define R2059_RCCAL_TRC0			0x13e
22#define R2059_RCCAL_DONE_OSCCAP			0x140
23#define R2059_RCAL_STATUS			0x145
24#define R2059_RCCAL_MASTER			0x17f
25
26/* Values for various registers uploaded on channel switching */
27struct b43_phy_ht_channeltab_e_radio2059 {
28	/* The channel frequency in MHz */
29	u16 freq;
30	/* Values for radio registers */
31	u8 radio_syn16;
32	u8 radio_syn17;
33	u8 radio_syn22;
34	u8 radio_syn25;
35	u8 radio_syn27;
36	u8 radio_syn28;
37	u8 radio_syn29;
38	u8 radio_syn2c;
39	u8 radio_syn2d;
40	u8 radio_syn37;
41	u8 radio_syn41;
42	u8 radio_syn43;
43	u8 radio_syn47;
44	u8 radio_rxtx4a;
45	u8 radio_rxtx58;
46	u8 radio_rxtx5a;
47	u8 radio_rxtx6a;
48	u8 radio_rxtx6d;
49	u8 radio_rxtx6e;
50	u8 radio_rxtx92;
51	u8 radio_rxtx98;
52	/* Values for PHY registers */
53	struct b43_phy_ht_channeltab_e_phy phy_regs;
54};
55
56void r2059_upload_inittabs(struct b43_wldev *dev);
57
58const struct b43_phy_ht_channeltab_e_radio2059
59*b43_phy_ht_get_channeltab_e_r2059(struct b43_wldev *dev, u16 freq);
60
61#endif /* B43_RADIO_2059_H_ */
62