gpio.h 18 KB

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