]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - sys/dev/rtwn/rtl8192e/r92e_rom_image.h
Upgrade to OpenPAM Radula.
[FreeBSD/FreeBSD.git] / sys / dev / rtwn / rtl8192e / r92e_rom_image.h
1 /*-
2  * Copyright (c) 2017 Kevin Lo <kevlo@FreeBSD.org>
3  *
4  * Permission to use, copy, modify, and distribute this software for any
5  * purpose with or without fee is hereby granted, provided that the above
6  * copyright notice and this permission notice appear in all copies.
7  *
8  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15  *
16  * $FreeBSD$
17  */
18
19 #ifndef R92E_ROM_IMAGE_H
20 #define R92E_ROM_IMAGE_H
21
22 #include <dev/rtwn/rtl8192e/r92e_rom_defs.h>
23
24 #define R92E_DEF_TX_PWR_2G              0x2d
25 #define R92E_DEF_TX_PWR_HT20_DIFF       0x02
26 #define R92E_DEF_TX_PWR_DIFF            0xfe
27
28 struct r92e_tx_pwr_2g {
29         uint8_t         cck[R92E_GROUP_2G];
30         uint8_t         ht40[R92E_GROUP_2G - 1];
31 } __packed;
32
33 struct r92e_tx_pwr_diff_2g {
34         uint8_t         ht20_ofdm;
35         struct {
36                 uint8_t ht40_ht20;
37                 uint8_t ofdm_cck;
38         } __packed      diff123[R92E_MAX_TX_COUNT - 1];
39 } __packed;
40
41 struct r92e_tx_pwr {
42         struct r92e_tx_pwr_2g           pwr_2g;
43         struct r92e_tx_pwr_diff_2g      pwr_diff_2g;
44         uint8_t                         reserved[24];
45 } __packed;
46
47 /*
48  * RTL8192EU ROM image.
49  */
50 struct r92e_rom {
51         uint8_t                 reserved1[16];
52         struct r92e_tx_pwr      tx_pwr[R92E_MAX_RF_PATH];
53         uint8_t                 channel_plan;
54         uint8_t                 crystalcap;
55 #define R92E_ROM_CRYSTALCAP_DEF         0x20
56
57         uint8_t                 thermal_meter;
58         uint8_t                 iqk_lck;
59         uint8_t                 pa_type;
60         uint8_t                 lna_type_2g;
61         uint8_t                 reserved2;
62         uint8_t                 lna_type_5g;
63         uint8_t                 reserved3;
64         uint8_t                 rf_board_opt;
65         uint8_t                 rf_feature_opt;
66         uint8_t                 rf_bt_opt;
67         uint8_t                 version;
68         uint8_t                 customer_id;
69         uint8_t                 tx_bbswing_2g;
70         uint8_t                 tx_bbswing_5g;
71         uint8_t                 tx_pwr_calib_rate;
72         uint8_t                 rf_ant_opt;
73         uint8_t                 rfe_option;
74         uint8_t                 reserved4[5];
75         uint16_t                vid;
76         uint16_t                pid;
77         uint8_t                 reserved5[3];
78         uint8_t                 macaddr[IEEE80211_ADDR_LEN];
79         uint8_t                 reserved6[2];
80         uint8_t                 string[7];      /* "Realtek" */
81         uint8_t                 reserved7[282];
82 } __packed;
83
84 _Static_assert(sizeof(struct r92e_rom) == R92E_EFUSE_MAP_LEN,
85     "R92E_EFUSE_MAP_LEN must be equal to sizeof(struct r92e_rom)!");
86
87 #endif  /* R92E_ROM_IMAGE_H */