]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
Merge remote-tracking branch 'pm/linux-next'
authorThierry Reding <treding@nvidia.com>
Thu, 24 Oct 2013 12:34:03 +0000 (14:34 +0200)
committerThierry Reding <treding@nvidia.com>
Thu, 24 Oct 2013 12:34:03 +0000 (14:34 +0200)
Conflicts:
drivers/i2c/i2c-core.c

1  2 
MAINTAINERS
arch/x86/Kconfig
drivers/i2c/i2c-core.c
drivers/pci/hotplug/acpi_pcihp.c
drivers/platform/x86/sony-laptop.c
include/linux/acpi.h

diff --combined MAINTAINERS
index 84f2213ba786e148fc07589d3219a67bd82e67de,dcf2f661a727022508e5ada921e3917b7347a125..42f2712c4ff3975f58c7edc028051b0395246b72
@@@ -253,6 -253,20 +253,20 @@@ F:       drivers/pci/*acpi
  F:    drivers/pci/*/*acpi*
  F:    drivers/pci/*/*/*acpi*
  
+ ACPI COMPONENT ARCHITECTURE (ACPICA)
+ M:    Robert Moore <robert.moore@intel.com>
+ M:    Lv Zheng <lv.zheng@intel.com>
+ M:    Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+ L:    linux-acpi@vger.kernel.org
+ L:    devel@acpica.org
+ W:    https://acpica.org/
+ W:    https://github.com/acpica/acpica/
+ Q:    https://patchwork.kernel.org/project/linux-acpi/list/
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
+ S:    Supported
+ F:    drivers/acpi/acpica/
+ F:    include/acpi/
  ACPI FAN DRIVER
  M:    Zhang Rui <rui.zhang@intel.com>
  L:    linux-acpi@vger.kernel.org
@@@ -1402,7 -1416,7 +1416,7 @@@ M:      Wolfram Sang <wsa@the-dreams.de
  L:    linux-i2c@vger.kernel.org
  S:    Maintained
  F:    drivers/misc/eeprom/at24.c
 -F:    include/linux/i2c/at24.h
 +F:    include/linux/platform_data/at24.h
  
  ATA OVER ETHERNET (AOE) DRIVER
  M:    "Ed L. Cashin" <ecashin@coraid.com>
@@@ -1791,7 -1805,6 +1805,7 @@@ F:      include/net/bluetooth
  
  BONDING DRIVER
  M:    Jay Vosburgh <fubar@us.ibm.com>
 +M:    Veaceslav Falico <vfalico@redhat.com>
  M:    Andy Gospodarek <andy@greyhouse.net>
  L:    netdev@vger.kernel.org
  W:    http://sourceforge.net/projects/bonding/
@@@ -6379,12 -6392,6 +6393,12 @@@ S:    Supporte
  F:    Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt
  F:    drivers/pci/host/pci-tegra.c
  
 +PCI DRIVER FOR SAMSUNG EXYNOS
 +M:    Jingoo Han <jg1.han@samsung.com>
 +L:    linux-pci@vger.kernel.org
 +S:    Maintained
 +F:    drivers/pci/host/pci-exynos.c
 +
  PCMCIA SUBSYSTEM
  P:    Linux PCMCIA Team
  L:    linux-pcmcia@lists.infradead.org
@@@ -7829,13 -7836,6 +7843,13 @@@ F:    Documentation/sound/alsa/soc
  F:    sound/soc/
  F:    include/sound/soc*
  
 +SOUND - DMAENGINE HELPERS
 +M:    Lars-Peter Clausen <lars@metafoo.de>
 +S:    Supported
 +F:    include/sound/dmaengine_pcm.h
 +F:    sound/core/pcm_dmaengine.c
 +F:    sound/soc/soc-generic-dmaengine-pcm.c
 +
  SPARC + UltraSPARC (sparc/sparc64)
  M:    "David S. Miller" <davem@davemloft.net>
  L:    sparclinux@vger.kernel.org
