Merge branches 'pm-epoll', 'pnp' and 'powercap'
[cascardo/linux.git] / include / linux / platform_data / mtd-nand-omap2.h
1 /*
2  * arch/arm/plat-omap/include/mach/nand.h
3  *
4  * Copyright (C) 2006 Micron Technology Inc.
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License version 2 as
8  * published by the Free Software Foundation.
9  */
10
11 #ifndef _MTD_NAND_OMAP2_H
12 #define _MTD_NAND_OMAP2_H
13
14 #include <linux/mtd/partitions.h>
15
16 #define GPMC_BCH_NUM_REMAINDER  8
17
18 enum nand_io {
19         NAND_OMAP_PREFETCH_POLLED = 0,  /* prefetch polled mode, default */
20         NAND_OMAP_POLLED,               /* polled mode, without prefetch */
21         NAND_OMAP_PREFETCH_DMA,         /* prefetch enabled sDMA mode */
22         NAND_OMAP_PREFETCH_IRQ          /* prefetch enabled irq mode */
23 };
24
25 enum omap_ecc {
26         /* 1-bit  ECC calculation by GPMC, Error detection by Software */
27         OMAP_ECC_HAM1_CODE_HW = 0,
28         /* 4-bit  ECC calculation by GPMC, Error detection by Software */
29         OMAP_ECC_BCH4_CODE_HW_DETECTION_SW,
30         /* 4-bit  ECC calculation by GPMC, Error detection by ELM */
31         OMAP_ECC_BCH4_CODE_HW,
32         /* 8-bit  ECC calculation by GPMC, Error detection by Software */
33         OMAP_ECC_BCH8_CODE_HW_DETECTION_SW,
34         /* 8-bit  ECC calculation by GPMC, Error detection by ELM */
35         OMAP_ECC_BCH8_CODE_HW,
36 };
37
38 struct gpmc_nand_regs {
39         void __iomem    *gpmc_status;
40         void __iomem    *gpmc_nand_command;
41         void __iomem    *gpmc_nand_address;
42         void __iomem    *gpmc_nand_data;
43         void __iomem    *gpmc_prefetch_config1;
44         void __iomem    *gpmc_prefetch_config2;
45         void __iomem    *gpmc_prefetch_control;
46         void __iomem    *gpmc_prefetch_status;
47         void __iomem    *gpmc_ecc_config;
48         void __iomem    *gpmc_ecc_control;
49         void __iomem    *gpmc_ecc_size_config;
50         void __iomem    *gpmc_ecc1_result;
51         void __iomem    *gpmc_bch_result0[GPMC_BCH_NUM_REMAINDER];
52         void __iomem    *gpmc_bch_result1[GPMC_BCH_NUM_REMAINDER];
53         void __iomem    *gpmc_bch_result2[GPMC_BCH_NUM_REMAINDER];
54         void __iomem    *gpmc_bch_result3[GPMC_BCH_NUM_REMAINDER];
55 };
56
57 struct omap_nand_platform_data {
58         int                     cs;
59         struct mtd_partition    *parts;
60         int                     nr_parts;
61         bool                    dev_ready;
62         enum nand_io            xfer_type;
63         int                     devsize;
64         enum omap_ecc           ecc_opt;
65         struct gpmc_nand_regs   reg;
66
67         /* for passing the partitions */
68         struct device_node      *of_node;
69         struct device_node      *elm_of_node;
70 };
71 #endif