From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tony Lindgren Subject: Re: [PATCH 1/5] ARM: OMAP2+: gpmc: Print error message in set_gpmc_timing_reg() Date: Tue, 28 Oct 2014 15:23:50 -0700 Message-ID: <20141028222349.GV2542@atomide.com> References: <1413895309-9152-1-git-send-email-rogerq@ti.com> <1413895309-9152-2-git-send-email-rogerq@ti.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Received: from mho-03-ewr.mailhop.org ([204.13.248.66]:55967 "EHLO mho-01-ewr.mailhop.org" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750855AbaJ1WZI (ORCPT ); Tue, 28 Oct 2014 18:25:08 -0400 Content-Disposition: inline In-Reply-To: <1413895309-9152-2-git-send-email-rogerq@ti.com> Sender: linux-omap-owner@vger.kernel.org List-Id: linux-omap@vger.kernel.org To: Roger Quadros Cc: pekon@pek-sem.com, javier@dowhile0.org, linux-omap@vger.kernel.org, Sekhar Nori * Roger Quadros [141021 05:43]: > Simplify set_gpmc_timing_reg() and always print error message > if the requested timing cannot be achieved due to a too fast > GPMC functional clock, irrespective if whether DEBUG is defined > or not. This should help us debug timing configuration issues, > which were otherwise simply not being displayed in the kernel log. I think some newer versions of GPMC have a divider in the GPMC_CONFIG regs somewhere but we're not currently using it. Probably does not affect this patch, just FYI. Regards, Tony > Signed-off-by: Roger Quadros > Signed-off-by: Sekhar Nori > --- > arch/arm/mach-omap2/gpmc.c | 23 ++++++----------------- > 1 file changed, 6 insertions(+), 17 deletions(-) > > diff --git a/arch/arm/mach-omap2/gpmc.c b/arch/arm/mach-omap2/gpmc.c > index 5fa3755..45f680f 100644 > --- a/arch/arm/mach-omap2/gpmc.c > +++ b/arch/arm/mach-omap2/gpmc.c > @@ -283,13 +283,8 @@ static void gpmc_cs_bool_timings(int cs, const struct gpmc_bool_timings *p) > p->cycle2cyclediffcsen); > } > > -#ifdef DEBUG > static int set_gpmc_timing_reg(int cs, int reg, int st_bit, int end_bit, > int time, const char *name) > -#else > -static int set_gpmc_timing_reg(int cs, int reg, int st_bit, int end_bit, > - int time) > -#endif > { > u32 l; > int ticks, mask, nr_bits; > @@ -299,15 +294,15 @@ static int set_gpmc_timing_reg(int cs, int reg, int st_bit, int end_bit, > else > ticks = gpmc_ns_to_ticks(time); > nr_bits = end_bit - st_bit + 1; > - if (ticks >= 1 << nr_bits) { > -#ifdef DEBUG > - printk(KERN_INFO "GPMC CS%d: %-10s* %3d ns, %3d ticks >= %d\n", > - cs, name, time, ticks, 1 << nr_bits); > -#endif > + mask = (1 << nr_bits) - 1; > + > + if (ticks > mask) { > + pr_err("%s: GPMC error! CS%d: %s: %d ns, %d ticks > %d\n", > + __func__, cs, name, time, ticks, mask); > + > return -1; > } > > - mask = (1 << nr_bits) - 1; > l = gpmc_cs_read_reg(cs, reg); > #ifdef DEBUG > printk(KERN_INFO > @@ -322,16 +317,10 @@ static int set_gpmc_timing_reg(int cs, int reg, int st_bit, int end_bit, > return 0; > } > > -#ifdef DEBUG > #define GPMC_SET_ONE(reg, st, end, field) \ > if (set_gpmc_timing_reg(cs, (reg), (st), (end), \ > t->field, #field) < 0) \ > return -1 > -#else > -#define GPMC_SET_ONE(reg, st, end, field) \ > - if (set_gpmc_timing_reg(cs, (reg), (st), (end), t->field) < 0) \ > - return -1 > -#endif > > int gpmc_calc_divider(unsigned int sync_clk) > { > -- > 1.8.3.2 >