aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/regulator
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/regulator')
-rw-r--r--drivers/regulator/core.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
index 67d3a61f3785..8a5d0ae191b3 100644
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
@@ -25,6 +25,9 @@
25#include <linux/regulator/driver.h> 25#include <linux/regulator/driver.h>
26#include <linux/regulator/machine.h> 26#include <linux/regulator/machine.h>
27 27
28#define CREATE_TRACE_POINTS
29#include <trace/events/regulator.h>
30
28#include "dummy.h" 31#include "dummy.h"
29 32
30#define REGULATOR_VERSION "0.5" 33#define REGULATOR_VERSION "0.5"
@@ -1310,6 +1313,8 @@ static int _regulator_enable(struct regulator_dev *rdev)
1310 delay = 0; 1313 delay = 0;
1311 } 1314 }
1312 1315
1316 trace_regulator_enable(rdev_get_name(rdev));
1317
1313 /* Allow the regulator to ramp; it would be useful 1318 /* Allow the regulator to ramp; it would be useful
1314 * to extend this for bulk operations so that the 1319 * to extend this for bulk operations so that the
1315 * regulators can ramp together. */ 1320 * regulators can ramp together. */
@@ -1317,6 +1322,8 @@ static int _regulator_enable(struct regulator_dev *rdev)
1317 if (ret < 0) 1322 if (ret < 0)
1318 return ret; 1323 return ret;
1319 1324
1325 trace_regulator_enable_delay(rdev_get_name(rdev));
1326
1320 if (delay >= 1000) { 1327 if (delay >= 1000) {
1321 mdelay(delay / 1000); 1328 mdelay(delay / 1000);
1322 udelay(delay % 1000); 1329 udelay(delay % 1000);
@@ -1324,6 +1331,8 @@ static int _regulator_enable(struct regulator_dev *rdev)
1324 udelay(delay); 1331 udelay(delay);
1325 } 1332 }
1326 1333
1334 trace_regulator_enable_complete(rdev_get_name(rdev));
1335
1327 } else if (ret < 0) { 1336 } else if (ret < 0) {
1328 printk(KERN_ERR "%s: is_enabled() failed for %s: %d\n", 1337 printk(KERN_ERR "%s: is_enabled() failed for %s: %d\n",
1329 __func__, rdev_get_name(rdev), ret); 1338 __func__, rdev_get_name(rdev), ret);
@@ -1379,6 +1388,8 @@ static int _regulator_disable(struct regulator_dev *rdev,
1379 /* we are last user */ 1388 /* we are last user */
1380 if (_regulator_can_change_status(rdev) && 1389 if (_regulator_can_change_status(rdev) &&
1381 rdev->desc->ops->disable) { 1390 rdev->desc->ops->disable) {
1391 trace_regulator_disable(rdev_get_name(rdev));
1392
1382 ret = rdev->desc->ops->disable(rdev); 1393 ret = rdev->desc->ops->disable(rdev);
1383 if (ret < 0) { 1394 if (ret < 0) {
1384 printk(KERN_ERR "%s: failed to disable %s\n", 1395 printk(KERN_ERR "%s: failed to disable %s\n",
@@ -1386,6 +1397,8 @@ static int _regulator_disable(struct regulator_dev *rdev,
1386 return ret; 1397 return ret;
1387 } 1398 }
1388 1399
1400 trace_regulator_disable_complete(rdev_get_name(rdev));
1401
1389 _notifier_call_chain(rdev, REGULATOR_EVENT_DISABLE, 1402 _notifier_call_chain(rdev, REGULATOR_EVENT_DISABLE,
1390 NULL); 1403 NULL);
1391 } 1404 }
@@ -1645,6 +1658,8 @@ int regulator_set_voltage(struct regulator *regulator, int min_uV, int max_uV)
1645 regulator->min_uV = min_uV; 1658 regulator->min_uV = min_uV;
1646 regulator->max_uV = max_uV; 1659 regulator->max_uV = max_uV;
1647 1660
1661 trace_regulator_set_voltage(rdev_get_name(rdev), min_uV, max_uV);
1662
1648 ret = rdev->desc->ops->set_voltage(rdev, min_uV, max_uV, &selector); 1663 ret = rdev->desc->ops->set_voltage(rdev, min_uV, max_uV, &selector);
1649 1664
1650 if (rdev->desc->ops->list_voltage) 1665 if (rdev->desc->ops->list_voltage)
@@ -1652,6 +1667,8 @@ int regulator_set_voltage(struct regulator *regulator, int min_uV, int max_uV)
1652 else 1667 else
1653 selector = -1; 1668 selector = -1;
1654 1669
1670 trace_regulator_set_voltage_complete(rdev_get_name(rdev), selector);
1671
1655out: 1672out:
1656 _notifier_call_chain(rdev, REGULATOR_EVENT_VOLTAGE_CHANGE, NULL); 1673 _notifier_call_chain(rdev, REGULATOR_EVENT_VOLTAGE_CHANGE, NULL);
1657 mutex_unlock(&rdev->mutex); 1674 mutex_unlock(&rdev->mutex);