Commit 4e33d694 authored by Suzuki K Poulose's avatar Suzuki K Poulose Committed by Greg Kroah-Hartman
Browse files

coresight: dynamic-replicator: Claim device for use



Use CLAIM protocol to make sure the device is available for use.

Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
Signed-off-by: default avatarSuzuki K Poulose <suzuki.poulose@arm.com>
Signed-off-by: default avatarMathieu Poirier <mathieu.poirier@linaro.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent f92201b1
Loading
Loading
Loading
Loading
+18 −5
Original line number Diff line number Diff line
@@ -41,8 +41,11 @@ static void replicator_reset(struct replicator_state *drvdata)
{
	CS_UNLOCK(drvdata->base);

	if (!coresight_claim_device_unlocked(drvdata->base)) {
		writel_relaxed(0xff, drvdata->base + REPLICATOR_IDFILTER0);
		writel_relaxed(0xff, drvdata->base + REPLICATOR_IDFILTER1);
		coresight_disclaim_device_unlocked(drvdata->base);
	}

	CS_LOCK(drvdata->base);
}
@@ -50,6 +53,7 @@ static void replicator_reset(struct replicator_state *drvdata)
static int replicator_enable(struct coresight_device *csdev, int inport,
			      int outport)
{
	int rc = 0;
	u32 reg;
	struct replicator_state *drvdata = dev_get_drvdata(csdev->dev.parent);

@@ -67,13 +71,19 @@ static int replicator_enable(struct coresight_device *csdev, int inport,

	CS_UNLOCK(drvdata->base);

	if ((readl_relaxed(drvdata->base + REPLICATOR_IDFILTER0) == 0xff) &&
	    (readl_relaxed(drvdata->base + REPLICATOR_IDFILTER1) == 0xff))
		rc = coresight_claim_device_unlocked(drvdata->base);

	/* Ensure that the outport is enabled. */
	if (!rc) {
		writel_relaxed(0x00, drvdata->base + reg);
		dev_dbg(drvdata->dev, "REPLICATOR enabled\n");
	}

	CS_LOCK(drvdata->base);

	dev_dbg(drvdata->dev, "REPLICATOR enabled\n");
	return 0;
	return rc;
}

static void replicator_disable(struct coresight_device *csdev, int inport,
@@ -99,6 +109,9 @@ static void replicator_disable(struct coresight_device *csdev, int inport,
	/* disable the flow of ATB data through port */
	writel_relaxed(0xff, drvdata->base + reg);

	if ((readl_relaxed(drvdata->base + REPLICATOR_IDFILTER0) == 0xff) &&
	    (readl_relaxed(drvdata->base + REPLICATOR_IDFILTER1) == 0xff))
		coresight_disclaim_device_unlocked(drvdata->base);
	CS_LOCK(drvdata->base);

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