Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754378AbdDKNrD (ORCPT ); Tue, 11 Apr 2017 09:47:03 -0400 Received: from mail-pg0-f43.google.com ([74.125.83.43]:33263 "EHLO mail-pg0-f43.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753008AbdDKNq6 (ORCPT ); Tue, 11 Apr 2017 09:46:58 -0400 Date: Tue, 11 Apr 2017 21:46:45 +0800 From: Leo Yan To: Chunyan Zhang Cc: Mathieu Poirier , "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" , Mike Leach , Suzuki K Poulose Subject: Re: [PATCH RFC 2/4] coresight: tmc: set read pointer before dump RAM Message-ID: <20170411134645.GB8996@leoy-linaro> References: <1491901829-18477-1-git-send-email-leo.yan@linaro.org> <1491901829-18477-3-git-send-email-leo.yan@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2269 Lines: 57 On Tue, Apr 11, 2017 at 07:25:30PM +0800, Chunyan Zhang wrote: > 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. Thanks, Chunyan. Agree, will fix. > > + > > + /* > > + * 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 > >