Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6

* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6:
ACPI button: don't try to use a non-existent lid device
ACPI: video: Loosen strictness of video bus detection code
eeepc-laptop: Prevent a panic when disabling RT2860 wireless when associated
eeepc-laptop: Properly annote eeepc_enable_camera().
ACPI / PCI: Fix NULL pointer dereference in acpi_get_pci_dev() (rev. 2)
fujitsu-laptop: address missed led-class ifdef fixup
ACPI: Kconfig, fix proc aggregator text
ACPI: add AC/DC notifier

+46 -15
+2 -2
drivers/acpi/Kconfig
··· 218 218 depends on X86 219 219 help 220 220 ACPI 4.0 defines processor Aggregator, which enables OS to perform 221 - specfic processor configuration and control that applies to all 221 + specific processor configuration and control that applies to all 222 222 processors in the platform. Currently only logical processor idling 223 223 is defined, which is to reduce power consumption. This driver 224 - support the new device. 224 + supports the new device. 225 225 226 226 config ACPI_THERMAL 227 227 tristate "Thermal Zone"
+1
drivers/acpi/ac.c
··· 245 245 acpi_bus_generate_netlink_event(device->pnp.device_class, 246 246 dev_name(&device->dev), event, 247 247 (u32) ac->state); 248 + acpi_notifier_call_chain(device, event, (u32) ac->state); 248 249 #ifdef CONFIG_ACPI_SYSFS_POWER 249 250 kobject_uevent(&ac->charger.dev->kobj, KOBJ_CHANGE); 250 251 #endif
+3
drivers/acpi/button.c
··· 251 251 acpi_status status; 252 252 unsigned long long state; 253 253 254 + if (!lid_device) 255 + return -ENODEV; 256 + 254 257 status = acpi_evaluate_integer(lid_device->handle, "_LID", NULL, 255 258 &state); 256 259 if (ACPI_FAILURE(status))
+11
drivers/acpi/pci_root.c
··· 389 389 390 390 pbus = pdev->subordinate; 391 391 pci_dev_put(pdev); 392 + 393 + /* 394 + * This function may be called for a non-PCI device that has a 395 + * PCI parent (eg. a disk under a PCI SATA controller). In that 396 + * case pdev->subordinate will be NULL for the parent. 397 + */ 398 + if (!pbus) { 399 + dev_dbg(&pdev->dev, "Not a PCI-to-PCI bridge\n"); 400 + pdev = NULL; 401 + break; 402 + } 392 403 } 393 404 out: 394 405 list_for_each_entry_safe(node, tmp, &device_list, node)
+6 -1
drivers/acpi/video.c
··· 1109 1109 */ 1110 1110 1111 1111 /* Does this device support video switching? */ 1112 - if (video->cap._DOS) { 1112 + if (video->cap._DOS || video->cap._DOD) { 1113 + if (!video->cap._DOS) { 1114 + printk(KERN_WARNING FW_BUG 1115 + "ACPI(%s) defines _DOD but not _DOS\n", 1116 + acpi_device_bid(video->device)); 1117 + } 1113 1118 video->flags.multihead = 1; 1114 1119 status = 0; 1115 1120 }
+1 -1
drivers/acpi/video_detect.c
··· 84 84 return 0; 85 85 86 86 /* Does this device able to support video switching ? */ 87 - if (ACPI_SUCCESS(acpi_get_handle(device->handle, "_DOD", &h_dummy)) && 87 + if (ACPI_SUCCESS(acpi_get_handle(device->handle, "_DOD", &h_dummy)) || 88 88 ACPI_SUCCESS(acpi_get_handle(device->handle, "_DOS", &h_dummy))) 89 89 video_caps |= ACPI_VIDEO_OUTPUT_SWITCHING; 90 90
+21 -10
drivers/platform/x86/eeepc-laptop.c
··· 150 150 /* The actual device the driver binds to */ 151 151 static struct eeepc_hotk *ehotk; 152 152 153 + static void eeepc_rfkill_hotplug(bool real); 154 + 153 155 /* Platform device/driver */ 154 156 static int eeepc_hotk_thaw(struct device *device); 155 157 static int eeepc_hotk_restore(struct device *device); ··· 345 343 static int eeepc_rfkill_set(void *data, bool blocked) 346 344 { 347 345 unsigned long asl = (unsigned long)data; 348 - return set_acpi(asl, !blocked); 346 + int ret; 347 + 348 + if (asl != CM_ASL_WLAN) 349 + return set_acpi(asl, !blocked); 350 + 351 + /* hack to avoid panic with rt2860sta */ 352 + if (blocked) 353 + eeepc_rfkill_hotplug(false); 354 + ret = set_acpi(asl, !blocked); 355 + return ret; 349 356 } 350 357 351 358 static const struct rfkill_ops eeepc_rfkill_ops = { 352 359 .set_block = eeepc_rfkill_set, 353 360 }; 354 361 355 - static void __init eeepc_enable_camera(void) 362 + static void __devinit eeepc_enable_camera(void) 356 363 { 357 364 /* 358 365 * If the following call to set_acpi() fails, it's because there's no ··· 654 643 return 0; 655 644 } 656 645 657 - static void eeepc_rfkill_hotplug(void) 646 + static void eeepc_rfkill_hotplug(bool real) 658 647 { 659 648 struct pci_dev *dev; 660 649 struct pci_bus *bus; 661 - bool blocked = eeepc_wlan_rfkill_blocked(); 650 + bool blocked = real ? eeepc_wlan_rfkill_blocked() : true; 662 651 663 - if (ehotk->wlan_rfkill) 652 + if (real && ehotk->wlan_rfkill) 664 653 rfkill_set_sw_state(ehotk->wlan_rfkill, blocked); 665 654 666 655 mutex_lock(&ehotk->hotplug_lock); ··· 703 692 if (event != ACPI_NOTIFY_BUS_CHECK) 704 693 return; 705 694 706 - eeepc_rfkill_hotplug(); 695 + eeepc_rfkill_hotplug(true); 707 696 } 708 697 709 698 static void eeepc_hotk_notify(struct acpi_device *device, u32 event) ··· 861 850 { 862 851 /* Refresh both wlan rfkill state and pci hotplug */ 863 852 if (ehotk->wlan_rfkill) 864 - eeepc_rfkill_hotplug(); 853 + eeepc_rfkill_hotplug(true); 865 854 866 855 if (ehotk->bluetooth_rfkill) 867 856 rfkill_set_sw_state(ehotk->bluetooth_rfkill, ··· 1004 993 * Refresh pci hotplug in case the rfkill state was changed after 1005 994 * eeepc_unregister_rfkill_notifier() 1006 995 */ 1007 - eeepc_rfkill_hotplug(); 996 + eeepc_rfkill_hotplug(true); 1008 997 if (ehotk->hotplug_slot) 1009 998 pci_hp_deregister(ehotk->hotplug_slot); 1010 999 ··· 1120 1109 * Refresh pci hotplug in case the rfkill state was changed during 1121 1110 * setup. 1122 1111 */ 1123 - eeepc_rfkill_hotplug(); 1112 + eeepc_rfkill_hotplug(true); 1124 1113 1125 1114 exit: 1126 1115 if (result && result != -ENODEV) ··· 1200 1189 return 0; 1201 1190 } 1202 1191 1203 - static int eeepc_hotk_add(struct acpi_device *device) 1192 + static int __devinit eeepc_hotk_add(struct acpi_device *device) 1204 1193 { 1205 1194 struct device *dev; 1206 1195 int result;
+1 -1
drivers/platform/x86/fujitsu-laptop.c
··· 944 944 struct fujitsu_hotkey_t *fujitsu_hotkey = acpi_driver_data(device); 945 945 struct input_dev *input = fujitsu_hotkey->input; 946 946 947 - #ifdef CONFIG_LEDS_CLASS 947 + #if defined(CONFIG_LEDS_CLASS) || defined(CONFIG_LEDS_CLASS_MODULE) 948 948 if (fujitsu_hotkey->logolamp_registered) 949 949 led_classdev_unregister(&logolamp_led); 950 950