pinctrl-sky1.c 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558
  1. // SPDX-License-Identifier: GPL-2.0
  2. //
  3. // Author: Jerry Zhu <Jerry.Zhu@cixtech.com>
  4. // Author: Gary Yang <gary.yang@cixtech.com>
  5. #include <linux/err.h>
  6. #include <linux/init.h>
  7. #include <linux/module.h>
  8. #include <linux/of.h>
  9. #include <linux/of_device.h>
  10. #include <linux/pinctrl/pinctrl.h>
  11. #include <linux/platform_device.h>
  12. #include "linux/stddef.h"
  13. #include "../core.h"
  14. #include "pinctrl-sky1.h"
  15. /* Pad names for the s5 domain pinmux subsystem */
  16. static const char * const gpio1_group[] = {"GPIO1"};
  17. static const char * const gpio2_group[] = {"GPIO2"};
  18. static const char * const gpio3_group[] = {"GPIO3"};
  19. static const char * const gpio4_group[] = {"GPIO4"};
  20. static const char * const gpio5_group[] = {"GPIO5"};
  21. static const char * const gpio6_group[] = {"GPIO6"};
  22. static const char * const gpio7_group[] = {"GPIO7"};
  23. static const char * const gpio8_group[] = {"GPIO8"};
  24. static const char * const gpio9_group[] = {"GPIO9"};
  25. static const char * const gpio10_group[] = {"GPIO10"};
  26. static const char * const gpio11_group[] = {"GPIO11"};
  27. static const char * const gpio12_group[] = {"GPIO12"};
  28. static const char * const gpio13_group[] = {"GPIO13"};
  29. static const char * const gpio14_group[] = {"GPIO14"};
  30. static const char * const rsmrst_group[] = { };
  31. static const char * const srst_group[] = { };
  32. static const char * const slp_s3_group[] = { };
  33. static const char * const slp_s5_group[] = { };
  34. static const char * const pwrgd_group[] = { };
  35. static const char * const pwrok_group[] = { };
  36. static const char * const pwrbtn_group[] = { };
  37. static const char * const ddrio_gate_group[] = { };
  38. static const char * const jtag_gpio_group[] = { };
  39. static const char * const jtag_tck_group[] = { };
  40. static const char * const jtag_tdi_group[] = { };
  41. static const char * const jtag_tdo_group[] = { };
  42. static const char * const tms_group[] = { };
  43. static const char * const trsl_group[] = { };
  44. static const char * const sfi_i2c0_scl_group[] = {"SFI_I2C0_SCL",
  45. "SFI_I3C0_SCL"};
  46. static const char * const sfi_i2c0_sda_group[] = {"SFI_I2C0_SDA",
  47. "SFI_I3C0_SDA"};
  48. static const char * const sfi_i2c1_scl_group[] = {"SFI_I2C1_SCL",
  49. "SFI_I3C1_SCL", "SFI_SPI_CS0"};
  50. static const char * const sfi_i2c1_sda_group[] = {"SFI_I2C1_SDA",
  51. "SFI_I3C1_SDA", "SFI_SPI_CS1"};
  52. static const char * const sfi_gpio0_group[] = {"GPIO15", "SFI_SPI_SCK",
  53. "SFI_GPIO0"};
  54. static const char * const sfi_gpio1_group[] = {"GPIO16", "SFI_SPI_MOSI",
  55. "SFI_GPIO1"};
  56. static const char * const sfi_gpio2_group[] = {"GPIO17", "SFI_SPI_MISO",
  57. "SFI_GPIO2"};
  58. static const char * const gpio18_group[] = {"SFI_GPIO3", "GPIO18"};
  59. static const char * const gpio19_group[] = {"SFI_GPIO4", "GPIO19"};
  60. static const char * const gpio20_group[] = {"SFI_GPIO5", "GPIO20"};
  61. static const char * const gpio21_group[] = {"SFI_GPIO6", "GPIO21"};
  62. static const char * const gpio22_group[] = {"SFI_GPIO7", "GPIO22"};
  63. static const char * const gpio23_group[] = {"SFI_GPIO8", "GPIO23",
  64. "SFI_I3C0_PUR_EN_L"};
  65. static const char * const gpio24_group[] = {"SFI_GPIO9", "GPIO24",
  66. "SFI_I3C1_PUR_EN_L"};
  67. static const char * const spi1_miso_group[] = {"SPI1_MISO", "GPIO25"};
  68. static const char * const spi1_cs0_group[] = {"SPI1_CS0", "GPIO26"};
  69. static const char * const spi1_cs1_group[] = {"SPI1_CS1", "GPIO27"};
  70. static const char * const spi1_mosi_group[] = {"SPI1_MOSI", "GPIO28"};
  71. static const char * const spi1_clk_group[] = {"SPI1_CLK", "GPIO29"};
  72. static const char * const gpio30_group[] = {"GPIO30", "USB_0C0_L"};
  73. static const char * const gpio31_group[] = {"GPIO31", "USB_0C1_L"};
  74. static const char * const gpio32_group[] = {"GPIO32", "USB_0C2_L"};
  75. static const char * const gpio33_group[] = {"GPIO33", "USB_0C3_L"};
  76. static const char * const gpio34_group[] = {"GPIO34", "USB_0C4_L"};
  77. static const char * const gpio35_group[] = {"GPIO35", "USB_0C5_L"};
  78. static const char * const gpio36_group[] = {"GPIO36", "USB_0C6_L"};
  79. static const char * const gpio37_group[] = {"GPIO37", "USB_0C7_L"};
  80. static const char * const gpio38_group[] = {"GPIO38", "USB_0C8_L"};
  81. static const char * const gpio39_group[] = {"GPIO39", "USB_0C9_L"};
  82. static const char * const gpio40_group[] = {"GPIO40", "USB_DRIVE_VBUS0"};
  83. static const char * const gpio41_group[] = {"GPIO41", "USB_DRIVE_VBUS4"};
  84. static const char * const gpio42_group[] = {"GPIO42", "USB_DRIVE_VBUS5"};
  85. static const char * const se_qspi_clk_group[] = {"SE_QSPI_CLK", "QSPI_CLK"};
  86. static const char * const se_qspi_cs_group[] = {"SE_QSPI_CS_L", "QSPI_CS_L"};
  87. static const char * const se_qspi_data0_group[] = {"SE_QSPI_DATA0",
  88. "QSPI_DATA0"};
  89. static const char * const se_qspi_data1_group[] = {"SE_QSPI_DATA1",
  90. "QSPI_DATA1"};
  91. static const char * const se_qspi_data2_group[] = {"SE_QSPI_DATA2",
  92. "QSPI_DATA2"};
  93. static const char * const se_qspi_data3_group[] = {"SE_QSPI_DATA3",
  94. "QSPI_DATA3"};
  95. static const struct sky1_pin_desc sky1_pinctrl_s5_pads[] = {
  96. SKY_PINFUNCTION(PINCTRL_PIN(0, "GPIO1"), gpio1),
  97. SKY_PINFUNCTION(PINCTRL_PIN(1, "GPIO2"), gpio2),
  98. SKY_PINFUNCTION(PINCTRL_PIN(2, "GPIO3"), gpio3),
  99. SKY_PINFUNCTION(PINCTRL_PIN(3, "GPIO4"), gpio4),
  100. SKY_PINFUNCTION(PINCTRL_PIN(4, "GPIO5"), gpio5),
  101. SKY_PINFUNCTION(PINCTRL_PIN(5, "GPIO6"), gpio6),
  102. SKY_PINFUNCTION(PINCTRL_PIN(6, "GPIO7"), gpio7),
  103. SKY_PINFUNCTION(PINCTRL_PIN(7, "GPIO8"), gpio8),
  104. SKY_PINFUNCTION(PINCTRL_PIN(8, "GPIO9"), gpio9),
  105. SKY_PINFUNCTION(PINCTRL_PIN(9, "GPIO10"), gpio10),
  106. SKY_PINFUNCTION(PINCTRL_PIN(10, "GPIO11"), gpio11),
  107. SKY_PINFUNCTION(PINCTRL_PIN(11, "GPIO12"), gpio12),
  108. SKY_PINFUNCTION(PINCTRL_PIN(12, "GPIO13"), gpio13),
  109. SKY_PINFUNCTION(PINCTRL_PIN(13, "GPIO14"), gpio14),
  110. SKY_PINFUNCTION(PINCTRL_PIN(14, "RSMRST_L"), rsmrst),
  111. SKY_PINFUNCTION(PINCTRL_PIN(15, "SRST_L"), srst),
  112. SKY_PINFUNCTION(PINCTRL_PIN(16, "SLP_S3_L"), slp_s3),
  113. SKY_PINFUNCTION(PINCTRL_PIN(17, "SLP_S5_L"), slp_s5),
  114. SKY_PINFUNCTION(PINCTRL_PIN(18, "PWRGD"), pwrgd),
  115. SKY_PINFUNCTION(PINCTRL_PIN(19, "PWROK"), pwrok),
  116. SKY_PINFUNCTION(PINCTRL_PIN(20, "PWRBTN_L"), pwrbtn),
  117. SKY_PINFUNCTION(PINCTRL_PIN(21, "VDD_DDRIO_GATE"), ddrio_gate),
  118. SKY_PINFUNCTION(PINCTRL_PIN(22, "JTAG_GPIO_L"), jtag_gpio),
  119. SKY_PINFUNCTION(PINCTRL_PIN(23, "JTAG_TCK"), jtag_tck),
  120. SKY_PINFUNCTION(PINCTRL_PIN(24, "JTAG_TDI"), jtag_tdi),
  121. SKY_PINFUNCTION(PINCTRL_PIN(25, "JTAG_TDO"), jtag_tdo),
  122. SKY_PINFUNCTION(PINCTRL_PIN(26, "TMS"), tms),
  123. SKY_PINFUNCTION(PINCTRL_PIN(27, "TRSL_L"), trsl),
  124. SKY_PINFUNCTION(PINCTRL_PIN(28, "SFI_I2C0_SCL"), sfi_i2c0_scl),
  125. SKY_PINFUNCTION(PINCTRL_PIN(29, "SFI_I2C0_SDA"), sfi_i2c0_sda),
  126. SKY_PINFUNCTION(PINCTRL_PIN(30, "SFI_I2C1_SCL"), sfi_i2c1_scl),
  127. SKY_PINFUNCTION(PINCTRL_PIN(31, "SFI_I2C1_SDA"), sfi_i2c1_sda),
  128. SKY_PINFUNCTION(PINCTRL_PIN(32, "SFI_GPIO0"), sfi_gpio0),
  129. SKY_PINFUNCTION(PINCTRL_PIN(33, "SFI_GPIO1"), sfi_gpio1),
  130. SKY_PINFUNCTION(PINCTRL_PIN(34, "SFI_GPIO2"), sfi_gpio2),
  131. SKY_PINFUNCTION(PINCTRL_PIN(35, "GPIO18"), gpio18),
  132. SKY_PINFUNCTION(PINCTRL_PIN(36, "GPIO19"), gpio19),
  133. SKY_PINFUNCTION(PINCTRL_PIN(37, "GPIO20"), gpio20),
  134. SKY_PINFUNCTION(PINCTRL_PIN(38, "GPIO21"), gpio21),
  135. SKY_PINFUNCTION(PINCTRL_PIN(39, "GPIO22"), gpio22),
  136. SKY_PINFUNCTION(PINCTRL_PIN(40, "GPIO23"), gpio23),
  137. SKY_PINFUNCTION(PINCTRL_PIN(41, "GPIO24"), gpio24),
  138. SKY_PINFUNCTION(PINCTRL_PIN(42, "SPI1_MISO"), spi1_miso),
  139. SKY_PINFUNCTION(PINCTRL_PIN(43, "SPI1_CS0"), spi1_cs0),
  140. SKY_PINFUNCTION(PINCTRL_PIN(44, "SPI1_CS1"), spi1_cs1),
  141. SKY_PINFUNCTION(PINCTRL_PIN(45, "SPI1_MOSI"), spi1_mosi),
  142. SKY_PINFUNCTION(PINCTRL_PIN(46, "SPI1_CLK"), spi1_clk),
  143. SKY_PINFUNCTION(PINCTRL_PIN(47, "GPIO30"), gpio30),
  144. SKY_PINFUNCTION(PINCTRL_PIN(48, "GPIO31"), gpio31),
  145. SKY_PINFUNCTION(PINCTRL_PIN(49, "GPIO32"), gpio32),
  146. SKY_PINFUNCTION(PINCTRL_PIN(50, "GPIO33"), gpio33),
  147. SKY_PINFUNCTION(PINCTRL_PIN(51, "GPIO34"), gpio34),
  148. SKY_PINFUNCTION(PINCTRL_PIN(52, "GPIO35"), gpio35),
  149. SKY_PINFUNCTION(PINCTRL_PIN(53, "GPIO36"), gpio36),
  150. SKY_PINFUNCTION(PINCTRL_PIN(54, "GPIO37"), gpio37),
  151. SKY_PINFUNCTION(PINCTRL_PIN(55, "GPIO38"), gpio38),
  152. SKY_PINFUNCTION(PINCTRL_PIN(56, "GPIO39"), gpio39),
  153. SKY_PINFUNCTION(PINCTRL_PIN(57, "GPIO40"), gpio40),
  154. SKY_PINFUNCTION(PINCTRL_PIN(58, "GPIO41"), gpio41),
  155. SKY_PINFUNCTION(PINCTRL_PIN(59, "GPIO42"), gpio42),
  156. SKY_PINFUNCTION(PINCTRL_PIN(60, "SE_QSPI_CLK"), se_qspi_clk),
  157. SKY_PINFUNCTION(PINCTRL_PIN(61, "SE_QSPI_CS_L"), se_qspi_cs),
  158. SKY_PINFUNCTION(PINCTRL_PIN(62, "SE_QSPI_DATA0"), se_qspi_data0),
  159. SKY_PINFUNCTION(PINCTRL_PIN(63, "SE_QSPI_DATA1"), se_qspi_data1),
  160. SKY_PINFUNCTION(PINCTRL_PIN(64, "SE_QSPI_DATA2"), se_qspi_data2),
  161. SKY_PINFUNCTION(PINCTRL_PIN(65, "SE_QSPI_DATA3"), se_qspi_data3),
  162. };
  163. /* Pad names for the s0 domain pinmux subsystem */
  164. static const char * const gpio43_group[] = {"GPIO43"};
  165. static const char * const gpio44_group[] = {"GPIO44"};
  166. static const char * const gpio45_group[] = {"GPIO45"};
  167. static const char * const gpio46_group[] = {"GPIO46"};
  168. static const char * const reset_in_group[] = { };
  169. static const char * const plt_reset_group[] = { };
  170. static const char * const thermtrip_group[] = { };
  171. static const char * const prochot_group[] = { };
  172. static const char * const pm_i2c0_clk_group[] = { };
  173. static const char * const pm_i2c0_data_group[] = { };
  174. static const char * const pm_i2c1_clk_group[] = { };
  175. static const char * const pm_i2c1_data_group[] = { };
  176. static const char * const pm_i2c2_clk_group[] = { };
  177. static const char * const pm_i2c2_data_group[] = { };
  178. static const char * const pm_i2c3_clk_group[] = { };
  179. static const char * const pm_i2c3_data_group[] = { };
  180. static const char * const strap0_group[] = { };
  181. static const char * const strap1_group[] = { };
  182. static const char * const dp2_digon_group[] = {"DP2_DIGON"};
  183. static const char * const dp2_blon_group[] = {"DP2_BLON"};
  184. static const char * const dp2_vary_bl_group[] = {"DP2_VARY_BL"};
  185. static const char * const i2c7_scl_group[] = {"I2C7_SCL"};
  186. static const char * const i2c7_sda_group[] = {"I2C7_SDA"};
  187. static const char * const uart6_csu_se_txd_group[] = { };
  188. static const char * const clk_req1_group[] = { };
  189. static const char * const clk_req3_group[] = { };
  190. static const char * const i2c5_scl_group[] = {"I2C5_SCL", "GPIO47"};
  191. static const char * const i2c5_sda_group[] = {"I2C5_SDA", "GPIO48"};
  192. static const char * const i2c6_scl_group[] = {"I2C6_SCL", "GPIO49"};
  193. static const char * const i2c6_sda_group[] = {"I2C6_SDA", "GPIO50"};
  194. static const char * const i2c0_scl_group[] = {"I2C0_SCL", "GPIO51"};
  195. static const char * const i2c0_sda_group[] = {"I2C0_SDA", "GPIO52"};
  196. static const char * const i2c1_scl_group[] = {"I2C1_SCL", "GPIO53"};
  197. static const char * const i2c1_sda_group[] = {"I2C1_SDA", "GPIO54"};
  198. static const char * const i2c2_scl_group[] = {"I2C2_SCL", "I3C0_SCL",
  199. "GPIO55"};
  200. static const char * const i2c2_sda_group[] = {"I2C2_SDA", "I3C0_SDA",
  201. "GPIO56"};
  202. static const char * const gpio57_group[] = {"GPIO57", "I3C0_PUR_EN_L"};
  203. static const char * const i2c3_scl_group[] = {"I2C3_SCL", "I3C1_SCL",
  204. "GPIO58"};
  205. static const char * const i2c3_sda_group[] = {"I2C3_SDA", "I3C1_SDA",
  206. "GPIO59"};
  207. static const char * const gpio60_group[] = {"GPIO60", "I3C1_PUR_EN_L"};
  208. static const char * const i2c4_scl_group[] = {"I2C4_SCL", "GPIO61"};
  209. static const char * const i2c4_sda_group[] = {"I2C4_SDA", "GPIO62"};
  210. static const char * const hda_bitclk_group[] = {"HDA_BITCLK", "I2S0_SCK",
  211. "I2S9_RSCK_DBG"};
  212. static const char * const hda_rst_group[] = {"HDA_RST_L", "I2S0_DATA_IN",
  213. "I2S9_DATA_IN_DBG"};
  214. static const char * const hda_sdin0_group[] = {"HDA_SDIN0", "I2S0_MCLK",
  215. "I2S9_TSCK_DBG"};
  216. static const char * const hda_sdout0_group[] = {"HDA_SDOUT0", "I2S0_DATA_OUT",
  217. "I2S9_TWS_DBG"};
  218. static const char * const hda_sync_group[] = {"HDA_SYNC", "I2S0_WS",
  219. "I2S9_RWS_DBG"};
  220. static const char * const hda_sdin1_group[] = {"HDA_SDIN1", "GPIO63",
  221. "I2S9_DATA_IN1_DBG"};
  222. static const char * const hda_sdout1_group[] = {"HDA_SDOUT1", "GPIO64",
  223. "I2S9_DATA_OUT0_DBG"};
  224. static const char * const i2s1_mclk_group[] = {"I2S1_MCLK", "GPIO65"};
  225. static const char * const i2s1_sck_group[] = {"I2S1_SCK", "GPIO66"};
  226. static const char * const i2s1_ws_group[] = {"I2S1_WS", "GPIO67"};
  227. static const char * const i2s1_data_in_group[] = {"I2S1_DATA_IN", "GPIO68"};
  228. static const char * const i2s1_data_out_group[] = {"I2S1_DATA_OUT", "GPIO69"};
  229. static const char * const i2s2_mck_group[] = {"I2S2_MCLK", "GPIO70"};
  230. static const char * const i2s2_rsck_group[] = {"I2S2_RSCK", "GPIO71",
  231. "I2S5_RSCK_DBG", "I2S6_RSCK_DBG"};
  232. static const char * const i2s2_rws_group[] = {"I2S2_RWS", "GPIO72",
  233. "I2S5_RWS_DBG", "I2S6_RWS_DBG"};
  234. static const char * const i2s2_tsck_group[] = {"I2S2_TSCK", "GPIO73",
  235. "I2S5_TSCK_DBG", "I2S6_TSCK_DBG"};
  236. static const char * const i2s2_tws_group[] = {"I2S2_TWS", "GPIO74",
  237. "I2S5_TWS_DBG", "I2S6_TWS_DBG"};
  238. static const char * const i2s2_data_in0_group[] = {"I2S2_DATA_IN0", "GPIO75",
  239. "I2S5_DATA_IN0_DBG", "I2S6_DATA_IN0_DBG"};
  240. static const char * const i2s2_data_in1_group[] = {"I2S2_DATA_IN1", "GPIO76",
  241. "I2S5_DATA_IN1_DBG", "I2S6_DATA_IN1_DBG"};
  242. static const char * const i2s2_data_out0_group[] = {"I2S2_DATA_OUT0", "GPIO77",
  243. "I2S5_DATA_OUT0_DBG", "I2S6_DATA_OUT0_DBG"};
  244. static const char * const i2s2_data_out1_group[] = {"I2S2_DATA_OUT1", "GPIO78",
  245. "I2S5_DATA_OUT1_DBG", "I2S6_DATA_OUT1_DBG"};
  246. static const char * const i2s2_data_out2_group[] = {"I2S2_DATA_OUT2",
  247. "GPIO79"};
  248. static const char * const i2s2_data_out3_group[] = {"I2S2_DATA_OUT3", "GPIO80",
  249. "I2S9_DATA_OUT1_DBG"};
  250. static const char * const i2s3_mclk_group[] = {"I2S3_MCLK", "GPIO81"};
  251. static const char * const i2s3_rsck_group[] = {"I2S3_RSCK", "GPIO82",
  252. "I2S7_RSCK_DBG", "I2S8_RSCK_DBG"};
  253. static const char * const i2s3_rws_group[] = {"I2S3_RWS", "GPIO83",
  254. "I2S7_RWS_DBG", "I2S8_RWS_DBG"};
  255. static const char * const i2s3_tsck_group[] = {"I2S3_TSCK", "GPIO84",
  256. "I2S7_TSCK_DBG", "I2S8_TSCK_DBG"};
  257. static const char * const i2s3_tws_group[] = {"I2S3_TWS", "GPIO85",
  258. "I2S7_TWS_DBG", "I2S8_TWS_DBG"};
  259. static const char * const i2s3_data_in0_group[] = {"I2S3_DATA_IN0", "GPIO86",
  260. "I2S7_DATA_IN0_DBG", "I2S8_DATA_IN0_DBG"};
  261. static const char * const i2s3_data_in1_group[] = {"I2S3_DATA_IN1", "GPIO87",
  262. "I2S7_DATA_IN1_DBG", "I2S8_DATA_IN1_DBG"};
  263. static const char * const i2s3_data_out0_group[] = {"I2S3_DATA_OUT0", "GPIO88",
  264. "I2S7_DATA_OUT0_DBG", "I2S8_DATA_OUT0_DBG"};
  265. static const char * const i2s3_data_out1_group[] = {"I2S3_DATA_OUT1", "GPIO89",
  266. "I2S7_DATA_OUT1_DBG", "I2S8_DATA_OUT1_DBG"};
  267. static const char * const gpio90_group[] = {"GPIO90", "I2S4_MCLK_LB"};
  268. static const char * const gpio91_group[] = {"GPIO91", "I2S4_SCK_LB"};
  269. static const char * const gpio92_group[] = {"GPIO92", "I2S4_WS_LB"};
  270. static const char * const gpio93_group[] = {"GPIO93", "I2S4_DATA_IN_LB"};
  271. static const char * const gpio94_group[] = {"GPIO94", "I2S4_DATA_OUT_LB"};
  272. static const char * const uart0_txd_group[] = {"UART0_TXD", "PWM0", "GPIO95"};
  273. static const char * const uart0_rxd_group[] = {"UART0_RXD", "PWM1", "GPIO96"};
  274. static const char * const uart0_cts_group[] = {"UART0_CTS", "FAN_OUT2",
  275. "GPIO97"};
  276. static const char * const uart0_rts_group[] = {"UART0_RTS", "FAN_TACH2",
  277. "GPIO98"};
  278. static const char * const uart1_txd_group[] = {"UART1_TXD", "FAN_OUT0",
  279. "GPIO99"};
  280. static const char * const uart1_rxd_group[] = {"UART1_RXD", "FAN_TACH0",
  281. "GPIO100"};
  282. static const char * const uart1_cts_group[] = {"UART1_CTS", "FAN_OUT1",
  283. "GPIO101"};
  284. static const char * const uart1_rts_group[] = {"UART1_RTS", "FAN_TACH1",
  285. "GPIO102"};
  286. static const char * const uart2_txd_group[] = {"UART2_TXD", "GPIO103"};
  287. static const char * const uart2_rxd_group[] = {"UART2_RXD", "GPIO104"};
  288. static const char * const uart3_txd_group[] = {"UART3_TXD", "GPIO105"};
  289. static const char * const uart3_rxd_group[] = {"UART3_RXD", "GPIO106"};
  290. static const char * const uart3_cts_group[] = {"UART3_CTS", "GPIO107",
  291. "TRIGIN0"};
  292. static const char * const uart3_rts_group[] = {"UART3_RTS", "GPIO108",
  293. "TRIGIN1"};
  294. static const char * const uart4_csu_pm_txd_group[] = {"UART4_CSU_PM_TXD",
  295. "GPIO109"};
  296. static const char * const uart4_csu_pm_rxd_group[] = {"UART4_CSU_PM_RXD",
  297. "GPIO110"};
  298. static const char * const uart5_csu_se_txd_group[] = {"UART5_CSU_SE_TXD",
  299. "GPIO111"};
  300. static const char * const uart5_csu_se_rxd_group[] = {"UART5_CSU_SE_RXD",
  301. "GPIO112"};
  302. static const char * const uart6_csu_se_rxd_group[] = {"UART6_CSU_SE_RXD",
  303. "GPIO113"};
  304. static const char * const clk_req0_group[] = {"CLK_REQ0_L", "GPIO114"};
  305. static const char * const clk_req2_group[] = {"CLK_REQ2_L", "GPIO115"};
  306. static const char * const clk_req4_group[] = {"CLK_REQ4_L", "GPIO116"};
  307. static const char * const csi0_mclk0_group[] = {"CSI0_MCLK0", "GPIO117"};
  308. static const char * const csi0_mclk1_group[] = {"CSI0_MCLK1", "GPIO118"};
  309. static const char * const csi1_mclk0_group[] = {"CSI1_MCLK0", "GPIO119"};
  310. static const char * const csi1_mclk1_group[] = {"CSI1_MCLK1", "GPIO120"};
  311. static const char * const gpio121_group[] = {"GPIO121", "GMAC0_REFCLK_25M"};
  312. static const char * const gpio122_group[] = {"GPIO122", "GMAC0_TX_CTL"};
  313. static const char * const gpio123_group[] = {"GPIO123", "GMAC0_TXD0"};
  314. static const char * const gpio124_group[] = {"GPIO124", "GMAC0_TXD1"};
  315. static const char * const gpio125_group[] = {"GPIO125", "GMAC0_TXD2"};
  316. static const char * const gpio126_group[] = {"GPIO126", "GMAC0_TXD3"};
  317. static const char * const gpio127_group[] = {"GPIO127", "GMAC0_TX_CLK"};
  318. static const char * const gpio128_group[] = {"GPIO128", "GMAC0_RX_CTL"};
  319. static const char * const gpio129_group[] = {"GPIO129", "GMAC0_RXD0"};
  320. static const char * const gpio130_group[] = {"GPIO130", "GMAC0_RXD1"};
  321. static const char * const gpio131_group[] = {"GPIO131", "GMAC0_RXD2"};
  322. static const char * const gpio132_group[] = {"GPIO132", "GMAC0_RXD3"};
  323. static const char * const gpio133_group[] = {"GPIO133", "GMAC0_RX_CLK"};
  324. static const char * const gpio134_group[] = {"GPIO134", "GMAC0_MDC"};
  325. static const char * const gpio135_group[] = {"GPIO135", "GMAC0_MDIO"};
  326. static const char * const gpio136_group[] = {"GPIO136", "GMAC1_REFCLK_25M"};
  327. static const char * const gpio137_group[] = {"GPIO137", "GMAC1_TX_CTL"};
  328. static const char * const gpio138_group[] = {"GPIO138", "GMAC1_TXD0",
  329. "SPI2_MISO"};
  330. static const char * const gpio139_group[] = {"GPIO139", "GMAC1_TXD1",
  331. "SPI2_CS0"};
  332. static const char * const gpio140_group[] = {"GPIO140", "GMAC1_TXD2",
  333. "SPI2_CS1"};
  334. static const char * const gpio141_group[] = {"GPIO141", "GMAC1_TXD3",
  335. "SPI2_MOSI"};
  336. static const char * const gpio142_group[] = {"GPIO142", "GMAC1_TX_CLK",
  337. "SPI2_CLK"};
  338. static const char * const gpio143_group[] = {"GPIO143", "GMAC1_RX_CTL"};
  339. static const char * const gpio144_group[] = {"GPIO144", "GMAC1_RXD0"};
  340. static const char * const gpio145_group[] = {"GPIO145", "GMAC1_RXD1"};
  341. static const char * const gpio146_group[] = {"GPIO146", "GMAC1_RXD2"};
  342. static const char * const gpio147_group[] = {"GPIO147", "GMAC1_RXD3"};
  343. static const char * const gpio148_group[] = {"GPIO148", "GMAC1_RX_CLK"};
  344. static const char * const gpio149_group[] = {"GPIO149", "GMAC1_MDC"};
  345. static const char * const gpio150_group[] = {"GPIO150", "GMAC1_MDIO"};
  346. static const char * const gpio151_group[] = {"GPIO151", "PM_GPIO0"};
  347. static const char * const gpio152_group[] = {"GPIO152", "PM_GPIO1"};
  348. static const char * const gpio153_group[] = {"GPIO153", "PM_GPIO2"};
  349. static const struct sky1_pin_desc sky1_pinctrl_pads[] = {
  350. SKY_PINFUNCTION(PINCTRL_PIN(0, "GPIO43"), gpio43),
  351. SKY_PINFUNCTION(PINCTRL_PIN(1, "GPIO44"), gpio44),
  352. SKY_PINFUNCTION(PINCTRL_PIN(2, "GPIO45"), gpio45),
  353. SKY_PINFUNCTION(PINCTRL_PIN(3, "GPIO46"), gpio46),
  354. SKY_PINFUNCTION(PINCTRL_PIN(4, "RESET_IN_L"), reset_in),
  355. SKY_PINFUNCTION(PINCTRL_PIN(5, "PLT_RESET_L"), plt_reset),
  356. SKY_PINFUNCTION(PINCTRL_PIN(6, "THERMTRIP_L"), thermtrip),
  357. SKY_PINFUNCTION(PINCTRL_PIN(7, "PROCHOT_L"), prochot),
  358. SKY_PINFUNCTION(PINCTRL_PIN(8, "PM_I2C0_CLK"), pm_i2c0_clk),
  359. SKY_PINFUNCTION(PINCTRL_PIN(9, "PM_I2C0_DATA"), pm_i2c0_data),
  360. SKY_PINFUNCTION(PINCTRL_PIN(10, "PM_I2C1_CLK"), pm_i2c1_clk),
  361. SKY_PINFUNCTION(PINCTRL_PIN(11, "PM_I2C1_DATA"), pm_i2c1_data),
  362. SKY_PINFUNCTION(PINCTRL_PIN(12, "PM_I2C2_CLK"), pm_i2c2_clk),
  363. SKY_PINFUNCTION(PINCTRL_PIN(13, "PM_I2C2_DATA"), pm_i2c2_data),
  364. SKY_PINFUNCTION(PINCTRL_PIN(14, "PM_I2C3_CLK"), pm_i2c3_clk),
  365. SKY_PINFUNCTION(PINCTRL_PIN(15, "PM_I2C3_DATA"), pm_i2c3_data),
  366. SKY_PINFUNCTION(PINCTRL_PIN(16, "STRAP0"), strap0),
  367. SKY_PINFUNCTION(PINCTRL_PIN(17, "STRAP1"), strap1),
  368. SKY_PINFUNCTION(PINCTRL_PIN(18, "DP2_DIGON"), dp2_digon),
  369. SKY_PINFUNCTION(PINCTRL_PIN(19, "DP2_BLON"), dp2_blon),
  370. SKY_PINFUNCTION(PINCTRL_PIN(20, "DP2_VARY_BL"), dp2_vary_bl),
  371. SKY_PINFUNCTION(PINCTRL_PIN(21, "I2C7_SCL"), i2c7_scl),
  372. SKY_PINFUNCTION(PINCTRL_PIN(22, "I2C7_SDA"), i2c7_sda),
  373. SKY_PINFUNCTION(PINCTRL_PIN(23, "UART6_CSU_SE_TXD"), uart6_csu_se_txd),
  374. SKY_PINFUNCTION(PINCTRL_PIN(24, "CLK_REQ1_L"), clk_req1),
  375. SKY_PINFUNCTION(PINCTRL_PIN(25, "CLK_REQ3_L"), clk_req3),
  376. SKY_PINFUNCTION(PINCTRL_PIN(26, "I2C5_SCL"), i2c5_scl),
  377. SKY_PINFUNCTION(PINCTRL_PIN(27, "I2C5_SDA"), i2c5_sda),
  378. SKY_PINFUNCTION(PINCTRL_PIN(28, "I2C6_SCL"), i2c6_scl),
  379. SKY_PINFUNCTION(PINCTRL_PIN(29, "I2C6_SDA"), i2c6_sda),
  380. SKY_PINFUNCTION(PINCTRL_PIN(30, "I2C0_CLK"), i2c0_scl),
  381. SKY_PINFUNCTION(PINCTRL_PIN(31, "I2C0_SDA"), i2c0_sda),
  382. SKY_PINFUNCTION(PINCTRL_PIN(32, "I2C1_CLK"), i2c1_scl),
  383. SKY_PINFUNCTION(PINCTRL_PIN(33, "I2C1_SDA"), i2c1_sda),
  384. SKY_PINFUNCTION(PINCTRL_PIN(34, "I2C2_SCL"), i2c2_scl),
  385. SKY_PINFUNCTION(PINCTRL_PIN(35, "I2C2_SDA"), i2c2_sda),
  386. SKY_PINFUNCTION(PINCTRL_PIN(36, "GPIO57"), gpio57),
  387. SKY_PINFUNCTION(PINCTRL_PIN(37, "I2C3_SCL"), i2c3_scl),
  388. SKY_PINFUNCTION(PINCTRL_PIN(38, "I2C3_SDA"), i2c3_sda),
  389. SKY_PINFUNCTION(PINCTRL_PIN(39, "GPIO60"), gpio60),
  390. SKY_PINFUNCTION(PINCTRL_PIN(40, "I2C4_SCL"), i2c4_scl),
  391. SKY_PINFUNCTION(PINCTRL_PIN(41, "I2C4_SDA"), i2c4_sda),
  392. SKY_PINFUNCTION(PINCTRL_PIN(42, "HDA_BITCLK"), hda_bitclk),
  393. SKY_PINFUNCTION(PINCTRL_PIN(43, "HDA_RST_L"), hda_rst),
  394. SKY_PINFUNCTION(PINCTRL_PIN(44, "HDA_SDIN0"), hda_sdin0),
  395. SKY_PINFUNCTION(PINCTRL_PIN(45, "HDA_SDOUT0"), hda_sdout0),
  396. SKY_PINFUNCTION(PINCTRL_PIN(46, "HDA_SYNC"), hda_sync),
  397. SKY_PINFUNCTION(PINCTRL_PIN(47, "HDA_SDIN1"), hda_sdin1),
  398. SKY_PINFUNCTION(PINCTRL_PIN(48, "HDA_SDOUT1"), hda_sdout1),
  399. SKY_PINFUNCTION(PINCTRL_PIN(49, "I2S1_MCLK"), i2s1_mclk),
  400. SKY_PINFUNCTION(PINCTRL_PIN(50, "I2S1_SCK"), i2s1_sck),
  401. SKY_PINFUNCTION(PINCTRL_PIN(51, "I2S1_WS"), i2s1_ws),
  402. SKY_PINFUNCTION(PINCTRL_PIN(52, "I2S1_DATA_IN"), i2s1_data_in),
  403. SKY_PINFUNCTION(PINCTRL_PIN(53, "I2S1_DATA_OUT"), i2s1_data_out),
  404. SKY_PINFUNCTION(PINCTRL_PIN(54, "I2S2_MCLK"), i2s2_mck),
  405. SKY_PINFUNCTION(PINCTRL_PIN(55, "I2S2_RSCK"), i2s2_rsck),
  406. SKY_PINFUNCTION(PINCTRL_PIN(56, "I2S2_RWS"), i2s2_rws),
  407. SKY_PINFUNCTION(PINCTRL_PIN(57, "I2S2_TSCK"), i2s2_tsck),
  408. SKY_PINFUNCTION(PINCTRL_PIN(58, "I2S2_TWS"), i2s2_tws),
  409. SKY_PINFUNCTION(PINCTRL_PIN(59, "I2S2_DATA_IN0"), i2s2_data_in0),
  410. SKY_PINFUNCTION(PINCTRL_PIN(60, "I2S2_DATA_IN1"), i2s2_data_in1),
  411. SKY_PINFUNCTION(PINCTRL_PIN(61, "I2S2_DATA_OUT0"), i2s2_data_out0),
  412. SKY_PINFUNCTION(PINCTRL_PIN(62, "I2S2_DATA_OUT1"), i2s2_data_out1),
  413. SKY_PINFUNCTION(PINCTRL_PIN(63, "I2S2_DATA_OUT2"), i2s2_data_out2),
  414. SKY_PINFUNCTION(PINCTRL_PIN(64, "I2S2_DATA_OUT3"), i2s2_data_out3),
  415. SKY_PINFUNCTION(PINCTRL_PIN(65, "I2S3_MCLK"), i2s3_mclk),
  416. SKY_PINFUNCTION(PINCTRL_PIN(66, "I2S3_RSCK"), i2s3_rsck),
  417. SKY_PINFUNCTION(PINCTRL_PIN(67, "I2S3_RWS"), i2s3_rws),
  418. SKY_PINFUNCTION(PINCTRL_PIN(68, "I2S3_TSCK"), i2s3_tsck),
  419. SKY_PINFUNCTION(PINCTRL_PIN(69, "I2S3_TWS"), i2s3_tws),
  420. SKY_PINFUNCTION(PINCTRL_PIN(70, "I2S3_DATA_IN0"), i2s3_data_in0),
  421. SKY_PINFUNCTION(PINCTRL_PIN(71, "I2S3_DATA_IN1"), i2s3_data_in1),
  422. SKY_PINFUNCTION(PINCTRL_PIN(72, "I2S3_DATA_OUT0"), i2s3_data_out0),
  423. SKY_PINFUNCTION(PINCTRL_PIN(73, "I2S3_DATA_OUT1"), i2s3_data_out1),
  424. SKY_PINFUNCTION(PINCTRL_PIN(74, "GPIO90"), gpio90),
  425. SKY_PINFUNCTION(PINCTRL_PIN(75, "GPIO91"), gpio91),
  426. SKY_PINFUNCTION(PINCTRL_PIN(76, "GPIO92"), gpio92),
  427. SKY_PINFUNCTION(PINCTRL_PIN(77, "GPIO93"), gpio93),
  428. SKY_PINFUNCTION(PINCTRL_PIN(78, "GPIO94"), gpio94),
  429. SKY_PINFUNCTION(PINCTRL_PIN(79, "UART0_TXD"), uart0_txd),
  430. SKY_PINFUNCTION(PINCTRL_PIN(80, "UART0_RXD"), uart0_rxd),
  431. SKY_PINFUNCTION(PINCTRL_PIN(81, "UART0_CTS"), uart0_cts),
  432. SKY_PINFUNCTION(PINCTRL_PIN(82, "UART0_RTS"), uart0_rts),
  433. SKY_PINFUNCTION(PINCTRL_PIN(83, "UART1_TXD"), uart1_txd),
  434. SKY_PINFUNCTION(PINCTRL_PIN(84, "UART1_RXD"), uart1_rxd),
  435. SKY_PINFUNCTION(PINCTRL_PIN(85, "UART1_CTS"), uart1_cts),
  436. SKY_PINFUNCTION(PINCTRL_PIN(86, "UART1_RTS"), uart1_rts),
  437. SKY_PINFUNCTION(PINCTRL_PIN(87, "UART2_TXD"), uart2_txd),
  438. SKY_PINFUNCTION(PINCTRL_PIN(88, "UART2_RXD"), uart2_rxd),
  439. SKY_PINFUNCTION(PINCTRL_PIN(89, "UART3_TXD"), uart3_txd),
  440. SKY_PINFUNCTION(PINCTRL_PIN(90, "UART3_RXD"), uart3_rxd),
  441. SKY_PINFUNCTION(PINCTRL_PIN(91, "UART3_CTS"), uart3_cts),
  442. SKY_PINFUNCTION(PINCTRL_PIN(92, "UART3_RTS"), uart3_rts),
  443. SKY_PINFUNCTION(PINCTRL_PIN(93, "UART4_CSU_PM_TXD"), uart4_csu_pm_txd),
  444. SKY_PINFUNCTION(PINCTRL_PIN(94, "UART4_CSU_PM_RXD"), uart4_csu_pm_rxd),
  445. SKY_PINFUNCTION(PINCTRL_PIN(95, "UART5_CSU_SE_TXD"), uart5_csu_se_txd),
  446. SKY_PINFUNCTION(PINCTRL_PIN(96, "UART5_CSU_SE_RXD"), uart5_csu_se_rxd),
  447. SKY_PINFUNCTION(PINCTRL_PIN(97, "UART6_CSU_SE_RXD"), uart6_csu_se_rxd),
  448. SKY_PINFUNCTION(PINCTRL_PIN(98, "CLK_REQ0_L"), clk_req0),
  449. SKY_PINFUNCTION(PINCTRL_PIN(99, "CLK_REQ2_L"), clk_req2),
  450. SKY_PINFUNCTION(PINCTRL_PIN(100, "CLK_REQ4_L"), clk_req4),
  451. SKY_PINFUNCTION(PINCTRL_PIN(101, "CSI0_MCLK0"), csi0_mclk0),
  452. SKY_PINFUNCTION(PINCTRL_PIN(102, "CSI0_MCLK1"), csi0_mclk1),
  453. SKY_PINFUNCTION(PINCTRL_PIN(103, "CSI1_MCLK0"), csi1_mclk0),
  454. SKY_PINFUNCTION(PINCTRL_PIN(104, "CSI1_MCLK1"), csi1_mclk1),
  455. SKY_PINFUNCTION(PINCTRL_PIN(105, "GPIO121"), gpio121),
  456. SKY_PINFUNCTION(PINCTRL_PIN(106, "GPIO122"), gpio122),
  457. SKY_PINFUNCTION(PINCTRL_PIN(107, "GPIO123"), gpio123),
  458. SKY_PINFUNCTION(PINCTRL_PIN(108, "GPIO124"), gpio124),
  459. SKY_PINFUNCTION(PINCTRL_PIN(109, "GPIO125"), gpio125),
  460. SKY_PINFUNCTION(PINCTRL_PIN(110, "GPIO126"), gpio126),
  461. SKY_PINFUNCTION(PINCTRL_PIN(111, "GPIO127"), gpio127),
  462. SKY_PINFUNCTION(PINCTRL_PIN(112, "GPIO128"), gpio128),
  463. SKY_PINFUNCTION(PINCTRL_PIN(113, "GPIO129"), gpio129),
  464. SKY_PINFUNCTION(PINCTRL_PIN(114, "GPIO130"), gpio130),
  465. SKY_PINFUNCTION(PINCTRL_PIN(115, "GPIO131"), gpio131),
  466. SKY_PINFUNCTION(PINCTRL_PIN(116, "GPIO132"), gpio132),
  467. SKY_PINFUNCTION(PINCTRL_PIN(117, "GPIO133"), gpio133),
  468. SKY_PINFUNCTION(PINCTRL_PIN(118, "GPIO134"), gpio134),
  469. SKY_PINFUNCTION(PINCTRL_PIN(119, "GPIO135"), gpio135),
  470. SKY_PINFUNCTION(PINCTRL_PIN(120, "GPIO136"), gpio136),
  471. SKY_PINFUNCTION(PINCTRL_PIN(121, "GPIO137"), gpio137),
  472. SKY_PINFUNCTION(PINCTRL_PIN(122, "GPIO138"), gpio138),
  473. SKY_PINFUNCTION(PINCTRL_PIN(123, "GPIO139"), gpio139),
  474. SKY_PINFUNCTION(PINCTRL_PIN(124, "GPIO140"), gpio140),
  475. SKY_PINFUNCTION(PINCTRL_PIN(125, "GPIO141"), gpio141),
  476. SKY_PINFUNCTION(PINCTRL_PIN(126, "GPIO142"), gpio142),
  477. SKY_PINFUNCTION(PINCTRL_PIN(127, "GPIO143"), gpio143),
  478. SKY_PINFUNCTION(PINCTRL_PIN(128, "GPIO144"), gpio144),
  479. SKY_PINFUNCTION(PINCTRL_PIN(129, "GPIO145"), gpio145),
  480. SKY_PINFUNCTION(PINCTRL_PIN(130, "GPIO146"), gpio146),
  481. SKY_PINFUNCTION(PINCTRL_PIN(131, "GPIO147"), gpio147),
  482. SKY_PINFUNCTION(PINCTRL_PIN(132, "GPIO148"), gpio148),
  483. SKY_PINFUNCTION(PINCTRL_PIN(133, "GPIO149"), gpio149),
  484. SKY_PINFUNCTION(PINCTRL_PIN(134, "GPIO150"), gpio150),
  485. SKY_PINFUNCTION(PINCTRL_PIN(135, "GPIO151"), gpio151),
  486. SKY_PINFUNCTION(PINCTRL_PIN(136, "GPIO152"), gpio152),
  487. SKY_PINFUNCTION(PINCTRL_PIN(137, "GPIO153"), gpio153),
  488. };
  489. static const struct sky1_pinctrl_soc_info sky1_pinctrl_s5_info = {
  490. .pins = sky1_pinctrl_s5_pads,
  491. .npins = ARRAY_SIZE(sky1_pinctrl_s5_pads),
  492. };
  493. static const struct sky1_pinctrl_soc_info sky1_pinctrl_info = {
  494. .pins = sky1_pinctrl_pads,
  495. .npins = ARRAY_SIZE(sky1_pinctrl_pads),
  496. };
  497. static const struct of_device_id sky1_pinctrl_of_match[] = {
  498. { .compatible = "cix,sky1-pinctrl-s5", .data = &sky1_pinctrl_s5_info, },
  499. { .compatible = "cix,sky1-pinctrl", .data = &sky1_pinctrl_info, },
  500. { /* sentinel */ }
  501. };
  502. MODULE_DEVICE_TABLE(of, sky1_pinctrl_of_match);
  503. static int __maybe_unused sky1_pinctrl_suspend(struct device *dev)
  504. {
  505. struct sky1_pinctrl *spctl = dev_get_drvdata(dev);
  506. return pinctrl_force_sleep(spctl->pctl);
  507. }
  508. static int __maybe_unused sky1_pinctrl_resume(struct device *dev)
  509. {
  510. struct sky1_pinctrl *spctl = dev_get_drvdata(dev);
  511. return pinctrl_force_default(spctl->pctl);
  512. }
  513. static const struct dev_pm_ops sky1_pinctrl_pm_ops = {
  514. SET_LATE_SYSTEM_SLEEP_PM_OPS(sky1_pinctrl_suspend,
  515. sky1_pinctrl_resume)
  516. };
  517. static int sky1_pinctrl_probe(struct platform_device *pdev)
  518. {
  519. const struct sky1_pinctrl_soc_info *pinctrl_info;
  520. pinctrl_info = device_get_match_data(&pdev->dev);
  521. if (!pinctrl_info)
  522. return -ENODEV;
  523. return sky1_base_pinctrl_probe(pdev, pinctrl_info);
  524. }
  525. static struct platform_driver sky1_pinctrl_driver = {
  526. .driver = {
  527. .name = "sky1-pinctrl",
  528. .of_match_table = sky1_pinctrl_of_match,
  529. .pm = &sky1_pinctrl_pm_ops,
  530. },
  531. .probe = sky1_pinctrl_probe,
  532. };
  533. static int __init sky1_pinctrl_init(void)
  534. {
  535. return platform_driver_register(&sky1_pinctrl_driver);
  536. }
  537. arch_initcall(sky1_pinctrl_init);
  538. MODULE_AUTHOR("Jerry Zhu <Jerry.Zhu@cixtech.com>");
  539. MODULE_DESCRIPTION("Cix Sky1 pinctrl driver");
  540. MODULE_LICENSE("GPL");