Commit | Line | Data |
---|---|---|
91e16503 | 1 | /* |
f056076e BD |
2 | * Copyright (c) 2004 Simtec Electronics |
3 | * Ben Dooks <ben@simtec.co.uk> | |
1da177e4 | 4 | * |
947af294 | 5 | * S3C2410 - NAND device controller platform_device info |
1da177e4 LT |
6 | * |
7 | * This program is free software; you can redistribute it and/or modify | |
8 | * it under the terms of the GNU General Public License version 2 as | |
9 | * published by the Free Software Foundation. | |
1da177e4 LT |
10 | */ |
11 | ||
91e16503 SK |
12 | #ifndef __MTD_NAND_S3C2410_H |
13 | #define __MTD_NAND_S3C2410_H | |
14 | ||
a4536b19 MP |
15 | /** |
16 | * struct s3c2410_nand_set - define a set of one or more nand chips | |
17 | * @disable_ecc: Entirely disable ECC - Dangerous | |
9db41f9e MP |
18 | * @flash_bbt: Openmoko u-boot can create a Bad Block Table |
19 | * Setting this flag will allow the kernel to | |
20 | * look for it at boot time and also skip the NAND | |
21 | * scan. | |
74218fed | 22 | * @options: Default value to set into 'struct nand_chip' options. |
a4536b19 MP |
23 | * @nr_chips: Number of chips in this set |
24 | * @nr_partitions: Number of partitions pointed to by @partitions | |
25 | * @name: Name of set (optional) | |
26 | * @nr_map: Map for low-layer logical to physical chip numbers (option) | |
27 | * @partitions: The mtd partition list | |
1da177e4 | 28 | * |
a4536b19 MP |
29 | * define a set of one or more nand chips registered with an unique mtd. Also |
30 | * allows to pass flag to the underlying NAND layer. 'disable_ecc' will trigger | |
31 | * a warning at boot time. | |
32 | */ | |
1da177e4 | 33 | struct s3c2410_nand_set { |
fb6ea325 | 34 | unsigned int disable_ecc:1; |
9db41f9e | 35 | unsigned int flash_bbt:1; |
37e5ffa3 | 36 | |
74218fed | 37 | unsigned int options; |
1da177e4 LT |
38 | int nr_chips; |
39 | int nr_partitions; | |
40 | char *name; | |
41 | int *nr_map; | |
42 | struct mtd_partition *partitions; | |
1c21ab67 | 43 | struct nand_ecclayout *ecc_layout; |
1da177e4 LT |
44 | }; |
45 | ||
46 | struct s3c2410_platform_nand { | |
47 | /* timing information for controller, all times in nanoseconds */ | |
48 | ||
49 | int tacls; /* time for active CLE/ALE to nWE/nOE */ | |
50 | int twrph0; /* active time for nWE/nOE */ | |
51 | int twrph1; /* time for release CLE/ALE from nWE/nOE inactive */ | |
52 | ||
fb6ea325 | 53 | unsigned int ignore_unset_ecc:1; |
c45c6c68 | 54 | |
1da177e4 LT |
55 | int nr_sets; |
56 | struct s3c2410_nand_set *sets; | |
57 | ||
58 | void (*select_chip)(struct s3c2410_nand_set *, | |
59 | int chip); | |
60 | }; | |
61 | ||
2a3a1804 BD |
62 | /** |
63 | * s3c_nand_set_platdata() - register NAND platform data. | |
64 | * @nand: The NAND platform data to register with s3c_device_nand. | |
65 | * | |
66 | * This function copies the given NAND platform data, @nand and registers | |
67 | * it with the s3c_device_nand. This allows @nand to be __initdata. | |
68 | */ | |
69 | extern void s3c_nand_set_platdata(struct s3c2410_platform_nand *nand); | |
91e16503 SK |
70 | |
71 | #endif /*__MTD_NAND_S3C2410_H */ |