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-pxa25x.c (9044B)


      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
     15static 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
    213static 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
    220	base_af[0] = devm_platform_ioremap_resource(pdev, 0);
    221	if (IS_ERR(base_af[0]))
    222		return PTR_ERR(base_af[0]);
    223
    224	base_dir[0] = devm_platform_ioremap_resource(pdev, 1);
    225	if (IS_ERR(base_dir[0]))
    226		return PTR_ERR(base_dir[0]);
    227
    228	base_dir[3] = devm_platform_ioremap_resource(pdev, 2);
    229	if (IS_ERR(base_dir[3]))
    230		return PTR_ERR(base_dir[3]);
    231
    232	base_sleep[0] = devm_platform_ioremap_resource(pdev, 3);
    233	if (IS_ERR(base_sleep[0]))
    234		return PTR_ERR(base_sleep[0]);
    235
    236	for (i = 0; i < ARRAY_SIZE(base_af); i++)
    237		base_af[i] = base_af[0] + sizeof(base_af[0]) * i;
    238	for (i = 0; i < 3; i++)
    239		base_dir[i] = base_dir[0] + sizeof(base_dir[0]) * i;
    240	for (i = 0; i < ARRAY_SIZE(base_sleep); i++)
    241		base_sleep[i] = base_sleep[0] + sizeof(base_af[0]) * i;
    242
    243	ret = pxa2xx_pinctrl_init(pdev, pxa25x_pins, ARRAY_SIZE(pxa25x_pins),
    244				  base_af, base_dir, base_sleep);
    245	return ret;
    246}
    247
    248static const struct of_device_id pxa25x_pinctrl_match[] = {
    249	{ .compatible = "marvell,pxa25x-pinctrl", },
    250	{}
    251};
    252MODULE_DEVICE_TABLE(of, pxa25x_pinctrl_match);
    253
    254static struct platform_driver pxa25x_pinctrl_driver = {
    255	.probe	= pxa25x_pinctrl_probe,
    256	.driver	= {
    257		.name		= "pxa25x-pinctrl",
    258		.of_match_table	= pxa25x_pinctrl_match,
    259	},
    260};
    261module_platform_driver(pxa25x_pinctrl_driver);
    262
    263MODULE_AUTHOR("Robert Jarzmik <robert.jarzmik@free.fr>");
    264MODULE_DESCRIPTION("Marvell PXA25x pinctrl driver");
    265MODULE_LICENSE("GPL v2");