* The wordsize of the RFCSR is 8 bits.
  */
 
+/*
+ * RFCSR 1:
+ */
+#define RFCSR1_RF_BLOCK_EN             FIELD8(0x01)
+#define RFCSR1_RX0_PD                  FIELD8(0x04)
+#define RFCSR1_TX0_PD                  FIELD8(0x08)
+#define RFCSR1_RX1_PD                  FIELD8(0x10)
+#define RFCSR1_TX1_PD                  FIELD8(0x20)
+
 /*
  * RFCSR 6:
  */
  */
 #define RFCSR12_TX_POWER               FIELD8(0x1f)
 
+/*
+ * RFCSR 15:
+ */
+#define RFCSR15_TX_LO2_EN              FIELD8(0x08)
+
 /*
  * RFCSR 17:
  */
-#define RFCSR17_R1                     FIELD8(0x07)
-#define RFCSR17_R2                     FIELD8(0x08)
-#define RFCSR17_R3                     FIELD8(0x20)
+#define RFCSR17_TXMIXER_GAIN           FIELD8(0x07)
+#define RFCSR17_TX_LO1_EN              FIELD8(0x08)
+#define RFCSR17_R                      FIELD8(0x20)
 
+/*
+ * RFCSR 20:
+ */
+#define RFCSR20_RX_LO1_EN              FIELD8(0x08)
+
+/*
+ * RFCSR 21:
+ */
+#define RFCSR21_RX_LO2_EN              FIELD8(0x08)
 
 /*
  * RFCSR 22:
  */
 #define RFCSR23_FREQ_OFFSET            FIELD8(0x7f)
 
+/*
+ * RFCSR 27:
+ */
+#define RFCSR27_R1                     FIELD8(0x03)
+#define RFCSR27_R2                     FIELD8(0x04)
+#define RFCSR27_R3                     FIELD8(0x30)
+#define RFCSR27_R4                     FIELD8(0x40)
+
 /*
  * RFCSR 30:
  */
 #define EEPROM_RSSI_BG2_OFFSET2                FIELD16(0x00ff)
 #define EEPROM_RSSI_BG2_LNA_A1         FIELD16(0xff00)
 
+/*
+ * EEPROM TXMIXER GAIN BG offset (note overlaps with EEPROM RSSI BG2).
+ */
+#define EEPROM_TXMIXER_GAIN_BG         0x0024
+#define EEPROM_TXMIXER_GAIN_BG_VAL     FIELD16(0x0007)
+
 /*
  * EEPROM RSSI A offset
  */
 
        rt2x00_set_field32(®, MAX_LEN_CFG_MAX_MPDU, AGGREGATION_SIZE);
        if ((rt2x00_rt(rt2x00dev, RT2872) &&
             (rt2x00_rev(rt2x00dev) >= RT2880E_VERSION)) ||
-           rt2x00_rt(rt2x00dev, RT2880) ||
            rt2x00_rt(rt2x00dev, RT2883) ||
-           rt2x00_rt(rt2x00dev, RT2890) ||
-           rt2x00_rt(rt2x00dev, RT3052) ||
            (rt2x00_rt(rt2x00dev, RT3070) &&
             (rt2x00_rev(rt2x00dev) < RT3070_VERSION)))
                rt2x00_set_field32(®, MAX_LEN_CFG_MAX_PSDU, 2);
            (rt2x00_rev(rt2x00dev) > RT2860D_VERSION))
                rt2800_bbp_write(rt2x00dev, 84, 0x19);
 
+       if (rt2x00_rt(rt2x00dev, RT2872)) {
+               rt2800_bbp_write(rt2x00dev, 31, 0x08);
+               rt2800_bbp_write(rt2x00dev, 78, 0x0e);
+               rt2800_bbp_write(rt2x00dev, 80, 0x08);
+       }
+
        if (rt2x00_is_usb(rt2x00dev) &&
            rt2x00_rt(rt2x00dev, RT3070) &&
            (rt2x00_rev(rt2x00dev) == RT3070_VERSION)) {
                rt2800_bbp_write(rt2x00dev, 105, 0x05);
        }
 
-       if (rt2x00_rt(rt2x00dev, RT3052)) {
-               rt2800_bbp_write(rt2x00dev, 31, 0x08);
-               rt2800_bbp_write(rt2x00dev, 78, 0x0e);
-               rt2800_bbp_write(rt2x00dev, 80, 0x08);
-       }
-
        for (i = 0; i < EEPROM_BBP_SIZE; i++) {
                rt2x00_eeprom_read(rt2x00dev, EEPROM_BBP_START + i, &eeprom);
 
        } else if (rt2x00_rt(rt2x00dev, RT2860) ||
                   rt2x00_rt(rt2x00dev, RT2870) ||
                   rt2x00_rt(rt2x00dev, RT2872) ||
-                  rt2x00_rt(rt2x00dev, RT2880) ||
-                  (rt2x00_rt(rt2x00dev, RT2883) &&
-                   (rt2x00_rev(rt2x00dev) < RT2883_VERSION))) {
+                  rt2x00_rt(rt2x00dev, RT2872)) {
                /*
                 * There is a max of 2 RX streams for RT28x0 series
                 */
        if (!rt2x00_rt(rt2x00dev, RT2860) &&
            !rt2x00_rt(rt2x00dev, RT2870) &&
            !rt2x00_rt(rt2x00dev, RT2872) &&
-           !rt2x00_rt(rt2x00dev, RT2880) &&
            !rt2x00_rt(rt2x00dev, RT2883) &&
-           !rt2x00_rt(rt2x00dev, RT2890) &&
-           !rt2x00_rt(rt2x00dev, RT3052) &&
            !rt2x00_rt(rt2x00dev, RT3070) &&
            !rt2x00_rt(rt2x00dev, RT3071) &&
            !rt2x00_rt(rt2x00dev, RT3090) &&