coresight: catu: Claim device before use
authorSuzuki K Poulose <suzuki.poulose@arm.com>
Thu, 20 Sep 2018 19:18:14 +0000 (13:18 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 25 Sep 2018 18:09:19 +0000 (20:09 +0200)
Use the CLAIM protocol to grab the ownership of the component when
in use.

Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/hwtracing/coresight/coresight-catu.c

index ff94e58845b721723f0d3adddc062ccfad4a43fd..170fbb66bda293390225265746d1b30ecfb7dd4c 100644 (file)
@@ -406,6 +406,7 @@ static inline int catu_wait_for_ready(struct catu_drvdata *drvdata)
 
 static int catu_enable_hw(struct catu_drvdata *drvdata, void *data)
 {
+       int rc;
        u32 control, mode;
        struct etr_buf *etr_buf = data;
 
@@ -418,6 +419,10 @@ static int catu_enable_hw(struct catu_drvdata *drvdata, void *data)
                return -EBUSY;
        }
 
+       rc = coresight_claim_device_unlocked(drvdata->base);
+       if (rc)
+               return rc;
+
        control |= BIT(CATU_CONTROL_ENABLE);
 
        if (etr_buf && etr_buf->mode == ETR_MODE_CATU) {
@@ -459,6 +464,7 @@ static int catu_disable_hw(struct catu_drvdata *drvdata)
        int rc = 0;
 
        catu_write_control(drvdata, 0);
+       coresight_disclaim_device_unlocked(drvdata->base);
        if (catu_wait_for_ready(drvdata)) {
                dev_info(drvdata->dev, "Timeout while waiting for READY\n");
                rc = -EAGAIN;