omap: complete 3.18 support
[openwrt/svn-archive/archive.git] / target / linux / omap / patches-3.18 / 900-wlcore-Add-support-for-DT-platform-data.patch
index 750d9e3..8fcf771 100644 (file)
@@ -88,22 +88,22 @@ Signed-off-by: Arik Nemtsov <arik@wizery.com>
  static int wl1271_probe(struct sdio_func *func,
                                  const struct sdio_device_id *id)
  {
-@@ -248,12 +304,9 @@ static int wl1271_probe(struct sdio_func
+@@ -245,12 +301,9 @@ static int wl1271_probe(struct sdio_func
        /* Use block mode for transferring over one block size of data */
        func->card->quirks |= MMC_QUIRK_BLKSZ_FOR_BYTE_MODE;
  
--      pdev_data->pdata = wl12xx_get_platform_data();
--      if (IS_ERR(pdev_data->pdata)) {
--              ret = PTR_ERR(pdev_data->pdata);
+-      pdev_data.pdata = wl12xx_get_platform_data();
+-      if (IS_ERR(pdev_data.pdata)) {
+-              ret = PTR_ERR(pdev_data.pdata);
 -              dev_err(glue->dev, "missing wlan platform data: %d\n", ret);
-+      pdev_data->pdata = get_platform_data(&func->dev);
-+      if (!(pdev_data->pdata))
++      pdev_data.pdata = get_platform_data(&func->dev);
++      if (!(pdev_data.pdata))
                goto out_free_glue;
 -      }
  
        /* if sdio can keep power while host is suspended, enable wow */
        mmcflags = sdio_get_host_pm_caps(func);
-@@ -282,7 +335,7 @@ static int wl1271_probe(struct sdio_func
+@@ -279,7 +332,7 @@ static int wl1271_probe(struct sdio_func
        if (!glue->core) {
                dev_err(glue->dev, "can't allocate platform_device");
                ret = -ENOMEM;
@@ -112,22 +112,22 @@ Signed-off-by: Arik Nemtsov <arik@wizery.com>
        }
  
        glue->core->dev.parent = &func->dev;
-@@ -316,6 +369,9 @@ static int wl1271_probe(struct sdio_func
+@@ -313,6 +366,9 @@ static int wl1271_probe(struct sdio_func
  out_dev_put:
        platform_device_put(glue->core);
  
 +out_free_pdata:
-+      del_platform_data(pdev_data->pdata);
++      del_platform_data(pdev_data.pdata);
 +
  out_free_glue:
        kfree(glue);
  
-@@ -329,11 +385,14 @@ out:
+@@ -323,11 +379,14 @@ out:
  static void wl1271_remove(struct sdio_func *func)
  {
        struct wl12xx_sdio_glue *glue = sdio_get_drvdata(func);
 +      struct wlcore_platdev_data *pdev_data = glue->core->dev.platform_data;
-+      struct wl12xx_platform_data *pdata = pdev_data->pdata;
++      struct wl12xx_platform_data *pdata = pdev_data.pdata;
  
        /* Undo decrement done above in wl1271_probe */
        pm_runtime_get_noresume(&func->dev);
@@ -139,13 +139,16 @@ Signed-off-by: Arik Nemtsov <arik@wizery.com>
  
 --- a/include/linux/wl12xx.h
 +++ b/include/linux/wl12xx.h
-@@ -51,11 +51,12 @@ enum {
- struct wl12xx_platform_data {
-       void (*set_power)(bool enable);
+@@ -51,6 +51,7 @@ enum {
+ struct wl1251_platform_data {
+       int power_gpio;
        /* SDIO only: IRQ number if WLAN_IRQ line is used, 0 for SDIO IRQs */
 +      int gpio;
        int irq;
        bool use_eeprom;
+ };
+@@ -59,7 +60,7 @@ struct wl12xx_platform_data {
+       int irq;
        int board_ref_clock;
        int board_tcxo_clock;
 -      unsigned long platform_quirks;