Merge "coresight: Reset all activated sinks"
diff --git a/drivers/hwtracing/coresight/coresight.c b/drivers/hwtracing/coresight/coresight.c
index e8ac7e7..7667707 100644
--- a/drivers/hwtracing/coresight/coresight.c
+++ b/drivers/hwtracing/coresight/coresight.c
@@ -91,6 +91,23 @@
csdev, coresight_id_match);
}
+static int coresight_reset_sink(struct device *dev, void *data)
+{
+ struct coresight_device *csdev = to_coresight_device(dev);
+
+ if ((csdev->type == CORESIGHT_DEV_TYPE_SINK ||
+ csdev->type == CORESIGHT_DEV_TYPE_LINKSINK) &&
+ csdev->activated)
+ csdev->activated = false;
+
+ return 0;
+}
+
+static void coresight_reset_all_sink(void)
+{
+ bus_for_each_dev(&coresight_bustype, NULL, NULL, coresight_reset_sink);
+}
+
static int coresight_find_link_inport(struct coresight_device *csdev,
struct coresight_device *parent)
{
@@ -1017,6 +1034,9 @@
__coresight_disable(csdev);
}
+ /* Reset all activated sinks */
+ coresight_reset_all_sink();
+
mutex_unlock(&coresight_mutex);
return size;
}