brintos

brintos / linux-shallow public Read only

0
0
Text · 27.5 KiB · ac330d8 Raw
1101 lines · c
1// SPDX-License-Identifier: GPL-2.02/*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 0x100013#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_new = 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);1101