aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/leds
diff options
context:
space:
mode:
authorAlexander Shiyan <shc_work@mail.ru>2013-12-07 01:22:18 -0500
committerBryan Wu <cooloney@gmail.com>2014-01-27 20:28:49 -0500
commit01a7a063e8cf4bc09af2c02d28c12f3d72bf9649 (patch)
tree203bc7e800afe602eca8ff4edbbab02643f3c4fd /drivers/leds
parent33ca15325ff371be7f20be7534f5aa5b6a00b558 (diff)
leds: leds-mc13783: Remove duplicate field in platform data
LED platform data are overwhelmed by excessive field "max_cur" which just replicates few bits of "led_control" field. This patch removes this field and adds a definition for the current settings in the header. Signed-off-by: Alexander Shiyan <shc_work@mail.ru> Signed-off-by: Bryan Wu <cooloney@gmail.com>
Diffstat (limited to 'drivers/leds')
-rw-r--r--drivers/leds/leds-mc13783.c76
1 files changed, 0 insertions, 76 deletions
diff --git a/drivers/leds/leds-mc13783.c b/drivers/leds/leds-mc13783.c
index fa9b439323bd..ec704f2ab70d 100644
--- a/drivers/leds/leds-mc13783.c
+++ b/drivers/leds/leds-mc13783.c
@@ -132,75 +132,6 @@ static void mc13xxx_led_set(struct led_classdev *led_cdev,
132 schedule_work(&led->work); 132 schedule_work(&led->work);
133} 133}
134 134
135static int __init mc13xxx_led_setup(struct mc13xxx_led *led, int max_current)
136{
137 int shift, mask, reg, ret, bank;
138
139 switch (led->id) {
140 case MC13783_LED_MD:
141 reg = MC13XXX_REG_LED_CONTROL(2);
142 shift = 0;
143 mask = 0x07;
144 break;
145 case MC13783_LED_AD:
146 reg = MC13XXX_REG_LED_CONTROL(2);
147 shift = 3;
148 mask = 0x07;
149 break;
150 case MC13783_LED_KP:
151 reg = MC13XXX_REG_LED_CONTROL(2);
152 shift = 6;
153 mask = 0x07;
154 break;
155 case MC13783_LED_R1:
156 case MC13783_LED_G1:
157 case MC13783_LED_B1:
158 case MC13783_LED_R2:
159 case MC13783_LED_G2:
160 case MC13783_LED_B2:
161 case MC13783_LED_R3:
162 case MC13783_LED_G3:
163 case MC13783_LED_B3:
164 bank = (led->id - MC13783_LED_R1) / 3;
165 reg = MC13XXX_REG_LED_CONTROL(3) + bank;
166 shift = ((led->id - MC13783_LED_R1) - bank * 3) * 2;
167 mask = 0x03;
168 break;
169 case MC13892_LED_MD:
170 reg = MC13XXX_REG_LED_CONTROL(0);
171 shift = 9;
172 mask = 0x07;
173 break;
174 case MC13892_LED_AD:
175 reg = MC13XXX_REG_LED_CONTROL(0);
176 shift = 21;
177 mask = 0x07;
178 break;
179 case MC13892_LED_KP:
180 reg = MC13XXX_REG_LED_CONTROL(1);
181 shift = 9;
182 mask = 0x07;
183 break;
184 case MC13892_LED_R:
185 case MC13892_LED_G:
186 case MC13892_LED_B:
187 bank = (led->id - MC13892_LED_R) / 2;
188 reg = MC13XXX_REG_LED_CONTROL(2) + bank;
189 shift = ((led->id - MC13892_LED_R) - bank * 2) * 12 + 9;
190 mask = 0x07;
191 break;
192 default:
193 BUG();
194 }
195
196 mc13xxx_lock(led->master);
197 ret = mc13xxx_reg_rmw(led->master, reg, mask << shift,
198 max_current << shift);
199 mc13xxx_unlock(led->master);
200
201 return ret;
202}
203
204static int __init mc13xxx_led_probe(struct platform_device *pdev) 135static int __init mc13xxx_led_probe(struct platform_device *pdev)
205{ 136{
206 struct mc13xxx_leds_platform_data *pdata = dev_get_platdata(&pdev->dev); 137 struct mc13xxx_leds_platform_data *pdata = dev_get_platdata(&pdev->dev);
@@ -250,14 +181,12 @@ static int __init mc13xxx_led_probe(struct platform_device *pdev)
250 181
251 for (i = 0; i < num_leds; i++) { 182 for (i = 0; i < num_leds; i++) {
252 const char *name, *trig; 183 const char *name, *trig;
253 char max_current;
254 184
255 ret = -EINVAL; 185 ret = -EINVAL;
256 186
257 id = pdata->led[i].id; 187 id = pdata->led[i].id;
258 name = pdata->led[i].name; 188 name = pdata->led[i].name;
259 trig = pdata->led[i].default_trigger; 189 trig = pdata->led[i].default_trigger;
260 max_current = pdata->led[i].max_current;
261 190
262 if ((id > devtype->led_max) || (id < devtype->led_min)) { 191 if ((id > devtype->led_max) || (id < devtype->led_min)) {
263 dev_err(&pdev->dev, "Invalid ID %i\n", id); 192 dev_err(&pdev->dev, "Invalid ID %i\n", id);
@@ -280,11 +209,6 @@ static int __init mc13xxx_led_probe(struct platform_device *pdev)
280 209
281 INIT_WORK(&leds->led[i].work, mc13xxx_led_work); 210 INIT_WORK(&leds->led[i].work, mc13xxx_led_work);
282 211
283 ret = mc13xxx_led_setup(&leds->led[i], max_current);
284 if (ret) {
285 dev_err(&pdev->dev, "Unable to setup LED %i\n", id);
286 break;
287 }
288 ret = led_classdev_register(pdev->dev.parent, 212 ret = led_classdev_register(pdev->dev.parent,
289 &leds->led[i].cdev); 213 &leds->led[i].cdev);
290 if (ret) { 214 if (ret) {