Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F144518670
D4274.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
4 KB
Referenced Files
None
Subscribers
None
D4274.diff
View Options
Index: head/sys/dev/usb/wlan/if_urtwn.c
===================================================================
--- head/sys/dev/usb/wlan/if_urtwn.c
+++ head/sys/dev/usb/wlan/if_urtwn.c
@@ -1707,27 +1707,22 @@
static int
urtwn_r88e_read_rom(struct urtwn_softc *sc)
{
- uint8_t *rom = sc->rom.r88e_rom;
- uint16_t addr;
- int error, i;
+ struct r88e_rom *rom = &sc->rom.r88e_rom;
+ int error;
- error = urtwn_efuse_read(sc, rom, sizeof(sc->rom.r88e_rom));
+ error = urtwn_efuse_read(sc, (uint8_t *)rom, sizeof(sc->rom.r88e_rom));
if (error != 0)
return (error);
- addr = 0x10;
- for (i = 0; i < 6; i++)
- sc->cck_tx_pwr[i] = rom[addr++];
- for (i = 0; i < 5; i++)
- sc->ht40_tx_pwr[i] = rom[addr++];
- sc->bw20_tx_pwr_diff = (rom[addr] & 0xf0) >> 4;
+ sc->bw20_tx_pwr_diff = (rom->tx_pwr_diff >> 4);
if (sc->bw20_tx_pwr_diff & 0x08)
sc->bw20_tx_pwr_diff |= 0xf0;
- sc->ofdm_tx_pwr_diff = (rom[addr] & 0xf);
+ sc->ofdm_tx_pwr_diff = (rom->tx_pwr_diff & 0xf);
if (sc->ofdm_tx_pwr_diff & 0x08)
sc->ofdm_tx_pwr_diff |= 0xf0;
- sc->regulatory = MS(rom[0xc1], R92C_ROM_RF1_REGULATORY);
- IEEE80211_ADDR_COPY(sc->sc_ic.ic_macaddr, &rom[0xd7]);
+ sc->regulatory = MS(rom->rf_board_opt, R92C_ROM_RF1_REGULATORY);
+ DPRINTF("regulatory type=%d\n", sc->regulatory);
+ IEEE80211_ADDR_COPY(sc->sc_ic.ic_macaddr, rom->macaddr);
sc->sc_rf_write = urtwn_r88e_rf_write;
sc->sc_power_on = urtwn_r88e_power_on;
@@ -3620,7 +3615,7 @@
urtwn_bb_write(sc, R92C_OFDM0_AGCCORE1(0), 0x69553420);
urtwn_ms_delay(sc);
- crystalcap = sc->rom.r88e_rom[0xb9];
+ crystalcap = sc->rom.r88e_rom.crystalcap;
if (crystalcap == 0xff)
crystalcap = 0x20;
crystalcap &= 0x3f;
@@ -4002,6 +3997,7 @@
uint16_t power[URTWN_RIDX_COUNT])
{
struct ieee80211com *ic = &sc->sc_ic;
+ struct r88e_rom *rom = &sc->rom.r88e_rom;
uint16_t cckpow, ofdmpow, bw20pow, htpow;
const struct urtwn_r88e_txpwr *base;
int ridx, chan, group;
@@ -4040,14 +4036,14 @@
}
/* Compute per-CCK rate Tx power. */
- cckpow = sc->cck_tx_pwr[group];
+ cckpow = rom->cck_tx_pwr[group];
for (ridx = URTWN_RIDX_CCK1; ridx <= URTWN_RIDX_CCK11; ridx++) {
power[ridx] += cckpow;
if (power[ridx] > R92C_MAX_TX_PWR)
power[ridx] = R92C_MAX_TX_PWR;
}
- htpow = sc->ht40_tx_pwr[group];
+ htpow = rom->ht40_tx_pwr[group];
/* Compute per-OFDM rate Tx power. */
ofdmpow = htpow + sc->ofdm_tx_pwr_diff;
Index: head/sys/dev/usb/wlan/if_urtwnreg.h
===================================================================
--- head/sys/dev/usb/wlan/if_urtwnreg.h
+++ head/sys/dev/usb/wlan/if_urtwnreg.h
@@ -953,7 +953,7 @@
uint16_t reserved3;
uint8_t usb_phy;
uint8_t reserved4[3];
- uint8_t macaddr[6];
+ uint8_t macaddr[IEEE80211_ADDR_LEN];
uint8_t string[61]; /* "Realtek" */
uint8_t subcustomer_id;
uint8_t cck_tx_pwr[R92C_MAX_CHAINS][3];
@@ -982,7 +982,37 @@
uint8_t rf_opt4;
uint8_t channel_plan;
uint8_t version;
- uint8_t curstomer_id;
+ uint8_t customer_id;
+} __packed;
+
+/*
+ * RTL8188EU ROM image.
+ */
+struct r88e_rom {
+ uint8_t reserved1[16];
+ uint8_t cck_tx_pwr[6];
+ uint8_t ht40_tx_pwr[5];
+ uint8_t tx_pwr_diff;
+ uint8_t reserved2[156];
+ uint8_t channel_plan;
+ uint8_t crystalcap;
+ uint8_t reserved3[7];
+ uint8_t rf_board_opt;
+ uint8_t rf_feature_opt;
+ uint8_t rf_bt_opt;
+ uint8_t version;
+ uint8_t customer_id;
+ uint8_t reserved4[3];
+ uint8_t rf_ant_opt;
+ uint8_t reserved5[6];
+ uint16_t vid;
+ uint16_t pid;
+ uint8_t usb_opt;
+ uint8_t reserved6[2];
+ uint8_t macaddr[IEEE80211_ADDR_LEN];
+ uint8_t reserved7[2];
+ uint8_t string[33]; /* "realtek 802.11n NIC" */
+ uint8_t reserved8[256];
} __packed;
#define URTWN_EFUSE_MAX_LEN 512
Index: head/sys/dev/usb/wlan/if_urtwnvar.h
===================================================================
--- head/sys/dev/usb/wlan/if_urtwnvar.h
+++ head/sys/dev/usb/wlan/if_urtwnvar.h
@@ -141,7 +141,7 @@
union urtwn_rom {
struct r92c_rom r92c_rom;
- uint8_t r88e_rom[URTWN_EFUSE_MAX_LEN];
+ struct r88e_rom r88e_rom;
};
struct urtwn_softc {
@@ -176,6 +176,8 @@
uint8_t board_type;
uint8_t regulatory;
uint8_t pa_setting;
+ int8_t ofdm_tx_pwr_diff;
+ int8_t bw20_tx_pwr_diff;
int avg_pwdb;
int thcal_state;
int thcal_lctemp;
@@ -199,10 +201,6 @@
void *fw_virtaddr;
union urtwn_rom rom;
- uint8_t cck_tx_pwr[6];
- uint8_t ht40_tx_pwr[5];
- int8_t bw20_tx_pwr_diff;
- int8_t ofdm_tx_pwr_diff;
uint16_t last_rom_addr;
struct callout sc_watchdog_ch;
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Tue, Feb 10, 2:52 AM (2 h, 22 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28611298
Default Alt Text
D4274.diff (4 KB)
Attached To
Mode
D4274: urtwn(4): add ROM structure for RTL8188EU
Attached
Detach File
Event Timeline
Log In to Comment