linux-uconsole/drivers/mtd
Axel Lin dbd7e1896a pxa3xx: fix ns2cycle equation
commit 93b352fce6 upstream.

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 5b0d4d7c8a
"[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>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2010-08-26 16:41:42 -07:00
..
chips mtd: jedec_probe: add PSD4256G6V id 2009-09-23 00:07:00 -07:00
devices headers: remove sched.h from interrupt.h 2009-10-11 11:20:58 -07:00
lpddr [MTD] [LPDDR] qinfo_probe depends on lpddr 2009-01-11 10:42:32 +00:00
maps ARM: Fix warning in sa1100-flash.c 2009-11-16 16:13:35 +00:00
nand pxa3xx: fix ns2cycle equation 2010-08-26 16:41:42 -07:00
onenand mtd: onenand: make onenand/generic.c more generic 2009-09-19 11:07:50 -07:00
tests mtd: tests: fix read buffer overflows 2009-09-04 09:40:17 +01:00
ubi UBI: fix volume creation input checking 2010-02-09 04:50:45 -08:00
afs.c mtd: afs: fix build warning 2009-09-04 09:38:14 +01:00
ar7part.c [MTD] mtdpart: Make all partition parsers return allocated array 2009-03-20 18:55:17 +00:00
cmdlinepart.c mtd: cmdlineparts: Use 64-bit format when printing a debug message. 2009-06-25 08:18:12 +01:00
ftl.c trivial: mtd: add __init/__exit macros to init/exitfunctions 2009-09-21 15:14:53 +02:00
inftlcore.c mtd: inftl: fix fold chain block number 2009-09-19 14:17:35 -07:00
inftlmount.c [MTD] we don't need no misc devices 2009-03-20 13:16:26 +00:00
internal.h NOMMU: Present backing device capabilities for MTD chardevs 2009-03-24 09:00:19 +00:00
Kconfig Merge branch 'for-linus' of git://git.monstr.eu/linux-2.6-microblaze 2009-09-24 09:01:44 -07:00
Makefile NOMMU: Present backing device capabilities for MTD chardevs 2009-03-24 09:00:19 +00:00
mtd_blkdevs.c block: use normal I/O path for discard requests 2009-10-01 21:19:30 +02:00
mtdbdi.c NOMMU: Present backing device capabilities for MTD chardevs 2009-03-24 09:00:19 +00:00
mtdblock.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2009-09-20 05:55:36 -07:00
mtdblock_ro.c
mtdchar.c mtd: Fix pointer handling in compat ioctls to use compat_ptr() 2009-05-29 16:09:08 +01:00
mtdconcat.c mtd: mtdconcat: prevent a read from eraseregions[-1] 2009-09-19 11:18:46 -07:00
mtdcore.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2009-09-20 05:55:36 -07:00
mtdcore.h
mtdoops.c [MTD] mtdoops: fix a bit of spin lock usage 2009-03-20 18:39:25 +00:00
mtdpart.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2009-09-20 05:55:36 -07:00
mtdsuper.c Convert obvious places to deactivate_locked_super() 2009-05-09 10:49:40 -04:00
nftlcore.c mtd: nftl: fix offset alignments 2009-09-03 14:59:16 +01:00
nftlmount.c [MTD] update internal API to support 64-bit device size 2008-12-10 13:37:21 +00:00
ofpart.c mtd: ofpart: Check availability of reg property instead of name property 2009-09-19 14:14:48 -07:00
redboot.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2008-07-11 14:36:25 +01:00
rfd_ftl.c [MTD] remove private wrapper of endian helpers in rfd_ftl.c 2008-12-10 15:39:09 +00:00
ssfdc.c [MTD] update internal API to support 64-bit device size 2008-12-10 13:37:21 +00:00