gpio.h 18 KB

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