Skip to content

Commit 8b8b0fa

Browse files
parakalinusw
authored andcommitted
pinctrl: ralink: move RT3883 SoC pinmux config into a new 'pinctrl-rt3883.c' file
Move all related code for SoC RT3883 into a new driver located in 'pinctrl-rt3883.c' source file Signed-off-by: Sergio Paracuellos <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Linus Walleij <[email protected]>
1 parent e98dd3d commit 8b8b0fa

File tree

5 files changed

+113
-79
lines changed

5 files changed

+113
-79
lines changed

arch/mips/include/asm/mach-ralink/rt3883.h

Lines changed: 0 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -109,40 +109,6 @@
109109
#define RT3883_CLKCFG1_PCI_CLK_EN BIT(19)
110110
#define RT3883_CLKCFG1_UPHY0_CLK_EN BIT(18)
111111

112-
#define RT3883_GPIO_MODE_UART0_SHIFT 2
113-
#define RT3883_GPIO_MODE_UART0_MASK 0x7
114-
#define RT3883_GPIO_MODE_UART0(x) ((x) << RT3883_GPIO_MODE_UART0_SHIFT)
115-
#define RT3883_GPIO_MODE_UARTF 0x0
116-
#define RT3883_GPIO_MODE_PCM_UARTF 0x1
117-
#define RT3883_GPIO_MODE_PCM_I2S 0x2
118-
#define RT3883_GPIO_MODE_I2S_UARTF 0x3
119-
#define RT3883_GPIO_MODE_PCM_GPIO 0x4
120-
#define RT3883_GPIO_MODE_GPIO_UARTF 0x5
121-
#define RT3883_GPIO_MODE_GPIO_I2S 0x6
122-
#define RT3883_GPIO_MODE_GPIO 0x7
123-
124-
#define RT3883_GPIO_MODE_I2C 0
125-
#define RT3883_GPIO_MODE_SPI 1
126-
#define RT3883_GPIO_MODE_UART1 5
127-
#define RT3883_GPIO_MODE_JTAG 6
128-
#define RT3883_GPIO_MODE_MDIO 7
129-
#define RT3883_GPIO_MODE_GE1 9
130-
#define RT3883_GPIO_MODE_GE2 10
131-
132-
#define RT3883_GPIO_MODE_PCI_SHIFT 11
133-
#define RT3883_GPIO_MODE_PCI_MASK 0x7
134-
#define RT3883_GPIO_MODE_PCI (RT3883_GPIO_MODE_PCI_MASK << RT3883_GPIO_MODE_PCI_SHIFT)
135-
#define RT3883_GPIO_MODE_LNA_A_SHIFT 16
136-
#define RT3883_GPIO_MODE_LNA_A_MASK 0x3
137-
#define _RT3883_GPIO_MODE_LNA_A(_x) ((_x) << RT3883_GPIO_MODE_LNA_A_SHIFT)
138-
#define RT3883_GPIO_MODE_LNA_A_GPIO 0x3
139-
#define RT3883_GPIO_MODE_LNA_A _RT3883_GPIO_MODE_LNA_A(RT3883_GPIO_MODE_LNA_A_MASK)
140-
#define RT3883_GPIO_MODE_LNA_G_SHIFT 18
141-
#define RT3883_GPIO_MODE_LNA_G_MASK 0x3
142-
#define _RT3883_GPIO_MODE_LNA_G(_x) ((_x) << RT3883_GPIO_MODE_LNA_G_SHIFT)
143-
#define RT3883_GPIO_MODE_LNA_G_GPIO 0x3
144-
#define RT3883_GPIO_MODE_LNA_G _RT3883_GPIO_MODE_LNA_G(RT3883_GPIO_MODE_LNA_G_MASK)
145-
146112
#define RT3883_GPIO_I2C_SD 1
147113
#define RT3883_GPIO_I2C_SCLK 2
148114
#define RT3883_GPIO_SPI_CS0 3

arch/mips/ralink/rt3883.c

Lines changed: 0 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -14,52 +14,9 @@
1414
#include <asm/mipsregs.h>
1515
#include <asm/mach-ralink/ralink_regs.h>
1616
#include <asm/mach-ralink/rt3883.h>
17-
#include <asm/mach-ralink/pinmux.h>
1817

