Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v6.13-rc7 1100 lines 28 kB view raw
1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Copyright (c) 2016-2018, The Linux Foundation. All rights reserved. 4 */ 5 6#include <linux/module.h> 7#include <linux/of.h> 8#include <linux/platform_device.h> 9 10#include "pinctrl-msm.h" 11 12#define REG_SIZE 0x1000 13#define PINGROUP(id, f1, f2, f3, f4, f5, f6, f7, f8, f9) \ 14 { \ 15 .grp = PINCTRL_PINGROUP("gpio" #id, \ 16 gpio##id##_pins, \ 17 ARRAY_SIZE(gpio##id##_pins)), \ 18 .funcs = (int[]){ \ 19 msm_mux_gpio, /* gpio mode */ \ 20 msm_mux_##f1, \ 21 msm_mux_##f2, \ 22 msm_mux_##f3, \ 23 msm_mux_##f4, \ 24 msm_mux_##f5, \ 25 msm_mux_##f6, \ 26 msm_mux_##f7, \ 27 msm_mux_##f8, \ 28 msm_mux_##f9 \ 29 }, \ 30 .nfuncs = 10, \ 31 .ctl_reg = REG_SIZE * id, \ 32 .io_reg = 0x4 + REG_SIZE * id, \ 33 .intr_cfg_reg = 0x8 + REG_SIZE * id, \ 34 .intr_status_reg = 0xc + REG_SIZE * id, \ 35 .intr_target_reg = 0x8 + REG_SIZE * id, \ 36 .mux_bit = 2, \ 37 .pull_bit = 0, \ 38 .drv_bit = 6, \ 39 .oe_bit = 9, \ 40 .in_bit = 0, \ 41 .out_bit = 1, \ 42 .intr_enable_bit = 0, \ 43 .intr_status_bit = 0, \ 44 .intr_target_bit = 5, \ 45 .intr_target_kpss_val = 3, \ 46 .intr_raw_status_bit = 4, \ 47 .intr_polarity_bit = 1, \ 48 .intr_detection_bit = 2, \ 49 .intr_detection_width = 2, \ 50 } 51 52static const struct pinctrl_pin_desc ipq6018_pins[] = { 53 PINCTRL_PIN(0, "GPIO_0"), 54 PINCTRL_PIN(1, "GPIO_1"), 55 PINCTRL_PIN(2, "GPIO_2"), 56 PINCTRL_PIN(3, "GPIO_3"), 57 PINCTRL_PIN(4, "GPIO_4"), 58 PINCTRL_PIN(5, "GPIO_5"), 59 PINCTRL_PIN(6, "GPIO_6"), 60 PINCTRL_PIN(7, "GPIO_7"), 61 PINCTRL_PIN(8, "GPIO_8"), 62 PINCTRL_PIN(9, "GPIO_9"), 63 PINCTRL_PIN(10, "GPIO_10"), 64 PINCTRL_PIN(11, "GPIO_11"), 65 PINCTRL_PIN(12, "GPIO_12"), 66 PINCTRL_PIN(13, "GPIO_13"), 67 PINCTRL_PIN(14, "GPIO_14"), 68 PINCTRL_PIN(15, "GPIO_15"), 69 PINCTRL_PIN(16, "GPIO_16"), 70 PINCTRL_PIN(17, "GPIO_17"), 71 PINCTRL_PIN(18, "GPIO_18"), 72 PINCTRL_PIN(19, "GPIO_19"), 73 PINCTRL_PIN(20, "GPIO_20"), 74 PINCTRL_PIN(21, "GPIO_21"), 75 PINCTRL_PIN(22, "GPIO_22"), 76 PINCTRL_PIN(23, "GPIO_23"), 77 PINCTRL_PIN(24, "GPIO_24"), 78 PINCTRL_PIN(25, "GPIO_25"), 79 PINCTRL_PIN(26, "GPIO_26"), 80 PINCTRL_PIN(27, "GPIO_27"), 81 PINCTRL_PIN(28, "GPIO_28"), 82 PINCTRL_PIN(29, "GPIO_29"), 83 PINCTRL_PIN(30, "GPIO_30"), 84 PINCTRL_PIN(31, "GPIO_31"), 85 PINCTRL_PIN(32, "GPIO_32"), 86 PINCTRL_PIN(33, "GPIO_33"), 87 PINCTRL_PIN(34, "GPIO_34"), 88 PINCTRL_PIN(35, "GPIO_35"), 89 PINCTRL_PIN(36, "GPIO_36"), 90 PINCTRL_PIN(37, "GPIO_37"), 91 PINCTRL_PIN(38, "GPIO_38"), 92 PINCTRL_PIN(39, "GPIO_39"), 93 PINCTRL_PIN(40, "GPIO_40"), 94 PINCTRL_PIN(41, "GPIO_41"), 95 PINCTRL_PIN(42, "GPIO_42"), 96 PINCTRL_PIN(43, "GPIO_43"), 97 PINCTRL_PIN(44, "GPIO_44"), 98 PINCTRL_PIN(45, "GPIO_45"), 99 PINCTRL_PIN(46, "GPIO_46"), 100 PINCTRL_PIN(47, "GPIO_47"), 101 PINCTRL_PIN(48, "GPIO_48"), 102 PINCTRL_PIN(49, "GPIO_49"), 103 PINCTRL_PIN(50, "GPIO_50"), 104 PINCTRL_PIN(51, "GPIO_51"), 105 PINCTRL_PIN(52, "GPIO_52"), 106 PINCTRL_PIN(53, "GPIO_53"), 107 PINCTRL_PIN(54, "GPIO_54"), 108 PINCTRL_PIN(55, "GPIO_55"), 109 PINCTRL_PIN(56, "GPIO_56"), 110 PINCTRL_PIN(57, "GPIO_57"), 111 PINCTRL_PIN(58, "GPIO_58"), 112 PINCTRL_PIN(59, "GPIO_59"), 113 PINCTRL_PIN(60, "GPIO_60"), 114 PINCTRL_PIN(61, "GPIO_61"), 115 PINCTRL_PIN(62, "GPIO_62"), 116 PINCTRL_PIN(63, "GPIO_63"), 117 PINCTRL_PIN(64, "GPIO_64"), 118 PINCTRL_PIN(65, "GPIO_65"), 119 PINCTRL_PIN(66, "GPIO_66"), 120 PINCTRL_PIN(67, "GPIO_67"), 121 PINCTRL_PIN(68, "GPIO_68"), 122 PINCTRL_PIN(69, "GPIO_69"), 123 PINCTRL_PIN(70, "GPIO_70"), 124 PINCTRL_PIN(71, "GPIO_71"), 125 PINCTRL_PIN(72, "GPIO_72"), 126 PINCTRL_PIN(73, "GPIO_73"), 127 PINCTRL_PIN(74, "GPIO_74"), 128 PINCTRL_PIN(75, "GPIO_75"), 129 PINCTRL_PIN(76, "GPIO_76"), 130 PINCTRL_PIN(77, "GPIO_77"), 131 PINCTRL_PIN(78, "GPIO_78"), 132 PINCTRL_PIN(79, "GPIO_79"), 133}; 134 135#define DECLARE_MSM_GPIO_PINS(pin) \ 136 static const unsigned int gpio##pin##_pins[] = { pin } 137DECLARE_MSM_GPIO_PINS(0); 138DECLARE_MSM_GPIO_PINS(1); 139DECLARE_MSM_GPIO_PINS(2); 140DECLARE_MSM_GPIO_PINS(3); 141DECLARE_MSM_GPIO_PINS(4); 142DECLARE_MSM_GPIO_PINS(5); 143DECLARE_MSM_GPIO_PINS(6); 144DECLARE_MSM_GPIO_PINS(7); 145DECLARE_MSM_GPIO_PINS(8); 146DECLARE_MSM_GPIO_PINS(9); 147DECLARE_MSM_GPIO_PINS(10); 148DECLARE_MSM_GPIO_PINS(11); 149DECLARE_MSM_GPIO_PINS(12); 150DECLARE_MSM_GPIO_PINS(13); 151DECLARE_MSM_GPIO_PINS(14); 152DECLARE_MSM_GPIO_PINS(15); 153DECLARE_MSM_GPIO_PINS(16); 154DECLARE_MSM_GPIO_PINS(17); 155DECLARE_MSM_GPIO_PINS(18); 156DECLARE_MSM_GPIO_PINS(19); 157DECLARE_MSM_GPIO_PINS(20); 158DECLARE_MSM_GPIO_PINS(21); 159DECLARE_MSM_GPIO_PINS(22); 160DECLARE_MSM_GPIO_PINS(23); 161DECLARE_MSM_GPIO_PINS(24); 162DECLARE_MSM_GPIO_PINS(25); 163DECLARE_MSM_GPIO_PINS(26); 164DECLARE_MSM_GPIO_PINS(27); 165DECLARE_MSM_GPIO_PINS(28); 166DECLARE_MSM_GPIO_PINS(29); 167DECLARE_MSM_GPIO_PINS(30); 168DECLARE_MSM_GPIO_PINS(31); 169DECLARE_MSM_GPIO_PINS(32); 170DECLARE_MSM_GPIO_PINS(33); 171DECLARE_MSM_GPIO_PINS(34); 172DECLARE_MSM_GPIO_PINS(35); 173DECLARE_MSM_GPIO_PINS(36); 174DECLARE_MSM_GPIO_PINS(37); 175DECLARE_MSM_GPIO_PINS(38); 176DECLARE_MSM_GPIO_PINS(39); 177DECLARE_MSM_GPIO_PINS(40); 178DECLARE_MSM_GPIO_PINS(41); 179DECLARE_MSM_GPIO_PINS(42); 180DECLARE_MSM_GPIO_PINS(43); 181DECLARE_MSM_GPIO_PINS(44); 182DECLARE_MSM_GPIO_PINS(45); 183DECLARE_MSM_GPIO_PINS(46); 184DECLARE_MSM_GPIO_PINS(47); 185DECLARE_MSM_GPIO_PINS(48); 186DECLARE_MSM_GPIO_PINS(49); 187DECLARE_MSM_GPIO_PINS(50); 188DECLARE_MSM_GPIO_PINS(51); 189DECLARE_MSM_GPIO_PINS(52); 190DECLARE_MSM_GPIO_PINS(53); 191DECLARE_MSM_GPIO_PINS(54); 192DECLARE_MSM_GPIO_PINS(55); 193DECLARE_MSM_GPIO_PINS(56); 194DECLARE_MSM_GPIO_PINS(57); 195DECLARE_MSM_GPIO_PINS(58); 196DECLARE_MSM_GPIO_PINS(59); 197DECLARE_MSM_GPIO_PINS(60); 198DECLARE_MSM_GPIO_PINS(61); 199DECLARE_MSM_GPIO_PINS(62); 200DECLARE_MSM_GPIO_PINS(63); 201DECLARE_MSM_GPIO_PINS(64); 202DECLARE_MSM_GPIO_PINS(65); 203DECLARE_MSM_GPIO_PINS(66); 204DECLARE_MSM_GPIO_PINS(67); 205DECLARE_MSM_GPIO_PINS(68); 206DECLARE_MSM_GPIO_PINS(69); 207DECLARE_MSM_GPIO_PINS(70); 208DECLARE_MSM_GPIO_PINS(71); 209DECLARE_MSM_GPIO_PINS(72); 210DECLARE_MSM_GPIO_PINS(73); 211DECLARE_MSM_GPIO_PINS(74); 212DECLARE_MSM_GPIO_PINS(75); 213DECLARE_MSM_GPIO_PINS(76); 214DECLARE_MSM_GPIO_PINS(77); 215DECLARE_MSM_GPIO_PINS(78); 216DECLARE_MSM_GPIO_PINS(79); 217 218enum ipq6018_functions { 219 msm_mux_atest_char, 220 msm_mux_atest_char0, 221 msm_mux_atest_char1, 222 msm_mux_atest_char2, 223 msm_mux_atest_char3, 224 msm_mux_audio0, 225 msm_mux_audio1, 226 msm_mux_audio2, 227 msm_mux_audio3, 228 msm_mux_audio_rxbclk, 229 msm_mux_audio_rxfsync, 230 msm_mux_audio_rxmclk, 231 msm_mux_audio_rxmclkin, 232 msm_mux_audio_txbclk, 233 msm_mux_audio_txfsync, 234 msm_mux_audio_txmclk, 235 msm_mux_audio_txmclkin, 236 msm_mux_blsp0_i2c, 237 msm_mux_blsp0_spi, 238 msm_mux_blsp0_uart, 239 msm_mux_blsp1_i2c, 240 msm_mux_blsp1_spi, 241 msm_mux_blsp1_uart, 242 msm_mux_blsp2_i2c, 243 msm_mux_blsp2_spi, 244 msm_mux_blsp2_uart, 245 msm_mux_blsp3_i2c, 246 msm_mux_blsp3_spi, 247 msm_mux_blsp3_uart, 248 msm_mux_blsp4_i2c, 249 msm_mux_blsp4_spi, 250 msm_mux_blsp4_uart, 251 msm_mux_blsp5_i2c, 252 msm_mux_blsp5_uart, 253 msm_mux_burn0, 254 msm_mux_burn1, 255 msm_mux_cri_trng, 256 msm_mux_cri_trng0, 257 msm_mux_cri_trng1, 258 msm_mux_cxc0, 259 msm_mux_cxc1, 260 msm_mux_dbg_out, 261 msm_mux_gcc_plltest, 262 msm_mux_gcc_tlmm, 263 msm_mux_gpio, 264 msm_mux_lpass_aud, 265 msm_mux_lpass_aud0, 266 msm_mux_lpass_aud1, 267 msm_mux_lpass_aud2, 268 msm_mux_lpass_pcm, 269 msm_mux_lpass_pdm, 270 msm_mux_mac00, 271 msm_mux_mac01, 272 msm_mux_mac10, 273 msm_mux_mac11, 274 msm_mux_mac12, 275 msm_mux_mac13, 276 msm_mux_mac20, 277 msm_mux_mac21, 278 msm_mux_mdc, 279 msm_mux_mdio, 280 msm_mux_pcie0_clk, 281 msm_mux_pcie0_rst, 282 msm_mux_pcie0_wake, 283 msm_mux_prng_rosc, 284 msm_mux_pta1_0, 285 msm_mux_pta1_1, 286 msm_mux_pta1_2, 287 msm_mux_pta2_0, 288 msm_mux_pta2_1, 289 msm_mux_pta2_2, 290 msm_mux_pwm00, 291 msm_mux_pwm01, 292 msm_mux_pwm02, 293 msm_mux_pwm03, 294 msm_mux_pwm04, 295 msm_mux_pwm10, 296 msm_mux_pwm11, 297 msm_mux_pwm12, 298 msm_mux_pwm13, 299 msm_mux_pwm14, 300 msm_mux_pwm20, 301 msm_mux_pwm21, 302 msm_mux_pwm22, 303 msm_mux_pwm23, 304 msm_mux_pwm24, 305 msm_mux_pwm30, 306 msm_mux_pwm31, 307 msm_mux_pwm32, 308 msm_mux_pwm33, 309 msm_mux_qdss_cti_trig_in_a0, 310 msm_mux_qdss_cti_trig_in_a1, 311 msm_mux_qdss_cti_trig_out_a0, 312 msm_mux_qdss_cti_trig_out_a1, 313 msm_mux_qdss_cti_trig_in_b0, 314 msm_mux_qdss_cti_trig_in_b1, 315 msm_mux_qdss_cti_trig_out_b0, 316 msm_mux_qdss_cti_trig_out_b1, 317 msm_mux_qdss_traceclk_a, 318 msm_mux_qdss_tracectl_a, 319 msm_mux_qdss_tracedata_a, 320 msm_mux_qdss_traceclk_b, 321 msm_mux_qdss_tracectl_b, 322 msm_mux_qdss_tracedata_b, 323 msm_mux_qpic_pad, 324 msm_mux_rx0, 325 msm_mux_rx1, 326 msm_mux_rx_swrm, 327 msm_mux_rx_swrm0, 328 msm_mux_rx_swrm1, 329 msm_mux_sd_card, 330 msm_mux_sd_write, 331 msm_mux_tsens_max, 332 msm_mux_tx_swrm, 333 msm_mux_tx_swrm0, 334 msm_mux_tx_swrm1, 335 msm_mux_tx_swrm2, 336 msm_mux_wci20, 337 msm_mux_wci21, 338 msm_mux_wci22, 339 msm_mux_wci23, 340 msm_mux_wsa_swrm, 341 msm_mux__, 342}; 343 344static const char * const blsp3_uart_groups[] = { 345 "gpio73", "gpio74", "gpio75", "gpio76", 346}; 347 348static const char * const blsp3_i2c_groups[] = { 349 "gpio73", "gpio74", 350}; 351 352static const char * const blsp3_spi_groups[] = { 353 "gpio73", "gpio74", "gpio75", "gpio76", "gpio77", "gpio78", "gpio79", 354}; 355 356static const char * const wci20_groups[] = { 357 "gpio0", "gpio2", 358}; 359 360static const char * const qpic_pad_groups[] = { 361 "gpio0", "gpio1", "gpio2", "gpio3", "gpio4", "gpio9", "gpio10", 362 "gpio11", "gpio17", "gpio15", "gpio12", "gpio13", "gpio14", "gpio5", 363 "gpio6", "gpio7", "gpio8", 364}; 365 366static const char * const burn0_groups[] = { 367 "gpio0", 368}; 369 370static const char * const mac12_groups[] = { 371 "gpio1", "gpio11", 372}; 373 374static const char * const qdss_tracectl_b_groups[] = { 375 "gpio1", 376}; 377 378static const char * const burn1_groups[] = { 379 "gpio1", 380}; 381 382static const char * const qdss_traceclk_b_groups[] = { 383 "gpio0", 384}; 385 386static const char * const qdss_tracedata_b_groups[] = { 387 "gpio2", "gpio3", "gpio4", "gpio5", "gpio6", "gpio7", "gpio8", "gpio9", 388 "gpio10", "gpio11", "gpio12", "gpio13", "gpio14", "gpio15", "gpio16", 389 "gpio17", 390}; 391 392static const char * const mac01_groups[] = { 393 "gpio3", "gpio4", 394}; 395 396static const char * const mac21_groups[] = { 397 "gpio5", "gpio6", 398}; 399 400static const char * const atest_char_groups[] = { 401 "gpio9", 402}; 403 404static const char * const cxc0_groups[] = { 405 "gpio9", "gpio16", 406}; 407 408static const char * const mac13_groups[] = { 409 "gpio9", "gpio16", 410}; 411 412static const char * const dbg_out_groups[] = { 413 "gpio9", 414}; 415 416static const char * const wci22_groups[] = { 417 "gpio11", "gpio17", 418}; 419 420static const char * const pwm00_groups[] = { 421 "gpio18", 422}; 423 424static const char * const atest_char0_groups[] = { 425 "gpio18", 426}; 427 428static const char * const wci23_groups[] = { 429 "gpio18", "gpio19", 430}; 431 432static const char * const mac11_groups[] = { 433 "gpio18", "gpio19", 434}; 435 436static const char * const pwm10_groups[] = { 437 "gpio19", 438}; 439 440static const char * const atest_char1_groups[] = { 441 "gpio19", 442}; 443 444static const char * const pwm20_groups[] = { 445 "gpio20", 446}; 447 448static const char * const atest_char2_groups[] = { 449 "gpio20", 450}; 451 452static const char * const pwm30_groups[] = { 453 "gpio21", 454}; 455 456static const char * const atest_char3_groups[] = { 457 "gpio21", 458}; 459 460static const char * const audio_txmclk_groups[] = { 461 "gpio22", 462}; 463 464static const char * const audio_txmclkin_groups[] = { 465 "gpio22", 466}; 467 468static const char * const pwm02_groups[] = { 469 "gpio22", 470}; 471 472static const char * const tx_swrm0_groups[] = { 473 "gpio22", 474}; 475 476static const char * const qdss_cti_trig_out_b0_groups[] = { 477 "gpio22", 478}; 479 480static const char * const audio_txbclk_groups[] = { 481 "gpio23", 482}; 483 484static const char * const pwm12_groups[] = { 485 "gpio23", 486}; 487 488static const char * const wsa_swrm_groups[] = { 489 "gpio23", "gpio24", 490}; 491 492static const char * const tx_swrm1_groups[] = { 493 "gpio23", 494}; 495 496static const char * const qdss_cti_trig_in_b0_groups[] = { 497 "gpio23", 498}; 499 500static const char * const audio_txfsync_groups[] = { 501 "gpio24", 502}; 503 504static const char * const pwm22_groups[] = { 505 "gpio24", 506}; 507 508static const char * const tx_swrm2_groups[] = { 509 "gpio24", 510}; 511 512static const char * const qdss_cti_trig_out_b1_groups[] = { 513 "gpio24", 514}; 515 516static const char * const audio0_groups[] = { 517 "gpio25", "gpio32", 518}; 519 520static const char * const pwm32_groups[] = { 521 "gpio25", 522}; 523 524static const char * const tx_swrm_groups[] = { 525 "gpio25", 526}; 527 528static const char * const qdss_cti_trig_in_b1_groups[] = { 529 "gpio25", 530}; 531 532static const char * const audio1_groups[] = { 533 "gpio26", "gpio33", 534}; 535 536static const char * const pwm04_groups[] = { 537 "gpio26", 538}; 539 540static const char * const audio2_groups[] = { 541 "gpio27", 542}; 543 544static const char * const pwm14_groups[] = { 545 "gpio27", 546}; 547 548static const char * const audio3_groups[] = { 549 "gpio28", 550}; 551 552static const char * const pwm24_groups[] = { 553 "gpio28", 554}; 555 556static const char * const audio_rxmclk_groups[] = { 557 "gpio29", 558}; 559 560static const char * const audio_rxmclkin_groups[] = { 561 "gpio29", 562}; 563 564static const char * const pwm03_groups[] = { 565 "gpio29", 566}; 567 568static const char * const lpass_pdm_groups[] = { 569 "gpio29", "gpio30", "gpio31", "gpio32", 570}; 571 572static const char * const lpass_aud_groups[] = { 573 "gpio29", 574}; 575 576static const char * const qdss_cti_trig_in_a1_groups[] = { 577 "gpio29", 578}; 579 580static const char * const audio_rxbclk_groups[] = { 581 "gpio30", 582}; 583 584static const char * const pwm13_groups[] = { 585 "gpio30", 586}; 587 588static const char * const lpass_aud0_groups[] = { 589 "gpio30", 590}; 591 592static const char * const rx_swrm_groups[] = { 593 "gpio30", 594}; 595 596static const char * const qdss_cti_trig_out_a1_groups[] = { 597 "gpio30", 598}; 599 600static const char * const audio_rxfsync_groups[] = { 601 "gpio31", 602}; 603 604static const char * const pwm23_groups[] = { 605 "gpio31", 606}; 607 608static const char * const lpass_aud1_groups[] = { 609 "gpio31", 610}; 611 612static const char * const rx_swrm0_groups[] = { 613 "gpio31", 614}; 615 616static const char * const qdss_cti_trig_in_a0_groups[] = { 617 "gpio31", 618}; 619 620static const char * const pwm33_groups[] = { 621 "gpio32", 622}; 623 624static const char * const lpass_aud2_groups[] = { 625 "gpio32", 626}; 627 628static const char * const rx_swrm1_groups[] = { 629 "gpio32", 630}; 631 632static const char * const qdss_cti_trig_out_a0_groups[] = { 633 "gpio32", 634}; 635 636static const char * const lpass_pcm_groups[] = { 637 "gpio34", "gpio35", "gpio36", "gpio37", 638}; 639 640static const char * const mac10_groups[] = { 641 "gpio34", "gpio35", 642}; 643 644static const char * const mac00_groups[] = { 645 "gpio34", "gpio35", 646}; 647 648static const char * const mac20_groups[] = { 649 "gpio36", "gpio37", 650}; 651 652static const char * const blsp0_uart_groups[] = { 653 "gpio38", "gpio39", "gpio40", "gpio41", 654}; 655 656static const char * const blsp0_i2c_groups[] = { 657 "gpio38", "gpio39", 658}; 659 660static const char * const blsp0_spi_groups[] = { 661 "gpio38", "gpio39", "gpio40", "gpio41", 662}; 663 664static const char * const blsp2_uart_groups[] = { 665 "gpio42", "gpio43", "gpio44", "gpio45", 666}; 667 668static const char * const blsp2_i2c_groups[] = { 669 "gpio42", "gpio43", 670}; 671 672static const char * const blsp2_spi_groups[] = { 673 "gpio42", "gpio43", "gpio44", "gpio45", 674}; 675 676static const char * const blsp5_i2c_groups[] = { 677 "gpio46", "gpio47", 678}; 679 680static const char * const blsp5_uart_groups[] = { 681 "gpio48", "gpio49", 682}; 683 684static const char * const qdss_traceclk_a_groups[] = { 685 "gpio48", 686}; 687 688static const char * const qdss_tracectl_a_groups[] = { 689 "gpio49", 690}; 691 692static const char * const pwm01_groups[] = { 693 "gpio50", 694}; 695 696static const char * const pta1_1_groups[] = { 697 "gpio51", 698}; 699 700static const char * const pwm11_groups[] = { 701 "gpio51", 702}; 703 704static const char * const rx1_groups[] = { 705 "gpio51", 706}; 707 708static const char * const pta1_2_groups[] = { 709 "gpio52", 710}; 711 712static const char * const pwm21_groups[] = { 713 "gpio52", 714}; 715 716static const char * const pta1_0_groups[] = { 717 "gpio53", 718}; 719 720static const char * const pwm31_groups[] = { 721 "gpio53", 722}; 723 724static const char * const prng_rosc_groups[] = { 725 "gpio53", 726}; 727 728static const char * const blsp4_uart_groups[] = { 729 "gpio55", "gpio56", "gpio57", "gpio58", 730}; 731 732static const char * const blsp4_i2c_groups[] = { 733 "gpio55", "gpio56", 734}; 735 736static const char * const blsp4_spi_groups[] = { 737 "gpio55", "gpio56", "gpio57", "gpio58", 738}; 739 740static const char * const pcie0_clk_groups[] = { 741 "gpio59", 742}; 743 744static const char * const cri_trng0_groups[] = { 745 "gpio59", 746}; 747 748static const char * const pcie0_rst_groups[] = { 749 "gpio60", 750}; 751 752static const char * const cri_trng1_groups[] = { 753 "gpio60", 754}; 755 756static const char * const pcie0_wake_groups[] = { 757 "gpio61", 758}; 759 760static const char * const cri_trng_groups[] = { 761 "gpio61", 762}; 763 764static const char * const sd_card_groups[] = { 765 "gpio62", 766}; 767 768static const char * const sd_write_groups[] = { 769 "gpio63", 770}; 771 772static const char * const rx0_groups[] = { 773 "gpio63", 774}; 775 776static const char * const tsens_max_groups[] = { 777 "gpio63", 778}; 779 780static const char * const mdc_groups[] = { 781 "gpio64", 782}; 783 784static const char * const qdss_tracedata_a_groups[] = { 785 "gpio64", "gpio65", "gpio66", "gpio67", "gpio68", "gpio69", "gpio70", 786 "gpio71", "gpio72", "gpio73", "gpio74", "gpio75", "gpio76", "gpio77", 787 "gpio78", "gpio79", 788}; 789 790static const char * const mdio_groups[] = { 791 "gpio65", 792}; 793 794static const char * const pta2_0_groups[] = { 795 "gpio66", 796}; 797 798static const char * const wci21_groups[] = { 799 "gpio66", "gpio68", 800}; 801 802static const char * const cxc1_groups[] = { 803 "gpio66", "gpio68", 804}; 805 806static const char * const pta2_1_groups[] = { 807 "gpio67", 808}; 809 810static const char * const pta2_2_groups[] = { 811 "gpio68", 812}; 813 814static const char * const blsp1_uart_groups[] = { 815 "gpio69", "gpio70", "gpio71", "gpio72", 816}; 817 818static const char * const blsp1_i2c_groups[] = { 819 "gpio69", "gpio70", 820}; 821 822static const char * const blsp1_spi_groups[] = { 823 "gpio69", "gpio70", "gpio71", "gpio72", 824}; 825 826static const char * const gcc_plltest_groups[] = { 827 "gpio69", "gpio71", 828}; 829 830static const char * const gcc_tlmm_groups[] = { 831 "gpio70", 832}; 833 834static const char * const gpio_groups[] = { 835 "gpio0", "gpio1", "gpio2", "gpio3", "gpio4", "gpio5", "gpio6", "gpio7", 836 "gpio8", "gpio9", "gpio10", "gpio11", "gpio12", "gpio13", "gpio14", 837 "gpio15", "gpio16", "gpio17", "gpio18", "gpio19", "gpio20", "gpio21", 838 "gpio22", "gpio23", "gpio24", "gpio25", "gpio26", "gpio27", "gpio28", 839 "gpio29", "gpio30", "gpio31", "gpio32", "gpio33", "gpio34", "gpio35", 840 "gpio36", "gpio37", "gpio38", "gpio39", "gpio40", "gpio41", "gpio42", 841 "gpio43", "gpio44", "gpio45", "gpio46", "gpio47", "gpio48", "gpio49", 842 "gpio50", "gpio51", "gpio52", "gpio53", "gpio54", "gpio55", "gpio56", 843 "gpio57", "gpio58", "gpio59", "gpio60", "gpio61", "gpio62", "gpio63", 844 "gpio64", "gpio65", "gpio66", "gpio67", "gpio68", "gpio69", "gpio70", 845 "gpio71", "gpio72", "gpio73", "gpio74", "gpio75", "gpio76", "gpio77", 846 "gpio78", "gpio79", 847}; 848 849static const struct pinfunction ipq6018_functions[] = { 850 MSM_PIN_FUNCTION(atest_char), 851 MSM_PIN_FUNCTION(atest_char0), 852 MSM_PIN_FUNCTION(atest_char1), 853 MSM_PIN_FUNCTION(atest_char2), 854 MSM_PIN_FUNCTION(atest_char3), 855 MSM_PIN_FUNCTION(audio0), 856 MSM_PIN_FUNCTION(audio1), 857 MSM_PIN_FUNCTION(audio2), 858 MSM_PIN_FUNCTION(audio3), 859 MSM_PIN_FUNCTION(audio_rxbclk), 860 MSM_PIN_FUNCTION(audio_rxfsync), 861 MSM_PIN_FUNCTION(audio_rxmclk), 862 MSM_PIN_FUNCTION(audio_rxmclkin), 863 MSM_PIN_FUNCTION(audio_txbclk), 864 MSM_PIN_FUNCTION(audio_txfsync), 865 MSM_PIN_FUNCTION(audio_txmclk), 866 MSM_PIN_FUNCTION(audio_txmclkin), 867 MSM_PIN_FUNCTION(blsp0_i2c), 868 MSM_PIN_FUNCTION(blsp0_spi), 869 MSM_PIN_FUNCTION(blsp0_uart), 870 MSM_PIN_FUNCTION(blsp1_i2c), 871 MSM_PIN_FUNCTION(blsp1_spi), 872 MSM_PIN_FUNCTION(blsp1_uart), 873 MSM_PIN_FUNCTION(blsp2_i2c), 874 MSM_PIN_FUNCTION(blsp2_spi), 875 MSM_PIN_FUNCTION(blsp2_uart), 876 MSM_PIN_FUNCTION(blsp3_i2c), 877 MSM_PIN_FUNCTION(blsp3_spi), 878 MSM_PIN_FUNCTION(blsp3_uart), 879 MSM_PIN_FUNCTION(blsp4_i2c), 880 MSM_PIN_FUNCTION(blsp4_spi), 881 MSM_PIN_FUNCTION(blsp4_uart), 882 MSM_PIN_FUNCTION(blsp5_i2c), 883 MSM_PIN_FUNCTION(blsp5_uart), 884 MSM_PIN_FUNCTION(burn0), 885 MSM_PIN_FUNCTION(burn1), 886 MSM_PIN_FUNCTION(cri_trng), 887 MSM_PIN_FUNCTION(cri_trng0), 888 MSM_PIN_FUNCTION(cri_trng1), 889 MSM_PIN_FUNCTION(cxc0), 890 MSM_PIN_FUNCTION(cxc1), 891 MSM_PIN_FUNCTION(dbg_out), 892 MSM_PIN_FUNCTION(gcc_plltest), 893 MSM_PIN_FUNCTION(gcc_tlmm), 894 MSM_PIN_FUNCTION(gpio), 895 MSM_PIN_FUNCTION(lpass_aud), 896 MSM_PIN_FUNCTION(lpass_aud0), 897 MSM_PIN_FUNCTION(lpass_aud1), 898 MSM_PIN_FUNCTION(lpass_aud2), 899 MSM_PIN_FUNCTION(lpass_pcm), 900 MSM_PIN_FUNCTION(lpass_pdm), 901 MSM_PIN_FUNCTION(mac00), 902 MSM_PIN_FUNCTION(mac01), 903 MSM_PIN_FUNCTION(mac10), 904 MSM_PIN_FUNCTION(mac11), 905 MSM_PIN_FUNCTION(mac12), 906 MSM_PIN_FUNCTION(mac13), 907 MSM_PIN_FUNCTION(mac20), 908 MSM_PIN_FUNCTION(mac21), 909 MSM_PIN_FUNCTION(mdc), 910 MSM_PIN_FUNCTION(mdio), 911 MSM_PIN_FUNCTION(pcie0_clk), 912 MSM_PIN_FUNCTION(pcie0_rst), 913 MSM_PIN_FUNCTION(pcie0_wake), 914 MSM_PIN_FUNCTION(prng_rosc), 915 MSM_PIN_FUNCTION(pta1_0), 916 MSM_PIN_FUNCTION(pta1_1), 917 MSM_PIN_FUNCTION(pta1_2), 918 MSM_PIN_FUNCTION(pta2_0), 919 MSM_PIN_FUNCTION(pta2_1), 920 MSM_PIN_FUNCTION(pta2_2), 921 MSM_PIN_FUNCTION(pwm00), 922 MSM_PIN_FUNCTION(pwm01), 923 MSM_PIN_FUNCTION(pwm02), 924 MSM_PIN_FUNCTION(pwm03), 925 MSM_PIN_FUNCTION(pwm04), 926 MSM_PIN_FUNCTION(pwm10), 927 MSM_PIN_FUNCTION(pwm11), 928 MSM_PIN_FUNCTION(pwm12), 929 MSM_PIN_FUNCTION(pwm13), 930 MSM_PIN_FUNCTION(pwm14), 931 MSM_PIN_FUNCTION(pwm20), 932 MSM_PIN_FUNCTION(pwm21), 933 MSM_PIN_FUNCTION(pwm22), 934 MSM_PIN_FUNCTION(pwm23), 935 MSM_PIN_FUNCTION(pwm24), 936 MSM_PIN_FUNCTION(pwm30), 937 MSM_PIN_FUNCTION(pwm31), 938 MSM_PIN_FUNCTION(pwm32), 939 MSM_PIN_FUNCTION(pwm33), 940 MSM_PIN_FUNCTION(qdss_cti_trig_in_a0), 941 MSM_PIN_FUNCTION(qdss_cti_trig_in_a1), 942 MSM_PIN_FUNCTION(qdss_cti_trig_out_a0), 943 MSM_PIN_FUNCTION(qdss_cti_trig_out_a1), 944 MSM_PIN_FUNCTION(qdss_cti_trig_in_b0), 945 MSM_PIN_FUNCTION(qdss_cti_trig_in_b1), 946 MSM_PIN_FUNCTION(qdss_cti_trig_out_b0), 947 MSM_PIN_FUNCTION(qdss_cti_trig_out_b1), 948 MSM_PIN_FUNCTION(qdss_traceclk_a), 949 MSM_PIN_FUNCTION(qdss_tracectl_a), 950 MSM_PIN_FUNCTION(qdss_tracedata_a), 951 MSM_PIN_FUNCTION(qdss_traceclk_b), 952 MSM_PIN_FUNCTION(qdss_tracectl_b), 953 MSM_PIN_FUNCTION(qdss_tracedata_b), 954 MSM_PIN_FUNCTION(qpic_pad), 955 MSM_PIN_FUNCTION(rx0), 956 MSM_PIN_FUNCTION(rx1), 957 MSM_PIN_FUNCTION(rx_swrm), 958 MSM_PIN_FUNCTION(rx_swrm0), 959 MSM_PIN_FUNCTION(rx_swrm1), 960 MSM_PIN_FUNCTION(sd_card), 961 MSM_PIN_FUNCTION(sd_write), 962 MSM_PIN_FUNCTION(tsens_max), 963 MSM_PIN_FUNCTION(tx_swrm), 964 MSM_PIN_FUNCTION(tx_swrm0), 965 MSM_PIN_FUNCTION(tx_swrm1), 966 MSM_PIN_FUNCTION(tx_swrm2), 967 MSM_PIN_FUNCTION(wci20), 968 MSM_PIN_FUNCTION(wci21), 969 MSM_PIN_FUNCTION(wci22), 970 MSM_PIN_FUNCTION(wci23), 971 MSM_PIN_FUNCTION(wsa_swrm), 972}; 973 974static const struct msm_pingroup ipq6018_groups[] = { 975 PINGROUP(0, qpic_pad, wci20, qdss_traceclk_b, _, burn0, _, _, _, _), 976 PINGROUP(1, qpic_pad, mac12, qdss_tracectl_b, _, burn1, _, _, _, _), 977 PINGROUP(2, qpic_pad, wci20, qdss_tracedata_b, _, _, _, _, _, _), 978 PINGROUP(3, qpic_pad, mac01, qdss_tracedata_b, _, _, _, _, _, _), 979 PINGROUP(4, qpic_pad, mac01, qdss_tracedata_b, _, _, _, _, _, _), 980 PINGROUP(5, qpic_pad, mac21, qdss_tracedata_b, _, _, _, _, _, _), 981 PINGROUP(6, qpic_pad, mac21, qdss_tracedata_b, _, _, _, _, _, _), 982 PINGROUP(7, qpic_pad, qdss_tracedata_b, _, _, _, _, _, _, _), 983 PINGROUP(8, qpic_pad, qdss_tracedata_b, _, _, _, _, _, _, _), 984 PINGROUP(9, qpic_pad, atest_char, cxc0, mac13, dbg_out, qdss_tracedata_b, _, _, _), 985 PINGROUP(10, qpic_pad, qdss_tracedata_b, _, _, _, _, _, _, _), 986 PINGROUP(11, qpic_pad, wci22, mac12, qdss_tracedata_b, _, _, _, _, _), 987 PINGROUP(12, qpic_pad, qdss_tracedata_b, _, _, _, _, _, _, _), 988 PINGROUP(13, qpic_pad, qdss_tracedata_b, _, _, _, _, _, _, _), 989 PINGROUP(14, qpic_pad, qdss_tracedata_b, _, _, _, _, _, _, _), 990 PINGROUP(15, qpic_pad, qdss_tracedata_b, _, _, _, _, _, _, _), 991 PINGROUP(16, qpic_pad, cxc0, mac13, qdss_tracedata_b, _, _, _, _, _), 992 PINGROUP(17, qpic_pad, qdss_tracedata_b, wci22, _, _, _, _, _, _), 993 PINGROUP(18, pwm00, atest_char0, wci23, mac11, _, _, _, _, _), 994 PINGROUP(19, pwm10, atest_char1, wci23, mac11, _, _, _, _, _), 995 PINGROUP(20, pwm20, atest_char2, _, _, _, _, _, _, _), 996 PINGROUP(21, pwm30, atest_char3, _, _, _, _, _, _, _), 997 PINGROUP(22, audio_txmclk, audio_txmclkin, pwm02, tx_swrm0, _, qdss_cti_trig_out_b0, _, _, _), 998 PINGROUP(23, audio_txbclk, pwm12, wsa_swrm, tx_swrm1, _, qdss_cti_trig_in_b0, _, _, _), 999 PINGROUP(24, audio_txfsync, pwm22, wsa_swrm, tx_swrm2, _, qdss_cti_trig_out_b1, _, _, _), 1000 PINGROUP(25, audio0, pwm32, tx_swrm, _, qdss_cti_trig_in_b1, _, _, _, _), 1001 PINGROUP(26, audio1, pwm04, _, _, _, _, _, _, _), 1002 PINGROUP(27, audio2, pwm14, _, _, _, _, _, _, _), 1003 PINGROUP(28, audio3, pwm24, _, _, _, _, _, _, _), 1004 PINGROUP(29, audio_rxmclk, audio_rxmclkin, pwm03, lpass_pdm, lpass_aud, qdss_cti_trig_in_a1, _, _, _), 1005 PINGROUP(30, audio_rxbclk, pwm13, lpass_pdm, lpass_aud0, rx_swrm, _, qdss_cti_trig_out_a1, _, _), 1006 PINGROUP(31, audio_rxfsync, pwm23, lpass_pdm, lpass_aud1, rx_swrm0, _, qdss_cti_trig_in_a0, _, _), 1007 PINGROUP(32, audio0, pwm33, lpass_pdm, lpass_aud2, rx_swrm1, _, qdss_cti_trig_out_a0, _, _), 1008 PINGROUP(33, audio1, _, _, _, _, _, _, _, _), 1009 PINGROUP(34, lpass_pcm, mac10, mac00, _, _, _, _, _, _), 1010 PINGROUP(35, lpass_pcm, mac10, mac00, _, _, _, _, _, _), 1011 PINGROUP(36, lpass_pcm, mac20, _, _, _, _, _, _, _), 1012 PINGROUP(37, lpass_pcm, mac20, _, _, _, _, _, _, _), 1013 PINGROUP(38, blsp0_uart, blsp0_i2c, blsp0_spi, _, _, _, _, _, _), 1014 PINGROUP(39, blsp0_uart, blsp0_i2c, blsp0_spi, _, _, _, _, _, _), 1015 PINGROUP(40, blsp0_uart, blsp0_spi, _, _, _, _, _, _, _), 1016 PINGROUP(41, blsp0_uart, blsp0_spi, _, _, _, _, _, _, _), 1017 PINGROUP(42, blsp2_uart, blsp2_i2c, blsp2_spi, _, _, _, _, _, _), 1018 PINGROUP(43, blsp2_uart, blsp2_i2c, blsp2_spi, _, _, _, _, _, _), 1019 PINGROUP(44, blsp2_uart, blsp2_spi, _, _, _, _, _, _, _), 1020 PINGROUP(45, blsp2_uart, blsp2_spi, _, _, _, _, _, _, _), 1021 PINGROUP(46, blsp5_i2c, _, _, _, _, _, _, _, _), 1022 PINGROUP(47, blsp5_i2c, _, _, _, _, _, _, _, _), 1023 PINGROUP(48, blsp5_uart, _, qdss_traceclk_a, _, _, _, _, _, _), 1024 PINGROUP(49, blsp5_uart, _, qdss_tracectl_a, _, _, _, _, _, _), 1025 PINGROUP(50, pwm01, _, _, _, _, _, _, _, _), 1026 PINGROUP(51, pta1_1, pwm11, _, rx1, _, _, _, _, _), 1027 PINGROUP(52, pta1_2, pwm21, _, _, _, _, _, _, _), 1028 PINGROUP(53, pta1_0, pwm31, prng_rosc, _, _, _, _, _, _), 1029 PINGROUP(54, _, _, _, _, _, _, _, _, _), 1030 PINGROUP(55, blsp4_uart, blsp4_i2c, blsp4_spi, _, _, _, _, _, _), 1031 PINGROUP(56, blsp4_uart, blsp4_i2c, blsp4_spi, _, _, _, _, _, _), 1032 PINGROUP(57, blsp4_uart, blsp4_spi, _, _, _, _, _, _, _), 1033 PINGROUP(58, blsp4_uart, blsp4_spi, _, _, _, _, _, _, _), 1034 PINGROUP(59, pcie0_clk, _, _, cri_trng0, _, _, _, _, _), 1035 PINGROUP(60, pcie0_rst, _, _, cri_trng1, _, _, _, _, _), 1036 PINGROUP(61, pcie0_wake, _, _, cri_trng, _, _, _, _, _), 1037 PINGROUP(62, sd_card, _, _, _, _, _, _, _, _), 1038 PINGROUP(63, sd_write, rx0, _, tsens_max, _, _, _, _, _), 1039 PINGROUP(64, mdc, _, qdss_tracedata_a, _, _, _, _, _, _), 1040 PINGROUP(65, mdio, _, qdss_tracedata_a, _, _, _, _, _, _), 1041 PINGROUP(66, pta2_0, wci21, cxc1, qdss_tracedata_a, _, _, _, _, _), 1042 PINGROUP(67, pta2_1, qdss_tracedata_a, _, _, _, _, _, _, _), 1043 PINGROUP(68, pta2_2, wci21, cxc1, qdss_tracedata_a, _, _, _, _, _), 1044 PINGROUP(69, blsp1_uart, blsp1_i2c, blsp1_spi, gcc_plltest, qdss_tracedata_a, _, _, _, _), 1045 PINGROUP(70, blsp1_uart, blsp1_i2c, blsp1_spi, gcc_tlmm, qdss_tracedata_a, _, _, _, _), 1046 PINGROUP(71, blsp1_uart, blsp1_spi, gcc_plltest, qdss_tracedata_a, _, _, _, _, _), 1047 PINGROUP(72, blsp1_uart, blsp1_spi, qdss_tracedata_a, _, _, _, _, _, _), 1048 PINGROUP(73, blsp3_uart, blsp3_i2c, blsp3_spi, _, qdss_tracedata_a, _, _, _, _), 1049 PINGROUP(74, blsp3_uart, blsp3_i2c, blsp3_spi, _, qdss_tracedata_a, _, _, _, _), 1050 PINGROUP(75, blsp3_uart, blsp3_spi, _, qdss_tracedata_a, _, _, _, _, _), 1051 PINGROUP(76, blsp3_uart, blsp3_spi, _, qdss_tracedata_a, _, _, _, _, _), 1052 PINGROUP(77, blsp3_spi, _, qdss_tracedata_a, _, _, _, _, _, _), 1053 PINGROUP(78, blsp3_spi, _, qdss_tracedata_a, _, _, _, _, _, _), 1054 PINGROUP(79, blsp3_spi, _, qdss_tracedata_a, _, _, _, _, _, _), 1055}; 1056 1057static const struct msm_pinctrl_soc_data ipq6018_pinctrl = { 1058 .pins = ipq6018_pins, 1059 .npins = ARRAY_SIZE(ipq6018_pins), 1060 .functions = ipq6018_functions, 1061 .nfunctions = ARRAY_SIZE(ipq6018_functions), 1062 .groups = ipq6018_groups, 1063 .ngroups = ARRAY_SIZE(ipq6018_groups), 1064 .ngpios = 80, 1065}; 1066 1067static int ipq6018_pinctrl_probe(struct platform_device *pdev) 1068{ 1069 return msm_pinctrl_probe(pdev, &ipq6018_pinctrl); 1070} 1071 1072static const struct of_device_id ipq6018_pinctrl_of_match[] = { 1073 { .compatible = "qcom,ipq6018-pinctrl", }, 1074 { }, 1075}; 1076 1077static struct platform_driver ipq6018_pinctrl_driver = { 1078 .driver = { 1079 .name = "ipq6018-pinctrl", 1080 .of_match_table = ipq6018_pinctrl_of_match, 1081 }, 1082 .probe = ipq6018_pinctrl_probe, 1083 .remove = msm_pinctrl_remove, 1084}; 1085 1086static int __init ipq6018_pinctrl_init(void) 1087{ 1088 return platform_driver_register(&ipq6018_pinctrl_driver); 1089} 1090arch_initcall(ipq6018_pinctrl_init); 1091 1092static void __exit ipq6018_pinctrl_exit(void) 1093{ 1094 platform_driver_unregister(&ipq6018_pinctrl_driver); 1095} 1096module_exit(ipq6018_pinctrl_exit); 1097 1098MODULE_DESCRIPTION("QTI ipq6018 pinctrl driver"); 1099MODULE_LICENSE("GPL v2"); 1100MODULE_DEVICE_TABLE(of, ipq6018_pinctrl_of_match);