rt2x00: merge an rt2800 initialization order fix
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Tue, 10 Sep 2013 10:11:28 +0000 (10:11 +0000)
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Tue, 10 Sep 2013 10:11:28 +0000 (10:11 +0000)
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Backport of r37922

git-svn-id: svn://svn.openwrt.org/openwrt/branches/attitude_adjustment@37923 3c298f89-4303-0410-b956-a3cf2f4a3e73

package/mac80211/patches/300-pending_work.patch
package/mac80211/patches/610-rt2x00-fix-rt3352-ext-pa.patch
package/mac80211/patches/611-rt2x00-rf_vals-rt3352-xtal20.patch
package/mac80211/patches/616-rt2x00-support-rt5350.patch

index 2fa1e1b..1871a8d 100644 (file)
                cfg80211_stop_ap(rdev, dev);
                break;
        default:
+--- a/drivers/net/wireless/rt2x00/rt2800lib.c
++++ b/drivers/net/wireless/rt2x00/rt2800lib.c
+@@ -5404,19 +5404,20 @@ int rt2800_enable_radio(struct rt2x00_de
+                    rt2800_init_registers(rt2x00dev)))
+               return -EIO;
++      if (unlikely(rt2800_wait_bbp_rf_ready(rt2x00dev)))
++              return -EIO;
++
+       /*
+        * Send signal to firmware during boot time.
+        */
+       rt2800_register_write(rt2x00dev, H2M_BBP_AGENT, 0);
+       rt2800_register_write(rt2x00dev, H2M_MAILBOX_CSR, 0);
+-      if (rt2x00_is_usb(rt2x00dev)) {
++      if (rt2x00_is_usb(rt2x00dev))
+               rt2800_register_write(rt2x00dev, H2M_INT_SRC, 0);
+-              rt2800_mcu_request(rt2x00dev, MCU_BOOT_SIGNAL, 0, 0, 0);
+-      }
++      rt2800_mcu_request(rt2x00dev, MCU_BOOT_SIGNAL, 0, 0, 0);
+       msleep(1);
+-      if (unlikely(rt2800_wait_bbp_rf_ready(rt2x00dev) ||
+-                   rt2800_wait_bbp_ready(rt2x00dev)))
++      if (unlikely(rt2800_wait_bbp_ready(rt2x00dev)))
+               return -EIO;
+       rt2800_init_bbp(rt2x00dev);
index 15083d4..8369a78 100644 (file)
@@ -99,7 +99,7 @@
        rt2800_rfcsr_write(rt2x00dev, 59, 0x00);
        rt2800_rfcsr_write(rt2x00dev, 60, 0x00);
        rt2800_rfcsr_write(rt2x00dev, 61, 0x00);