1918
#include "common.h"
2019

21-
static struct rt2880_pmx_func i2c_func[] = { FUNC("i2c", 0, 1, 2) };
22-
static struct rt2880_pmx_func spi_func[] = { FUNC("spi", 0, 3, 4) };
23-
static struct rt2880_pmx_func uartf_func[] = {
24-
FUNC("uartf", RT3883_GPIO_MODE_UARTF, 7, 8),
25-
FUNC("pcm uartf", RT3883_GPIO_MODE_PCM_UARTF, 7, 8),
26-
FUNC("pcm i2s", RT3883_GPIO_MODE_PCM_I2S, 7, 8),
27-
FUNC("i2s uartf", RT3883_GPIO_MODE_I2S_UARTF, 7, 8),
28-
FUNC("pcm gpio", RT3883_GPIO_MODE_PCM_GPIO, 11, 4),
29-
FUNC("gpio uartf", RT3883_GPIO_MODE_GPIO_UARTF, 7, 4),
30-
FUNC("gpio i2s", RT3883_GPIO_MODE_GPIO_I2S, 7, 4),
31-
};
32-
static struct rt2880_pmx_func uartlite_func[] = { FUNC("uartlite", 0, 15, 2) };
33-
static struct rt2880_pmx_func jtag_func[] = { FUNC("jtag", 0, 17, 5) };
34-
static struct rt2880_pmx_func mdio_func[] = { FUNC("mdio", 0, 22, 2) };
35-
static struct rt2880_pmx_func lna_a_func[] = { FUNC("lna a", 0, 32, 3) };
36-
static struct rt2880_pmx_func lna_g_func[] = { FUNC("lna g", 0, 35, 3) };
37-
static struct rt2880_pmx_func pci_func[] = {
38-
FUNC("pci-dev", 0, 40, 32),
39-
FUNC("pci-host2", 1, 40, 32),
40-
FUNC("pci-host1", 2, 40, 32),
41-
FUNC("pci-fnc", 3, 40, 32)
42-
};
43-
static struct rt2880_pmx_func ge1_func[] = { FUNC("ge1", 0, 72, 12) };
44-
static struct rt2880_pmx_func ge2_func[] = { FUNC("ge2", 0, 84, 12) };
45-
46-
static struct rt2880_pmx_group rt3883_pinmux_data[] = {
47-
GRP("i2c", i2c_func, 1, RT3883_GPIO_MODE_I2C),
48-
GRP("spi", spi_func, 1, RT3883_GPIO_MODE_SPI),
49-
GRP("uartf", uartf_func, RT3883_GPIO_MODE_UART0_MASK,
50-
RT3883_GPIO_MODE_UART0_SHIFT),
51-
GRP("uartlite", uartlite_func, 1, RT3883_GPIO_MODE_UART1),
52-
GRP("jtag", jtag_func, 1, RT3883_GPIO_MODE_JTAG),
53-
GRP("mdio", mdio_func, 1, RT3883_GPIO_MODE_MDIO),
54-
GRP("lna a", lna_a_func, 1, RT3883_GPIO_MODE_LNA_A),
55-
GRP("lna g", lna_g_func, 1, RT3883_GPIO_MODE_LNA_G),
56-
GRP("pci", pci_func, RT3883_GPIO_MODE_PCI_MASK,
57-
RT3883_GPIO_MODE_PCI_SHIFT),
58-
GRP("ge1", ge1_func, 1, RT3883_GPIO_MODE_GE1),
59-
GRP("ge2", ge2_func, 1, RT3883_GPIO_MODE_GE2),
60-
{ 0 }
61-
};
62-
6320
void __init ralink_clk_init(void)
6421
{
6522
unsigned long cpu_rate, sys_rate;
@@ -142,7 +99,5 @@ void __init prom_soc_init(struct ralink_soc_info *soc_info)
14299
soc_info->mem_size_min = RT3883_MEM_SIZE_MIN;
143100
soc_info->mem_size_max = RT3883_MEM_SIZE_MAX;
144101

145-
rt2880_pinmux_data = rt3883_pinmux_data;
146-
147102
ralink_soc = RT3883_SOC;
148103
}

