aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLadislav Michl <ladis@linux-mips.org>2018-03-21 11:54:53 -0400
committerSebastian Reichel <sebastian.reichel@collabora.co.uk>2018-04-25 17:53:57 -0400
commit39b4fb8056e60a27ba0963dd557d5e61909f5b07 (patch)
treee836fdac2aa0f858827ef3b1c11ccaa5b44e7ba5
parent4c4268dc97c424cf6786c4ccc9acf345ba911987 (diff)
power: supply: sysfs: Use enum to specify property
Power supply property is in fact enum, so reflect it in code. Also use switch statement in show property function as is done for storing property. Signed-off-by: Ladislav Michl <ladis@linux-mips.org> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
-rw-r--r--drivers/power/supply/power_supply_sysfs.c77
1 files changed, 44 insertions, 33 deletions
diff --git a/drivers/power/supply/power_supply_sysfs.c b/drivers/power/supply/power_supply_sysfs.c
index 5204f115970f..ca2f869165ed 100644
--- a/drivers/power/supply/power_supply_sysfs.c
+++ b/drivers/power/supply/power_supply_sysfs.c
@@ -76,15 +76,15 @@ static const char * const power_supply_scope_text[] = {
76static ssize_t power_supply_show_property(struct device *dev, 76static ssize_t power_supply_show_property(struct device *dev,
77 struct device_attribute *attr, 77 struct device_attribute *attr,
78 char *buf) { 78 char *buf) {
79 ssize_t ret = 0; 79 ssize_t ret;
80 struct power_supply *psy = dev_get_drvdata(dev); 80 struct power_supply *psy = dev_get_drvdata(dev);
81 const ptrdiff_t off = attr - power_supply_attrs; 81 enum power_supply_property psp = attr - power_supply_attrs;
82 union power_supply_propval value; 82 union power_supply_propval value;
83 83
84 if (off == POWER_SUPPLY_PROP_TYPE) { 84 if (psp == POWER_SUPPLY_PROP_TYPE) {
85 value.intval = psy->desc->type; 85 value.intval = psy->desc->type;
86 } else { 86 } else {
87 ret = power_supply_get_property(psy, off, &value); 87 ret = power_supply_get_property(psy, psp, &value);
88 88
89 if (ret < 0) { 89 if (ret < 0) {
90 if (ret == -ENODATA) 90 if (ret == -ENODATA)
@@ -97,31 +97,43 @@ static ssize_t power_supply_show_property(struct device *dev,
97 } 97 }
98 } 98 }
99 99
100 if (off == POWER_SUPPLY_PROP_STATUS) 100 switch (psp) {
101 return sprintf(buf, "%s\n", 101 case POWER_SUPPLY_PROP_STATUS:
102 power_supply_status_text[value.intval]); 102 ret = sprintf(buf, "%s\n",
103 else if (off == POWER_SUPPLY_PROP_CHARGE_TYPE) 103 power_supply_status_text[value.intval]);
104 return sprintf(buf, "%s\n", 104 break;
105 power_supply_charge_type_text[value.intval]); 105 case POWER_SUPPLY_PROP_CHARGE_TYPE:
106 else if (off == POWER_SUPPLY_PROP_HEALTH) 106 ret = sprintf(buf, "%s\n",
107 return sprintf(buf, "%s\n", 107 power_supply_charge_type_text[value.intval]);
108 power_supply_health_text[value.intval]); 108 break;
109 else if (off == POWER_SUPPLY_PROP_TECHNOLOGY) 109 case POWER_SUPPLY_PROP_HEALTH:
110 return sprintf(buf, "%s\n", 110 ret = sprintf(buf, "%s\n",
111 power_supply_technology_text[value.intval]); 111 power_supply_health_text[value.intval]);
112 else if (off == POWER_SUPPLY_PROP_CAPACITY_LEVEL) 112 break;
113 return sprintf(buf, "%s\n", 113 case POWER_SUPPLY_PROP_TECHNOLOGY:
114 power_supply_capacity_level_text[value.intval]); 114 ret = sprintf(buf, "%s\n",
115 else if (off == POWER_SUPPLY_PROP_TYPE) 115 power_supply_technology_text[value.intval]);
116 return sprintf(buf, "%s\n", 116 break;
117 power_supply_type_text[value.intval]); 117 case POWER_SUPPLY_PROP_CAPACITY_LEVEL:
118 else if (off == POWER_SUPPLY_PROP_SCOPE) 118 ret = sprintf(buf, "%s\n",
119 return sprintf(buf, "%s\n", 119 power_supply_capacity_level_text[value.intval]);
120 power_supply_scope_text[value.intval]); 120 break;
121 else if (off >= POWER_SUPPLY_PROP_MODEL_NAME) 121 case POWER_SUPPLY_PROP_TYPE:
122 return sprintf(buf, "%s\n", value.strval); 122 ret = sprintf(buf, "%s\n",
123 123 power_supply_type_text[value.intval]);
124 return sprintf(buf, "%d\n", value.intval); 124 break;
125 case POWER_SUPPLY_PROP_SCOPE:
126 ret = sprintf(buf, "%s\n",
127 power_supply_scope_text[value.intval]);
128 break;
129 case POWER_SUPPLY_PROP_MODEL_NAME ... POWER_SUPPLY_PROP_SERIAL_NUMBER:
130 ret = sprintf(buf, "%s\n", value.strval);
131 break;
132 default:
133 ret = sprintf(buf, "%d\n", value.intval);
134 }
135
136 return ret;
125} 137}
126 138
127static ssize_t power_supply_store_property(struct device *dev, 139static ssize_t power_supply_store_property(struct device *dev,
@@ -129,11 +141,10 @@ static ssize_t power_supply_store_property(struct device *dev,
129 const char *buf, size_t count) { 141 const char *buf, size_t count) {
130 ssize_t ret; 142 ssize_t ret;
131 struct power_supply *psy = dev_get_drvdata(dev); 143 struct power_supply *psy = dev_get_drvdata(dev);
132 const ptrdiff_t off = attr - power_supply_attrs; 144 enum power_supply_property psp = attr - power_supply_attrs;
133 union power_supply_propval value; 145 union power_supply_propval value;
134 146
135 /* maybe it is a enum property? */ 147 switch (psp) {
136 switch (off) {
137 case POWER_SUPPLY_PROP_STATUS: 148 case POWER_SUPPLY_PROP_STATUS:
138 ret = sysfs_match_string(power_supply_status_text, buf); 149 ret = sysfs_match_string(power_supply_status_text, buf);
139 break; 150 break;
@@ -172,7 +183,7 @@ static ssize_t power_supply_store_property(struct device *dev,
172 183
173 value.intval = ret; 184 value.intval = ret;
174 185
175 ret = power_supply_set_property(psy, off, &value); 186 ret = power_supply_set_property(psy, psp, &value);
176 if (ret < 0) 187 if (ret < 0)
177 return ret; 188 return ret;
178 189