tizen 2.4 release
[profile/mobile/platform/kernel/u-boot-tm1.git] / drivers / mtd / nand / sc8830_nand.h
1 #ifndef _SHARK_NAND_H_\r
2 #define _SHARK_NAND_H_\r
3 #include <mach/hardware.h>\r
4 \r
5 #define NFC_REG_BASE                (SPRD_NFC_BASE)\r
6 #define NFC_START_REG               (NFC_REG_BASE)\r
7 #define NFC_CFG0_REG                (NFC_REG_BASE + 0x04)\r
8 #define NFC_CFG1_REG                (NFC_REG_BASE + 0x08)\r
9 #define NFC_CFG2_REG                (NFC_REG_BASE + 0x0C)\r
10 #define NFC_INT_REG                 (NFC_REG_BASE + 0x10)\r
11 #define NFC_TIMING_REG              (NFC_REG_BASE + 0x14)\r
12 #define NFC_TIMEOUT_REG             (NFC_REG_BASE + 0x18)\r
13 #define NFC_MAIN_ADDR_REG           (NFC_REG_BASE + 0x20)\r
14 #define NFC_SPAR_ADDR_REG           (NFC_REG_BASE + 0x24)\r
15 #define NFC_STAT_ADDR_REG           (NFC_REG_BASE + 0x28)\r
16 #define NFC_STAT_STSMCH_REG         (NFC_REG_BASE + 0x30)\r
17 #define NFC_STATUS0_REG             (NFC_REG_BASE + 0x40)\r
18 #define NFC_STATUS1_REG             (NFC_REG_BASE + 0x44)\r
19 #define NFC_STATUS2_REG             (NFC_REG_BASE + 0x48)\r
20 #define NFC_STATUS3_REG             (NFC_REG_BASE + 0x4C)\r
21 #define NFC_INST0_REG               (NFC_REG_BASE + 0x60)\r
22 #define NFC_INST1_REG               (NFC_REG_BASE + 0x64)\r
23 #define NFC_INST2_REG               (NFC_REG_BASE + 0x68)\r
24 #define NFC_INST3_REG               (NFC_REG_BASE + 0x6C)\r
25 #define NFC_INST4_REG               (NFC_REG_BASE + 0x70)\r
26 #define NFC_INST5_REG               (NFC_REG_BASE + 0x74)\r
27 #define NFC_INST6_REG               (NFC_REG_BASE + 0x78)\r
28 #define NFC_INST7_REG               (NFC_REG_BASE + 0x7C)\r
29 #define NFC_INST8_REG               (NFC_REG_BASE + 0x80)\r
30 #define NFC_INST9_REG               (NFC_REG_BASE + 0x84)\r
31 #define NFC_INST10_REG              (NFC_REG_BASE + 0x88)\r
32 #define NFC_INST11_REG              (NFC_REG_BASE + 0x8C)\r
33 \r
34 //NFC_START bit define\r
35 #define NFC_VALID                   (1 << 31)\r
36 #define NFC_RBN                     (1 << 30)\r
37 #define NFC_RBN_CNT_OFFSET          (28)\r
38 #define NFC_RBN_CNT_MASK            (0x3 << NFC_RBN_CNT_OFFSET)\r
39 #define NFC_CMD_CLR                 (1 << 1)\r
40 #define NFC_START                   (1 << 0)\r
41 \r
42 //NFC_CFG0 bit define\r
43 #define MAST_ENDIAN_OFFSET          (30)\r
44 #define MAST_ENDIAN_MASK            (0x3 << MAST_ENDIAN_OFFSET)\r
45 #define CS_SEL                      (1 << 0)\r
46 #define SECTOR_NUM_OFFSET           (24)\r
47 #define SECTOR_NUM_MASK             (0x1f << SECTOR_NUM_OFFSET)\r
48 #define REPEAT_NUM_OFFSET           (16)\r
49 #define REPEAT_NUM_MASK             (0xff << REPEAT_NUM_OFFSET)\r
50 #define NFC_WPN                     (1 << 15)\r
51 #define BUS_WIDTH                   (1 << 14)\r
52 #define SPAR_DLEN_CFG               (1 << 13)\r
53 #define SECNUM_IN_INST              (1 << 12)\r
54 #define DETECT_ALL_FF               (1 << 11)\r
55 #define NFC_RW                      (1 << 8)\r
56 #define MAIN_SPAR_APT               (1 << 6)\r
57 #define SPAR_USE                    (1 << 5)\r
58 #define MAIN_USE                    (1 << 4)\r
59 #define ECC_EN                      (1 << 2)\r
60 #define NFC_MODE_MASK               (0x3)\r
61 #define NFC_AUTO_MODE               (0x0)\r
62 #define NFC_ONLY_MST_MODE           (0x1)\r
63 #define NFC_ONLY_NAND_MODE          (0x2)\r
64 #define NFC_ONLY_ECC_MODE           (0x3)\r
65 //NFC_CFG1 bit define\r
66 #define SPAR_INFO_SIZE_OFFSET       (24)\r
67 #define SPAR_INFO_SIZE_MASK         (0x3f << SPAR_INFO_SIZE_OFFSET)\r
68 #define SPAR_SIZE_OFFSET            (16)\r
69 #define SPAR_SIZE_MASK              (0x7F << SPAR_SIZE_OFFSET)\r
70 #define MAIN_SIZE_MASK              (0x3ff)\r
71 //NFC_CFG2 bit define\r
72 #define SPAR_SECTOR_NUM_OFFSET      (24)\r
73 #define SPAR_SECTOR_NUM_MASK        (0x1f << SPAR_SECTOR_NUM_OFFSET)\r
74 #define SPAR_INFO_POS_OFFSET        (16)\r
75 #define SPAR_INFO_POS_MASK          (0x7f << SPAR_INFO_POS_OFFSET)\r
76 #define ECC_MODE_OFFSET             (13)\r
77 #define ECC_MODE_MASK               (0x7 << ECC_MODE_OFFSET)\r
78 #define NFC_ECC_MODE_1BIT           (0 << ECC_MODE_OFFSET)\r
79 #define NFC_ECC_MODE_2BIT           (1 << ECC_MODE_OFFSET)\r
80 #define NFC_ECC_MODE_4BIT           (2 << ECC_MODE_OFFSET)\r
81 #define NFC_ECC_MODE_8BIT           (3 << ECC_MODE_OFFSET)\r
82 #define NFC_ECC_MODE_12BIT          (4 << ECC_MODE_OFFSET)\r
83 #define NFC_ECC_MODE_16BIT          (5 << ECC_MODE_OFFSET)\r
84 #define NFC_ECC_MODE_24BIT          (6 << ECC_MODE_OFFSET)\r
85 \r
86 #define ECC_STR_SEC_IND_OFFSET      (8)\r
87 #define ECC_STR_SEC_IND_MASK        (0x1f << ECC_STR_SEC_IND_OFFSET)\r
88 #define ECC_POSITON_MASK            (0x7f)\r
89 //NFC_INT bit define\r
90 #define INT_STSMCH_RAW              (1 << 27)\r
91 #define INT_WP_RAW                  (1 << 26)\r
92 #define INT_TO_RAW                  (1 << 25)\r
93 #define INT_DONE_RAW                (1 << 24)\r
94 #define INT_STSMCH_STS              (1 << 19)\r
95 #define INT_WP_STS                  (1 << 18)\r
96 #define INT_TO_STS                  (1 << 17)\r
97 #define INT_DONE_STS                (1 << 16)\r
98 \r
99 #define INT_STSMCH_CLR              (1 << 11)\r
100 #define INT_WP_CLR                  (1 << 10)\r
101 #define INT_TO_CLR                  (1 << 9)\r
102 #define INT_DONE_CLR                (1 << 8)\r
103 \r
104 #define INT_STSMCH_EN               (1 << 3)\r
105 #define INT_WP_EN                   (1 << 2)\r
106 #define INT_TO_EN                   (1 << 1)\r
107 #define INT_DONE_EN                 (1 << 0)\r
108 \r
109 \r
110 //NFC_TIMING\r
111 #define NFC_ACS_OFFSET              (27)\r
112 #define NFC_ACS_MASK                (0x1f << NFC_ACS_OFFSET)\r
113 #define NFC_ACE_OFFSET              (22)\r
114 #define NFC_ACE_MASK                (0x1f << NFC_ACE_OFFSET)\r
115 #define NFC_RWS_OFFSET              (16)\r
116 #define NFC_RWS_MASK                (0x3f << NFC_RWS_OFFSET)\r
117 #define NFC_RWE_OFFSET              (11)\r
118 #define NFC_RWE_MASK                (0x3f << NFC_RWS_OFFSET)\r
119 #define NFC_RWH_OFFSET              (6)\r
120 #define NFC_RWH_MASK                (0x1f << NFC_RWH_OFFSET)\r
121 #define NFC_RWL_MASK                (0x3f)\r
122 //NFC_TIMEOUT bit define\r
123 #define REPT_CLR_EN                 (1 << 31)\r
124 #define TIMETOUT_MASK               (0x7fffffff)\r
125 \r
126 //NFC_STAT_STSMCH bit define\r
127 #define NFC_STSMCH_SEL              (1 << 17)\r
128 #define NFC_STSMCH_STOP_EN          (1 << 16)\r
129 #define NFC_STSMCH_MASK_OFFSET      (8)\r
130 #define NFC_STSMCH_VALUE_MASK       (0xff)\r
131 #define ERR_ERR_NUM0_MASK           (0x1f)\r
132 //NFC_STATUS0_REG bit define\r
133 #define ECC_ERR_NUM_MASK            (0x1f)\r
134 #define ECC_ERR_STS_SHIFT           (5)\r
135 #define ECC_ERR_STS_MASK            (0x3 << ECC_ERR_STS_SHIFT)\r
136 #define ECC_ALL_FF                  (1 << 7)\r
137 \r
138 #define NFC_MC_ICMD_ID              (0xCD)\r
139 #define NFC_MC_ADDR_ID              (0x0A)\r
140 #define NFC_MC_WRB0_ID              (0xB0)\r
141 #define NFC_MC_WRB1_ID              (0xB1)\r
142 #define NFC_MC_MRDT_ID              (0xD0)\r
143 #define NFC_MC_MWDT_ID              (0xD1)\r
144 #define NFC_MC_SRDT_ID              (0xD2)\r
145 #define NFC_MC_SWDT_ID              (0xD3)\r
146 #define NFC_MC_IDST_ID              (0xDD)\r
147 #define NFC_MC_CSEN_ID              (0xCE)\r
148 #define NFC_MC_NOP_ID               (0xF0)\r
149 #define NFC_MC_DONE_ID              (0xFF)\r
150 #define NFC_MAX_CHIP                1\r
151 #define NFC_TIMEOUT_VAL             0x10000000\r
152 \r
153 #define NAND_MC_CMD(x)              (u16)(((x & 0xff) << 8) | NFC_MC_ICMD_ID)\r
154 #define NAND_MC_ADDR(x)             (u16)(((x & 0xff) << 8) | (NFC_MC_ADDR_ID << 4))\r
155 #define NAND_MC_WRB0(x)             (u16)(NFC_MC_WRB0_ID)\r
156 #define NAND_MC_MRDT                (u16)(NFC_MC_MRDT_ID)\r
157 #define NAND_MC_MWDT                (u16)(NFC_MC_MWDT_ID)\r
158 #define NAND_MC_SRDT                (u16)(NFC_MC_SRDT_ID)\r
159 #define NAND_MC_SWDT                (u16)(NFC_MC_SWDT_ID)\r
160 #define NAND_MC_IDST(x)             (u16)((NFC_MC_IDST_ID) | ((x -1) << 8))\r
161 #define NAND_MC_NOP(x)                  (u16)(((x & 0xff) << 8) | NFC_MC_NOP_ID)\r
162 \r
163 #define NFC_DEFAULT_TIMING          ((7)  | (6 << NFC_RWH_OFFSET) | (7 << NFC_RWE_OFFSET) | (7 << NFC_RWS_OFFSET) | (7 << NFC_ACE_OFFSET) | (7 << NFC_ACS_OFFSET))\r
164  /* TODO : use global interface */\r
165 #define AHB_SOFT_NFC_RST            (1 << 5)\r
166 \r
167 #endif\r