diff options
| author | Zhang Rui <rui.zhang@intel.com> | 2010-12-07 21:40:45 -0500 |
|---|---|---|
| committer | Len Brown <len.brown@intel.com> | 2010-12-09 15:33:08 -0500 |
| commit | 3151dbb04ad5a5bd6358371c0bfb457216d00205 (patch) | |
| tree | 55dc8dace058affeff7cd4cd3575b2f03fe40f22 | |
| parent | e8a7e48bb248a1196484d3f8afa53bded2b24e71 (diff) | |
ACPI ac: update AC status upon sysfs query
http://marc.info/?l=linux-acpi&m=128855015826728&w=2
https://bugzilla.kernel.org/show_bug.cgi?id=21722
Tested_by: Seblu <seblu@seblu.net>
Signed-off-by: Zhang Rui <rui.zhang@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
| -rw-r--r-- | drivers/acpi/ac.c | 46 |
1 files changed, 29 insertions, 17 deletions
diff --git a/drivers/acpi/ac.c b/drivers/acpi/ac.c index ba9afeaa23a..25d3aaebc10 100644 --- a/drivers/acpi/ac.c +++ b/drivers/acpi/ac.c | |||
| @@ -100,24 +100,7 @@ static const struct file_operations acpi_ac_fops = { | |||
| 100 | .release = single_release, | 100 | .release = single_release, |
| 101 | }; | 101 | }; |
| 102 | #endif | 102 | #endif |
| 103 | static int get_ac_property(struct power_supply *psy, | ||
| 104 | enum power_supply_property psp, | ||
| 105 | union power_supply_propval *val) | ||
| 106 | { | ||
| 107 | struct acpi_ac *ac = to_acpi_ac(psy); | ||
| 108 | switch (psp) { | ||
| 109 | case POWER_SUPPLY_PROP_ONLINE: | ||
| 110 | val->intval = ac->state; | ||
| 111 | break; | ||
| 112 | default: | ||
| 113 | return -EINVAL; | ||
| 114 | } | ||
| 115 | return 0; | ||
| 116 | } | ||
| 117 | 103 | ||
| 118 | static enum power_supply_property ac_props[] = { | ||
| 119 | POWER_SUPPLY_PROP_ONLINE, | ||
| 120 | }; | ||
| 121 | /* -------------------------------------------------------------------------- | 104 | /* -------------------------------------------------------------------------- |
| 122 | AC Adapter Management | 105 | AC Adapter Management |
| 123 | -------------------------------------------------------------------------- */ | 106 | -------------------------------------------------------------------------- */ |
| @@ -140,6 +123,35 @@ static int acpi_ac_get_state(struct acpi_ac *ac) | |||
| 140 | return 0; | 123 | return 0; |
| 141 | } | 124 | } |
| 142 | 125 | ||
| 126 | /* -------------------------------------------------------------------------- | ||
| 127 | sysfs I/F | ||
| 128 | -------------------------------------------------------------------------- */ | ||
| 129 | static int get_ac_property(struct power_supply *psy, | ||
| 130 | enum power_supply_property psp, | ||
| 131 | union power_supply_propval *val) | ||
| 132 | { | ||
| 133 | struct acpi_ac *ac = to_acpi_ac(psy); | ||
| 134 | |||
| 135 | if (!ac) | ||
| 136 | return -ENODEV; | ||
| 137 | |||
| 138 | if (acpi_ac_get_state(ac)) | ||
| 139 | return -ENODEV; | ||
| 140 | |||
| 141 | switch (psp) { | ||
| 142 | case POWER_SUPPLY_PROP_ONLINE: | ||
| 143 | val->intval = ac->state; | ||
| 144 | break; | ||
| 145 | default: | ||
| 146 | return -EINVAL; | ||
| 147 | } | ||
| 148 | return 0; | ||
| 149 | } | ||
| 150 | |||
| 151 | static enum power_supply_property ac_props[] = { | ||
| 152 | POWER_SUPPLY_PROP_ONLINE, | ||
| 153 | }; | ||
| 154 | |||
| 143 | #ifdef CONFIG_ACPI_PROCFS_POWER | 155 | #ifdef CONFIG_ACPI_PROCFS_POWER |
| 144 | /* -------------------------------------------------------------------------- | 156 | /* -------------------------------------------------------------------------- |
| 145 | FS Interface (/proc) | 157 | FS Interface (/proc) |
