diff options
-rw-r--r-- | drivers/mtd/devices/block2mtd.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/drivers/mtd/devices/block2mtd.c b/drivers/mtd/devices/block2mtd.c index 4160b8334c53..f54e4bf9b968 100644 --- a/drivers/mtd/devices/block2mtd.c +++ b/drivers/mtd/devices/block2mtd.c | |||
@@ -4,7 +4,7 @@ | |||
4 | * block2mtd.c - create an mtd from a block device | 4 | * block2mtd.c - create an mtd from a block device |
5 | * | 5 | * |
6 | * Copyright (C) 2001,2002 Simon Evans <spse@secret.org.uk> | 6 | * Copyright (C) 2001,2002 Simon Evans <spse@secret.org.uk> |
7 | * Copyright (C) 2004,2005 Jörn Engel <joern@wh.fh-wedel.de> | 7 | * Copyright (C) 2004-2006 Jörn Engel <joern@wh.fh-wedel.de> |
8 | * | 8 | * |
9 | * Licence: GPL | 9 | * Licence: GPL |
10 | */ | 10 | */ |
@@ -351,6 +351,12 @@ devinit_err: | |||
351 | } | 351 | } |
352 | 352 | ||
353 | 353 | ||
354 | /* This function works similar to reguler strtoul. In addition, it | ||
355 | * allows some suffixes for a more human-readable number format: | ||
356 | * ki, Ki, kiB, KiB - multiply result with 1024 | ||
357 | * Mi, MiB - multiply result with 1024^2 | ||
358 | * Gi, GiB - multiply result with 1024^3 | ||
359 | */ | ||
354 | static int ustrtoul(const char *cp, char **endp, unsigned int base) | 360 | static int ustrtoul(const char *cp, char **endp, unsigned int base) |
355 | { | 361 | { |
356 | unsigned long result = simple_strtoul(cp, endp, base); | 362 | unsigned long result = simple_strtoul(cp, endp, base); |
@@ -359,11 +365,16 @@ static int ustrtoul(const char *cp, char **endp, unsigned int base) | |||
359 | result *= 1024; | 365 | result *= 1024; |
360 | case 'M': | 366 | case 'M': |
361 | result *= 1024; | 367 | result *= 1024; |
368 | case 'K': | ||
362 | case 'k': | 369 | case 'k': |
363 | result *= 1024; | 370 | result *= 1024; |
364 | /* By dwmw2 editorial decree, "ki", "Mi" or "Gi" are to be used. */ | 371 | /* By dwmw2 editorial decree, "ki", "Mi" or "Gi" are to be used. */ |
365 | if ((*endp)[1] == 'i') | 372 | if ((*endp)[1] == 'i') { |
366 | (*endp) += 2; | 373 | if ((*endp)[2] == 'B') |
374 | (*endp) += 3; | ||
375 | else | ||
376 | (*endp) += 2; | ||
377 | } | ||
367 | } | 378 | } |
368 | return result; | 379 | return result; |
369 | } | 380 | } |