cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

pinctrl-ipq6018.c (27399B)


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