drivers/pinctrl/ralink/Kconfig

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,9 @@ config PINCTRL_MT7621
1616
depends on RALINK && SOC_MT7621
1717
select PINCTRL_RT2880
1818

19+
config PINCTRL_RT3883
20+
bool "RT3883 pinctrl driver for RALINK/Mediatek SOCs"
21+
depends on RALINK && SOC_RT3883
22+
select PINCTRL_RT2880
23+
1924
endmenu

drivers/pinctrl/ralink/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@
22
obj-$(CONFIG_PINCTRL_RT2880) += pinctrl-rt2880.o
33

44
obj-$(CONFIG_PINCTRL_MT7621) += pinctrl-mt7621.o
5+
obj-$(CONFIG_PINCTRL_RT3883) += pinctrl-rt3883.o
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
// SPDX-License-Identifier: GPL-2.0-only
2+
3+
#include <linux/module.h>
4+
#include <linux/platform_device.h>
5+
#include <linux/of.h>
6+
#include "pinmux.h"
7+
8+
#define RT3883_GPIO_MODE_UART0_SHIFT 2
9+
#define RT3883_GPIO_MODE_UART0_MASK 0x7
10+
#define RT3883_GPIO_MODE_UART0(x) ((x) << RT3883_GPIO_MODE_UART0_SHIFT)
11+
#define RT3883_GPIO_MODE_UARTF 0x0
12+
#define RT3883_GPIO_MODE_PCM_UARTF 0x1
13+
#define RT3883_GPIO_MODE_PCM_I2S 0x2
14+
#define RT3883_GPIO_MODE_I2S_UARTF 0x3
15+
#define RT3883_GPIO_MODE_PCM_GPIO 0x4
16+
#define RT3883_GPIO_MODE_GPIO_UARTF 0x5
17+
#define RT3883_GPIO_MODE_GPIO_I2S 0x6
18+
#define RT3883_GPIO_MODE_GPIO 0x7
19+
20+
#define RT3883_GPIO_MODE_I2C 0
21+
#define RT3883_GPIO_MODE_SPI 1
22+
#define RT3883_GPIO_MODE_UART1 5
23+
#define RT3883_GPIO_MODE_JTAG 6
24+
#define RT3883_GPIO_MODE_MDIO 7
25+
#define RT3883_GPIO_MODE_GE1 9
26+
#define RT3883_GPIO_MODE_GE2 10
27+
28+
#define RT3883_GPIO_MODE_PCI_SHIFT 11
29+
#define RT3883_GPIO_MODE_PCI_MASK 0x7
30+
#define RT3883_GPIO_MODE_PCI (RT3883_GPIO_MODE_PCI_MASK << RT3883_GPIO_MODE_PCI_SHIFT)
31+
#define RT3883_GPIO_MODE_LNA_A_SHIFT 16
32+
#define RT3883_GPIO_MODE_LNA_A_MASK 0x3
33+
#define _RT3883_GPIO_MODE_LNA_A(_x) ((_x) << RT3883_GPIO_MODE_LNA_A_SHIFT)
34+
#define RT3883_GPIO_MODE_LNA_A_GPIO 0x3
35+
#define RT3883_GPIO_MODE_LNA_A _RT3883_GPIO_MODE_LNA_A(RT3883_GPIO_MODE_LNA_A_MASK)
36+
#define RT3883_GPIO_MODE_LNA_G_SHIFT 18
37+
#define RT3883_GPIO_MODE_LNA_G_MASK 0x3
38+
#define _RT3883_GPIO_MODE_LNA_G(_x) ((_x) << RT3883_GPIO_MODE_LNA_G_SHIFT)
39+
#define RT3883_GPIO_MODE_LNA_G_GPIO 0x3
40+
#define RT3883_GPIO_MODE_LNA_G _RT3883_GPIO_MODE_LNA_G(RT3883_GPIO_MODE_LNA_G_MASK)
41+
42+
static struct rt2880_pmx_func i2c_func[] = { FUNC("i2c", 0, 1, 2) };
43+
static struct rt2880_pmx_func spi_func[] = { FUNC("spi", 0, 3, 4) };
44+
static struct rt2880_pmx_func uartf_func[] = {
45+
FUNC("uartf", RT3883_GPIO_MODE_UARTF, 7, 8),
46+
FUNC("pcm uartf", RT3883_GPIO_MODE_PCM_UARTF, 7, 8),
47+
FUNC("pcm i2s", RT3883_GPIO_MODE_PCM_I2S, 7, 8),
48+
FUNC("i2s uartf", RT3883_GPIO_MODE_I2S_UARTF, 7, 8),
49+
FUNC("pcm gpio", RT3883_GPIO_MODE_PCM_GPIO, 11, 4),
50+
FUNC("gpio uartf", RT3883_GPIO_MODE_GPIO_UARTF, 7, 4),
51+
FUNC("gpio i2s", RT3883_GPIO_MODE_GPIO_I2S, 7, 4),
52+
};
53+
static struct rt2880_pmx_func uartlite_func[] = { FUNC("uartlite", 0, 15, 2) };
54+
static struct rt2880_pmx_func jtag_func[] = { FUNC("jtag", 0, 17, 5) };
55+
static struct rt2880_pmx_func mdio_func[] = { FUNC("mdio", 0, 22, 2) };
56+
static struct rt2880_pmx_func lna_a_func[] = { FUNC("lna a", 0, 32, 3) };
57+
static struct rt2880_pmx_func lna_g_func[] = { FUNC("lna g", 0, 35, 3) };
58+
static struct rt2880_pmx_func pci_func[] = {
59+
FUNC("pci-dev", 0, 40, 32),
60+
FUNC("pci-host2", 1, 40, 32),
61+
FUNC("pci-host1", 2, 40, 32),
62+
FUNC("pci-fnc", 3, 40, 32)
63+
};
64+
static struct rt2880_pmx_func ge1_func[] = { FUNC("ge1", 0, 72, 12) };
65+
static struct rt2880_pmx_func ge2_func[] = { FUNC("ge2", 0, 84, 12) };
66+
67+
static struct rt2880_pmx_group rt3883_pinmux_data[] = {
68+
GRP("i2c", i2c_func, 1, RT3883_GPIO_MODE_I2C),
69+
GRP("spi", spi_func, 1, RT3883_GPIO_MODE_SPI),
70+
GRP("uartf", uartf_func, RT3883_GPIO_MODE_UART0_MASK,
71+
RT3883_GPIO_MODE_UART0_SHIFT),
72+
GRP("uartlite", uartlite_func, 1, RT3883_GPIO_MODE_UART1),
73+
GRP("jtag", jtag_func, 1, RT3883_GPIO_MODE_JTAG),
74+
GRP("mdio", mdio_func, 1, RT3883_GPIO_MODE_MDIO),
75+
GRP("lna a", lna_a_func, 1, RT3883_GPIO_MODE_LNA_A),
76+
GRP("lna g", lna_g_func, 1, RT3883_GPIO_MODE_LNA_G),
77+
GRP("pci", pci_func, RT3883_GPIO_MODE_PCI_MASK,
78+
RT3883_GPIO_MODE_PCI_SHIFT),
79+
GRP("ge1", ge1_func, 1, RT3883_GPIO_MODE_GE1),
80+
GRP("ge2", ge2_func, 1, RT3883_GPIO_MODE_GE2),
81+
{ 0 }
82+
};
83+
84+
static int rt3883_pinmux_probe(struct platform_device *pdev)
85+
{
86+
return rt2880_pinmux_init(pdev, rt3883_pinmux_data);
87+
}
88+
89+
static const struct of_device_id rt3883_pinmux_match[] = {
90+
{ .compatible = "ralink,rt2880-pinmux" },
91+
{}
92+
};
93+
MODULE_DEVICE_TABLE(of, rt3883_pinmux_match);
94+
95+
static struct platform_driver rt3883_pinmux_driver = {
96+
.probe = rt3883_pinmux_probe,
97+
.driver = {
98+
.name = "rt2880-pinmux",
99+
.of_match_table = rt3883_pinmux_match,
100+
},
101+
};
102+
103+
static int __init rt3883_pinmux_init(void)
104+
{
105+
return platform_driver_register(&rt3883_pinmux_driver);
106+
}
107+
core_initcall_sync(rt3883_pinmux_init);

0 commit comments

Comments
 (0)