Commit 5da5325f authored by Mathieu Poirier's avatar Mathieu Poirier Committed by Greg Kroah-Hartman
Browse files

coresight: moving PM runtime operations to core framework



Moving PM runtime operations in Coresight devices enable() and
disable() API to the framework core when a path is setup.  That
way the runtime core doesn't have to be involved everytime a
path is enabled.  It also avoids calling runtime PM operations
in IRQ context.

Signed-off-by: default avatarMathieu Poirier <mathieu.poirier@linaro.org>
Reviewed-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent b6404e21
Loading
Loading
Loading
Loading
+0 −4
Original line number Diff line number Diff line
@@ -137,8 +137,6 @@ static int etb_enable(struct coresight_device *csdev)
	struct etb_drvdata *drvdata = dev_get_drvdata(csdev->dev.parent);
	unsigned long flags;

	pm_runtime_get_sync(drvdata->dev);

	spin_lock_irqsave(&drvdata->spinlock, flags);
	etb_enable_hw(drvdata);
	drvdata->enable = true;
@@ -247,8 +245,6 @@ static void etb_disable(struct coresight_device *csdev)
	drvdata->enable = false;
	spin_unlock_irqrestore(&drvdata->spinlock, flags);

	pm_runtime_put(drvdata->dev);

	dev_info(drvdata->dev, "ETB disabled\n");
}

+0 −3
Original line number Diff line number Diff line
@@ -349,7 +349,6 @@ static int etm_enable(struct coresight_device *csdev)
	struct etm_drvdata *drvdata = dev_get_drvdata(csdev->dev.parent);
	int ret;

	pm_runtime_get_sync(csdev->dev.parent);
	spin_lock(&drvdata->spinlock);

	/*
@@ -373,7 +372,6 @@ static int etm_enable(struct coresight_device *csdev)
	return 0;
err:
	spin_unlock(&drvdata->spinlock);
	pm_runtime_put(csdev->dev.parent);
	return ret;
}

@@ -422,7 +420,6 @@ static void etm_disable(struct coresight_device *csdev)

	spin_unlock(&drvdata->spinlock);
	put_online_cpus();
	pm_runtime_put(csdev->dev.parent);

	dev_info(drvdata->dev, "ETM tracing disabled\n");
}
+0 −6
Original line number Diff line number Diff line
@@ -79,7 +79,6 @@ static int etm4_trace_id(struct coresight_device *csdev)
	if (!drvdata->enable)
		return drvdata->trcid;

	pm_runtime_get_sync(drvdata->dev);
	spin_lock_irqsave(&drvdata->spinlock, flags);

	CS_UNLOCK(drvdata->base);
@@ -88,7 +87,6 @@ static int etm4_trace_id(struct coresight_device *csdev)
	CS_LOCK(drvdata->base);

	spin_unlock_irqrestore(&drvdata->spinlock, flags);
	pm_runtime_put(drvdata->dev);

	return trace_id;
}
@@ -194,7 +192,6 @@ static int etm4_enable(struct coresight_device *csdev)
	struct etmv4_drvdata *drvdata = dev_get_drvdata(csdev->dev.parent);
	int ret;

	pm_runtime_get_sync(drvdata->dev);
	spin_lock(&drvdata->spinlock);

	/*
@@ -214,7 +211,6 @@ static int etm4_enable(struct coresight_device *csdev)
	return 0;
err:
	spin_unlock(&drvdata->spinlock);
	pm_runtime_put(drvdata->dev);
	return ret;
}

@@ -263,8 +259,6 @@ static void etm4_disable(struct coresight_device *csdev)
	spin_unlock(&drvdata->spinlock);
	put_online_cpus();

	pm_runtime_put(drvdata->dev);

	dev_info(drvdata->dev, "ETM tracing disabled\n");
}

+0 −2
Original line number Diff line number Diff line
@@ -69,7 +69,6 @@ static int funnel_enable(struct coresight_device *csdev, int inport,
{
	struct funnel_drvdata *drvdata = dev_get_drvdata(csdev->dev.parent);

	pm_runtime_get_sync(drvdata->dev);
	funnel_enable_hw(drvdata, inport);

	dev_info(drvdata->dev, "FUNNEL inport %d enabled\n", inport);
@@ -95,7 +94,6 @@ static void funnel_disable(struct coresight_device *csdev, int inport,
	struct funnel_drvdata *drvdata = dev_get_drvdata(csdev->dev.parent);

	funnel_disable_hw(drvdata, inport);
	pm_runtime_put(drvdata->dev);

	dev_info(drvdata->dev, "FUNNEL inport %d disabled\n", inport);
}
+0 −4
Original line number Diff line number Diff line
@@ -48,8 +48,6 @@ static int replicator_enable(struct coresight_device *csdev, int inport,
{
	struct replicator_state *drvdata = dev_get_drvdata(csdev->dev.parent);

	pm_runtime_get_sync(drvdata->dev);

	CS_UNLOCK(drvdata->base);

	/*
@@ -86,8 +84,6 @@ static void replicator_disable(struct coresight_device *csdev, int inport,

	CS_LOCK(drvdata->base);

	pm_runtime_put(drvdata->dev);

	dev_info(drvdata->dev, "REPLICATOR disabled\n");
}

Loading