@@@ -8616,6 -8616,14 +8630,6 @@@ S:     Maintaine
  F:    arch/m68k/*/*_no.*
  F:    arch/m68k/include/asm/*_no.*
  
 -UCLINUX FOR RENESAS H8/300 (H8300)
 -M:    Yoshinori Sato <ysato@users.sourceforge.jp>
 -W:    http://uclinux-h8.sourceforge.jp/
 -S:    Supported
 -F:    arch/h8300/
 -F:    drivers/ide/ide-h8300.c
 -F:    drivers/net/ethernet/8390/ne-h8300.c
 -
  UDF FILESYSTEM
  M:    Jan Kara <jack@suse.cz>
  S:    Maintained
diff --combined arch/x86/Kconfig
index 2f43aa1932c3e3b8603c3774c5d5a966bb3a87a4,0c11032e2e913e4cf050f635cc2bd41bc71e7111..e0836de76f3c90dcb57ec0e7bbfb293cb7d0ca99
@@@ -22,7 -22,6 +22,7 @@@ config X86_6
  config X86
        def_bool y
        select ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS
 +      select ARCH_MIGHT_HAVE_PC_PARPORT
        select HAVE_AOUT if X86_32
        select HAVE_UNSTABLE_SCHED_CLOCK
        select ARCH_SUPPORTS_NUMA_BALANCING
@@@ -255,10 -254,6 +255,6 @@@ config ARCH_HWEIGHT_CFLAG
        default "-fcall-saved-ecx -fcall-saved-edx" if X86_32
        default "-fcall-saved-rdi -fcall-saved-rsi -fcall-saved-rdx -fcall-saved-rcx -fcall-saved-r8 -fcall-saved-r9 -fcall-saved-r10 -fcall-saved-r11" if X86_64
  
- config ARCH_CPU_PROBE_RELEASE
-       def_bool y
-       depends on HOTPLUG_CPU
  config ARCH_SUPPORTS_UPROBES
        def_bool y
  
diff --combined drivers/i2c/i2c-core.c
index 111b2c6089e65b7e82718fc80f8da7143bd3b307,75ba8608383e4b1d26e65a389f099f7028e7b733..5923cfa390c86de6528559c229ace0a4b39b402c
@@@ -248,16 -248,19 +248,18 @@@ static int i2c_device_probe(struct devi
        driver = to_i2c_driver(dev->driver);
        if (!driver->probe || !driver->id_table)
                return -ENODEV;
 -      client->driver = driver;
 +
        if (!device_can_wakeup(&client->dev))
                device_init_wakeup(&client->dev,
                                        client->flags & I2C_CLIENT_WAKE);
        dev_dbg(dev, "probe\n");
  
+       acpi_dev_pm_attach(&client->dev, true);
        status = driver->probe(client, i2c_match_id(driver->id_table, client));
-       if (status)
+       if (status) {
 -              client->driver = NULL;
                i2c_set_clientdata(client, NULL);
+               acpi_dev_pm_detach(&client->dev, true);
+       }
        return status;
  }
  
@@@ -278,9 -281,11 +280,9 @@@ static int i2c_device_remove(struct dev
                dev->driver = NULL;
                status = 0;
        }
 -      if (status == 0) {
 -              client->driver = NULL;
 +      if (status == 0)
                i2c_set_clientdata(client, NULL);
 -      }
+       acpi_dev_pm_detach(&client->dev, true);
        return status;
  }
  
@@@ -1109,8 -1114,10 +1111,10 @@@ static acpi_status acpi_i2c_add_device(
        if (ret < 0 || !info.addr)
                return AE_OK;
  
+       adev->power.flags.ignore_parent = true;
        strlcpy(info.type, dev_name(&adev->dev), sizeof(info.type));
        if (!i2c_new_device(adapter, &info)) {
+               adev->power.flags.ignore_parent = false;
                dev_err(&adapter->dev,
                        "failed to add I2C device %s from ACPI\n",
                        dev_name(&adev->dev));
@@@ -1607,14 -1614,9 +1611,14 @@@ static int i2c_cmd(struct device *dev, 
  {
        struct i2c_client       *client = i2c_verify_client(dev);
        struct i2c_cmd_arg      *arg = _arg;
 +      struct i2c_driver       *driver;
 +
 +      if (!client || !client->dev.driver)
 +              return 0;
  
 -      if (client && client->driver && client->driver->command)
 -              client->driver->command(client, arg->cmd, arg->arg);
 +      driver = to_i2c_driver(client->dev.driver);
 +      if (driver->command)
 +              driver->command(client, arg->cmd, arg->arg);
        return 0;
  }
  
index f8140164ec0b9bc8942c3b8a026490c1aec4c190,5440131cd4eecff5fb74a3d9bbcd63d00f4d1ad1..1ce8ee054f1aa89ba83fb1001761e9200262a666
@@@ -338,7 -338,7 +338,7 @@@ int acpi_get_hp_hw_control_from_firmwar
        acpi_handle chandle, handle;
        struct acpi_buffer string = { ACPI_ALLOCATE_BUFFER, NULL };
  
 -      flags &= OSC_SHPC_NATIVE_HP_CONTROL;
 +      flags &= OSC_PCI_SHPC_NATIVE_HP_CONTROL;
        if (!flags) {
                err("Invalid flags %u specified!\n", flags);
                return -EINVAL;
@@@ -411,13 -411,10 +411,10 @@@ EXPORT_SYMBOL(acpi_get_hp_hw_control_fr
  static int pcihp_is_ejectable(acpi_handle handle)
  {
        acpi_status status;
-       acpi_handle tmp;
        unsigned long long removable;
-       status = acpi_get_handle(handle, "_ADR", &tmp);
-       if (ACPI_FAILURE(status))
+       if (!acpi_has_method(handle, "_ADR"))
                return 0;
-       status = acpi_get_handle(handle, "_EJ0", &tmp);
-       if (ACPI_SUCCESS(status))
+       if (acpi_has_method(handle, "_EJ0"))
                return 1;
        status = acpi_evaluate_integer(handle, "_RMV", NULL, &removable);
        if (ACPI_SUCCESS(status) && removable)
index 13ec195f0ca65f6e158e872b6a60ba3b8d04ddc1,3b32852d6d2d0582642a7140d305566e5149a552..47caab0ea7a14faa1051b35eafe1ff8e53703ee0
@@@ -127,17 -127,18 +127,17 @@@ MODULE_PARM_DESC(minor
                 "default is -1 (automatic)");
  #endif
  
 -static int kbd_backlight = 1;
 +static int kbd_backlight = -1;
  module_param(kbd_backlight, int, 0444);
  MODULE_PARM_DESC(kbd_backlight,
                 "set this to 0 to disable keyboard backlight, "
 -               "1 to enable it (default: 0)");
 +               "1 to enable it (default: no change from current value)");
  
 -static int kbd_backlight_timeout;     /* = 0 */
 +static int kbd_backlight_timeout = -1;
  module_param(kbd_backlight_timeout, int, 0444);
  MODULE_PARM_DESC(kbd_backlight_timeout,
 -               "set this to 0 to set the default 10 seconds timeout, "
 -               "1 for 30 seconds, 2 for 60 seconds and 3 to disable timeout "
 -               "(default: 0)");
 +               "meaningful values vary from 0 to 3 and their meaning depends "
 +               "on the model (default: no change from current value)");
  
  #ifdef CONFIG_PM_SLEEP
  static void sony_nc_kbd_backlight_resume(void);
