Pull bugzilla-8768 into release branch

Len Brown fc0dc4d3 53fdc518

+17 -30
+17 -30
drivers/acpi/battery.c
··· 113 acpi_string oem_info; 114 }; 115 116 - enum acpi_battery_files{ 117 ACPI_BATTERY_INFO = 0, 118 ACPI_BATTERY_STATE, 119 ACPI_BATTERY_ALARM, ··· 129 }; 130 131 struct acpi_battery { 132 - struct mutex mutex; 133 struct acpi_device *device; 134 struct acpi_battery_flags flags; 135 struct acpi_buffer bif_data; 136 struct acpi_buffer bst_data; 137 unsigned long alarm; 138 unsigned long update_time[ACPI_BATTERY_NUMFILES]; 139 }; 140 141 inline int acpi_battery_present(struct acpi_battery *battery) ··· 236 return 0; 237 238 /* Evaluate _BIF */ 239 - 240 - status = 241 - acpi_evaluate_object(acpi_battery_handle(battery), "_BIF", NULL, 242 - &buffer); 243 if (ACPI_FAILURE(status)) { 244 ACPI_EXCEPTION((AE_INFO, status, "Evaluating _BIF")); 245 return -ENODEV; ··· 286 return 0; 287 288 /* Evaluate _BST */ 289 - 290 - status = 291 - acpi_evaluate_object(acpi_battery_handle(battery), "_BST", NULL, 292 - &buffer); 293 if (ACPI_FAILURE(status)) { 294 ACPI_EXCEPTION((AE_INFO, status, "Evaluating _BST")); 295 return -ENODEV; ··· 337 338 arg0.integer.value = alarm; 339 340 - status = 341 - acpi_evaluate_object(acpi_battery_handle(battery), "_BTP", 342 &arg_list, NULL); 343 if (ACPI_FAILURE(status)) 344 return -ENODEV; 345 ··· 660 if (!battery || (count > sizeof(alarm_string) - 1)) 661 return -EINVAL; 662 663 - mutex_lock(&battery->mutex); 664 - 665 result = acpi_battery_update(battery, 1, &update_result); 666 if (result) { 667 result = -ENODEV; ··· 688 acpi_battery_check_result(battery, result); 689 690 if (!result) 691 - result = count; 692 - 693 - mutex_unlock(&battery->mutex); 694 695 return result; 696 } ··· 712 int update_result = ACPI_BATTERY_NONE_UPDATE; 713 int update = 0; 714 715 - mutex_lock(&battery->mutex); 716 - 717 update = (get_seconds() - battery->update_time[fid] >= update_time); 718 update = (update | battery->flags.update[fid]); 719 ··· 729 result = acpi_read_funcs[fid].print(seq, result); 730 acpi_battery_check_result(battery, result); 731 battery->flags.update[fid] = result; 732 - mutex_unlock(&battery->mutex); 733 return result; 734 } 735 ··· 892 if (!battery) 893 return -ENOMEM; 894 895 - mutex_init(&battery->mutex); 896 - 897 - mutex_lock(&battery->mutex); 898 - 899 battery->device = device; 900 strcpy(acpi_device_name(device), ACPI_BATTERY_DEVICE_NAME); 901 strcpy(acpi_device_class(device), ACPI_BATTERY_CLASS); ··· 928 kfree(battery); 929 } 930 931 - mutex_unlock(&battery->mutex); 932 933 return result; 934 } ··· 942 943 battery = acpi_driver_data(device); 944 945 - mutex_lock(&battery->mutex); 946 - 947 status = acpi_remove_notify_handler(device->handle, 948 ACPI_ALL_NOTIFY, 949 acpi_battery_notify); ··· 952 953 kfree(battery->bst_data.pointer); 954 955 - mutex_unlock(&battery->mutex); 956 - 957 - mutex_destroy(&battery->mutex); 958 959 kfree(battery); 960
··· 113 acpi_string oem_info; 114 }; 115 116 + enum acpi_battery_files { 117 ACPI_BATTERY_INFO = 0, 118 ACPI_BATTERY_STATE, 119 ACPI_BATTERY_ALARM, ··· 129 }; 130 131 struct acpi_battery { 132 struct acpi_device *device; 133 struct acpi_battery_flags flags; 134 struct acpi_buffer bif_data; 135 struct acpi_buffer bst_data; 136 + struct mutex lock; 137 unsigned long alarm; 138 unsigned long update_time[ACPI_BATTERY_NUMFILES]; 139 + 140 }; 141 142 inline int acpi_battery_present(struct acpi_battery *battery) ··· 235 return 0; 236 237 /* Evaluate _BIF */ 238 + mutex_lock(&battery->lock); 239 + status = acpi_evaluate_object(acpi_battery_handle(battery), "_BIF", 240 + NULL, &buffer); 241 + mutex_unlock(&battery->lock); 242 if (ACPI_FAILURE(status)) { 243 ACPI_EXCEPTION((AE_INFO, status, "Evaluating _BIF")); 244 return -ENODEV; ··· 285 return 0; 286 287 /* Evaluate _BST */ 288 + mutex_lock(&battery->lock); 289 + status = acpi_evaluate_object(acpi_battery_handle(battery), "_BST", 290 + NULL, &buffer); 291 + mutex_unlock(&battery->lock); 292 if (ACPI_FAILURE(status)) { 293 ACPI_EXCEPTION((AE_INFO, status, "Evaluating _BST")); 294 return -ENODEV; ··· 336 337 arg0.integer.value = alarm; 338 339 + mutex_lock(&battery->lock); 340 + status = acpi_evaluate_object(acpi_battery_handle(battery), "_BTP", 341 &arg_list, NULL); 342 + mutex_unlock(&battery->lock); 343 if (ACPI_FAILURE(status)) 344 return -ENODEV; 345 ··· 658 if (!battery || (count > sizeof(alarm_string) - 1)) 659 return -EINVAL; 660 661 result = acpi_battery_update(battery, 1, &update_result); 662 if (result) { 663 result = -ENODEV; ··· 688 acpi_battery_check_result(battery, result); 689 690 if (!result) 691 + return count; 692 693 return result; 694 } ··· 714 int update_result = ACPI_BATTERY_NONE_UPDATE; 715 int update = 0; 716 717 update = (get_seconds() - battery->update_time[fid] >= update_time); 718 update = (update | battery->flags.update[fid]); 719 ··· 733 result = acpi_read_funcs[fid].print(seq, result); 734 acpi_battery_check_result(battery, result); 735 battery->flags.update[fid] = result; 736 return result; 737 } 738 ··· 897 if (!battery) 898 return -ENOMEM; 899 900 + mutex_init(&battery->lock); 901 battery->device = device; 902 strcpy(acpi_device_name(device), ACPI_BATTERY_DEVICE_NAME); 903 strcpy(acpi_device_class(device), ACPI_BATTERY_CLASS); ··· 936 kfree(battery); 937 } 938 939 940 return result; 941 } ··· 951 952 battery = acpi_driver_data(device); 953 954 status = acpi_remove_notify_handler(device->handle, 955 ACPI_ALL_NOTIFY, 956 acpi_battery_notify); ··· 963 964 kfree(battery->bst_data.pointer); 965 966 + mutex_destroy(&battery->lock); 967 968 kfree(battery); 969