diff options
author | Krzysztof Kozlowski <k.kozlowski@samsung.com> | 2014-03-07 05:10:50 -0500 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2014-03-19 09:02:51 -0400 |
commit | 15f77300c9eedb095c8f4097628af51e8e14de30 (patch) | |
tree | 3442c586ccaa8a01e28874e2af1c0f41c7c665f9 /drivers/regulator/s2mps11.c | |
parent | 236b11de51c7501c454ca125d84152b06ef7f27e (diff) |
regulator: s2mps11: Add support for S2MPS14 regulators
Add support for S2MPS14 PMIC regulators to s2mps11 driver. The S2MPS14
has fewer BUCK-s and LDO-s than S2MPS11. It also does not support
controlling the BUCK ramp delay.
Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Cc: Mark Brown <broonie@kernel.org>
Cc: Liam Girdwood <lgirdwood@gmail.com>
Reviewed-by: Yadwinder Singh Brar <yadi.brar@samsung.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
Diffstat (limited to 'drivers/regulator/s2mps11.c')
-rw-r--r-- | drivers/regulator/s2mps11.c | 252 |
1 files changed, 191 insertions, 61 deletions
diff --git a/drivers/regulator/s2mps11.c b/drivers/regulator/s2mps11.c index ca876de72eae..65697b1a26c0 100644 --- a/drivers/regulator/s2mps11.c +++ b/drivers/regulator/s2mps11.c | |||
@@ -1,13 +1,18 @@ | |||
1 | /* | 1 | /* |
2 | * s2mps11.c | 2 | * s2mps11.c |
3 | * | 3 | * |
4 | * Copyright (c) 2012 Samsung Electronics Co., Ltd | 4 | * Copyright (c) 2012-2014 Samsung Electronics Co., Ltd |
5 | * http://www.samsung.com | 5 | * http://www.samsung.com |
6 | * | 6 | * |
7 | * This program is free software; you can redistribute it and/or modify it | 7 | * This program is free software; you can redistribute it and/or modify it |
8 | * under the terms of the GNU General Public License as published by the | 8 | * under the terms of the GNU General Public License as published by the |
9 | * Free Software Foundation; either version 2 of the License, or (at your | 9 | * Free Software Foundation; either version 2 of the License, or (at your |
10 | * option) any later version. | 10 | * option) any later version. |
11 | * | ||
12 | * This program is distributed in the hope that it will be useful, | ||
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
15 | * GNU General Public License for more details. | ||
11 | * | 16 | * |
12 | */ | 17 | */ |
13 | 18 | ||
@@ -24,6 +29,7 @@ | |||
24 | #include <linux/regulator/of_regulator.h> | 29 | #include <linux/regulator/of_regulator.h> |
25 | #include <linux/mfd/samsung/core.h> | 30 | #include <linux/mfd/samsung/core.h> |
26 | #include <linux/mfd/samsung/s2mps11.h> | 31 | #include <linux/mfd/samsung/s2mps11.h> |
32 | #include <linux/mfd/samsung/s2mps14.h> | ||
27 | 33 | ||
28 | struct s2mps11_info { | 34 | struct s2mps11_info { |
29 | unsigned int rdev_num; | 35 | unsigned int rdev_num; |
@@ -233,7 +239,7 @@ static struct regulator_ops s2mps11_buck_ops = { | |||
233 | .set_ramp_delay = s2mps11_set_ramp_delay, | 239 | .set_ramp_delay = s2mps11_set_ramp_delay, |
234 | }; | 240 | }; |
235 | 241 | ||
236 | #define regulator_desc_ldo1(num) { \ | 242 | #define regulator_desc_s2mps11_ldo1(num) { \ |
237 | .name = "LDO"#num, \ | 243 | .name = "LDO"#num, \ |
238 | .id = S2MPS11_LDO##num, \ | 244 | .id = S2MPS11_LDO##num, \ |
239 | .ops = &s2mps11_ldo_ops, \ | 245 | .ops = &s2mps11_ldo_ops, \ |
@@ -247,7 +253,7 @@ static struct regulator_ops s2mps11_buck_ops = { | |||
247 | .enable_reg = S2MPS11_REG_L1CTRL + num - 1, \ | 253 | .enable_reg = S2MPS11_REG_L1CTRL + num - 1, \ |
248 | .enable_mask = S2MPS11_ENABLE_MASK \ | 254 | .enable_mask = S2MPS11_ENABLE_MASK \ |
249 | } | 255 | } |
250 | #define regulator_desc_ldo2(num) { \ | 256 | #define regulator_desc_s2mps11_ldo2(num) { \ |
251 | .name = "LDO"#num, \ | 257 | .name = "LDO"#num, \ |
252 | .id = S2MPS11_LDO##num, \ | 258 | .id = S2MPS11_LDO##num, \ |
253 | .ops = &s2mps11_ldo_ops, \ | 259 | .ops = &s2mps11_ldo_ops, \ |
@@ -262,7 +268,7 @@ static struct regulator_ops s2mps11_buck_ops = { | |||
262 | .enable_mask = S2MPS11_ENABLE_MASK \ | 268 | .enable_mask = S2MPS11_ENABLE_MASK \ |
263 | } | 269 | } |
264 | 270 | ||
265 | #define regulator_desc_buck1_4(num) { \ | 271 | #define regulator_desc_s2mps11_buck1_4(num) { \ |
266 | .name = "BUCK"#num, \ | 272 | .name = "BUCK"#num, \ |
267 | .id = S2MPS11_BUCK##num, \ | 273 | .id = S2MPS11_BUCK##num, \ |
268 | .ops = &s2mps11_buck_ops, \ | 274 | .ops = &s2mps11_buck_ops, \ |
@@ -278,7 +284,7 @@ static struct regulator_ops s2mps11_buck_ops = { | |||
278 | .enable_mask = S2MPS11_ENABLE_MASK \ | 284 | .enable_mask = S2MPS11_ENABLE_MASK \ |
279 | } | 285 | } |
280 | 286 | ||
281 | #define regulator_desc_buck5 { \ | 287 | #define regulator_desc_s2mps11_buck5 { \ |
282 | .name = "BUCK5", \ | 288 | .name = "BUCK5", \ |
283 | .id = S2MPS11_BUCK5, \ | 289 | .id = S2MPS11_BUCK5, \ |
284 | .ops = &s2mps11_buck_ops, \ | 290 | .ops = &s2mps11_buck_ops, \ |
@@ -294,7 +300,7 @@ static struct regulator_ops s2mps11_buck_ops = { | |||
294 | .enable_mask = S2MPS11_ENABLE_MASK \ | 300 | .enable_mask = S2MPS11_ENABLE_MASK \ |
295 | } | 301 | } |
296 | 302 | ||
297 | #define regulator_desc_buck6_8(num) { \ | 303 | #define regulator_desc_s2mps11_buck6_8(num) { \ |
298 | .name = "BUCK"#num, \ | 304 | .name = "BUCK"#num, \ |
299 | .id = S2MPS11_BUCK##num, \ | 305 | .id = S2MPS11_BUCK##num, \ |
300 | .ops = &s2mps11_buck_ops, \ | 306 | .ops = &s2mps11_buck_ops, \ |
@@ -310,7 +316,7 @@ static struct regulator_ops s2mps11_buck_ops = { | |||
310 | .enable_mask = S2MPS11_ENABLE_MASK \ | 316 | .enable_mask = S2MPS11_ENABLE_MASK \ |
311 | } | 317 | } |
312 | 318 | ||
313 | #define regulator_desc_buck9 { \ | 319 | #define regulator_desc_s2mps11_buck9 { \ |
314 | .name = "BUCK9", \ | 320 | .name = "BUCK9", \ |
315 | .id = S2MPS11_BUCK9, \ | 321 | .id = S2MPS11_BUCK9, \ |
316 | .ops = &s2mps11_buck_ops, \ | 322 | .ops = &s2mps11_buck_ops, \ |
@@ -326,7 +332,7 @@ static struct regulator_ops s2mps11_buck_ops = { | |||
326 | .enable_mask = S2MPS11_ENABLE_MASK \ | 332 | .enable_mask = S2MPS11_ENABLE_MASK \ |
327 | } | 333 | } |
328 | 334 | ||
329 | #define regulator_desc_buck10 { \ | 335 | #define regulator_desc_s2mps11_buck10 { \ |
330 | .name = "BUCK10", \ | 336 | .name = "BUCK10", \ |
331 | .id = S2MPS11_BUCK10, \ | 337 | .id = S2MPS11_BUCK10, \ |
332 | .ops = &s2mps11_buck_ops, \ | 338 | .ops = &s2mps11_buck_ops, \ |
@@ -343,54 +349,173 @@ static struct regulator_ops s2mps11_buck_ops = { | |||
343 | } | 349 | } |
344 | 350 | ||
345 | static const struct regulator_desc s2mps11_regulators[] = { | 351 | static const struct regulator_desc s2mps11_regulators[] = { |
346 | regulator_desc_ldo2(1), | 352 | regulator_desc_s2mps11_ldo2(1), |
347 | regulator_desc_ldo1(2), | 353 | regulator_desc_s2mps11_ldo1(2), |
348 | regulator_desc_ldo1(3), | 354 | regulator_desc_s2mps11_ldo1(3), |
349 | regulator_desc_ldo1(4), | 355 | regulator_desc_s2mps11_ldo1(4), |
350 | regulator_desc_ldo1(5), | 356 | regulator_desc_s2mps11_ldo1(5), |
351 | regulator_desc_ldo2(6), | 357 | regulator_desc_s2mps11_ldo2(6), |
352 | regulator_desc_ldo1(7), | 358 | regulator_desc_s2mps11_ldo1(7), |
353 | regulator_desc_ldo1(8), | 359 | regulator_desc_s2mps11_ldo1(8), |
354 | regulator_desc_ldo1(9), | 360 | regulator_desc_s2mps11_ldo1(9), |
355 | regulator_desc_ldo1(10), | 361 | regulator_desc_s2mps11_ldo1(10), |
356 | regulator_desc_ldo2(11), | 362 | regulator_desc_s2mps11_ldo2(11), |
357 | regulator_desc_ldo1(12), | 363 | regulator_desc_s2mps11_ldo1(12), |
358 | regulator_desc_ldo1(13), | 364 | regulator_desc_s2mps11_ldo1(13), |
359 | regulator_desc_ldo1(14), | 365 | regulator_desc_s2mps11_ldo1(14), |
360 | regulator_desc_ldo1(15), | 366 | regulator_desc_s2mps11_ldo1(15), |
361 | regulator_desc_ldo1(16), | 367 | regulator_desc_s2mps11_ldo1(16), |
362 | regulator_desc_ldo1(17), | 368 | regulator_desc_s2mps11_ldo1(17), |
363 | regulator_desc_ldo1(18), | 369 | regulator_desc_s2mps11_ldo1(18), |
364 | regulator_desc_ldo1(19), | 370 | regulator_desc_s2mps11_ldo1(19), |
365 | regulator_desc_ldo1(20), | 371 | regulator_desc_s2mps11_ldo1(20), |
366 | regulator_desc_ldo1(21), | 372 | regulator_desc_s2mps11_ldo1(21), |
367 | regulator_desc_ldo2(22), | 373 | regulator_desc_s2mps11_ldo2(22), |
368 | regulator_desc_ldo2(23), | 374 | regulator_desc_s2mps11_ldo2(23), |
369 | regulator_desc_ldo1(24), | 375 | regulator_desc_s2mps11_ldo1(24), |
370 | regulator_desc_ldo1(25), | 376 | regulator_desc_s2mps11_ldo1(25), |
371 | regulator_desc_ldo1(26), | 377 | regulator_desc_s2mps11_ldo1(26), |
372 | regulator_desc_ldo2(27), | 378 | regulator_desc_s2mps11_ldo2(27), |
373 | regulator_desc_ldo1(28), | 379 | regulator_desc_s2mps11_ldo1(28), |
374 | regulator_desc_ldo1(29), | 380 | regulator_desc_s2mps11_ldo1(29), |
375 | regulator_desc_ldo1(30), | 381 | regulator_desc_s2mps11_ldo1(30), |
376 | regulator_desc_ldo1(31), | 382 | regulator_desc_s2mps11_ldo1(31), |
377 | regulator_desc_ldo1(32), | 383 | regulator_desc_s2mps11_ldo1(32), |
378 | regulator_desc_ldo1(33), | 384 | regulator_desc_s2mps11_ldo1(33), |
379 | regulator_desc_ldo1(34), | 385 | regulator_desc_s2mps11_ldo1(34), |
380 | regulator_desc_ldo1(35), | 386 | regulator_desc_s2mps11_ldo1(35), |
381 | regulator_desc_ldo1(36), | 387 | regulator_desc_s2mps11_ldo1(36), |
382 | regulator_desc_ldo1(37), | 388 | regulator_desc_s2mps11_ldo1(37), |
383 | regulator_desc_ldo1(38), | 389 | regulator_desc_s2mps11_ldo1(38), |
384 | regulator_desc_buck1_4(1), | 390 | regulator_desc_s2mps11_buck1_4(1), |
385 | regulator_desc_buck1_4(2), | 391 | regulator_desc_s2mps11_buck1_4(2), |
386 | regulator_desc_buck1_4(3), | 392 | regulator_desc_s2mps11_buck1_4(3), |
387 | regulator_desc_buck1_4(4), | 393 | regulator_desc_s2mps11_buck1_4(4), |
388 | regulator_desc_buck5, | 394 | regulator_desc_s2mps11_buck5, |
389 | regulator_desc_buck6_8(6), | 395 | regulator_desc_s2mps11_buck6_8(6), |
390 | regulator_desc_buck6_8(7), | 396 | regulator_desc_s2mps11_buck6_8(7), |
391 | regulator_desc_buck6_8(8), | 397 | regulator_desc_s2mps11_buck6_8(8), |
392 | regulator_desc_buck9, | 398 | regulator_desc_s2mps11_buck9, |
393 | regulator_desc_buck10, | 399 | regulator_desc_s2mps11_buck10, |
400 | }; | ||
401 | |||
402 | static struct regulator_ops s2mps14_reg_ops = { | ||
403 | .list_voltage = regulator_list_voltage_linear, | ||
404 | .map_voltage = regulator_map_voltage_linear, | ||
405 | .is_enabled = regulator_is_enabled_regmap, | ||
406 | .enable = regulator_enable_regmap, | ||
407 | .disable = regulator_disable_regmap, | ||
408 | .get_voltage_sel = regulator_get_voltage_sel_regmap, | ||
409 | .set_voltage_sel = regulator_set_voltage_sel_regmap, | ||
410 | .set_voltage_time_sel = regulator_set_voltage_time_sel, | ||
411 | }; | ||
412 | |||
413 | #define regulator_desc_s2mps14_ldo1(num) { \ | ||
414 | .name = "LDO"#num, \ | ||
415 | .id = S2MPS14_LDO##num, \ | ||
416 | .ops = &s2mps14_reg_ops, \ | ||
417 | .type = REGULATOR_VOLTAGE, \ | ||
418 | .owner = THIS_MODULE, \ | ||
419 | .min_uV = S2MPS14_LDO_MIN_800MV, \ | ||
420 | .uV_step = S2MPS14_LDO_STEP_25MV, \ | ||
421 | .n_voltages = S2MPS14_LDO_N_VOLTAGES, \ | ||
422 | .vsel_reg = S2MPS14_REG_L1CTRL + num - 1, \ | ||
423 | .vsel_mask = S2MPS14_LDO_VSEL_MASK, \ | ||
424 | .enable_reg = S2MPS14_REG_L1CTRL + num - 1, \ | ||
425 | .enable_mask = S2MPS14_ENABLE_MASK \ | ||
426 | } | ||
427 | #define regulator_desc_s2mps14_ldo2(num) { \ | ||
428 | .name = "LDO"#num, \ | ||
429 | .id = S2MPS14_LDO##num, \ | ||
430 | .ops = &s2mps14_reg_ops, \ | ||
431 | .type = REGULATOR_VOLTAGE, \ | ||
432 | .owner = THIS_MODULE, \ | ||
433 | .min_uV = S2MPS14_LDO_MIN_1800MV, \ | ||
434 | .uV_step = S2MPS14_LDO_STEP_25MV, \ | ||
435 | .n_voltages = S2MPS14_LDO_N_VOLTAGES, \ | ||
436 | .vsel_reg = S2MPS14_REG_L1CTRL + num - 1, \ | ||
437 | .vsel_mask = S2MPS14_LDO_VSEL_MASK, \ | ||
438 | .enable_reg = S2MPS14_REG_L1CTRL + num - 1, \ | ||
439 | .enable_mask = S2MPS14_ENABLE_MASK \ | ||
440 | } | ||
441 | #define regulator_desc_s2mps14_ldo3(num) { \ | ||
442 | .name = "LDO"#num, \ | ||
443 | .id = S2MPS14_LDO##num, \ | ||
444 | .ops = &s2mps14_reg_ops, \ | ||
445 | .type = REGULATOR_VOLTAGE, \ | ||
446 | .owner = THIS_MODULE, \ | ||
447 | .min_uV = S2MPS14_LDO_MIN_800MV, \ | ||
448 | .uV_step = S2MPS14_LDO_STEP_12_5MV, \ | ||
449 | .n_voltages = S2MPS14_LDO_N_VOLTAGES, \ | ||
450 | .vsel_reg = S2MPS14_REG_L1CTRL + num - 1, \ | ||
451 | .vsel_mask = S2MPS14_LDO_VSEL_MASK, \ | ||
452 | .enable_reg = S2MPS14_REG_L1CTRL + num - 1, \ | ||
453 | .enable_mask = S2MPS14_ENABLE_MASK \ | ||
454 | } | ||
455 | #define regulator_desc_s2mps14_buck1235(num) { \ | ||
456 | .name = "BUCK"#num, \ | ||
457 | .id = S2MPS14_BUCK##num, \ | ||
458 | .ops = &s2mps14_reg_ops, \ | ||
459 | .type = REGULATOR_VOLTAGE, \ | ||
460 | .owner = THIS_MODULE, \ | ||
461 | .min_uV = S2MPS14_BUCK1235_MIN_600MV, \ | ||
462 | .uV_step = S2MPS14_BUCK1235_STEP_6_25MV, \ | ||
463 | .n_voltages = S2MPS14_BUCK_N_VOLTAGES, \ | ||
464 | .linear_min_sel = S2MPS14_BUCK1235_START_SEL, \ | ||
465 | .ramp_delay = S2MPS14_BUCK_RAMP_DELAY, \ | ||
466 | .vsel_reg = S2MPS14_REG_B1CTRL2 + (num - 1) * 2, \ | ||
467 | .vsel_mask = S2MPS14_BUCK_VSEL_MASK, \ | ||
468 | .enable_reg = S2MPS14_REG_B1CTRL1 + (num - 1) * 2, \ | ||
469 | .enable_mask = S2MPS14_ENABLE_MASK \ | ||
470 | } | ||
471 | #define regulator_desc_s2mps14_buck4(num) { \ | ||
472 | .name = "BUCK"#num, \ | ||
473 | .id = S2MPS14_BUCK##num, \ | ||
474 | .ops = &s2mps14_reg_ops, \ | ||
475 | .type = REGULATOR_VOLTAGE, \ | ||
476 | .owner = THIS_MODULE, \ | ||
477 | .min_uV = S2MPS14_BUCK4_MIN_1400MV, \ | ||
478 | .uV_step = S2MPS14_BUCK4_STEP_12_5MV, \ | ||
479 | .n_voltages = S2MPS14_BUCK_N_VOLTAGES, \ | ||
480 | .linear_min_sel = S2MPS14_BUCK4_START_SEL, \ | ||
481 | .ramp_delay = S2MPS14_BUCK_RAMP_DELAY, \ | ||
482 | .vsel_reg = S2MPS14_REG_B1CTRL2 + (num - 1) * 2, \ | ||
483 | .vsel_mask = S2MPS14_BUCK_VSEL_MASK, \ | ||
484 | .enable_reg = S2MPS14_REG_B1CTRL1 + (num - 1) * 2, \ | ||
485 | .enable_mask = S2MPS14_ENABLE_MASK \ | ||
486 | } | ||
487 | |||
488 | static const struct regulator_desc s2mps14_regulators[] = { | ||
489 | regulator_desc_s2mps14_ldo3(1), | ||
490 | regulator_desc_s2mps14_ldo3(2), | ||
491 | regulator_desc_s2mps14_ldo1(3), | ||
492 | regulator_desc_s2mps14_ldo1(4), | ||
493 | regulator_desc_s2mps14_ldo3(5), | ||
494 | regulator_desc_s2mps14_ldo3(6), | ||
495 | regulator_desc_s2mps14_ldo1(7), | ||
496 | regulator_desc_s2mps14_ldo2(8), | ||
497 | regulator_desc_s2mps14_ldo3(9), | ||
498 | regulator_desc_s2mps14_ldo3(10), | ||
499 | regulator_desc_s2mps14_ldo1(11), | ||
500 | regulator_desc_s2mps14_ldo2(12), | ||
501 | regulator_desc_s2mps14_ldo2(13), | ||
502 | regulator_desc_s2mps14_ldo2(14), | ||
503 | regulator_desc_s2mps14_ldo2(15), | ||
504 | regulator_desc_s2mps14_ldo2(16), | ||
505 | regulator_desc_s2mps14_ldo2(17), | ||
506 | regulator_desc_s2mps14_ldo2(18), | ||
507 | regulator_desc_s2mps14_ldo1(19), | ||
508 | regulator_desc_s2mps14_ldo1(20), | ||
509 | regulator_desc_s2mps14_ldo1(21), | ||
510 | regulator_desc_s2mps14_ldo3(22), | ||
511 | regulator_desc_s2mps14_ldo1(23), | ||
512 | regulator_desc_s2mps14_ldo2(24), | ||
513 | regulator_desc_s2mps14_ldo2(25), | ||
514 | regulator_desc_s2mps14_buck1235(1), | ||
515 | regulator_desc_s2mps14_buck1235(2), | ||
516 | regulator_desc_s2mps14_buck1235(3), | ||
517 | regulator_desc_s2mps14_buck4(4), | ||
518 | regulator_desc_s2mps14_buck1235(5), | ||
394 | }; | 519 | }; |
395 | 520 | ||
396 | static int s2mps11_pmic_probe(struct platform_device *pdev) | 521 | static int s2mps11_pmic_probe(struct platform_device *pdev) |
@@ -416,6 +541,10 @@ static int s2mps11_pmic_probe(struct platform_device *pdev) | |||
416 | s2mps11->rdev_num = ARRAY_SIZE(s2mps11_regulators); | 541 | s2mps11->rdev_num = ARRAY_SIZE(s2mps11_regulators); |
417 | regulators = s2mps11_regulators; | 542 | regulators = s2mps11_regulators; |
418 | break; | 543 | break; |
544 | case S2MPS14X: | ||
545 | s2mps11->rdev_num = ARRAY_SIZE(s2mps14_regulators); | ||
546 | regulators = s2mps14_regulators; | ||
547 | break; | ||
419 | default: | 548 | default: |
420 | dev_err(&pdev->dev, "Invalid device type: %u\n", dev_type); | 549 | dev_err(&pdev->dev, "Invalid device type: %u\n", dev_type); |
421 | return -EINVAL; | 550 | return -EINVAL; |
@@ -482,6 +611,7 @@ out: | |||
482 | 611 | ||
483 | static const struct platform_device_id s2mps11_pmic_id[] = { | 612 | static const struct platform_device_id s2mps11_pmic_id[] = { |
484 | { "s2mps11-pmic", S2MPS11X}, | 613 | { "s2mps11-pmic", S2MPS11X}, |
614 | { "s2mps14-pmic", S2MPS14X}, | ||
485 | { }, | 615 | { }, |
486 | }; | 616 | }; |
487 | MODULE_DEVICE_TABLE(platform, s2mps11_pmic_id); | 617 | MODULE_DEVICE_TABLE(platform, s2mps11_pmic_id); |
@@ -509,5 +639,5 @@ module_exit(s2mps11_pmic_exit); | |||
509 | 639 | ||
510 | /* Module information */ | 640 | /* Module information */ |
511 | MODULE_AUTHOR("Sangbeom Kim <sbkim73@samsung.com>"); | 641 | MODULE_AUTHOR("Sangbeom Kim <sbkim73@samsung.com>"); |
512 | MODULE_DESCRIPTION("SAMSUNG S2MPS11 Regulator Driver"); | 642 | MODULE_DESCRIPTION("SAMSUNG S2MPS11/S2MPS14 Regulator Driver"); |
513 | MODULE_LICENSE("GPL"); | 643 | MODULE_LICENSE("GPL"); |