0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #ifndef __ASM_PLAT_MFP_H
0012 #define __ASM_PLAT_MFP_H
0013
0014 #define mfp_to_gpio(m) ((m) % 256)
0015
0016
0017 enum {
0018 MFP_PIN_INVALID = -1,
0019
0020 MFP_PIN_GPIO0 = 0,
0021 MFP_PIN_GPIO1,
0022 MFP_PIN_GPIO2,
0023 MFP_PIN_GPIO3,
0024 MFP_PIN_GPIO4,
0025 MFP_PIN_GPIO5,
0026 MFP_PIN_GPIO6,
0027 MFP_PIN_GPIO7,
0028 MFP_PIN_GPIO8,
0029 MFP_PIN_GPIO9,
0030 MFP_PIN_GPIO10,
0031 MFP_PIN_GPIO11,
0032 MFP_PIN_GPIO12,
0033 MFP_PIN_GPIO13,
0034 MFP_PIN_GPIO14,
0035 MFP_PIN_GPIO15,
0036 MFP_PIN_GPIO16,
0037 MFP_PIN_GPIO17,
0038 MFP_PIN_GPIO18,
0039 MFP_PIN_GPIO19,
0040 MFP_PIN_GPIO20,
0041 MFP_PIN_GPIO21,
0042 MFP_PIN_GPIO22,
0043 MFP_PIN_GPIO23,
0044 MFP_PIN_GPIO24,
0045 MFP_PIN_GPIO25,
0046 MFP_PIN_GPIO26,
0047 MFP_PIN_GPIO27,
0048 MFP_PIN_GPIO28,
0049 MFP_PIN_GPIO29,
0050 MFP_PIN_GPIO30,
0051 MFP_PIN_GPIO31,
0052 MFP_PIN_GPIO32,
0053 MFP_PIN_GPIO33,
0054 MFP_PIN_GPIO34,
0055 MFP_PIN_GPIO35,
0056 MFP_PIN_GPIO36,
0057 MFP_PIN_GPIO37,
0058 MFP_PIN_GPIO38,
0059 MFP_PIN_GPIO39,
0060 MFP_PIN_GPIO40,
0061 MFP_PIN_GPIO41,
0062 MFP_PIN_GPIO42,
0063 MFP_PIN_GPIO43,
0064 MFP_PIN_GPIO44,
0065 MFP_PIN_GPIO45,
0066 MFP_PIN_GPIO46,
0067 MFP_PIN_GPIO47,
0068 MFP_PIN_GPIO48,
0069 MFP_PIN_GPIO49,
0070 MFP_PIN_GPIO50,
0071 MFP_PIN_GPIO51,
0072 MFP_PIN_GPIO52,
0073 MFP_PIN_GPIO53,
0074 MFP_PIN_GPIO54,
0075 MFP_PIN_GPIO55,
0076 MFP_PIN_GPIO56,
0077 MFP_PIN_GPIO57,
0078 MFP_PIN_GPIO58,
0079 MFP_PIN_GPIO59,
0080 MFP_PIN_GPIO60,
0081 MFP_PIN_GPIO61,
0082 MFP_PIN_GPIO62,
0083 MFP_PIN_GPIO63,
0084 MFP_PIN_GPIO64,
0085 MFP_PIN_GPIO65,
0086 MFP_PIN_GPIO66,
0087 MFP_PIN_GPIO67,
0088 MFP_PIN_GPIO68,
0089 MFP_PIN_GPIO69,
0090 MFP_PIN_GPIO70,
0091 MFP_PIN_GPIO71,
0092 MFP_PIN_GPIO72,
0093 MFP_PIN_GPIO73,
0094 MFP_PIN_GPIO74,
0095 MFP_PIN_GPIO75,
0096 MFP_PIN_GPIO76,
0097 MFP_PIN_GPIO77,
0098 MFP_PIN_GPIO78,
0099 MFP_PIN_GPIO79,
0100 MFP_PIN_GPIO80,
0101 MFP_PIN_GPIO81,
0102 MFP_PIN_GPIO82,
0103 MFP_PIN_GPIO83,
0104 MFP_PIN_GPIO84,
0105 MFP_PIN_GPIO85,
0106 MFP_PIN_GPIO86,
0107 MFP_PIN_GPIO87,
0108 MFP_PIN_GPIO88,
0109 MFP_PIN_GPIO89,
0110 MFP_PIN_GPIO90,
0111 MFP_PIN_GPIO91,
0112 MFP_PIN_GPIO92,
0113 MFP_PIN_GPIO93,
0114 MFP_PIN_GPIO94,
0115 MFP_PIN_GPIO95,
0116 MFP_PIN_GPIO96,
0117 MFP_PIN_GPIO97,
0118 MFP_PIN_GPIO98,
0119 MFP_PIN_GPIO99,
0120 MFP_PIN_GPIO100,
0121 MFP_PIN_GPIO101,
0122 MFP_PIN_GPIO102,
0123 MFP_PIN_GPIO103,
0124 MFP_PIN_GPIO104,
0125 MFP_PIN_GPIO105,
0126 MFP_PIN_GPIO106,
0127 MFP_PIN_GPIO107,
0128 MFP_PIN_GPIO108,
0129 MFP_PIN_GPIO109,
0130 MFP_PIN_GPIO110,
0131 MFP_PIN_GPIO111,
0132 MFP_PIN_GPIO112,
0133 MFP_PIN_GPIO113,
0134 MFP_PIN_GPIO114,
0135 MFP_PIN_GPIO115,
0136 MFP_PIN_GPIO116,
0137 MFP_PIN_GPIO117,
0138 MFP_PIN_GPIO118,
0139 MFP_PIN_GPIO119,
0140 MFP_PIN_GPIO120,
0141 MFP_PIN_GPIO121,
0142 MFP_PIN_GPIO122,
0143 MFP_PIN_GPIO123,
0144 MFP_PIN_GPIO124,
0145 MFP_PIN_GPIO125,
0146 MFP_PIN_GPIO126,
0147 MFP_PIN_GPIO127,
0148
0149 MFP_PIN_GPIO128,
0150 MFP_PIN_GPIO129,
0151 MFP_PIN_GPIO130,
0152 MFP_PIN_GPIO131,
0153 MFP_PIN_GPIO132,
0154 MFP_PIN_GPIO133,
0155 MFP_PIN_GPIO134,
0156 MFP_PIN_GPIO135,
0157 MFP_PIN_GPIO136,
0158 MFP_PIN_GPIO137,
0159 MFP_PIN_GPIO138,
0160 MFP_PIN_GPIO139,
0161 MFP_PIN_GPIO140,
0162 MFP_PIN_GPIO141,
0163 MFP_PIN_GPIO142,
0164 MFP_PIN_GPIO143,
0165 MFP_PIN_GPIO144,
0166 MFP_PIN_GPIO145,
0167 MFP_PIN_GPIO146,
0168 MFP_PIN_GPIO147,
0169 MFP_PIN_GPIO148,
0170 MFP_PIN_GPIO149,
0171 MFP_PIN_GPIO150,
0172 MFP_PIN_GPIO151,
0173 MFP_PIN_GPIO152,
0174 MFP_PIN_GPIO153,
0175 MFP_PIN_GPIO154,
0176 MFP_PIN_GPIO155,
0177 MFP_PIN_GPIO156,
0178 MFP_PIN_GPIO157,
0179 MFP_PIN_GPIO158,
0180 MFP_PIN_GPIO159,
0181 MFP_PIN_GPIO160,
0182 MFP_PIN_GPIO161,
0183 MFP_PIN_GPIO162,
0184 MFP_PIN_GPIO163,
0185 MFP_PIN_GPIO164,
0186 MFP_PIN_GPIO165,
0187 MFP_PIN_GPIO166,
0188 MFP_PIN_GPIO167,
0189 MFP_PIN_GPIO168,
0190 MFP_PIN_GPIO169,
0191 MFP_PIN_GPIO170,
0192 MFP_PIN_GPIO171,
0193 MFP_PIN_GPIO172,
0194 MFP_PIN_GPIO173,
0195 MFP_PIN_GPIO174,
0196 MFP_PIN_GPIO175,
0197 MFP_PIN_GPIO176,
0198 MFP_PIN_GPIO177,
0199 MFP_PIN_GPIO178,
0200 MFP_PIN_GPIO179,
0201 MFP_PIN_GPIO180,
0202 MFP_PIN_GPIO181,
0203 MFP_PIN_GPIO182,
0204 MFP_PIN_GPIO183,
0205 MFP_PIN_GPIO184,
0206 MFP_PIN_GPIO185,
0207 MFP_PIN_GPIO186,
0208 MFP_PIN_GPIO187,
0209 MFP_PIN_GPIO188,
0210 MFP_PIN_GPIO189,
0211 MFP_PIN_GPIO190,
0212 MFP_PIN_GPIO191,
0213
0214 MFP_PIN_GPIO255 = 255,
0215
0216 MFP_PIN_GPIO0_2,
0217 MFP_PIN_GPIO1_2,
0218 MFP_PIN_GPIO2_2,
0219 MFP_PIN_GPIO3_2,
0220 MFP_PIN_GPIO4_2,
0221 MFP_PIN_GPIO5_2,
0222 MFP_PIN_GPIO6_2,
0223 MFP_PIN_GPIO7_2,
0224 MFP_PIN_GPIO8_2,
0225 MFP_PIN_GPIO9_2,
0226 MFP_PIN_GPIO10_2,
0227 MFP_PIN_GPIO11_2,
0228 MFP_PIN_GPIO12_2,
0229 MFP_PIN_GPIO13_2,
0230 MFP_PIN_GPIO14_2,
0231 MFP_PIN_GPIO15_2,
0232 MFP_PIN_GPIO16_2,
0233 MFP_PIN_GPIO17_2,
0234
0235 MFP_PIN_ULPI_STP,
0236 MFP_PIN_ULPI_NXT,
0237 MFP_PIN_ULPI_DIR,
0238
0239 MFP_PIN_nXCVREN,
0240 MFP_PIN_DF_CLE_nOE,
0241 MFP_PIN_DF_nADV1_ALE,
0242 MFP_PIN_DF_SCLK_E,
0243 MFP_PIN_DF_SCLK_S,
0244 MFP_PIN_nBE0,
0245 MFP_PIN_nBE1,
0246 MFP_PIN_DF_nADV2_ALE,
0247 MFP_PIN_DF_INT_RnB,
0248 MFP_PIN_DF_nCS0,
0249 MFP_PIN_DF_nCS1,
0250 MFP_PIN_nLUA,
0251 MFP_PIN_nLLA,
0252 MFP_PIN_DF_nWE,
0253 MFP_PIN_DF_ALE_nWE,
0254 MFP_PIN_DF_nRE_nOE,
0255 MFP_PIN_DF_ADDR0,
0256 MFP_PIN_DF_ADDR1,
0257 MFP_PIN_DF_ADDR2,
0258 MFP_PIN_DF_ADDR3,
0259 MFP_PIN_DF_IO0,
0260 MFP_PIN_DF_IO1,
0261 MFP_PIN_DF_IO2,
0262 MFP_PIN_DF_IO3,
0263 MFP_PIN_DF_IO4,
0264 MFP_PIN_DF_IO5,
0265 MFP_PIN_DF_IO6,
0266 MFP_PIN_DF_IO7,
0267 MFP_PIN_DF_IO8,
0268 MFP_PIN_DF_IO9,
0269 MFP_PIN_DF_IO10,
0270 MFP_PIN_DF_IO11,
0271 MFP_PIN_DF_IO12,
0272 MFP_PIN_DF_IO13,
0273 MFP_PIN_DF_IO14,
0274 MFP_PIN_DF_IO15,
0275 MFP_PIN_DF_nCS0_SM_nCS2,
0276 MFP_PIN_DF_nCS1_SM_nCS3,
0277 MFP_PIN_SM_nCS0,
0278 MFP_PIN_SM_nCS1,
0279 MFP_PIN_DF_WEn,
0280 MFP_PIN_DF_REn,
0281 MFP_PIN_DF_CLE_SM_OEn,
0282 MFP_PIN_DF_ALE_SM_WEn,
0283 MFP_PIN_DF_RDY0,
0284 MFP_PIN_DF_RDY1,
0285
0286 MFP_PIN_SM_SCLK,
0287 MFP_PIN_SM_BE0,
0288 MFP_PIN_SM_BE1,
0289 MFP_PIN_SM_ADV,
0290 MFP_PIN_SM_ADVMUX,
0291 MFP_PIN_SM_RDY,
0292
0293 MFP_PIN_MMC1_DAT7,
0294 MFP_PIN_MMC1_DAT6,
0295 MFP_PIN_MMC1_DAT5,
0296 MFP_PIN_MMC1_DAT4,
0297 MFP_PIN_MMC1_DAT3,
0298 MFP_PIN_MMC1_DAT2,
0299 MFP_PIN_MMC1_DAT1,
0300 MFP_PIN_MMC1_DAT0,
0301 MFP_PIN_MMC1_CMD,
0302 MFP_PIN_MMC1_CLK,
0303 MFP_PIN_MMC1_CD,
0304 MFP_PIN_MMC1_WP,
0305
0306
0307 MFP_PIN_GSIM_UIO,
0308 MFP_PIN_GSIM_UCLK,
0309 MFP_PIN_GSIM_UDET,
0310 MFP_PIN_GSIM_nURST,
0311 MFP_PIN_PMIC_INT,
0312 MFP_PIN_RDY,
0313
0314
0315 MFP_PIN_TWSI1_SCL,
0316 MFP_PIN_TWSI1_SDA,
0317 MFP_PIN_TWSI4_SCL,
0318 MFP_PIN_TWSI4_SDA,
0319 MFP_PIN_CLK_REQ,
0320
0321 MFP_PIN_MAX,
0322 };
0323
0324
0325
0326
0327
0328
0329
0330
0331
0332
0333
0334
0335
0336
0337
0338
0339
0340
0341
0342
0343
0344
0345
0346
0347
0348
0349
0350
0351 typedef unsigned long mfp_cfg_t;
0352
0353 #define MFP_PIN(x) ((x) & 0x3ff)
0354
0355 #define MFP_AF0 (0x0 << 10)
0356 #define MFP_AF1 (0x1 << 10)
0357 #define MFP_AF2 (0x2 << 10)
0358 #define MFP_AF3 (0x3 << 10)
0359 #define MFP_AF4 (0x4 << 10)
0360 #define MFP_AF5 (0x5 << 10)
0361 #define MFP_AF6 (0x6 << 10)
0362 #define MFP_AF7 (0x7 << 10)
0363 #define MFP_AF_MASK (0x7 << 10)
0364 #define MFP_AF(x) (((x) >> 10) & 0x7)
0365
0366 #define MFP_DS01X (0x0 << 13)
0367 #define MFP_DS02X (0x1 << 13)
0368 #define MFP_DS03X (0x2 << 13)
0369 #define MFP_DS04X (0x3 << 13)
0370 #define MFP_DS06X (0x4 << 13)
0371 #define MFP_DS08X (0x5 << 13)
0372 #define MFP_DS10X (0x6 << 13)
0373 #define MFP_DS13X (0x7 << 13)
0374 #define MFP_DS_MASK (0x7 << 13)
0375 #define MFP_DS(x) (((x) >> 13) & 0x7)
0376
0377 #define MFP_LPM_DEFAULT (0x0 << 16)
0378 #define MFP_LPM_DRIVE_LOW (0x1 << 16)
0379 #define MFP_LPM_DRIVE_HIGH (0x2 << 16)
0380 #define MFP_LPM_PULL_LOW (0x3 << 16)
0381 #define MFP_LPM_PULL_HIGH (0x4 << 16)
0382 #define MFP_LPM_FLOAT (0x5 << 16)
0383 #define MFP_LPM_INPUT (0x6 << 16)
0384 #define MFP_LPM_STATE_MASK (0x7 << 16)
0385 #define MFP_LPM_STATE(x) (((x) >> 16) & 0x7)
0386
0387 #define MFP_LPM_EDGE_NONE (0x0 << 19)
0388 #define MFP_LPM_EDGE_RISE (0x1 << 19)
0389 #define MFP_LPM_EDGE_FALL (0x2 << 19)
0390 #define MFP_LPM_EDGE_BOTH (0x3 << 19)
0391 #define MFP_LPM_EDGE_MASK (0x3 << 19)
0392 #define MFP_LPM_EDGE(x) (((x) >> 19) & 0x3)
0393
0394 #define MFP_PULL_NONE (0x0 << 21)
0395 #define MFP_PULL_LOW (0x1 << 21)
0396 #define MFP_PULL_HIGH (0x2 << 21)
0397 #define MFP_PULL_BOTH (0x3 << 21)
0398 #define MFP_PULL_FLOAT (0x4 << 21)
0399 #define MFP_PULL_MASK (0x7 << 21)
0400 #define MFP_PULL(x) (((x) >> 21) & 0x7)
0401
0402 #define MFP_CFG_DEFAULT (MFP_AF0 | MFP_DS03X | MFP_LPM_DEFAULT |\
0403 MFP_LPM_EDGE_NONE | MFP_PULL_NONE)
0404
0405 #define MFP_CFG(pin, af) \
0406 ((MFP_CFG_DEFAULT & ~MFP_AF_MASK) |\
0407 (MFP_PIN(MFP_PIN_##pin) | MFP_##af))
0408
0409 #define MFP_CFG_DRV(pin, af, drv) \
0410 ((MFP_CFG_DEFAULT & ~(MFP_AF_MASK | MFP_DS_MASK)) |\
0411 (MFP_PIN(MFP_PIN_##pin) | MFP_##af | MFP_##drv))
0412
0413 #define MFP_CFG_LPM(pin, af, lpm) \
0414 ((MFP_CFG_DEFAULT & ~(MFP_AF_MASK | MFP_LPM_STATE_MASK)) |\
0415 (MFP_PIN(MFP_PIN_##pin) | MFP_##af | MFP_LPM_##lpm))
0416
0417 #define MFP_CFG_X(pin, af, drv, lpm) \
0418 ((MFP_CFG_DEFAULT & ~(MFP_AF_MASK | MFP_DS_MASK | MFP_LPM_STATE_MASK)) |\
0419 (MFP_PIN(MFP_PIN_##pin) | MFP_##af | MFP_##drv | MFP_LPM_##lpm))
0420
0421 #if defined(CONFIG_PXA3xx) || defined(CONFIG_ARCH_MMP)
0422
0423
0424
0425
0426
0427
0428
0429
0430
0431
0432
0433
0434
0435
0436
0437
0438
0439
0440 struct mfp_addr_map {
0441 unsigned int start;
0442 unsigned int end;
0443 unsigned long offset;
0444 };
0445
0446 #define MFP_ADDR_X(start, end, offset) \
0447 { MFP_PIN_##start, MFP_PIN_##end, offset }
0448
0449 #define MFP_ADDR(pin, offset) \
0450 { MFP_PIN_##pin, -1, offset }
0451
0452 #define MFP_ADDR_END { MFP_PIN_INVALID, 0 }
0453
0454 void mfp_init_base(void __iomem *mfpr_base);
0455 void mfp_init_addr(struct mfp_addr_map *map);
0456
0457
0458
0459
0460
0461
0462
0463 unsigned long mfp_read(int mfp);
0464 void mfp_write(int mfp, unsigned long mfpr_val);
0465 void mfp_config(unsigned long *mfp_cfgs, int num);
0466 void mfp_config_run(void);
0467 void mfp_config_lpm(void);
0468 #endif
0469
0470 #endif