]> git.baikalelectronics.ru Git - kernel.git/commit
pxa3xx: fix ns2cycle equation
authorAxel Lin <axel.lin@gmail.com>
Mon, 16 Aug 2010 08:09:09 +0000 (16:09 +0800)
committerDavid Woodhouse <David.Woodhouse@intel.com>
Wed, 18 Aug 2010 12:32:47 +0000 (13:32 +0100)
commit494b8078631cb2f98564c077a0c6263f051f1b83
tree066af0c86ff07111f5a569aae432ad657cf4d844
parentd1a5ef25f4f4034bef7991998f8f95568eb6224a
pxa3xx: fix ns2cycle equation

Test on a PXA310 platform with Samsung K9F2G08X0B NAND flash,
with tCH=5 and clk is 156MHz, ns2cycle(5, 156000000) returns -1.

ns2cycle returns negtive value will break NDTR0_tXX macros.

After checking the commit log, I found the problem is introduced by
commit 16763b6eee717797e176da2bae87aa7927076e95
"[MTD] [NAND] pxa3xx: convert from ns to clock ticks more accurately"

To get num of clock cycles, we use below equation:
num of clock cycles = time (ns) / one clock cycle (ns) + 1
We need to add 1 cycle here because integer division will truncate the result.
It is possible the developers set the Min values in SPEC for timing settings.
Thus the truncate may cause problem, and it is safe to add an extra cycle here.

The various fields in NDTR{01} are in units of clock ticks minus one,
thus we should subtract 1 cycle then.

Thus the correct equation should be:
num of clock cycles = time (ns) / one clock cycle (ns) + 1 - 1
                    = time (ns) / one clock cycle (ns)

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Lei Wen <leiwen@marvell.com>
Acked-by: Eric Miao <eric.y.miao@gmail.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Cc: stable@kernel.org
drivers/mtd/nand/pxa3xx_nand.c