Commit 77b93e5e9b28328f76556e0c0b94889df47077d7

Authored by Ladislav Michl
Committed by Tom Rini
1 parent d9098ee55f

mtd: OneNAND: allow board init function fail

Signed-off-by: Ladislav Michl <ladis@linux-mips.org>

Showing 6 changed files with 28 additions and 20 deletions Side-by-side Diff

board/micronas/vct/ebi_onenand.c
... ... @@ -169,7 +169,7 @@
169 169 return 0;
170 170 }
171 171  
172   -void onenand_board_init(struct mtd_info *mtd)
  172 +int onenand_board_init(struct mtd_info *mtd)
173 173 {
174 174 struct onenand_chip *chip = mtd->priv;
175 175  
... ... @@ -181,5 +181,7 @@
181 181  
182 182 chip->read_bufferram = ebi_read_bufferram;
183 183 chip->write_bufferram = ebi_write_bufferram;
  184 +
  185 + return 0;
184 186 }
board/samsung/goni/onenand.c
... ... @@ -11,12 +11,14 @@
11 11 #include <linux/mtd/samsung_onenand.h>
12 12 #include <onenand_uboot.h>
13 13  
14   -void onenand_board_init(struct mtd_info *mtd)
  14 +int onenand_board_init(struct mtd_info *mtd)
15 15 {
16 16 struct onenand_chip *this = mtd->priv;
17 17  
18 18 this->base = (void *)CONFIG_SYS_ONENAND_BASE;
19 19 this->options |= ONENAND_RUNTIME_BADBLOCK_CHECK;
20 20 this->chip_probe = s5pc110_chip_probe;
  21 +
  22 + return 0;
21 23 }
board/samsung/smdkc100/onenand.c
... ... @@ -16,7 +16,7 @@
16 16 #include <asm/io.h>
17 17 #include <asm/arch/clock.h>
18 18  
19   -void onenand_board_init(struct mtd_info *mtd)
  19 +int onenand_board_init(struct mtd_info *mtd)
20 20 {
21 21 struct onenand_chip *this = mtd->priv;
22 22 struct s5pc100_clock *clk =
... ... @@ -65,5 +65,7 @@
65 65 writel(value, &onenand->int_err_mask);
66 66  
67 67 s3c_onenand_init(mtd);
  68 +
  69 + return 0;
68 70 }
board/samsung/universal_c210/onenand.c
... ... @@ -10,12 +10,14 @@
10 10 #include <linux/mtd/onenand.h>
11 11 #include <linux/mtd/samsung_onenand.h>
12 12  
13   -void onenand_board_init(struct mtd_info *mtd)
  13 +int onenand_board_init(struct mtd_info *mtd)
14 14 {
15 15 struct onenand_chip *this = mtd->priv;
16 16  
17 17 this->base = (void *)CONFIG_SYS_ONENAND_BASE;
18 18 this->options |= ONENAND_RUNTIME_BADBLOCK_CHECK;
19 19 this->chip_probe = s5pc210_chip_probe;
  20 +
  21 + return 0;
20 22 }
drivers/mtd/onenand/onenand_uboot.c
... ... @@ -24,34 +24,34 @@
24 24  
25 25 void onenand_init(void)
26 26 {
  27 + int err = 0;
27 28 memset(&onenand_mtd, 0, sizeof(struct mtd_info));
28 29 memset(&onenand_chip, 0, sizeof(struct onenand_chip));
29 30  
30 31 onenand_mtd.priv = &onenand_chip;
31 32  
32 33 #ifdef CONFIG_USE_ONENAND_BOARD_INIT
33   - /*
34   - * It's used for some board init required
35   - */
36   - onenand_board_init(&onenand_mtd);
  34 + /* It's used for some board init required */
  35 + err = onenand_board_init(&onenand_mtd);
37 36 #else
38 37 onenand_chip.base = (void *) CONFIG_SYS_ONENAND_BASE;
39 38 #endif
40 39  
41   - onenand_scan(&onenand_mtd, 1);
  40 + if (!err && !(onenand_scan(&onenand_mtd, 1))) {
42 41  
43   - if (onenand_chip.device_id & DEVICE_IS_FLEXONENAND)
44   - puts("Flex-");
45   - puts("OneNAND: ");
46   - print_size(onenand_chip.chipsize, "\n");
  42 + if (onenand_chip.device_id & DEVICE_IS_FLEXONENAND)
  43 + puts("Flex-");
  44 + puts("OneNAND: ");
47 45  
48 46 #ifdef CONFIG_MTD_DEVICE
49   - /*
50   - * Add MTD device so that we can reference it later
51   - * via the mtdcore infrastructure (e.g. ubi).
52   - */
53   - onenand_mtd.name = dev_name;
54   - add_mtd_device(&onenand_mtd);
  47 + /*
  48 + * Add MTD device so that we can reference it later
  49 + * via the mtdcore infrastructure (e.g. ubi).
  50 + */
  51 + onenand_mtd.name = dev_name;
  52 + add_mtd_device(&onenand_mtd);
55 53 #endif
  54 + }
  55 + print_size(onenand_chip.chipsize, "\n");
56 56 }
include/onenand_uboot.h
... ... @@ -26,7 +26,7 @@
26 26 extern struct onenand_chip onenand_chip;
27 27  
28 28 /* board */
29   -extern void onenand_board_init(struct mtd_info *);
  29 +extern int onenand_board_init(struct mtd_info *);
30 30  
31 31 /* Functions */
32 32 extern void onenand_init(void);