]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - drivers/net/wireless/ralink/rt2x00/rt2800lib.c
Merge tag 'uuid-for-4.13-2' of git://git.infradead.org/users/hch/uuid
[linux.git] / drivers / net / wireless / ralink / rt2x00 / rt2800lib.c
index d11c7b210e8133174b59688994f0c1e9c22c09ad..0b75def39c6c4179ae157316f5d2b371775ae48b 100644 (file)
@@ -110,10 +110,10 @@ static void rt2800_bbp_write(struct rt2x00_dev *rt2x00dev,
        mutex_unlock(&rt2x00dev->csr_mutex);
 }
 
-static void rt2800_bbp_read(struct rt2x00_dev *rt2x00dev,
-                           const unsigned int word, u8 *value)
+static u8 rt2800_bbp_read(struct rt2x00_dev *rt2x00dev, const unsigned int word)
 {
        u32 reg;
+       u8 value;
 
        mutex_lock(&rt2x00dev->csr_mutex);
 
@@ -137,9 +137,11 @@ static void rt2800_bbp_read(struct rt2x00_dev *rt2x00dev,
                WAIT_FOR_BBP(rt2x00dev, &reg);
        }
 
-       *value = rt2x00_get_field32(reg, BBP_CSR_CFG_VALUE);
+       value = rt2x00_get_field32(reg, BBP_CSR_CFG_VALUE);
 
        mutex_unlock(&rt2x00dev->csr_mutex);
+
+       return value;
 }
 
 static void rt2800_rfcsr_write(struct rt2x00_dev *rt2x00dev,
@@ -203,10 +205,11 @@ static void rt2800_rfcsr_write_dccal(struct rt2x00_dev *rt2x00dev,
        rt2800_rfcsr_write_bank(rt2x00dev, 7, reg, value);
 }
 
-static void rt2800_rfcsr_read(struct rt2x00_dev *rt2x00dev,
-                             const unsigned int word, u8 *value)
+static u8 rt2800_rfcsr_read(struct rt2x00_dev *rt2x00dev,
+                           const unsigned int word)
 {
        u32 reg;
+       u8 value;
 
        mutex_lock(&rt2x00dev->csr_mutex);
 
@@ -232,7 +235,7 @@ static void rt2800_rfcsr_read(struct rt2x00_dev *rt2x00dev,
                        WAIT_FOR_RFCSR_MT7620(rt2x00dev, &reg);
                }
 
-               *value = rt2x00_get_field32(reg, RF_CSR_CFG_DATA_MT7620);
+               value = rt2x00_get_field32(reg, RF_CSR_CFG_DATA_MT7620);
                break;
 
        default:
@@ -247,17 +250,19 @@ static void rt2800_rfcsr_read(struct rt2x00_dev *rt2x00dev,
                        WAIT_FOR_RFCSR(rt2x00dev, &reg);
                }
 
-               *value = rt2x00_get_field32(reg, RF_CSR_CFG_DATA);
+               value = rt2x00_get_field32(reg, RF_CSR_CFG_DATA);
                break;
        }
 
        mutex_unlock(&rt2x00dev->csr_mutex);
+
+       return value;
 }
 
