/*- * Copyright (c) 2017 Kevin Lo * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * * $FreeBSD$ */ #ifndef R92E_ROM_IMAGE_H #define R92E_ROM_IMAGE_H #include #define R92E_DEF_TX_PWR_2G 0x2d #define R92E_DEF_TX_PWR_HT20_DIFF 0x02 #define R92E_DEF_TX_PWR_DIFF 0xfe struct r92e_tx_pwr_2g { uint8_t cck[R92E_GROUP_2G]; uint8_t ht40[R92E_GROUP_2G - 1]; } __packed; struct r92e_tx_pwr_diff_2g { uint8_t ht20_ofdm; struct { uint8_t ht40_ht20; uint8_t ofdm_cck; } __packed diff123[R92E_MAX_TX_COUNT - 1]; } __packed; struct r92e_tx_pwr { struct r92e_tx_pwr_2g pwr_2g; struct r92e_tx_pwr_diff_2g pwr_diff_2g; uint8_t reserved[24]; } __packed; /* * RTL8192EU ROM image. */ struct r92e_rom { uint8_t reserved1[16]; struct r92e_tx_pwr tx_pwr[R92E_MAX_RF_PATH]; uint8_t channel_plan; uint8_t crystalcap; #define R92E_ROM_CRYSTALCAP_DEF 0x20 uint8_t thermal_meter; uint8_t iqk_lck; uint8_t pa_type; uint8_t lna_type_2g; uint8_t reserved2; uint8_t lna_type_5g; uint8_t reserved3; uint8_t rf_board_opt; uint8_t rf_feature_opt; uint8_t rf_bt_opt; uint8_t version; uint8_t customer_id; uint8_t tx_bbswing_2g; uint8_t tx_bbswing_5g; uint8_t tx_pwr_calib_rate; uint8_t rf_ant_opt; uint8_t rfe_option; uint8_t reserved4[5]; uint16_t vid; uint16_t pid; uint8_t reserved5[3]; uint8_t macaddr[IEEE80211_ADDR_LEN]; uint8_t reserved6[2]; uint8_t string[7]; /* "Realtek" */ uint8_t reserved7[282]; } __packed; _Static_assert(sizeof(struct r92e_rom) == R92E_EFUSE_MAP_LEN, "R92E_EFUSE_MAP_LEN must be equal to sizeof(struct r92e_rom)!"); #endif /* R92E_ROM_IMAGE_H */