@@@ -1508,7 -1509,6 +1508,6 @@@ static void sony_nc_function_resume(voi
  static int sony_nc_resume(struct device *dev)
  {
        struct sony_nc_value *item;
-       acpi_handle handle;
  
        for (item = sony_nc_values; item->name; item++) {
                int ret;
                }
        }
  
-       if (ACPI_SUCCESS(acpi_get_handle(sony_nc_acpi_handle, "ECON",
-                                        &handle))) {
+       if (acpi_has_method(sony_nc_acpi_handle, "ECON")) {
                int arg = 1;
                if (sony_nc_int_call(sony_nc_acpi_handle, "ECON", &arg, NULL))
                        dprintk("ECON Method failed\n");
        }
  
-       if (ACPI_SUCCESS(acpi_get_handle(sony_nc_acpi_handle, "SN00",
-                                        &handle)))
+       if (acpi_has_method(sony_nc_acpi_handle, "SN00"))
                sony_nc_function_resume();
  
        return 0;
@@@ -1843,8 -1841,6 +1840,8 @@@ static int sony_nc_kbd_backlight_setup(
        if (!kbdbl_ctl)
                return -ENOMEM;
  
 +      kbdbl_ctl->mode = kbd_backlight;
 +      kbdbl_ctl->timeout = kbd_backlight_timeout;
        kbdbl_ctl->handle = handle;
        if (handle == 0x0137)
                kbdbl_ctl->base = 0x0C00;
        if (ret)
                goto outmode;
  
 -      __sony_nc_kbd_backlight_mode_set(kbd_backlight);
 -      __sony_nc_kbd_backlight_timeout_set(kbd_backlight_timeout);
 +      __sony_nc_kbd_backlight_mode_set(kbdbl_ctl->mode);
 +      __sony_nc_kbd_backlight_timeout_set(kbdbl_ctl->timeout);
  
        return 0;
  
@@@ -1887,8 -1883,17 +1884,8 @@@ outkzalloc
  static void sony_nc_kbd_backlight_cleanup(struct platform_device *pd)
  {
        if (kbdbl_ctl) {
 -              int result;
 -
                device_remove_file(&pd->dev, &kbdbl_ctl->mode_attr);
                device_remove_file(&pd->dev, &kbdbl_ctl->timeout_attr);
 -
 -              /* restore the default hw behaviour */
 -              sony_call_snc_handle(kbdbl_ctl->handle,
 -                              kbdbl_ctl->base | 0x10000, &result);
 -              sony_call_snc_handle(kbdbl_ctl->handle,
 -                              kbdbl_ctl->base + 0x200, &result);
 -
                kfree(kbdbl_ctl);
                kbdbl_ctl = NULL;
        }
@@@ -2682,7 -2687,6 +2679,6 @@@ static void sony_nc_backlight_ng_read_l
  
  static void sony_nc_backlight_setup(void)
  {
-       acpi_handle unused;
        int max_brightness = 0;
        const struct backlight_ops *ops = NULL;
        struct backlight_properties props;
                sony_nc_backlight_ng_read_limits(0x14c, &sony_bl_props);
                max_brightness = sony_bl_props.maxlvl - sony_bl_props.offset;
  
-       } else if (ACPI_SUCCESS(acpi_get_handle(sony_nc_acpi_handle, "GBRT",
-                                               &unused))) {
+       } else if (acpi_has_method(sony_nc_acpi_handle, "GBRT")) {
                ops = &sony_backlight_ops;
                max_brightness = SONY_MAX_BRIGHTNESS - 1;
  
@@@ -2750,7 -2753,6 +2745,6 @@@ static int sony_nc_add(struct acpi_devi
  {
        acpi_status status;
        int result = 0;
-       acpi_handle handle;
        struct sony_nc_value *item;
  
        pr_info("%s v%s\n", SONY_NC_DRIVER_NAME, SONY_LAPTOP_DRIVER_VERSION);
                goto outplatform;
        }
  
-       if (ACPI_SUCCESS(acpi_get_handle(sony_nc_acpi_handle, "ECON",
-                                        &handle))) {
+       if (acpi_has_method(sony_nc_acpi_handle, "ECON")) {
                int arg = 1;
                if (sony_nc_int_call(sony_nc_acpi_handle, "ECON", &arg, NULL))
                        dprintk("ECON Method failed\n");
        }
  
-       if (ACPI_SUCCESS(acpi_get_handle(sony_nc_acpi_handle, "SN00",
-                                        &handle))) {
+       if (acpi_has_method(sony_nc_acpi_handle, "SN00")) {
                dprintk("Doing SNC setup\n");
                /* retrieve the available handles */
                result = sony_nc_handles_setup(sony_pf_device);
  
                /* find the available acpiget as described in the DSDT */
                for (; item->acpiget && *item->acpiget; ++item->acpiget) {
-                       if (ACPI_SUCCESS(acpi_get_handle(sony_nc_acpi_handle,
-                                                        *item->acpiget,
-                                                        &handle))) {
+                       if (acpi_has_method(sony_nc_acpi_handle,
+                                                       *item->acpiget)) {
                                dprintk("Found %s getter: %s\n",
                                                item->name, *item->acpiget);
                                item->devattr.attr.mode |= S_IRUGO;
  
                /* find the available acpiset as described in the DSDT */
                for (; item->acpiset && *item->acpiset; ++item->acpiset) {
-                       if (ACPI_SUCCESS(acpi_get_handle(sony_nc_acpi_handle,
-                                                        *item->acpiset,
-                                                        &handle))) {
+                       if (acpi_has_method(sony_nc_acpi_handle,
+                                                       *item->acpiset)) {
                                dprintk("Found %s setter: %s\n",
                                                item->name, *item->acpiset);
                                item->devattr.attr.mode |= S_IWUSR;
diff --combined include/linux/acpi.h
index e2e52cf53224854e38e5534d3fa12824505b3f77,3bc74141453f85b93400536f0bcb61f1354b8bf5..35e68358ad066e8f34b18e31e548228d4706db5f
@@@ -116,7 -116,7 +116,7 @@@ void acpi_numa_arch_fixup(void)
  
  #ifdef CONFIG_ACPI_HOTPLUG_CPU
  /* Arch dependent functions for cpu hotplug support */
- int acpi_map_lsapic(acpi_handle handle, int *pcpu);
+ int acpi_map_lsapic(acpi_handle handle, int physid, int *pcpu);
  int acpi_unmap_lsapic(int cpu);
  #endif /* CONFIG_ACPI_HOTPLUG_CPU */
  
@@@ -294,51 -294,58 +294,51 @@@ void __init acpi_nvs_nosave_s3(void)
  #endif /* CONFIG_PM_SLEEP */
  
  struct acpi_osc_context {
 -      char *uuid_str; /* uuid string */
 +      char *uuid_str;                 /* UUID string */
        int rev;
 -      struct acpi_buffer cap; /* arg2/arg3 */
 -      struct acpi_buffer ret; /* free by caller if success */
 +      struct acpi_buffer cap;         /* list of DWORD capabilities */
 +      struct acpi_buffer ret;         /* free by caller if success */
  };
  
 -#define OSC_QUERY_TYPE                        0
 -#define OSC_SUPPORT_TYPE              1
 -#define OSC_CONTROL_TYPE              2
 -
 -/* _OSC DW0 Definition */
 -#define OSC_QUERY_ENABLE              1
 -#define OSC_REQUEST_ERROR             2
 -#define OSC_INVALID_UUID_ERROR                4
 -#define OSC_INVALID_REVISION_ERROR    8
 -#define OSC_CAPABILITIES_MASK_ERROR   16
 -
  acpi_status acpi_run_osc(acpi_handle handle, struct acpi_osc_context *context);
  
 -/* platform-wide _OSC bits */
 -#define OSC_SB_PAD_SUPPORT            1
 -#define OSC_SB_PPC_OST_SUPPORT                2
 -#define OSC_SB_PR3_SUPPORT            4
 -#define OSC_SB_HOTPLUG_OST_SUPPORT    8
 -#define OSC_SB_APEI_SUPPORT           16
 +/* Indexes into _OSC Capabilities Buffer (DWORDs 2 & 3 are device-specific) */
 +#define OSC_QUERY_DWORD                               0       /* DWORD 1 */
 +#define OSC_SUPPORT_DWORD                     1       /* DWORD 2 */
 +#define OSC_CONTROL_DWORD                     2       /* DWORD 3 */
 +
 +/* _OSC Capabilities DWORD 1: Query/Control and Error Returns (generic) */
 +#define OSC_QUERY_ENABLE                      0x00000001  /* input */
 +#define OSC_REQUEST_ERROR                     0x00000002  /* return */
 +#define OSC_INVALID_UUID_ERROR                        0x00000004  /* return */
 +#define OSC_INVALID_REVISION_ERROR            0x00000008  /* return */
 +#define OSC_CAPABILITIES_MASK_ERROR           0x00000010  /* return */
 +
 +/* Platform-Wide Capabilities _OSC: Capabilities DWORD 2: Support Field */
 +#define OSC_SB_PAD_SUPPORT                    0x00000001
 +#define OSC_SB_PPC_OST_SUPPORT                        0x00000002
 +#define OSC_SB_PR3_SUPPORT                    0x00000004
 +#define OSC_SB_HOTPLUG_OST_SUPPORT            0x00000008
 +#define OSC_SB_APEI_SUPPORT                   0x00000010
 +#define OSC_SB_CPC_SUPPORT                    0x00000020
  
  extern bool osc_sb_apei_support_acked;
  
 -/* PCI defined _OSC bits */
 -/* _OSC DW1 Definition (OS Support Fields) */
 -#define OSC_EXT_PCI_CONFIG_SUPPORT            1
 -#define OSC_ACTIVE_STATE_PWR_SUPPORT          2
 -#define OSC_CLOCK_PWR_CAPABILITY_SUPPORT      4
 -#define OSC_PCI_SEGMENT_GROUPS_SUPPORT                8
 -#define OSC_MSI_SUPPORT                               16
 -#define OSC_PCI_SUPPORT_MASKS                 0x1f
 -
 -/* _OSC DW1 Definition (OS Control Fields) */
 -#define OSC_PCI_EXPRESS_NATIVE_HP_CONTROL     1
 -#define OSC_SHPC_NATIVE_HP_CONTROL            2
 -#define OSC_PCI_EXPRESS_PME_CONTROL           4
 -#define OSC_PCI_EXPRESS_AER_CONTROL           8
 -#define OSC_PCI_EXPRESS_CAP_STRUCTURE_CONTROL 16
 -
 -#define OSC_PCI_CONTROL_MASKS         (OSC_PCI_EXPRESS_NATIVE_HP_CONTROL |    \
 -                              OSC_SHPC_NATIVE_HP_CONTROL |            \
 -                              OSC_PCI_EXPRESS_PME_CONTROL |           \
 -                              OSC_PCI_EXPRESS_AER_CONTROL |           \
 -                              OSC_PCI_EXPRESS_CAP_STRUCTURE_CONTROL)
 -
 -#define OSC_PCI_NATIVE_HOTPLUG        (OSC_PCI_EXPRESS_NATIVE_HP_CONTROL |    \
 -                              OSC_SHPC_NATIVE_HP_CONTROL)
 +/* PCI Host Bridge _OSC: Capabilities DWORD 2: Support Field */
 +#define OSC_PCI_EXT_CONFIG_SUPPORT            0x00000001
 +#define OSC_PCI_ASPM_SUPPORT                  0x00000002
 +#define OSC_PCI_CLOCK_PM_SUPPORT              0x00000004
 +#define OSC_PCI_SEGMENT_GROUPS_SUPPORT                0x00000008
 +#define OSC_PCI_MSI_SUPPORT                   0x00000010
 +#define OSC_PCI_SUPPORT_MASKS                 0x0000001f
 +
 +/* PCI Host Bridge _OSC: Capabilities DWORD 3: Control Field */
 +#define OSC_PCI_EXPRESS_NATIVE_HP_CONTROL     0x00000001
 +#define OSC_PCI_SHPC_NATIVE_HP_CONTROL                0x00000002
 +#define OSC_PCI_EXPRESS_PME_CONTROL           0x00000004
 +#define OSC_PCI_EXPRESS_AER_CONTROL           0x00000008
 +#define OSC_PCI_EXPRESS_CAPABILITY_CONTROL    0x00000010
 +#define OSC_PCI_CONTROL_MASKS                 0x0000001f
  
  extern acpi_status acpi_pci_osc_control_set(acpi_handle handle,
                                             u32 *mask, u32 req);