1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
2 | /* |
3 | * Copyright (c) 2004 Simtec Electronics |
4 | * Ben Dooks <ben@simtec.co.uk> |
5 | * |
6 | * S3C2410 - NAND device controller platform_device info |
7 | */ |
8 | |
9 | #ifndef __MTD_NAND_S3C2410_H |
10 | #define __MTD_NAND_S3C2410_H |
11 | |
12 | #include <linux/mtd/rawnand.h> |
13 | |
14 | /** |
15 | * struct s3c2410_nand_set - define a set of one or more nand chips |
16 | * @flash_bbt: Openmoko u-boot can create a Bad Block Table |
17 | * Setting this flag will allow the kernel to |
18 | * look for it at boot time and also skip the NAND |
19 | * scan. |
20 | * @options: Default value to set into 'struct nand_chip' options. |
21 | * @nr_chips: Number of chips in this set |
22 | * @nr_partitions: Number of partitions pointed to by @partitions |
23 | * @name: Name of set (optional) |
24 | * @nr_map: Map for low-layer logical to physical chip numbers (option) |
25 | * @partitions: The mtd partition list |
26 | * |
27 | * define a set of one or more nand chips registered with an unique mtd. Also |
28 | * allows to pass flag to the underlying NAND layer. 'disable_ecc' will trigger |
29 | * a warning at boot time. |
30 | */ |
31 | struct s3c2410_nand_set { |
32 | unsigned int flash_bbt:1; |
33 | |
34 | unsigned int options; |
35 | int nr_chips; |
36 | int nr_partitions; |
37 | char *name; |
38 | int *nr_map; |
39 | struct mtd_partition *partitions; |
40 | struct device_node *of_node; |
41 | }; |
42 | |
43 | struct s3c2410_platform_nand { |
44 | /* timing information for controller, all times in nanoseconds */ |
45 | |
46 | int tacls; /* time for active CLE/ALE to nWE/nOE */ |
47 | int twrph0; /* active time for nWE/nOE */ |
48 | int twrph1; /* time for release CLE/ALE from nWE/nOE inactive */ |
49 | |
50 | unsigned int ignore_unset_ecc:1; |
51 | |
52 | enum nand_ecc_engine_type engine_type; |
53 | |
54 | int nr_sets; |
55 | struct s3c2410_nand_set *sets; |
56 | |
57 | void (*select_chip)(struct s3c2410_nand_set *, |
58 | int chip); |
59 | }; |
60 | |
61 | /** |
62 | * s3c_nand_set_platdata() - register NAND platform data. |
63 | * @nand: The NAND platform data to register with s3c_device_nand. |
64 | * |
65 | * This function copies the given NAND platform data, @nand and registers |
66 | * it with the s3c_device_nand. This allows @nand to be __initdata. |
67 | */ |
68 | extern void s3c_nand_set_platdata(struct s3c2410_platform_nand *nand); |
69 | |
70 | #endif /*__MTD_NAND_S3C2410_H */ |
71 | |