Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754603AbdDKLZd (ORCPT ); Tue, 11 Apr 2017 07:25:33 -0400 Received: from mail-qt0-f196.google.com ([209.85.216.196]:36095 "EHLO mail-qt0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753211AbdDKLZb (ORCPT ); Tue, 11 Apr 2017 07:25:31 -0400 MIME-Version: 1.0 In-Reply-To: <1491901829-18477-3-git-send-email-leo.yan@linaro.org> References: <1491901829-18477-1-git-send-email-leo.yan@linaro.org> <1491901829-18477-3-git-send-email-leo.yan@linaro.org> From: Chunyan Zhang Date: Tue, 11 Apr 2017 19:25:30 +0800 Message-ID: Subject: Re: [PATCH RFC 2/4] coresight: tmc: set read pointer before dump RAM To: Leo Yan Cc: Mathieu Poirier , "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" , Mike Leach , Suzuki K Poulose Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2083 Lines: 57 On 11 April 2017 at 17:10, Leo Yan wrote: > When dump RAM, we need set read pointer so can make sure every time read > the consistent content. If the RAM is full by checking status register > (STS), so set the read pointer to same value with write pointer, > otherwise set read point to 0 so can read from the start of RAM. > > Cc: Mathieu Poirier > Cc: Mike Leach > Cc: Suzuki K Poulose > Signed-off-by: Leo Yan > --- > drivers/hwtracing/coresight/coresight-tmc-etf.c | 18 ++++++++++++++++++ > 1 file changed, 18 insertions(+) > > diff --git a/drivers/hwtracing/coresight/coresight-tmc-etf.c b/drivers/hwtracing/coresight/coresight-tmc-etf.c > index 6150dac..43cfeaa 100644 > --- a/drivers/hwtracing/coresight/coresight-tmc-etf.c > +++ b/drivers/hwtracing/coresight/coresight-tmc-etf.c > @@ -43,10 +43,28 @@ static void tmc_etb_enable_hw(struct tmc_drvdata *drvdata) > > static void tmc_etb_dump_hw(struct tmc_drvdata *drvdata) > { > + u32 write_ptr, status; > char *bufp; > u32 read_data; > int i; > > + write_ptr = readl_relaxed(drvdata->base + TMC_RWP); Since 'write_ptr' is only used in the below 'if' branch, I would suggest to move this statement into that. Regards, Chunyan > + > + /* > + * Get a hold of the status register and see if a wrap around > + * has occurred. If so adjust things accordingly. > + */ > + status = readl_relaxed(drvdata->base + TMC_STS); > + if (status & TMC_STS_FULL) > + /* Tell the HW the reading start point */ > + writel_relaxed(write_ptr, drvdata->base + TMC_RRP); > + else > + /* > + * In case this is not first time to read ETB RAM, > + * always write 0 for reading pointer. > + */ > + writel_relaxed(0x0, drvdata->base + TMC_RRP); > + > bufp = drvdata->buf; > drvdata->len = 0; > while (1) { > -- > 2.7.4 >