Commit 77b93e5e9b28328f76556e0c0b94889df47077d7
Committed by
Tom Rini
1 parent
d9098ee55f
Exists in
v2017.01-smarct4x
and in
25 other branches
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