diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/mtd/nand/s3c2410.c | 18 |
1 files changed, 5 insertions, 13 deletions
diff --git a/drivers/mtd/nand/s3c2410.c b/drivers/mtd/nand/s3c2410.c index e14520091b2..04750ee2d0f 100644 --- a/drivers/mtd/nand/s3c2410.c +++ b/drivers/mtd/nand/s3c2410.c @@ -149,10 +149,6 @@ static int s3c_nand_calc_rate(int wanted, unsigned long clk, int max) { int result; - /* Tacls can be 0ns in some cases */ - if (wanted == 0) - return 0; - result = (wanted * clk) / NS_IN_KHZ; result++; @@ -163,6 +159,9 @@ static int s3c_nand_calc_rate(int wanted, unsigned long clk, int max) return -1; } + if (result < 1) + result = 1; + return result; } @@ -195,7 +194,7 @@ static int s3c2410_nand_setrate(struct s3c2410_nand_info *info) twrph1 = 8; } - if (tacls < 0 || twrph0 < 1 || twrph1 < 1) { + if (tacls < 0 || twrph0 < 0 || twrph1 < 0) { dev_err(info->device, "cannot get suitable timings\n"); return -EINVAL; } @@ -256,18 +255,11 @@ static int s3c2410_nand_inithw(struct s3c2410_nand_info *info) switch (info->cpu_type) { case TYPE_S3C2410: - cfg = S3C2410_NFCONF_EN; - cfg |= S3C2410_NFCONF_TACLS(tacls); - cfg |= S3C2410_NFCONF_TWRPH0(twrph0 - 1); - cfg |= S3C2410_NFCONF_TWRPH1(twrph1 - 1); + default: break; case TYPE_S3C2440: case TYPE_S3C2412: - cfg = S3C2440_NFCONF_TACLS(tacls); - cfg |= S3C2440_NFCONF_TWRPH0(twrph0 - 1); - cfg |= S3C2440_NFCONF_TWRPH1(twrph1 - 1); - /* enable the controller and de-assert nFCE */ writel(S3C2440_NFCONT_ENABLE, info->regs + S3C2440_NFCONT); |