1 /* 2 * (C) Copyright 2009 Samsung Electronics 3 * Minkyu Kang <mk7.kang@samsung.com> 4 * 5 * SPDX-License-Identifier: GPL-2.0+ 6 */ 7 8 #ifndef __ASM_ARCH_GPIO_H 9 #define __ASM_ARCH_GPIO_H 10 11 #ifndef __ASSEMBLY__ 12 struct s5p_gpio_bank { 13 unsigned int con; 14 unsigned int dat; 15 unsigned int pull; 16 unsigned int drv; 17 unsigned int pdn_con; 18 unsigned int pdn_pull; 19 unsigned char res1[8]; 20 }; 21 22 /* A list of valid GPIO numbers for the asm-generic/gpio.h interface */ 23 enum s5pc100_gpio_pin { 24 S5PC100_GPIO_A00, 25 S5PC100_GPIO_A01, 26 S5PC100_GPIO_A02, 27 S5PC100_GPIO_A03, 28 S5PC100_GPIO_A04, 29 S5PC100_GPIO_A05, 30 S5PC100_GPIO_A06, 31 S5PC100_GPIO_A07, 32 S5PC100_GPIO_A10, 33 S5PC100_GPIO_A11, 34 S5PC100_GPIO_A12, 35 S5PC100_GPIO_A13, 36 S5PC100_GPIO_A14, 37 S5PC100_GPIO_A15, 38 S5PC100_GPIO_A16, 39 S5PC100_GPIO_A17, 40 S5PC100_GPIO_B0, 41 S5PC100_GPIO_B1, 42 S5PC100_GPIO_B2, 43 S5PC100_GPIO_B3, 44 S5PC100_GPIO_B4, 45 S5PC100_GPIO_B5, 46 S5PC100_GPIO_B6, 47 S5PC100_GPIO_B7, 48 S5PC100_GPIO_C0, 49 S5PC100_GPIO_C1, 50 S5PC100_GPIO_C2, 51 S5PC100_GPIO_C3, 52 S5PC100_GPIO_C4, 53 S5PC100_GPIO_C5, 54 S5PC100_GPIO_C6, 55 S5PC100_GPIO_C7, 56 S5PC100_GPIO_D0, 57 S5PC100_GPIO_D1, 58 S5PC100_GPIO_D2, 59 S5PC100_GPIO_D3, 60 S5PC100_GPIO_D4, 61 S5PC100_GPIO_D5, 62 S5PC100_GPIO_D6, 63 S5PC100_GPIO_D7, 64 S5PC100_GPIO_E00, 65 S5PC100_GPIO_E01, 66 S5PC100_GPIO_E02, 67 S5PC100_GPIO_E03, 68 S5PC100_GPIO_E04, 69 S5PC100_GPIO_E05, 70 S5PC100_GPIO_E06, 71 S5PC100_GPIO_E07, 72 S5PC100_GPIO_E10, 73 S5PC100_GPIO_E11, 74 S5PC100_GPIO_E12, 75 S5PC100_GPIO_E13, 76 S5PC100_GPIO_E14, 77 S5PC100_GPIO_E15, 78 S5PC100_GPIO_E16, 79 S5PC100_GPIO_E17, 80 S5PC100_GPIO_F00, 81 S5PC100_GPIO_F01, 82 S5PC100_GPIO_F02, 83 S5PC100_GPIO_F03, 84 S5PC100_GPIO_F04, 85 S5PC100_GPIO_F05, 86 S5PC100_GPIO_F06, 87 S5PC100_GPIO_F07, 88 S5PC100_GPIO_F10, 89 S5PC100_GPIO_F11, 90 S5PC100_GPIO_F12, 91 S5PC100_GPIO_F13, 92 S5PC100_GPIO_F14, 93 S5PC100_GPIO_F15, 94 S5PC100_GPIO_F16, 95 S5PC100_GPIO_F17, 96 S5PC100_GPIO_F20, 97 S5PC100_GPIO_F21, 98 S5PC100_GPIO_F22, 99 S5PC100_GPIO_F23, 100 S5PC100_GPIO_F24, 101 S5PC100_GPIO_F25, 102 S5PC100_GPIO_F26, 103 S5PC100_GPIO_F27, 104 S5PC100_GPIO_F30, 105 S5PC100_GPIO_F31, 106 S5PC100_GPIO_F32, 107 S5PC100_GPIO_F33, 108 S5PC100_GPIO_F34, 109 S5PC100_GPIO_F35, 110 S5PC100_GPIO_F36, 111 S5PC100_GPIO_F37, 112 S5PC100_GPIO_G00, 113 S5PC100_GPIO_G01, 114 S5PC100_GPIO_G02, 115 S5PC100_GPIO_G03, 116 S5PC100_GPIO_G04, 117 S5PC100_GPIO_G05, 118 S5PC100_GPIO_G06, 119 S5PC100_GPIO_G07, 120 S5PC100_GPIO_G10, 121 S5PC100_GPIO_G11, 122 S5PC100_GPIO_G12, 123 S5PC100_GPIO_G13, 124 S5PC100_GPIO_G14, 125 S5PC100_GPIO_G15, 126 S5PC100_GPIO_G16, 127 S5PC100_GPIO_G17, 128 S5PC100_GPIO_G20, 129 S5PC100_GPIO_G21, 130 S5PC100_GPIO_G22, 131 S5PC100_GPIO_G23, 132 S5PC100_GPIO_G24, 133 S5PC100_GPIO_G25, 134 S5PC100_GPIO_G26, 135 S5PC100_GPIO_G27, 136 S5PC100_GPIO_G30, 137 S5PC100_GPIO_G31, 138 S5PC100_GPIO_G32, 139 S5PC100_GPIO_G33, 140 S5PC100_GPIO_G34, 141 S5PC100_GPIO_G35, 142 S5PC100_GPIO_G36, 143 S5PC100_GPIO_G37, 144 S5PC100_GPIO_I0, 145 S5PC100_GPIO_I1, 146 S5PC100_GPIO_I2, 147 S5PC100_GPIO_I3, 148 S5PC100_GPIO_I4, 149 S5PC100_GPIO_I5, 150 S5PC100_GPIO_I6, 151 S5PC100_GPIO_I7, 152 S5PC100_GPIO_J00, 153 S5PC100_GPIO_J01, 154 S5PC100_GPIO_J02, 155 S5PC100_GPIO_J03, 156 S5PC100_GPIO_J04, 157 S5PC100_GPIO_J05, 158 S5PC100_GPIO_J06, 159 S5PC100_GPIO_J07, 160 S5PC100_GPIO_J10, 161 S5PC100_GPIO_J11, 162 S5PC100_GPIO_J12, 163 S5PC100_GPIO_J13, 164 S5PC100_GPIO_J14, 165 S5PC100_GPIO_J15, 166 S5PC100_GPIO_J16, 167 S5PC100_GPIO_J17, 168 S5PC100_GPIO_J20, 169 S5PC100_GPIO_J21, 170 S5PC100_GPIO_J22, 171 S5PC100_GPIO_J23, 172 S5PC100_GPIO_J24, 173 S5PC100_GPIO_J25, 174 S5PC100_GPIO_J26, 175 S5PC100_GPIO_J27, 176 S5PC100_GPIO_J30, 177 S5PC100_GPIO_J31, 178 S5PC100_GPIO_J32, 179 S5PC100_GPIO_J33, 180 S5PC100_GPIO_J34, 181 S5PC100_GPIO_J35, 182 S5PC100_GPIO_J36, 183 S5PC100_GPIO_J37, 184 S5PC100_GPIO_J40, 185 S5PC100_GPIO_J41, 186 S5PC100_GPIO_J42, 187 S5PC100_GPIO_J43, 188 S5PC100_GPIO_J44, 189 S5PC100_GPIO_J45, 190 S5PC100_GPIO_J46, 191 S5PC100_GPIO_J47, 192 S5PC100_GPIO_K00, 193 S5PC100_GPIO_K01, 194 S5PC100_GPIO_K02, 195 S5PC100_GPIO_K03, 196 S5PC100_GPIO_K04, 197 S5PC100_GPIO_K05, 198 S5PC100_GPIO_K06, 199 S5PC100_GPIO_K07, 200 S5PC100_GPIO_K10, 201 S5PC100_GPIO_K11, 202 S5PC100_GPIO_K12, 203 S5PC100_GPIO_K13, 204 S5PC100_GPIO_K14, 205 S5PC100_GPIO_K15, 206 S5PC100_GPIO_K16, 207 S5PC100_GPIO_K17, 208 S5PC100_GPIO_K20, 209 S5PC100_GPIO_K21, 210 S5PC100_GPIO_K22, 211 S5PC100_GPIO_K23, 212 S5PC100_GPIO_K24, 213 S5PC100_GPIO_K25, 214 S5PC100_GPIO_K26, 215 S5PC100_GPIO_K27, 216 S5PC100_GPIO_K30, 217 S5PC100_GPIO_K31, 218 S5PC100_GPIO_K32, 219 S5PC100_GPIO_K33, 220 S5PC100_GPIO_K34, 221 S5PC100_GPIO_K35, 222 S5PC100_GPIO_K36, 223 S5PC100_GPIO_K37, 224 S5PC100_GPIO_L00, 225 S5PC100_GPIO_L01, 226 S5PC100_GPIO_L02, 227 S5PC100_GPIO_L03, 228 S5PC100_GPIO_L04, 229 S5PC100_GPIO_L05, 230 S5PC100_GPIO_L06, 231 S5PC100_GPIO_L07, 232 S5PC100_GPIO_L10, 233 S5PC100_GPIO_L11, 234 S5PC100_GPIO_L12, 235 S5PC100_GPIO_L13, 236 S5PC100_GPIO_L14, 237 S5PC100_GPIO_L15, 238 S5PC100_GPIO_L16, 239 S5PC100_GPIO_L17, 240 S5PC100_GPIO_L20, 241 S5PC100_GPIO_L21, 242 S5PC100_GPIO_L22, 243 S5PC100_GPIO_L23, 244 S5PC100_GPIO_L24, 245 S5PC100_GPIO_L25, 246 S5PC100_GPIO_L26, 247 S5PC100_GPIO_L27, 248 S5PC100_GPIO_L30, 249 S5PC100_GPIO_L31, 250 S5PC100_GPIO_L32, 251 S5PC100_GPIO_L33, 252 S5PC100_GPIO_L34, 253 S5PC100_GPIO_L35, 254 S5PC100_GPIO_L36, 255 S5PC100_GPIO_L37, 256 S5PC100_GPIO_L40, 257 S5PC100_GPIO_L41, 258 S5PC100_GPIO_L42, 259 S5PC100_GPIO_L43, 260 S5PC100_GPIO_L44, 261 S5PC100_GPIO_L45, 262 S5PC100_GPIO_L46, 263 S5PC100_GPIO_L47, 264 S5PC100_GPIO_H00, 265 S5PC100_GPIO_H01, 266 S5PC100_GPIO_H02, 267 S5PC100_GPIO_H03, 268 S5PC100_GPIO_H04, 269 S5PC100_GPIO_H05, 270 S5PC100_GPIO_H06, 271 S5PC100_GPIO_H07, 272 S5PC100_GPIO_H10, 273 S5PC100_GPIO_H11, 274 S5PC100_GPIO_H12, 275 S5PC100_GPIO_H13, 276 S5PC100_GPIO_H14, 277 S5PC100_GPIO_H15, 278 S5PC100_GPIO_H16, 279 S5PC100_GPIO_H17, 280 S5PC100_GPIO_H20, 281 S5PC100_GPIO_H21, 282 S5PC100_GPIO_H22, 283 S5PC100_GPIO_H23, 284 S5PC100_GPIO_H24, 285 S5PC100_GPIO_H25, 286 S5PC100_GPIO_H26, 287 S5PC100_GPIO_H27, 288 S5PC100_GPIO_H30, 289 S5PC100_GPIO_H31, 290 S5PC100_GPIO_H32, 291 S5PC100_GPIO_H33, 292 S5PC100_GPIO_H34, 293 S5PC100_GPIO_H35, 294 S5PC100_GPIO_H36, 295 S5PC100_GPIO_H37, 296 297 S5PC100_GPIO_MAX_PORT 298 }; 299 300 enum s5pc110_gpio_pin { 301 S5PC110_GPIO_A00, 302 S5PC110_GPIO_A01, 303 S5PC110_GPIO_A02, 304 S5PC110_GPIO_A03, 305 S5PC110_GPIO_A04, 306 S5PC110_GPIO_A05, 307 S5PC110_GPIO_A06, 308 S5PC110_GPIO_A07, 309 S5PC110_GPIO_A10, 310 S5PC110_GPIO_A11, 311 S5PC110_GPIO_A12, 312 S5PC110_GPIO_A13, 313 S5PC110_GPIO_A14, 314 S5PC110_GPIO_A15, 315 S5PC110_GPIO_A16, 316 S5PC110_GPIO_A17, 317 S5PC110_GPIO_B0, 318 S5PC110_GPIO_B1, 319 S5PC110_GPIO_B2, 320 S5PC110_GPIO_B3, 321 S5PC110_GPIO_B4, 322 S5PC110_GPIO_B5, 323 S5PC110_GPIO_B6, 324 S5PC110_GPIO_B7, 325 S5PC110_GPIO_C00, 326 S5PC110_GPIO_C01, 327 S5PC110_GPIO_C02, 328 S5PC110_GPIO_C03, 329 S5PC110_GPIO_C04, 330 S5PC110_GPIO_C05, 331 S5PC110_GPIO_C06, 332 S5PC110_GPIO_C07, 333 S5PC110_GPIO_C10, 334 S5PC110_GPIO_C11, 335 S5PC110_GPIO_C12, 336 S5PC110_GPIO_C13, 337 S5PC110_GPIO_C14, 338 S5PC110_GPIO_C15, 339 S5PC110_GPIO_C16, 340 S5PC110_GPIO_C17, 341 S5PC110_GPIO_D00, 342 S5PC110_GPIO_D01, 343 S5PC110_GPIO_D02, 344 S5PC110_GPIO_D03, 345 S5PC110_GPIO_D04, 346 S5PC110_GPIO_D05, 347 S5PC110_GPIO_D06, 348 S5PC110_GPIO_D07, 349 S5PC110_GPIO_D10, 350 S5PC110_GPIO_D11, 351 S5PC110_GPIO_D12, 352 S5PC110_GPIO_D13, 353 S5PC110_GPIO_D14, 354 S5PC110_GPIO_D15, 355 S5PC110_GPIO_D16, 356 S5PC110_GPIO_D17, 357 S5PC110_GPIO_E00, 358 S5PC110_GPIO_E01, 359 S5PC110_GPIO_E02, 360 S5PC110_GPIO_E03, 361 S5PC110_GPIO_E04, 362 S5PC110_GPIO_E05, 363 S5PC110_GPIO_E06, 364 S5PC110_GPIO_E07, 365 S5PC110_GPIO_E10, 366 S5PC110_GPIO_E11, 367 S5PC110_GPIO_E12, 368 S5PC110_GPIO_E13, 369 S5PC110_GPIO_E14, 370 S5PC110_GPIO_E15, 371 S5PC110_GPIO_E16, 372 S5PC110_GPIO_E17, 373 S5PC110_GPIO_F00, 374 S5PC110_GPIO_F01, 375 S5PC110_GPIO_F02, 376 S5PC110_GPIO_F03, 377 S5PC110_GPIO_F04, 378 S5PC110_GPIO_F05, 379 S5PC110_GPIO_F06, 380 S5PC110_GPIO_F07, 381 S5PC110_GPIO_F10, 382 S5PC110_GPIO_F11, 383 S5PC110_GPIO_F12, 384 S5PC110_GPIO_F13, 385 S5PC110_GPIO_F14, 386 S5PC110_GPIO_F15, 387 S5PC110_GPIO_F16, 388 S5PC110_GPIO_F17, 389 S5PC110_GPIO_F20, 390 S5PC110_GPIO_F21, 391 S5PC110_GPIO_F22, 392 S5PC110_GPIO_F23, 393 S5PC110_GPIO_F24, 394 S5PC110_GPIO_F25, 395 S5PC110_GPIO_F26, 396 S5PC110_GPIO_F27, 397 S5PC110_GPIO_F30, 398 S5PC110_GPIO_F31, 399 S5PC110_GPIO_F32, 400 S5PC110_GPIO_F33, 401 S5PC110_GPIO_F34, 402 S5PC110_GPIO_F35, 403 S5PC110_GPIO_F36, 404 S5PC110_GPIO_F37, 405 S5PC110_GPIO_G00, 406 S5PC110_GPIO_G01, 407 S5PC110_GPIO_G02, 408 S5PC110_GPIO_G03, 409 S5PC110_GPIO_G04, 410 S5PC110_GPIO_G05, 411 S5PC110_GPIO_G06, 412 S5PC110_GPIO_G07, 413 S5PC110_GPIO_G10, 414 S5PC110_GPIO_G11, 415 S5PC110_GPIO_G12, 416 S5PC110_GPIO_G13, 417 S5PC110_GPIO_G14, 418 S5PC110_GPIO_G15, 419 S5PC110_GPIO_G16, 420 S5PC110_GPIO_G17, 421 S5PC110_GPIO_G20, 422 S5PC110_GPIO_G21, 423 S5PC110_GPIO_G22, 424 S5PC110_GPIO_G23, 425 S5PC110_GPIO_G24, 426 S5PC110_GPIO_G25, 427 S5PC110_GPIO_G26, 428 S5PC110_GPIO_G27, 429 S5PC110_GPIO_G30, 430 S5PC110_GPIO_G31, 431 S5PC110_GPIO_G32, 432 S5PC110_GPIO_G33, 433 S5PC110_GPIO_G34, 434 S5PC110_GPIO_G35, 435 S5PC110_GPIO_G36, 436 S5PC110_GPIO_G37, 437 S5PC110_GPIO_I0, 438 S5PC110_GPIO_I1, 439 S5PC110_GPIO_I2, 440 S5PC110_GPIO_I3, 441 S5PC110_GPIO_I4, 442 S5PC110_GPIO_I5, 443 S5PC110_GPIO_I6, 444 S5PC110_GPIO_I7, 445 S5PC110_GPIO_J00, 446 S5PC110_GPIO_J01, 447 S5PC110_GPIO_J02, 448 S5PC110_GPIO_J03, 449 S5PC110_GPIO_J04, 450 S5PC110_GPIO_J05, 451 S5PC110_GPIO_J06, 452 S5PC110_GPIO_J07, 453 S5PC110_GPIO_J10, 454 S5PC110_GPIO_J11, 455 S5PC110_GPIO_J12, 456 S5PC110_GPIO_J13, 457 S5PC110_GPIO_J14, 458 S5PC110_GPIO_J15, 459 S5PC110_GPIO_J16, 460 S5PC110_GPIO_J17, 461 S5PC110_GPIO_J20, 462 S5PC110_GPIO_J21, 463 S5PC110_GPIO_J22, 464 S5PC110_GPIO_J23, 465 S5PC110_GPIO_J24, 466 S5PC110_GPIO_J25, 467 S5PC110_GPIO_J26, 468 S5PC110_GPIO_J27, 469 S5PC110_GPIO_J30, 470 S5PC110_GPIO_J31, 471 S5PC110_GPIO_J32, 472 S5PC110_GPIO_J33, 473 S5PC110_GPIO_J34, 474 S5PC110_GPIO_J35, 475 S5PC110_GPIO_J36, 476 S5PC110_GPIO_J37, 477 S5PC110_GPIO_J40, 478 S5PC110_GPIO_J41, 479 S5PC110_GPIO_J42, 480 S5PC110_GPIO_J43, 481 S5PC110_GPIO_J44, 482 S5PC110_GPIO_J45, 483 S5PC110_GPIO_J46, 484 S5PC110_GPIO_J47, 485 S5PC110_GPIO_MP010, 486 S5PC110_GPIO_MP011, 487 S5PC110_GPIO_MP012, 488 S5PC110_GPIO_MP013, 489 S5PC110_GPIO_MP014, 490 S5PC110_GPIO_MP015, 491 S5PC110_GPIO_MP016, 492 S5PC110_GPIO_MP017, 493 S5PC110_GPIO_MP020, 494 S5PC110_GPIO_MP021, 495 S5PC110_GPIO_MP022, 496 S5PC110_GPIO_MP023, 497 S5PC110_GPIO_MP024, 498 S5PC110_GPIO_MP025, 499 S5PC110_GPIO_MP026, 500 S5PC110_GPIO_MP027, 501 S5PC110_GPIO_MP030, 502 S5PC110_GPIO_MP031, 503 S5PC110_GPIO_MP032, 504 S5PC110_GPIO_MP033, 505 S5PC110_GPIO_MP034, 506 S5PC110_GPIO_MP035, 507 S5PC110_GPIO_MP036, 508 S5PC110_GPIO_MP037, 509 S5PC110_GPIO_MP040, 510 S5PC110_GPIO_MP041, 511 S5PC110_GPIO_MP042, 512 S5PC110_GPIO_MP043, 513 S5PC110_GPIO_MP044, 514 S5PC110_GPIO_MP045, 515 S5PC110_GPIO_MP046, 516 S5PC110_GPIO_MP047, 517 S5PC110_GPIO_MP050, 518 S5PC110_GPIO_MP051, 519 S5PC110_GPIO_MP052, 520 S5PC110_GPIO_MP053, 521 S5PC110_GPIO_MP054, 522 S5PC110_GPIO_MP055, 523 S5PC110_GPIO_MP056, 524 S5PC110_GPIO_MP057, 525 S5PC110_GPIO_MP060, 526 S5PC110_GPIO_MP061, 527 S5PC110_GPIO_MP062, 528 S5PC110_GPIO_MP063, 529 S5PC110_GPIO_MP064, 530 S5PC110_GPIO_MP065, 531 S5PC110_GPIO_MP066, 532 S5PC110_GPIO_MP067, 533 S5PC110_GPIO_MP070, 534 S5PC110_GPIO_MP071, 535 S5PC110_GPIO_MP072, 536 S5PC110_GPIO_MP073, 537 S5PC110_GPIO_MP074, 538 S5PC110_GPIO_MP075, 539 S5PC110_GPIO_MP076, 540 S5PC110_GPIO_MP077, 541 S5PC110_GPIO_MP100, 542 S5PC110_GPIO_MP101, 543 S5PC110_GPIO_MP102, 544 S5PC110_GPIO_MP103, 545 S5PC110_GPIO_MP104, 546 S5PC110_GPIO_MP105, 547 S5PC110_GPIO_MP106, 548 S5PC110_GPIO_MP107, 549 S5PC110_GPIO_MP110, 550 S5PC110_GPIO_MP111, 551 S5PC110_GPIO_MP112, 552 S5PC110_GPIO_MP113, 553 S5PC110_GPIO_MP114, 554 S5PC110_GPIO_MP115, 555 S5PC110_GPIO_MP116, 556 S5PC110_GPIO_MP117, 557 S5PC110_GPIO_MP120, 558 S5PC110_GPIO_MP121, 559 S5PC110_GPIO_MP122, 560 S5PC110_GPIO_MP123, 561 S5PC110_GPIO_MP124, 562 S5PC110_GPIO_MP125, 563 S5PC110_GPIO_MP126, 564 S5PC110_GPIO_MP127, 565 S5PC110_GPIO_MP130, 566 S5PC110_GPIO_MP131, 567 S5PC110_GPIO_MP132, 568 S5PC110_GPIO_MP133, 569 S5PC110_GPIO_MP134, 570 S5PC110_GPIO_MP135, 571 S5PC110_GPIO_MP136, 572 S5PC110_GPIO_MP137, 573 S5PC110_GPIO_MP140, 574 S5PC110_GPIO_MP141, 575 S5PC110_GPIO_MP142, 576 S5PC110_GPIO_MP143, 577 S5PC110_GPIO_MP144, 578 S5PC110_GPIO_MP145, 579 S5PC110_GPIO_MP146, 580 S5PC110_GPIO_MP147, 581 S5PC110_GPIO_MP150, 582 S5PC110_GPIO_MP151, 583 S5PC110_GPIO_MP152, 584 S5PC110_GPIO_MP153, 585 S5PC110_GPIO_MP154, 586 S5PC110_GPIO_MP155, 587 S5PC110_GPIO_MP156, 588 S5PC110_GPIO_MP157, 589 S5PC110_GPIO_MP160, 590 S5PC110_GPIO_MP161, 591 S5PC110_GPIO_MP162, 592 S5PC110_GPIO_MP163, 593 S5PC110_GPIO_MP164, 594 S5PC110_GPIO_MP165, 595 S5PC110_GPIO_MP166, 596 S5PC110_GPIO_MP167, 597 S5PC110_GPIO_MP170, 598 S5PC110_GPIO_MP171, 599 S5PC110_GPIO_MP172, 600 S5PC110_GPIO_MP173, 601 S5PC110_GPIO_MP174, 602 S5PC110_GPIO_MP175, 603 S5PC110_GPIO_MP176, 604 S5PC110_GPIO_MP177, 605 S5PC110_GPIO_MP180, 606 S5PC110_GPIO_MP181, 607 S5PC110_GPIO_MP182, 608 S5PC110_GPIO_MP183, 609 S5PC110_GPIO_MP184, 610 S5PC110_GPIO_MP185, 611 S5PC110_GPIO_MP186, 612 S5PC110_GPIO_MP187, 613 S5PC110_GPIO_MP200, 614 S5PC110_GPIO_MP201, 615 S5PC110_GPIO_MP202, 616 S5PC110_GPIO_MP203, 617 S5PC110_GPIO_MP204, 618 S5PC110_GPIO_MP205, 619 S5PC110_GPIO_MP206, 620 S5PC110_GPIO_MP207, 621 S5PC110_GPIO_MP210, 622 S5PC110_GPIO_MP211, 623 S5PC110_GPIO_MP212, 624 S5PC110_GPIO_MP213, 625 S5PC110_GPIO_MP214, 626 S5PC110_GPIO_MP215, 627 S5PC110_GPIO_MP216, 628 S5PC110_GPIO_MP217, 629 S5PC110_GPIO_MP220, 630 S5PC110_GPIO_MP221, 631 S5PC110_GPIO_MP222, 632 S5PC110_GPIO_MP223, 633 S5PC110_GPIO_MP224, 634 S5PC110_GPIO_MP225, 635 S5PC110_GPIO_MP226, 636 S5PC110_GPIO_MP227, 637 S5PC110_GPIO_MP230, 638 S5PC110_GPIO_MP231, 639 S5PC110_GPIO_MP232, 640 S5PC110_GPIO_MP233, 641 S5PC110_GPIO_MP234, 642 S5PC110_GPIO_MP235, 643 S5PC110_GPIO_MP236, 644 S5PC110_GPIO_MP237, 645 S5PC110_GPIO_MP240, 646 S5PC110_GPIO_MP241, 647 S5PC110_GPIO_MP242, 648 S5PC110_GPIO_MP243, 649 S5PC110_GPIO_MP244, 650 S5PC110_GPIO_MP245, 651 S5PC110_GPIO_MP246, 652 S5PC110_GPIO_MP247, 653 S5PC110_GPIO_MP250, 654 S5PC110_GPIO_MP251, 655 S5PC110_GPIO_MP252, 656 S5PC110_GPIO_MP253, 657 S5PC110_GPIO_MP254, 658 S5PC110_GPIO_MP255, 659 S5PC110_GPIO_MP256, 660 S5PC110_GPIO_MP257, 661 S5PC110_GPIO_MP260, 662 S5PC110_GPIO_MP261, 663 S5PC110_GPIO_MP262, 664 S5PC110_GPIO_MP263, 665 S5PC110_GPIO_MP264, 666 S5PC110_GPIO_MP265, 667 S5PC110_GPIO_MP266, 668 S5PC110_GPIO_MP267, 669 S5PC110_GPIO_MP270, 670 S5PC110_GPIO_MP271, 671 S5PC110_GPIO_MP272, 672 S5PC110_GPIO_MP273, 673 S5PC110_GPIO_MP274, 674 S5PC110_GPIO_MP275, 675 S5PC110_GPIO_MP276, 676 S5PC110_GPIO_MP277, 677 S5PC110_GPIO_MP280, 678 S5PC110_GPIO_MP281, 679 S5PC110_GPIO_MP282, 680 S5PC110_GPIO_MP283, 681 S5PC110_GPIO_MP284, 682 S5PC110_GPIO_MP285, 683 S5PC110_GPIO_MP286, 684 S5PC110_GPIO_MP287, 685 S5PC110_GPIO_H00, 686 S5PC110_GPIO_H01, 687 S5PC110_GPIO_H02, 688 S5PC110_GPIO_H03, 689 S5PC110_GPIO_H04, 690 S5PC110_GPIO_H05, 691 S5PC110_GPIO_H06, 692 S5PC110_GPIO_H07, 693 S5PC110_GPIO_H10, 694 S5PC110_GPIO_H11, 695 S5PC110_GPIO_H12, 696 S5PC110_GPIO_H13, 697 S5PC110_GPIO_H14, 698 S5PC110_GPIO_H15, 699 S5PC110_GPIO_H16, 700 S5PC110_GPIO_H17, 701 S5PC110_GPIO_H20, 702 S5PC110_GPIO_H21, 703 S5PC110_GPIO_H22, 704 S5PC110_GPIO_H23, 705 S5PC110_GPIO_H24, 706 S5PC110_GPIO_H25, 707 S5PC110_GPIO_H26, 708 S5PC110_GPIO_H27, 709 S5PC110_GPIO_H30, 710 S5PC110_GPIO_H31, 711 S5PC110_GPIO_H32, 712 S5PC110_GPIO_H33, 713 S5PC110_GPIO_H34, 714 S5PC110_GPIO_H35, 715 S5PC110_GPIO_H36, 716 S5PC110_GPIO_H37, 717 718 S5PC110_GPIO_MAX_PORT 719 }; 720 721 struct gpio_info { 722 unsigned int reg_addr; /* Address of register for this part */ 723 unsigned int max_gpio; /* Maximum GPIO in this part */ 724 }; 725 726 #define S5PC100_GPIO_NUM_PARTS 1 727 static struct gpio_info s5pc100_gpio_data[S5PC100_GPIO_NUM_PARTS] = { 728 { S5PC100_GPIO_BASE, S5PC100_GPIO_MAX_PORT }, 729 }; 730 731 #define S5PC110_GPIO_NUM_PARTS 1 732 static struct gpio_info s5pc110_gpio_data[S5PC110_GPIO_NUM_PARTS] = { 733 { S5PC110_GPIO_BASE, S5PC110_GPIO_MAX_PORT }, 734 }; 735 736 static inline struct gpio_info *get_gpio_data(void) 737 { 738 if (cpu_is_s5pc100()) 739 return s5pc100_gpio_data; 740 else if (cpu_is_s5pc110()) 741 return s5pc110_gpio_data; 742 743 return NULL; 744 } 745 746 static inline unsigned int get_bank_num(void) 747 { 748 if (cpu_is_s5pc100()) 749 return S5PC100_GPIO_NUM_PARTS; 750 else if (cpu_is_s5pc110()) 751 return S5PC110_GPIO_NUM_PARTS; 752 753 return 0; 754 } 755 756 /* 757 * This structure helps mapping symbolic GPIO names into indices from 758 * exynos5_gpio_pin/exynos5420_gpio_pin enums. 759 * 760 * By convention, symbolic GPIO name is defined as follows: 761 * 762 * g[p]<bank><set><bit>, where 763 * p is optional 764 * <bank> - a single character bank name, as defined by the SOC 765 * <set> - a single digit set number 766 * <bit> - bit number within the set (in 0..7 range). 767 * 768 * <set><bit> essentially form an octal number of the GPIO pin within the bank 769 * space. On the 5420 architecture some banks' sets do not start not from zero 770 * ('d' starts from 1 and 'j' starts from 4). To compensate for that and 771 * maintain flat number space withoout holes, those banks use offsets to be 772 * deducted from the pin number. 773 */ 774 struct gpio_name_num_table { 775 char bank; /* bank name symbol */ 776 u8 bank_size; /* total number of pins in the bank */ 777 char bank_offset; /* offset of the first bank's pin */ 778 unsigned int base; /* index of the first bank's pin in the enum */ 779 }; 780 781 #define GPIO_PER_BANK 8 782 #define GPIO_ENTRY(name, base, top, offset) { name, top - base, offset, base } 783 static const struct gpio_name_num_table s5pc100_gpio_table[] = { 784 GPIO_ENTRY('a', S5PC100_GPIO_A00, S5PC100_GPIO_B0, 0), 785 GPIO_ENTRY('b', S5PC100_GPIO_B0, S5PC100_GPIO_C0, 0), 786 GPIO_ENTRY('c', S5PC100_GPIO_C0, S5PC100_GPIO_D0, 0), 787 GPIO_ENTRY('d', S5PC100_GPIO_D0, S5PC100_GPIO_E00, 0), 788 GPIO_ENTRY('e', S5PC100_GPIO_E00, S5PC100_GPIO_F00, 0), 789 GPIO_ENTRY('f', S5PC100_GPIO_F00, S5PC100_GPIO_G00, 0), 790 GPIO_ENTRY('g', S5PC100_GPIO_G00, S5PC100_GPIO_I0, 0), 791 GPIO_ENTRY('i', S5PC100_GPIO_I0, S5PC100_GPIO_J00, 0), 792 GPIO_ENTRY('j', S5PC100_GPIO_J00, S5PC100_GPIO_K00, 0), 793 GPIO_ENTRY('k', S5PC100_GPIO_K00, S5PC100_GPIO_L00, 0), 794 GPIO_ENTRY('l', S5PC100_GPIO_L00, S5PC100_GPIO_H00, 0), 795 GPIO_ENTRY('h', S5PC100_GPIO_H00, S5PC100_GPIO_MAX_PORT, 0), 796 { 0 } 797 }; 798 799 static const struct gpio_name_num_table s5pc110_gpio_table[] = { 800 GPIO_ENTRY('a', S5PC110_GPIO_A00, S5PC110_GPIO_B0, 0), 801 GPIO_ENTRY('b', S5PC110_GPIO_B0, S5PC110_GPIO_C00, 0), 802 GPIO_ENTRY('c', S5PC110_GPIO_C00, S5PC110_GPIO_D00, 0), 803 GPIO_ENTRY('d', S5PC110_GPIO_D00, S5PC110_GPIO_E00, 0), 804 GPIO_ENTRY('e', S5PC110_GPIO_E00, S5PC110_GPIO_F00, 0), 805 GPIO_ENTRY('f', S5PC110_GPIO_F00, S5PC110_GPIO_G00, 0), 806 GPIO_ENTRY('g', S5PC110_GPIO_G00, S5PC110_GPIO_I0, 0), 807 GPIO_ENTRY('i', S5PC110_GPIO_I0, S5PC110_GPIO_J00, 0), 808 GPIO_ENTRY('j', S5PC110_GPIO_J00, S5PC110_GPIO_MP010, 0), 809 GPIO_ENTRY('h', S5PC110_GPIO_H00, S5PC110_GPIO_MAX_PORT, 0), 810 { 0 } 811 }; 812 813 /* functions */ 814 void gpio_cfg_pin(int gpio, int cfg); 815 void gpio_set_pull(int gpio, int mode); 816 void gpio_set_drv(int gpio, int mode); 817 void gpio_set_rate(int gpio, int mode); 818 int s5p_gpio_get_pin(unsigned gpio); 819 820 /* GPIO pins per bank */ 821 #define GPIO_PER_BANK 8 822 #endif 823 824 /* Pin configurations */ 825 #define S5P_GPIO_INPUT 0x0 826 #define S5P_GPIO_OUTPUT 0x1 827 #define S5P_GPIO_IRQ 0xf 828 #define S5P_GPIO_FUNC(x) (x) 829 830 /* Pull mode */ 831 #define S5P_GPIO_PULL_NONE 0x0 832 #define S5P_GPIO_PULL_DOWN 0x1 833 #define S5P_GPIO_PULL_UP 0x2 834 835 /* Drive Strength level */ 836 #define S5P_GPIO_DRV_1X 0x0 837 #define S5P_GPIO_DRV_3X 0x1 838 #define S5P_GPIO_DRV_2X 0x2 839 #define S5P_GPIO_DRV_4X 0x3 840 #define S5P_GPIO_DRV_FAST 0x0 841 #define S5P_GPIO_DRV_SLOW 0x1 842 843 #endif 844