dev_* functions only print the struct device * as context, but often a single struct device * implements multiple regulators. Add rdev_* logging functions which allow to to print one specific regulator as context. Signed-off-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> --- drivers/regulator/core.c | 12 ++++++++++-- include/regulator.h | 13 +++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index 41a3378ac8..8ef5a2372c 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c @@ -19,6 +19,14 @@ struct regulator { struct device *dev; }; +const char *rdev_get_name(struct regulator_dev *rdev) +{ + if (rdev->name) + return rdev->name; + + return ""; +} + static int regulator_map_voltage(struct regulator_dev *rdev, int min_uV, int max_uV) { @@ -125,7 +133,7 @@ static int regulator_resolve_supply(struct regulator_dev *rdev) if (!supply_name) return 0; - dev_dbg(rdev->dev, "resolving %s\n", supply_name); + rdev_dbg(rdev, "resolving %s\n", supply_name); supply = regulator_get(rdev->dev, supply_name); if (IS_ERR(supply)) { @@ -141,7 +149,7 @@ static int regulator_resolve_supply(struct regulator_dev *rdev) * we couldn't. If you want to get rid of this warning, consider * migrating your platform to have deep probe support. */ - dev_warn(rdev->dev, "Failed to get '%s' regulator (ignored).\n", + rdev_warn(rdev, "Failed to get '%s' regulator (ignored).\n", supply_name); return 0; } diff --git a/include/regulator.h b/include/regulator.h index 5eb236e602..d02ea8ffd0 100644 --- a/include/regulator.h +++ b/include/regulator.h @@ -159,6 +159,19 @@ int dev_regulator_register(struct regulator_dev *rd, const char * name, void regulators_print(void); +const char *rdev_get_name(struct regulator_dev *rdev); + +#define rdev_crit(rdev, fmt, ...) \ + pr_crit("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__) +#define rdev_err(rdev, fmt, ...) \ + pr_err("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__) +#define rdev_warn(rdev, fmt, ...) \ + pr_warn("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__) +#define rdev_info(rdev, fmt, ...) \ + pr_info("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__) +#define rdev_dbg(rdev, fmt, ...) \ + pr_debug("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__) + #ifdef CONFIG_REGULATOR struct regulator *regulator_get(struct device *, const char *); -- 2.39.2