From: Suzuki K Poulose <suzuki.poulose@arm.com> To: linux-arm-kernel@lists.infradead.org Cc: linux-kernel@vger.kernel.org, mike.leach@linaro.org, mathieu.poirier@linaro.org, coresight@lists.linaro.org, Suzuki K Poulose <suzuki.poulose@arm.com> Subject: [RFC PATCH 03/14] coresight: tpiu: Use coresight device access abstraction Date: Wed, 22 Jul 2020 18:20:29 +0100 [thread overview] Message-ID: <20200722172040.1299289-4-suzuki.poulose@arm.com> (raw) In-Reply-To: <20200722172040.1299289-1-suzuki.poulose@arm.com> TPIU driver access the device before the coresight device is registered. In other words, before the drvdata->csdev is valid. Thus, we need to make sure that the csdev_access is valid for both the invocations. Switch to using the csdev_access directly instead of relying on availability of drvdata->csdev. Cc: Mathieu Poirier <mathieu.poirier@linaro.org> Cc: Mike Leach <mike.leach@linaro.org> Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com> --- drivers/hwtracing/coresight/coresight-tpiu.c | 30 +++++++++----------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/drivers/hwtracing/coresight/coresight-tpiu.c b/drivers/hwtracing/coresight/coresight-tpiu.c index 7ef7649f48ad..84ff4bf5d3b8 100644 --- a/drivers/hwtracing/coresight/coresight-tpiu.c +++ b/drivers/hwtracing/coresight/coresight-tpiu.c @@ -60,49 +60,45 @@ struct tpiu_drvdata { struct coresight_device *csdev; }; -static void tpiu_enable_hw(struct tpiu_drvdata *drvdata) +static void tpiu_enable_hw(struct csdev_access *csa) { - CS_UNLOCK(drvdata->base); + CS_UNLOCK(csa->base); /* TODO: fill this up */ - CS_LOCK(drvdata->base); + CS_LOCK(csa->base); } static int tpiu_enable(struct coresight_device *csdev, u32 mode, void *__unused) { - struct tpiu_drvdata *drvdata = dev_get_drvdata(csdev->dev.parent); - - tpiu_enable_hw(drvdata); + tpiu_enable_hw(&csdev->access); atomic_inc(csdev->refcnt); dev_dbg(&csdev->dev, "TPIU enabled\n"); return 0; } -static void tpiu_disable_hw(struct tpiu_drvdata *drvdata) +static void tpiu_disable_hw(struct csdev_access *csa) { - CS_UNLOCK(drvdata->base); + CS_UNLOCK(csa->base); /* Clear formatter and stop on flush */ - writel_relaxed(FFCR_STOP_FI, drvdata->base + TPIU_FFCR); + csdev_access_relaxed_write32(csa, FFCR_STOP_FI, TPIU_FFCR); /* Generate manual flush */ - writel_relaxed(FFCR_STOP_FI | FFCR_FON_MAN, drvdata->base + TPIU_FFCR); + csdev_access_relaxed_write32(csa, FFCR_STOP_FI | FFCR_FON_MAN, TPIU_FFCR); /* Wait for flush to complete */ - coresight_timeout(drvdata->base, TPIU_FFCR, FFCR_FON_MAN_BIT, 0); + coresight_timeout(csa->base, TPIU_FFCR, FFCR_FON_MAN_BIT, 0); /* Wait for formatter to stop */ - coresight_timeout(drvdata->base, TPIU_FFSR, FFSR_FT_STOPPED_BIT, 1); + coresight_timeout(csa->base, TPIU_FFSR, FFSR_FT_STOPPED_BIT, 1); - CS_LOCK(drvdata->base); + CS_LOCK(csa->base); } static int tpiu_disable(struct coresight_device *csdev) { - struct tpiu_drvdata *drvdata = dev_get_drvdata(csdev->dev.parent); - if (atomic_dec_return(csdev->refcnt)) return -EBUSY; - tpiu_disable_hw(drvdata); + tpiu_disable_hw(&csdev->access); dev_dbg(&csdev->dev, "TPIU disabled\n"); return 0; @@ -152,7 +148,7 @@ static int tpiu_probe(struct amba_device *adev, const struct amba_id *id) desc.access.base = base; /* Disable tpiu to support older devices */ - tpiu_disable_hw(drvdata); + tpiu_disable_hw(&desc.access); pdata = coresight_get_platform_data(dev); if (IS_ERR(pdata)) -- 2.24.1
WARNING: multiple messages have this Message-ID (diff)
From: Suzuki K Poulose <suzuki.poulose@arm.com> To: linux-arm-kernel@lists.infradead.org Cc: coresight@lists.linaro.org, Suzuki K Poulose <suzuki.poulose@arm.com>, linux-kernel@vger.kernel.org, mathieu.poirier@linaro.org, mike.leach@linaro.org Subject: [RFC PATCH 03/14] coresight: tpiu: Use coresight device access abstraction Date: Wed, 22 Jul 2020 18:20:29 +0100 [thread overview] Message-ID: <20200722172040.1299289-4-suzuki.poulose@arm.com> (raw) In-Reply-To: <20200722172040.1299289-1-suzuki.poulose@arm.com> TPIU driver access the device before the coresight device is registered. In other words, before the drvdata->csdev is valid. Thus, we need to make sure that the csdev_access is valid for both the invocations. Switch to using the csdev_access directly instead of relying on availability of drvdata->csdev. Cc: Mathieu Poirier <mathieu.poirier@linaro.org> Cc: Mike Leach <mike.leach@linaro.org> Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com> --- drivers/hwtracing/coresight/coresight-tpiu.c | 30 +++++++++----------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/drivers/hwtracing/coresight/coresight-tpiu.c b/drivers/hwtracing/coresight/coresight-tpiu.c index 7ef7649f48ad..84ff4bf5d3b8 100644 --- a/drivers/hwtracing/coresight/coresight-tpiu.c +++ b/drivers/hwtracing/coresight/coresight-tpiu.c @@ -60,49 +60,45 @@ struct tpiu_drvdata { struct coresight_device *csdev; }; -static void tpiu_enable_hw(struct tpiu_drvdata *drvdata) +static void tpiu_enable_hw(struct csdev_access *csa) { - CS_UNLOCK(drvdata->base); + CS_UNLOCK(csa->base); /* TODO: fill this up */ - CS_LOCK(drvdata->base); + CS_LOCK(csa->base); } static int tpiu_enable(struct coresight_device *csdev, u32 mode, void *__unused) { - struct tpiu_drvdata *drvdata = dev_get_drvdata(csdev->dev.parent); - - tpiu_enable_hw(drvdata); + tpiu_enable_hw(&csdev->access); atomic_inc(csdev->refcnt); dev_dbg(&csdev->dev, "TPIU enabled\n"); return 0; } -static void tpiu_disable_hw(struct tpiu_drvdata *drvdata) +static void tpiu_disable_hw(struct csdev_access *csa) { - CS_UNLOCK(drvdata->base); + CS_UNLOCK(csa->base); /* Clear formatter and stop on flush */ - writel_relaxed(FFCR_STOP_FI, drvdata->base + TPIU_FFCR); + csdev_access_relaxed_write32(csa, FFCR_STOP_FI, TPIU_FFCR); /* Generate manual flush */ - writel_relaxed(FFCR_STOP_FI | FFCR_FON_MAN, drvdata->base + TPIU_FFCR); + csdev_access_relaxed_write32(csa, FFCR_STOP_FI | FFCR_FON_MAN, TPIU_FFCR); /* Wait for flush to complete */ - coresight_timeout(drvdata->base, TPIU_FFCR, FFCR_FON_MAN_BIT, 0); + coresight_timeout(csa->base, TPIU_FFCR, FFCR_FON_MAN_BIT, 0); /* Wait for formatter to stop */ - coresight_timeout(drvdata->base, TPIU_FFSR, FFSR_FT_STOPPED_BIT, 1); + coresight_timeout(csa->base, TPIU_FFSR, FFSR_FT_STOPPED_BIT, 1); - CS_LOCK(drvdata->base); + CS_LOCK(csa->base); } static int tpiu_disable(struct coresight_device *csdev) { - struct tpiu_drvdata *drvdata = dev_get_drvdata(csdev->dev.parent); - if (atomic_dec_return(csdev->refcnt)) return -EBUSY; - tpiu_disable_hw(drvdata); + tpiu_disable_hw(&csdev->access); dev_dbg(&csdev->dev, "TPIU disabled\n"); return 0; @@ -152,7 +148,7 @@ static int tpiu_probe(struct amba_device *adev, const struct amba_id *id) desc.access.base = base; /* Disable tpiu to support older devices */ - tpiu_disable_hw(drvdata); + tpiu_disable_hw(&desc.access); pdata = coresight_get_platform_data(dev); if (IS_ERR(pdata)) -- 2.24.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2020-07-22 17:21 UTC|newest] Thread overview: 75+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-07-22 17:20 [RFC PATCH 00/14] coresight: Support for ETMv4.4 system instructions Suzuki K Poulose 2020-07-22 17:20 ` Suzuki K Poulose 2020-07-22 17:20 ` [RFC PATCH 01/14] coresight: etm4x: Skip save/restore before device registration Suzuki K Poulose 2020-07-22 17:20 ` Suzuki K Poulose 2020-07-29 18:01 ` Mathieu Poirier 2020-07-29 18:01 ` Mathieu Poirier 2020-07-30 14:45 ` Suzuki K Poulose 2020-07-30 14:45 ` Suzuki K Poulose 2020-07-22 17:20 ` [RFC PATCH 02/14] coresight: Introduce device access abstraction Suzuki K Poulose 2020-07-22 17:20 ` Suzuki K Poulose 2020-07-24 4:40 ` kernel test robot 2020-07-29 19:56 ` Mathieu Poirier 2020-07-29 19:56 ` Mathieu Poirier 2020-07-30 14:58 ` Suzuki K Poulose 2020-07-30 14:58 ` Suzuki K Poulose 2020-07-29 20:56 ` kernel test robot 2020-07-22 17:20 ` Suzuki K Poulose [this message] 2020-07-22 17:20 ` [RFC PATCH 03/14] coresight: tpiu: Use coresight " Suzuki K Poulose 2020-07-29 21:01 ` Mathieu Poirier 2020-07-29 21:01 ` Mathieu Poirier 2020-07-31 11:36 ` Suzuki K Poulose 2020-07-31 11:36 ` Suzuki K Poulose 2020-07-22 17:20 ` [RFC PATCH 04/14] coresight: etm4x: Free up argument of etm4_init_arch_data Suzuki K Poulose 2020-07-22 17:20 ` Suzuki K Poulose 2020-07-30 17:31 ` Mathieu Poirier 2020-07-30 17:31 ` Mathieu Poirier 2020-07-31 9:39 ` Suzuki K Poulose 2020-07-31 9:39 ` Suzuki K Poulose 2020-07-22 17:20 ` [RFC PATCH 05/14] coresight: Convert coresight_timeout to use access abstraction Suzuki K Poulose 2020-07-22 17:20 ` Suzuki K Poulose 2020-07-30 18:00 ` Mathieu Poirier 2020-07-30 18:00 ` Mathieu Poirier 2020-07-22 17:20 ` [RFC PATCH 06/14] coresight: Convert claim and lock operations to use access wrappers Suzuki K Poulose 2020-07-22 17:20 ` Suzuki K Poulose 2020-07-27 6:04 ` kernel test robot 2020-07-27 17:56 ` kernel test robot 2020-07-28 9:47 ` Suzuki K Poulose 2020-07-30 19:54 ` Mathieu Poirier 2020-07-30 19:54 ` Mathieu Poirier 2020-07-31 9:46 ` Suzuki K Poulose 2020-07-31 9:46 ` Suzuki K Poulose 2020-07-22 17:20 ` [RFC PATCH 07/14] coresight: etm4x: Always read the registers on the host CPU Suzuki K Poulose 2020-07-22 17:20 ` Suzuki K Poulose 2020-07-30 19:56 ` Mathieu Poirier 2020-07-30 19:56 ` Mathieu Poirier 2020-07-22 17:20 ` [RFC PATCH 08/14] coresight: etm4x: Convert all register accesses Suzuki K Poulose 2020-07-22 17:20 ` Suzuki K Poulose 2020-07-30 20:20 ` Mathieu Poirier 2020-07-30 20:20 ` Mathieu Poirier 2020-07-31 9:49 ` Suzuki K Poulose 2020-07-31 9:49 ` Suzuki K Poulose 2020-07-22 17:20 ` [RFC PATCH 09/14] coresight: etm4x: Add sysreg access helpers Suzuki K Poulose 2020-07-22 17:20 ` Suzuki K Poulose 2020-07-30 21:41 ` Mathieu Poirier 2020-07-30 21:41 ` Mathieu Poirier 2020-07-31 9:51 ` Suzuki K Poulose 2020-07-31 9:51 ` Suzuki K Poulose 2020-07-22 17:20 ` [RFC PATCH 10/14] coresight: etm4x: Define DEVARCH register fields Suzuki K Poulose 2020-07-22 17:20 ` Suzuki K Poulose 2020-07-22 17:20 ` [RFC PATCH 11/14] coresight: etm4x: Detect system register access support Suzuki K Poulose 2020-07-22 17:20 ` Suzuki K Poulose 2020-07-22 17:20 ` [RFC PATCH 12/14] coresight: etm4x: Refactor probing routine Suzuki K Poulose 2020-07-22 17:20 ` Suzuki K Poulose 2020-07-22 17:20 ` [RFC PATCH 13/14] coresight: etm4x: Add support for sysreg only devices Suzuki K Poulose 2020-07-22 17:20 ` Suzuki K Poulose 2020-07-22 17:20 ` [RFC PATCH 14/14] dts: bindings: coresight: ETMv4.4 system register access only units Suzuki K Poulose 2020-07-22 17:20 ` Suzuki K Poulose 2020-07-23 17:27 ` Rob Herring 2020-07-23 17:27 ` Rob Herring 2020-07-29 17:20 ` Mathieu Poirier 2020-07-29 17:20 ` Mathieu Poirier 2020-07-30 16:38 ` Suzuki K Poulose 2020-07-30 16:38 ` Suzuki K Poulose 2020-08-10 20:14 ` Mathieu Poirier 2020-08-10 20:14 ` Mathieu Poirier
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20200722172040.1299289-4-suzuki.poulose@arm.com \ --to=suzuki.poulose@arm.com \ --cc=coresight@lists.linaro.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=mathieu.poirier@linaro.org \ --cc=mike.leach@linaro.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.