root/drivers/pinctrl/pxa/pinctrl-pxa25x.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. pxa25x_pinctrl_probe

   1 // SPDX-License-Identifier: GPL-2.0-only
   2 /*
   3  * Marvell PXA25x family pin control
   4  *
   5  * Copyright (C) 2016 Robert Jarzmik
   6  */
   7 #include <linux/module.h>
   8 #include <linux/platform_device.h>
   9 #include <linux/of.h>
  10 #include <linux/of_device.h>
  11 #include <linux/pinctrl/pinctrl.h>
  12 
  13 #include "pinctrl-pxa2xx.h"
  14 
  15 static const struct pxa_desc_pin pxa25x_pins[] = {
  16         PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(0)),
  17         PXA_GPIO_PIN(PXA_PINCTRL_PIN(1),
  18                      PXA_FUNCTION(0, 1, "GP_RST")),
  19         PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(2)),
  20         PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(3)),
  21         PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(4)),
  22         PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(5)),
  23         PXA_GPIO_PIN(PXA_PINCTRL_PIN(6),
  24                      PXA_FUNCTION(1, 1, "MMCCLK")),
  25         PXA_GPIO_PIN(PXA_PINCTRL_PIN(7),
  26                      PXA_FUNCTION(1, 1, "48_MHz")),
  27         PXA_GPIO_PIN(PXA_PINCTRL_PIN(8),
  28                      PXA_FUNCTION(1, 1, "MMCCS0")),
  29         PXA_GPIO_PIN(PXA_PINCTRL_PIN(9),
  30                      PXA_FUNCTION(1, 1, "MMCCS1")),
  31         PXA_GPIO_PIN(PXA_PINCTRL_PIN(10),
  32                      PXA_FUNCTION(1, 1, "RTCCLK")),
  33         PXA_GPIO_PIN(PXA_PINCTRL_PIN(11),
  34                      PXA_FUNCTION(1, 1, "3_6_MHz")),
  35         PXA_GPIO_PIN(PXA_PINCTRL_PIN(12),
  36                      PXA_FUNCTION(1, 1, "32_kHz")),
  37         PXA_GPIO_PIN(PXA_PINCTRL_PIN(13),
  38                      PXA_FUNCTION(1, 2, "MBGNT")),
  39         PXA_GPIO_PIN(PXA_PINCTRL_PIN(14),
  40                      PXA_FUNCTION(0, 1, "MBREQ")),
  41         PXA_GPIO_PIN(PXA_PINCTRL_PIN(15),
  42                      PXA_FUNCTION(1, 2, "nCS_1")),
  43         PXA_GPIO_PIN(PXA_PINCTRL_PIN(16),
  44                      PXA_FUNCTION(1, 2, "PWM0")),
  45         PXA_GPIO_PIN(PXA_PINCTRL_PIN(17),
  46                      PXA_FUNCTION(1, 2, "PWM1")),
  47         PXA_GPIO_PIN(PXA_PINCTRL_PIN(18),
  48                      PXA_FUNCTION(0, 1, "RDY")),
  49         PXA_GPIO_PIN(PXA_PINCTRL_PIN(19),
  50                      PXA_FUNCTION(0, 1, "DREQ[1]")),
  51         PXA_GPIO_PIN(PXA_PINCTRL_PIN(20),
  52                      PXA_FUNCTION(0, 1, "DREQ[0]")),
  53         PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(21)),
  54         PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(22)),
  55         PXA_GPIO_PIN(PXA_PINCTRL_PIN(23),
  56                      PXA_FUNCTION(1, 2, "SCLK")),
  57         PXA_GPIO_PIN(PXA_PINCTRL_PIN(24),
  58                      PXA_FUNCTION(1, 2, "SFRM")),
  59         PXA_GPIO_PIN(PXA_PINCTRL_PIN(25),
  60                      PXA_FUNCTION(1, 2, "TXD")),
  61         PXA_GPIO_PIN(PXA_PINCTRL_PIN(26),
  62                      PXA_FUNCTION(0, 1, "RXD")),
  63         PXA_GPIO_PIN(PXA_PINCTRL_PIN(27),
  64                      PXA_FUNCTION(0, 1, "EXTCLK")),
  65         PXA_GPIO_PIN(PXA_PINCTRL_PIN(28),
  66                      PXA_FUNCTION(0, 1, "BITCLK"),
  67                      PXA_FUNCTION(0, 2, "BITCLK"),
  68                      PXA_FUNCTION(1, 1, "BITCLK")),
  69         PXA_GPIO_PIN(PXA_PINCTRL_PIN(29),
  70                      PXA_FUNCTION(0, 1, "SDATA_IN0"),
  71                      PXA_FUNCTION(0, 2, "SDATA_IN")),
  72         PXA_GPIO_PIN(PXA_PINCTRL_PIN(30),
  73                      PXA_FUNCTION(1, 1, "SDATA_OUT"),
  74                      PXA_FUNCTION(1, 2, "SDATA_OUT")),
  75         PXA_GPIO_PIN(PXA_PINCTRL_PIN(31),
  76                      PXA_FUNCTION(1, 1, "SYNC"),
  77                      PXA_FUNCTION(1, 2, "SYNC")),
  78         PXA_GPIO_PIN(PXA_PINCTRL_PIN(32),
  79                      PXA_FUNCTION(0, 1, "SDATA_IN1"),
  80                      PXA_FUNCTION(1, 1, "SYSCLK")),
  81         PXA_GPIO_PIN(PXA_PINCTRL_PIN(33),
  82                      PXA_FUNCTION(1, 2, "nCS[5]")),
  83         PXA_GPIO_PIN(PXA_PINCTRL_PIN(34),
  84                      PXA_FUNCTION(0, 1, "FFRXD"),
  85                      PXA_FUNCTION(1, 2, "MMCCS0")),
  86         PXA_GPIO_PIN(PXA_PINCTRL_PIN(35),
  87                      PXA_FUNCTION(0, 1, "CTS")),
  88         PXA_GPIO_PIN(PXA_PINCTRL_PIN(36),
  89                      PXA_FUNCTION(0, 1, "DCD")),
  90         PXA_GPIO_PIN(PXA_PINCTRL_PIN(37),
  91                      PXA_FUNCTION(0, 1, "DSR")),
  92         PXA_GPIO_PIN(PXA_PINCTRL_PIN(38),
  93                      PXA_FUNCTION(0, 1, "RI")),
  94         PXA_GPIO_PIN(PXA_PINCTRL_PIN(39),
  95                      PXA_FUNCTION(1, 1, "MMCC1"),
  96                      PXA_FUNCTION(1, 2, "FFTXD")),
  97         PXA_GPIO_PIN(PXA_PINCTRL_PIN(40),
  98                      PXA_FUNCTION(1, 2, "DTR")),
  99         PXA_GPIO_PIN(PXA_PINCTRL_PIN(41),
 100                      PXA_FUNCTION(1, 2, "RTS")),
 101         PXA_GPIO_PIN(PXA_PINCTRL_PIN(42),
 102                      PXA_FUNCTION(0, 1, "BTRXD"),
 103                      PXA_FUNCTION(0, 3, "HWRXD")),
 104         PXA_GPIO_PIN(PXA_PINCTRL_PIN(43),
 105                      PXA_FUNCTION(1, 2, "BTTXD"),
 106                      PXA_FUNCTION(1, 3, "HWTXD")),
 107         PXA_GPIO_PIN(PXA_PINCTRL_PIN(44),
 108                      PXA_FUNCTION(0, 1, "BTCTS"),
 109                      PXA_FUNCTION(0, 3, "HWCTS")),
 110         PXA_GPIO_PIN(PXA_PINCTRL_PIN(45),
 111                      PXA_FUNCTION(1, 2, "BTRTS"),
 112                      PXA_FUNCTION(1, 3, "HWRTS")),
 113         PXA_GPIO_PIN(PXA_PINCTRL_PIN(46),
 114                      PXA_FUNCTION(0, 1, "ICP_RXD"),
 115                      PXA_FUNCTION(0, 2, "RXD")),
 116         PXA_GPIO_PIN(PXA_PINCTRL_PIN(47),
 117                      PXA_FUNCTION(1, 1, "TXD"),
 118                      PXA_FUNCTION(1, 2, "ICP_TXD")),
 119         PXA_GPIO_PIN(PXA_PINCTRL_PIN(48),
 120                      PXA_FUNCTION(1, 1, "HWTXD"),
 121                      PXA_FUNCTION(1, 2, "nPOE")),
 122         PXA_GPIO_PIN(PXA_PINCTRL_PIN(49),
 123                      PXA_FUNCTION(0, 1, "HWRXD"),
 124                      PXA_FUNCTION(1, 2, "nPWE")),
 125         PXA_GPIO_PIN(PXA_PINCTRL_PIN(50),
 126                      PXA_FUNCTION(0, 1, "HWCTS"),
 127                      PXA_FUNCTION(1, 2, "nPIOR")),
 128         PXA_GPIO_PIN(PXA_PINCTRL_PIN(51),
 129                      PXA_FUNCTION(1, 1, "HWRTS"),
 130                      PXA_FUNCTION(1, 2, "nPIOW")),
 131         PXA_GPIO_PIN(PXA_PINCTRL_PIN(52),
 132                      PXA_FUNCTION(1, 2, "nPCE[1]")),
 133         PXA_GPIO_PIN(PXA_PINCTRL_PIN(53),
 134                      PXA_FUNCTION(1, 1, "MMCCLK"),
 135                      PXA_FUNCTION(1, 2, "nPCE[2]")),
 136         PXA_GPIO_PIN(PXA_PINCTRL_PIN(54),
 137                      PXA_FUNCTION(1, 1, "MMCCLK"),
 138                      PXA_FUNCTION(1, 2, "nPSKTSEL")),
 139         PXA_GPIO_PIN(PXA_PINCTRL_PIN(55),
 140                      PXA_FUNCTION(1, 2, "nPREG")),
 141         PXA_GPIO_PIN(PXA_PINCTRL_PIN(56),
 142                      PXA_FUNCTION(0, 1, "nPWAIT")),
 143         PXA_GPIO_PIN(PXA_PINCTRL_PIN(57),
 144                      PXA_FUNCTION(0, 1, "nIOIS16")),
 145         PXA_GPIO_PIN(PXA_PINCTRL_PIN(58),
 146                      PXA_FUNCTION(1, 2, "LDD<0>")),
 147         PXA_GPIO_PIN(PXA_PINCTRL_PIN(59),
 148                      PXA_FUNCTION(1, 2, "LDD<1>")),
 149         PXA_GPIO_PIN(PXA_PINCTRL_PIN(60),
 150                      PXA_FUNCTION(1, 2, "LDD<2>")),
 151         PXA_GPIO_PIN(PXA_PINCTRL_PIN(61),
 152                      PXA_FUNCTION(1, 2, "LDD<3>")),
 153         PXA_GPIO_PIN(PXA_PINCTRL_PIN(62),
 154                      PXA_FUNCTION(1, 2, "LDD<4>")),
 155         PXA_GPIO_PIN(PXA_PINCTRL_PIN(63),
 156                      PXA_FUNCTION(1, 2, "LDD<5>")),
 157         PXA_GPIO_PIN(PXA_PINCTRL_PIN(64),
 158                      PXA_FUNCTION(1, 2, "LDD<6>")),
 159         PXA_GPIO_PIN(PXA_PINCTRL_PIN(65),
 160                      PXA_FUNCTION(1, 2, "LDD<7>")),
 161         PXA_GPIO_PIN(PXA_PINCTRL_PIN(66),
 162                      PXA_FUNCTION(0, 1, "MBREQ"),
 163                      PXA_FUNCTION(1, 2, "LDD<8>")),
 164         PXA_GPIO_PIN(PXA_PINCTRL_PIN(67),
 165                      PXA_FUNCTION(1, 1, "MMCCS0"),
 166                      PXA_FUNCTION(1, 2, "LDD<9>")),
 167         PXA_GPIO_PIN(PXA_PINCTRL_PIN(68),
 168                      PXA_FUNCTION(1, 1, "MMCCS1"),
 169                      PXA_FUNCTION(1, 2, "LDD<10>")),
 170         PXA_GPIO_PIN(PXA_PINCTRL_PIN(69),
 171                      PXA_FUNCTION(1, 1, "MMCCLK"),
 172                      PXA_FUNCTION(1, 2, "LDD<11>")),
 173         PXA_GPIO_PIN(PXA_PINCTRL_PIN(70),
 174                      PXA_FUNCTION(1, 1, "RTCCLK"),
 175                      PXA_FUNCTION(1, 2, "LDD<12>")),
 176         PXA_GPIO_PIN(PXA_PINCTRL_PIN(71),
 177                      PXA_FUNCTION(1, 1, "3_6_MHz"),
 178                      PXA_FUNCTION(1, 2, "LDD<13>")),
 179         PXA_GPIO_PIN(PXA_PINCTRL_PIN(72),
 180                      PXA_FUNCTION(1, 1, "32_kHz"),
 181                      PXA_FUNCTION(1, 2, "LDD<14>")),
 182         PXA_GPIO_PIN(PXA_PINCTRL_PIN(73),
 183                      PXA_FUNCTION(1, 1, "MBGNT"),
 184                      PXA_FUNCTION(1, 2, "LDD<15>")),
 185         PXA_GPIO_PIN(PXA_PINCTRL_PIN(74),
 186                      PXA_FUNCTION(1, 2, "LCD_FCLK")),
 187         PXA_GPIO_PIN(PXA_PINCTRL_PIN(75),
 188                      PXA_FUNCTION(1, 2, "LCD_LCLK")),
 189         PXA_GPIO_PIN(PXA_PINCTRL_PIN(76),
 190                      PXA_FUNCTION(1, 2, "LCD_PCLK")),
 191         PXA_GPIO_PIN(PXA_PINCTRL_PIN(77),
 192                      PXA_FUNCTION(1, 2, "LCD_ACBIAS")),
 193         PXA_GPIO_PIN(PXA_PINCTRL_PIN(78),
 194                      PXA_FUNCTION(1, 2, "nCS<2>")),
 195         PXA_GPIO_PIN(PXA_PINCTRL_PIN(79),
 196                      PXA_FUNCTION(1, 2, "nCS<3>")),
 197         PXA_GPIO_PIN(PXA_PINCTRL_PIN(80),
 198                      PXA_FUNCTION(1, 2, "nCS<4>")),
 199         PXA_GPIO_PIN(PXA_PINCTRL_PIN(81),
 200                      PXA_FUNCTION(0, 1, "NSSPSCLK"),
 201                      PXA_FUNCTION(1, 1, "NSSPSCLK")),
 202         PXA_GPIO_PIN(PXA_PINCTRL_PIN(82),
 203                      PXA_FUNCTION(0, 1, "NSSPSFRM"),
 204                      PXA_FUNCTION(1, 1, "NSSPSFRM")),
 205         PXA_GPIO_PIN(PXA_PINCTRL_PIN(83),
 206                      PXA_FUNCTION(0, 2, "NSSPRXD"),
 207                      PXA_FUNCTION(1, 1, "NSSPTXD")),
 208         PXA_GPIO_PIN(PXA_PINCTRL_PIN(84),
 209                      PXA_FUNCTION(0, 2, "NSSPRXD"),
 210                      PXA_FUNCTION(1, 1, "NSSPTXD")),
 211 };
 212 
 213 static int pxa25x_pinctrl_probe(struct platform_device *pdev)
 214 {
 215         int ret, i;
 216         void __iomem *base_af[8];
 217         void __iomem *base_dir[4];
 218         void __iomem *base_sleep[4];
 219         struct resource *res;
 220 
 221         res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 222         base_af[0] = devm_ioremap_resource(&pdev->dev, res);
 223         if (IS_ERR(base_af[0]))
 224                 return PTR_ERR(base_af[0]);
 225 
 226         res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
 227         base_dir[0] = devm_ioremap_resource(&pdev->dev, res);
 228         if (IS_ERR(base_dir[0]))
 229                 return PTR_ERR(base_dir[0]);
 230 
 231         res = platform_get_resource(pdev, IORESOURCE_MEM, 2);
 232         base_dir[3] = devm_ioremap_resource(&pdev->dev, res);
 233         if (IS_ERR(base_dir[3]))
 234                 return PTR_ERR(base_dir[3]);
 235 
 236         res = platform_get_resource(pdev, IORESOURCE_MEM, 3);
 237         base_sleep[0] = devm_ioremap_resource(&pdev->dev, res);
 238         if (IS_ERR(base_sleep[0]))
 239                 return PTR_ERR(base_sleep[0]);
 240 
 241         for (i = 0; i < ARRAY_SIZE(base_af); i++)
 242                 base_af[i] = base_af[0] + sizeof(base_af[0]) * i;
 243         for (i = 0; i < 3; i++)
 244                 base_dir[i] = base_dir[0] + sizeof(base_dir[0]) * i;
 245         for (i = 0; i < ARRAY_SIZE(base_sleep); i++)
 246                 base_sleep[i] = base_sleep[0] + sizeof(base_af[0]) * i;
 247 
 248         ret = pxa2xx_pinctrl_init(pdev, pxa25x_pins, ARRAY_SIZE(pxa25x_pins),
 249                                   base_af, base_dir, base_sleep);
 250         return ret;
 251 }
 252 
 253 static const struct of_device_id pxa25x_pinctrl_match[] = {
 254         { .compatible = "marvell,pxa25x-pinctrl", },
 255         {}
 256 };
 257 MODULE_DEVICE_TABLE(of, pxa25x_pinctrl_match);
 258 
 259 static struct platform_driver pxa25x_pinctrl_driver = {
 260         .probe  = pxa25x_pinctrl_probe,
 261         .driver = {
 262                 .name           = "pxa25x-pinctrl",
 263                 .of_match_table = pxa25x_pinctrl_match,
 264         },
 265 };
 266 module_platform_driver(pxa25x_pinctrl_driver);
 267 
 268 MODULE_AUTHOR("Robert Jarzmik <robert.jarzmik@free.fr>");
 269 MODULE_DESCRIPTION("Marvell PXA25x pinctrl driver");
 270 MODULE_LICENSE("GPL v2");

/* [<][>][^][v][top][bottom][index][help] */