|
|
@@ -265,15 +265,27 @@ static void coresight_disable_source(struct coresight_device *csdev)
|
|
|
|
|
|
void coresight_disable_path(struct list_head *path)
|
|
|
{
|
|
|
+ u32 type;
|
|
|
struct coresight_node *nd;
|
|
|
struct coresight_device *csdev, *parent, *child;
|
|
|
|
|
|
list_for_each_entry(nd, path, link) {
|
|
|
csdev = nd->csdev;
|
|
|
+ type = csdev->type;
|
|
|
|
|
|
- switch (csdev->type) {
|
|
|
+ /*
|
|
|
+ * ETF devices are tricky... They can be a link or a sink,
|
|
|
+ * depending on how they are configured. If an ETF has been
|
|
|
+ * "activated" it will be configured as a sink, otherwise
|
|
|
+ * go ahead with the link configuration.
|
|
|
+ */
|
|
|
+ if (type == CORESIGHT_DEV_TYPE_LINKSINK)
|
|
|
+ type = (csdev == coresight_get_sink(path)) ?
|
|
|
+ CORESIGHT_DEV_TYPE_SINK :
|
|
|
+ CORESIGHT_DEV_TYPE_LINK;
|
|
|
+
|
|
|
+ switch (type) {
|
|
|
case CORESIGHT_DEV_TYPE_SINK:
|
|
|
- case CORESIGHT_DEV_TYPE_LINKSINK:
|
|
|
coresight_disable_sink(csdev);
|
|
|
break;
|
|
|
case CORESIGHT_DEV_TYPE_SOURCE:
|
|
|
@@ -294,15 +306,27 @@ int coresight_enable_path(struct list_head *path, u32 mode)
|
|
|
{
|
|
|
|
|
|
int ret = 0;
|
|
|
+ u32 type;
|
|
|
struct coresight_node *nd;
|
|
|
struct coresight_device *csdev, *parent, *child;
|
|
|
|
|
|
list_for_each_entry_reverse(nd, path, link) {
|
|
|
csdev = nd->csdev;
|
|
|
+ type = csdev->type;
|
|
|
+
|
|
|
+ /*
|
|
|
+ * ETF devices are tricky... They can be a link or a sink,
|
|
|
+ * depending on how they are configured. If an ETF has been
|
|
|
+ * "activated" it will be configured as a sink, otherwise
|
|
|
+ * go ahead with the link configuration.
|
|
|
+ */
|
|
|
+ if (type == CORESIGHT_DEV_TYPE_LINKSINK)
|
|
|
+ type = (csdev == coresight_get_sink(path)) ?
|
|
|
+ CORESIGHT_DEV_TYPE_SINK :
|
|
|
+ CORESIGHT_DEV_TYPE_LINK;
|
|
|
|
|
|
- switch (csdev->type) {
|
|
|
+ switch (type) {
|
|
|
case CORESIGHT_DEV_TYPE_SINK:
|
|
|
- case CORESIGHT_DEV_TYPE_LINKSINK:
|
|
|
ret = coresight_enable_sink(csdev, mode);
|
|
|
if (ret)
|
|
|
goto err;
|