summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/base/regmap/regcache.c8
-rw-r--r--include/trace/events/regmap.h24
2 files changed, 31 insertions, 1 deletions
diff --git a/drivers/base/regmap/regcache.c b/drivers/base/regmap/regcache.c
index 142d9cdfef3a..00609bf785fb 100644
--- a/drivers/base/regmap/regcache.c
+++ b/drivers/base/regmap/regcache.c
@@ -221,12 +221,18 @@ EXPORT_SYMBOL_GPL(regcache_write);
*/
int regcache_sync(struct regmap *map)
{
+ int ret;
+ const char *name;
+
BUG_ON(!map->cache_ops);
if (map->cache_ops->sync) {
dev_dbg(map->dev, "Syncing %s cache\n",
map->cache_ops->name);
- return map->cache_ops->sync(map);
+ name = map->cache_ops->name;
+ trace_regcache_sync(map->dev, name, "start");
+ ret = map->cache_ops->sync(map);
+ trace_regcache_sync(map->dev, name, "stop");
}
return 0;
}
diff --git a/include/trace/events/regmap.h b/include/trace/events/regmap.h
index e35e37c378c6..1e3193b8fcc8 100644
--- a/include/trace/events/regmap.h
+++ b/include/trace/events/regmap.h
@@ -106,6 +106,30 @@ DEFINE_EVENT(regmap_block, regmap_hw_write_done,
TP_ARGS(dev, reg, count)
);
+TRACE_EVENT(regcache_sync,
+
+ TP_PROTO(struct device *dev, const char *type,
+ const char *status),
+
+ TP_ARGS(dev, type, status),
+
+ TP_STRUCT__entry(
+ __string( name, dev_name(dev) )
+ __string( status, status )
+ __string( type, type )
+ __field( int, type )
+ ),
+
+ TP_fast_assign(
+ __assign_str(name, dev_name(dev));
+ __assign_str(status, status);
+ __assign_str(type, type);
+ ),
+
+ TP_printk("%s type=%s status=%s", __get_str(name),
+ __get_str(type), __get_str(status))
+);
+
#endif /* _TRACE_REGMAP_H */
/* This part must be outside protection */