From: Mathieu Poirier <mathieu.poirier@linaro.org> To: linux-arm-kernel@lists.infradead.org Cc: linux-kernel@vger.kernel.org Subject: [PATCH 11/14] coresight: tmc: keep track of memory width Date: Tue, 22 Mar 2016 14:23:19 -0600 [thread overview] Message-ID: <1458678202-3447-12-git-send-email-mathieu.poirier@linaro.org> (raw) In-Reply-To: <1458678202-3447-1-git-send-email-mathieu.poirier@linaro.org> Accessing the HW configuration register each time the memory width is needed simply doesn't make sense. It is much more efficient to read the value once and keep a reference for later use. Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org> --- drivers/hwtracing/coresight/coresight-tmc-etf.c | 8 +++----- drivers/hwtracing/coresight/coresight-tmc.c | 1 + drivers/hwtracing/coresight/coresight-tmc.h | 2 ++ 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/drivers/hwtracing/coresight/coresight-tmc-etf.c b/drivers/hwtracing/coresight/coresight-tmc-etf.c index c533b4494969..2cad1aa1949f 100644 --- a/drivers/hwtracing/coresight/coresight-tmc-etf.c +++ b/drivers/hwtracing/coresight/coresight-tmc-etf.c @@ -42,18 +42,16 @@ void tmc_etb_enable_hw(struct tmc_drvdata *drvdata) static void tmc_etb_dump_hw(struct tmc_drvdata *drvdata) { - enum tmc_mem_intf_width memwidth; u8 memwords; char *bufp; u32 read_data; int i; - memwidth = BMVAL(readl_relaxed(drvdata->base + CORESIGHT_DEVID), 8, 10); - if (memwidth == TMC_MEM_INTF_WIDTH_32BITS) + if (drvdata->memwidth == TMC_MEM_INTF_WIDTH_32BITS) memwords = 1; - else if (memwidth == TMC_MEM_INTF_WIDTH_64BITS) + else if (drvdata->memwidth == TMC_MEM_INTF_WIDTH_64BITS) memwords = 2; - else if (memwidth == TMC_MEM_INTF_WIDTH_128BITS) + else if (drvdata->memwidth == TMC_MEM_INTF_WIDTH_128BITS) memwords = 4; else memwords = 8; diff --git a/drivers/hwtracing/coresight/coresight-tmc.c b/drivers/hwtracing/coresight/coresight-tmc.c index c614fe160f8a..beeac81ff2fe 100644 --- a/drivers/hwtracing/coresight/coresight-tmc.c +++ b/drivers/hwtracing/coresight/coresight-tmc.c @@ -304,6 +304,7 @@ static int tmc_probe(struct amba_device *adev, const struct amba_id *id) devid = readl_relaxed(drvdata->base + CORESIGHT_DEVID); drvdata->config_type = BMVAL(devid, 6, 7); + drvdata->memwidth = BMVAL(devid, 8, 10); if (drvdata->config_type == TMC_CONFIG_TYPE_ETR) { if (np) diff --git a/drivers/hwtracing/coresight/coresight-tmc.h b/drivers/hwtracing/coresight/coresight-tmc.h index 6dbd70861b17..a6fb7a9fec5a 100644 --- a/drivers/hwtracing/coresight/coresight-tmc.h +++ b/drivers/hwtracing/coresight/coresight-tmc.h @@ -103,6 +103,7 @@ enum tmc_mem_intf_width { * @size: @buf size. * @mode: how this TMC is being used. * @config_type: TMC variant, must be of type @tmc_config_type. + * @memwidth: width of the memory interface databus, powers of two. * @trigger_cntr: amount of words to store after a trigger. */ struct tmc_drvdata { @@ -119,6 +120,7 @@ struct tmc_drvdata { u32 size; local_t mode; enum tmc_config_type config_type; + enum tmc_mem_intf_width memwidth; u32 trigger_cntr; }; -- 2.1.4
WARNING: multiple messages have this Message-ID (diff)
From: mathieu.poirier@linaro.org (Mathieu Poirier) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH 11/14] coresight: tmc: keep track of memory width Date: Tue, 22 Mar 2016 14:23:19 -0600 [thread overview] Message-ID: <1458678202-3447-12-git-send-email-mathieu.poirier@linaro.org> (raw) In-Reply-To: <1458678202-3447-1-git-send-email-mathieu.poirier@linaro.org> Accessing the HW configuration register each time the memory width is needed simply doesn't make sense. It is much more efficient to read the value once and keep a reference for later use. Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org> --- drivers/hwtracing/coresight/coresight-tmc-etf.c | 8 +++----- drivers/hwtracing/coresight/coresight-tmc.c | 1 + drivers/hwtracing/coresight/coresight-tmc.h | 2 ++ 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/drivers/hwtracing/coresight/coresight-tmc-etf.c b/drivers/hwtracing/coresight/coresight-tmc-etf.c index c533b4494969..2cad1aa1949f 100644 --- a/drivers/hwtracing/coresight/coresight-tmc-etf.c +++ b/drivers/hwtracing/coresight/coresight-tmc-etf.c @@ -42,18 +42,16 @@ void tmc_etb_enable_hw(struct tmc_drvdata *drvdata) static void tmc_etb_dump_hw(struct tmc_drvdata *drvdata) { - enum tmc_mem_intf_width memwidth; u8 memwords; char *bufp; u32 read_data; int i; - memwidth = BMVAL(readl_relaxed(drvdata->base + CORESIGHT_DEVID), 8, 10); - if (memwidth == TMC_MEM_INTF_WIDTH_32BITS) + if (drvdata->memwidth == TMC_MEM_INTF_WIDTH_32BITS) memwords = 1; - else if (memwidth == TMC_MEM_INTF_WIDTH_64BITS) + else if (drvdata->memwidth == TMC_MEM_INTF_WIDTH_64BITS) memwords = 2; - else if (memwidth == TMC_MEM_INTF_WIDTH_128BITS) + else if (drvdata->memwidth == TMC_MEM_INTF_WIDTH_128BITS) memwords = 4; else memwords = 8; diff --git a/drivers/hwtracing/coresight/coresight-tmc.c b/drivers/hwtracing/coresight/coresight-tmc.c index c614fe160f8a..beeac81ff2fe 100644 --- a/drivers/hwtracing/coresight/coresight-tmc.c +++ b/drivers/hwtracing/coresight/coresight-tmc.c @@ -304,6 +304,7 @@ static int tmc_probe(struct amba_device *adev, const struct amba_id *id) devid = readl_relaxed(drvdata->base + CORESIGHT_DEVID); drvdata->config_type = BMVAL(devid, 6, 7); + drvdata->memwidth = BMVAL(devid, 8, 10); if (drvdata->config_type == TMC_CONFIG_TYPE_ETR) { if (np) diff --git a/drivers/hwtracing/coresight/coresight-tmc.h b/drivers/hwtracing/coresight/coresight-tmc.h index 6dbd70861b17..a6fb7a9fec5a 100644 --- a/drivers/hwtracing/coresight/coresight-tmc.h +++ b/drivers/hwtracing/coresight/coresight-tmc.h @@ -103,6 +103,7 @@ enum tmc_mem_intf_width { * @size: @buf size. * @mode: how this TMC is being used. * @config_type: TMC variant, must be of type @tmc_config_type. + * @memwidth: width of the memory interface databus, powers of two. * @trigger_cntr: amount of words to store after a trigger. */ struct tmc_drvdata { @@ -119,6 +120,7 @@ struct tmc_drvdata { u32 size; local_t mode; enum tmc_config_type config_type; + enum tmc_mem_intf_width memwidth; u32 trigger_cntr; }; -- 2.1.4
next prev parent reply other threads:[~2016-03-22 20:25 UTC|newest] Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top 2016-03-22 20:23 [PATCH 00/14] coresight: tmc: make driver usable by Perf Mathieu Poirier 2016-03-22 20:23 ` Mathieu Poirier 2016-03-22 20:23 ` [PATCH 01/14] coresight: tmc: modifying naming convention Mathieu Poirier 2016-03-22 20:23 ` Mathieu Poirier 2016-03-23 10:38 ` Suzuki K. Poulose 2016-03-22 20:23 ` [PATCH 02/14] coresight: tmc: waiting for TMCReady bit before programming Mathieu Poirier 2016-03-22 20:23 ` Mathieu Poirier 2016-03-22 20:23 ` [PATCH 03/14] coresight: tmc: re-implementing tmc_read_prepare/unprepare() functions Mathieu Poirier 2016-03-22 20:23 ` Mathieu Poirier 2016-03-23 10:37 ` Suzuki K. Poulose 2016-03-24 16:38 ` Mathieu Poirier 2016-03-24 16:38 ` Mathieu Poirier 2016-03-24 19:15 ` Mathieu Poirier 2016-03-24 19:15 ` Mathieu Poirier 2016-03-22 20:23 ` [PATCH 04/14] coresight: tmc: introducing new header file Mathieu Poirier 2016-03-22 20:23 ` Mathieu Poirier 2016-03-22 20:23 ` [PATCH 05/14] coresight: tmc: splitting driver in ETB/ETF and ETR components Mathieu Poirier 2016-03-22 20:23 ` Mathieu Poirier 2016-03-22 20:23 ` [PATCH 06/14] coresight: tmc: making prepare/unprepare functions generic Mathieu Poirier 2016-03-22 20:23 ` Mathieu Poirier 2016-04-07 15:43 ` Suzuki K Poulose 2016-04-07 15:43 ` Suzuki K Poulose 2016-03-22 20:23 ` [PATCH 07/14] coresight: tmc: making disable function reusable Mathieu Poirier 2016-03-22 20:23 ` Mathieu Poirier 2016-03-22 20:23 ` [PATCH 08/14] coresight: tmc: allocating memory when needed Mathieu Poirier 2016-03-22 20:23 ` Mathieu Poirier 2016-04-07 16:50 ` Suzuki K Poulose 2016-04-07 16:50 ` Suzuki K Poulose 2016-04-08 15:23 ` Mathieu Poirier 2016-04-08 15:23 ` Mathieu Poirier 2016-03-22 20:23 ` [PATCH 09/14] coresight: tmc: adding mode of operation for link/sinks Mathieu Poirier 2016-03-22 20:23 ` Mathieu Poirier 2016-04-07 17:19 ` Suzuki K Poulose 2016-04-07 17:19 ` Suzuki K Poulose 2016-03-22 20:23 ` [PATCH 10/14] coresight: tmc: make sysFS and Perf mode mutually exclusive Mathieu Poirier 2016-03-22 20:23 ` Mathieu Poirier 2016-03-22 20:23 ` Mathieu Poirier [this message] 2016-03-22 20:23 ` [PATCH 11/14] coresight: tmc: keep track of memory width Mathieu Poirier 2016-03-22 20:23 ` [PATCH 12/14] coresight: tmc: implementing TMC-ETF AUX space API Mathieu Poirier 2016-03-22 20:23 ` Mathieu Poirier 2016-03-22 20:23 ` [PATCH 13/14] coresight: tmc: implementing TMC-ETR " Mathieu Poirier 2016-03-22 20:23 ` Mathieu Poirier 2016-03-22 20:23 ` [PATCH 14/14] coresight: configuring ETF in FIFO mode when acting as link Mathieu Poirier 2016-03-22 20:23 ` 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=1458678202-3447-12-git-send-email-mathieu.poirier@linaro.org \ --to=mathieu.poirier@linaro.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.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.