diff options
-rw-r--r-- | drivers/acpi/sbs.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/drivers/acpi/sbs.c b/drivers/acpi/sbs.c index c4f9641147c4..aae65e8f70f3 100644 --- a/drivers/acpi/sbs.c +++ b/drivers/acpi/sbs.c | |||
@@ -29,9 +29,11 @@ | |||
29 | #include <linux/moduleparam.h> | 29 | #include <linux/moduleparam.h> |
30 | #include <linux/kernel.h> | 30 | #include <linux/kernel.h> |
31 | 31 | ||
32 | #ifdef CONFIG_ACPI_PROCFS | ||
32 | #include <linux/proc_fs.h> | 33 | #include <linux/proc_fs.h> |
33 | #include <linux/seq_file.h> | 34 | #include <linux/seq_file.h> |
34 | #include <asm/uaccess.h> | 35 | #include <asm/uaccess.h> |
36 | #endif | ||
35 | 37 | ||
36 | #include <linux/acpi.h> | 38 | #include <linux/acpi.h> |
37 | #include <linux/timer.h> | 39 | #include <linux/timer.h> |
@@ -86,7 +88,9 @@ MODULE_DEVICE_TABLE(acpi, sbs_device_ids); | |||
86 | struct acpi_battery { | 88 | struct acpi_battery { |
87 | struct power_supply bat; | 89 | struct power_supply bat; |
88 | struct acpi_sbs *sbs; | 90 | struct acpi_sbs *sbs; |
91 | #ifdef CONFIG_ACPI_PROCFS | ||
89 | struct proc_dir_entry *proc_entry; | 92 | struct proc_dir_entry *proc_entry; |
93 | #endif | ||
90 | unsigned long update_time; | 94 | unsigned long update_time; |
91 | char name[8]; | 95 | char name[8]; |
92 | char manufacturer_name[ACPI_SBS_BLOCK_MAX]; | 96 | char manufacturer_name[ACPI_SBS_BLOCK_MAX]; |
@@ -118,7 +122,9 @@ struct acpi_sbs { | |||
118 | struct acpi_device *device; | 122 | struct acpi_device *device; |
119 | struct acpi_smb_hc *hc; | 123 | struct acpi_smb_hc *hc; |
120 | struct mutex lock; | 124 | struct mutex lock; |
125 | #ifdef CONFIG_ACPI_PROCFS | ||
121 | struct proc_dir_entry *charger_entry; | 126 | struct proc_dir_entry *charger_entry; |
127 | #endif | ||
122 | struct acpi_battery battery[MAX_SBS_BAT]; | 128 | struct acpi_battery battery[MAX_SBS_BAT]; |
123 | u8 batteries_supported:4; | 129 | u8 batteries_supported:4; |
124 | u8 manager_present:1; | 130 | u8 manager_present:1; |
@@ -380,6 +386,8 @@ static int acpi_battery_get_state(struct acpi_battery *battery) | |||
380 | return result; | 386 | return result; |
381 | } | 387 | } |
382 | 388 | ||
389 | #ifdef CONFIG_ACPI_PROCFS | ||
390 | |||
383 | static int acpi_battery_get_alarm(struct acpi_battery *battery) | 391 | static int acpi_battery_get_alarm(struct acpi_battery *battery) |
384 | { | 392 | { |
385 | return acpi_smbus_read(battery->sbs->hc, SMBUS_READ_WORD, | 393 | return acpi_smbus_read(battery->sbs->hc, SMBUS_READ_WORD, |
@@ -416,6 +424,8 @@ static int acpi_battery_set_alarm(struct acpi_battery *battery) | |||
416 | return ret; | 424 | return ret; |
417 | } | 425 | } |
418 | 426 | ||
427 | #endif | ||
428 | |||
419 | static int acpi_ac_get_present(struct acpi_sbs *sbs) | 429 | static int acpi_ac_get_present(struct acpi_sbs *sbs) |
420 | { | 430 | { |
421 | int result; | 431 | int result; |
@@ -432,6 +442,7 @@ static int acpi_ac_get_present(struct acpi_sbs *sbs) | |||
432 | FS Interface (/proc/acpi) | 442 | FS Interface (/proc/acpi) |
433 | -------------------------------------------------------------------------- */ | 443 | -------------------------------------------------------------------------- */ |
434 | 444 | ||
445 | #ifdef CONFIG_ACPI_PROCFS | ||
435 | /* Generic Routines */ | 446 | /* Generic Routines */ |
436 | static int | 447 | static int |
437 | acpi_sbs_add_fs(struct proc_dir_entry **dir, | 448 | acpi_sbs_add_fs(struct proc_dir_entry **dir, |
@@ -705,6 +716,8 @@ static struct file_operations acpi_ac_state_fops = { | |||
705 | .owner = THIS_MODULE, | 716 | .owner = THIS_MODULE, |
706 | }; | 717 | }; |
707 | 718 | ||
719 | #endif | ||
720 | |||
708 | /* -------------------------------------------------------------------------- | 721 | /* -------------------------------------------------------------------------- |
709 | Driver Interface | 722 | Driver Interface |
710 | -------------------------------------------------------------------------- */ | 723 | -------------------------------------------------------------------------- */ |
@@ -750,10 +763,12 @@ static int acpi_battery_add(struct acpi_sbs *sbs, int id) | |||
750 | return result; | 763 | return result; |
751 | 764 | ||
752 | sprintf(battery->name, ACPI_BATTERY_DIR_NAME, id); | 765 | sprintf(battery->name, ACPI_BATTERY_DIR_NAME, id); |
766 | #ifdef CONFIG_ACPI_PROCFS | ||
753 | acpi_sbs_add_fs(&battery->proc_entry, acpi_battery_dir, | 767 | acpi_sbs_add_fs(&battery->proc_entry, acpi_battery_dir, |
754 | battery->name, &acpi_battery_info_fops, | 768 | battery->name, &acpi_battery_info_fops, |
755 | &acpi_battery_state_fops, &acpi_battery_alarm_fops, | 769 | &acpi_battery_state_fops, &acpi_battery_alarm_fops, |
756 | battery); | 770 | battery); |
771 | #endif | ||
757 | battery->bat.name = battery->name; | 772 | battery->bat.name = battery->name; |
758 | battery->bat.type = POWER_SUPPLY_TYPE_BATTERY; | 773 | battery->bat.type = POWER_SUPPLY_TYPE_BATTERY; |
759 | if (!acpi_battery_mode(battery)) { | 774 | if (!acpi_battery_mode(battery)) { |
@@ -777,10 +792,12 @@ static void acpi_battery_remove(struct acpi_sbs *sbs, int id) | |||
777 | { | 792 | { |
778 | if (sbs->battery[id].bat.dev) | 793 | if (sbs->battery[id].bat.dev) |
779 | power_supply_unregister(&sbs->battery[id].bat); | 794 | power_supply_unregister(&sbs->battery[id].bat); |
795 | #ifdef CONFIG_ACPI_PROCFS | ||
780 | if (sbs->battery[id].proc_entry) { | 796 | if (sbs->battery[id].proc_entry) { |
781 | acpi_sbs_remove_fs(&(sbs->battery[id].proc_entry), | 797 | acpi_sbs_remove_fs(&(sbs->battery[id].proc_entry), |
782 | acpi_battery_dir); | 798 | acpi_battery_dir); |
783 | } | 799 | } |
800 | #endif | ||
784 | } | 801 | } |
785 | 802 | ||
786 | static int acpi_charger_add(struct acpi_sbs *sbs) | 803 | static int acpi_charger_add(struct acpi_sbs *sbs) |
@@ -790,11 +807,13 @@ static int acpi_charger_add(struct acpi_sbs *sbs) | |||
790 | result = acpi_ac_get_present(sbs); | 807 | result = acpi_ac_get_present(sbs); |
791 | if (result) | 808 | if (result) |
792 | goto end; | 809 | goto end; |
810 | #ifdef CONFIG_ACPI_PROCFS | ||
793 | result = acpi_sbs_add_fs(&sbs->charger_entry, acpi_ac_dir, | 811 | result = acpi_sbs_add_fs(&sbs->charger_entry, acpi_ac_dir, |
794 | ACPI_AC_DIR_NAME, NULL, | 812 | ACPI_AC_DIR_NAME, NULL, |
795 | &acpi_ac_state_fops, NULL, sbs); | 813 | &acpi_ac_state_fops, NULL, sbs); |
796 | if (result) | 814 | if (result) |
797 | goto end; | 815 | goto end; |
816 | #endif | ||
798 | sbs->charger.name = "sbs-charger"; | 817 | sbs->charger.name = "sbs-charger"; |
799 | sbs->charger.type = POWER_SUPPLY_TYPE_MAINS; | 818 | sbs->charger.type = POWER_SUPPLY_TYPE_MAINS; |
800 | sbs->charger.properties = sbs_ac_props; | 819 | sbs->charger.properties = sbs_ac_props; |
@@ -812,8 +831,10 @@ static void acpi_charger_remove(struct acpi_sbs *sbs) | |||
812 | { | 831 | { |
813 | if (sbs->charger.dev) | 832 | if (sbs->charger.dev) |
814 | power_supply_unregister(&sbs->charger); | 833 | power_supply_unregister(&sbs->charger); |
834 | #ifdef CONFIG_ACPI_PROCFS | ||
815 | if (sbs->charger_entry) | 835 | if (sbs->charger_entry) |
816 | acpi_sbs_remove_fs(&sbs->charger_entry, acpi_ac_dir); | 836 | acpi_sbs_remove_fs(&sbs->charger_entry, acpi_ac_dir); |
837 | #endif | ||
817 | } | 838 | } |
818 | 839 | ||
819 | void acpi_sbs_callback(void *context) | 840 | void acpi_sbs_callback(void *context) |
@@ -916,6 +937,7 @@ static int acpi_sbs_remove(struct acpi_device *device, int type) | |||
916 | 937 | ||
917 | static void acpi_sbs_rmdirs(void) | 938 | static void acpi_sbs_rmdirs(void) |
918 | { | 939 | { |
940 | #ifdef CONFIG_ACPI_PROCFS | ||
919 | if (acpi_ac_dir) { | 941 | if (acpi_ac_dir) { |
920 | acpi_unlock_ac_dir(acpi_ac_dir); | 942 | acpi_unlock_ac_dir(acpi_ac_dir); |
921 | acpi_ac_dir = NULL; | 943 | acpi_ac_dir = NULL; |
@@ -924,6 +946,7 @@ static void acpi_sbs_rmdirs(void) | |||
924 | acpi_unlock_battery_dir(acpi_battery_dir); | 946 | acpi_unlock_battery_dir(acpi_battery_dir); |
925 | acpi_battery_dir = NULL; | 947 | acpi_battery_dir = NULL; |
926 | } | 948 | } |
949 | #endif | ||
927 | } | 950 | } |
928 | 951 | ||
929 | static int acpi_sbs_resume(struct acpi_device *device) | 952 | static int acpi_sbs_resume(struct acpi_device *device) |
@@ -953,6 +976,7 @@ static int __init acpi_sbs_init(void) | |||
953 | 976 | ||
954 | if (acpi_disabled) | 977 | if (acpi_disabled) |
955 | return -ENODEV; | 978 | return -ENODEV; |
979 | #ifdef CONFIG_ACPI_PROCFS | ||
956 | acpi_ac_dir = acpi_lock_ac_dir(); | 980 | acpi_ac_dir = acpi_lock_ac_dir(); |
957 | if (!acpi_ac_dir) | 981 | if (!acpi_ac_dir) |
958 | return -ENODEV; | 982 | return -ENODEV; |
@@ -961,6 +985,7 @@ static int __init acpi_sbs_init(void) | |||
961 | acpi_sbs_rmdirs(); | 985 | acpi_sbs_rmdirs(); |
962 | return -ENODEV; | 986 | return -ENODEV; |
963 | } | 987 | } |
988 | #endif | ||
964 | result = acpi_bus_register_driver(&acpi_sbs_driver); | 989 | result = acpi_bus_register_driver(&acpi_sbs_driver); |
965 | if (result < 0) { | 990 | if (result < 0) { |
966 | acpi_sbs_rmdirs(); | 991 | acpi_sbs_rmdirs(); |