// SPDX-License-Identifier: GPL-2.0-only
/*
* Marvell PXA27x family pin control
*
* Copyright (C) 2015 Robert Jarzmik
*/
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/of.h>
#include <linux/pinctrl/pinctrl.h>
#include "pinctrl-pxa2xx.h"
static const struct pxa_desc_pin pxa27x_pins[] = {
PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(0 )),
PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(1 )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(9 ),
PXA_FUNCTION(0 , 3 , "FFCTS" ),
PXA_FUNCTION(1 , 1 , "HZ_CLK" ),
PXA_FUNCTION(1 , 3 , "CHOUT<0>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(10 ),
PXA_FUNCTION(0 , 1 , "FFDCD" ),
PXA_FUNCTION(0 , 3 , "USB_P3_5" ),
PXA_FUNCTION(1 , 1 , "HZ_CLK" ),
PXA_FUNCTION(1 , 3 , "CHOUT<1>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(11 ),
PXA_FUNCTION(0 , 1 , "EXT_SYNC<0>" ),
PXA_FUNCTION(0 , 2 , "SSPRXD2" ),
PXA_FUNCTION(0 , 3 , "USB_P3_1" ),
PXA_FUNCTION(1 , 1 , "CHOUT<0>" ),
PXA_FUNCTION(1 , 1 , "PWM_OUT<2>" ),
PXA_FUNCTION(1 , 3 , "48_MHz" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(12 ),
PXA_FUNCTION(0 , 1 , "EXT_SYNC<1>" ),
PXA_FUNCTION(0 , 2 , "CIF_DD<7>" ),
PXA_FUNCTION(1 , 1 , "CHOUT<1>" ),
PXA_FUNCTION(1 , 1 , "PWM_OUT<3>" ),
PXA_FUNCTION(1 , 3 , "48_MHz" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(13 ),
PXA_FUNCTION(0 , 1 , "CLK_EXT" ),
PXA_FUNCTION(0 , 2 , "KP_DKIN<7>" ),
PXA_FUNCTION(0 , 3 , "KP_MKIN<7>" ),
PXA_FUNCTION(1 , 1 , "SSPTXD2" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(14 ),
PXA_FUNCTION(0 , 1 , "L_VSYNC" ),
PXA_FUNCTION(0 , 2 , "SSPSFRM2" ),
PXA_FUNCTION(1 , 1 , "SSPSFRM2" ),
PXA_FUNCTION(1 , 3 , "UCLK" )),
PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(15 )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(16 ),
PXA_FUNCTION(0 , 1 , "KP_MKIN<5>" ),
PXA_FUNCTION(1 , 2 , "PWM_OUT<0>" ),
PXA_FUNCTION(1 , 3 , "FFTXD" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(17 ),
PXA_FUNCTION(0 , 1 , "KP_MKIN<6>" ),
PXA_FUNCTION(0 , 2 , "CIF_DD<6>" ),
PXA_FUNCTION(1 , 2 , "PWM_OUT<1>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(18 ),
PXA_FUNCTION(0 , 1 , "RDY" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(19 ),
PXA_FUNCTION(0 , 1 , "SSPSCLK2" ),
PXA_FUNCTION(0 , 3 , "FFRXD" ),
PXA_FUNCTION(1 , 1 , "SSPSCLK2" ),
PXA_FUNCTION(1 , 2 , "L_CS" ),
PXA_FUNCTION(1 , 3 , "nURST" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(20 ),
PXA_FUNCTION(0 , 1 , "DREQ<0>" ),
PXA_FUNCTION(0 , 2 , "MBREQ" ),
PXA_FUNCTION(1 , 1 , "nSDCS<2>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(21 ),
PXA_FUNCTION(1 , 1 , "nSDCS<3>" ),
PXA_FUNCTION(1 , 2 , "DVAL<0>" ),
PXA_FUNCTION(1 , 3 , "MBGNT" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(22 ),
PXA_FUNCTION(0 , 1 , "SSPEXTCLK2" ),
PXA_FUNCTION(0 , 2 , "SSPSCLKEN2" ),
PXA_FUNCTION(0 , 3 , "SSPSCLK2" ),
PXA_FUNCTION(1 , 1 , "KP_MKOUT<7>" ),
PXA_FUNCTION(1 , 2 , "SSPSYSCLK2" ),
PXA_FUNCTION(1 , 3 , "SSPSCLK2" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(23 ),
PXA_FUNCTION(0 , 2 , "SSPSCLK" ),
PXA_FUNCTION(1 , 1 , "CIF_MCLK" ),
PXA_FUNCTION(1 , 1 , "SSPSCLK" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(24 ),
PXA_FUNCTION(0 , 1 , "CIF_FV" ),
PXA_FUNCTION(0 , 2 , "SSPSFRM" ),
PXA_FUNCTION(1 , 1 , "CIF_FV" ),
PXA_FUNCTION(1 , 2 , "SSPSFRM" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(25 ),
PXA_FUNCTION(0 , 1 , "CIF_LV" ),
PXA_FUNCTION(1 , 1 , "CIF_LV" ),
PXA_FUNCTION(1 , 2 , "SSPTXD" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(26 ),
PXA_FUNCTION(0 , 1 , "SSPRXD" ),
PXA_FUNCTION(0 , 2 , "CIF_PCLK" ),
PXA_FUNCTION(0 , 3 , "FFCTS" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(27 ),
PXA_FUNCTION(0 , 1 , "SSPEXTCLK" ),
PXA_FUNCTION(0 , 2 , "SSPSCLKEN" ),
PXA_FUNCTION(0 , 3 , "CIF_DD<0>" ),
PXA_FUNCTION(1 , 1 , "SSPSYSCLK" ),
PXA_FUNCTION(1 , 3 , "FFRTS" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(28 ),
PXA_FUNCTION(0 , 1 , "AC97_BITCLK" ),
PXA_FUNCTION(0 , 2 , "I2S_BITCLK" ),
PXA_FUNCTION(0 , 3 , "SSPSFRM" ),
PXA_FUNCTION(1 , 1 , "I2S_BITCLK" ),
PXA_FUNCTION(1 , 3 , "SSPSFRM" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(29 ),
PXA_FUNCTION(0 , 1 , "AC97_SDATA_IN_0" ),
PXA_FUNCTION(0 , 2 , "I2S_SDATA_IN" ),
PXA_FUNCTION(0 , 3 , "SSPSCLK" ),
PXA_FUNCTION(1 , 1 , "SSPRXD2" ),
PXA_FUNCTION(1 , 3 , "SSPSCLK" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(30 ),
PXA_FUNCTION(1 , 1 , "I2S_SDATA_OUT" ),
PXA_FUNCTION(1 , 2 , "AC97_SDATA_OUT" ),
PXA_FUNCTION(1 , 3 , "USB_P3_2" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(31 ),
PXA_FUNCTION(1 , 1 , "I2S_SYNC" ),
PXA_FUNCTION(1 , 2 , "AC97_SYNC" ),
PXA_FUNCTION(1 , 3 , "USB_P3_6" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(32 ),
PXA_FUNCTION(1 , 1 , "MSSCLK" ),
PXA_FUNCTION(1 , 2 , "MMCLK" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(33 ),
PXA_FUNCTION(0 , 1 , "FFRXD" ),
PXA_FUNCTION(0 , 2 , "FFDSR" ),
PXA_FUNCTION(1 , 1 , "DVAL<1>" ),
PXA_FUNCTION(1 , 2 , "nCS<5>" ),
PXA_FUNCTION(1 , 3 , "MBGNT" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(34 ),
PXA_FUNCTION(0 , 1 , "FFRXD" ),
PXA_FUNCTION(0 , 2 , "KP_MKIN<3>" ),
PXA_FUNCTION(0 , 3 , "SSPSCLK3" ),
PXA_FUNCTION(1 , 1 , "USB_P2_2" ),
PXA_FUNCTION(1 , 3 , "SSPSCLK3" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(35 ),
PXA_FUNCTION(0 , 1 , "FFCTS" ),
PXA_FUNCTION(0 , 2 , "USB_P2_1" ),
PXA_FUNCTION(0 , 3 , "SSPSFRM3" ),
PXA_FUNCTION(1 , 2 , "KP_MKOUT<6>" ),
PXA_FUNCTION(1 , 3 , "SSPTXD3" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(36 ),
PXA_FUNCTION(0 , 1 , "FFDCD" ),
PXA_FUNCTION(0 , 2 , "SSPSCLK2" ),
PXA_FUNCTION(0 , 3 , "KP_MKIN<7>" ),
PXA_FUNCTION(1 , 1 , "USB_P2_4" ),
PXA_FUNCTION(1 , 2 , "SSPSCLK2" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(37 ),
PXA_FUNCTION(0 , 1 , "FFDSR" ),
PXA_FUNCTION(0 , 2 , "SSPSFRM2" ),
PXA_FUNCTION(0 , 3 , "KP_MKIN<3>" ),
PXA_FUNCTION(1 , 1 , "USB_P2_8" ),
PXA_FUNCTION(1 , 2 , "SSPSFRM2" ),
PXA_FUNCTION(1 , 3 , "FFTXD" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(38 ),
PXA_FUNCTION(0 , 1 , "FFRI" ),
PXA_FUNCTION(0 , 2 , "KP_MKIN<4>" ),
PXA_FUNCTION(0 , 3 , "USB_P2_3" ),
PXA_FUNCTION(1 , 1 , "SSPTXD3" ),
PXA_FUNCTION(1 , 2 , "SSPTXD2" ),
PXA_FUNCTION(1 , 3 , "PWM_OUT<0>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(39 ),
PXA_FUNCTION(0 , 1 , "KP_MKIN<4>" ),
PXA_FUNCTION(0 , 3 , "SSPSFRM3" ),
PXA_FUNCTION(1 , 1 , "USB_P2_6" ),
PXA_FUNCTION(1 , 2 , "FFTXD" ),
PXA_FUNCTION(1 , 3 , "SSPSFRM3" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(40 ),
PXA_FUNCTION(0 , 1 , "SSPRXD2" ),
PXA_FUNCTION(0 , 3 , "USB_P2_5" ),
PXA_FUNCTION(1 , 1 , "KP_MKOUT<6>" ),
PXA_FUNCTION(1 , 2 , "FFDTR" ),
PXA_FUNCTION(1 , 3 , "SSPSCLK3" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(41 ),
PXA_FUNCTION(0 , 1 , "FFRXD" ),
PXA_FUNCTION(0 , 2 , "USB_P2_7" ),
PXA_FUNCTION(0 , 3 , "SSPRXD3" ),
PXA_FUNCTION(1 , 1 , "KP_MKOUT<7>" ),
PXA_FUNCTION(1 , 2 , "FFRTS" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(42 ),
PXA_FUNCTION(0 , 1 , "BTRXD" ),
PXA_FUNCTION(0 , 2 , "ICP_RXD" ),
PXA_FUNCTION(1 , 3 , "CIF_MCLK" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(43 ),
PXA_FUNCTION(0 , 3 , "CIF_FV" ),
PXA_FUNCTION(1 , 1 , "ICP_TXD" ),
PXA_FUNCTION(1 , 2 , "BTTXD" ),
PXA_FUNCTION(1 , 3 , "CIF_FV" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(44 ),
PXA_FUNCTION(0 , 1 , "BTCTS" ),
PXA_FUNCTION(0 , 3 , "CIF_LV" ),
PXA_FUNCTION(1 , 3 , "CIF_LV" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(45 ),
PXA_FUNCTION(0 , 3 , "CIF_PCLK" ),
PXA_FUNCTION(1 , 1 , "AC97_SYSCLK" ),
PXA_FUNCTION(1 , 2 , "BTRTS" ),
PXA_FUNCTION(1 , 3 , "SSPSYSCLK3" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(46 ),
PXA_FUNCTION(0 , 1 , "ICP_RXD" ),
PXA_FUNCTION(0 , 2 , "STD_RXD" ),
PXA_FUNCTION(1 , 2 , "PWM_OUT<2>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(47 ),
PXA_FUNCTION(0 , 1 , "CIF_DD<0>" ),
PXA_FUNCTION(1 , 1 , "STD_TXD" ),
PXA_FUNCTION(1 , 2 , "ICP_TXD" ),
PXA_FUNCTION(1 , 3 , "PWM_OUT<3>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(48 ),
PXA_FUNCTION(0 , 1 , "CIF_DD<5>" ),
PXA_FUNCTION(1 , 1 , "BB_OB_DAT<1>" ),
PXA_FUNCTION(1 , 2 , "nPOE" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(49 ),
PXA_FUNCTION(1 , 2 , "nPWE" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(50 ),
PXA_FUNCTION(0 , 1 , "CIF_DD<3>" ),
PXA_FUNCTION(0 , 3 , "SSPSCLK2" ),
PXA_FUNCTION(1 , 1 , "BB_OB_DAT<2>" ),
PXA_FUNCTION(1 , 2 , "nPIOR" ),
PXA_FUNCTION(1 , 3 , "SSPSCLK2" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(51 ),
PXA_FUNCTION(0 , 1 , "CIF_DD<2>" ),
PXA_FUNCTION(1 , 1 , "BB_OB_DAT<3>" ),
PXA_FUNCTION(1 , 2 , "nPIOW" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(52 ),
PXA_FUNCTION(0 , 1 , "CIF_DD<4>" ),
PXA_FUNCTION(0 , 2 , "SSPSCLK3" ),
PXA_FUNCTION(1 , 1 , "BB_OB_CLK" ),
PXA_FUNCTION(1 , 2 , "SSPSCLK3" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(53 ),
PXA_FUNCTION(0 , 1 , "FFRXD" ),
PXA_FUNCTION(0 , 2 , "USB_P2_3" ),
PXA_FUNCTION(1 , 1 , "BB_OB_STB" ),
PXA_FUNCTION(1 , 2 , "CIF_MCLK" ),
PXA_FUNCTION(1 , 3 , "SSPSYSCLK" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(54 ),
PXA_FUNCTION(0 , 2 , "BB_OB_WAIT" ),
PXA_FUNCTION(0 , 3 , "CIF_PCLK" ),
PXA_FUNCTION(1 , 2 , "nPCE<2>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(55 ),
PXA_FUNCTION(0 , 1 , "CIF_DD<1>" ),
PXA_FUNCTION(0 , 2 , "BB_IB_DAT<1>" ),
PXA_FUNCTION(1 , 2 , "nPREG" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(56 ),
PXA_FUNCTION(0 , 1 , "nPWAIT" ),
PXA_FUNCTION(0 , 2 , "BB_IB_DAT<2>" ),
PXA_FUNCTION(1 , 1 , "USB_P3_4" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(57 ),
PXA_FUNCTION(0 , 1 , "nIOS16" ),
PXA_FUNCTION(0 , 2 , "BB_IB_DAT<3>" ),
PXA_FUNCTION(1 , 3 , "SSPTXD" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(58 ),
PXA_FUNCTION(0 , 2 , "LDD<0>" ),
PXA_FUNCTION(1 , 2 , "LDD<0>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(59 ),
PXA_FUNCTION(0 , 2 , "LDD<1>" ),
PXA_FUNCTION(1 , 2 , "LDD<1>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(60 ),
PXA_FUNCTION(0 , 2 , "LDD<2>" ),
PXA_FUNCTION(1 , 2 , "LDD<2>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(61 ),
PXA_FUNCTION(0 , 2 , "LDD<3>" ),
PXA_FUNCTION(1 , 2 , "LDD<3>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(62 ),
PXA_FUNCTION(0 , 2 , "LDD<4>" ),
PXA_FUNCTION(1 , 2 , "LDD<4>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(63 ),
PXA_FUNCTION(0 , 2 , "LDD<5>" ),
PXA_FUNCTION(1 , 2 , "LDD<5>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(64 ),
PXA_FUNCTION(0 , 2 , "LDD<6>" ),
PXA_FUNCTION(1 , 2 , "LDD<6>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(65 ),
PXA_FUNCTION(0 , 2 , "LDD<7>" ),
PXA_FUNCTION(1 , 2 , "LDD<7>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(66 ),
PXA_FUNCTION(0 , 2 , "LDD<8>" ),
PXA_FUNCTION(1 , 2 , "LDD<8>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(67 ),
PXA_FUNCTION(0 , 2 , "LDD<9>" ),
PXA_FUNCTION(1 , 2 , "LDD<9>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(68 ),
PXA_FUNCTION(0 , 2 , "LDD<10>" ),
PXA_FUNCTION(1 , 2 , "LDD<10>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(69 ),
PXA_FUNCTION(0 , 2 , "LDD<11>" ),
PXA_FUNCTION(1 , 2 , "LDD<11>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(70 ),
PXA_FUNCTION(0 , 2 , "LDD<12>" ),
PXA_FUNCTION(1 , 2 , "LDD<12>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(71 ),
PXA_FUNCTION(0 , 2 , "LDD<13>" ),
PXA_FUNCTION(1 , 2 , "LDD<13>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(72 ),
PXA_FUNCTION(0 , 2 , "LDD<14>" ),
PXA_FUNCTION(1 , 2 , "LDD<14>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(73 ),
PXA_FUNCTION(0 , 2 , "LDD<15>" ),
PXA_FUNCTION(1 , 2 , "LDD<15>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(74 ),
PXA_FUNCTION(1 , 2 , "L_FCLK_RD" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(75 ),
PXA_FUNCTION(1 , 2 , "L_LCLK_A0" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(76 ),
PXA_FUNCTION(1 , 2 , "L_PCLK_WR" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(77 ),
PXA_FUNCTION(1 , 2 , "L_BIAS" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(78 ),
PXA_FUNCTION(1 , 1 , "nPCE<2>" ),
PXA_FUNCTION(1 , 2 , "nCS<2>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(79 ),
PXA_FUNCTION(1 , 1 , "PSKTSEL" ),
PXA_FUNCTION(1 , 2 , "nCS<3>" ),
PXA_FUNCTION(1 , 3 , "PWM_OUT<2>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(80 ),
PXA_FUNCTION(0 , 1 , "DREQ<1>" ),
PXA_FUNCTION(0 , 2 , "MBREQ" ),
PXA_FUNCTION(1 , 2 , "nCS<4>" ),
PXA_FUNCTION(1 , 3 , "PWM_OUT<3>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(81 ),
PXA_FUNCTION(0 , 2 , "CIF_DD<0>" ),
PXA_FUNCTION(1 , 1 , "SSPTXD3" ),
PXA_FUNCTION(1 , 2 , "BB_OB_DAT<0>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(82 ),
PXA_FUNCTION(0 , 1 , "SSPRXD3" ),
PXA_FUNCTION(0 , 2 , "BB_IB_DAT<0>" ),
PXA_FUNCTION(0 , 3 , "CIF_DD<5>" ),
PXA_FUNCTION(1 , 3 , "FFDTR" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(83 ),
PXA_FUNCTION(0 , 1 , "SSPSFRM3" ),
PXA_FUNCTION(0 , 2 , "BB_IB_CLK" ),
PXA_FUNCTION(0 , 3 , "CIF_DD<5>" ),
PXA_FUNCTION(1 , 1 , "SSPSFRM3" ),
PXA_FUNCTION(1 , 2 , "FFTXD" ),
PXA_FUNCTION(1 , 3 , "FFRTS" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(84 ),
PXA_FUNCTION(0 , 1 , "SSPCLK3" ),
PXA_FUNCTION(0 , 2 , "BB_IB_STB" ),
PXA_FUNCTION(0 , 3 , "CIF_FV" ),
PXA_FUNCTION(1 , 1 , "SSPCLK3" ),
PXA_FUNCTION(1 , 3 , "CIF_FV" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(85 ),
PXA_FUNCTION(0 , 1 , "FFRXD" ),
PXA_FUNCTION(0 , 2 , "DREQ<2>" ),
PXA_FUNCTION(0 , 3 , "CIF_LV" ),
PXA_FUNCTION(1 , 1 , "nPCE<1>" ),
PXA_FUNCTION(1 , 2 , "BB_IB_WAIT" ),
PXA_FUNCTION(1 , 3 , "CIF_LV" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(86 ),
PXA_FUNCTION(0 , 1 , "SSPRXD2" ),
PXA_FUNCTION(0 , 2 , "LDD<16>" ),
PXA_FUNCTION(0 , 3 , "USB_P3_5" ),
PXA_FUNCTION(1 , 1 , "nPCE<1>" ),
PXA_FUNCTION(1 , 2 , "LDD<16>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(87 ),
PXA_FUNCTION(0 , 1 , "nPCE<2>" ),
PXA_FUNCTION(0 , 2 , "LDD<17>" ),
PXA_FUNCTION(0 , 3 , "USB_P3_1" ),
PXA_FUNCTION(1 , 1 , "SSPTXD2" ),
PXA_FUNCTION(1 , 2 , "LDD<17>" ),
PXA_FUNCTION(1 , 3 , "SSPSFRM2" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(88 ),
PXA_FUNCTION(0 , 1 , "USBHPWR<1>" ),
PXA_FUNCTION(0 , 2 , "SSPRXD2" ),
PXA_FUNCTION(0 , 3 , "SSPSFRM2" ),
PXA_FUNCTION(1 , 2 , "SSPTXD2" ),
PXA_FUNCTION(1 , 3 , "SSPSFRM2" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(89 ),
PXA_FUNCTION(0 , 1 , "SSPRXD3" ),
PXA_FUNCTION(0 , 3 , "FFRI" ),
PXA_FUNCTION(1 , 1 , "AC97_SYSCLK" ),
PXA_FUNCTION(1 , 2 , "USBHPEN<1>" ),
PXA_FUNCTION(1 , 3 , "SSPTXD2" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(90 ),
PXA_FUNCTION(0 , 1 , "KP_MKIN<5>" ),
PXA_FUNCTION(0 , 3 , "USB_P3_5" ),
PXA_FUNCTION(1 , 1 , "CIF_DD<4>" ),
PXA_FUNCTION(1 , 2 , "nURST" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(91 ),
PXA_FUNCTION(0 , 1 , "KP_MKIN<6>" ),
PXA_FUNCTION(0 , 3 , "USB_P3_1" ),
PXA_FUNCTION(1 , 1 , "CIF_DD<5>" ),
PXA_FUNCTION(1 , 2 , "UCLK" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(92 ),
PXA_FUNCTION(0 , 1 , "MMDAT<0>" ),
PXA_FUNCTION(1 , 1 , "MMDAT<0>" ),
PXA_FUNCTION(1 , 2 , "MSBS" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(93 ),
PXA_FUNCTION(0 , 1 , "KP_DKIN<0>" ),
PXA_FUNCTION(0 , 2 , "CIF_DD<6>" ),
PXA_FUNCTION(1 , 1 , "AC97_SDATA_OUT" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(94 ),
PXA_FUNCTION(0 , 1 , "KP_DKIN<1>" ),
PXA_FUNCTION(0 , 2 , "CIF_DD<5>" ),
PXA_FUNCTION(1 , 1 , "AC97_SYNC" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(95 ),
PXA_FUNCTION(0 , 1 , "KP_DKIN<2>" ),
PXA_FUNCTION(0 , 2 , "CIF_DD<4>" ),
PXA_FUNCTION(0 , 3 , "KP_MKIN<6>" ),
PXA_FUNCTION(1 , 1 , "AC97_RESET_n" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(96 ),
PXA_FUNCTION(0 , 1 , "KP_DKIN<3>" ),
PXA_FUNCTION(0 , 2 , "MBREQ" ),
PXA_FUNCTION(0 , 3 , "FFRXD" ),
PXA_FUNCTION(1 , 2 , "DVAL<1>" ),
PXA_FUNCTION(1 , 3 , "KP_MKOUT<6>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(97 ),
PXA_FUNCTION(0 , 1 , "KP_DKIN<4>" ),
PXA_FUNCTION(0 , 2 , "DREQ<1>" ),
PXA_FUNCTION(0 , 3 , "KP_MKIN<3>" ),
PXA_FUNCTION(1 , 2 , "MBGNT" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(98 ),
PXA_FUNCTION(0 , 1 , "KP_DKIN<5>" ),
PXA_FUNCTION(0 , 2 , "CIF_DD<0>" ),
PXA_FUNCTION(0 , 3 , "KP_MKIN<4>" ),
PXA_FUNCTION(1 , 1 , "AC97_SYSCLK" ),
PXA_FUNCTION(1 , 3 , "FFRTS" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(99 ),
PXA_FUNCTION(0 , 1 , "KP_DKIN<6>" ),
PXA_FUNCTION(0 , 2 , "AC97_SDATA_IN_1" ),
PXA_FUNCTION(0 , 3 , "KP_MKIN<5>" ),
PXA_FUNCTION(1 , 3 , "FFTXD" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(100 ),
PXA_FUNCTION(0 , 1 , "KP_MKIN<0>" ),
PXA_FUNCTION(0 , 2 , "DREQ<2>" ),
PXA_FUNCTION(0 , 3 , "FFCTS" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(101 ),
PXA_FUNCTION(0 , 1 , "KP_MKIN<1>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(102 ),
PXA_FUNCTION(0 , 1 , "KP_MKIN<2>" ),
PXA_FUNCTION(0 , 3 , "FFRXD" ),
PXA_FUNCTION(1 , 1 , "nPCE<1>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(103 ),
PXA_FUNCTION(0 , 1 , "CIF_DD<3>" ),
PXA_FUNCTION(1 , 2 , "KP_MKOUT<0>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(104 ),
PXA_FUNCTION(0 , 1 , "CIF_DD<2>" ),
PXA_FUNCTION(1 , 1 , "PSKTSEL" ),
PXA_FUNCTION(1 , 2 , "KP_MKOUT<1>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(105 ),
PXA_FUNCTION(0 , 1 , "CIF_DD<1>" ),
PXA_FUNCTION(1 , 1 , "nPCE<2>" ),
PXA_FUNCTION(1 , 2 , "KP_MKOUT<2>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(106 ),
PXA_FUNCTION(0 , 1 , "CIF_DD<9>" ),
PXA_FUNCTION(1 , 2 , "KP_MKOUT<3>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(107 ),
PXA_FUNCTION(0 , 1 , "CIF_DD<8>" ),
PXA_FUNCTION(1 , 2 , "KP_MKOUT<4>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(108 ),
PXA_FUNCTION(0 , 1 , "CIF_DD<7>" ),
PXA_FUNCTION(1 , 1 , "CHOUT<0>" ),
PXA_FUNCTION(1 , 2 , "KP_MKOUT<5>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(109 ),
PXA_FUNCTION(0 , 1 , "MMDAT<1>" ),
PXA_FUNCTION(0 , 2 , "MSSDIO" ),
PXA_FUNCTION(1 , 1 , "MMDAT<1>" ),
PXA_FUNCTION(1 , 2 , "MSSDIO" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(110 ),
PXA_FUNCTION(0 , 1 , "MMDAT<2>" ),
PXA_FUNCTION(1 , 1 , "MMDAT<2>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(111 ),
PXA_FUNCTION(0 , 1 , "MMDAT<3>" ),
PXA_FUNCTION(1 , 1 , "MMDAT<3>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(112 ),
PXA_FUNCTION(0 , 1 , "MMCMD" ),
PXA_FUNCTION(0 , 2 , "nMSINS" ),
PXA_FUNCTION(1 , 1 , "MMCMD" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(113 ),
PXA_FUNCTION(0 , 3 , "USB_P3_3" ),
PXA_FUNCTION(1 , 1 , "I2S_SYSCLK" ),
PXA_FUNCTION(1 , 2 , "AC97_RESET_n" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(114 ),
PXA_FUNCTION(0 , 1 , "CIF_DD<1>" ),
PXA_FUNCTION(1 , 1 , "UEN" ),
PXA_FUNCTION(1 , 2 , "UVS0" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(115 ),
PXA_FUNCTION(0 , 1 , "DREQ<0>" ),
PXA_FUNCTION(0 , 2 , "CIF_DD<3>" ),
PXA_FUNCTION(0 , 3 , "MBREQ" ),
PXA_FUNCTION(1 , 1 , "UEN" ),
PXA_FUNCTION(1 , 2 , "nUVS1" ),
PXA_FUNCTION(1 , 3 , "PWM_OUT<1>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(116 ),
PXA_FUNCTION(0 , 1 , "CIF_DD<2>" ),
PXA_FUNCTION(0 , 2 , "AC97_SDATA_IN_0" ),
PXA_FUNCTION(0 , 3 , "UDET" ),
PXA_FUNCTION(1 , 1 , "DVAL<0>" ),
PXA_FUNCTION(1 , 2 , "nUVS2" ),
PXA_FUNCTION(1 , 3 , "MBGNT" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(117 ),
PXA_FUNCTION(0 , 1 , "SCL" ),
PXA_FUNCTION(1 , 1 , "SCL" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(118 ),
PXA_FUNCTION(0 , 1 , "SDA" ),
PXA_FUNCTION(1 , 1 , "SDA" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(119 ),
PXA_FUNCTION(0 , 1 , "USBHPWR<2>" )),
PXA_GPIO_PIN(PXA_PINCTRL_PIN(120 ),
PXA_FUNCTION(1 , 2 , "USBHPEN<2>" )),
};
static int pxa27x_pinctrl_probe(struct platform_device *pdev)
{
int i;
void __iomem *base_af[8 ];
void __iomem *base_dir[4 ];
void __iomem *base_sleep[4 ];
base_af[0 ] = devm_platform_ioremap_resource(pdev, 0 );
if (IS_ERR(base_af[0 ]))
return PTR_ERR(base_af[0 ]);
base_dir[0 ] = devm_platform_ioremap_resource(pdev, 1 );
if (IS_ERR(base_dir[0 ]))
return PTR_ERR(base_dir[0 ]);
base_dir[3 ] = devm_platform_ioremap_resource(pdev, 2 );
if (IS_ERR(base_dir[3 ]))
return PTR_ERR(base_dir[3 ]);
base_sleep[0 ] = devm_platform_ioremap_resource(pdev, 3 );
if (IS_ERR(base_sleep[0 ]))
return PTR_ERR(base_sleep[0 ]);
for (i = 0 ; i < ARRAY_SIZE(base_af); i++)
base_af[i] = base_af[0 ] + sizeof (base_af[0 ]) * i;
for (i = 0 ; i < 3 ; i++)
base_dir[i] = base_dir[0 ] + sizeof (base_dir[0 ]) * i;
for (i = 0 ; i < ARRAY_SIZE(base_sleep); i++)
base_sleep[i] = base_sleep[0 ] + sizeof (base_af[0 ]) * i;
return pxa2xx_pinctrl_init(pdev, pxa27x_pins, ARRAY_SIZE(pxa27x_pins),
base_af, base_dir, base_sleep);
}
static const struct of_device_id pxa27x_pinctrl_match[] = {
{ .compatible = "marvell,pxa27x-pinctrl" , },
{}
};
MODULE_DEVICE_TABLE(of, pxa27x_pinctrl_match);
static struct platform_driver pxa27x_pinctrl_driver = {
.probe = pxa27x_pinctrl_probe,
.driver = {
.name = "pxa27x-pinctrl" ,
.of_match_table = pxa27x_pinctrl_match,
},
};
module_platform_driver(pxa27x_pinctrl_driver);
MODULE_AUTHOR("Robert Jarzmik <robert.jarzmik@free.fr>" );
MODULE_DESCRIPTION("Marvell PXA27x pinctrl driver" );
MODULE_LICENSE("GPL v2" );
Messung V0.5 in Prozent C=100 H=99 G=99