Explorar o código

coresight: add API to get sink from path

Add an API allowing external code to quickly get a handle on the
sink within a path.  The sink is always last, but adding an API allows
to keep the path's node structure private and remove redundant checks.

Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Mathieu Poirier %!s(int64=9) %!d(string=hai) anos
pai
achega
b6404e21f0

+ 1 - 0
drivers/hwtracing/coresight/coresight-priv.h

@@ -54,6 +54,7 @@ static inline void CS_UNLOCK(void __iomem *addr)
 
 
 void coresight_disable_path(struct list_head *path);
 void coresight_disable_path(struct list_head *path);
 int coresight_enable_path(struct list_head *path);
 int coresight_enable_path(struct list_head *path);
+struct coresight_device *coresight_get_sink(struct list_head *path);
 struct list_head *coresight_build_path(struct coresight_device *csdev);
 struct list_head *coresight_build_path(struct coresight_device *csdev);
 void coresight_release_path(struct list_head *path);
 void coresight_release_path(struct list_head *path);
 
 

+ 15 - 0
drivers/hwtracing/coresight/coresight.c

@@ -321,6 +321,21 @@ err:
 	goto out;
 	goto out;
 }
 }
 
 
+struct coresight_device *coresight_get_sink(struct list_head *path)
+{
+	struct coresight_device *csdev;
+
+	if (!path)
+		return NULL;
+
+	csdev = list_last_entry(path, struct coresight_node, link)->csdev;
+	if (csdev->type != CORESIGHT_DEV_TYPE_SINK &&
+	    csdev->type != CORESIGHT_DEV_TYPE_LINKSINK)
+		return NULL;
+
+	return csdev;
+}
+
 /**
 /**
  * _coresight_build_path - recursively build a path from a @csdev to a sink.
  * _coresight_build_path - recursively build a path from a @csdev to a sink.
  * @csdev:	The device to start from.
  * @csdev:	The device to start from.