Merge back earlier 'acpi-lpss' material for v3.20
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Fri, 6 Feb 2015 14:39:04 +0000 (15:39 +0100)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Fri, 6 Feb 2015 14:39:04 +0000 (15:39 +0100)
1  2 
drivers/acpi/acpi_lpss.c

diff --combined drivers/acpi/acpi_lpss.c
index e75737fd7eefbc80de3dc8731fcbec94ab321f89,794cf3e13619e11e10ecde15f610f943abd7324d..08fbff507dc40a660293afb07263c7e9a2ab487c
@@@ -1,7 -1,7 +1,7 @@@
  /*
   * ACPI support for Intel Lynxpoint LPSS.
   *
 - * Copyright (C) 2013, 2014, Intel Corporation
 + * Copyright (C) 2013, Intel Corporation
   * Authors: Mika Westerberg <mika.westerberg@linux.intel.com>
   *          Rafael J. Wysocki <rafael.j.wysocki@intel.com>
   *
@@@ -60,6 -60,8 +60,6 @@@ ACPI_MODULE_NAME("acpi_lpss")
  #define LPSS_CLK_DIVIDER              BIT(2)
  #define LPSS_LTR                      BIT(3)
  #define LPSS_SAVE_CTX                 BIT(4)
 -#define LPSS_DEV_PROXY                        BIT(5)
 -#define LPSS_PROXY_REQ                        BIT(6)
  
  struct lpss_private_data;
  
@@@ -70,8 -72,10 +70,8 @@@ struct lpss_device_desc 
        void (*setup)(struct lpss_private_data *pdata);
  };
  
 -static struct device *proxy_device;
 -
  static struct lpss_device_desc lpss_dma_desc = {
 -      .flags = LPSS_CLK | LPSS_PROXY_REQ,
 +      .flags = LPSS_CLK,
  };
  
  struct lpss_private_data {
@@@ -125,7 -129,7 +125,7 @@@ static struct lpss_device_desc lpt_dev_
  };
  
  static struct lpss_device_desc lpt_i2c_dev_desc = {
-       .flags = LPSS_CLK | LPSS_CLK_GATE | LPSS_LTR,
+       .flags = LPSS_CLK | LPSS_LTR,
        .prv_offset = 0x800,
  };
  
@@@ -146,22 -150,24 +146,22 @@@ static struct lpss_device_desc byt_pwm_
  };
  
  static struct lpss_device_desc byt_uart_dev_desc = {
 -      .flags = LPSS_CLK | LPSS_CLK_GATE | LPSS_CLK_DIVIDER | LPSS_SAVE_CTX |
 -               LPSS_DEV_PROXY,
 +      .flags = LPSS_CLK | LPSS_CLK_GATE | LPSS_CLK_DIVIDER | LPSS_SAVE_CTX,
        .prv_offset = 0x800,
        .setup = lpss_uart_setup,
  };
  
  static struct lpss_device_desc byt_spi_dev_desc = {
 -      .flags = LPSS_CLK | LPSS_CLK_GATE | LPSS_CLK_DIVIDER | LPSS_SAVE_CTX |
 -               LPSS_DEV_PROXY,
 +      .flags = LPSS_CLK | LPSS_CLK_GATE | LPSS_CLK_DIVIDER | LPSS_SAVE_CTX,
        .prv_offset = 0x400,
  };
  
  static struct lpss_device_desc byt_sdio_dev_desc = {
 -      .flags = LPSS_CLK | LPSS_DEV_PROXY,
 +      .flags = LPSS_CLK,
  };
  
  static struct lpss_device_desc byt_i2c_dev_desc = {
 -      .flags = LPSS_CLK | LPSS_SAVE_CTX | LPSS_DEV_PROXY,
 +      .flags = LPSS_CLK | LPSS_SAVE_CTX,
        .prv_offset = 0x800,
        .setup = byt_i2c_setup,
  };
@@@ -334,6 -340,8 +334,8 @@@ static int acpi_lpss_create_device(stru
                                pdata->mmio_size = resource_size(&rentry->res);
                        pdata->mmio_base = ioremap(rentry->res.start,
                                                   pdata->mmio_size);
+                       if (!pdata->mmio_base)
+                               goto err_out;
                        break;
                }
  
        adev->driver_data = pdata;
        pdev = acpi_create_platform_device(adev);
        if (!IS_ERR_OR_NULL(pdev)) {
 -              if (!proxy_device && dev_desc->flags & LPSS_DEV_PROXY)
 -                      proxy_device = &pdev->dev;
                return 1;
        }
  
@@@ -592,7 -602,14 +594,7 @@@ static int acpi_lpss_runtime_suspend(st
        if (pdata->dev_desc->flags & LPSS_SAVE_CTX)
                acpi_lpss_save_ctx(dev, pdata);
  
 -      ret = acpi_dev_runtime_suspend(dev);
 -      if (ret)
 -              return ret;
 -
 -      if (pdata->dev_desc->flags & LPSS_PROXY_REQ && proxy_device)
 -              return pm_runtime_put_sync_suspend(proxy_device);
 -
 -      return 0;
 +      return acpi_dev_runtime_suspend(dev);
  }
  
  static int acpi_lpss_runtime_resume(struct device *dev)
        struct lpss_private_data *pdata = acpi_driver_data(ACPI_COMPANION(dev));
        int ret;
  
 -      if (pdata->dev_desc->flags & LPSS_PROXY_REQ && proxy_device) {
 -              ret = pm_runtime_get_sync(proxy_device);
 -              if (ret)
 -                      return ret;
 -      }
 -
        ret = acpi_dev_runtime_resume(dev);
        if (ret)
                return ret;