Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

regulator: core: Add regulator bypass trace points

Add new trace points for the start and end of enabling bypass on a
regulator, to allow monitoring of when regulators are moved into bypass
and how long that takes.

Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20200529152216.9671-1-ckeepax@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>

authored by

Charles Keepax and committed by
Mark Brown
48325655 c1f615e4

+41
+9
drivers/regulator/core.c
··· 4321 4321 int regulator_allow_bypass(struct regulator *regulator, bool enable) 4322 4322 { 4323 4323 struct regulator_dev *rdev = regulator->rdev; 4324 + const char *name = rdev_get_name(rdev); 4324 4325 int ret = 0; 4325 4326 4326 4327 if (!rdev->desc->ops->set_bypass) ··· 4336 4335 rdev->bypass_count++; 4337 4336 4338 4337 if (rdev->bypass_count == rdev->open_count) { 4338 + trace_regulator_bypass_enable(name); 4339 + 4339 4340 ret = rdev->desc->ops->set_bypass(rdev, enable); 4340 4341 if (ret != 0) 4341 4342 rdev->bypass_count--; 4343 + else 4344 + trace_regulator_bypass_enable_complete(name); 4342 4345 } 4343 4346 4344 4347 } else if (!enable && regulator->bypass) { 4345 4348 rdev->bypass_count--; 4346 4349 4347 4350 if (rdev->bypass_count != rdev->open_count) { 4351 + trace_regulator_bypass_disable(name); 4352 + 4348 4353 ret = rdev->desc->ops->set_bypass(rdev, enable); 4349 4354 if (ret != 0) 4350 4355 rdev->bypass_count++; 4356 + else 4357 + trace_regulator_bypass_disable_complete(name); 4351 4358 } 4352 4359 } 4353 4360
+32
include/trace/events/regulator.h
··· 70 70 71 71 ); 72 72 73 + DEFINE_EVENT(regulator_basic, regulator_bypass_enable, 74 + 75 + TP_PROTO(const char *name), 76 + 77 + TP_ARGS(name) 78 + 79 + ); 80 + 81 + DEFINE_EVENT(regulator_basic, regulator_bypass_enable_complete, 82 + 83 + TP_PROTO(const char *name), 84 + 85 + TP_ARGS(name) 86 + 87 + ); 88 + 89 + DEFINE_EVENT(regulator_basic, regulator_bypass_disable, 90 + 91 + TP_PROTO(const char *name), 92 + 93 + TP_ARGS(name) 94 + 95 + ); 96 + 97 + DEFINE_EVENT(regulator_basic, regulator_bypass_disable_complete, 98 + 99 + TP_PROTO(const char *name), 100 + 101 + TP_ARGS(name) 102 + 103 + ); 104 + 73 105 /* 74 106 * Events that take a range of numerical values, mostly for voltages 75 107 * and so on.