18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Marvell PXA25x family pin control 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Copyright (C) 2016 Robert Jarzmik 68c2ecf20Sopenharmony_ci */ 78c2ecf20Sopenharmony_ci#include <linux/module.h> 88c2ecf20Sopenharmony_ci#include <linux/platform_device.h> 98c2ecf20Sopenharmony_ci#include <linux/of.h> 108c2ecf20Sopenharmony_ci#include <linux/of_device.h> 118c2ecf20Sopenharmony_ci#include <linux/pinctrl/pinctrl.h> 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ci#include "pinctrl-pxa2xx.h" 148c2ecf20Sopenharmony_ci 158c2ecf20Sopenharmony_cistatic const struct pxa_desc_pin pxa25x_pins[] = { 168c2ecf20Sopenharmony_ci PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(0)), 178c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(1), 188c2ecf20Sopenharmony_ci PXA_FUNCTION(0, 1, "GP_RST")), 198c2ecf20Sopenharmony_ci PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(2)), 208c2ecf20Sopenharmony_ci PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(3)), 218c2ecf20Sopenharmony_ci PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(4)), 228c2ecf20Sopenharmony_ci PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(5)), 238c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(6), 248c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 1, "MMCCLK")), 258c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(7), 268c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 1, "48_MHz")), 278c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(8), 288c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 1, "MMCCS0")), 298c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(9), 308c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 1, "MMCCS1")), 318c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(10), 328c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 1, "RTCCLK")), 338c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(11), 348c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 1, "3_6_MHz")), 358c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(12), 368c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 1, "32_kHz")), 378c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(13), 388c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "MBGNT")), 398c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(14), 408c2ecf20Sopenharmony_ci PXA_FUNCTION(0, 1, "MBREQ")), 418c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(15), 428c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "nCS_1")), 438c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(16), 448c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "PWM0")), 458c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(17), 468c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "PWM1")), 478c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(18), 488c2ecf20Sopenharmony_ci PXA_FUNCTION(0, 1, "RDY")), 498c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(19), 508c2ecf20Sopenharmony_ci PXA_FUNCTION(0, 1, "DREQ[1]")), 518c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(20), 528c2ecf20Sopenharmony_ci PXA_FUNCTION(0, 1, "DREQ[0]")), 538c2ecf20Sopenharmony_ci PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(21)), 548c2ecf20Sopenharmony_ci PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(22)), 558c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(23), 568c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "SCLK")), 578c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(24), 588c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "SFRM")), 598c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(25), 608c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "TXD")), 618c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(26), 628c2ecf20Sopenharmony_ci PXA_FUNCTION(0, 1, "RXD")), 638c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(27), 648c2ecf20Sopenharmony_ci PXA_FUNCTION(0, 1, "EXTCLK")), 658c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(28), 668c2ecf20Sopenharmony_ci PXA_FUNCTION(0, 1, "BITCLK"), 678c2ecf20Sopenharmony_ci PXA_FUNCTION(0, 2, "BITCLK"), 688c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 1, "BITCLK")), 698c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(29), 708c2ecf20Sopenharmony_ci PXA_FUNCTION(0, 1, "SDATA_IN0"), 718c2ecf20Sopenharmony_ci PXA_FUNCTION(0, 2, "SDATA_IN")), 728c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(30), 738c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 1, "SDATA_OUT"), 748c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "SDATA_OUT")), 758c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(31), 768c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 1, "SYNC"), 778c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "SYNC")), 788c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(32), 798c2ecf20Sopenharmony_ci PXA_FUNCTION(0, 1, "SDATA_IN1"), 808c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 1, "SYSCLK")), 818c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(33), 828c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "nCS[5]")), 838c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(34), 848c2ecf20Sopenharmony_ci PXA_FUNCTION(0, 1, "FFRXD"), 858c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "MMCCS0")), 868c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(35), 878c2ecf20Sopenharmony_ci PXA_FUNCTION(0, 1, "CTS")), 888c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(36), 898c2ecf20Sopenharmony_ci PXA_FUNCTION(0, 1, "DCD")), 908c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(37), 918c2ecf20Sopenharmony_ci PXA_FUNCTION(0, 1, "DSR")), 928c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(38), 938c2ecf20Sopenharmony_ci PXA_FUNCTION(0, 1, "RI")), 948c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(39), 958c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 1, "MMCC1"), 968c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "FFTXD")), 978c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(40), 988c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "DTR")), 998c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(41), 1008c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "RTS")), 1018c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(42), 1028c2ecf20Sopenharmony_ci PXA_FUNCTION(0, 1, "BTRXD"), 1038c2ecf20Sopenharmony_ci PXA_FUNCTION(0, 3, "HWRXD")), 1048c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(43), 1058c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "BTTXD"), 1068c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 3, "HWTXD")), 1078c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(44), 1088c2ecf20Sopenharmony_ci PXA_FUNCTION(0, 1, "BTCTS"), 1098c2ecf20Sopenharmony_ci PXA_FUNCTION(0, 3, "HWCTS")), 1108c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(45), 1118c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "BTRTS"), 1128c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 3, "HWRTS")), 1138c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(46), 1148c2ecf20Sopenharmony_ci PXA_FUNCTION(0, 1, "ICP_RXD"), 1158c2ecf20Sopenharmony_ci PXA_FUNCTION(0, 2, "RXD")), 1168c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(47), 1178c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 1, "TXD"), 1188c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "ICP_TXD")), 1198c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(48), 1208c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 1, "HWTXD"), 1218c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "nPOE")), 1228c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(49), 1238c2ecf20Sopenharmony_ci PXA_FUNCTION(0, 1, "HWRXD"), 1248c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "nPWE")), 1258c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(50), 1268c2ecf20Sopenharmony_ci PXA_FUNCTION(0, 1, "HWCTS"), 1278c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "nPIOR")), 1288c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(51), 1298c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 1, "HWRTS"), 1308c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "nPIOW")), 1318c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(52), 1328c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "nPCE[1]")), 1338c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(53), 1348c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 1, "MMCCLK"), 1358c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "nPCE[2]")), 1368c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(54), 1378c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 1, "MMCCLK"), 1388c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "nPSKTSEL")), 1398c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(55), 1408c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "nPREG")), 1418c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(56), 1428c2ecf20Sopenharmony_ci PXA_FUNCTION(0, 1, "nPWAIT")), 1438c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(57), 1448c2ecf20Sopenharmony_ci PXA_FUNCTION(0, 1, "nIOIS16")), 1458c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(58), 1468c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "LDD<0>")), 1478c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(59), 1488c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "LDD<1>")), 1498c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(60), 1508c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "LDD<2>")), 1518c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(61), 1528c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "LDD<3>")), 1538c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(62), 1548c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "LDD<4>")), 1558c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(63), 1568c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "LDD<5>")), 1578c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(64), 1588c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "LDD<6>")), 1598c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(65), 1608c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "LDD<7>")), 1618c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(66), 1628c2ecf20Sopenharmony_ci PXA_FUNCTION(0, 1, "MBREQ"), 1638c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "LDD<8>")), 1648c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(67), 1658c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 1, "MMCCS0"), 1668c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "LDD<9>")), 1678c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(68), 1688c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 1, "MMCCS1"), 1698c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "LDD<10>")), 1708c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(69), 1718c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 1, "MMCCLK"), 1728c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "LDD<11>")), 1738c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(70), 1748c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 1, "RTCCLK"), 1758c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "LDD<12>")), 1768c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(71), 1778c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 1, "3_6_MHz"), 1788c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "LDD<13>")), 1798c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(72), 1808c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 1, "32_kHz"), 1818c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "LDD<14>")), 1828c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(73), 1838c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 1, "MBGNT"), 1848c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "LDD<15>")), 1858c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(74), 1868c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "LCD_FCLK")), 1878c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(75), 1888c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "LCD_LCLK")), 1898c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(76), 1908c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "LCD_PCLK")), 1918c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(77), 1928c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "LCD_ACBIAS")), 1938c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(78), 1948c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "nCS<2>")), 1958c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(79), 1968c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "nCS<3>")), 1978c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(80), 1988c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 2, "nCS<4>")), 1998c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(81), 2008c2ecf20Sopenharmony_ci PXA_FUNCTION(0, 1, "NSSPSCLK"), 2018c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 1, "NSSPSCLK")), 2028c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(82), 2038c2ecf20Sopenharmony_ci PXA_FUNCTION(0, 1, "NSSPSFRM"), 2048c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 1, "NSSPSFRM")), 2058c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(83), 2068c2ecf20Sopenharmony_ci PXA_FUNCTION(0, 2, "NSSPRXD"), 2078c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 1, "NSSPTXD")), 2088c2ecf20Sopenharmony_ci PXA_GPIO_PIN(PXA_PINCTRL_PIN(84), 2098c2ecf20Sopenharmony_ci PXA_FUNCTION(0, 2, "NSSPRXD"), 2108c2ecf20Sopenharmony_ci PXA_FUNCTION(1, 1, "NSSPTXD")), 2118c2ecf20Sopenharmony_ci}; 2128c2ecf20Sopenharmony_ci 2138c2ecf20Sopenharmony_cistatic int pxa25x_pinctrl_probe(struct platform_device *pdev) 2148c2ecf20Sopenharmony_ci{ 2158c2ecf20Sopenharmony_ci int ret, i; 2168c2ecf20Sopenharmony_ci void __iomem *base_af[8]; 2178c2ecf20Sopenharmony_ci void __iomem *base_dir[4]; 2188c2ecf20Sopenharmony_ci void __iomem *base_sleep[4]; 2198c2ecf20Sopenharmony_ci 2208c2ecf20Sopenharmony_ci base_af[0] = devm_platform_ioremap_resource(pdev, 0); 2218c2ecf20Sopenharmony_ci if (IS_ERR(base_af[0])) 2228c2ecf20Sopenharmony_ci return PTR_ERR(base_af[0]); 2238c2ecf20Sopenharmony_ci 2248c2ecf20Sopenharmony_ci base_dir[0] = devm_platform_ioremap_resource(pdev, 1); 2258c2ecf20Sopenharmony_ci if (IS_ERR(base_dir[0])) 2268c2ecf20Sopenharmony_ci return PTR_ERR(base_dir[0]); 2278c2ecf20Sopenharmony_ci 2288c2ecf20Sopenharmony_ci base_dir[3] = devm_platform_ioremap_resource(pdev, 2); 2298c2ecf20Sopenharmony_ci if (IS_ERR(base_dir[3])) 2308c2ecf20Sopenharmony_ci return PTR_ERR(base_dir[3]); 2318c2ecf20Sopenharmony_ci 2328c2ecf20Sopenharmony_ci base_sleep[0] = devm_platform_ioremap_resource(pdev, 3); 2338c2ecf20Sopenharmony_ci if (IS_ERR(base_sleep[0])) 2348c2ecf20Sopenharmony_ci return PTR_ERR(base_sleep[0]); 2358c2ecf20Sopenharmony_ci 2368c2ecf20Sopenharmony_ci for (i = 0; i < ARRAY_SIZE(base_af); i++) 2378c2ecf20Sopenharmony_ci base_af[i] = base_af[0] + sizeof(base_af[0]) * i; 2388c2ecf20Sopenharmony_ci for (i = 0; i < 3; i++) 2398c2ecf20Sopenharmony_ci base_dir[i] = base_dir[0] + sizeof(base_dir[0]) * i; 2408c2ecf20Sopenharmony_ci for (i = 0; i < ARRAY_SIZE(base_sleep); i++) 2418c2ecf20Sopenharmony_ci base_sleep[i] = base_sleep[0] + sizeof(base_af[0]) * i; 2428c2ecf20Sopenharmony_ci 2438c2ecf20Sopenharmony_ci ret = pxa2xx_pinctrl_init(pdev, pxa25x_pins, ARRAY_SIZE(pxa25x_pins), 2448c2ecf20Sopenharmony_ci base_af, base_dir, base_sleep); 2458c2ecf20Sopenharmony_ci return ret; 2468c2ecf20Sopenharmony_ci} 2478c2ecf20Sopenharmony_ci 2488c2ecf20Sopenharmony_cistatic const struct of_device_id pxa25x_pinctrl_match[] = { 2498c2ecf20Sopenharmony_ci { .compatible = "marvell,pxa25x-pinctrl", }, 2508c2ecf20Sopenharmony_ci {} 2518c2ecf20Sopenharmony_ci}; 2528c2ecf20Sopenharmony_ciMODULE_DEVICE_TABLE(of, pxa25x_pinctrl_match); 2538c2ecf20Sopenharmony_ci 2548c2ecf20Sopenharmony_cistatic struct platform_driver pxa25x_pinctrl_driver = { 2558c2ecf20Sopenharmony_ci .probe = pxa25x_pinctrl_probe, 2568c2ecf20Sopenharmony_ci .driver = { 2578c2ecf20Sopenharmony_ci .name = "pxa25x-pinctrl", 2588c2ecf20Sopenharmony_ci .of_match_table = pxa25x_pinctrl_match, 2598c2ecf20Sopenharmony_ci }, 2608c2ecf20Sopenharmony_ci}; 2618c2ecf20Sopenharmony_cimodule_platform_driver(pxa25x_pinctrl_driver); 2628c2ecf20Sopenharmony_ci 2638c2ecf20Sopenharmony_ciMODULE_AUTHOR("Robert Jarzmik <robert.jarzmik@free.fr>"); 2648c2ecf20Sopenharmony_ciMODULE_DESCRIPTION("Marvell PXA25x pinctrl driver"); 2658c2ecf20Sopenharmony_ciMODULE_LICENSE("GPL v2"); 266