162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Marvell PXA25x family pin control
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Copyright (C) 2016 Robert Jarzmik
662306a36Sopenharmony_ci */
762306a36Sopenharmony_ci#include <linux/module.h>
862306a36Sopenharmony_ci#include <linux/platform_device.h>
962306a36Sopenharmony_ci#include <linux/of.h>
1062306a36Sopenharmony_ci#include <linux/pinctrl/pinctrl.h>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci#include "pinctrl-pxa2xx.h"
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_cistatic const struct pxa_desc_pin pxa25x_pins[] = {
1562306a36Sopenharmony_ci	PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(0)),
1662306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(1),
1762306a36Sopenharmony_ci		     PXA_FUNCTION(0, 1, "GP_RST")),
1862306a36Sopenharmony_ci	PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(2)),
1962306a36Sopenharmony_ci	PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(3)),
2062306a36Sopenharmony_ci	PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(4)),
2162306a36Sopenharmony_ci	PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(5)),
2262306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(6),
2362306a36Sopenharmony_ci		     PXA_FUNCTION(1, 1, "MMCCLK")),
2462306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(7),
2562306a36Sopenharmony_ci		     PXA_FUNCTION(1, 1, "48_MHz")),
2662306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(8),
2762306a36Sopenharmony_ci		     PXA_FUNCTION(1, 1, "MMCCS0")),
2862306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(9),
2962306a36Sopenharmony_ci		     PXA_FUNCTION(1, 1, "MMCCS1")),
3062306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(10),
3162306a36Sopenharmony_ci		     PXA_FUNCTION(1, 1, "RTCCLK")),
3262306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(11),
3362306a36Sopenharmony_ci		     PXA_FUNCTION(1, 1, "3_6_MHz")),
3462306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(12),
3562306a36Sopenharmony_ci		     PXA_FUNCTION(1, 1, "32_kHz")),
3662306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(13),
3762306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "MBGNT")),
3862306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(14),
3962306a36Sopenharmony_ci		     PXA_FUNCTION(0, 1, "MBREQ")),
4062306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(15),
4162306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "nCS_1")),
4262306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(16),
4362306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "PWM0")),
4462306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(17),
4562306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "PWM1")),
4662306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(18),
4762306a36Sopenharmony_ci		     PXA_FUNCTION(0, 1, "RDY")),
4862306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(19),
4962306a36Sopenharmony_ci		     PXA_FUNCTION(0, 1, "DREQ[1]")),
5062306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(20),
5162306a36Sopenharmony_ci		     PXA_FUNCTION(0, 1, "DREQ[0]")),
5262306a36Sopenharmony_ci	PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(21)),
5362306a36Sopenharmony_ci	PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(22)),
5462306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(23),
5562306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "SCLK")),
5662306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(24),
5762306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "SFRM")),
5862306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(25),
5962306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "TXD")),
6062306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(26),
6162306a36Sopenharmony_ci		     PXA_FUNCTION(0, 1, "RXD")),
6262306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(27),
6362306a36Sopenharmony_ci		     PXA_FUNCTION(0, 1, "EXTCLK")),
6462306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(28),
6562306a36Sopenharmony_ci		     PXA_FUNCTION(0, 1, "BITCLK"),
6662306a36Sopenharmony_ci		     PXA_FUNCTION(0, 2, "BITCLK"),
6762306a36Sopenharmony_ci		     PXA_FUNCTION(1, 1, "BITCLK")),
6862306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(29),
6962306a36Sopenharmony_ci		     PXA_FUNCTION(0, 1, "SDATA_IN0"),
7062306a36Sopenharmony_ci		     PXA_FUNCTION(0, 2, "SDATA_IN")),
7162306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(30),
7262306a36Sopenharmony_ci		     PXA_FUNCTION(1, 1, "SDATA_OUT"),
7362306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "SDATA_OUT")),
7462306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(31),
7562306a36Sopenharmony_ci		     PXA_FUNCTION(1, 1, "SYNC"),
7662306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "SYNC")),
7762306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(32),
7862306a36Sopenharmony_ci		     PXA_FUNCTION(0, 1, "SDATA_IN1"),
7962306a36Sopenharmony_ci		     PXA_FUNCTION(1, 1, "SYSCLK")),
8062306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(33),
8162306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "nCS[5]")),
8262306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(34),
8362306a36Sopenharmony_ci		     PXA_FUNCTION(0, 1, "FFRXD"),
8462306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "MMCCS0")),
8562306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(35),
8662306a36Sopenharmony_ci		     PXA_FUNCTION(0, 1, "CTS")),
8762306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(36),
8862306a36Sopenharmony_ci		     PXA_FUNCTION(0, 1, "DCD")),
8962306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(37),
9062306a36Sopenharmony_ci		     PXA_FUNCTION(0, 1, "DSR")),
9162306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(38),
9262306a36Sopenharmony_ci		     PXA_FUNCTION(0, 1, "RI")),
9362306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(39),
9462306a36Sopenharmony_ci		     PXA_FUNCTION(1, 1, "MMCC1"),
9562306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "FFTXD")),
9662306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(40),
9762306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "DTR")),
9862306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(41),
9962306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "RTS")),
10062306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(42),
10162306a36Sopenharmony_ci		     PXA_FUNCTION(0, 1, "BTRXD"),
10262306a36Sopenharmony_ci		     PXA_FUNCTION(0, 3, "HWRXD")),
10362306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(43),
10462306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "BTTXD"),
10562306a36Sopenharmony_ci		     PXA_FUNCTION(1, 3, "HWTXD")),
10662306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(44),
10762306a36Sopenharmony_ci		     PXA_FUNCTION(0, 1, "BTCTS"),
10862306a36Sopenharmony_ci		     PXA_FUNCTION(0, 3, "HWCTS")),
10962306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(45),
11062306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "BTRTS"),
11162306a36Sopenharmony_ci		     PXA_FUNCTION(1, 3, "HWRTS")),
11262306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(46),
11362306a36Sopenharmony_ci		     PXA_FUNCTION(0, 1, "ICP_RXD"),
11462306a36Sopenharmony_ci		     PXA_FUNCTION(0, 2, "RXD")),
11562306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(47),
11662306a36Sopenharmony_ci		     PXA_FUNCTION(1, 1, "TXD"),
11762306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "ICP_TXD")),
11862306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(48),
11962306a36Sopenharmony_ci		     PXA_FUNCTION(1, 1, "HWTXD"),
12062306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "nPOE")),
12162306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(49),
12262306a36Sopenharmony_ci		     PXA_FUNCTION(0, 1, "HWRXD"),
12362306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "nPWE")),
12462306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(50),
12562306a36Sopenharmony_ci		     PXA_FUNCTION(0, 1, "HWCTS"),
12662306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "nPIOR")),
12762306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(51),
12862306a36Sopenharmony_ci		     PXA_FUNCTION(1, 1, "HWRTS"),
12962306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "nPIOW")),
13062306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(52),
13162306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "nPCE[1]")),
13262306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(53),
13362306a36Sopenharmony_ci		     PXA_FUNCTION(1, 1, "MMCCLK"),
13462306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "nPCE[2]")),
13562306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(54),
13662306a36Sopenharmony_ci		     PXA_FUNCTION(1, 1, "MMCCLK"),
13762306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "nPSKTSEL")),
13862306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(55),
13962306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "nPREG")),
14062306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(56),
14162306a36Sopenharmony_ci		     PXA_FUNCTION(0, 1, "nPWAIT")),
14262306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(57),
14362306a36Sopenharmony_ci		     PXA_FUNCTION(0, 1, "nIOIS16")),
14462306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(58),
14562306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "LDD<0>")),
14662306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(59),
14762306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "LDD<1>")),
14862306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(60),
14962306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "LDD<2>")),
15062306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(61),
15162306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "LDD<3>")),
15262306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(62),
15362306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "LDD<4>")),
15462306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(63),
15562306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "LDD<5>")),
15662306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(64),
15762306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "LDD<6>")),
15862306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(65),
15962306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "LDD<7>")),
16062306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(66),
16162306a36Sopenharmony_ci		     PXA_FUNCTION(0, 1, "MBREQ"),
16262306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "LDD<8>")),
16362306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(67),
16462306a36Sopenharmony_ci		     PXA_FUNCTION(1, 1, "MMCCS0"),
16562306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "LDD<9>")),
16662306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(68),
16762306a36Sopenharmony_ci		     PXA_FUNCTION(1, 1, "MMCCS1"),
16862306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "LDD<10>")),
16962306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(69),
17062306a36Sopenharmony_ci		     PXA_FUNCTION(1, 1, "MMCCLK"),
17162306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "LDD<11>")),
17262306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(70),
17362306a36Sopenharmony_ci		     PXA_FUNCTION(1, 1, "RTCCLK"),
17462306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "LDD<12>")),
17562306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(71),
17662306a36Sopenharmony_ci		     PXA_FUNCTION(1, 1, "3_6_MHz"),
17762306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "LDD<13>")),
17862306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(72),
17962306a36Sopenharmony_ci		     PXA_FUNCTION(1, 1, "32_kHz"),
18062306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "LDD<14>")),
18162306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(73),
18262306a36Sopenharmony_ci		     PXA_FUNCTION(1, 1, "MBGNT"),
18362306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "LDD<15>")),
18462306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(74),
18562306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "LCD_FCLK")),
18662306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(75),
18762306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "LCD_LCLK")),
18862306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(76),
18962306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "LCD_PCLK")),
19062306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(77),
19162306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "LCD_ACBIAS")),
19262306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(78),
19362306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "nCS<2>")),
19462306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(79),
19562306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "nCS<3>")),
19662306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(80),
19762306a36Sopenharmony_ci		     PXA_FUNCTION(1, 2, "nCS<4>")),
19862306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(81),
19962306a36Sopenharmony_ci		     PXA_FUNCTION(0, 1, "NSSPSCLK"),
20062306a36Sopenharmony_ci		     PXA_FUNCTION(1, 1, "NSSPSCLK")),
20162306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(82),
20262306a36Sopenharmony_ci		     PXA_FUNCTION(0, 1, "NSSPSFRM"),
20362306a36Sopenharmony_ci		     PXA_FUNCTION(1, 1, "NSSPSFRM")),
20462306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(83),
20562306a36Sopenharmony_ci		     PXA_FUNCTION(0, 2, "NSSPRXD"),
20662306a36Sopenharmony_ci		     PXA_FUNCTION(1, 1, "NSSPTXD")),
20762306a36Sopenharmony_ci	PXA_GPIO_PIN(PXA_PINCTRL_PIN(84),
20862306a36Sopenharmony_ci		     PXA_FUNCTION(0, 2, "NSSPRXD"),
20962306a36Sopenharmony_ci		     PXA_FUNCTION(1, 1, "NSSPTXD")),
21062306a36Sopenharmony_ci};
21162306a36Sopenharmony_ci
21262306a36Sopenharmony_cistatic int pxa25x_pinctrl_probe(struct platform_device *pdev)
21362306a36Sopenharmony_ci{
21462306a36Sopenharmony_ci	int ret, i;
21562306a36Sopenharmony_ci	void __iomem *base_af[8];
21662306a36Sopenharmony_ci	void __iomem *base_dir[4];
21762306a36Sopenharmony_ci	void __iomem *base_sleep[4];
21862306a36Sopenharmony_ci
21962306a36Sopenharmony_ci	base_af[0] = devm_platform_ioremap_resource(pdev, 0);
22062306a36Sopenharmony_ci	if (IS_ERR(base_af[0]))
22162306a36Sopenharmony_ci		return PTR_ERR(base_af[0]);
22262306a36Sopenharmony_ci
22362306a36Sopenharmony_ci	base_dir[0] = devm_platform_ioremap_resource(pdev, 1);
22462306a36Sopenharmony_ci	if (IS_ERR(base_dir[0]))
22562306a36Sopenharmony_ci		return PTR_ERR(base_dir[0]);
22662306a36Sopenharmony_ci
22762306a36Sopenharmony_ci	base_dir[3] = devm_platform_ioremap_resource(pdev, 2);
22862306a36Sopenharmony_ci	if (IS_ERR(base_dir[3]))
22962306a36Sopenharmony_ci		return PTR_ERR(base_dir[3]);
23062306a36Sopenharmony_ci
23162306a36Sopenharmony_ci	base_sleep[0] = devm_platform_ioremap_resource(pdev, 3);
23262306a36Sopenharmony_ci	if (IS_ERR(base_sleep[0]))
23362306a36Sopenharmony_ci		return PTR_ERR(base_sleep[0]);
23462306a36Sopenharmony_ci
23562306a36Sopenharmony_ci	for (i = 0; i < ARRAY_SIZE(base_af); i++)
23662306a36Sopenharmony_ci		base_af[i] = base_af[0] + sizeof(base_af[0]) * i;
23762306a36Sopenharmony_ci	for (i = 0; i < 3; i++)
23862306a36Sopenharmony_ci		base_dir[i] = base_dir[0] + sizeof(base_dir[0]) * i;
23962306a36Sopenharmony_ci	for (i = 0; i < ARRAY_SIZE(base_sleep); i++)
24062306a36Sopenharmony_ci		base_sleep[i] = base_sleep[0] + sizeof(base_af[0]) * i;
24162306a36Sopenharmony_ci
24262306a36Sopenharmony_ci	ret = pxa2xx_pinctrl_init(pdev, pxa25x_pins, ARRAY_SIZE(pxa25x_pins),
24362306a36Sopenharmony_ci				  base_af, base_dir, base_sleep);
24462306a36Sopenharmony_ci	return ret;
24562306a36Sopenharmony_ci}
24662306a36Sopenharmony_ci
24762306a36Sopenharmony_cistatic const struct of_device_id pxa25x_pinctrl_match[] = {
24862306a36Sopenharmony_ci	{ .compatible = "marvell,pxa25x-pinctrl", },
24962306a36Sopenharmony_ci	{}
25062306a36Sopenharmony_ci};
25162306a36Sopenharmony_ciMODULE_DEVICE_TABLE(of, pxa25x_pinctrl_match);
25262306a36Sopenharmony_ci
25362306a36Sopenharmony_cistatic struct platform_driver pxa25x_pinctrl_driver = {
25462306a36Sopenharmony_ci	.probe	= pxa25x_pinctrl_probe,
25562306a36Sopenharmony_ci	.driver	= {
25662306a36Sopenharmony_ci		.name		= "pxa25x-pinctrl",
25762306a36Sopenharmony_ci		.of_match_table	= pxa25x_pinctrl_match,
25862306a36Sopenharmony_ci	},
25962306a36Sopenharmony_ci};
26062306a36Sopenharmony_cimodule_platform_driver(pxa25x_pinctrl_driver);
26162306a36Sopenharmony_ci
26262306a36Sopenharmony_ciMODULE_AUTHOR("Robert Jarzmik <robert.jarzmik@free.fr>");
26362306a36Sopenharmony_ciMODULE_DESCRIPTION("Marvell PXA25x pinctrl driver");
26462306a36Sopenharmony_ciMODULE_LICENSE("GPL v2");
265