kernel: add missing config symbols for 4.9
[openwrt/openwrt.git] / package / kernel / mac80211 / patches / 611-rt2x00-rf_vals-rt3352-xtal20.patch
index 4fc1e0a01b15ce46d9166a7f83e7ba1de1fd312a..124b952515218291e1eebbf21965d1802d1335bf 100644 (file)
@@ -1,7 +1,15 @@
---- a/drivers/net/wireless/rt2x00/rt2800lib.c
-+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
-@@ -7508,6 +7508,27 @@ static const struct rf_channel rf_vals_3
-       {173, 0x61, 0, 9},
+--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
+@@ -36,6 +36,7 @@
+ #include <linux/kernel.h>
+ #include <linux/module.h>
+ #include <linux/slab.h>
++#include <linux/clk.h>
+ #include "rt2x00.h"
+ #include "rt2800lib.h"
+@@ -8183,6 +8184,27 @@ static const struct rf_channel rf_vals_5
+       {196, 83, 0, 12, 1},
  };
  
 +/*
  static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
  {
        struct hw_mode_spec *spec = &rt2x00dev->spec;
-@@ -7588,7 +7609,6 @@ static int rt2800_probe_hw_mode(struct r
-                  rt2x00_rf(rt2x00dev, RF3022) ||
-                  rt2x00_rf(rt2x00dev, RF3290) ||
-                  rt2x00_rf(rt2x00dev, RF3320) ||
--                 rt2x00_rf(rt2x00dev, RF3322) ||
-                  rt2x00_rf(rt2x00dev, RF5360) ||
-                  rt2x00_rf(rt2x00dev, RF5370) ||
-                  rt2x00_rf(rt2x00dev, RF5372) ||
-@@ -7596,6 +7616,12 @@ static int rt2800_probe_hw_mode(struct r
-                  rt2x00_rf(rt2x00dev, RF5392)) {
+@@ -8273,7 +8295,10 @@ static int rt2800_probe_hw_mode(struct r
+       case RF5390:
+       case RF5392:
                spec->num_channels = 14;
-               spec->channels = rf_vals_3x;
-+      } else if (rt2x00_rf(rt2x00dev, RF3322)) {
-+              spec->num_channels = 14;
+-              spec->channels = rf_vals_3x;
 +              if (spec->clk_is_20mhz)
 +                      spec->channels = rf_vals_xtal20mhz_3x;
 +              else
 +                      spec->channels = rf_vals_3x;
-       } else if (rt2x00_rf(rt2x00dev, RF3052)) {
-               spec->supported_bands |= SUPPORT_BAND_5GHZ;
-               spec->num_channels = ARRAY_SIZE(rf_vals_3x);
-@@ -7768,6 +7794,19 @@ static int rt2800_probe_rt(struct rt2x00
+               break;
+       case RF3052:
+@@ -8457,6 +8482,20 @@ static int rt2800_probe_rt(struct rt2x00
        return 0;
  }
  
 +int rt2800_probe_clk(struct rt2x00_dev *rt2x00dev)
 +{
-+      struct rt2x00_platform_data *pdata = rt2x00dev->dev->platform_data;
 +      struct hw_mode_spec *spec = &rt2x00dev->spec;
++      struct clk *clk = clk_get(rt2x00dev->dev, NULL);
 +
-+      if (!pdata)
-+              return -EINVAL;
++      if (IS_ERR(clk))
++              return PTR_ERR(clk);
 +
-+      spec->clk_is_20mhz = pdata->clk_is_20mhz;
++      if (clk_get_rate(clk) == 20000000)
++              spec->clk_is_20mhz = 1;
 +
 +      return 0;
 +}
 +
  int rt2800_probe_hw(struct rt2x00_dev *rt2x00dev)
  {
-       int retval;
-@@ -7797,6 +7836,15 @@ int rt2800_probe_hw(struct rt2x00_dev *r
+       struct rt2800_drv_data *drv_data = rt2x00dev->drv_data;
+@@ -8499,6 +8538,15 @@ int rt2800_probe_hw(struct rt2x00_dev *r
        rt2800_register_write(rt2x00dev, GPIO_CTRL, reg);
  
        /*
@@ -85,9 +85,9 @@
         * Initialize hw specifications.
         */
        retval = rt2800_probe_hw_mode(rt2x00dev);
---- a/drivers/net/wireless/rt2x00/rt2x00.h
-+++ b/drivers/net/wireless/rt2x00/rt2x00.h
-@@ -410,6 +410,7 @@ static inline struct rt2x00_intf* vif_to
+--- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h
++++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
+@@ -401,6 +401,7 @@ static inline struct rt2x00_intf* vif_to
   * @channels: Device/chipset specific channel values (See &struct rf_channel).
   * @channels_info: Additional information for channels (See &struct channel_info).
   * @ht: Driver HT Capabilities (See &ieee80211_sta_ht_cap).
@@ -95,7 +95,7 @@
   */
  struct hw_mode_spec {
        unsigned int supported_bands;
-@@ -426,6 +427,7 @@ struct hw_mode_spec {
+@@ -417,6 +418,7 @@ struct hw_mode_spec {
        const struct channel_info *channels_info;
  
        struct ieee80211_sta_ht_cap ht;
  };
  
  /*
---- a/include/linux/rt2x00_platform.h
-+++ b/include/linux/rt2x00_platform.h
-@@ -18,6 +18,7 @@ struct rt2x00_platform_data {
-       int disable_2ghz;
-       int disable_5ghz;
-+      int clk_is_20mhz;
- };
- #endif /* _RT2X00_PLATFORM_H */