-static void rt2800_rfcsr_read_bank(struct rt2x00_dev *rt2x00dev, const u8 bank,
-                                  const unsigned int reg, u8 *value)
+static u8 rt2800_rfcsr_read_bank(struct rt2x00_dev *rt2x00dev, const u8 bank,
+                                const unsigned int reg)
 {
-       rt2800_rfcsr_read(rt2x00dev, (reg | (bank << 6)), value);
+       return rt2800_rfcsr_read(rt2x00dev, (reg | (bank << 6)));
 }
 
 static void rt2800_rf_write(struct rt2x00_dev *rt2x00dev,
@@ -405,13 +410,13 @@ static void *rt2800_eeprom_addr(struct rt2x00_dev *rt2x00dev,
        return rt2x00_eeprom_addr(rt2x00dev, index);
 }
 
-static void rt2800_eeprom_read(struct rt2x00_dev *rt2x00dev,
-                              const enum rt2800_eeprom_word word, u16 *data)
+static u16 rt2800_eeprom_read(struct rt2x00_dev *rt2x00dev,
+                             const enum rt2800_eeprom_word word)
 {
        unsigned int index;
 
        index = rt2800_eeprom_word_index(rt2x00dev, word);
-       rt2x00_eeprom_read(rt2x00dev, index, data);
+       return rt2x00_eeprom_read(rt2x00dev, index);
 }
 
 static void rt2800_eeprom_write(struct rt2x00_dev *rt2x00dev,
@@ -423,15 +428,14 @@ static void rt2800_eeprom_write(struct rt2x00_dev *rt2x00dev,
        rt2x00_eeprom_write(rt2x00dev, index, data);
 }
 
-static void rt2800_eeprom_read_from_array(struct rt2x00_dev *rt2x00dev,
-                                         const enum rt2800_eeprom_word array,
-                                         unsigned int offset,
-                                         u16 *data)
+static u16 rt2800_eeprom_read_from_array(struct rt2x00_dev *rt2x00dev,
+                                        const enum rt2800_eeprom_word array,
+                                        unsigned int offset)
 {
        unsigned int index;
 
        index = rt2800_eeprom_word_index(rt2x00dev, array);
-       rt2x00_eeprom_read(rt2x00dev, index + offset, data);
+       return rt2x00_eeprom_read(rt2x00dev, index + offset);
 }
 
 static int rt2800_enable_wlan_rt3290(struct rt2x00_dev *rt2x00dev)
@@ -439,7 +443,7 @@ static int rt2800_enable_wlan_rt3290(struct rt2x00_dev *rt2x00dev)
        u32 reg;
        int i, count;
 
-       rt2800_register_read(rt2x00dev, WLAN_FUN_CTRL, &reg);
+       reg = rt2800_register_read(rt2x00dev, WLAN_FUN_CTRL);
        rt2x00_set_field32(&reg, WLAN_GPIO_OUT_OE_BIT_ALL, 0xff);
        rt2x00_set_field32(&reg, FRC_WL_ANT_SET, 1);
        rt2x00_set_field32(&reg, WLAN_CLK_EN, 0);
@@ -454,7 +458,7 @@ static int rt2800_enable_wlan_rt3290(struct rt2x00_dev *rt2x00dev)
                 * Check PLL_LD & XTAL_RDY.
                 */
                for (i = 0; i < REGISTER_BUSY_COUNT; i++) {
-                       rt2800_register_read(rt2x00dev, CMB_CTRL, &reg);
+                       reg = rt2800_register_read(rt2x00dev, CMB_CTRL);
                        if (rt2x00_get_field32(reg, PLL_LD) &&
                            rt2x00_get_field32(reg, XTAL_RDY))
                                break;
@@ -477,7 +481,7 @@ static int rt2800_enable_wlan_rt3290(struct rt2x00_dev *rt2x00dev)
                        count = 0;
                }
 
-               rt2800_register_read(rt2x00dev, WLAN_FUN_CTRL, &reg);
+               reg = rt2800_register_read(rt2x00dev, WLAN_FUN_CTRL);
                rt2x00_set_field32(&reg, PCIE_APP0_CLK_REQ, 0);
                rt2x00_set_field32(&reg, WLAN_CLK_EN, 1);
                rt2x00_set_field32(&reg, WLAN_RESET, 1);
@@ -532,7 +536,7 @@ int rt2800_wait_csr_ready(struct rt2x00_dev *rt2x00dev)
        u32 reg;
 
        for (i = 0; i < REGISTER_BUSY_COUNT; i++) {
-               rt2800_register_read(rt2x00dev, MAC_CSR0, &reg);
+               reg = rt2800_register_read(rt2x00dev, MAC_CSR0);
                if (reg && reg != ~0)
                        return 0;
                msleep(1);
@@ -553,7 +557,7 @@ int rt2800_wait_wpdma_ready(struct rt2x00_dev *rt2x00dev)
         * before timing out.
         */
        for (i = 0; i < REGISTER_BUSY_COUNT; i++) {
-               rt2800_register_read(rt2x00dev, WPDMA_GLO_CFG, &reg);
+               reg = rt2800_register_read(rt2x00dev, WPDMA_GLO_CFG);
                if (!rt2x00_get_field32(reg, WPDMA_GLO_CFG_TX_DMA_BUSY) &&
                    !rt2x00_get_field32(reg, WPDMA_GLO_CFG_RX_DMA_BUSY))
                        return 0;
@@ -570,7 +574,7 @@ void rt2800_disable_wpdma(struct rt2x00_dev *rt2x00dev)
 {
        u32 reg;
 
-       rt2800_register_read(rt2x00dev, WPDMA_GLO_CFG, &reg);
+       reg = rt2800_register_read(rt2x00dev, WPDMA_GLO_CFG);
        rt2x00_set_field32(&reg, WPDMA_GLO_CFG_ENABLE_TX_DMA, 0);
        rt2x00_set_field32(&reg, WPDMA_GLO_CFG_TX_DMA_BUSY, 0);
        rt2x00_set_field32(&reg, WPDMA_GLO_CFG_ENABLE_RX_DMA, 0);
@@ -720,7 +724,7 @@ int rt2800_load_firmware(struct rt2x00_dev *rt2x00dev,
                    rt2x00_rt(rt2x00dev, RT3572) ||
                    rt2x00_rt(rt2x00dev, RT5390) ||
                    rt2x00_rt(rt2x00dev, RT5392)) {
-                       rt2800_register_read(rt2x00dev, AUX_CTRL, &reg);
+                       reg = rt2800_register_read(rt2x00dev, AUX_CTRL);
                        rt2x00_set_field32(&reg, AUX_CTRL_FORCE_PCIE_CLK, 1);
                        rt2x00_set_field32(&reg, AUX_CTRL_WAKE_PCIE_EN, 1);
                        rt2800_register_write(rt2x00dev, AUX_CTRL, reg);
@@ -739,7 +743,7 @@ int rt2800_load_firmware(struct rt2x00_dev *rt2x00dev,
         * Wait for device to stabilize.
         */
        for (i = 0; i < REGISTER_BUSY_COUNT; i++) {
-               rt2800_register_read(rt2x00dev, PBF_SYS_CTRL, &reg);
+               reg = rt2800_register_read(rt2x00dev, PBF_SYS_CTRL);
                if (rt2x00_get_field32(reg, PBF_SYS_CTRL_READY))
                        break;
                msleep(1);
@@ -781,7 +785,7 @@ void rt2800_write_tx_data(struct queue_entry *entry,
        /*
         * Initialize TX Info descriptor
         */
-       rt2x00_desc_read(txwi, 0, &word);
+       word = rt2x00_desc_read(txwi, 0);
        rt2x00_set_field32(&word, TXWI_W0_FRAG,
                           test_bit(ENTRY_TXD_MORE_FRAG, &txdesc->flags));
        rt2x00_set_field32(&word, TXWI_W0_MIMO_PS,
@@ -803,7 +807,7 @@ void rt2800_write_tx_data(struct queue_entry *entry,
        rt2x00_set_field32(&word, TXWI_W0_PHYMODE, txdesc->rate_mode);
        rt2x00_desc_write(txwi, 0, word);
 
-       rt2x00_desc_read(txwi, 1, &word);
+       word = rt2x00_desc_read(txwi, 1);
        rt2x00_set_field32(&word, TXWI_W1_ACK,
                           test_bit(ENTRY_TXD_ACK, &txdesc->flags));
        rt2x00_set_field32(&word, TXWI_W1_NSEQ,
@@ -843,16 +847,16 @@ static int rt2800_agc_to_rssi(struct rt2x00_dev *rt2x00dev, u32 rxwi_w2)
        u8 offset2;
 
        if (rt2x00dev->curr_band == NL80211_BAND_2GHZ) {
-               rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_BG, &eeprom);
+               eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_BG);
                offset0 = rt2x00_get_field16(eeprom, EEPROM_RSSI_BG_OFFSET0);
                offset1 = rt2x00_get_field16(eeprom, EEPROM_RSSI_BG_OFFSET1);
-               rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_BG2, &eeprom);
+               eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_BG2);
                offset2 = rt2x00_get_field16(eeprom, EEPROM_RSSI_BG2_OFFSET2);
        } else {
-               rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_A, &eeprom);
+               eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_A);
                offset0 = rt2x00_get_field16(eeprom, EEPROM_RSSI_A_OFFSET0);
                offset1 = rt2x00_get_field16(eeprom, EEPROM_RSSI_A_OFFSET1);
-               rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_A2, &eeprom);
+               eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_A2);
                offset2 = rt2x00_get_field16(eeprom, EEPROM_RSSI_A2_OFFSET2);
        }
 
@@ -881,12 +885,12 @@ void rt2800_process_rxwi(struct queue_entry *entry,
        __le32 *rxwi = (__le32 *) entry->skb->data;
        u32 word;
 
-       rt2x00_desc_read(rxwi, 0, &word);
+       word = rt2x00_desc_read(rxwi, 0);
 
        rxdesc->cipher = rt2x00_get_field32(word, RXWI_W0_UDF);
        rxdesc->size = rt2x00_get_field32(word, RXWI_W0_MPDU_TOTAL_BYTE_COUNT);
 
-       rt2x00_desc_read(rxwi, 1, &word);
+       word = rt2x00_desc_read(rxwi, 1);
 
        if (rt2x00_get_field32(word, RXWI_W1_SHORT_GI))
                rxdesc->enc_flags |= RX_ENC_FLAG_SHORT_GI;
@@ -907,7 +911,7 @@ void rt2800_process_rxwi(struct queue_entry *entry,
        if (rxdesc->rate_mode == RATE_MODE_CCK)
                rxdesc->signal &= ~0x8;
 
-       rt2x00_desc_read(rxwi, 2, &word);
+       word = rt2x00_desc_read(rxwi, 2);
 
        /*
         * Convert descriptor AGC value to RSSI value.
@@ -968,7 +972,7 @@ void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi,
         * Obtain the status about this packet.
         */
        txdesc.flags = 0;
-       rt2x00_desc_read(txwi, 0, &word);
+       word = rt2x00_desc_read(txwi, 0);
 
        mcs = rt2x00_get_field32(word, TXWI_W0_MCS);
        ampdu = rt2x00_get_field32(word, TXWI_W0_AMPDU);
@@ -1093,7 +1097,7 @@ static void rt2800_update_beacons_setup(struct rt2x00_dev *rt2x00dev)
        /*
         * H/W sends up to MAC_BSSID_DW1_BSS_BCN_NUM + 1 consecutive beacons.
         */
-       rt2800_register_read(rt2x00dev, MAC_BSSID_DW1, &bssid_dw1);
+       bssid_dw1 = rt2800_register_read(rt2x00dev, MAC_BSSID_DW1);
        rt2x00_set_field32(&bssid_dw1, MAC_BSSID_DW1_BSS_BCN_NUM,
                           bcn_num > 0 ? bcn_num - 1 : 0);
        rt2800_register_write(rt2x00dev, MAC_BSSID_DW1, bssid_dw1);
@@ -1112,7 +1116,7 @@ void rt2800_write_beacon(struct queue_entry *entry, struct txentry_desc *txdesc)
         * Disable beaconing while we are reloading the beacon data,
         * otherwise we might be sending out invalid data.
         */
-       rt2800_register_read(rt2x00dev, BCN_TIME_CFG, &reg);
+       reg = rt2800_register_read(rt2x00dev, BCN_TIME_CFG);
        orig_reg = reg;
        rt2x00_set_field32(&reg, BCN_TIME_CFG_BEACON_GEN, 0);
        rt2800_register_write(rt2x00dev, BCN_TIME_CFG, reg);
@@ -1202,7 +1206,7 @@ void rt2800_clear_beacon(struct queue_entry *entry)
         * Disable beaconing while we are reloading the beacon data,
         * otherwise we might be sending out invalid data.
         */
-       rt2800_register_read(rt2x00dev, BCN_TIME_CFG, &orig_reg);
+       orig_reg = rt2800_register_read(rt2x00dev, BCN_TIME_CFG);
        reg = orig_reg;
        rt2x00_set_field32(&reg, BCN_TIME_CFG_BEACON_GEN, 0);
        rt2800_register_write(rt2x00dev, BCN_TIME_CFG, reg);
@@ -1275,10 +1279,10 @@ int rt2800_rfkill_poll(struct rt2x00_dev *rt2x00dev)
        u32 reg;
 
        if (rt2x00_rt(rt2x00dev, RT3290)) {
-               rt2800_register_read(rt2x00dev, WLAN_FUN_CTRL, &reg);
+               reg = rt2800_register_read(rt2x00dev, WLAN_FUN_CTRL);
                return rt2x00_get_field32(reg, WLAN_GPIO_IN_BIT0);
        } else {
-               rt2800_register_read(rt2x00dev, GPIO_CTRL, &reg);
+               reg = rt2800_register_read(rt2x00dev, GPIO_CTRL);
                return rt2x00_get_field32(reg, GPIO_CTRL_VAL2);
        }
 }
@@ -1303,7 +1307,7 @@ static void rt2800_brightness_set(struct led_classdev *led_cdev,
 
        /* Check for SoC (SOC devices don't support MCU requests) */
        if (rt2x00_is_soc(led->rt2x00dev)) {
-               rt2800_register_read(led->rt2x00dev, LED_CFG, &reg);
+               reg = rt2800_register_read(led->rt2x00dev, LED_CFG);
 
                /* Set LED Polarity */
                rt2x00_set_field32(&reg, LED_CFG_LED_POLAR, polarity);
@@ -1392,7 +1396,7 @@ static void rt2800_config_wcid_attr_bssidx(struct rt2x00_dev *rt2x00dev,
         * The BSS Idx numbers is split in a main value of 3 bits,
         * and a extended field for adding one additional bit to the value.
         */
-       rt2800_register_read(rt2x00dev, offset, &reg);
+       reg = rt2800_register_read(rt2x00dev, offset);
        rt2x00_set_field32(&reg, MAC_WCID_ATTRIBUTE_BSS_IDX, (bssidx & 0x7));
        rt2x00_set_field32(&reg, MAC_WCID_ATTRIBUTE_BSS_IDX_EXT,
                           (bssidx & 0x8) >> 3);
@@ -1410,7 +1414,7 @@ static void rt2800_config_wcid_attr_cipher(struct rt2x00_dev *rt2x00dev,
        offset = MAC_WCID_ATTR_ENTRY(key->hw_key_idx);
 
        if (crypto->cmd == SET_KEY) {
-               rt2800_register_read(rt2x00dev, offset, &reg);
+               reg = rt2800_register_read(rt2x00dev, offset);
                rt2x00_set_field32(&reg, MAC_WCID_ATTRIBUTE_KEYTAB,
                                   !!(key->flags & IEEE80211_KEY_FLAG_PAIRWISE));
                /*
@@ -1426,7 +1430,7 @@ static void rt2800_config_wcid_attr_cipher(struct rt2x00_dev *rt2x00dev,
                rt2800_register_write(rt2x00dev, offset, reg);
        } else {
                /* Delete the cipher without touching the bssidx */
-               rt2800_register_read(rt2x00dev, offset, &reg);
+               reg = rt2800_register_read(rt2x00dev, offset);
                rt2x00_set_field32(&reg, MAC_WCID_ATTRIBUTE_KEYTAB, 0);
                rt2x00_set_field32(&reg, MAC_WCID_ATTRIBUTE_CIPHER, 0);
                rt2x00_set_field32(&reg, MAC_WCID_ATTRIBUTE_CIPHER_EXT, 0);
@@ -1482,7 +1486,7 @@ int rt2800_config_shared_key(struct rt2x00_dev *rt2x00dev,
 
        offset = SHARED_KEY_MODE_ENTRY(key->hw_key_idx / 8);
 
-       rt2800_register_read(rt2x00dev, offset, &reg);
+       reg = rt2800_register_read(rt2x00dev, offset);
        rt2x00_set_field32(&reg, field,
                           (crypto->cmd == SET_KEY) * crypto->cipher);
        rt2800_register_write(rt2x00dev, offset, reg);
@@ -1548,7 +1552,7 @@ static void rt2800_set_max_psdu_len(struct rt2x00_dev *rt2x00dev)
 
        max_psdu = min(drv_data->max_psdu, i);
 
-       rt2800_register_read(rt2x00dev, MAX_LEN_CFG, &reg);
+       reg = rt2800_register_read(rt2x00dev, MAX_LEN_CFG);
        rt2x00_set_field32(&reg, MAX_LEN_CFG_MAX_PSDU, max_psdu);
        rt2800_register_write(rt2x00dev, MAX_LEN_CFG, reg);
 }
@@ -1640,7 +1644,7 @@ void rt2800_config_filter(struct rt2x00_dev *rt2x00dev,
         * and broadcast frames will always be accepted since
         * there is no filter for it at this time.
         */
-       rt2800_register_read(rt2x00dev, RX_FILTER_CFG, &reg);
+       reg = rt2800_register_read(rt2x00dev, RX_FILTER_CFG);
        rt2x00_set_field32(&reg, RX_FILTER_CFG_DROP_CRC_ERROR,
                           !(filter_flags & FIF_FCSFAIL));
        rt2x00_set_field32(&reg, RX_FILTER_CFG_DROP_PHY_ERROR,
@@ -1684,7 +1688,7 @@ void rt2800_config_intf(struct rt2x00_dev *rt2x00dev, struct rt2x00_intf *intf,
                /*
                 * Enable synchronisation.
                 */
-               rt2800_register_read(rt2x00dev, BCN_TIME_CFG, &reg);
+               reg = rt2800_register_read(rt2x00dev, BCN_TIME_CFG);
                rt2x00_set_field32(&reg, BCN_TIME_CFG_TSF_SYNC, conf->sync);
                rt2800_register_write(rt2x00dev, BCN_TIME_CFG, reg);
 
@@ -1692,14 +1696,14 @@ void rt2800_config_intf(struct rt2x00_dev *rt2x00dev, struct rt2x00_intf *intf,
                        /*
                         * Tune beacon queue transmit parameters for AP mode
                         */
-                       rt2800_register_read(rt2x00dev, TBTT_SYNC_CFG, &reg);
+                       reg = rt2800_register_read(rt2x00dev, TBTT_SYNC_CFG);
                        rt2x00_set_field32(&reg, TBTT_SYNC_CFG_BCN_CWMIN, 0);
                        rt2x00_set_field32(&reg, TBTT_SYNC_CFG_BCN_AIFSN, 1);
                        rt2x00_set_field32(&reg, TBTT_SYNC_CFG_BCN_EXP_WIN, 32);
                        rt2x00_set_field32(&reg, TBTT_SYNC_CFG_TBTT_ADJUST, 0);
                        rt2800_register_write(rt2x00dev, TBTT_SYNC_CFG, reg);
                } else {
-                       rt2800_register_read(rt2x00dev, TBTT_SYNC_CFG, &reg);
+                       reg = rt2800_register_read(rt2x00dev, TBTT_SYNC_CFG);
                        rt2x00_set_field32(&reg, TBTT_SYNC_CFG_BCN_CWMIN, 4);
                        rt2x00_set_field32(&reg, TBTT_SYNC_CFG_BCN_AIFSN, 2);
                        rt2x00_set_field32(&reg, TBTT_SYNC_CFG_BCN_EXP_WIN, 32);
@@ -1818,22 +1822,22 @@ static void rt2800_config_ht_opmode(struct rt2x00_dev *rt2x00dev,
                gf20_mode = gf40_mode = 1;
 
        /* Update HT protection config */
-       rt2800_register_read(rt2x00dev, MM20_PROT_CFG, &reg);
+       reg = rt2800_register_read(rt2x00dev, MM20_PROT_CFG);
        rt2x00_set_field32(&reg, MM20_PROT_CFG_PROTECT_RATE, mm20_rate);
        rt2x00_set_field32(&reg, MM20_PROT_CFG_PROTECT_CTRL, mm20_mode);
        rt2800_register_write(rt2x00dev, MM20_PROT_CFG, reg);
 
-       rt2800_register_read(rt2x00dev, MM40_PROT_CFG, &reg);
+       reg = rt2800_register_read(rt2x00dev, MM40_PROT_CFG);
        rt2x00_set_field32(&reg, MM40_PROT_CFG_PROTECT_RATE, mm40_rate);
        rt2x00_set_field32(&reg, MM40_PROT_CFG_PROTECT_CTRL, mm40_mode);
        rt2800_register_write(rt2x00dev, MM40_PROT_CFG, reg);
 
-       rt2800_register_read(rt2x00dev, GF20_PROT_CFG, &reg);
+       reg = rt2800_register_read(rt2x00dev, GF20_PROT_CFG);
        rt2x00_set_field32(&reg, GF20_PROT_CFG_PROTECT_RATE, gf20_rate);
        rt2x00_set_field32(&reg, GF20_PROT_CFG_PROTECT_CTRL, gf20_mode);
        rt2800_register_write(rt2x00dev, GF20_PROT_CFG, reg);
 
-       rt2800_register_read(rt2x00dev, GF40_PROT_CFG, &reg);
+       reg = rt2800_register_read(rt2x00dev, GF40_PROT_CFG);
        rt2x00_set_field32(&reg, GF40_PROT_CFG_PROTECT_RATE, gf40_rate);
        rt2x00_set_field32(&reg, GF40_PROT_CFG_PROTECT_CTRL, gf40_mode);
        rt2800_register_write(rt2x00dev, GF40_PROT_CFG, reg);
@@ -1845,14 +1849,14 @@ void rt2800_config_erp(struct rt2x00_dev *rt2x00dev, struct rt2x00lib_erp *erp,
        u32 reg;
 
        if (changed & BSS_CHANGED_ERP_PREAMBLE) {
-               rt2800_register_read(rt2x00dev, AUTO_RSP_CFG, &reg);
+               reg = rt2800_register_read(rt2x00dev, AUTO_RSP_CFG);
                rt2x00_set_field32(&reg, AUTO_RSP_CFG_AR_PREAMBLE,
                                   !!erp->short_preamble);
                rt2800_register_write(rt2x00dev, AUTO_RSP_CFG, reg);
        }
 
        if (changed & BSS_CHANGED_ERP_CTS_PROT) {
-               rt2800_register_read(rt2x00dev, OFDM_PROT_CFG, &reg);
+               reg = rt2800_register_read(rt2x00dev, OFDM_PROT_CFG);
                rt2x00_set_field32(&reg, OFDM_PROT_CFG_PROTECT_CTRL,
                                   erp->cts_protection ? 2 : 0);
                rt2800_register_write(rt2x00dev, OFDM_PROT_CFG, reg);
@@ -1865,18 +1869,18 @@ void rt2800_config_erp(struct rt2x00_dev *rt2x00dev, struct rt2x00lib_erp *erp,
        }
 
        if (changed & BSS_CHANGED_ERP_SLOT) {
-               rt2800_register_read(rt2x00dev, BKOFF_SLOT_CFG, &reg);
+               reg = rt2800_register_read(rt2x00dev, BKOFF_SLOT_CFG);
                rt2x00_set_field32(&reg, BKOFF_SLOT_CFG_SLOT_TIME,
                                   erp->slot_time);
                rt2800_register_write(rt2x00dev, BKOFF_SLOT_CFG, reg);
 
-               rt2800_register_read(rt2x00dev, XIFS_TIME_CFG, &reg);
+               reg = rt2800_register_read(rt2x00dev, XIFS_TIME_CFG);
                rt2x00_set_field32(&reg, XIFS_TIME_CFG_EIFS, erp->eifs);
                rt2800_register_write(rt2x00dev, XIFS_TIME_CFG, reg);
        }
 
        if (changed & BSS_CHANGED_BEACON_INT) {
-               rt2800_register_read(rt2x00dev, BCN_TIME_CFG, &reg);
+               reg = rt2800_register_read(rt2x00dev, BCN_TIME_CFG);
                rt2x00_set_field32(&reg, BCN_TIME_CFG_BEACON_INTERVAL,
                                   erp->beacon_int * 16);
                rt2800_register_write(rt2x00dev, BCN_TIME_CFG, reg);
@@ -1893,7 +1897,7 @@ static void rt2800_config_3572bt_ant(struct rt2x00_dev *rt2x00dev)
        u16 eeprom;
        u8 led_ctrl, led_g_mode, led_r_mode;
 
-       rt2800_register_read(rt2x00dev, GPIO_SWITCH, &reg);
+       reg = rt2800_register_read(rt2x00dev, GPIO_SWITCH);
        if (rt2x00dev->curr_band == NL80211_BAND_5GHZ) {
                rt2x00_set_field32(&reg, GPIO_SWITCH_0, 1);
                rt2x00_set_field32(&reg, GPIO_SWITCH_1, 1);
@@ -1903,12 +1907,12 @@ static void rt2800_config_3572bt_ant(struct rt2x00_dev *rt2x00dev)
        }
        rt2800_register_write(rt2x00dev, GPIO_SWITCH, reg);
 
-       rt2800_register_read(rt2x00dev, LED_CFG, &reg);
+       reg = rt2800_register_read(rt2x00dev, LED_CFG);
        led_g_mode = rt2x00_get_field32(reg, LED_CFG_LED_POLAR) ? 3 : 0;
        led_r_mode = rt2x00_get_field32(reg, LED_CFG_LED_POLAR) ? 0 : 3;
        if (led_g_mode != rt2x00_get_field32(reg, LED_CFG_G_LED_MODE) ||
            led_r_mode != rt2x00_get_field32(reg, LED_CFG_R_LED_MODE)) {
-               rt2800_eeprom_read(rt2x00dev, EEPROM_FREQ, &eeprom);
+               eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_FREQ);
                led_ctrl = rt2x00_get_field16(eeprom, EEPROM_FREQ_LED_MODE);
                if (led_ctrl == 0 || led_ctrl > 0x40) {
                        rt2x00_set_field32(&reg, LED_CFG_G_LED_MODE, led_g_mode);
@@ -1929,14 +1933,14 @@ static void rt2800_set_ant_diversity(struct rt2x00_dev *rt2x00dev,
        u8 gpio_bit3 = (ant == ANTENNA_A) ? 0 : 1;
 
        if (rt2x00_is_pci(rt2x00dev)) {
-               rt2800_register_read(rt2x00dev, E2PROM_CSR, &reg);
+               reg = rt2800_register_read(rt2x00dev, E2PROM_CSR);
                rt2x00_set_field32(&reg, E2PROM_CSR_DATA_CLOCK, eesk_pin);
                rt2800_register_write(rt2x00dev, E2PROM_CSR, reg);
        } else if (rt2x00_is_usb(rt2x00dev))
                rt2800_mcu_request(rt2x00dev, MCU_ANT_SELECT, 0xff,
                                   eesk_pin, 0);
 
-       rt2800_register_read(rt2x00dev, GPIO_CTRL, &reg);
+       reg = rt2800_register_read(rt2x00dev, GPIO_CTRL);
        rt2x00_set_field32(&reg, GPIO_CTRL_DIR3, 0);
        rt2x00_set_field32(&reg, GPIO_CTRL_VAL3, gpio_bit3);
        rt2800_register_write(rt2x00dev, GPIO_CTRL, reg);
@@ -1948,8 +1952,8 @@ void rt2800_config_ant(struct rt2x00_dev *rt2x00dev, struct antenna_setup *ant)
        u8 r3;
        u16 eeprom;
 
-       rt2800_bbp_read(rt2x00dev, 1, &r1);
-       rt2800_bbp_read(rt2x00dev, 3, &r3);
+       r1 = rt2800_bbp_read(rt2x00dev, 1);
+       r3 = rt2800_bbp_read(rt2x00dev, 3);
 
        if (rt2x00_rt(rt2x00dev, RT3572) &&
            rt2x00_has_cap_bt_coexist(rt2x00dev))
@@ -1983,8 +1987,8 @@ void rt2800_config_ant(struct rt2x00_dev *rt2x00dev, struct antenna_setup *ant)
                    rt2x00_rt(rt2x00dev, RT3090) ||
                    rt2x00_rt(rt2x00dev, RT3352) ||
                    rt2x00_rt(rt2x00dev, RT3390)) {
-                       rt2800_eeprom_read(rt2x00dev,
-                                          EEPROM_NIC_CONF1, &eeprom);
+                       eeprom = rt2800_eeprom_read(rt2x00dev,
+                                                   EEPROM_NIC_CONF1);
                        if (rt2x00_get_field16(eeprom,
                                                EEPROM_NIC_CONF1_ANT_DIVERSITY))
                                rt2800_set_ant_diversity(rt2x00dev,
@@ -2027,28 +2031,28 @@ static void rt2800_config_lna_gain(struct rt2x00_dev *rt2x00dev,
        short lna_gain;
 
        if (libconf->rf.channel <= 14) {
-               rt2800_eeprom_read(rt2x00dev, EEPROM_LNA, &eeprom);
+               eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_LNA);
                lna_gain = rt2x00_get_field16(eeprom, EEPROM_LNA_BG);
        } else if (libconf->rf.channel <= 64) {
-               rt2800_eeprom_read(rt2x00dev, EEPROM_LNA, &eeprom);
+               eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_LNA);
                lna_gain = rt2x00_get_field16(eeprom, EEPROM_LNA_A0);
        } else if (libconf->rf.channel <= 128) {
                if (rt2x00_rt(rt2x00dev, RT3593)) {
-                       rt2800_eeprom_read(rt2x00dev, EEPROM_EXT_LNA2, &eeprom);
+                       eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_EXT_LNA2);
                        lna_gain = rt2x00_get_field16(eeprom,
                                                      EEPROM_EXT_LNA2_A1);
                } else {
-                       rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_BG2, &eeprom);
+                       eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_BG2);
                        lna_gain = rt2x00_get_field16(eeprom,
                                                      EEPROM_RSSI_BG2_LNA_A1);
                }
        } else {
                if (rt2x00_rt(rt2x00dev, RT3593)) {
-                       rt2800_eeprom_read(rt2x00dev, EEPROM_EXT_LNA2, &eeprom);
+                       eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_EXT_LNA2);
                        lna_gain = rt2x00_get_field16(eeprom,
                                                      EEPROM_EXT_LNA2_A2);
                } else {
-                       rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_A2, &eeprom);
+                       eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_A2);
                        lna_gain = rt2x00_get_field16(eeprom,
                                                      EEPROM_RSSI_A2_LNA_A2);
                }
@@ -2072,7 +2076,7 @@ static void rt2800_freq_cal_mode1(struct rt2x00_dev *rt2x00dev)
        freq_offset = rt2x00_get_field8(rt2x00dev->freq_offset, RFCSR17_CODE);
        freq_offset = min_t(u8, freq_offset, FREQ_OFFSET_BOUND);
 
-       rt2800_rfcsr_read(rt2x00dev, 17, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 17);
        prev_rfcsr = rfcsr;
 
        rt2x00_set_field8(&rfcsr, RFCSR17_CODE, freq_offset);
@@ -2174,23 +2178,23 @@ static void rt2800_config_channel_rf3xxx(struct rt2x00_dev *rt2x00dev,
 
        rt2800_rfcsr_write(rt2x00dev, 2, rf->rf1);
 
-       rt2800_rfcsr_read(rt2x00dev, 3, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 3);
        rt2x00_set_field8(&rfcsr, RFCSR3_K, rf->rf3);
        rt2800_rfcsr_write(rt2x00dev, 3, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 6, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 6);
        rt2x00_set_field8(&rfcsr, RFCSR6_R1, rf->rf2);
        rt2800_rfcsr_write(rt2x00dev, 6, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 12, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 12);
        rt2x00_set_field8(&rfcsr, RFCSR12_TX_POWER, info->default_power1);
        rt2800_rfcsr_write(rt2x00dev, 12, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 13, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 13);
        rt2x00_set_field8(&rfcsr, RFCSR13_TX_POWER, info->default_power2);
        rt2800_rfcsr_write(rt2x00dev, 13, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 1, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 1);
        rt2x00_set_field8(&rfcsr, RFCSR1_RX0_PD, 0);
        rt2x00_set_field8(&rfcsr, RFCSR1_RX1_PD,
                          rt2x00dev->default_ant.rx_chain_num <= 1);
@@ -2203,7 +2207,7 @@ static void rt2800_config_channel_rf3xxx(struct rt2x00_dev *rt2x00dev,
                          rt2x00dev->default_ant.tx_chain_num <= 2);
        rt2800_rfcsr_write(rt2x00dev, 1, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 23, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 23);
        rt2x00_set_field8(&rfcsr, RFCSR23_FREQ_OFFSET, rt2x00dev->freq_offset);
        rt2800_rfcsr_write(rt2x00dev, 23, rfcsr);
 
@@ -2220,19 +2224,19 @@ static void rt2800_config_channel_rf3xxx(struct rt2x00_dev *rt2x00dev,
                }
        }
 
-       rt2800_rfcsr_read(rt2x00dev, 24, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 24);
        rt2x00_set_field8(&rfcsr, RFCSR24_TX_CALIB, calib_tx);
        rt2800_rfcsr_write(rt2x00dev, 24, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 31, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 31);
        rt2x00_set_field8(&rfcsr, RFCSR31_RX_CALIB, calib_rx);
        rt2800_rfcsr_write(rt2x00dev, 31, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 7, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 7);
        rt2x00_set_field8(&rfcsr, RFCSR7_RF_TUNING, 1);
        rt2800_rfcsr_write(rt2x00dev, 7, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 30, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 30);
        rt2x00_set_field8(&rfcsr, RFCSR30_RF_CALIBRATION, 1);
        rt2800_rfcsr_write(rt2x00dev, 30, rfcsr);
 
@@ -2262,7 +2266,7 @@ static void rt2800_config_channel_rf3052(struct rt2x00_dev *rt2x00dev,
        rt2800_rfcsr_write(rt2x00dev, 2, rf->rf1);
        rt2800_rfcsr_write(rt2x00dev, 3, rf->rf3);
 
-       rt2800_rfcsr_read(rt2x00dev, 6, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 6);
        rt2x00_set_field8(&rfcsr, RFCSR6_R1, rf->rf2);
        if (rf->channel <= 14)
                rt2x00_set_field8(&rfcsr, RFCSR6_TXDIV, 2);
@@ -2270,14 +2274,14 @@ static void rt2800_config_channel_rf3052(struct rt2x00_dev *rt2x00dev,
                rt2x00_set_field8(&rfcsr, RFCSR6_TXDIV, 1);
        rt2800_rfcsr_write(rt2x00dev, 6, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 5, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 5);
        if (rf->channel <= 14)
                rt2x00_set_field8(&rfcsr, RFCSR5_R1, 1);
        else
                rt2x00_set_field8(&rfcsr, RFCSR5_R1, 2);
        rt2800_rfcsr_write(rt2x00dev, 5, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 12, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 12);
        if (rf->channel <= 14) {
                rt2x00_set_field8(&rfcsr, RFCSR12_DR0, 3);
                rt2x00_set_field8(&rfcsr, RFCSR12_TX_POWER,
@@ -2290,7 +2294,7 @@ static void rt2800_config_channel_rf3052(struct rt2x00_dev *rt2x00dev,
        }
        rt2800_rfcsr_write(rt2x00dev, 12, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 13, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 13);
        if (rf->channel <= 14) {
                rt2x00_set_field8(&rfcsr, RFCSR13_DR0, 3);
                rt2x00_set_field8(&rfcsr, RFCSR13_TX_POWER,
@@ -2303,7 +2307,7 @@ static void rt2800_config_channel_rf3052(struct rt2x00_dev *rt2x00dev,
        }
        rt2800_rfcsr_write(rt2x00dev, 13, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 1, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 1);
        rt2x00_set_field8(&rfcsr, RFCSR1_RX0_PD, 0);
        rt2x00_set_field8(&rfcsr, RFCSR1_TX0_PD, 0);
        rt2x00_set_field8(&rfcsr, RFCSR1_RX1_PD, 0);
@@ -2336,7 +2340,7 @@ static void rt2800_config_channel_rf3052(struct rt2x00_dev *rt2x00dev,
        }
        rt2800_rfcsr_write(rt2x00dev, 1, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 23, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 23);
        rt2x00_set_field8(&rfcsr, RFCSR23_FREQ_OFFSET, rt2x00dev->freq_offset);
        rt2800_rfcsr_write(rt2x00dev, 23, rfcsr);
 
@@ -2366,7 +2370,7 @@ static void rt2800_config_channel_rf3052(struct rt2x00_dev *rt2x00dev,
                rt2800_rfcsr_write(rt2x00dev, 27, 0x00);
                rt2800_rfcsr_write(rt2x00dev, 29, 0x9b);
        } else {
-               rt2800_rfcsr_read(rt2x00dev, 7, &rfcsr);
+               rfcsr = rt2800_rfcsr_read(rt2x00dev, 7);
                rt2x00_set_field8(&rfcsr, RFCSR7_BIT2, 1);
                rt2x00_set_field8(&rfcsr, RFCSR7_BIT3, 0);
                rt2x00_set_field8(&rfcsr, RFCSR7_BIT4, 1);
@@ -2399,7 +2403,7 @@ static void rt2800_config_channel_rf3052(struct rt2x00_dev *rt2x00dev,
                rt2800_rfcsr_write(rt2x00dev, 29, 0x9f);
        }
 
-       rt2800_register_read(rt2x00dev, GPIO_CTRL, &reg);
+       reg = rt2800_register_read(rt2x00dev, GPIO_CTRL);
        rt2x00_set_field32(&reg, GPIO_CTRL_DIR7, 0);
        if (rf->channel <= 14)
                rt2x00_set_field32(&reg, GPIO_CTRL_VAL7, 1);
@@ -2407,7 +2411,7 @@ static void rt2800_config_channel_rf3052(struct rt2x00_dev *rt2x00dev,
                rt2x00_set_field32(&reg, GPIO_CTRL_VAL7, 0);
        rt2800_register_write(rt2x00dev, GPIO_CTRL, reg);
 
-       rt2800_rfcsr_read(rt2x00dev, 7, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 7);
        rt2x00_set_field8(&rfcsr, RFCSR7_RF_TUNING, 1);
        rt2800_rfcsr_write(rt2x00dev, 7, rfcsr);
 }
@@ -2425,12 +2429,12 @@ static void rt2800_config_channel_rf3053(struct rt2x00_dev *rt2x00dev,
        const bool txbf_enabled = false; /* TODO */
 
        /* TODO: use TX{0,1,2}FinePowerControl values from EEPROM */
-       rt2800_bbp_read(rt2x00dev, 109, &bbp);
+       bbp = rt2800_bbp_read(rt2x00dev, 109);
        rt2x00_set_field8(&bbp, BBP109_TX0_POWER, 0);
        rt2x00_set_field8(&bbp, BBP109_TX1_POWER, 0);
        rt2800_bbp_write(rt2x00dev, 109, bbp);
 
-       rt2800_bbp_read(rt2x00dev, 110, &bbp);
+       bbp = rt2800_bbp_read(rt2x00dev, 110);
        rt2x00_set_field8(&bbp, BBP110_TX2_POWER, 0);
        rt2800_bbp_write(rt2x00dev, 110, bbp);
 
@@ -2450,11 +2454,11 @@ static void rt2800_config_channel_rf3053(struct rt2x00_dev *rt2x00dev,
        rt2800_rfcsr_write(rt2x00dev, 8, rf->rf1);
        rt2800_rfcsr_write(rt2x00dev, 9, rf->rf3 & 0xf);
 
-       rt2800_rfcsr_read(rt2x00dev, 11, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 11);
        rt2x00_set_field8(&rfcsr, RFCSR11_R, (rf->rf2 & 0x3));
        rt2800_rfcsr_write(rt2x00dev, 11, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 11, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 11);
        rt2x00_set_field8(&rfcsr, RFCSR11_PLL_IDOH, 1);
        if (rf->channel <= 14)
                rt2x00_set_field8(&rfcsr, RFCSR11_PLL_MOD, 1);
@@ -2462,7 +2466,7 @@ static void rt2800_config_channel_rf3053(struct rt2x00_dev *rt2x00dev,
                rt2x00_set_field8(&rfcsr, RFCSR11_PLL_MOD, 2);
        rt2800_rfcsr_write(rt2x00dev, 11, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 53, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 53);
        if (rf->channel <= 14) {
                rfcsr = 0;
                rt2x00_set_field8(&rfcsr, RFCSR53_TX_POWER,
@@ -2477,7 +2481,7 @@ static void rt2800_config_channel_rf3053(struct rt2x00_dev *rt2x00dev,
        }
        rt2800_rfcsr_write(rt2x00dev, 53, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 55, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 55);
        if (rf->channel <= 14) {
                rfcsr = 0;
                rt2x00_set_field8(&rfcsr, RFCSR55_TX_POWER,
@@ -2492,7 +2496,7 @@ static void rt2800_config_channel_rf3053(struct rt2x00_dev *rt2x00dev,
        }
        rt2800_rfcsr_write(rt2x00dev, 55, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 54, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 54);
        if (rf->channel <= 14) {
                rfcsr = 0;
                rt2x00_set_field8(&rfcsr, RFCSR54_TX_POWER,
@@ -2507,7 +2511,7 @@ static void rt2800_config_channel_rf3053(struct rt2x00_dev *rt2x00dev,
        }
        rt2800_rfcsr_write(rt2x00dev, 54, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 1, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 1);
        rt2x00_set_field8(&rfcsr, RFCSR1_RX0_PD, 0);
        rt2x00_set_field8(&rfcsr, RFCSR1_TX0_PD, 0);
        rt2x00_set_field8(&rfcsr, RFCSR1_RX1_PD, 0);
@@ -2559,7 +2563,7 @@ static void rt2800_config_channel_rf3053(struct rt2x00_dev *rt2x00dev,
        /* NOTE: the reference driver does not writes the new value
         * back to RFCSR 32
         */
-       rt2800_rfcsr_read(rt2x00dev, 32, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 32);
        rt2x00_set_field8(&rfcsr, RFCSR32_TX_AGC_FC, txrx_agc_fc);
 
        if (rf->channel <= 14)
@@ -2568,34 +2572,34 @@ static void rt2800_config_channel_rf3053(struct rt2x00_dev *rt2x00dev,
                rfcsr = 0x80;
        rt2800_rfcsr_write(rt2x00dev, 31, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 30, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 30);
        rt2x00_set_field8(&rfcsr, RFCSR30_TX_H20M, txrx_h20m);
        rt2x00_set_field8(&rfcsr, RFCSR30_RX_H20M, txrx_h20m);
        rt2800_rfcsr_write(rt2x00dev, 30, rfcsr);
 
        /* Band selection */
-       rt2800_rfcsr_read(rt2x00dev, 36, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 36);
        if (rf->channel <= 14)
                rt2x00_set_field8(&rfcsr, RFCSR36_RF_BS, 1);
        else
                rt2x00_set_field8(&rfcsr, RFCSR36_RF_BS, 0);
        rt2800_rfcsr_write(rt2x00dev, 36, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 34, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 34);
        if (rf->channel <= 14)
                rfcsr = 0x3c;
        else
                rfcsr = 0x20;
        rt2800_rfcsr_write(rt2x00dev, 34, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 12, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 12);
        if (rf->channel <= 14)
                rfcsr = 0x1a;
        else
                rfcsr = 0x12;
        rt2800_rfcsr_write(rt2x00dev, 12, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 6, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 6);
        if (rf->channel >= 1 && rf->channel <= 14)
                rt2x00_set_field8(&rfcsr, RFCSR6_VCO_IC, 1);
        else if (rf->channel >= 36 && rf->channel <= 64)
@@ -2606,7 +2610,7 @@ static void rt2800_config_channel_rf3053(struct rt2x00_dev *rt2x00dev,
                rt2x00_set_field8(&rfcsr, RFCSR6_VCO_IC, 1);
        rt2800_rfcsr_write(rt2x00dev, 6, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 30, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 30);
        rt2x00_set_field8(&rfcsr, RFCSR30_RX_VCM, 2);
        rt2800_rfcsr_write(rt2x00dev, 30, rfcsr);
 
@@ -2620,11 +2624,11 @@ static void rt2800_config_channel_rf3053(struct rt2x00_dev *rt2x00dev,
                rt2800_rfcsr_write(rt2x00dev, 13, 0x23);
        }
 
-       rt2800_rfcsr_read(rt2x00dev, 51, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 51);
        rt2x00_set_field8(&rfcsr, RFCSR51_BITS01, 1);
        rt2800_rfcsr_write(rt2x00dev, 51, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 51, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 51);
        if (rf->channel <= 14) {
                rt2x00_set_field8(&rfcsr, RFCSR51_BITS24, 5);
                rt2x00_set_field8(&rfcsr, RFCSR51_BITS57, 3);
@@ -2634,7 +2638,7 @@ static void rt2800_config_channel_rf3053(struct rt2x00_dev *rt2x00dev,
        }
        rt2800_rfcsr_write(rt2x00dev, 51, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 49, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 49);
        if (rf->channel <= 14)
                rt2x00_set_field8(&rfcsr, RFCSR49_TX_LO1_IC, 3);
        else
@@ -2645,11 +2649,11 @@ static void rt2800_config_channel_rf3053(struct rt2x00_dev *rt2x00dev,
 
        rt2800_rfcsr_write(rt2x00dev, 49, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 50, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 50);
        rt2x00_set_field8(&rfcsr, RFCSR50_TX_LO1_EN, 0);
        rt2800_rfcsr_write(rt2x00dev, 50, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 57, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 57);
        if (rf->channel <= 14)
                rt2x00_set_field8(&rfcsr, RFCSR57_DRV_CC, 0x1b);
        else
@@ -2665,7 +2669,7 @@ static void rt2800_config_channel_rf3053(struct rt2x00_dev *rt2x00dev,
        }
 
        /* Initiate VCO calibration */
-       rt2800_rfcsr_read(rt2x00dev, 3, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 3);
        if (rf->channel <= 14) {
                rt2x00_set_field8(&rfcsr, RFCSR3_VCOCAL_EN, 1);
        } else {
@@ -2721,11 +2725,11 @@ static void rt2800_config_channel_rf3290(struct rt2x00_dev *rt2x00dev,
 
        rt2800_rfcsr_write(rt2x00dev, 8, rf->rf1);
        rt2800_rfcsr_write(rt2x00dev, 9, rf->rf3);
-       rt2800_rfcsr_read(rt2x00dev, 11, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 11);
        rt2x00_set_field8(&rfcsr, RFCSR11_R, rf->rf2);
        rt2800_rfcsr_write(rt2x00dev, 11, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 49, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 49);
        if (info->default_power1 > POWER_BOUND)
                rt2x00_set_field8(&rfcsr, RFCSR49_TX, POWER_BOUND);
        else
@@ -2775,7 +2779,7 @@ static void rt2800_config_channel_rf3322(struct rt2x00_dev *rt2x00dev,
 
        rt2800_freq_cal_mode1(rt2x00dev);
 
-       rt2800_rfcsr_read(rt2x00dev, 1, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 1);
        rt2x00_set_field8(&rfcsr, RFCSR1_RX0_PD, 1);
        rt2x00_set_field8(&rfcsr, RFCSR1_TX0_PD, 1);
 
@@ -2806,11 +2810,11 @@ static void rt2800_config_channel_rf53xx(struct rt2x00_dev *rt2x00dev,
 
        rt2800_rfcsr_write(rt2x00dev, 8, rf->rf1);
        rt2800_rfcsr_write(rt2x00dev, 9, rf->rf3);
-       rt2800_rfcsr_read(rt2x00dev, 11, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 11);
        rt2x00_set_field8(&rfcsr, RFCSR11_R, rf->rf2);
        rt2800_rfcsr_write(rt2x00dev, 11, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 49, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 49);
        if (info->default_power1 > POWER_BOUND)
                rt2x00_set_field8(&rfcsr, RFCSR49_TX, POWER_BOUND);
        else
@@ -2818,7 +2822,7 @@ static void rt2800_config_channel_rf53xx(struct rt2x00_dev *rt2x00dev,
        rt2800_rfcsr_write(rt2x00dev, 49, rfcsr);
 
        if (rt2x00_rt(rt2x00dev, RT5392)) {
-               rt2800_rfcsr_read(rt2x00dev, 50, &rfcsr);
+               rfcsr = rt2800_rfcsr_read(rt2x00dev, 50);
                if (info->default_power2 > POWER_BOUND)
                        rt2x00_set_field8(&rfcsr, RFCSR50_TX, POWER_BOUND);
                else
@@ -2827,7 +2831,7 @@ static void rt2800_config_channel_rf53xx(struct rt2x00_dev *rt2x00dev,
                rt2800_rfcsr_write(rt2x00dev, 50, rfcsr);
        }
 
-       rt2800_rfcsr_read(rt2x00dev, 1, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 1);
        if (rt2x00_rt(rt2x00dev, RT5392)) {
                rt2x00_set_field8(&rfcsr, RFCSR1_RX1_PD, 1);
                rt2x00_set_field8(&rfcsr, RFCSR1_TX1_PD, 1);
@@ -2911,7 +2915,7 @@ static void rt2800_config_channel_rf55xx(struct rt2x00_dev *rt2x00dev,
        const bool is_11b = false;
        const bool is_type_ep = false;
 
-       rt2800_register_read(rt2x00dev, LDO_CFG0, &reg);
+       reg = rt2800_register_read(rt2x00dev, LDO_CFG0);
        rt2x00_set_field32(&reg, LDO_CFG0_LDO_CORE_VLEVEL,
                           (rf->channel > 14 || conf_is_ht40(conf)) ? 5 : 0);
        rt2800_register_write(rt2x00dev, LDO_CFG0, reg);
@@ -2919,13 +2923,13 @@ static void rt2800_config_channel_rf55xx(struct rt2x00_dev *rt2x00dev,
        /* Order of values on rf_channel entry: N, K, mod, R */
        rt2800_rfcsr_write(rt2x00dev, 8, rf->rf1 & 0xff);
 
-       rt2800_rfcsr_read(rt2x00dev,  9, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev,  9);
        rt2x00_set_field8(&rfcsr, RFCSR9_K, rf->rf2 & 0xf);
        rt2x00_set_field8(&rfcsr, RFCSR9_N, (rf->rf1 & 0x100) >> 8);
        rt2x00_set_field8(&rfcsr, RFCSR9_MOD, ((rf->rf3 - 8) & 0x4) >> 2);
        rt2800_rfcsr_write(rt2x00dev, 9, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 11, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 11);
        rt2x00_set_field8(&rfcsr, RFCSR11_R, rf->rf4 - 1);
        rt2x00_set_field8(&rfcsr, RFCSR11_MOD, (rf->rf3 - 8) & 0x3);
        rt2800_rfcsr_write(rt2x00dev, 11, rfcsr);
@@ -3093,7 +3097,7 @@ static void rt2800_config_channel_rf55xx(struct rt2x00_dev *rt2x00dev,
                ep_reg = 0x3;
        }
 
-       rt2800_rfcsr_read(rt2x00dev, 49, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 49);
        if (info->default_power1 > power_bound)
                rt2x00_set_field8(&rfcsr, RFCSR49_TX, power_bound);
        else
@@ -3102,7 +3106,7 @@ static void rt2800_config_channel_rf55xx(struct rt2x00_dev *rt2x00dev,
                rt2x00_set_field8(&rfcsr, RFCSR49_EP, ep_reg);
        rt2800_rfcsr_write(rt2x00dev, 49, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 50, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 50);
        if (info->default_power2 > power_bound)
                rt2x00_set_field8(&rfcsr, RFCSR50_TX, power_bound);
        else
@@ -3111,7 +3115,7 @@ static void rt2800_config_channel_rf55xx(struct rt2x00_dev *rt2x00dev,
                rt2x00_set_field8(&rfcsr, RFCSR50_EP, ep_reg);
        rt2800_rfcsr_write(rt2x00dev, 50, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 1, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 1);
        rt2x00_set_field8(&rfcsr, RFCSR1_RF_BLOCK_EN, 1);
        rt2x00_set_field8(&rfcsr, RFCSR1_PLL_PD, 1);
 
@@ -3144,7 +3148,7 @@ static void rt2800_config_channel_rf55xx(struct rt2x00_dev *rt2x00dev,
        rt2800_freq_cal_mode1(rt2x00dev);
 
        /* TODO merge with others */
-       rt2800_rfcsr_read(rt2x00dev, 3, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 3);
        rt2x00_set_field8(&rfcsr, RFCSR3_VCOCAL_EN, 1);
        rt2800_rfcsr_write(rt2x00dev, 3, rfcsr);
 
@@ -3186,7 +3190,7 @@ static void rt2800_config_channel_rf7620(struct rt2x00_dev *rt2x00dev,
        /* Rdiv setting (set 0x03 if Xtal==20)
         * R13[1:0]
         */
-       rt2800_rfcsr_read(rt2x00dev, 13, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 13);
        rt2x00_set_field8(&rfcsr, RFCSR13_RDIV_MT7620,
                          rt2800_clk_is_20mhz(rt2x00dev) ? 3 : 0);
        rt2800_rfcsr_write(rt2x00dev, 13, rfcsr);
@@ -3195,25 +3199,25 @@ static void rt2800_config_channel_rf7620(struct rt2x00_dev *rt2x00dev,
         * R20[7:0] in rf->rf1
         * R21[0] always 0
         */
-       rt2800_rfcsr_read(rt2x00dev, 20, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 20);
        rfcsr = (rf->rf1 & 0x00ff);
        rt2800_rfcsr_write(rt2x00dev, 20, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 21, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 21);
        rt2x00_set_field8(&rfcsr, RFCSR21_BIT1, 0);
        rt2800_rfcsr_write(rt2x00dev, 21, rfcsr);
 
        /* K setting (always 0)
         * R16[3:0] (RF PLL freq selection)
         */
-       rt2800_rfcsr_read(rt2x00dev, 16, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 16);
        rt2x00_set_field8(&rfcsr, RFCSR16_RF_PLL_FREQ_SEL_MT7620, 0);
        rt2800_rfcsr_write(rt2x00dev, 16, rfcsr);
 
        /* D setting (always 0)
         * R22[2:0] (D=15, R22[2:0]=<111>)
         */
-       rt2800_rfcsr_read(rt2x00dev, 22, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 22);
        rt2x00_set_field8(&rfcsr, RFCSR22_FREQPLAN_D_MT7620, 0);
        rt2800_rfcsr_write(rt2x00dev, 22, rfcsr);
 
@@ -3222,40 +3226,40 @@ static void rt2800_config_channel_rf7620(struct rt2x00_dev *rt2x00dev,
         *      R18<7:0> in rf->rf3
         *      R19<1:0> in rf->rf4
         */
-       rt2800_rfcsr_read(rt2x00dev, 17, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 17);
        rfcsr = rf->rf2;
        rt2800_rfcsr_write(rt2x00dev, 17, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 18, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 18);
        rfcsr = rf->rf3;
        rt2800_rfcsr_write(rt2x00dev, 18, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 19, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 19);
        rt2x00_set_field8(&rfcsr, RFCSR19_K, rf->rf4);
        rt2800_rfcsr_write(rt2x00dev, 19, rfcsr);
 
        /* Default: XO=20MHz , SDM mode */
-       rt2800_rfcsr_read(rt2x00dev, 16, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 16);
        rt2x00_set_field8(&rfcsr, RFCSR16_SDM_MODE_MT7620, 0x80);
        rt2800_rfcsr_write(rt2x00dev, 16, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 21, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 21);
        rt2x00_set_field8(&rfcsr, RFCSR21_BIT8, 1);
        rt2800_rfcsr_write(rt2x00dev, 21, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 1, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 1);
        rt2x00_set_field8(&rfcsr, RFCSR1_TX2_EN_MT7620,
                          rt2x00dev->default_ant.tx_chain_num != 1);
        rt2800_rfcsr_write(rt2x00dev, 1, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 2, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 2);
        rt2x00_set_field8(&rfcsr, RFCSR2_TX2_EN_MT7620,
                          rt2x00dev->default_ant.tx_chain_num != 1);
        rt2x00_set_field8(&rfcsr, RFCSR2_RX2_EN_MT7620,
                          rt2x00dev->default_ant.rx_chain_num != 1);
        rt2800_rfcsr_write(rt2x00dev, 2, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 42, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 42);
        rt2x00_set_field8(&rfcsr, RFCSR42_TX2_EN_MT7620,
                          rt2x00dev->default_ant.tx_chain_num != 1);
        rt2800_rfcsr_write(rt2x00dev, 42, rfcsr);
@@ -3283,7 +3287,7 @@ static void rt2800_config_channel_rf7620(struct rt2x00_dev *rt2x00dev,
                rt2800_rfcsr_write_dccal(rt2x00dev, 59, 0x28);
        }
 
-       rt2800_rfcsr_read(rt2x00dev, 28, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 28);
        rt2x00_set_field8(&rfcsr, RFCSR28_CH11_HT40,
                          conf_is_ht40(conf) && (rf->channel == 11));
        rt2800_rfcsr_write(rt2x00dev, 28, rfcsr);
@@ -3296,36 +3300,36 @@ static void rt2800_config_channel_rf7620(struct rt2x00_dev *rt2x00dev,
                        rx_agc_fc = drv_data->rx_calibration_bw20;
                        tx_agc_fc = drv_data->tx_calibration_bw20;
                }
-               rt2800_rfcsr_read_bank(rt2x00dev, 5, 6, &rfcsr);
+               rfcsr = rt2800_rfcsr_read_bank(rt2x00dev, 5, 6);
                rfcsr &= (~0x3F);
                rfcsr |= rx_agc_fc;
                rt2800_rfcsr_write_bank(rt2x00dev, 5, 6, rfcsr);
-               rt2800_rfcsr_read_bank(rt2x00dev, 5, 7, &rfcsr);
+               rfcsr = rt2800_rfcsr_read_bank(rt2x00dev, 5, 7);
                rfcsr &= (~0x3F);
                rfcsr |= rx_agc_fc;
                rt2800_rfcsr_write_bank(rt2x00dev, 5, 7, rfcsr);
-               rt2800_rfcsr_read_bank(rt2x00dev, 7, 6, &rfcsr);
+               rfcsr = rt2800_rfcsr_read_bank(rt2x00dev, 7, 6);
                rfcsr &= (~0x3F);
                rfcsr |= rx_agc_fc;
                rt2800_rfcsr_write_bank(rt2x00dev, 7, 6, rfcsr);
-               rt2800_rfcsr_read_bank(rt2x00dev, 7, 7, &rfcsr);
+               rfcsr = rt2800_rfcsr_read_bank(rt2x00dev, 7, 7);
                rfcsr &= (~0x3F);
                rfcsr |= rx_agc_fc;
                rt2800_rfcsr_write_bank(rt2x00dev, 7, 7, rfcsr);
 
-               rt2800_rfcsr_read_bank(rt2x00dev, 5, 58, &rfcsr);
+               rfcsr = rt2800_rfcsr_read_bank(rt2x00dev, 5, 58);
                rfcsr &= (~0x3F);
                rfcsr |= tx_agc_fc;
                rt2800_rfcsr_write_bank(rt2x00dev, 5, 58, rfcsr);
-               rt2800_rfcsr_read_bank(rt2x00dev, 5, 59, &rfcsr);
+               rfcsr = rt2800_rfcsr_read_bank(rt2x00dev, 5, 59);
                rfcsr &= (~0x3F);
                rfcsr |= tx_agc_fc;
                rt2800_rfcsr_write_bank(rt2x00dev, 5, 59, rfcsr);
-               rt2800_rfcsr_read_bank(rt2x00dev, 7, 58, &rfcsr);
+               rfcsr = rt2800_rfcsr_read_bank(rt2x00dev, 7, 58);
                rfcsr &= (~0x3F);
                rfcsr |= tx_agc_fc;
                rt2800_rfcsr_write_bank(rt2x00dev, 7, 58, rfcsr);
-               rt2800_rfcsr_read_bank(rt2x00dev, 7, 59, &rfcsr);
+               rfcsr = rt2800_rfcsr_read_bank(rt2x00dev, 7, 59);
                rfcsr &= (~0x3F);
                rfcsr |= tx_agc_fc;
                rt2800_rfcsr_write_bank(rt2x00dev, 7, 59, rfcsr);
@@ -3350,34 +3354,33 @@ static void rt2800_config_alc(struct rt2x00_dev *rt2x00dev,
        if (max_power > 0x2f)
                max_power = 0x2f;
 
-       rt2800_register_read(rt2x00dev, TX_ALC_CFG_0, &reg);
+       reg = rt2800_register_read(rt2x00dev, TX_ALC_CFG_0);
        rt2x00_set_field32(&reg, TX_ALC_CFG_0_CH_INIT_0, power_level);
        rt2x00_set_field32(&reg, TX_ALC_CFG_0_CH_INIT_1, power_level);
        rt2x00_set_field32(&reg, TX_ALC_CFG_0_LIMIT_0, max_power);
        rt2x00_set_field32(&reg, TX_ALC_CFG_0_LIMIT_1, max_power);
 
-       rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1, &eeprom);
+       eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1);
        if (rt2x00_get_field16(eeprom, EEPROM_NIC_CONF1_INTERNAL_TX_ALC)) {
                /* init base power by eeprom target power */
-               rt2800_eeprom_read(rt2x00dev, EEPROM_TXPOWER_INIT,
-                                  &target_power);
+               target_power = rt2800_eeprom_read(rt2x00dev,
+                                                 EEPROM_TXPOWER_INIT);
                rt2x00_set_field32(&reg, TX_ALC_CFG_0_CH_INIT_0, target_power);
                rt2x00_set_field32(&reg, TX_ALC_CFG_0_CH_INIT_1, target_power);
        }
        rt2800_register_write(rt2x00dev, TX_ALC_CFG_0, reg);
 
-       rt2800_register_read(rt2x00dev, TX_ALC_CFG_1, &reg);
+       reg = rt2800_register_read(rt2x00dev, TX_ALC_CFG_1);
        rt2x00_set_field32(&reg, TX_ALC_CFG_1_TX_TEMP_COMP, 0);
        rt2800_register_write(rt2x00dev, TX_ALC_CFG_1, reg);
 
        /* Save MAC SYS CTRL registers */
-       rt2800_register_read(rt2x00dev, MAC_SYS_CTRL, &mac_sys_ctrl);
+       mac_sys_ctrl = rt2800_register_read(rt2x00dev, MAC_SYS_CTRL);
        /* Disable Tx/Rx */
        rt2800_register_write(rt2x00dev, MAC_SYS_CTRL, 0);
        /* Check MAC Tx/Rx idle */
        for (i = 0; i < 10000; i++) {
-               rt2800_register_read(rt2x00dev, MAC_STATUS_CFG,
-                                    &mac_status);
+               mac_status = rt2800_register_read(rt2x00dev, MAC_STATUS_CFG);
                if (mac_status & 0x3)
                        usleep_range(50, 200);
                else
@@ -3388,7 +3391,7 @@ static void rt2800_config_alc(struct rt2x00_dev *rt2x00dev,
                rt2x00_warn(rt2x00dev, "Wait MAC Status to MAX !!!\n");
 
        if (chan->center_freq > 2457) {
-               rt2800_bbp_read(rt2x00dev, 30, &bbp);
+               bbp = rt2800_bbp_read(rt2x00dev, 30);
                bbp = 0x40;
                rt2800_bbp_write(rt2x00dev, 30, bbp);
                rt2800_rfcsr_write(rt2x00dev, 39, 0);
@@ -3397,7 +3400,7 @@ static void rt2800_config_alc(struct rt2x00_dev *rt2x00dev,
                else
                        rt2800_rfcsr_write(rt2x00dev, 42, 0x7b);
        } else {
-               rt2800_bbp_read(rt2x00dev, 30, &bbp);
+               bbp = rt2800_bbp_read(rt2x00dev, 30);
                bbp = 0x1f;
                rt2800_bbp_write(rt2x00dev, 30, bbp);
                rt2800_rfcsr_write(rt2x00dev, 39, 0x80);
@@ -3418,7 +3421,7 @@ static void rt2800_bbp_write_with_rx_chain(struct rt2x00_dev *rt2x00dev,
        u8 chain, reg;
 
        for (chain = 0; chain < rt2x00dev->default_ant.rx_chain_num; chain++) {
-               rt2800_bbp_read(rt2x00dev, 27, &reg);
+               reg = rt2800_bbp_read(rt2x00dev, 27);
                rt2x00_set_field8(&reg,  BBP27_RX_CHAIN_SEL, chain);
                rt2800_bbp_write(rt2x00dev, 27, reg);
 
@@ -3597,7 +3600,7 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
            rt2x00_rf(rt2x00dev, RF5372) ||
            rt2x00_rf(rt2x00dev, RF5390) ||
            rt2x00_rf(rt2x00dev, RF5392)) {
-               rt2800_rfcsr_read(rt2x00dev, 30, &rfcsr);
+               rfcsr = rt2800_rfcsr_read(rt2x00dev, 30);
                if (rt2x00_rf(rt2x00dev, RF3322)) {
                        rt2x00_set_field8(&rfcsr, RF3322_RFCSR30_TX_H20M,
                                          conf_is_ht40(conf));
@@ -3611,7 +3614,7 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
                }
                rt2800_rfcsr_write(rt2x00dev, 30, rfcsr);
 
-               rt2800_rfcsr_read(rt2x00dev, 3, &rfcsr);
+               rfcsr = rt2800_rfcsr_read(rt2x00dev, 3);
                rt2x00_set_field8(&rfcsr, RFCSR3_VCOCAL_EN, 1);
                rt2800_rfcsr_write(rt2x00dev, 3, rfcsr);
        }
@@ -3690,7 +3693,7 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
                        rt2800_bbp_write(rt2x00dev, 75, 0x50);
        }
 
-       rt2800_register_read(rt2x00dev, TX_BAND_CFG, &reg);
+       reg = rt2800_register_read(rt2x00dev, TX_BAND_CFG);
        rt2x00_set_field32(&reg, TX_BAND_CFG_HT40_MINUS, conf_is_ht40_minus(conf));
        rt2x00_set_field32(&reg, TX_BAND_CFG_A, rf->channel > 14);
        rt2x00_set_field32(&reg, TX_BAND_CFG_BG, rf->channel <= 14);
@@ -3699,7 +3702,7 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
        if (rt2x00_rt(rt2x00dev, RT3572))
                rt2800_rfcsr_write(rt2x00dev, 8, 0);
 
-       rt2800_register_read(rt2x00dev, TX_PIN_CFG, &tx_pin);
+       tx_pin = rt2800_register_read(rt2x00dev, TX_PIN_CFG);
 
        switch (rt2x00dev->default_ant.tx_chain_num) {
        case 3:
@@ -3765,7 +3768,7 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
        }
 
        if (rt2x00_rt(rt2x00dev, RT3593)) {
-               rt2800_register_read(rt2x00dev, GPIO_CTRL, &reg);
+               reg = rt2800_register_read(rt2x00dev, GPIO_CTRL);
 
                /* Band selection */
                if (rt2x00_is_usb(rt2x00dev) ||
@@ -3832,11 +3835,11 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
                rt2800_iq_calibrate(rt2x00dev, rf->channel);
        }
 
-       rt2800_bbp_read(rt2x00dev, 4, &bbp);
+       bbp = rt2800_bbp_read(rt2x00dev, 4);
        rt2x00_set_field8(&bbp, BBP4_BANDWIDTH, 2 * conf_is_ht40(conf));
        rt2800_bbp_write(rt2x00dev, 4, bbp);
 
-       rt2800_bbp_read(rt2x00dev, 3, &bbp);
+       bbp = rt2800_bbp_read(rt2x00dev, 3);
        rt2x00_set_field8(&bbp, BBP3_HT40_MINUS, conf_is_ht40_minus(conf));
        rt2800_bbp_write(rt2x00dev, 3, bbp);
 
@@ -3857,16 +3860,16 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
        /*
         * Clear channel statistic counters
         */
-       rt2800_register_read(rt2x00dev, CH_IDLE_STA, &reg);
-       rt2800_register_read(rt2x00dev, CH_BUSY_STA, &reg);
-       rt2800_register_read(rt2x00dev, CH_BUSY_STA_SEC, &reg);
+       reg = rt2800_register_read(rt2x00dev, CH_IDLE_STA);
+       reg = rt2800_register_read(rt2x00dev, CH_BUSY_STA);
+       reg = rt2800_register_read(rt2x00dev, CH_BUSY_STA_SEC);
 
        /*
         * Clear update flag
         */
        if (rt2x00_rt(rt2x00dev, RT3352) ||
            rt2x00_rt(rt2x00dev, RT5350)) {
-               rt2800_bbp_read(rt2x00dev, 49, &bbp);
+               bbp = rt2800_bbp_read(rt2x00dev, 49);
                rt2x00_set_field8(&bbp, BBP49_UPDATE_FLAG, 0);
                rt2800_bbp_write(rt2x00dev, 49, bbp);
        }
@@ -3883,7 +3886,7 @@ static int rt2800_get_gain_calibration_delta(struct rt2x00_dev *rt2x00dev)
        /*
         * First check if temperature compensation is supported.
         */
-       rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1, &eeprom);
+       eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1);
        if (!rt2x00_get_field16(eeprom, EEPROM_NIC_CONF1_EXTERNAL_TX_ALC))
                return 0;
 
@@ -3896,62 +3899,62 @@ static int rt2800_get_gain_calibration_delta(struct rt2x00_dev *rt2x00dev)
         * Example TSSI bounds  0xF0 0xD0 0xB5 0xA0 0x88 0x45 0x25 0x15 0x00
         */
        if (rt2x00dev->curr_band == NL80211_BAND_2GHZ) {
-               rt2800_eeprom_read(rt2x00dev, EEPROM_TSSI_BOUND_BG1, &eeprom);
+               eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_TSSI_BOUND_BG1);
                tssi_bounds[0] = rt2x00_get_field16(eeprom,
                                        EEPROM_TSSI_BOUND_BG1_MINUS4);
                tssi_bounds[1] = rt2x00_get_field16(eeprom,
                                        EEPROM_TSSI_BOUND_BG1_MINUS3);
 
-               rt2800_eeprom_read(rt2x00dev, EEPROM_TSSI_BOUND_BG2, &eeprom);
+               eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_TSSI_BOUND_BG2);
                tssi_bounds[2] = rt2x00_get_field16(eeprom,
                                        EEPROM_TSSI_BOUND_BG2_MINUS2);
                tssi_bounds[3] = rt2x00_get_field16(eeprom,
                                        EEPROM_TSSI_BOUND_BG2_MINUS1);
 
-               rt2800_eeprom_read(rt2x00dev, EEPROM_TSSI_BOUND_BG3, &eeprom);
+               eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_TSSI_BOUND_BG3);
                tssi_bounds[4] = rt2x00_get_field16(eeprom,
                                        EEPROM_TSSI_BOUND_BG3_REF);
                tssi_bounds[5] = rt2x00_get_field16(eeprom,
                                        EEPROM_TSSI_BOUND_BG3_PLUS1);
 
-               rt2800_eeprom_read(rt2x00dev, EEPROM_TSSI_BOUND_BG4, &eeprom);
+               eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_TSSI_BOUND_BG4);
                tssi_bounds[6] = rt2x00_get_field16(eeprom,
                                        EEPROM_TSSI_BOUND_BG4_PLUS2);
                tssi_bounds[7] = rt2x00_get_field16(eeprom,
                                        EEPROM_TSSI_BOUND_BG4_PLUS3);
 
-               rt2800_eeprom_read(rt2x00dev, EEPROM_TSSI_BOUND_BG5, &eeprom);
+               eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_TSSI_BOUND_BG5);
                tssi_bounds[8] = rt2x00_get_field16(eeprom,
                                        EEPROM_TSSI_BOUND_BG5_PLUS4);
 
                step = rt2x00_get_field16(eeprom,
                                          EEPROM_TSSI_BOUND_BG5_AGC_STEP);
        } else {
-               rt2800_eeprom_read(rt2x00dev, EEPROM_TSSI_BOUND_A1, &eeprom);
+               eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_TSSI_BOUND_A1);
                tssi_bounds[0] = rt2x00_get_field16(eeprom,
                                        EEPROM_TSSI_BOUND_A1_MINUS4);
                tssi_bounds[1] = rt2x00_get_field16(eeprom,
                                        EEPROM_TSSI_BOUND_A1_MINUS3);
 
-               rt2800_eeprom_read(rt2x00dev, EEPROM_TSSI_BOUND_A2, &eeprom);
+               eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_TSSI_BOUND_A2);
                tssi_bounds[2] = rt2x00_get_field16(eeprom,
                                        EEPROM_TSSI_BOUND_A2_MINUS2);
                tssi_bounds[3] = rt2x00_get_field16(eeprom,
                                        EEPROM_TSSI_BOUND_A2_MINUS1);
 
-               rt2800_eeprom_read(rt2x00dev, EEPROM_TSSI_BOUND_A3, &eeprom);
+               eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_TSSI_BOUND_A3);
                tssi_bounds[4] = rt2x00_get_field16(eeprom,
                                        EEPROM_TSSI_BOUND_A3_REF);
                tssi_bounds[5] = rt2x00_get_field16(eeprom,
                                        EEPROM_TSSI_BOUND_A3_PLUS1);
 
-               rt2800_eeprom_read(rt2x00dev, EEPROM_TSSI_BOUND_A4, &eeprom);
+               eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_TSSI_BOUND_A4);
                tssi_bounds[6] = rt2x00_get_field16(eeprom,
                                        EEPROM_TSSI_BOUND_A4_PLUS2);
                tssi_bounds[7] = rt2x00_get_field16(eeprom,
                                        EEPROM_TSSI_BOUND_A4_PLUS3);
 
-               rt2800_eeprom_read(rt2x00dev, EEPROM_TSSI_BOUND_A5, &eeprom);
+               eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_TSSI_BOUND_A5);
                tssi_bounds[8] = rt2x00_get_field16(eeprom,
                                        EEPROM_TSSI_BOUND_A5_PLUS4);
 
@@ -3968,7 +3971,7 @@ static int rt2800_get_gain_calibration_delta(struct rt2x00_dev *rt2x00dev)
        /*
         * Read current TSSI (BBP 49).
         */
-       rt2800_bbp_read(rt2x00dev, 49, &current_tssi);
+       current_tssi = rt2800_bbp_read(rt2x00dev, 49);
 
        /*
         * Compare TSSI value (BBP49) with the compensation boundaries
@@ -3997,7 +4000,7 @@ static int rt2800_get_txpower_bw_comp(struct rt2x00_dev *rt2x00dev,
        u8 comp_type;
        int comp_value = 0;
 
-       rt2800_eeprom_read(rt2x00dev, EEPROM_TXPOWER_DELTA, &eeprom);
+       eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_TXPOWER_DELTA);
 
        /*
         * HT40 compensation not required.
@@ -4075,13 +4078,13 @@ static u8 rt2800_compensate_txpower(struct rt2x00_dev *rt2x00dev, int is_rate_b,
                 * .11b data rate need add additional 4dbm
                 * when calculating eirp txpower.
                 */
-               rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE,
-                                             1, &eeprom);
+               eeprom = rt2800_eeprom_read_from_array(rt2x00dev,
+                                                      EEPROM_TXPOWER_BYRATE,
+                                                      1);
                criterion = rt2x00_get_field16(eeprom,
                                               EEPROM_TXPOWER_BYRATE_RATE0);
 
-               rt2800_eeprom_read(rt2x00dev, EEPROM_EIRP_MAX_TX_POWER,
-                                  &eeprom);
+               eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_EIRP_MAX_TX_POWER);
 
                if (band == NL80211_BAND_2GHZ)
                        eirp_txpower_criterion = rt2x00_get_field16(eeprom,
@@ -4150,8 +4153,8 @@ static void rt2800_config_txpower_rt3593(struct rt2x00_dev *rt2x00dev,
                offset += 8;
 
        /* read the next four txpower values */
-       rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE,
-                                     offset, &eeprom);
+       eeprom = rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE,
+                                              offset);
 
        /* CCK 1MBS,2MBS */
        txpower = rt2x00_get_field16(eeprom, EEPROM_TXPOWER_BYRATE_RATE0);
@@ -4198,8 +4201,8 @@ static void rt2800_config_txpower_rt3593(struct rt2x00_dev *rt2x00dev,
                           TX_PWR_CFG_0_EXT_OFDM12_CH2, txpower);
 
        /* read the next four txpower values */
-       rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE,
-                                     offset + 1, &eeprom);
+       eeprom = rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE,
+                                              offset + 1);
 
        /* OFDM 24MBS,36MBS */
        txpower = rt2x00_get_field16(eeprom, EEPROM_TXPOWER_BYRATE_RATE0);
@@ -4235,8 +4238,8 @@ static void rt2800_config_txpower_rt3593(struct rt2x00_dev *rt2x00dev,
                           TX_PWR_CFG_7_OFDM54_CH2, txpower);
 
        /* read the next four txpower values */
-       rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE,
-                                     offset + 2, &eeprom);
+       eeprom = rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE,
+                                              offset + 2);
 
        /* MCS 0,1 */
        txpower = rt2x00_get_field16(eeprom, EEPROM_TXPOWER_BYRATE_RATE0);
@@ -4283,8 +4286,8 @@ static void rt2800_config_txpower_rt3593(struct rt2x00_dev *rt2x00dev,
                           TX_PWR_CFG_2_EXT_MCS6_CH2, txpower);
 
        /* read the next four txpower values */
-       rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE,
-                                     offset + 3, &eeprom);
+       eeprom = rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE,
+                                              offset + 3);
 
        /* MCS 7 */
        txpower = rt2x00_get_field16(eeprom, EEPROM_TXPOWER_BYRATE_RATE0);
@@ -4331,8 +4334,8 @@ static void rt2800_config_txpower_rt3593(struct rt2x00_dev *rt2x00dev,
                           TX_PWR_CFG_3_EXT_MCS12_CH2, txpower);
 
        /* read the next four txpower values */
-       rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE,
-                                     offset + 4, &eeprom);
+       eeprom = rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE,
+                                              offset + 4);
 
        /* MCS 14 */
        txpower = rt2x00_get_field16(eeprom, EEPROM_TXPOWER_BYRATE_RATE0);
@@ -4379,8 +4382,8 @@ static void rt2800_config_txpower_rt3593(struct rt2x00_dev *rt2x00dev,
                           TX_PWR_CFG_5_MCS18_CH2, txpower);
 
        /* read the next four txpower values */
-       rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE,
-                                     offset + 5, &eeprom);
+       eeprom = rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE,
+                                              offset + 5);
 
        /* MCS 20,21 */
        txpower = rt2x00_get_field16(eeprom, EEPROM_TXPOWER_BYRATE_RATE0);
@@ -4416,8 +4419,8 @@ static void rt2800_config_txpower_rt3593(struct rt2x00_dev *rt2x00dev,
                           TX_PWR_CFG_8_MCS23_CH2, txpower);
 
        /* read the next four txpower values */
-       rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE,
-                                     offset + 6, &eeprom);
+       eeprom = rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE,
+                                              offset + 6);
 
        /* STBC, MCS 0,1 */
        txpower = rt2x00_get_field16(eeprom, EEPROM_TXPOWER_BYRATE_RATE0);
@@ -4460,8 +4463,8 @@ static void rt2800_config_txpower_rt3593(struct rt2x00_dev *rt2x00dev,
                           txpower);
 
        /* read the next four txpower values */
-       rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE,
-                                     offset + 7, &eeprom);
+       eeprom = rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE,
+                                              offset + 7);
 
        /* STBC, MCS 7 */
        txpower = rt2x00_get_field16(eeprom, EEPROM_TXPOWER_BYRATE_RATE0);
@@ -4541,8 +4544,9 @@ static void rt2800_config_txpower_rt6352(struct rt2x00_dev *rt2x00dev,
         * board vendors expected when they populated the EEPROM...
         */
        for (i = 0; i < 5; i++) {
-               rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE,
-                                             i * 2, &eeprom);
+               eeprom = rt2800_eeprom_read_from_array(rt2x00dev,
+                                                      EEPROM_TXPOWER_BYRATE,
+                                                      i * 2);
 
                data = eeprom;
 
@@ -4558,8 +4562,9 @@ static void rt2800_config_txpower_rt6352(struct rt2x00_dev *rt2x00dev,
 
                gdata |= (t << 8);
 
-               rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE,
-                                             (i * 2) + 1, &eeprom);
+               eeprom = rt2800_eeprom_read_from_array(rt2x00dev,
+                                                      EEPROM_TXPOWER_BYRATE,
+                                                      (i * 2) + 1);
 
                t = eeprom & 0x3f;
                if (t == 32)
@@ -4601,26 +4606,26 @@ static void rt2800_config_txpower_rt6352(struct rt2x00_dev *rt2x00dev,
 
        /* For OFDM 54MBS use value from OFDM 48MBS */
        pwreg = 0;
-       rt2800_register_read(rt2x00dev, TX_PWR_CFG_1, &reg);
+       reg = rt2800_register_read(rt2x00dev, TX_PWR_CFG_1);
        t = rt2x00_get_field32(reg, TX_PWR_CFG_1B_48MBS);
        rt2x00_set_field32(&pwreg, TX_PWR_CFG_7B_54MBS, t);
 
        /* For MCS 7 use value from MCS 6 */
-       rt2800_register_read(rt2x00dev, TX_PWR_CFG_2, &reg);
+       reg = rt2800_register_read(rt2x00dev, TX_PWR_CFG_2);
        t = rt2x00_get_field32(reg, TX_PWR_CFG_2B_MCS6_MCS7);
        rt2x00_set_field32(&pwreg, TX_PWR_CFG_7B_MCS7, t);
        rt2800_register_write(rt2x00dev, TX_PWR_CFG_7, pwreg);
 
        /* For MCS 15 use value from MCS 14 */
        pwreg = 0;
-       rt2800_register_read(rt2x00dev, TX_PWR_CFG_3, &reg);
+       reg = rt2800_register_read(rt2x00dev, TX_PWR_CFG_3);
        t = rt2x00_get_field32(reg, TX_PWR_CFG_3B_MCS14);
        rt2x00_set_field32(&pwreg, TX_PWR_CFG_8B_MCS15, t);
        rt2800_register_write(rt2x00dev, TX_PWR_CFG_8, pwreg);
 
        /* For STBC MCS 7 use value from STBC MCS 6 */
        pwreg = 0;
-       rt2800_register_read(rt2x00dev, TX_PWR_CFG_4, &reg);
+       reg = rt2800_register_read(rt2x00dev, TX_PWR_CFG_4);
        t = rt2x00_get_field32(reg, TX_PWR_CFG_4B_STBC_MCS6);
        rt2x00_set_field32(&pwreg, TX_PWR_CFG_9B_STBC_MCS7, t);
        rt2800_register_write(rt2x00dev, TX_PWR_CFG_9, pwreg);
@@ -4702,7 +4707,7 @@ static void rt2800_config_txpower_rt28xx(struct rt2x00_dev *rt2x00dev,
        } else {
                power_ctrl = 0;
        }
-       rt2800_bbp_read(rt2x00dev, 1, &r1);
+       r1 = rt2800_bbp_read(rt2x00dev, 1);
        rt2x00_set_field8(&r1, BBP1_TX_POWER_CTRL, power_ctrl);
        rt2800_bbp_write(rt2x00dev, 1, r1);
 
@@ -4713,11 +4718,12 @@ static void rt2800_config_txpower_rt28xx(struct rt2x00_dev *rt2x00dev,
                if (offset > TX_PWR_CFG_4)
                        break;
 
-               rt2800_register_read(rt2x00dev, offset, &reg);
+               reg = rt2800_register_read(rt2x00dev, offset);
 
                /* read the next four txpower values */
-               rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE,
-                                             i, &eeprom);
+               eeprom = rt2800_eeprom_read_from_array(rt2x00dev,
+                                                      EEPROM_TXPOWER_BYRATE,
+                                                      i);
 
                is_rate_b = i ? 0 : 1;
                /*
@@ -4765,8 +4771,9 @@ static void rt2800_config_txpower_rt28xx(struct rt2x00_dev *rt2x00dev,
                rt2x00_set_field32(&reg, TX_PWR_CFG_RATE3, txpower);
 
                /* read the next four txpower values */
-               rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE,
-                                             i + 1, &eeprom);
+               eeprom = rt2800_eeprom_read_from_array(rt2x00dev,
+                                                      EEPROM_TXPOWER_BYRATE,
+                                                      i + 1);
 
                is_rate_b = 0;
                /*
@@ -4853,7 +4860,7 @@ void rt2800_vco_calibration(struct rt2x00_dev *rt2x00dev)
         * periodically to adjust the frequency to be precision.
        */
 
-       rt2800_register_read(rt2x00dev, TX_PIN_CFG, &tx_pin);
+       tx_pin = rt2800_register_read(rt2x00dev, TX_PIN_CFG);
        tx_pin &= TX_PIN_CFG_PA_PE_DISABLE;
        rt2800_register_write(rt2x00dev, TX_PIN_CFG, tx_pin);
 
@@ -4864,7 +4871,7 @@ void rt2800_vco_calibration(struct rt2x00_dev *rt2x00dev)
        case RF3022:
        case RF3320:
        case RF3052:
-               rt2800_rfcsr_read(rt2x00dev, 7, &rfcsr);
+               rfcsr = rt2800_rfcsr_read(rt2x00dev, 7);
                rt2x00_set_field8(&rfcsr, RFCSR7_RF_TUNING, 1);
                rt2800_rfcsr_write(rt2x00dev, 7, rfcsr);
                break;
@@ -4879,7 +4886,7 @@ void rt2800_vco_calibration(struct rt2x00_dev *rt2x00dev)
        case RF5390:
        case RF5392:
        case RF5592:
-               rt2800_rfcsr_read(rt2x00dev, 3, &rfcsr);
+               rfcsr = rt2800_rfcsr_read(rt2x00dev, 3);
                rt2x00_set_field8(&rfcsr, RFCSR3_VCOCAL_EN, 1);
                rt2800_rfcsr_write(rt2x00dev, 3, rfcsr);
                min_sleep = 1000;
@@ -4887,7 +4894,7 @@ void rt2800_vco_calibration(struct rt2x00_dev *rt2x00dev)
        case RF7620:
                rt2800_rfcsr_write(rt2x00dev, 5, 0x40);
                rt2800_rfcsr_write(rt2x00dev, 4, 0x0C);
-               rt2800_rfcsr_read(rt2x00dev, 4, &rfcsr);
+               rfcsr = rt2800_rfcsr_read(rt2x00dev, 4);
                rt2x00_set_field8(&rfcsr, RFCSR4_VCOCAL_EN, 1);
                rt2800_rfcsr_write(rt2x00dev, 4, rfcsr);
                min_sleep = 2000;
@@ -4901,7 +4908,7 @@ void rt2800_vco_calibration(struct rt2x00_dev *rt2x00dev)
        if (min_sleep > 0)
                usleep_range(min_sleep, min_sleep * 2);
 
-       rt2800_register_read(rt2x00dev, TX_PIN_CFG, &tx_pin);
+       tx_pin = rt2800_register_read(rt2x00dev, TX_PIN_CFG);
        if (rt2x00dev->rf_channel <= 14) {
                switch (rt2x00dev->default_ant.tx_chain_num) {
                case 3:
@@ -4975,7 +4982,7 @@ static void rt2800_config_retry_limit(struct rt2x00_dev *rt2x00dev,
 {
        u32 reg;
 
-       rt2800_register_read(rt2x00dev, TX_RTY_CFG, &reg);
+       reg = rt2800_register_read(rt2x00dev, TX_RTY_CFG);
        rt2x00_set_field32(&reg, TX_RTY_CFG_SHORT_RTY_LIMIT,
                           libconf->conf->short_frame_max_tx_count);
        rt2x00_set_field32(&reg, TX_RTY_CFG_LONG_RTY_LIMIT,
@@ -4994,7 +5001,7 @@ static void rt2800_config_ps(struct rt2x00_dev *rt2x00dev,
        if (state == STATE_SLEEP) {
                rt2800_register_write(rt2x00dev, AUTOWAKEUP_CFG, 0);
 
-               rt2800_register_read(rt2x00dev, AUTOWAKEUP_CFG, &reg);
+               reg = rt2800_register_read(rt2x00dev, AUTOWAKEUP_CFG);
                rt2x00_set_field32(&reg, AUTOWAKEUP_CFG_AUTO_LEAD_TIME, 5);
                rt2x00_set_field32(&reg, AUTOWAKEUP_CFG_TBCN_BEFORE_WAKE,
                                   libconf->conf->listen_interval - 1);
@@ -5003,7 +5010,7 @@ static void rt2800_config_ps(struct rt2x00_dev *rt2x00dev,
 
                rt2x00dev->ops->lib->set_device_state(rt2x00dev, state);
        } else {
-               rt2800_register_read(rt2x00dev, AUTOWAKEUP_CFG, &reg);
+               reg = rt2800_register_read(rt2x00dev, AUTOWAKEUP_CFG);
                rt2x00_set_field32(&reg, AUTOWAKEUP_CFG_AUTO_LEAD_TIME, 0);
                rt2x00_set_field32(&reg, AUTOWAKEUP_CFG_TBCN_BEFORE_WAKE, 0);
                rt2x00_set_field32(&reg, AUTOWAKEUP_CFG_AUTOWAKE, 0);
@@ -5046,7 +5053,7 @@ void rt2800_link_stats(struct rt2x00_dev *rt2x00dev, struct link_qual *qual)
        /*
         * Update FCS error count from register.
         */
-       rt2800_register_read(rt2x00dev, RX_STA_CNT0, &reg);
+       reg = rt2800_register_read(rt2x00dev, RX_STA_CNT0);
        qual->rx_failed = rt2x00_get_field32(reg, RX_STA_CNT0_CRC_ERR);
 }
 EXPORT_SYMBOL_GPL(rt2800_link_stats);
@@ -5175,7 +5182,7 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev)
 
        rt2800_register_write(rt2x00dev, MAC_SYS_CTRL, 0x00000000);
 
-       rt2800_register_read(rt2x00dev, BCN_TIME_CFG, &reg);
+       reg = rt2800_register_read(rt2x00dev, BCN_TIME_CFG);
        rt2x00_set_field32(&reg, BCN_TIME_CFG_BEACON_INTERVAL, 1600);
        rt2x00_set_field32(&reg, BCN_TIME_CFG_TSF_TICKING, 0);
        rt2x00_set_field32(&reg, BCN_TIME_CFG_TSF_SYNC, 0);
@@ -5186,43 +5193,43 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev)
 
        rt2800_config_filter(rt2x00dev, FIF_ALLMULTI);
 
-       rt2800_register_read(rt2x00dev, BKOFF_SLOT_CFG, &reg);
+       reg = rt2800_register_read(rt2x00dev, BKOFF_SLOT_CFG);
        rt2x00_set_field32(&reg, BKOFF_SLOT_CFG_SLOT_TIME, 9);
        rt2x00_set_field32(&reg, BKOFF_SLOT_CFG_CC_DELAY_TIME, 2);
        rt2800_register_write(rt2x00dev, BKOFF_SLOT_CFG, reg);
 
        if (rt2x00_rt(rt2x00dev, RT3290)) {
-               rt2800_register_read(rt2x00dev, WLAN_FUN_CTRL, &reg);
+               reg = rt2800_register_read(rt2x00dev, WLAN_FUN_CTRL);
                if (rt2x00_get_field32(reg, WLAN_EN) == 1) {
                        rt2x00_set_field32(&reg, PCIE_APP0_CLK_REQ, 1);
                        rt2800_register_write(rt2x00dev, WLAN_FUN_CTRL, reg);
                }
 
-               rt2800_register_read(rt2x00dev, CMB_CTRL, &reg);
+               reg = rt2800_register_read(rt2x00dev, CMB_CTRL);
                if (!(rt2x00_get_field32(reg, LDO0_EN) == 1)) {
                        rt2x00_set_field32(&reg, LDO0_EN, 1);
                        rt2x00_set_field32(&reg, LDO_BGSEL, 3);
                        rt2800_register_write(rt2x00dev, CMB_CTRL, reg);
                }
 
-               rt2800_register_read(rt2x00dev, OSC_CTRL, &reg);
+               reg = rt2800_register_read(rt2x00dev, OSC_CTRL);
                rt2x00_set_field32(&reg, OSC_ROSC_EN, 1);
                rt2x00_set_field32(&reg, OSC_CAL_REQ, 1);
                rt2x00_set_field32(&reg, OSC_REF_CYCLE, 0x27);
                rt2800_register_write(rt2x00dev, OSC_CTRL, reg);
 
-               rt2800_register_read(rt2x00dev, COEX_CFG0, &reg);
+               reg = rt2800_register_read(rt2x00dev, COEX_CFG0);
                rt2x00_set_field32(&reg, COEX_CFG_ANT, 0x5e);
                rt2800_register_write(rt2x00dev, COEX_CFG0, reg);
 
-               rt2800_register_read(rt2x00dev, COEX_CFG2, &reg);
+               reg = rt2800_register_read(rt2x00dev, COEX_CFG2);
                rt2x00_set_field32(&reg, BT_COEX_CFG1, 0x00);
                rt2x00_set_field32(&reg, BT_COEX_CFG0, 0x17);
                rt2x00_set_field32(&reg, WL_COEX_CFG1, 0x93);
                rt2x00_set_field32(&reg, WL_COEX_CFG0, 0x7f);
                rt2800_register_write(rt2x00dev, COEX_CFG2, reg);
 
-               rt2800_register_read(rt2x00dev, PLL_CTRL, &reg);
+               reg = rt2800_register_read(rt2x00dev, PLL_CTRL);
                rt2x00_set_field32(&reg, PLL_CONTROL, 1);
                rt2800_register_write(rt2x00dev, PLL_CTRL, reg);
        }
@@ -5243,8 +5250,7 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev)
                if (rt2x00_rt_rev_lt(rt2x00dev, RT3071, REV_RT3071E) ||
                    rt2x00_rt_rev_lt(rt2x00dev, RT3090, REV_RT3090E) ||
                    rt2x00_rt_rev_lt(rt2x00dev, RT3390, REV_RT3390E)) {
-                       rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1,
-                                          &eeprom);
+                       eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1);
                        if (rt2x00_get_field16(eeprom, EEPROM_NIC_CONF1_DAC_TEST))
                                rt2800_register_write(rt2x00dev, TX_SW_CFG2,
                                                      0x0000002c);
@@ -5279,8 +5285,7 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev)
                rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000402);
                rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00000000);
                if (rt2x00_rt_rev_lt(rt2x00dev, RT3593, REV_RT3593E)) {
-                       rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1,
-                                          &eeprom);
+                       eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1);
                        if (rt2x00_get_field16(eeprom,
                                               EEPROM_NIC_CONF1_DAC_TEST))
                                rt2800_register_write(rt2x00dev, TX_SW_CFG2,
@@ -5319,7 +5324,7 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev)
                                      0x3630363A);
                rt2800_register_write(rt2x00dev, TX1_RF_GAIN_CORRECT,
                                      0x3630363A);
-               rt2800_register_read(rt2x00dev, TX_ALC_CFG_1, &reg);
+               reg = rt2800_register_read(rt2x00dev, TX_ALC_CFG_1);
                rt2x00_set_field32(&reg, TX_ALC_CFG_1_ROS_BUSY_EN, 0);
                rt2800_register_write(rt2x00dev, TX_ALC_CFG_1, reg);
        } else {
@@ -5327,7 +5332,7 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev)
                rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00080606);
        }
 
-       rt2800_register_read(rt2x00dev, TX_LINK_CFG, &reg);
+       reg = rt2800_register_read(rt2x00dev, TX_LINK_CFG);
        rt2x00_set_field32(&reg, TX_LINK_CFG_REMOTE_MFB_LIFETIME, 32);
        rt2x00_set_field32(&reg, TX_LINK_CFG_MFB_ENABLE, 0);
        rt2x00_set_field32(&reg, TX_LINK_CFG_REMOTE_UMFS_ENABLE, 0);
@@ -5338,13 +5343,13 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev)
        rt2x00_set_field32(&reg, TX_LINK_CFG_REMOTE_MFS, 0);
        rt2800_register_write(rt2x00dev, TX_LINK_CFG, reg);
 
-       rt2800_register_read(rt2x00dev, TX_TIMEOUT_CFG, &reg);
+       reg = rt2800_register_read(rt2x00dev, TX_TIMEOUT_CFG);
        rt2x00_set_field32(&reg, TX_TIMEOUT_CFG_MPDU_LIFETIME, 9);
        rt2x00_set_field32(&reg, TX_TIMEOUT_CFG_RX_ACK_TIMEOUT, 32);
        rt2x00_set_field32(&reg, TX_TIMEOUT_CFG_TX_OP_TIMEOUT, 10);
        rt2800_register_write(rt2x00dev, TX_TIMEOUT_CFG, reg);
 
-       rt2800_register_read(rt2x00dev, MAX_LEN_CFG, &reg);
+       reg = rt2800_register_read(rt2x00dev, MAX_LEN_CFG);
        rt2x00_set_field32(&reg, MAX_LEN_CFG_MAX_MPDU, AGGREGATION_SIZE);
        if (rt2x00_is_usb(rt2x00dev)) {
                drv_data->max_psdu = 3;
@@ -5360,7 +5365,7 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev)
        rt2x00_set_field32(&reg, MAX_LEN_CFG_MIN_MPDU, 10);
        rt2800_register_write(rt2x00dev, MAX_LEN_CFG, reg);
 
-       rt2800_register_read(rt2x00dev, LED_CFG, &reg);
+       reg = rt2800_register_read(rt2x00dev, LED_CFG);
        rt2x00_set_field32(&reg, LED_CFG_ON_PERIOD, 70);
        rt2x00_set_field32(&reg, LED_CFG_OFF_PERIOD, 30);
        rt2x00_set_field32(&reg, LED_CFG_SLOW_BLINK_PERIOD, 3);
@@ -5372,7 +5377,7 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev)
 
        rt2800_register_write(rt2x00dev, PBF_MAX_PCNT, 0x1f3fbf9f);
 
-       rt2800_register_read(rt2x00dev, TX_RTY_CFG, &reg);
+       reg = rt2800_register_read(rt2x00dev, TX_RTY_CFG);
        rt2x00_set_field32(&reg, TX_RTY_CFG_SHORT_RTY_LIMIT, 2);
        rt2x00_set_field32(&reg, TX_RTY_CFG_LONG_RTY_LIMIT, 2);
        rt2x00_set_field32(&reg, TX_RTY_CFG_LONG_RTY_THRE, 2000);
@@ -5381,7 +5386,7 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev)
        rt2x00_set_field32(&reg, TX_RTY_CFG_TX_AUTO_FB_ENABLE, 1);
        rt2800_register_write(rt2x00dev, TX_RTY_CFG, reg);
 
-       rt2800_register_read(rt2x00dev, AUTO_RSP_CFG, &reg);
+       reg = rt2800_register_read(rt2x00dev, AUTO_RSP_CFG);
        rt2x00_set_field32(&reg, AUTO_RSP_CFG_AUTORESPONDER, 1);
        rt2x00_set_field32(&reg, AUTO_RSP_CFG_BAC_ACK_POLICY, 1);
        rt2x00_set_field32(&reg, AUTO_RSP_CFG_CTS_40_MMODE, 1);
@@ -5391,7 +5396,7 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev)
        rt2x00_set_field32(&reg, AUTO_RSP_CFG_ACK_CTS_PSM_BIT, 0);
        rt2800_register_write(rt2x00dev, AUTO_RSP_CFG, reg);
 
-       rt2800_register_read(rt2x00dev, CCK_PROT_CFG, &reg);
+       reg = rt2800_register_read(rt2x00dev, CCK_PROT_CFG);
        rt2x00_set_field32(&reg, CCK_PROT_CFG_PROTECT_RATE, 3);
        rt2x00_set_field32(&reg, CCK_PROT_CFG_PROTECT_CTRL, 0);
        rt2x00_set_field32(&reg, CCK_PROT_CFG_PROTECT_NAV_SHORT, 1);
@@ -5404,7 +5409,7 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev)
        rt2x00_set_field32(&reg, CCK_PROT_CFG_RTS_TH_EN, 1);
        rt2800_register_write(rt2x00dev, CCK_PROT_CFG, reg);
 
-       rt2800_register_read(rt2x00dev, OFDM_PROT_CFG, &reg);
+       reg = rt2800_register_read(rt2x00dev, OFDM_PROT_CFG);
        rt2x00_set_field32(&reg, OFDM_PROT_CFG_PROTECT_RATE, 3);
        rt2x00_set_field32(&reg, OFDM_PROT_CFG_PROTECT_CTRL, 0);
        rt2x00_set_field32(&reg, OFDM_PROT_CFG_PROTECT_NAV_SHORT, 1);
@@ -5417,7 +5422,7 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev)
        rt2x00_set_field32(&reg, OFDM_PROT_CFG_RTS_TH_EN, 1);
        rt2800_register_write(rt2x00dev, OFDM_PROT_CFG, reg);
 
-       rt2800_register_read(rt2x00dev, MM20_PROT_CFG, &reg);
+       reg = rt2800_register_read(rt2x00dev, MM20_PROT_CFG);
        rt2x00_set_field32(&reg, MM20_PROT_CFG_PROTECT_RATE, 0x4004);
        rt2x00_set_field32(&reg, MM20_PROT_CFG_PROTECT_CTRL, 1);
        rt2x00_set_field32(&reg, MM20_PROT_CFG_PROTECT_NAV_SHORT, 1);
@@ -5430,7 +5435,7 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev)
        rt2x00_set_field32(&reg, MM20_PROT_CFG_RTS_TH_EN, 0);
        rt2800_register_write(rt2x00dev, MM20_PROT_CFG, reg);
 
-       rt2800_register_read(rt2x00dev, MM40_PROT_CFG, &reg);
+       reg = rt2800_register_read(rt2x00dev, MM40_PROT_CFG);
        rt2x00_set_field32(&reg, MM40_PROT_CFG_PROTECT_RATE, 0x4084);
        rt2x00_set_field32(&reg, MM40_PROT_CFG_PROTECT_CTRL, 1);
        rt2x00_set_field32(&reg, MM40_PROT_CFG_PROTECT_NAV_SHORT, 1);
@@ -5443,7 +5448,7 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev)
        rt2x00_set_field32(&reg, MM40_PROT_CFG_RTS_TH_EN, 0);
        rt2800_register_write(rt2x00dev, MM40_PROT_CFG, reg);
 
-       rt2800_register_read(rt2x00dev, GF20_PROT_CFG, &reg);
+       reg = rt2800_register_read(rt2x00dev, GF20_PROT_CFG);
        rt2x00_set_field32(&reg, GF20_PROT_CFG_PROTECT_RATE, 0x4004);
        rt2x00_set_field32(&reg, GF20_PROT_CFG_PROTECT_CTRL, 1);
        rt2x00_set_field32(&reg, GF20_PROT_CFG_PROTECT_NAV_SHORT, 1);
@@ -5456,7 +5461,7 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev)
        rt2x00_set_field32(&reg, GF20_PROT_CFG_RTS_TH_EN, 0);
        rt2800_register_write(rt2x00dev, GF20_PROT_CFG, reg);
 
-       rt2800_register_read(rt2x00dev, GF40_PROT_CFG, &reg);
+       reg = rt2800_register_read(rt2x00dev, GF40_PROT_CFG);
        rt2x00_set_field32(&reg, GF40_PROT_CFG_PROTECT_RATE, 0x4084);
        rt2x00_set_field32(&reg, GF40_PROT_CFG_PROTECT_CTRL, 1);
        rt2x00_set_field32(&reg, GF40_PROT_CFG_PROTECT_NAV_SHORT, 1);
@@ -5472,7 +5477,7 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev)
        if (rt2x00_is_usb(rt2x00dev)) {
                rt2800_register_write(rt2x00dev, PBF_CFG, 0xf40006);
 
-               rt2800_register_read(rt2x00dev, WPDMA_GLO_CFG, &reg);
+               reg = rt2800_register_read(rt2x00dev, WPDMA_GLO_CFG);
                rt2x00_set_field32(&reg, WPDMA_GLO_CFG_ENABLE_TX_DMA, 0);
                rt2x00_set_field32(&reg, WPDMA_GLO_CFG_TX_DMA_BUSY, 0);
                rt2x00_set_field32(&reg, WPDMA_GLO_CFG_ENABLE_RX_DMA, 0);
@@ -5489,7 +5494,7 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev)
         * The legacy driver also sets TXOP_CTRL_CFG_RESERVED_TRUN_EN to 1
         * although it is reserved.
         */
-       rt2800_register_read(rt2x00dev, TXOP_CTRL_CFG, &reg);
+       reg = rt2800_register_read(rt2x00dev, TXOP_CTRL_CFG);
        rt2x00_set_field32(&reg, TXOP_CTRL_CFG_TIMEOUT_TRUN_EN, 1);
        rt2x00_set_field32(&reg, TXOP_CTRL_CFG_AC_TRUN_EN, 1);
        rt2x00_set_field32(&reg, TXOP_CTRL_CFG_TXRATEGRP_TRUN_EN, 1);
@@ -5505,7 +5510,7 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev)
        reg = rt2x00_rt(rt2x00dev, RT5592) ? 0x00000082 : 0x00000002;
        rt2800_register_write(rt2x00dev, TXOP_HLDR_ET, reg);
 
-       rt2800_register_read(rt2x00dev, TX_RTS_CFG, &reg);
+       reg = rt2800_register_read(rt2x00dev, TX_RTS_CFG);
        rt2x00_set_field32(&reg, TX_RTS_CFG_AUTO_RTS_RETRY_LIMIT, 7);
        rt2x00_set_field32(&reg, TX_RTS_CFG_RTS_THRES,
                           IEEE80211_MAX_RTS_THRESHOLD);
@@ -5521,7 +5526,7 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev)
         * connection problems with 11g + CTS protection. Hence, use the same
         * defaults as the Ralink driver: 16 for both, CCK and OFDM SIFS.
         */
-       rt2800_register_read(rt2x00dev, XIFS_TIME_CFG, &reg);
+       reg = rt2800_register_read(rt2x00dev, XIFS_TIME_CFG);
        rt2x00_set_field32(&reg, XIFS_TIME_CFG_CCKM_SIFS_TIME, 16);
        rt2x00_set_field32(&reg, XIFS_TIME_CFG_OFDM_SIFS_TIME, 16);
        rt2x00_set_field32(&reg, XIFS_TIME_CFG_OFDM_XIFS_TIME, 4);
@@ -5551,16 +5556,16 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev)
                rt2800_clear_beacon_register(rt2x00dev, i);
 
        if (rt2x00_is_usb(rt2x00dev)) {
-               rt2800_register_read(rt2x00dev, US_CYC_CNT, &reg);
+               reg = rt2800_register_read(rt2x00dev, US_CYC_CNT);
                rt2x00_set_field32(&reg, US_CYC_CNT_CLOCK_CYCLE, 30);
                rt2800_register_write(rt2x00dev, US_CYC_CNT, reg);
        } else if (rt2x00_is_pcie(rt2x00dev)) {
-               rt2800_register_read(rt2x00dev, US_CYC_CNT, &reg);
+               reg = rt2800_register_read(rt2x00dev, US_CYC_CNT);
                rt2x00_set_field32(&reg, US_CYC_CNT_CLOCK_CYCLE, 125);
                rt2800_register_write(rt2x00dev, US_CYC_CNT, reg);
        }
 
-       rt2800_register_read(rt2x00dev, HT_FBK_CFG0, &reg);
+       reg = rt2800_register_read(rt2x00dev, HT_FBK_CFG0);
        rt2x00_set_field32(&reg, HT_FBK_CFG0_HTMCS0FBK, 0);
        rt2x00_set_field32(&reg, HT_FBK_CFG0_HTMCS1FBK, 0);
        rt2x00_set_field32(&reg, HT_FBK_CFG0_HTMCS2FBK, 1);
@@ -5571,7 +5576,7 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev)
        rt2x00_set_field32(&reg, HT_FBK_CFG0_HTMCS7FBK, 6);
        rt2800_register_write(rt2x00dev, HT_FBK_CFG0, reg);
 
-       rt2800_register_read(rt2x00dev, HT_FBK_CFG1, &reg);
+       reg = rt2800_register_read(rt2x00dev, HT_FBK_CFG1);
        rt2x00_set_field32(&reg, HT_FBK_CFG1_HTMCS8FBK, 8);
        rt2x00_set_field32(&reg, HT_FBK_CFG1_HTMCS9FBK, 8);
        rt2x00_set_field32(&reg, HT_FBK_CFG1_HTMCS10FBK, 9);
@@ -5582,7 +5587,7 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev)
        rt2x00_set_field32(&reg, HT_FBK_CFG1_HTMCS15FBK, 14);
        rt2800_register_write(rt2x00dev, HT_FBK_CFG1, reg);
 
-       rt2800_register_read(rt2x00dev, LG_FBK_CFG0, &reg);
+       reg = rt2800_register_read(rt2x00dev, LG_FBK_CFG0);
        rt2x00_set_field32(&reg, LG_FBK_CFG0_OFDMMCS0FBK, 8);
        rt2x00_set_field32(&reg, LG_FBK_CFG0_OFDMMCS1FBK, 8);
        rt2x00_set_field32(&reg, LG_FBK_CFG0_OFDMMCS2FBK, 9);
@@ -5593,7 +5598,7 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev)
        rt2x00_set_field32(&reg, LG_FBK_CFG0_OFDMMCS7FBK, 14);
        rt2800_register_write(rt2x00dev, LG_FBK_CFG0, reg);
 
-       rt2800_register_read(rt2x00dev, LG_FBK_CFG1, &reg);
+       reg = rt2800_register_read(rt2x00dev, LG_FBK_CFG1);
        rt2x00_set_field32(&reg, LG_FBK_CFG0_CCKMCS0FBK, 0);
        rt2x00_set_field32(&reg, LG_FBK_CFG0_CCKMCS1FBK, 0);
        rt2x00_set_field32(&reg, LG_FBK_CFG0_CCKMCS2FBK, 1);
@@ -5603,7 +5608,7 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev)
        /*
         * Do not force the BA window size, we use the TXWI to set it
         */
-       rt2800_register_read(rt2x00dev, AMPDU_BA_WINSIZE, &reg);
+       reg = rt2800_register_read(rt2x00dev, AMPDU_BA_WINSIZE);
        rt2x00_set_field32(&reg, AMPDU_BA_WINSIZE_FORCE_WINSIZE_ENABLE, 0);
        rt2x00_set_field32(&reg, AMPDU_BA_WINSIZE_FORCE_WINSIZE, 0);
        rt2800_register_write(rt2x00dev, AMPDU_BA_WINSIZE, reg);
@@ -5613,24 +5618,24 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev)
         * These registers are cleared on read,
         * so we may pass a useless variable to store the value.
         */
-       rt2800_register_read(rt2x00dev, RX_STA_CNT0, &reg);
-       rt2800_register_read(rt2x00dev, RX_STA_CNT1, &reg);
-       rt2800_register_read(rt2x00dev, RX_STA_CNT2, &reg);
-       rt2800_register_read(rt2x00dev, TX_STA_CNT0, &reg);
-       rt2800_register_read(rt2x00dev, TX_STA_CNT1, &reg);
-       rt2800_register_read(rt2x00dev, TX_STA_CNT2, &reg);
+       reg = rt2800_register_read(rt2x00dev, RX_STA_CNT0);
+       reg = rt2800_register_read(rt2x00dev, RX_STA_CNT1);
+       reg = rt2800_register_read(rt2x00dev, RX_STA_CNT2);
+       reg = rt2800_register_read(rt2x00dev, TX_STA_CNT0);
+       reg = rt2800_register_read(rt2x00dev, TX_STA_CNT1);
+       reg = rt2800_register_read(rt2x00dev, TX_STA_CNT2);
 
        /*
         * Setup leadtime for pre tbtt interrupt to 6ms
         */
-       rt2800_register_read(rt2x00dev, INT_TIMER_CFG, &reg);
+       reg = rt2800_register_read(rt2x00dev, INT_TIMER_CFG);
        rt2x00_set_field32(&reg, INT_TIMER_CFG_PRE_TBTT_TIMER, 6 << 4);
        rt2800_register_write(rt2x00dev, INT_TIMER_CFG, reg);
 
        /*
         * Set up channel statistics timer
         */
-       rt2800_register_read(rt2x00dev, CH_TIME_CFG, &reg);
+       reg = rt2800_register_read(rt2x00dev, CH_TIME_CFG);
        rt2x00_set_field32(&reg, CH_TIME_CFG_EIFS_BUSY, 1);
        rt2x00_set_field32(&reg, CH_TIME_CFG_NAV_BUSY, 1);
        rt2x00_set_field32(&reg, CH_TIME_CFG_RX_BUSY, 1);
@@ -5647,7 +5652,7 @@ static int rt2800_wait_bbp_rf_ready(struct rt2x00_dev *rt2x00dev)
        u32 reg;
 
        for (i = 0; i < REGISTER_BUSY_COUNT; i++) {
-               rt2800_register_read(rt2x00dev, MAC_STATUS_CFG, &reg);
+               reg = rt2800_register_read(rt2x00dev, MAC_STATUS_CFG);
                if (!rt2x00_get_field32(reg, MAC_STATUS_CFG_BBP_RF_BUSY))
                        return 0;
 
@@ -5672,7 +5677,7 @@ static int rt2800_wait_bbp_ready(struct rt2x00_dev *rt2x00dev)
        msleep(1);
 
        for (i = 0; i < REGISTER_BUSY_COUNT; i++) {
-               rt2800_bbp_read(rt2x00dev, 0, &value);
+               value = rt2800_bbp_read(rt2x00dev, 0);
                if ((value != 0xff) && (value != 0x00))
                        return 0;
                udelay(REGISTER_BUSY_DELAY);
@@ -5686,7 +5691,7 @@ static void rt2800_bbp4_mac_if_ctrl(struct rt2x00_dev *rt2x00dev)
 {
        u8 value;
 
-       rt2800_bbp_read(rt2x00dev, 4, &value);
+       value = rt2800_bbp_read(rt2x00dev, 4);
        rt2x00_set_field8(&value, BBP4_MAC_IF_CTRL, 1);
        rt2800_bbp_write(rt2x00dev, 4, value);
 }
@@ -5699,7 +5704,7 @@ static void rt2800_init_freq_calibration(struct rt2x00_dev *rt2x00dev)
 
 static void rt2800_init_bbp_5592_glrt(struct rt2x00_dev *rt2x00dev)
 {
-       const u8 glrt_table[] = {
+       static const u8 glrt_table[] = {
                0xE0, 0x1F, 0X38, 0x32, 0x08, 0x28, 0x19, 0x0A, 0xFF, 0x00, /* 128 ~ 137 */
                0x16, 0x10, 0x10, 0x0B, 0x36, 0x2C, 0x26, 0x24, 0x42, 0x36, /* 138 ~ 147 */
                0x30, 0x2D, 0x4C, 0x46, 0x3D, 0x40, 0x3E, 0x42, 0x3D, 0x40, /* 148 ~ 157 */
@@ -5743,8 +5748,8 @@ static void rt2800_disable_unused_dac_adc(struct rt2x00_dev *rt2x00dev)
        u16 eeprom;
        u8 value;
 
-       rt2800_bbp_read(rt2x00dev, 138, &value);
-       rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF0, &eeprom);
+       value = rt2800_bbp_read(rt2x00dev, 138);
+       eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF0);
        if (rt2x00_get_field16(eeprom, EEPROM_NIC_CONF0_TXPATH) == 1)
                value |= 0x20;
        if (rt2x00_get_field16(eeprom, EEPROM_NIC_CONF0_RXPATH) == 1)
@@ -5927,12 +5932,12 @@ static void rt2800_init_bbp_3290(struct rt2x00_dev *rt2x00dev)
        rt2800_bbp_write(rt2x00dev, 155, 0x3b);
        rt2800_bbp_write(rt2x00dev, 253, 0x04);
 
-       rt2800_bbp_read(rt2x00dev, 47, &value);
+       value = rt2800_bbp_read(rt2x00dev, 47);
        rt2x00_set_field8(&value, BBP47_TSSI_ADC6, 1);
        rt2800_bbp_write(rt2x00dev, 47, value);
 
        /* Use 5-bit ADC for Acquisition and 8-bit ADC for data */
-       rt2800_bbp_read(rt2x00dev, 3, &value);
+       value = rt2800_bbp_read(rt2x00dev, 3);
        rt2x00_set_field8(&value, BBP3_ADC_MODE_SWITCH, 1);
        rt2x00_set_field8(&value, BBP3_ADC_INIT_MODE, 1);
        rt2800_bbp_write(rt2x00dev, 3, value);
@@ -6191,7 +6196,7 @@ static void rt2800_init_bbp_53xx(struct rt2x00_dev *rt2x00dev)
 
        rt2800_disable_unused_dac_adc(rt2x00dev);
 
-       rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1, &eeprom);
+       eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1);
        div_mode = rt2x00_get_field16(eeprom,
                                      EEPROM_NIC_CONF1_ANT_DIVERSITY);
        ant = (div_mode == 3) ? 1 : 0;
@@ -6200,7 +6205,7 @@ static void rt2800_init_bbp_53xx(struct rt2x00_dev *rt2x00dev)
        if (rt2x00_has_cap_bt_coexist(rt2x00dev)) {
                u32 reg;
 
-               rt2800_register_read(rt2x00dev, GPIO_CTRL, &reg);
+               reg = rt2800_register_read(rt2x00dev, GPIO_CTRL);
                rt2x00_set_field32(&reg, GPIO_CTRL_DIR3, 0);
                rt2x00_set_field32(&reg, GPIO_CTRL_DIR6, 0);
                rt2x00_set_field32(&reg, GPIO_CTRL_VAL3, 0);
@@ -6219,7 +6224,7 @@ static void rt2800_init_bbp_53xx(struct rt2x00_dev *rt2x00dev)
                rt2800_bbp_write(rt2x00dev, 154, 0); /* Clear previously selected antenna */
        }
 
-       rt2800_bbp_read(rt2x00dev, 152, &value);
+       value = rt2800_bbp_read(rt2x00dev, 152);
        if (ant == 0)
                rt2x00_set_field8(&value, BBP152_RX_DEFAULT_ANT, 1);
        else
@@ -6237,7 +6242,7 @@ static void rt2800_init_bbp_5592(struct rt2x00_dev *rt2x00dev)
 
        rt2800_init_bbp_early(rt2x00dev);
 
-       rt2800_bbp_read(rt2x00dev, 105, &value);
+       value = rt2800_bbp_read(rt2x00dev, 105);
        rt2x00_set_field8(&value, BBP105_MLD,
                          rt2x00dev->default_ant.rx_chain_num == 2);
        rt2800_bbp_write(rt2x00dev, 105, value);
@@ -6277,10 +6282,10 @@ static void rt2800_init_bbp_5592(struct rt2x00_dev *rt2x00dev)
 
        rt2800_bbp4_mac_if_ctrl(rt2x00dev);
 
-       rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1, &eeprom);
+       eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1);
        div_mode = rt2x00_get_field16(eeprom, EEPROM_NIC_CONF1_ANT_DIVERSITY);
        ant = (div_mode == 3) ? 1 : 0;
-       rt2800_bbp_read(rt2x00dev, 152, &value);
+       value = rt2800_bbp_read(rt2x00dev, 152);
        if (ant == 0) {
                /* Main antenna */
                rt2x00_set_field8(&value, BBP152_RX_DEFAULT_ANT, 1);
@@ -6291,7 +6296,7 @@ static void rt2800_init_bbp_5592(struct rt2x00_dev *rt2x00dev)
        rt2800_bbp_write(rt2x00dev, 152, value);
 
        if (rt2x00_rt_rev_gte(rt2x00dev, RT5592, REV_RT5592C)) {
-               rt2800_bbp_read(rt2x00dev, 254, &value);
+               value = rt2800_bbp_read(rt2x00dev, 254);
                rt2x00_set_field8(&value, BBP254_BIT7, 1);
                rt2800_bbp_write(rt2x00dev, 254, value);
        }
@@ -6317,11 +6322,10 @@ static void rt2800_bbp_dcoc_write(struct rt2x00_dev *rt2x00dev,
        rt2800_bbp_write(rt2x00dev, 159, value);
 }
 
-static void rt2800_bbp_dcoc_read(struct rt2x00_dev *rt2x00dev,
-                                const u8 reg, u8 *value)
+static u8 rt2800_bbp_dcoc_read(struct rt2x00_dev *rt2x00dev, const u8 reg)
 {
        rt2800_bbp_write(rt2x00dev, 158, reg);
-       rt2800_bbp_read(rt2x00dev, 159, value);
+       return rt2800_bbp_read(rt2x00dev, 159);
 }
 
 static void rt2800_init_bbp_6352(struct rt2x00_dev *rt2x00dev)
@@ -6329,7 +6333,7 @@ static void rt2800_init_bbp_6352(struct rt2x00_dev *rt2x00dev)
        u8 bbp;
 
        /* Apply Maximum Likelihood Detection (MLD) for 2 stream case */
-       rt2800_bbp_read(rt2x00dev, 105, &bbp);
+       bbp = rt2800_bbp_read(rt2x00dev, 105);
        rt2x00_set_field8(&bbp, BBP105_MLD,
                          rt2x00dev->default_ant.rx_chain_num == 2);
        rt2800_bbp_write(rt2x00dev, 105, bbp);
@@ -6338,7 +6342,7 @@ static void rt2800_init_bbp_6352(struct rt2x00_dev *rt2x00dev)
        rt2800_bbp4_mac_if_ctrl(rt2x00dev);
 
        /* Fix I/Q swap issue */
-       rt2800_bbp_read(rt2x00dev, 1, &bbp);
+       bbp = rt2800_bbp_read(rt2x00dev, 1);
        bbp |= 0x04;
        rt2800_bbp_write(rt2x00dev, 1, bbp);
 
@@ -6578,8 +6582,8 @@ static void rt2800_init_bbp(struct rt2x00_dev *rt2x00dev)
        }
 
        for (i = 0; i < EEPROM_BBP_SIZE; i++) {
-               rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_BBP_START, i,
-                                             &eeprom);
+               eeprom = rt2800_eeprom_read_from_array(rt2x00dev,
+                                                      EEPROM_BBP_START, i);
 
                if (eeprom != 0xffff && eeprom != 0x0000) {
                        reg_id = rt2x00_get_field16(eeprom, EEPROM_BBP_REG_ID);
@@ -6593,7 +6597,7 @@ static void rt2800_led_open_drain_enable(struct rt2x00_dev *rt2x00dev)
 {
        u32 reg;
 
-       rt2800_register_read(rt2x00dev, OPT_14_CSR, &reg);
+       reg = rt2800_register_read(rt2x00dev, OPT_14_CSR);
        rt2x00_set_field32(&reg, OPT_14_CSR_BIT0, 1);
        rt2800_register_write(rt2x00dev, OPT_14_CSR, reg);
 }
@@ -6611,15 +6615,15 @@ static u8 rt2800_init_rx_filter(struct rt2x00_dev *rt2x00dev, bool bw40,
 
        rt2800_rfcsr_write(rt2x00dev, 24, rfcsr24);
 
-       rt2800_bbp_read(rt2x00dev, 4, &bbp);
+       bbp = rt2800_bbp_read(rt2x00dev, 4);
        rt2x00_set_field8(&bbp, BBP4_BANDWIDTH, 2 * bw40);
        rt2800_bbp_write(rt2x00dev, 4, bbp);
 
-       rt2800_rfcsr_read(rt2x00dev, 31, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 31);
        rt2x00_set_field8(&rfcsr, RFCSR31_RX_H20M, bw40);
        rt2800_rfcsr_write(rt2x00dev, 31, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 22, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 22);
        rt2x00_set_field8(&rfcsr, RFCSR22_BASEBAND_LOOPBACK, 1);
        rt2800_rfcsr_write(rt2x00dev, 22, rfcsr);
 
@@ -6632,7 +6636,7 @@ static u8 rt2800_init_rx_filter(struct rt2x00_dev *rt2x00dev, bool bw40,
                rt2800_bbp_write(rt2x00dev, 25, 0x90);
                msleep(1);
 
-               rt2800_bbp_read(rt2x00dev, 55, &passband);
+               passband = rt2800_bbp_read(rt2x00dev, 55);
                if (passband)
                        break;
        }
@@ -6646,7 +6650,7 @@ static u8 rt2800_init_rx_filter(struct rt2x00_dev *rt2x00dev, bool bw40,
                rt2800_bbp_write(rt2x00dev, 25, 0x90);
                msleep(1);
 
-               rt2800_bbp_read(rt2x00dev, 55, &stopband);
+               stopband = rt2800_bbp_read(rt2x00dev, 55);
 
                if ((passband - stopband) <= filter_target) {
                        rfcsr24++;
@@ -6668,7 +6672,7 @@ static void rt2800_rf_init_calibration(struct rt2x00_dev *rt2x00dev,
 {
        u8 rfcsr;
 
-       rt2800_rfcsr_read(rt2x00dev, rf_reg, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, rf_reg);
        rt2x00_set_field8(&rfcsr, FIELD8(0x80), 1);
        rt2800_rfcsr_write(rt2x00dev, rf_reg, rfcsr);
        msleep(1);
@@ -6702,22 +6706,22 @@ static void rt2800_rx_filter_calibration(struct rt2x00_dev *rt2x00dev)
        /*
         * Save BBP 25 & 26 values for later use in channel switching (for 3052)
         */
-       rt2800_bbp_read(rt2x00dev, 25, &drv_data->bbp25);
-       rt2800_bbp_read(rt2x00dev, 26, &drv_data->bbp26);
+       drv_data->bbp25 = rt2800_bbp_read(rt2x00dev, 25);
+       drv_data->bbp26 = rt2800_bbp_read(rt2x00dev, 26);
 
        /*
         * Set back to initial state
         */
        rt2800_bbp_write(rt2x00dev, 24, 0);
 
-       rt2800_rfcsr_read(rt2x00dev, 22, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 22);
        rt2x00_set_field8(&rfcsr, RFCSR22_BASEBAND_LOOPBACK, 0);
        rt2800_rfcsr_write(rt2x00dev, 22, rfcsr);
 
        /*
         * Set BBP back to BW20
         */
-       rt2800_bbp_read(rt2x00dev, 4, &bbp);
+       bbp = rt2800_bbp_read(rt2x00dev, 4);
        rt2x00_set_field8(&bbp, BBP4_BANDWIDTH, 0);
        rt2800_bbp_write(rt2x00dev, 4, bbp);
 }
@@ -6728,7 +6732,7 @@ static void rt2800_normal_mode_setup_3xxx(struct rt2x00_dev *rt2x00dev)
        u8 min_gain, rfcsr, bbp;
        u16 eeprom;
 
-       rt2800_rfcsr_read(rt2x00dev, 17, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 17);
 
        rt2x00_set_field8(&rfcsr, RFCSR17_TX_LO1_EN, 0);
        if (rt2x00_rt(rt2x00dev, RT3070) ||
@@ -6749,8 +6753,8 @@ static void rt2800_normal_mode_setup_3xxx(struct rt2x00_dev *rt2x00dev)
 
        if (rt2x00_rt(rt2x00dev, RT3090)) {
                /*  Turn off unused DAC1 and ADC1 to reduce power consumption */
-               rt2800_bbp_read(rt2x00dev, 138, &bbp);
-               rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF0, &eeprom);
+               bbp = rt2800_bbp_read(rt2x00dev, 138);
+               eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF0);
                if (rt2x00_get_field16(eeprom, EEPROM_NIC_CONF0_RXPATH) == 1)
                        rt2x00_set_field8(&bbp, BBP138_RX_ADC1, 0);
                if (rt2x00_get_field16(eeprom, EEPROM_NIC_CONF0_TXPATH) == 1)
@@ -6759,7 +6763,7 @@ static void rt2800_normal_mode_setup_3xxx(struct rt2x00_dev *rt2x00dev)
        }
 
        if (rt2x00_rt(rt2x00dev, RT3070)) {
-               rt2800_rfcsr_read(rt2x00dev, 27, &rfcsr);
+               rfcsr = rt2800_rfcsr_read(rt2x00dev, 27);
                if (rt2x00_rt_rev_lt(rt2x00dev, RT3070, REV_RT3070F))
                        rt2x00_set_field8(&rfcsr, RFCSR27_R1, 3);
                else
@@ -6771,7 +6775,7 @@ static void rt2800_normal_mode_setup_3xxx(struct rt2x00_dev *rt2x00dev)
        } else if (rt2x00_rt(rt2x00dev, RT3071) ||
                   rt2x00_rt(rt2x00dev, RT3090) ||
                   rt2x00_rt(rt2x00dev, RT3390)) {
-               rt2800_rfcsr_read(rt2x00dev, 1, &rfcsr);
+               rfcsr = rt2800_rfcsr_read(rt2x00dev, 1);
                rt2x00_set_field8(&rfcsr, RFCSR1_RF_BLOCK_EN, 1);
                rt2x00_set_field8(&rfcsr, RFCSR1_RX0_PD, 0);
                rt2x00_set_field8(&rfcsr, RFCSR1_TX0_PD, 0);
@@ -6779,15 +6783,15 @@ static void rt2800_normal_mode_setup_3xxx(struct rt2x00_dev *rt2x00dev)
                rt2x00_set_field8(&rfcsr, RFCSR1_TX1_PD, 1);
                rt2800_rfcsr_write(rt2x00dev, 1, rfcsr);
 
-               rt2800_rfcsr_read(rt2x00dev, 15, &rfcsr);
+               rfcsr = rt2800_rfcsr_read(rt2x00dev, 15);
                rt2x00_set_field8(&rfcsr, RFCSR15_TX_LO2_EN, 0);
                rt2800_rfcsr_write(rt2x00dev, 15, rfcsr);
 
-               rt2800_rfcsr_read(rt2x00dev, 20, &rfcsr);
+               rfcsr = rt2800_rfcsr_read(rt2x00dev, 20);
                rt2x00_set_field8(&rfcsr, RFCSR20_RX_LO1_EN, 0);
                rt2800_rfcsr_write(rt2x00dev, 20, rfcsr);
 
-               rt2800_rfcsr_read(rt2x00dev, 21, &rfcsr);
+               rfcsr = rt2800_rfcsr_read(rt2x00dev, 21);
                rt2x00_set_field8(&rfcsr, RFCSR21_RX_LO2_EN, 0);
                rt2800_rfcsr_write(rt2x00dev, 21, rfcsr);
        }
@@ -6799,30 +6803,30 @@ static void rt2800_normal_mode_setup_3593(struct rt2x00_dev *rt2x00dev)
        u8 rfcsr;
        u8 tx_gain;
 
-       rt2800_rfcsr_read(rt2x00dev, 50, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 50);
        rt2x00_set_field8(&rfcsr, RFCSR50_TX_LO2_EN, 0);
        rt2800_rfcsr_write(rt2x00dev, 50, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 51, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 51);
        tx_gain = rt2x00_get_field8(drv_data->txmixer_gain_24g,
                                    RFCSR17_TXMIXER_GAIN);
        rt2x00_set_field8(&rfcsr, RFCSR51_BITS24, tx_gain);
        rt2800_rfcsr_write(rt2x00dev, 51, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 38, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 38);
        rt2x00_set_field8(&rfcsr, RFCSR38_RX_LO1_EN, 0);
        rt2800_rfcsr_write(rt2x00dev, 38, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 39, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 39);
        rt2x00_set_field8(&rfcsr, RFCSR39_RX_LO2_EN, 0);
        rt2800_rfcsr_write(rt2x00dev, 39, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 1, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 1);
        rt2x00_set_field8(&rfcsr, RFCSR1_RF_BLOCK_EN, 1);
        rt2x00_set_field8(&rfcsr, RFCSR1_PLL_PD, 1);
        rt2800_rfcsr_write(rt2x00dev, 1, rfcsr);
 
-       rt2800_rfcsr_read(rt2x00dev, 30, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 30);
        rt2x00_set_field8(&rfcsr, RFCSR30_RX_VCM, 2);
        rt2800_rfcsr_write(rt2x00dev, 30, rfcsr);
 
@@ -6835,25 +6839,25 @@ static void rt2800_normal_mode_setup_5xxx(struct rt2x00_dev *rt2x00dev)
        u16 eeprom;
 
        /*  Turn off unused DAC1 and ADC1 to reduce power consumption */
-       rt2800_bbp_read(rt2x00dev, 138, &reg);
-       rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF0, &eeprom);
+       reg = rt2800_bbp_read(rt2x00dev, 138);
+       eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF0);
        if (rt2x00_get_field16(eeprom, EEPROM_NIC_CONF0_RXPATH) == 1)
                rt2x00_set_field8(&reg, BBP138_RX_ADC1, 0);
        if (rt2x00_get_field16(eeprom, EEPROM_NIC_CONF0_TXPATH) == 1)
                rt2x00_set_field8(&reg, BBP138_TX_DAC1, 1);
        rt2800_bbp_write(rt2x00dev, 138, reg);
 
-       rt2800_rfcsr_read(rt2x00dev, 38, &reg);
+       reg = rt2800_rfcsr_read(rt2x00dev, 38);
        rt2x00_set_field8(&reg, RFCSR38_RX_LO1_EN, 0);
        rt2800_rfcsr_write(rt2x00dev, 38, reg);
 
-       rt2800_rfcsr_read(rt2x00dev, 39, &reg);
+       reg = rt2800_rfcsr_read(rt2x00dev, 39);
        rt2x00_set_field8(&reg, RFCSR39_RX_LO2_EN, 0);
        rt2800_rfcsr_write(rt2x00dev, 39, reg);
 
        rt2800_bbp4_mac_if_ctrl(rt2x00dev);
 
-       rt2800_rfcsr_read(rt2x00dev, 30, &reg);
+       reg = rt2800_rfcsr_read(rt2x00dev, 30);
        rt2x00_set_field8(&reg, RFCSR30_RX_VCM, 2);
        rt2800_rfcsr_write(rt2x00dev, 30, reg);
 }
@@ -6926,7 +6930,7 @@ static void rt2800_init_rfcsr_30xx(struct rt2x00_dev *rt2x00dev)
        rt2800_rfcsr_write(rt2x00dev, 29, 0x1f);
 
        if (rt2x00_rt_rev_lt(rt2x00dev, RT3070, REV_RT3070F)) {
-               rt2800_register_read(rt2x00dev, LDO_CFG0, &reg);
+               reg = rt2800_register_read(rt2x00dev, LDO_CFG0);
                rt2x00_set_field32(&reg, LDO_CFG0_BGSEL, 1);
                rt2x00_set_field32(&reg, LDO_CFG0_LDO_CORE_VLEVEL, 3);
                rt2800_register_write(rt2x00dev, LDO_CFG0, reg);
@@ -6934,16 +6938,15 @@ static void rt2800_init_rfcsr_30xx(struct rt2x00_dev *rt2x00dev)
                   rt2x00_rt(rt2x00dev, RT3090)) {
                rt2800_rfcsr_write(rt2x00dev, 31, 0x14);
 
-               rt2800_rfcsr_read(rt2x00dev, 6, &rfcsr);
+               rfcsr = rt2800_rfcsr_read(rt2x00dev, 6);
                rt2x00_set_field8(&rfcsr, RFCSR6_R2, 1);
                rt2800_rfcsr_write(rt2x00dev, 6, rfcsr);
 
-               rt2800_register_read(rt2x00dev, LDO_CFG0, &reg);
+               reg = rt2800_register_read(rt2x00dev, LDO_CFG0);
                rt2x00_set_field32(&reg, LDO_CFG0_BGSEL, 1);
                if (rt2x00_rt_rev_lt(rt2x00dev, RT3071, REV_RT3071E) ||
                    rt2x00_rt_rev_lt(rt2x00dev, RT3090, REV_RT3090E)) {
-                       rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1,
-                                          &eeprom);
+                       eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1);
                        if (rt2x00_get_field16(eeprom, EEPROM_NIC_CONF1_DAC_TEST))
                                rt2x00_set_field32(&reg, LDO_CFG0_LDO_CORE_VLEVEL, 3);
                        else
@@ -6951,7 +6954,7 @@ static void rt2800_init_rfcsr_30xx(struct rt2x00_dev *rt2x00dev)
                }
                rt2800_register_write(rt2x00dev, LDO_CFG0, reg);
 
-               rt2800_register_read(rt2x00dev, GPIO_SWITCH, &reg);
+               reg = rt2800_register_read(rt2x00dev, GPIO_SWITCH);
                rt2x00_set_field32(&reg, GPIO_SWITCH_5, 0);
                rt2800_register_write(rt2x00dev, GPIO_SWITCH, reg);
        }
@@ -7020,7 +7023,7 @@ static void rt2800_init_rfcsr_3290(struct rt2x00_dev *rt2x00dev)
        rt2800_rfcsr_write(rt2x00dev, 60, 0x45);
        rt2800_rfcsr_write(rt2x00dev, 61, 0xc1);
 
-       rt2800_rfcsr_read(rt2x00dev, 29, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 29);
        rt2x00_set_field8(&rfcsr, RFCSR29_RSSI_GAIN, 3);
        rt2800_rfcsr_write(rt2x00dev, 29, rfcsr);
 
@@ -7166,7 +7169,7 @@ static void rt2800_init_rfcsr_3390(struct rt2x00_dev *rt2x00dev)
        rt2800_rfcsr_write(rt2x00dev, 30, 0x20);
        rt2800_rfcsr_write(rt2x00dev, 31, 0x0f);
 
-       rt2800_register_read(rt2x00dev, GPIO_SWITCH, &reg);
+       reg = rt2800_register_read(rt2x00dev, GPIO_SWITCH);
        rt2x00_set_field32(&reg, GPIO_SWITCH_5, 0);
        rt2800_register_write(rt2x00dev, GPIO_SWITCH, reg);
 
@@ -7218,16 +7221,16 @@ static void rt2800_init_rfcsr_3572(struct rt2x00_dev *rt2x00dev)
        rt2800_rfcsr_write(rt2x00dev, 30, 0x09);
        rt2800_rfcsr_write(rt2x00dev, 31, 0x10);
 
-       rt2800_rfcsr_read(rt2x00dev, 6, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 6);
        rt2x00_set_field8(&rfcsr, RFCSR6_R2, 1);
        rt2800_rfcsr_write(rt2x00dev, 6, rfcsr);
 
-       rt2800_register_read(rt2x00dev, LDO_CFG0, &reg);
+       reg = rt2800_register_read(rt2x00dev, LDO_CFG0);
        rt2x00_set_field32(&reg, LDO_CFG0_LDO_CORE_VLEVEL, 3);
        rt2x00_set_field32(&reg, LDO_CFG0_BGSEL, 1);
        rt2800_register_write(rt2x00dev, LDO_CFG0, reg);
        msleep(1);
-       rt2800_register_read(rt2x00dev, LDO_CFG0, &reg);
+       reg = rt2800_register_read(rt2x00dev, LDO_CFG0);
        rt2x00_set_field32(&reg, LDO_CFG0_LDO_CORE_VLEVEL, 0);
        rt2x00_set_field32(&reg, LDO_CFG0_BGSEL, 1);
        rt2800_register_write(rt2x00dev, LDO_CFG0, reg);
@@ -7242,7 +7245,7 @@ static void rt3593_post_bbp_init(struct rt2x00_dev *rt2x00dev)
        u8 bbp;
        bool txbf_enabled = false; /* FIXME */
 
-       rt2800_bbp_read(rt2x00dev, 105, &bbp);
+       bbp = rt2800_bbp_read(rt2x00dev, 105);
        if (rt2x00dev->default_ant.rx_chain_num == 1)
                rt2x00_set_field8(&bbp, BBP105_MLD, 0);
        else
@@ -7291,7 +7294,7 @@ static void rt2800_init_rfcsr_3593(struct rt2x00_dev *rt2x00dev)
        u8 rfcsr;
 
        /* Disable GPIO #4 and #7 function for LAN PE control */
-       rt2800_register_read(rt2x00dev, GPIO_SWITCH, &reg);
+       reg = rt2800_register_read(rt2x00dev, GPIO_SWITCH);
        rt2x00_set_field32(&reg, GPIO_SWITCH_4, 0);
        rt2x00_set_field32(&reg, GPIO_SWITCH_7, 0);
        rt2800_register_write(rt2x00dev, GPIO_SWITCH, reg);
@@ -7332,22 +7335,22 @@ static void rt2800_init_rfcsr_3593(struct rt2x00_dev *rt2x00dev)
 
        /* Initiate calibration */
        /* TODO: use rt2800_rf_init_calibration ? */
-       rt2800_rfcsr_read(rt2x00dev, 2, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 2);
        rt2x00_set_field8(&rfcsr, RFCSR2_RESCAL_EN, 1);
        rt2800_rfcsr_write(rt2x00dev, 2, rfcsr);
 
        rt2800_freq_cal_mode1(rt2x00dev);
 
-       rt2800_rfcsr_read(rt2x00dev, 18, &rfcsr);
+       rfcsr = rt2800_rfcsr_read(rt2x00dev, 18);
        rt2x00_set_field8(&rfcsr, RFCSR18_XO_TUNE_BYPASS, 1);
        rt2800_rfcsr_write(rt2x00dev, 18, rfcsr);
 
-       rt2800_register_read(rt2x00dev, LDO_CFG0, &reg);
+       reg = rt2800_register_read(rt2x00dev, LDO_CFG0);
        rt2x00_set_field32(&reg, LDO_CFG0_LDO_CORE_VLEVEL, 3);
        rt2x00_set_field32(&reg, LDO_CFG0_BGSEL, 1);
        rt2800_register_write(rt2x00dev, LDO_CFG0, reg);
        usleep_range(1000, 1500);
-       rt2800_register_read(rt2x00dev, LDO_CFG0, &reg);
+       reg = rt2800_register_read(rt2x00dev, LDO_CFG0);
        rt2x00_set_field32(&reg, LDO_CFG0_LDO_CORE_VLEVEL, 0);
        rt2800_register_write(rt2x00dev, LDO_CFG0, reg);
 
@@ -7356,8 +7359,8 @@ static void rt2800_init_rfcsr_3593(struct rt2x00_dev *rt2x00dev)
        drv_data->calibration_bw40 = 0x2f;
 
        /* Save BBP 25 & 26 values for later use in channel switching */
-       rt2800_bbp_read(rt2x00dev, 25, &drv_data->bbp25);
-       rt2800_bbp_read(rt2x00dev, 26, &drv_data->bbp26);
+       drv_data->bbp25 = rt2800_bbp_read(rt2x00dev, 25);
+       drv_data->bbp26 = rt2800_bbp_read(rt2x00dev, 26);
 
        rt2800_led_open_drain_enable(rt2x00dev);
        rt2800_normal_mode_setup_3593(rt2x00dev);
@@ -7651,19 +7654,19 @@ static void rt2800_bbp_core_soft_reset(struct rt2x00_dev *rt2x00dev,
 {
        u8 bbp_val;
 
-       rt2800_bbp_read(rt2x00dev, 21, &bbp_val);
+       bbp_val = rt2800_bbp_read(rt2x00dev, 21);
        bbp_val |= 0x1;
        rt2800_bbp_write(rt2x00dev, 21, bbp_val);
        usleep_range(100, 200);
 
        if (set_bw) {
-               rt2800_bbp_read(rt2x00dev, 4, &bbp_val);
+               bbp_val = rt2800_bbp_read(rt2x00dev, 4);
                rt2x00_set_field8(&bbp_val, BBP4_BANDWIDTH, 2 * is_ht40);
                rt2800_bbp_write(rt2x00dev, 4, bbp_val);
                usleep_range(100, 200);
        }
 
-       rt2800_bbp_read(rt2x00dev, 21, &bbp_val);
+       bbp_val = rt2800_bbp_read(rt2x00dev, 21);
        bbp_val &= (~0x1);
        rt2800_bbp_write(rt2x00dev, 21, bbp_val);
        usleep_range(100, 200);
@@ -7680,7 +7683,7 @@ static int rt2800_rf_lp_config(struct rt2x00_dev *rt2x00dev, bool btxcal)
 
        rt2800_register_write(rt2x00dev, RF_BYPASS0, 0x06);
 
-       rt2800_rfcsr_read_bank(rt2x00dev, 5, 17, &rf_val);
+       rf_val = rt2800_rfcsr_read_bank(rt2x00dev, 5, 17);
        rf_val |= 0x80;
        rt2800_rfcsr_write_bank(rt2x00dev, 5, 17, rf_val);
 
@@ -7688,11 +7691,11 @@ static int rt2800_rf_lp_config(struct rt2x00_dev *rt2x00dev, bool btxcal)
                rt2800_rfcsr_write_bank(rt2x00dev, 5, 18, 0xC1);
                rt2800_rfcsr_write_bank(rt2x00dev, 5, 19, 0x20);
                rt2800_rfcsr_write_bank(rt2x00dev, 5, 20, 0x02);
-               rt2800_rfcsr_read_bank(rt2x00dev, 5, 3, &rf_val);
+               rf_val = rt2800_rfcsr_read_bank(rt2x00dev, 5, 3);
                rf_val &= (~0x3F);
                rf_val |= 0x3F;
                rt2800_rfcsr_write_bank(rt2x00dev, 5, 3, rf_val);
-               rt2800_rfcsr_read_bank(rt2x00dev, 5, 4, &rf_val);
+               rf_val = rt2800_rfcsr_read_bank(rt2x00dev, 5, 4);
                rf_val &= (~0x3F);
                rf_val |= 0x3F;
                rt2800_rfcsr_write_bank(rt2x00dev, 5, 4, rf_val);
@@ -7701,11 +7704,11 @@ static int rt2800_rf_lp_config(struct rt2x00_dev *rt2x00dev, bool btxcal)
                rt2800_rfcsr_write_bank(rt2x00dev, 5, 18, 0xF1);
                rt2800_rfcsr_write_bank(rt2x00dev, 5, 19, 0x18);
                rt2800_rfcsr_write_bank(rt2x00dev, 5, 20, 0x02);
-               rt2800_rfcsr_read_bank(rt2x00dev, 5, 3, &rf_val);
+               rf_val = rt2800_rfcsr_read_bank(rt2x00dev, 5, 3);
                rf_val &= (~0x3F);
                rf_val |= 0x34;
                rt2800_rfcsr_write_bank(rt2x00dev, 5, 3, rf_val);
-               rt2800_rfcsr_read_bank(rt2x00dev, 5, 4, &rf_val);
+               rf_val = rt2800_rfcsr_read_bank(rt2x00dev, 5, 4);
                rf_val &= (~0x3F);
                rf_val |= 0x34;
                rt2800_rfcsr_write_bank(rt2x00dev, 5, 4, rf_val);
@@ -7725,14 +7728,14 @@ static char rt2800_lp_tx_filter_bw_cal(struct rt2x00_dev *rt2x00dev)
        cnt = 0;
        do {
                usleep_range(500, 2000);
-               rt2800_bbp_read(rt2x00dev, 159, &bbp_val);
+               bbp_val = rt2800_bbp_read(rt2x00dev, 159);
                if (bbp_val == 0x02 || cnt == 20)
                        break;
 
                cnt++;
        } while (cnt < 20);
 
-       rt2800_bbp_dcoc_read(rt2x00dev, 0x39, &bbp_val);
+       bbp_val = rt2800_bbp_dcoc_read(rt2x00dev, 0x39);
        cal_val = bbp_val & 0x7F;
        if (cal_val >= 0x40)
                cal_val -= 128;
@@ -7761,67 +7764,67 @@ static void rt2800_bw_filter_calibration(struct rt2x00_dev *rt2x00dev,
        u32 MAC_RF_CONTROL0, MAC_RF_BYPASS0;
 
        /* Save MAC registers */
-       rt2800_register_read(rt2x00dev, RF_CONTROL0, &MAC_RF_CONTROL0);
-       rt2800_register_read(rt2x00dev, RF_BYPASS0, &MAC_RF_BYPASS0);
+       MAC_RF_CONTROL0 = rt2800_register_read(rt2x00dev, RF_CONTROL0);
+       MAC_RF_BYPASS0 = rt2800_register_read(rt2x00dev, RF_BYPASS0);
 
        /* save BBP registers */
-       rt2800_bbp_read(rt2x00dev, 23, &savebbpr23);
+       savebbpr23 = rt2800_bbp_read(rt2x00dev, 23);
 
-       rt2800_bbp_dcoc_read(rt2x00dev, 0, &savebbp159r0);
-       rt2800_bbp_dcoc_read(rt2x00dev, 2, &savebbp159r2);
+       savebbp159r0 = rt2800_bbp_dcoc_read(rt2x00dev, 0);
+       savebbp159r2 = rt2800_bbp_dcoc_read(rt2x00dev, 2);
 
        /* Save RF registers */
-       rt2800_rfcsr_read_bank(rt2x00dev, 5, 0, &saverfb5r00);
-       rt2800_rfcsr_read_bank(rt2x00dev, 5, 1, &saverfb5r01);
-       rt2800_rfcsr_read_bank(rt2x00dev, 5, 3, &saverfb5r03);
-       rt2800_rfcsr_read_bank(rt2x00dev, 5, 4, &saverfb5r04);
-       rt2800_rfcsr_read_bank(rt2x00dev, 5, 5, &saverfb5r05);
-       rt2800_rfcsr_read_bank(rt2x00dev, 5, 6, &saverfb5r06);
-       rt2800_rfcsr_read_bank(rt2x00dev, 5, 7, &saverfb5r07);
-       rt2800_rfcsr_read_bank(rt2x00dev, 5, 8, &saverfb5r08);
-       rt2800_rfcsr_read_bank(rt2x00dev, 5, 17, &saverfb5r17);
-       rt2800_rfcsr_read_bank(rt2x00dev, 5, 18, &saverfb5r18);
-       rt2800_rfcsr_read_bank(rt2x00dev, 5, 19, &saverfb5r19);
-       rt2800_rfcsr_read_bank(rt2x00dev, 5, 20, &saverfb5r20);
-
-       rt2800_rfcsr_read_bank(rt2x00dev, 5, 37, &saverfb5r37);
-       rt2800_rfcsr_read_bank(rt2x00dev, 5, 38, &saverfb5r38);
-       rt2800_rfcsr_read_bank(rt2x00dev, 5, 39, &saverfb5r39);
-       rt2800_rfcsr_read_bank(rt2x00dev, 5, 40, &saverfb5r40);
-       rt2800_rfcsr_read_bank(rt2x00dev, 5, 41, &saverfb5r41);
-       rt2800_rfcsr_read_bank(rt2x00dev, 5, 42, &saverfb5r42);
-       rt2800_rfcsr_read_bank(rt2x00dev, 5, 43, &saverfb5r43);
-       rt2800_rfcsr_read_bank(rt2x00dev, 5, 44, &saverfb5r44);
-       rt2800_rfcsr_read_bank(rt2x00dev, 5, 45, &saverfb5r45);
-       rt2800_rfcsr_read_bank(rt2x00dev, 5, 46, &saverfb5r46);
-
-       rt2800_rfcsr_read_bank(rt2x00dev, 5, 58, &saverfb5r58);
-       rt2800_rfcsr_read_bank(rt2x00dev, 5, 59, &saverfb5r59);
-
-       rt2800_rfcsr_read_bank(rt2x00dev, 5, 0, &rf_val);
+       saverfb5r00 = rt2800_rfcsr_read_bank(rt2x00dev, 5, 0);
+       saverfb5r01 = rt2800_rfcsr_read_bank(rt2x00dev, 5, 1);
+       saverfb5r03 = rt2800_rfcsr_read_bank(rt2x00dev, 5, 3);
+       saverfb5r04 = rt2800_rfcsr_read_bank(rt2x00dev, 5, 4);
+       saverfb5r05 = rt2800_rfcsr_read_bank(rt2x00dev, 5, 5);
+       saverfb5r06 = rt2800_rfcsr_read_bank(rt2x00dev, 5, 6);
+       saverfb5r07 = rt2800_rfcsr_read_bank(rt2x00dev, 5, 7);
+       saverfb5r08 = rt2800_rfcsr_read_bank(rt2x00dev, 5, 8);
+       saverfb5r17 = rt2800_rfcsr_read_bank(rt2x00dev, 5, 17);
+       saverfb5r18 = rt2800_rfcsr_read_bank(rt2x00dev, 5, 18);
+       saverfb5r19 = rt2800_rfcsr_read_bank(rt2x00dev, 5, 19);
+       saverfb5r20 = rt2800_rfcsr_read_bank(rt2x00dev, 5, 20);
+
+       saverfb5r37 = rt2800_rfcsr_read_bank(rt2x00dev, 5, 37);
+       saverfb5r38 = rt2800_rfcsr_read_bank(rt2x00dev, 5, 38);
+       saverfb5r39 = rt2800_rfcsr_read_bank(rt2x00dev, 5, 39);
+       saverfb5r40 = rt2800_rfcsr_read_bank(rt2x00dev, 5, 40);
+       saverfb5r41 = rt2800_rfcsr_read_bank(rt2x00dev, 5, 41);
+       saverfb5r42 = rt2800_rfcsr_read_bank(rt2x00dev, 5, 42);
+       saverfb5r43 = rt2800_rfcsr_read_bank(rt2x00dev, 5, 43);
+       saverfb5r44 = rt2800_rfcsr_read_bank(rt2x00dev, 5, 44);
+       saverfb5r45 = rt2800_rfcsr_read_bank(rt2x00dev, 5, 45);
+       saverfb5r46 = rt2800_rfcsr_read_bank(rt2x00dev, 5, 46);
+
+       saverfb5r58 = rt2800_rfcsr_read_bank(rt2x00dev, 5, 58);
+       saverfb5r59 = rt2800_rfcsr_read_bank(rt2x00dev, 5, 59);
+
+       rf_val = rt2800_rfcsr_read_bank(rt2x00dev, 5, 0);
        rf_val |= 0x3;
        rt2800_rfcsr_write_bank(rt2x00dev, 5, 0, rf_val);
 
-       rt2800_rfcsr_read_bank(rt2x00dev, 5, 1, &rf_val);
+       rf_val = rt2800_rfcsr_read_bank(rt2x00dev, 5, 1);
        rf_val |= 0x1;
        rt2800_rfcsr_write_bank(rt2x00dev, 5, 1, rf_val);
 
        cnt = 0;
        do {
                usleep_range(500, 2000);
-               rt2800_rfcsr_read_bank(rt2x00dev, 5, 1, &rf_val);
+               rf_val = rt2800_rfcsr_read_bank(rt2x00dev, 5, 1);
                if (((rf_val & 0x1) == 0x00) || (cnt == 40))
                        break;
                cnt++;
        } while (cnt < 40);
 
-       rt2800_rfcsr_read_bank(rt2x00dev, 5, 0, &rf_val);
+       rf_val = rt2800_rfcsr_read_bank(rt2x00dev, 5, 0);
        rf_val &= (~0x3);
        rf_val |= 0x1;
        rt2800_rfcsr_write_bank(rt2x00dev, 5, 0, rf_val);
 
        /* I-3 */
-       rt2800_bbp_read(rt2x00dev, 23, &bbp_val);
+       bbp_val = rt2800_bbp_read(rt2x00dev, 23);
        bbp_val &= (~0x1F);
        bbp_val |= 0x10;
        rt2800_bbp_write(rt2x00dev, 23, bbp_val);
@@ -7844,7 +7847,7 @@ static void rt2800_bw_filter_calibration(struct rt2x00_dev *rt2x00dev,
                                filter_target = rx_filter_target_40m;
                }
 
-               rt2800_rfcsr_read_bank(rt2x00dev, 5, 8, &rf_val);
+               rf_val = rt2800_rfcsr_read_bank(rt2x00dev, 5, 8);
                rf_val &= (~0x04);
                if (loop == 1)
                        rf_val |= 0x4;
@@ -7856,25 +7859,25 @@ static void rt2800_bw_filter_calibration(struct rt2x00_dev *rt2x00dev,
                rt2800_rf_lp_config(rt2x00dev, btxcal);
                if (btxcal) {
                        tx_agc_fc = 0;
-                       rt2800_rfcsr_read_bank(rt2x00dev, 5, 58, &rf_val);
+                       rf_val = rt2800_rfcsr_read_bank(rt2x00dev, 5, 58);
                        rf_val &= (~0x7F);
                        rt2800_rfcsr_write_bank(rt2x00dev, 5, 58, rf_val);
-                       rt2800_rfcsr_read_bank(rt2x00dev, 5, 59, &rf_val);
+                       rf_val = rt2800_rfcsr_read_bank(rt2x00dev, 5, 59);
                        rf_val &= (~0x7F);
                        rt2800_rfcsr_write_bank(rt2x00dev, 5, 59, rf_val);
                } else {
                        rx_agc_fc = 0;
-                       rt2800_rfcsr_read_bank(rt2x00dev, 5, 6, &rf_val);
+                       rf_val = rt2800_rfcsr_read_bank(rt2x00dev, 5, 6);
                        rf_val &= (~0x7F);
                        rt2800_rfcsr_write_bank(rt2x00dev, 5, 6, rf_val);
-                       rt2800_rfcsr_read_bank(rt2x00dev, 5, 7, &rf_val);
+                       rf_val = rt2800_rfcsr_read_bank(rt2x00dev, 5, 7);
                        rf_val &= (~0x7F);
                        rt2800_rfcsr_write_bank(rt2x00dev, 5, 7, rf_val);
                }
 
                usleep_range(1000, 2000);
 
-               rt2800_bbp_dcoc_read(rt2x00dev, 2, &bbp_val);
+               bbp_val = rt2800_bbp_dcoc_read(rt2x00dev, 2);
                bbp_val &= (~0x6);
                rt2800_bbp_dcoc_write(rt2x00dev, 2, bbp_val);
 
@@ -7882,25 +7885,25 @@ static void rt2800_bw_filter_calibration(struct rt2x00_dev *rt2x00dev,
 
                cal_r32_init = rt2800_lp_tx_filter_bw_cal(rt2x00dev);
 
-               rt2800_bbp_dcoc_read(rt2x00dev, 2, &bbp_val);
+               bbp_val = rt2800_bbp_dcoc_read(rt2x00dev, 2);
                bbp_val |= 0x6;
                rt2800_bbp_dcoc_write(rt2x00dev, 2, bbp_val);
 do_cal:
                if (btxcal) {
-                       rt2800_rfcsr_read_bank(rt2x00dev, 5, 58, &rf_val);
+                       rf_val = rt2800_rfcsr_read_bank(rt2x00dev, 5, 58);
                        rf_val &= (~0x7F);
                        rf_val |= tx_agc_fc;
                        rt2800_rfcsr_write_bank(rt2x00dev, 5, 58, rf_val);
-                       rt2800_rfcsr_read_bank(rt2x00dev, 5, 59, &rf_val);
+                       rf_val = rt2800_rfcsr_read_bank(rt2x00dev, 5, 59);
                        rf_val &= (~0x7F);
                        rf_val |= tx_agc_fc;
                        rt2800_rfcsr_write_bank(rt2x00dev, 5, 59, rf_val);
                } else {
-                       rt2800_rfcsr_read_bank(rt2x00dev, 5, 6, &rf_val);
+                       rf_val = rt2800_rfcsr_read_bank(rt2x00dev, 5, 6);
                        rf_val &= (~0x7F);
                        rf_val |= rx_agc_fc;
                        rt2800_rfcsr_write_bank(rt2x00dev, 5, 6, rf_val);
-                       rt2800_rfcsr_read_bank(rt2x00dev, 5, 7, &rf_val);
+                       rf_val = rt2800_rfcsr_read_bank(rt2x00dev, 5, 7);
                        rf_val &= (~0x7F);
                        rf_val |= rx_agc_fc;
                        rt2800_rfcsr_write_bank(rt2x00dev, 5, 7, rf_val);
@@ -7980,7 +7983,7 @@ static void rt2800_bw_filter_calibration(struct rt2x00_dev *rt2x00dev,
        rt2800_bbp_dcoc_write(rt2x00dev, 0, savebbp159r0);
        rt2800_bbp_dcoc_write(rt2x00dev, 2, savebbp159r2);
 
-       rt2800_bbp_read(rt2x00dev, 4, &bbp_val);
+       bbp_val = rt2800_bbp_read(rt2x00dev, 4);
        rt2x00_set_field8(&bbp_val, BBP4_BANDWIDTH,
                          2 * test_bit(CONFIG_CHANNEL_HT40, &rt2x00dev->flags));
        rt2800_bbp_write(rt2x00dev, 4, bbp_val);
@@ -8355,20 +8358,20 @@ int rt2800_enable_radio(struct rt2x00_dev *rt2x00dev)
        /*
         * Enable RX.
         */
-       rt2800_register_read(rt2x00dev, MAC_SYS_CTRL, &reg);
+       reg = rt2800_register_read(rt2x00dev, MAC_SYS_CTRL);
        rt2x00_set_field32(&reg, MAC_SYS_CTRL_ENABLE_TX, 1);
        rt2x00_set_field32(&reg, MAC_SYS_CTRL_ENABLE_RX, 0);
        rt2800_register_write(rt2x00dev, MAC_SYS_CTRL, reg);
 
        udelay(50);
 
-       rt2800_register_read(rt2x00dev, WPDMA_GLO_CFG, &reg);
+       reg = rt2800_register_read(rt2x00dev, WPDMA_GLO_CFG);
        rt2x00_set_field32(&reg, WPDMA_GLO_CFG_ENABLE_TX_DMA, 1);
        rt2x00_set_field32(&reg, WPDMA_GLO_CFG_ENABLE_RX_DMA, 1);
        rt2x00_set_field32(&reg, WPDMA_GLO_CFG_TX_WRITEBACK_DONE, 1);
        rt2800_register_write(rt2x00dev, WPDMA_GLO_CFG, reg);
 
-       rt2800_register_read(rt2x00dev, MAC_SYS_CTRL, &reg);
+       reg = rt2800_register_read(rt2x00dev, MAC_SYS_CTRL);
        rt2x00_set_field32(&reg, MAC_SYS_CTRL_ENABLE_TX, 1);
        rt2x00_set_field32(&reg, MAC_SYS_CTRL_ENABLE_RX, 1);
        rt2800_register_write(rt2x00dev, MAC_SYS_CTRL, reg);
@@ -8376,15 +8379,15 @@ int rt2800_enable_radio(struct rt2x00_dev *rt2x00dev)
        /*
         * Initialize LED control
         */
-       rt2800_eeprom_read(rt2x00dev, EEPROM_LED_AG_CONF, &word);
+       word = rt2800_eeprom_read(rt2x00dev, EEPROM_LED_AG_CONF);
        rt2800_mcu_request(rt2x00dev, MCU_LED_AG_CONF, 0xff,
                           word & 0xff, (word >> 8) & 0xff);
 
-       rt2800_eeprom_read(rt2x00dev, EEPROM_LED_ACT_CONF, &word);
+       word = rt2800_eeprom_read(rt2x00dev, EEPROM_LED_ACT_CONF);
        rt2800_mcu_request(rt2x00dev, MCU_LED_ACT_CONF, 0xff,
                           word & 0xff, (word >> 8) & 0xff);
 
-       rt2800_eeprom_read(rt2x00dev, EEPROM_LED_POLARITY, &word);
+       word = rt2800_eeprom_read(rt2x00dev, EEPROM_LED_POLARITY);
        rt2800_mcu_request(rt2x00dev, MCU_LED_LED_POLARITY, 0xff,
                           word & 0xff, (word >> 8) & 0xff);
 
@@ -8401,7 +8404,7 @@ void rt2800_disable_radio(struct rt2x00_dev *rt2x00dev)
        /* Wait for DMA, ignore error */
        rt2800_wait_wpdma_ready(rt2x00dev);
 
-       rt2800_register_read(rt2x00dev, MAC_SYS_CTRL, &reg);
+       reg = rt2800_register_read(rt2x00dev, MAC_SYS_CTRL);
        rt2x00_set_field32(&reg, MAC_SYS_CTRL_ENABLE_TX, 0);
        rt2x00_set_field32(&reg, MAC_SYS_CTRL_ENABLE_RX, 0);
        rt2800_register_write(rt2x00dev, MAC_SYS_CTRL, reg);
@@ -8418,7 +8421,7 @@ int rt2800_efuse_detect(struct rt2x00_dev *rt2x00dev)
        else
                efuse_ctrl_reg = EFUSE_CTRL;
 
-       rt2800_register_read(rt2x00dev, efuse_ctrl_reg, &reg);
+       reg = rt2800_register_read(rt2x00dev, efuse_ctrl_reg);
        return rt2x00_get_field32(reg, EFUSE_CTRL_PRESENT);
 }
 EXPORT_SYMBOL_GPL(rt2800_efuse_detect);
@@ -8447,7 +8450,7 @@ static void rt2800_efuse_read(struct rt2x00_dev *rt2x00dev, unsigned int i)
        }
        mutex_lock(&rt2x00dev->csr_mutex);
 
-       rt2800_register_read_lock(rt2x00dev, efuse_ctrl_reg, &reg);
+       reg = rt2800_register_read_lock(rt2x00dev, efuse_ctrl_reg);
        rt2x00_set_field32(&reg, EFUSE_CTRL_ADDRESS_IN, i);
        rt2x00_set_field32(&reg, EFUSE_CTRL_MODE, 0);
        rt2x00_set_field32(&reg, EFUSE_CTRL_KICK, 1);
@@ -8456,14 +8459,14 @@ static void rt2800_efuse_read(struct rt2x00_dev *rt2x00dev, unsigned int i)
        /* Wait until the EEPROM has been loaded */
        rt2800_regbusy_read(rt2x00dev, efuse_ctrl_reg, EFUSE_CTRL_KICK, &reg);
        /* Apparently the data is read from end to start */
-       rt2800_register_read_lock(rt2x00dev, efuse_data3_reg, &reg);
+       reg = rt2800_register_read_lock(rt2x00dev, efuse_data3_reg);
        /* The returned value is in CPU order, but eeprom is le */
        *(u32 *)&rt2x00dev->eeprom[i] = cpu_to_le32(reg);
-       rt2800_register_read_lock(rt2x00dev, efuse_data2_reg, &reg);
+       reg = rt2800_register_read_lock(rt2x00dev, efuse_data2_reg);
        *(u32 *)&rt2x00dev->eeprom[i + 2] = cpu_to_le32(reg);
-       rt2800_register_read_lock(rt2x00dev, efuse_data1_reg, &reg);
+       reg = rt2800_register_read_lock(rt2x00dev, efuse_data1_reg);
        *(u32 *)&rt2x00dev->eeprom[i + 4] = cpu_to_le32(reg);
-       rt2800_register_read_lock(rt2x00dev, efuse_data0_reg, &reg);
+       reg = rt2800_register_read_lock(rt2x00dev, efuse_data0_reg);
        *(u32 *)&rt2x00dev->eeprom[i + 6] = cpu_to_le32(reg);
 
        mutex_unlock(&rt2x00dev->csr_mutex);
@@ -8487,7 +8490,7 @@ static u8 rt2800_get_txmixer_gain_24g(struct rt2x00_dev *rt2x00dev)
        if (rt2x00_rt(rt2x00dev, RT3593))
                return 0;
 
-       rt2800_eeprom_read(rt2x00dev, EEPROM_TXMIXER_GAIN_BG, &word);
+       word = rt2800_eeprom_read(rt2x00dev, EEPROM_TXMIXER_GAIN_BG);
        if ((word & 0x00ff) != 0x00ff)
                return rt2x00_get_field16(word, EEPROM_TXMIXER_GAIN_BG_VAL);
 
@@ -8501,7 +8504,7 @@ static u8 rt2800_get_txmixer_gain_5g(struct rt2x00_dev *rt2x00dev)
        if (rt2x00_rt(rt2x00dev, RT3593))
                return 0;
 
-       rt2800_eeprom_read(rt2x00dev, EEPROM_TXMIXER_GAIN_A, &word);
+       word = rt2800_eeprom_read(rt2x00dev, EEPROM_TXMIXER_GAIN_A);
        if ((word & 0x00ff) != 0x00ff)
                return rt2x00_get_field16(word, EEPROM_TXMIXER_GAIN_A_VAL);
 
@@ -8529,7 +8532,7 @@ static int rt2800_validate_eeprom(struct rt2x00_dev *rt2x00dev)
        mac = rt2800_eeprom_addr(rt2x00dev, EEPROM_MAC_ADDR_0);
        rt2x00lib_set_mac_address(rt2x00dev, mac);
 
-       rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF0, &word);
+       word = rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF0);
        if (word == 0xffff) {
                rt2x00_set_field16(&word, EEPROM_NIC_CONF0_RXPATH, 2);
                rt2x00_set_field16(&word, EEPROM_NIC_CONF0_TXPATH, 1);
@@ -8546,7 +8549,7 @@ static int rt2800_validate_eeprom(struct rt2x00_dev *rt2x00dev)
                rt2800_eeprom_write(rt2x00dev, EEPROM_NIC_CONF0, word);
        }
 
-       rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1, &word);
+       word = rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1);
        if (word == 0xffff) {
                rt2x00_set_field16(&word, EEPROM_NIC_CONF1_HW_RADIO, 0);
                rt2x00_set_field16(&word, EEPROM_NIC_CONF1_EXTERNAL_TX_ALC, 0);
@@ -8567,7 +8570,7 @@ static int rt2800_validate_eeprom(struct rt2x00_dev *rt2x00dev)
                rt2x00_eeprom_dbg(rt2x00dev, "NIC: 0x%04x\n", word);
        }
 
-       rt2800_eeprom_read(rt2x00dev, EEPROM_FREQ, &word);
+       word = rt2800_eeprom_read(rt2x00dev, EEPROM_FREQ);
        if ((word & 0x00ff) == 0x00ff) {
                rt2x00_set_field16(&word, EEPROM_FREQ_OFFSET, 0);
                rt2800_eeprom_write(rt2x00dev, EEPROM_FREQ, word);
@@ -8589,10 +8592,10 @@ static int rt2800_validate_eeprom(struct rt2x00_dev *rt2x00dev)
         * lna0 as correct value. Note that EEPROM_LNA
         * is never validated.
         */
-       rt2800_eeprom_read(rt2x00dev, EEPROM_LNA, &word);
+       word = rt2800_eeprom_read(rt2x00dev, EEPROM_LNA);
        default_lna_gain = rt2x00_get_field16(word, EEPROM_LNA_A0);
 
-       rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_BG, &word);
+       word = rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_BG);
        if (abs(rt2x00_get_field16(word, EEPROM_RSSI_BG_OFFSET0)) > 10)
                rt2x00_set_field16(&word, EEPROM_RSSI_BG_OFFSET0, 0);
        if (abs(rt2x00_get_field16(word, EEPROM_RSSI_BG_OFFSET1)) > 10)
@@ -8601,7 +8604,7 @@ static int rt2800_validate_eeprom(struct rt2x00_dev *rt2x00dev)
 
        drv_data->txmixer_gain_24g = rt2800_get_txmixer_gain_24g(rt2x00dev);
 
-       rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_BG2, &word);
+       word = rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_BG2);
        if (abs(rt2x00_get_field16(word, EEPROM_RSSI_BG2_OFFSET2)) > 10)
                rt2x00_set_field16(&word, EEPROM_RSSI_BG2_OFFSET2, 0);
        if (!rt2x00_rt(rt2x00dev, RT3593)) {
@@ -8614,14 +8617,14 @@ static int rt2800_validate_eeprom(struct rt2x00_dev *rt2x00dev)
 
        drv_data->txmixer_gain_5g = rt2800_get_txmixer_gain_5g(rt2x00dev);
 
-       rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_A, &word);
+       word = rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_A);
        if (abs(rt2x00_get_field16(word, EEPROM_RSSI_A_OFFSET0)) > 10)
                rt2x00_set_field16(&word, EEPROM_RSSI_A_OFFSET0, 0);
        if (abs(rt2x00_get_field16(word, EEPROM_RSSI_A_OFFSET1)) > 10)
                rt2x00_set_field16(&word, EEPROM_RSSI_A_OFFSET1, 0);
        rt2800_eeprom_write(rt2x00dev, EEPROM_RSSI_A, word);
 
-       rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_A2, &word);
+       word = rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_A2);
        if (abs(rt2x00_get_field16(word, EEPROM_RSSI_A2_OFFSET2)) > 10)
                rt2x00_set_field16(&word, EEPROM_RSSI_A2_OFFSET2, 0);
        if (!rt2x00_rt(rt2x00dev, RT3593)) {
@@ -8633,7 +8636,7 @@ static int rt2800_validate_eeprom(struct rt2x00_dev *rt2x00dev)
        rt2800_eeprom_write(rt2x00dev, EEPROM_RSSI_A2, word);
 
        if (rt2x00_rt(rt2x00dev, RT3593)) {
-               rt2800_eeprom_read(rt2x00dev, EEPROM_EXT_LNA2, &word);
+               word = rt2800_eeprom_read(rt2x00dev, EEPROM_EXT_LNA2);
                if (rt2x00_get_field16(word, EEPROM_EXT_LNA2_A1) == 0x00 ||
                    rt2x00_get_field16(word, EEPROM_EXT_LNA2_A1) == 0xff)
                        rt2x00_set_field16(&word, EEPROM_EXT_LNA2_A1,
@@ -8657,7 +8660,7 @@ static int rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev)
        /*
         * Read EEPROM word for configuration.
         */
-       rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF0, &eeprom);
+       eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF0);
 
        /*
         * Identify RF chipset by EEPROM value
@@ -8668,7 +8671,7 @@ static int rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev)
            rt2x00_rt(rt2x00dev, RT5390) ||
            rt2x00_rt(rt2x00dev, RT5392) ||
            rt2x00_rt(rt2x00dev, RT6352))
-               rt2800_eeprom_read(rt2x00dev, EEPROM_CHIP_ID, &rf);
+               rf = rt2800_eeprom_read(rt2x00dev, EEPROM_CHIP_ID);
        else if (rt2x00_rt(rt2x00dev, RT3352))
                rf = RF3322;
        else if (rt2x00_rt(rt2x00dev, RT5350))
@@ -8717,7 +8720,7 @@ static int rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev)
        rt2x00dev->default_ant.rx_chain_num =
            rt2x00_get_field16(eeprom, EEPROM_NIC_CONF0_RXPATH);
 
-       rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1, &eeprom);
+       eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1);
 
        if (rt2x00_rt(rt2x00dev, RT3070) ||
            rt2x00_rt(rt2x00dev, RT3090) ||
@@ -8771,7 +8774,7 @@ static int rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev)
        /*
         * Read frequency offset and RF programming sequence.
         */
-       rt2800_eeprom_read(rt2x00dev, EEPROM_FREQ, &eeprom);
+       eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_FREQ);
        rt2x00dev->freq_offset = rt2x00_get_field16(eeprom, EEPROM_FREQ_OFFSET);
 
        /*
@@ -8788,7 +8791,7 @@ static int rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev)
        /*
         * Check if support EIRP tx power limit feature.
         */
-       rt2800_eeprom_read(rt2x00dev, EEPROM_EIRP_MAX_TX_POWER, &eeprom);
+       eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_EIRP_MAX_TX_POWER);
 
        if (rt2x00_get_field16(eeprom, EEPROM_EIRP_MAX_TX_POWER_2GHZ) <
                                        EIRP_MAX_TX_POWER_LIMIT)
@@ -8797,7 +8800,7 @@ static int rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev)
        /*
         * Detect if device uses internal or external PA
         */
-       rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1, &eeprom);
+       eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1);
 
        if (rt2x00_rt(rt2x00dev, RT3352)) {
                if (rt2x00_get_field16(eeprom,
@@ -9239,7 +9242,7 @@ static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
                break;
 
        case RF5592:
-               rt2800_register_read(rt2x00dev, MAC_DEBUG_INDEX, &reg);
+               reg = rt2800_register_read(rt2x00dev, MAC_DEBUG_INDEX);
                if (rt2x00_get_field32(reg, MAC_DEBUG_INDEX_XTAL)) {
                        spec->num_channels = ARRAY_SIZE(rf_vals_5592_xtal40);
                        spec->channels = rf_vals_5592_xtal40;
@@ -9378,9 +9381,9 @@ static int rt2800_probe_rt(struct rt2x00_dev *rt2x00dev)
        u32 rev;
 
        if (rt2x00_rt(rt2x00dev, RT3290))
-               rt2800_register_read(rt2x00dev, MAC_CSR0_3290, &reg);
+               reg = rt2800_register_read(rt2x00dev, MAC_CSR0_3290);
        else
-               rt2800_register_read(rt2x00dev, MAC_CSR0, &reg);
+               reg = rt2800_register_read(rt2x00dev, MAC_CSR0);
 
        rt = rt2x00_get_field32(reg, MAC_CSR0_CHIPSET);
        rev = rt2x00_get_field32(reg, MAC_CSR0_REVISION);
@@ -9440,7 +9443,7 @@ int rt2800_probe_hw(struct rt2x00_dev *rt2x00dev)
         * Enable rfkill polling by setting GPIO direction of the
         * rfkill switch GPIO pin correctly.
         */
-       rt2800_register_read(rt2x00dev, GPIO_CTRL, &reg);
+       reg = rt2800_register_read(rt2x00dev, GPIO_CTRL);
        rt2x00_set_field32(&reg, GPIO_CTRL_DIR2, 1);
        rt2800_register_write(rt2x00dev, GPIO_CTRL, reg);
 
@@ -9515,31 +9518,31 @@ int rt2800_set_rts_threshold(struct ieee80211_hw *hw, u32 value)
        u32 reg;
        bool enabled = (value < IEEE80211_MAX_RTS_THRESHOLD);
 
-       rt2800_register_read(rt2x00dev, TX_RTS_CFG, &reg);
+       reg = rt2800_register_read(rt2x00dev, TX_RTS_CFG);
        rt2x00_set_field32(&reg, TX_RTS_CFG_RTS_THRES, value);
        rt2800_register_write(rt2x00dev, TX_RTS_CFG, reg);
 
-       rt2800_register_read(rt2x00dev, CCK_PROT_CFG, &reg);
+       reg = rt2800_register_read(rt2x00dev, CCK_PROT_CFG);
        rt2x00_set_field32(&reg, CCK_PROT_CFG_RTS_TH_EN, enabled);
        rt2800_register_write(rt2x00dev, CCK_PROT_CFG, reg);
 
-       rt2800_register_read(rt2x00dev, OFDM_PROT_CFG, &reg);
+       reg = rt2800_register_read(rt2x00dev, OFDM_PROT_CFG);
        rt2x00_set_field32(&reg, OFDM_PROT_CFG_RTS_TH_EN, enabled);
        rt2800_register_write(rt2x00dev, OFDM_PROT_CFG, reg);
 
-       rt2800_register_read(rt2x00dev, MM20_PROT_CFG, &reg);
+       reg = rt2800_register_read(rt2x00dev, MM20_PROT_CFG);
        rt2x00_set_field32(&reg, MM20_PROT_CFG_RTS_TH_EN, enabled);
        rt2800_register_write(rt2x00dev, MM20_PROT_CFG, reg);
 
-       rt2800_register_read(rt2x00dev, MM40_PROT_CFG, &reg);
+       reg = rt2800_register_read(rt2x00dev, MM40_PROT_CFG);
        rt2x00_set_field32(&reg, MM40_PROT_CFG_RTS_TH_EN, enabled);
        rt2800_register_write(rt2x00dev, MM40_PROT_CFG, reg);
 
-       rt2800_register_read(rt2x00dev, GF20_PROT_CFG, &reg);
+       reg = rt2800_register_read(rt2x00dev, GF20_PROT_CFG);
        rt2x00_set_field32(&reg, GF20_PROT_CFG_RTS_TH_EN, enabled);
        rt2800_register_write(rt2x00dev, GF20_PROT_CFG, reg);
 
-       rt2800_register_read(rt2x00dev, GF40_PROT_CFG, &reg);
+       reg = rt2800_register_read(rt2x00dev, GF40_PROT_CFG);
        rt2x00_set_field32(&reg, GF40_PROT_CFG_RTS_TH_EN, enabled);
        rt2800_register_write(rt2x00dev, GF40_PROT_CFG, reg);
 
@@ -9582,7 +9585,7 @@ int rt2800_conf_tx(struct ieee80211_hw *hw,
        field.bit_offset = (queue_idx & 1) * 16;
        field.bit_mask = 0xffff << field.bit_offset;
 
-       rt2800_register_read(rt2x00dev, offset, &reg);
+       reg = rt2800_register_read(rt2x00dev, offset);
        rt2x00_set_field32(&reg, field, queue->txop);
        rt2800_register_write(rt2x00dev, offset, reg);
 
@@ -9590,22 +9593,22 @@ int rt2800_conf_tx(struct ieee80211_hw *hw,
        field.bit_offset = queue_idx * 4;
        field.bit_mask = 0xf << field.bit_offset;
 
-       rt2800_register_read(rt2x00dev, WMM_AIFSN_CFG, &reg);
+       reg = rt2800_register_read(rt2x00dev, WMM_AIFSN_CFG);
        rt2x00_set_field32(&reg, field, queue->aifs);
        rt2800_register_write(rt2x00dev, WMM_AIFSN_CFG, reg);
 
-       rt2800_register_read(rt2x00dev, WMM_CWMIN_CFG, &reg);
+       reg = rt2800_register_read(rt2x00dev, WMM_CWMIN_CFG);
        rt2x00_set_field32(&reg, field, queue->cw_min);
        rt2800_register_write(rt2x00dev, WMM_CWMIN_CFG, reg);
 
-       rt2800_register_read(rt2x00dev, WMM_CWMAX_CFG, &reg);
+       reg = rt2800_register_read(rt2x00dev, WMM_CWMAX_CFG);
        rt2x00_set_field32(&reg, field, queue->cw_max);
        rt2800_register_write(rt2x00dev, WMM_CWMAX_CFG, reg);
 
        /* Update EDCA registers */
        offset = EDCA_AC0_CFG + (sizeof(u32) * queue_idx);
 
-       rt2800_register_read(rt2x00dev, offset, &reg);
+       reg = rt2800_register_read(rt2x00dev, offset);
        rt2x00_set_field32(&reg, EDCA_AC0_CFG_TX_OP, queue->txop);
        rt2x00_set_field32(&reg, EDCA_AC0_CFG_AIFSN, queue->aifs);
        rt2x00_set_field32(&reg, EDCA_AC0_CFG_CWMIN, queue->cw_min);
@@ -9622,9 +9625,9 @@ u64 rt2800_get_tsf(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
        u64 tsf;
        u32 reg;
 
-       rt2800_register_read(rt2x00dev, TSF_TIMER_DW1, &reg);
+       reg = rt2800_register_read(rt2x00dev, TSF_TIMER_DW1);
        tsf = (u64) rt2x00_get_field32(reg, TSF_TIMER_DW1_HIGH_WORD) << 32;
-       rt2800_register_read(rt2x00dev, TSF_TIMER_DW0, &reg);
+       reg = rt2800_register_read(rt2x00dev, TSF_TIMER_DW0);
        tsf |= rt2x00_get_field32(reg, TSF_TIMER_DW0_LOW_WORD);
 
        return tsf;
@@ -9691,9 +9694,9 @@ int rt2800_get_survey(struct ieee80211_hw *hw, int idx,
 
        survey->channel = conf->chandef.chan;
 
-       rt2800_register_read(rt2x00dev, CH_IDLE_STA, &idle);
-       rt2800_register_read(rt2x00dev, CH_BUSY_STA, &busy);
-       rt2800_register_read(rt2x00dev, CH_BUSY_STA_SEC, &busy_ext);
+       idle = rt2800_register_read(rt2x00dev, CH_IDLE_STA);
+       busy = rt2800_register_read(rt2x00dev, CH_BUSY_STA);
+       busy_ext = rt2800_register_read(rt2x00dev, CH_BUSY_STA_SEC);
 
        if (idle || busy) {
                survey->filled = SURVEY_INFO_TIME |