-@@ -5715,6 +5744,7 @@ static int rt2800_init_eeprom(struct rt2
+@@ -5716,6 +5745,7 @@ static int rt2800_init_eeprom(struct rt2
         * RT53xx: defined in "EEPROM_CHIP_ID" field
         */
        if (rt2x00_rt(rt2x00dev, RT3290) ||
            rt2x00_rt(rt2x00dev, RT5390) ||
            rt2x00_rt(rt2x00dev, RT5392))
                rt2x00_eeprom_read(rt2x00dev, EEPROM_CHIP_ID, &rf);
-@@ -5804,7 +5834,8 @@ static int rt2800_init_eeprom(struct rt2
+@@ -5805,7 +5835,8 @@ static int rt2800_init_eeprom(struct rt2
        /*
         * Detect if this device has Bluetooth co-existence.
         */
                __set_bit(CAPABILITY_BT_COEXIST, &rt2x00dev->cap_flags);
  
        /*
-@@ -5833,6 +5864,22 @@ static int rt2800_init_eeprom(struct rt2
+@@ -5834,6 +5865,22 @@ static int rt2800_init_eeprom(struct rt2
                                        EIRP_MAX_TX_POWER_LIMIT)
                __set_bit(CAPABILITY_POWER_LIMIT, &rt2x00dev->cap_flags);
  
index cd9a5f3..e16d970 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/net/wireless/rt2x00/rt2800lib.c
 +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
-@@ -6156,6 +6156,27 @@ static const struct rf_channel rf_vals_5
+@@ -6157,6 +6157,27 @@ static const struct rf_channel rf_vals_5
        {196, 83, 0, 12, 1},
  };
  
@@ -28,7 +28,7 @@
  static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
  {
        struct hw_mode_spec *spec = &rt2x00dev->spec;
-@@ -6234,7 +6255,6 @@ static int rt2800_probe_hw_mode(struct r
+@@ -6235,7 +6256,6 @@ static int rt2800_probe_hw_mode(struct r
                   rt2x00_rf(rt2x00dev, RF3022) ||
                   rt2x00_rf(rt2x00dev, RF3290) ||
                   rt2x00_rf(rt2x00dev, RF3320) ||
@@ -36,7 +36,7 @@
                   rt2x00_rf(rt2x00dev, RF5360) ||
                   rt2x00_rf(rt2x00dev, RF5370) ||
                   rt2x00_rf(rt2x00dev, RF5372) ||
-@@ -6242,6 +6262,12 @@ static int rt2800_probe_hw_mode(struct r
+@@ -6243,6 +6263,12 @@ static int rt2800_probe_hw_mode(struct r
                   rt2x00_rf(rt2x00dev, RF5392)) {
                spec->num_channels = 14;
                spec->channels = rf_vals_3x;
@@ -49,7 +49,7 @@
        } else if (rt2x00_rf(rt2x00dev, RF3052)) {
                spec->supported_bands |= SUPPORT_BAND_5GHZ;
                spec->num_channels = ARRAY_SIZE(rf_vals_3x);
-@@ -6389,6 +6415,19 @@ static int rt2800_probe_rt(struct rt2x00
+@@ -6390,6 +6416,19 @@ static int rt2800_probe_rt(struct rt2x00
        return 0;
  }
  
@@ -69,7 +69,7 @@
  int rt2800_probe_hw(struct rt2x00_dev *rt2x00dev)
  {
        int retval;
-@@ -6418,6 +6457,15 @@ int rt2800_probe_hw(struct rt2x00_dev *r
+@@ -6419,6 +6458,15 @@ int rt2800_probe_hw(struct rt2x00_dev *r
        rt2800_register_write(rt2x00dev, GPIO_CTRL, reg);
  
        /*
index 5e308ba..9dc5835 100644 (file)
        case RT5390:
                rt2800_init_rfcsr_5390(rt2x00dev);
                break;
-@@ -5620,6 +5723,12 @@ static int rt2800_validate_eeprom(struct
+@@ -5621,6 +5724,12 @@ static int rt2800_validate_eeprom(struct
                rt2x00_set_field16(&word, EEPROM_NIC_CONF0_RF_TYPE, RF2820);
                rt2x00_eeprom_write(rt2x00dev, EEPROM_NIC_CONF0, word);
                rt2x00_eeprom_dbg(rt2x00dev, "Antenna: 0x%04x\n", word);
        } else if (rt2x00_rt(rt2x00dev, RT2860) ||
                   rt2x00_rt(rt2x00dev, RT2872)) {
                /*
-@@ -5748,6 +5857,8 @@ static int rt2800_init_eeprom(struct rt2
+@@ -5749,6 +5858,8 @@ static int rt2800_init_eeprom(struct rt2
            rt2x00_rt(rt2x00dev, RT5390) ||
            rt2x00_rt(rt2x00dev, RT5392))
                rt2x00_eeprom_read(rt2x00dev, EEPROM_CHIP_ID, &rf);
        else
                rf = rt2x00_get_field16(eeprom, EEPROM_NIC_CONF0_RF_TYPE);
  
-@@ -5764,6 +5875,7 @@ static int rt2800_init_eeprom(struct rt2
+@@ -5765,6 +5876,7 @@ static int rt2800_init_eeprom(struct rt2
        case RF3290:
        case RF3320:
        case RF3322:
        case RF5360:
        case RF5370:
        case RF5372:
-@@ -6262,7 +6374,8 @@ static int rt2800_probe_hw_mode(struct r
+@@ -6263,7 +6375,8 @@ static int rt2800_probe_hw_mode(struct r
                   rt2x00_rf(rt2x00dev, RF5392)) {
                spec->num_channels = 14;
                spec->channels = rf_vals_3x;
                spec->num_channels = 14;
                if (spec->clk_is_20mhz)
                        spec->channels = rf_vals_xtal20mhz_3x;
-@@ -6363,6 +6476,7 @@ static int rt2800_probe_hw_mode(struct r
+@@ -6364,6 +6477,7 @@ static int rt2800_probe_hw_mode(struct r
        case RF3320:
        case RF3052:
        case RF3290:
        case RF5360:
        case RF5370:
        case RF5372:
-@@ -6400,6 +6514,7 @@ static int rt2800_probe_rt(struct rt2x00
+@@ -6401,6 +6515,7 @@ static int rt2800_probe_rt(struct rt2x00
        case RT3352:
        case RT3390:
        case RT3572: